From 08b9e054251fb8f05de6173ca1f71e90467547b6 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 21 Sep 2014 17:42:38 +0200 Subject: [PATCH 001/429] New Module : Manage Financial Loan --- htdocs/admin/loan.php | 119 ++++ htdocs/compta/loan/card.php | 467 ++++++++++++++ htdocs/compta/loan/class/index.html | 0 htdocs/compta/loan/class/loan.class.php | 477 ++++++++++++++ .../compta/loan/class/paymentloan.class.php | 603 ++++++++++++++++++ htdocs/compta/loan/document.php | 178 ++++++ htdocs/compta/loan/index.html | 0 htdocs/compta/loan/index.php | 208 ++++++ htdocs/compta/loan/info.php | 65 ++ htdocs/core/lib/loan.lib.php | 66 ++ htdocs/core/menus/standard/eldy.lib.php | 19 +- htdocs/core/modules/modLoan.class.php | 173 +++++ htdocs/install/mysql/tables/llx_loan.sql | 47 ++ .../install/mysql/tables/llx_payment_loan.sql | 33 + 14 files changed, 2450 insertions(+), 5 deletions(-) create mode 100644 htdocs/admin/loan.php create mode 100644 htdocs/compta/loan/card.php create mode 100644 htdocs/compta/loan/class/index.html create mode 100644 htdocs/compta/loan/class/loan.class.php create mode 100644 htdocs/compta/loan/class/paymentloan.class.php create mode 100644 htdocs/compta/loan/document.php create mode 100644 htdocs/compta/loan/index.html create mode 100644 htdocs/compta/loan/index.php create mode 100644 htdocs/compta/loan/info.php create mode 100644 htdocs/core/lib/loan.lib.php create mode 100644 htdocs/core/modules/modLoan.class.php create mode 100644 htdocs/install/mysql/tables/llx_loan.sql create mode 100644 htdocs/install/mysql/tables/llx_payment_loan.sql diff --git a/htdocs/admin/loan.php b/htdocs/admin/loan.php new file mode 100644 index 00000000000..4cd22ef2c8c --- /dev/null +++ b/htdocs/admin/loan.php @@ -0,0 +1,119 @@ + + * + * 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/admin/loan.php + * \ingroup loan + * \brief Setup page to configure loan module + */ + +require '../main.inc.php'; + +// Class +require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; + +$langs->load("admin"); +$langs->load("loan"); + +// Security check +if (!$user->admin) + accessforbidden(); + +$action = GETPOST('action', 'alpha'); + +// Other parameters LOAN_* +$list = array ( + 'LOAN_ACCOUNTING_ACCOUNT_CAPITAL', + 'LOAN_ACCOUNTING_ACCOUNT_INTEREST', + 'LOAN_ACCOUNTING_ACCOUNT_INSURANCE' +); + +/* + * Actions + */ + +if ($action == 'update') +{ + $error = 0; + + foreach ($list as $constname) { + $constvalue = GETPOST($constname, 'alpha'); + + if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) { + $error++; + } + } + + if (! $error) + { + setEventMessage($langs->trans("SetupSaved")); + } + else + { + setEventMessage($langs->trans("Error"),'errors'); + } +} + +/* + * View + */ + +llxHeader(); + +$form = new Form($db); + +$linkback=''.$langs->trans("BackToModuleList").''; +print_fiche_titre($langs->trans('ConfigLoan'),$linkback,'setup'); + +print '
'; +print ''; +print ''; + +/* + * Params + */ +print ''; +print ''; +print ''; +print "\n"; + +foreach ($list as $key) +{ + $var=!$var; + + print ''; + + // Param + $label = $langs->trans($key); + print ''; + + // Value + print ''; +} + +print ''; + +print ''; +print "
' . $langs->trans('Options') . '
'; + print ''; + print '
\n"; + +print '
'; + +llxFooter(); +$db->close(); \ No newline at end of file diff --git a/htdocs/compta/loan/card.php b/htdocs/compta/loan/card.php new file mode 100644 index 00000000000..f8cf4d29327 --- /dev/null +++ b/htdocs/compta/loan/card.php @@ -0,0 +1,467 @@ + + * + * 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/compta/loan/card.php + * \ingroup loan + * \brief Loan card + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php'; + +$langs->load("compta"); +$langs->load("bills"); +$langs->load("loan"); + +$id=GETPOST('id','int'); +$action=GETPOST("action"); +$confirm=GETPOST('confirm'); + +// Security check +$socid = GETPOST('socid','int'); +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'loan', $id, '',''); + +/* + * Actions + */ + +// Classify paid +if ($action == 'confirm_paid' && $confirm == 'yes') +{ + $loan = new Loan($db); + $loan->fetch($id); + $result = $loan->set_paid($user); +} + +// Delete loan +if ($action == 'confirm_delete' && $confirm == 'yes') +{ + $loan = new Loan($db); + $loan->fetch($id); + $result=$loan->delete($user); + if ($result > 0) + { + header("Location: index.php"); + exit; + } + else + { + setEventMessage($loan->error, 'errors'); + } +} + + +// Add loan +if ($action == 'add' && $user->rights->loan->write) +{ + $dateech=@dol_mktime($_POST["echhour"],$_POST["echmin"],$_POST["echsec"],$_POST["echmonth"],$_POST["echday"],$_POST["echyear"]); + $dateperiod=@dol_mktime($_POST["periodhour"],$_POST["periodmin"],$_POST["periodsec"],$_POST["periodmonth"],$_POST["periodday"],$_POST["periodyear"]); + if (! $dateech) + { + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateDue")), 'errors'); + $action = 'create'; + } + elseif (! $dateperiod) + { + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Period")), 'errors'); + $action = 'create'; + } + elseif (! $_POST["capital"]) + { + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Capital")), 'errors'); + $action = 'create'; + } + else + { + $loan = new Loan($db); + + $loan->label = $_POST["label"]; + $loan->date_ech = $dateech; + $loan->periode = $dateperiod; + $loan->capital = $_POST["capital"]; + + $id=$loan->create($user); + if ($id <= 0) + { + setEventMessage($loan->error, 'errors'); + } + } +} + + +if ($action == 'update' && ! $_POST["cancel"] && $user->rights->loan->write) +{ + $dateech=dol_mktime($_POST["echhour"],$_POST["echmin"],$_POST["echsec"],$_POST["echmonth"],$_POST["echday"],$_POST["echyear"]); + $dateperiod=dol_mktime($_POST["periodhour"],$_POST["periodmin"],$_POST["periodsec"],$_POST["periodmonth"],$_POST["periodday"],$_POST["periodyear"]); + if (! $dateech) + { + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateDue")), 'errors'); + $action = 'edit'; + } + elseif (! $dateperiod) + { + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Period")), 'errors'); + $action = 'edit'; + } + else + { + $loan = new Loan($db); + $result=$loan->fetch($_GET["id"]); + + $loan->lib=$_POST["label"]; + $loan->date_ech=$dateech; + $loan->periode=$dateperiod; + + $result=$loan->update($user); + if ($result <= 0) + { + setEventMessage($loan->error, 'errors'); + } + } +} + + + +/* + * View + */ + +$form = new Form($db); + +$help_url='EN:Module_Loan|FR:Module Emprunt'; +llxHeader("",$langs->trans("Loan"),$help_url); + + +// Create mode +if ($action == 'create') +{ + //WYSIWYG Editor + require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; + + print_fiche_titre($langs->trans("NewLoan")); + + $datec = dol_mktime(12, 0, 0, GETPOST('remonth','int'), GETPOST('reday','int'), GETPOST('reyear','int')); + + print '
' . "\n"; + print ''; + print ''; + + print ''; + + // Label + print ''; + + // Bank account + if (! empty($conf->banque->enabled)) + { + print ''; + } + else + { + print ''; + } + + // Capital + print ''; + + // Date Start + print ""; + print ''; + + // Date End + print ""; + print ''; + + // Number of terms + print ''; + + // Rate + print ''; + + // Note + print ''; + print ''; + print ''; + print '
'.$langs->trans("Label").'
'.$langs->trans("Account").''; + $form->select_comptes($_POST["accountid"],"accountid",0,"courant=1",1); // Show list of bank account with courant + print '
'.$langs->trans("Account").''; + print $langs->trans("NoBankAccountDefined"); + print '
'.$langs->trans("Capital").'
'.$langs->trans("DateStart").''; + print $form->select_date($datestart?$datestart:-1,'','','','','add',1,1); + print '
'.$langs->trans("DateEnd").''; + print $form->select_date($dateend?$dateend:-1,'','','','','add',1,1); + print '
'.$langs->trans("Nbterms").'
'.$langs->trans("Rate").'
'.$langs->trans('Note').''; + + $doleditor = new DolEditor('note', GETPOST('note', 'alpha'), '', 200, 'dolibarr_notes', 'In', false, true, true, ROWS_8, 100); + print $doleditor->Create(1); + + print '
'; + + print '
'; + + // Accountancy + print ''; + + if ($conf->accounting->enabled) + { + print ''; + print ''; + + print ''; + print ''; + + print ''; + print ''; + } + else + { + print ''; + print ''; + + print ''; + print ''; + + print ''; + print ''; + } + + print '
'.$langs->trans("LoanAccountancyCapitalCode").''; + print '
'.$langs->trans("LoanAccountancyInsuranceCode").''; + print '
'.$langs->trans("LoanAccountancyInterestCode").''; + print '
'.$langs->trans("LoanAccountancyCapitalCode").''; + print '
'.$langs->trans("LoanAccountancyInsuranceCode").''; + print '
'.$langs->trans("LoanAccountancyInterestCode").''; + print '
'; + + print '
    '; + print ''; +} + +// View +if ($id > 0) +{ + $object = new Loan($db); + $result=$object->fetch($id); + + if ($result > 0) + { + $head=loan_prepare_head($object); + + dol_fiche_head($head, 'card', $langs->trans("Loan"),0,'bill'); + + // Confirm for loan + if ($action == 'paid') + { + $text=$langs->trans('ConfirmPayLoan'); + print $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$object->id,$langs->trans('PayLoan'),$text,"confirm_paid",'','',2); + } + + if ($action == 'delete') + { + $text=$langs->trans('ConfirmDeleteLoan'); + print $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id,$langs->trans('DeleteLoan'),$text,'confirm_delete','','',2); + } + + if ($action == 'edit') + { + print "id&action=update\" method=\"post\">"; + print ''; + } + + print ''; + + // Ref + print '"; + + // Label + if ($action == 'edit') + { + print ''; + } + else + { + print ''; + } + + $rowspan=5; + print '"; + + print ""; + + // Period end date + print ""; + print ""; + + // Due date + if ($action == 'edit') + { + print '"; + } + else { + print ""; + } + + // Amount + print ''; + + // Status + print ''; + + print '
'.$langs->trans("Ref").''; + print $form->showrefnav($object,'id'); + print "
'.$langs->trans("Label").''; + print ''; + print '
'.$langs->trans("Label").''.$object->label.'
'; + + /* + * Payments + */ + $sql = "SELECT p.rowid, p.num_payment, datep as dp, p.amount,"; + $sql.= "c.libelle as paiement_type"; + $sql.= " FROM ".MAIN_DB_PREFIX."payment_loan as p"; + $sql.= ", ".MAIN_DB_PREFIX."c_paiement as c "; + $sql.= ", ".MAIN_DB_PREFIX."loan as l"; + $sql.= " WHERE p.fk_loan = ".$id; + $sql.= " AND p.fk_loan = l.rowid"; + $sql.= " AND l.entity = ".$conf->entity; + $sql.= " AND p.fk_typepayment = c.id"; + $sql.= " ORDER BY dp DESC"; + + //print $sql; + $resql = $db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + $i = 0; $total = 0; + echo ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + $var=True; + while ($i < $num) + { + $objp = $db->fetch_object($resql); + $var=!$var; + print "'; + print '\n"; + print "\n"; + print '\n"; + print ""; + $totalpaye += $objp->amount; + $i++; + } + + if ($object->paye == 0) + { + print "\n"; + print "\n"; + + $resteapayer = $object->amount - $totalpaye; + + print ""; + print "\n"; + } + print "
'.$langs->trans("RefPayment").''.$langs->trans("Date").''.$langs->trans("Type").''.$langs->trans("Amount").' 
"; + print ''.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.''.dol_print_date($db->jdate($objp->dp),'day')."".$objp->paiement_type.' '.$objp->num_paiement."'.price($objp->amount)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("AlreadyPaid")." :".price($totalpaye)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("AmountExpected")." :".price($object->amount)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("RemainderToPay")." :".price($resteapayer)." ".$langs->trans("Currency".$conf->currency)."
"; + $db->free($resql); + } + else + { + dol_print_error($db); + } + print "
".$langs->trans("PeriodEndDate").""; + if ($action == 'edit') + { + print $form->select_date($object->periode, 'period', 0, 0, 0, 'charge', 1); + } + else + { + print dol_print_date($object->periode,"day"); + } + print "
'.$langs->trans("DateDue").""; + print $form->select_date($object->date_ech, 'ech', 0, 0, 0, 'charge', 1); + print "
".$langs->trans("DateDue")."".dol_print_date($object->date_ech,'day')."
'.$langs->trans("AmountTTC").''.price($object->amount,0,$outputlangs,1,-1,-1,$conf->currency).'
'.$langs->trans("Status").''.$object->getLibStatut(4, $totalpaye).'
'; + + if ($action == 'edit') + { + print '
'; + print ''; + print '   '; + print ''; + print '\n"; + + dol_fiche_end(); + + + /* + * Boutons actions + */ + if ($action != 'edit') + { + print "
\n"; + + // Edit + if ($user->rights->loan->write) + { + print "id&action=edit\">".$langs->trans("Modify").""; + } + + // Emettre paiement + if ($object->paye == 0 && ((price2num($object->amount) < 0 && round($resteapayer) < 0) || (price2num($object->amount) > 0 && round($resteapayer) > 0)) && $user->rights->loan->write) + { + print "id&action=create\">".$langs->trans("DoPayment").""; + } + + // Classify 'paid' + if ($object->paye == 0 && round($resteapayer) <=0 && $user->rights->loan->write) + { + print "id&action=paid\">".$langs->trans("ClassifyPaid").""; + } + + // Delete + if ($user->rights->loan->delete) + { + print "id&action=delete\">".$langs->trans("Delete").""; + } + + print "
"; + } + } + else + { + // Loan not find + dol_print_error('',$object->error); + } +} + + +llxFooter(); + +$db->close(); diff --git a/htdocs/compta/loan/class/index.html b/htdocs/compta/loan/class/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/compta/loan/class/loan.class.php b/htdocs/compta/loan/class/loan.class.php new file mode 100644 index 00000000000..74aed1d048b --- /dev/null +++ b/htdocs/compta/loan/class/loan.class.php @@ -0,0 +1,477 @@ + + * + * 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/compta/loan/class/loan.class.php + * \ingroup loan + * \brief Class for loan module + */ +require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; + + +/** \class Loan + * \brief Class to manage loan + */ +class Loan extends CommonObject +{ + public $element='loan'; + public $table='loan'; + public $table_element='loan'; + + var $id; + var $ref; + var $date_start; + var $dateend; + var $label; + var $capital; + var $nbterm; + var $rate; + var $note; + var $account_capital; + var $account_insurance; + var $account_interest; + var $date_creation; + var $date_modification; + var $date_validation; + + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + function __construct($db) + { + $this->db = $db; + return 1; + } + + /** + * Load object in memory from database + * + * @param int $id id object + * @return void + */ + function fetch($id) + { + $sql = "SELECT l.rowid, l.datestart,"; + $sql.= " l.label, l.capital"; + $sql.= " FROM ".MAIN_DB_PREFIX."loan as l"; + $sql.= " WHERE l.rowid = ".$id; + + dol_syslog(get_class($this)."::fetch", LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + if ($this->db->num_rows($resql)) + { + $obj = $this->db->fetch_object($resql); + + $this->id = $obj->rowid; + $this->ref = $obj->rowid; + $this->datestart = $this->db->jdate($obj->datestart); + $this->label = $obj->label; + $this->capital = $obj->capital; + + return 1; + } + else + { + return 0; + } + $this->db->free($resql); + } + else + { + $this->error=$this->db->lasterror(); + return -1; + } + } + + + /** + * Create a social contribution into database + * + * @param User $user User making creation + * @return int <0 if KO, id if OK + */ + function create($user) + { + global $conf; + + // clean parameters + $newcapital=price2num($this->capital,'MT'); + + // Validation parametres + if (! $newamount > 0 || empty($this->date_ech) || empty($this->periode)) + { + $this->error="ErrorBadParameter"; + return -2; + } + + $this->db->begin(); + + $sql = "INSERT INTO ".MAIN_DB_PREFIX."chargesociales (fk_type, libelle, date_ech, periode, amount, entity)"; + $sql.= " VALUES (".$this->type.",'".$this->db->escape($this->lib)."',"; + $sql.= " '".$this->db->idate($this->date_ech)."','".$this->db->idate($this->periode)."',"; + $sql.= " '".price2num($newamount)."',"; + $sql.= " ".$conf->entity; + $sql.= ")"; + + 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."chargesociales"); + + //dol_syslog("ChargesSociales::create this->id=".$this->id); + $this->db->commit(); + return $this->id; + } + else + { + $this->error=$this->db->error(); + $this->db->rollback(); + return -1; + } + } + + + /** + * Delete a social contribution + * + * @param User $user Object user making delete + * @return int <0 if KO, >0 if OK + */ + function delete($user) + { + $error=0; + + $this->db->begin(); + + // Get bank transaction lines for this social contributions + include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; + $account=new Account($this->db); + $lines_url=$account->get_url('',$this->id,'sc'); + + // Delete bank urls + foreach ($lines_url as $line_url) + { + if (! $error) + { + $accountline=new AccountLine($this->db); + $accountline->fetch($line_url['fk_bank']); + $result=$accountline->delete_urls($user); + if ($result < 0) + { + $error++; + } + } + } + + // Delete payments + if (! $error) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."paiementcharge where fk_charge='".$this->id."'"; + dol_syslog(get_class($this)."::delete", LOG_DEBUG); + $resql=$this->db->query($sql); + if (! $resql) + { + $error++; + $this->error=$this->db->lasterror(); + } + } + + if (! $error) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."chargesociales where rowid='".$this->id."'"; + dol_syslog(get_class($this)."::delete", LOG_DEBUG); + $resql=$this->db->query($sql); + if (! $resql) + { + $error++; + $this->error=$this->db->lasterror(); + } + } + + if (! $error) + { + $this->db->commit(); + return 1; + } + else + { + $this->db->rollback(); + return -1; + } + + } + + + /** + * Met a jour une charge sociale + * + * @param User $user Utilisateur qui modifie + * @return int <0 si erreur, >0 si ok + */ + function update($user) + { + $this->db->begin(); + + $sql = "UPDATE ".MAIN_DB_PREFIX."chargesociales"; + $sql.= " SET libelle='".$this->db->escape($this->lib)."',"; + $sql.= " date_ech='".$this->db->idate($this->date_ech)."',"; + $sql.= " periode='".$this->db->idate($this->periode)."'"; + $sql.= " WHERE rowid=".$this->id; + + dol_syslog(get_class($this)."::update", LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + $this->db->commit(); + return 1; + } + else + { + $this->error=$this->db->error(); + $this->db->rollback(); + return -1; + } + } + + /** + * Enter description here ... + * + * @param int $year Year + * @return number + */ + function solde($year = 0) + { + global $conf; + + $sql = "SELECT SUM(f.amount) as amount"; + $sql.= " FROM ".MAIN_DB_PREFIX."chargesociales as f"; + $sql.= " WHERE f.entity = ".$conf->entity; + $sql.= " AND paye = 0"; + + if ($year) { + $sql .= " AND f.datev >= '$y-01-01' AND f.datev <= '$y-12-31' "; + } + + $result = $this->db->query($sql); + if ($result) + { + if ($this->db->num_rows($result)) + { + $obj = $this->db->fetch_object($result); + return $obj->amount; + } + else + { + return 0; + } + + $this->db->free($result); + + } + else + { + print $this->db->error(); + return -1; + } + } + + /** + * Tag social contribution as payed completely + * + * @param User $user Object user making change + * @return int <0 if KO, >0 if OK + */ + function set_paid($user) + { + $sql = "UPDATE ".MAIN_DB_PREFIX."chargesociales SET"; + $sql.= " paye = 1"; + $sql.= " WHERE rowid = ".$this->id; + $return = $this->db->query($sql); + if ($return) return 1; + else return -1; + } + + /** + * Retourne le libelle du statut d'une charge (impaye, payee) + * + * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long + * @param double $alreadypaid 0=No payment already done, >0=Some payments were already done (we recommand to put here amount payed if you have it, 1 otherwise) + * @return string Label + */ + function getLibStatut($mode=0,$alreadypaid=-1) + { + return $this->LibStatut($this->paye,$mode,$alreadypaid); + } + + /** + * Return label for given status + * + * @param int $statut Id statut + * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto + * @param double $alreadypaid 0=No payment already done, >0=Some payments were already done (we recommand to put here amount payed if you have it, 1 otherwise) + * @return string Label + */ + function LibStatut($statut,$mode=0,$alreadypaid=-1) + { + global $langs; + $langs->load('customers'); + $langs->load('bills'); + + if ($mode == 0) + { + if ($statut == 0) return $langs->trans("Unpaid"); + if ($statut == 1) return $langs->trans("Paid"); + } + if ($mode == 1) + { + if ($statut == 0) return $langs->trans("Unpaid"); + if ($statut == 1) return $langs->trans("Paid"); + } + if ($mode == 2) + { + if ($statut == 0 && $alreadypaid <= 0) return img_picto($langs->trans("Unpaid"), 'statut1').' '.$langs->trans("Unpaid"); + if ($statut == 0 && $alreadypaid > 0) return img_picto($langs->trans("BillStatusStarted"), 'statut3').' '.$langs->trans("BillStatusStarted"); + if ($statut == 1) return img_picto($langs->trans("Paid"), 'statut6').' '.$langs->trans("Paid"); + } + if ($mode == 3) + { + if ($statut == 0 && $alreadypaid <= 0) return img_picto($langs->trans("Unpaid"), 'statut1'); + if ($statut == 0 && $alreadypaid > 0) return img_picto($langs->trans("BillStatusStarted"), 'statut3'); + if ($statut == 1) return img_picto($langs->trans("Paid"), 'statut6'); + } + if ($mode == 4) + { + if ($statut == 0 && $alreadypaid <= 0) return img_picto($langs->trans("Unpaid"), 'statut1').' '.$langs->trans("Unpaid"); + if ($statut == 0 && $alreadypaid > 0) return img_picto($langs->trans("BillStatusStarted"), 'statut3').' '.$langs->trans("BillStatusStarted"); + if ($statut == 1) return img_picto($langs->trans("Paid"), 'statut6').' '.$langs->trans("Paid"); + } + if ($mode == 5) + { + if ($statut == 0 && $alreadypaid <= 0) return $langs->trans("Unpaid").' '.img_picto($langs->trans("Unpaid"), 'statut1'); + if ($statut == 0 && $alreadypaid > 0) return $langs->trans("BillStatusStarted").' '.img_picto($langs->trans("BillStatusStarted"), 'statut3'); + if ($statut == 1) return $langs->trans("Paid").' '.img_picto($langs->trans("Paid"), 'statut6'); + } + + return "Error, mode/status not found"; + } + + + /** + * Return clicable name (with eventually the picto) + * + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto + * @param int $maxlen Label max length + * @return string Chaine with URL + */ + function getNameUrl($withpicto=0,$maxlen=0) + { + global $langs; + + $result=''; + + if (empty($this->ref)) $this->ref=$this->lib; + + $lien = ''; + $lienfin=''; + + if ($withpicto) $result.=($lien.img_object($langs->trans("ShowSocialContribution").': '.$this->lib,'bill').$lienfin.' '); + if ($withpicto && $withpicto != 2) $result.=' '; + if ($withpicto != 2) $result.=$lien.($maxlen?dol_trunc($this->ref,$maxlen):$this->ref).$lienfin; + return $result; + } + + /** + * Return amount of payments already done + * + * @return int Amount of payment already done, <0 if KO + */ + function getSumPayment() + { + $table='payment_loan'; + $field='fk_loan'; + + $sql = 'SELECT sum(amount) as amount'; + $sql.= ' FROM '.MAIN_DB_PREFIX.$table; + $sql.= ' WHERE '.$field.' = '.$this->id; + + dol_syslog(get_class($this)."::getSumPayment", LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + $amount=0; + + $obj = $this->db->fetch_object($resql); + if ($obj) $amount=$obj->amount?$obj->amount:0; + + $this->db->free($resql); + return $amount; + } + else + { + return -1; + } + } + + /** + * Information on record + * + * @param int $id Id of record + * @return void + */ + function info($id) + { + $sql = "SELECT l.rowid, l.tms as datem, l.datec as datec"; + $sql.= " FROM ".MAIN_DB_PREFIX."loan as l"; + $sql.= " WHERE l.rowid = ".$id; + + dol_syslog(get_class($this)."::info", LOG_DEBUG); + $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; + } + + $this->date_creation = $this->db->jdate($obj->datec); + $this->date_modification = $this->db->jdate($obj->datem); + + } + + $this->db->free($result); + + } + else + { + dol_print_error($this->db); + } + } +} + diff --git a/htdocs/compta/loan/class/paymentloan.class.php b/htdocs/compta/loan/class/paymentloan.class.php new file mode 100644 index 00000000000..972fa762b96 --- /dev/null +++ b/htdocs/compta/loan/class/paymentloan.class.php @@ -0,0 +1,603 @@ + + * Copyright (C) 2004-2007 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 . + */ + +/** + * \file htdocs/compta/sociales/class/paymentsocialcontribution.class.php + * \ingroup facture + * \brief File of class to manage payment of social contributions + */ + +require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; + + +/** \class PaymentSocialContribution + * \brief Class to manage payments of social contributions + */ +class PaymentSocialContribution extends CommonObject +{ + public $element='paiementcharge'; //!< Id that identify managed objects + public $table_element='paiementcharge'; //!< Name of table without prefix where object is stored + + var $id; + var $ref; + + var $fk_charge; + var $datec=''; + var $tms=''; + var $datep=''; + var $amount; // Total amount of payment + var $amounts=array(); // Array of amounts + var $fk_typepaiement; + var $num_paiement; + var $note; + var $fk_bank; + var $fk_user_creat; + var $fk_user_modif; + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + function __construct($db) + { + $this->db = $db; + } + + /** + * Create payment of social contribution into database. + * Use this->amounts to have list of lines for the payment + * + * @param User $user User making payment + * @return int <0 if KO, id of payment if OK + */ + function create($user) + { + global $conf, $langs; + + $error=0; + + $now=dol_now(); + + // Validate parametres + if (! $this->datepaye) + { + $this->error='ErrorBadValueForParameter'; + return -1; + } + + // Clean parameters + if (isset($this->fk_charge)) $this->fk_charge=trim($this->fk_charge); + if (isset($this->amount)) $this->amount=trim($this->amount); + if (isset($this->fk_typepaiement)) $this->fk_typepaiement=trim($this->fk_typepaiement); + if (isset($this->num_paiement)) $this->num_paiement=trim($this->num_paiement); + if (isset($this->note)) $this->note=trim($this->note); + if (isset($this->fk_bank)) $this->fk_bank=trim($this->fk_bank); + if (isset($this->fk_user_creat)) $this->fk_user_creat=trim($this->fk_user_creat); + if (isset($this->fk_user_modif)) $this->fk_user_modif=trim($this->fk_user_modif); + + $totalamount = 0; + foreach ($this->amounts as $key => $value) // How payment is dispatch + { + $newvalue = price2num($value,'MT'); + $this->amounts[$key] = $newvalue; + $totalamount += $newvalue; + } + $totalamount = price2num($totalamount); + + // Check parameters + if ($totalamount == 0) return -1; // On accepte les montants negatifs pour les rejets de prelevement mais pas null + + + $this->db->begin(); + + if ($totalamount != 0) + { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."paiementcharge (fk_charge, datec, datep, amount,"; + $sql.= " fk_typepaiement, num_paiement, note, fk_user_creat, fk_bank)"; + $sql.= " VALUES ($this->chid, '".$this->db->idate($now)."',"; + $sql.= " '".$this->db->idate($this->datepaye)."',"; + $sql.= " ".$totalamount.","; + $sql.= " ".$this->paiementtype.", '".$this->db->escape($this->num_paiement)."', '".$this->db->escape($this->note)."', ".$user->id.","; + $sql.= " 0)"; + + 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."paiementcharge"); + } + else + { + $error++; + } + + } + + if ($totalamount != 0 && ! $error) + { + $this->amount=$totalamount; + $this->total=$totalamount; // deprecated + $this->db->commit(); + return $this->id; + } + else + { + $this->error=$this->db->error(); + $this->db->rollback(); + return -1; + } + } + + /** + * Load object in memory from database + * + * @param int $id Id object + * @return int <0 if KO, >0 if OK + */ + function fetch($id) + { + global $langs; + $sql = "SELECT"; + $sql.= " t.rowid,"; + $sql.= " t.fk_charge,"; + $sql.= " t.datec,"; + $sql.= " t.tms,"; + $sql.= " t.datep,"; + $sql.= " t.amount,"; + $sql.= " t.fk_typepaiement,"; + $sql.= " t.num_paiement,"; + $sql.= " t.note,"; + $sql.= " t.fk_bank,"; + $sql.= " t.fk_user_creat,"; + $sql.= " t.fk_user_modif,"; + $sql.= " pt.code as type_code, pt.libelle as type_libelle,"; + $sql.= ' b.fk_account'; + $sql.= " FROM (".MAIN_DB_PREFIX."c_paiement as pt, ".MAIN_DB_PREFIX."paiementcharge as t)"; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank as b ON t.fk_bank = b.rowid'; + $sql.= " WHERE t.rowid = ".$id." AND t.fk_typepaiement = pt.id"; + + dol_syslog(get_class($this)."::fetch", LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + if ($this->db->num_rows($resql)) + { + $obj = $this->db->fetch_object($resql); + + $this->id = $obj->rowid; + $this->ref = $obj->rowid; + + $this->fk_charge = $obj->fk_charge; + $this->datec = $this->db->jdate($obj->datec); + $this->tms = $this->db->jdate($obj->tms); + $this->datep = $this->db->jdate($obj->datep); + $this->amount = $obj->amount; + $this->fk_typepaiement = $obj->fk_typepaiement; + $this->num_paiement = $obj->num_paiement; + $this->note = $obj->note; + $this->fk_bank = $obj->fk_bank; + $this->fk_user_creat = $obj->fk_user_creat; + $this->fk_user_modif = $obj->fk_user_modif; + + $this->type_code = $obj->type_code; + $this->type_libelle = $obj->type_libelle; + + $this->bank_account = $obj->fk_account; + $this->bank_line = $obj->fk_bank; + } + $this->db->free($resql); + + return 1; + } + else + { + $this->error="Error ".$this->db->lasterror(); + return -1; + } + } + + + /** + * Update database + * + * @param User $user User that modify + * @param int $notrigger 0=launch triggers after, 1=disable triggers + * @return int <0 if KO, >0 if OK + */ + function update($user=0, $notrigger=0) + { + global $conf, $langs; + $error=0; + + // Clean parameters + + if (isset($this->fk_charge)) $this->fk_charge=trim($this->fk_charge); + if (isset($this->amount)) $this->amount=trim($this->amount); + if (isset($this->fk_typepaiement)) $this->fk_typepaiement=trim($this->fk_typepaiement); + if (isset($this->num_paiement)) $this->num_paiement=trim($this->num_paiement); + if (isset($this->note)) $this->note=trim($this->note); + if (isset($this->fk_bank)) $this->fk_bank=trim($this->fk_bank); + if (isset($this->fk_user_creat)) $this->fk_user_creat=trim($this->fk_user_creat); + if (isset($this->fk_user_modif)) $this->fk_user_modif=trim($this->fk_user_modif); + + + + // Check parameters + // Put here code to add control on parameters values + + // Update request + $sql = "UPDATE ".MAIN_DB_PREFIX."paiementcharge SET"; + + $sql.= " fk_charge=".(isset($this->fk_charge)?$this->fk_charge:"null").","; + $sql.= " datec=".(dol_strlen($this->datec)!=0 ? "'".$this->db->idate($this->datec)."'" : 'null').","; + $sql.= " tms=".(dol_strlen($this->tms)!=0 ? "'".$this->db->idate($this->tms)."'" : 'null').","; + $sql.= " datep=".(dol_strlen($this->datep)!=0 ? "'".$this->db->idate($this->datep)."'" : 'null').","; + $sql.= " amount=".(isset($this->amount)?$this->amount:"null").","; + $sql.= " fk_typepaiement=".(isset($this->fk_typepaiement)?$this->fk_typepaiement:"null").","; + $sql.= " num_paiement=".(isset($this->num_paiement)?"'".$this->db->escape($this->num_paiement)."'":"null").","; + $sql.= " note=".(isset($this->note)?"'".$this->db->escape($this->note)."'":"null").","; + $sql.= " fk_bank=".(isset($this->fk_bank)?$this->fk_bank:"null").","; + $sql.= " fk_user_creat=".(isset($this->fk_user_creat)?$this->fk_user_creat:"null").","; + $sql.= " fk_user_modif=".(isset($this->fk_user_modif)?$this->fk_user_modif:"null").""; + + + $sql.= " WHERE rowid=".$this->id; + + $this->db->begin(); + + dol_syslog(get_class($this)."::update", LOG_DEBUG); + $resql = $this->db->query($sql); + if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } + + if (! $error) + { + if (! $notrigger) + { + // Uncomment this and change MYOBJECT to your own tag if you + // want this action call a trigger. + + //// Call triggers + //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; + //$interface=new Interfaces($this->db); + //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); + //if ($result < 0) { $error++; $this->errors=$interface->errors; } + //// End call triggers + } + } + + // Commit or rollback + if ($error) + { + foreach($this->errors as $errmsg) + { + dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR); + $this->error.=($this->error?', '.$errmsg:$errmsg); + } + $this->db->rollback(); + return -1*$error; + } + else + { + $this->db->commit(); + return 1; + } + } + + + /** + * Delete object in database + * + * @param User $user User that delete + * @param int $notrigger 0=launch triggers after, 1=disable triggers + * @return int <0 if KO, >0 if OK + */ + function delete($user, $notrigger=0) + { + global $conf, $langs; + $error=0; + + $this->db->begin(); + + if (! $error) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_url"; + $sql.= " WHERE type='payment_sc' AND url_id=".$this->id; + + dol_syslog(get_class($this)."::delete", LOG_DEBUG); + $resql = $this->db->query($sql); + if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } + } + + if (! $error) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."paiementcharge"; + $sql.= " WHERE rowid=".$this->id; + + dol_syslog(get_class($this)."::delete", LOG_DEBUG); + $resql = $this->db->query($sql); + if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } + } + + if (! $error) + { + if (! $notrigger) + { + // Uncomment this and change MYOBJECT to your own tag if you + // want this action call a trigger. + + //// Call triggers + //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; + //$interface=new Interfaces($this->db); + //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); + //if ($result < 0) { $error++; $this->errors=$interface->errors; } + //// End call triggers + } + } + + // Commit or rollback + if ($error) + { + foreach($this->errors as $errmsg) + { + dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR); + $this->error.=($this->error?', '.$errmsg:$errmsg); + } + $this->db->rollback(); + return -1*$error; + } + else + { + $this->db->commit(); + return 1; + } + } + + + + /** + * Load an object from its id and create a new one in database + * + * @param int $fromid Id of object to clone + * @return int New id of clone + */ + function createFromClone($fromid) + { + global $user,$langs; + + $error=0; + + $object=new PaymentSocialContribution($this->db); + + $this->db->begin(); + + // Load source object + $object->fetch($fromid); + $object->id=0; + $object->statut=0; + + // Clear fields + // ... + + // Create clone + $result=$object->create($user); + + // Other options + if ($result < 0) + { + $this->error=$object->error; + $error++; + } + + if (! $error) + { + + + + } + + // End + if (! $error) + { + $this->db->commit(); + return $object->id; + } + else + { + $this->db->rollback(); + return -1; + } + } + + + /** + * Initialise an instance with random values. + * Used to build previews or test instances. + * id must be 0 if object instance is a specimen. + * + * @return void + */ + function initAsSpecimen() + { + $this->id=0; + + $this->fk_charge=''; + $this->datec=''; + $this->tms=''; + $this->datep=''; + $this->amount=''; + $this->fk_typepaiement=''; + $this->num_paiement=''; + $this->note=''; + $this->fk_bank=''; + $this->fk_user_creat=''; + $this->fk_user_modif=''; + + + } + + + /** + * Add record into bank for payment with links between this bank record and invoices of payment. + * All payment properties must have been set first like after a call to create(). + * + * @param User $user Object of user making payment + * @param string $mode 'payment_sc' + * @param string $label Label to use in bank record + * @param int $accountid Id of bank account to do link with + * @param string $emetteur_nom Name of transmitter + * @param string $emetteur_banque Name of bank + * @return int <0 if KO, >0 if OK + */ + function addPaymentToBank($user,$mode,$label,$accountid,$emetteur_nom,$emetteur_banque) + { + global $conf; + + $error=0; + + if (! empty($conf->banque->enabled)) + { + require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; + + $acc = new Account($this->db); + $acc->fetch($accountid); + + $total=$this->total; + if ($mode == 'payment_sc') $total=-$total; + + // Insert payment into llx_bank + $bank_line_id = $acc->addline( + $this->datepaye, + $this->paiementtype, // Payment mode id or code ("CHQ or VIR for example") + $label, + $total, + $this->num_paiement, + '', + $user, + $emetteur_nom, + $emetteur_banque + ); + + // Mise a jour fk_bank dans llx_paiement. + // On connait ainsi le paiement qui a genere l'ecriture bancaire + if ($bank_line_id > 0) + { + $result=$this->update_fk_bank($bank_line_id); + if ($result <= 0) + { + $error++; + dol_print_error($this->db); + } + + // Add link 'payment', 'payment_supplier', 'payment_sc' in bank_url between payment and bank transaction + $url=''; + if ($mode == 'payment_sc') $url=DOL_URL_ROOT.'/compta/payment_sc/fiche.php?id='; + if ($url) + { + $result=$acc->add_url_line($bank_line_id, $this->id, $url, '(paiement)', $mode); + if ($result <= 0) + { + $error++; + dol_print_error($this->db); + } + } + + // Add link 'company' in bank_url between invoice and bank transaction (for each invoice concerned by payment) + $linkaddedforthirdparty=array(); + foreach ($this->amounts as $key => $value) + { + if ($mode == 'payment_sc') + { + $socialcontrib = new ChargeSociales($this->db); + $socialcontrib->fetch($key); + $result=$acc->add_url_line($bank_line_id, $socialcontrib->id, DOL_URL_ROOT.'/compta/charges.php?id=', $socialcontrib->type_libelle.(($socialcontrib->lib && $socialcontrib->lib!=$socialcontrib->type_libelle)?' ('.$socialcontrib->lib.')':''),'sc'); + if ($result <= 0) dol_print_error($this->db); + } + } + } + else + { + $this->error=$acc->error; + $error++; + } + } + + if (! $error) + { + return 1; + } + else + { + return -1; + } + } + + + /** + * Mise a jour du lien entre le paiement de charge et la ligne dans llx_bank generee + * + * @param int $id_bank Id if bank + * @return int >0 if OK, <=0 if KO + */ + function update_fk_bank($id_bank) + { + $sql = "UPDATE ".MAIN_DB_PREFIX."paiementcharge SET fk_bank = ".$id_bank." WHERE rowid = ".$this->id; + + dol_syslog(get_class($this)."::update_fk_bank", LOG_DEBUG); + $result = $this->db->query($sql); + if ($result) + { + return 1; + } + else + { + $this->error=$this->db->error(); + return 0; + } + } + + /** + * Renvoie nom clicable (avec eventuellement le picto) + * + * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $maxlen Longueur max libelle + * @return string Chaine avec URL + */ + function getNomUrl($withpicto=0,$maxlen=0) + { + global $langs; + + $result=''; + + if (empty($this->ref)) $this->ref=$this->lib; + + if (!empty($this->id)) + { + $lien = ''; + $lienfin=''; + + if ($withpicto) $result.=($lien.img_object($langs->trans("ShowPayment").': '.$this->ref,'payment').$lienfin.' '); + if ($withpicto && $withpicto != 2) $result.=' '; + if ($withpicto != 2) $result.=$lien.($maxlen?dol_trunc($this->ref,$maxlen):$this->ref).$lienfin; + } + + return $result; + } +} + + diff --git a/htdocs/compta/loan/document.php b/htdocs/compta/loan/document.php new file mode 100644 index 00000000000..ad5af8f84c2 --- /dev/null +++ b/htdocs/compta/loan/document.php @@ -0,0 +1,178 @@ + + * Copyright (C) 2004-2014 Laurent Destailleur + * Copyright (C) 2005 Marc Barilley / Ocebo + * Copyright (C) 2005-2009 Regis Houssin + * Copyright (C) 2005 Simon TOSSER + * Copyright (C) 2011 Juanjo Menent + * Copyright (C) 2013 Cédric Salvador + * + * 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/compta/sociales/document.php + * \ingroup tax + * \brief Page with attached files on social contributions + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/tax.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; + +$langs->load("other"); +$langs->load("companies"); +$langs->load("compta"); +$langs->load("bills"); + +$id = GETPOST('id','int'); +$action = GETPOST("action"); +$confirm = GETPOST('confirm', 'alpha'); + +// Security check +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'tax', $id, 'chargesociales','charges'); + + +// Get parameters +$sortfield = GETPOST("sortfield",'alpha'); +$sortorder = GETPOST("sortorder",'alpha'); +$page = GETPOST("page",'int'); +if ($page == -1) { + $page = 0; +} +$offset = $conf->liste_limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; +if (! $sortorder) $sortorder="ASC"; +if (! $sortfield) $sortfield="name"; + + +$object = new ChargeSociales($db); +if ($id > 0) $object->fetch($id); + +$upload_dir = $conf->tax->dir_output.'/'.dol_sanitizeFileName($object->ref); +$modulepart='tax'; + + +/* + * Actions + */ + +include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php'; + + +/* + * View + */ + +$form = new Form($db); + +$help_url='EN:Module_Taxes_and_social_contributions|FR:Module Taxes et dividendes|ES:Módulo Impuestos y cargas sociales (IVA, impuestos)'; +llxHeader("",$langs->trans("SocialContribution"),$help_url); + +if ($object->id) +{ + $alreadypayed=$object->getSommePaiement(); + + $head=tax_prepare_head($object, $user); + + dol_fiche_head($head, 'documents', $langs->trans("SocialContribution"), 0, 'bill'); + + + // Construit liste des fichiers + $filearray=dol_dir_list($upload_dir,"files",0,'','(\.meta|_preview\.png)$',$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + $totalsize=0; + foreach($filearray as $key => $file) + { + $totalsize+=$file['size']; + } + + + print ''; + + // Ref + print '"; + + // Label + if ($action == 'edit') + { + print ''; + } + else + { + print ''; + } + + // Type + print ""; + + // Period end date + print ""; + print ""; + print ""; + + // Due date + if ($action == 'edit') + { + print '"; + } + else { + print ""; + } + + // Amount + print ''; + + // Status + print ''; + + print ''; + print ''; + print '
'.$langs->trans("Ref").''; + print $form->showrefnav($object,'id'); + print "
'.$langs->trans("Label").''; + print ''; + print '
'.$langs->trans("Label").''.$object->lib.'
".$langs->trans("Type")."".$object->type_libelle."
".$langs->trans("PeriodEndDate").""; + if ($action == 'edit') + { + print $form->select_date($object->periode, 'period', 0, 0, 0, 'charge', 1); + } + else + { + print dol_print_date($object->periode,"day"); + } + print "
'.$langs->trans("DateDue").""; + print $form->select_date($object->date_ech, 'ech', 0, 0, 0, 'charge', 1); + print "
".$langs->trans("DateDue")."".dol_print_date($object->date_ech,'day')."
'.$langs->trans("AmountTTC").''.price($object->amount,0,$outputlangs,1,-1,-1,$conf->currency).'
'.$langs->trans("Status").''.$object->getLibStatut(4,$alreadypayed).'
'.$langs->trans("NbOfAttachedFiles").''.count($filearray).'
'.$langs->trans("TotalSizeOfAttachedFiles").''.$totalsize.' '.$langs->trans("bytes").'
'; + + print '
'; + + $modulepart = 'tax'; + $permission = $user->rights->tax->charges->creer; + $param = '&id=' . $object->id; + include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php'; +} +else +{ + print $langs->trans("ErrorUnknown"); +} + + +llxFooter(); + +$db->close(); diff --git a/htdocs/compta/loan/index.html b/htdocs/compta/loan/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/compta/loan/index.php b/htdocs/compta/loan/index.php new file mode 100644 index 00000000000..d84d1897c24 --- /dev/null +++ b/htdocs/compta/loan/index.php @@ -0,0 +1,208 @@ + + * + * 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/compta/loan/index.php + * \ingroup loan + * \brief Page to list all loans + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; + +$langs->load("loan"); +$langs->load("compta"); +$langs->load("banks"); +$langs->load("bills"); + +// Security check +$socid = isset($_GET["socid"])?$_GET["socid"]:''; +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'loan', '', '', ''); + +$sortfield = GETPOST("sortfield",'alpha'); +$sortorder = GETPOST("sortorder",'alpha'); +$page = GETPOST("page",'int'); +if ($page == -1) { $page = 0; } +$offset = $conf->liste_limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; +$limit = $conf->liste_limit; +if (! $sortfield) $sortfield="l.rowid"; +if (! $sortorder) $sortorder="DESC"; + +$year=$_GET["year"]; +$filtre=$_GET["filtre"]; + +/* + * View + */ + +$form = new Form($db); +$loan = new Loan($db); + +llxHeader(); + +$sql = "SELECT cs.rowid as id, cs.fk_type as type, "; +$sql.= " cs.amount, cs.date_ech, cs.libelle, cs.paye, cs.periode,"; +$sql.= " c.libelle as type_lib,"; +$sql.= " SUM(pc.amount) as alreadypayed"; +$sql.= " FROM ".MAIN_DB_PREFIX."c_chargesociales as c,"; +$sql.= " ".MAIN_DB_PREFIX."chargesociales as cs"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiementcharge as pc ON pc.fk_charge = cs.rowid"; +$sql.= " WHERE cs.fk_type = c.id"; +$sql.= " AND cs.entity = ".$conf->entity; +if (GETPOST("search_label")) $sql.=" AND cs.libelle LIKE '%".$db->escape(GETPOST("search_label"))."%'"; +if ($year > 0) +{ + $sql .= " AND ("; + // Si period renseignee on l'utilise comme critere de date, sinon on prend date echeance, + // ceci afin d'etre compatible avec les cas ou la periode n'etait pas obligatoire + $sql .= " (cs.periode IS NOT NULL AND date_format(cs.periode, '%Y') = '".$year."') "; + $sql .= "OR (cs.periode IS NULL AND date_format(cs.date_ech, '%Y') = '".$year."')"; + $sql .= ")"; +} +if ($filtre) { + $filtre=str_replace(":","=",$filtre); + $sql .= " AND ".$filtre; +} +if ($typeid) { + $sql .= " AND cs.fk_type=".$typeid; +} +$sql.= " GROUP BY cs.rowid, cs.fk_type, cs.amount, cs.date_ech, cs.libelle, cs.paye, cs.periode, c.libelle"; +$sql.= $db->order($sortfield,$sortorder); +$sql.= $db->plimit($limit+1,$offset); + + +$resql=$db->query($sql); +if ($resql) +{ + $num = $db->num_rows($resql); + $i = 0; + $var=true; + + $param=''; + if ($year) $param.='&year='.$year; + if ($typeid) $param.='&typeid='.$typeid; + + if ($year) + { + print_fiche_titre($langs->trans("SocialContributions"),($year?"".img_previous()." ".$langs->trans("Year")." $year ".img_next()."":"")); + } + else + { + print_barre_liste($langs->trans("SocialContributions"),$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$totalnboflines); + } + + if (empty($mysoc->country_id) && empty($mysoc->country_code)) + { + print '
'; + $langs->load("errors"); + $countrynotdefined=$langs->trans("ErrorSetACountryFirst"); + print $countrynotdefined; + print '
'; + } + else + { + + print ''; + + print ""; + + print ""; + print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"id","",$param,"",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"cs.libelle","",$param,'align="left"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Type"),$_SERVER["PHP_SELF"],"type","",$param,'align="left"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("PeriodEndDate"),$_SERVER["PHP_SELF"],"periode","",$param,'align="center"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Amount"),$_SERVER["PHP_SELF"],"cs.amount","",$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("DateDue"),$_SERVER["PHP_SELF"],"cs.date_ech","",$param,'align="center"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"cs.paye","",$param,'align="right"',$sortfield,$sortorder); + print "\n"; + + print ''; + print ''; + print ''; + // Type + print ''; + // Period end date + print ''; + print ''; + print ''; + print ''; + print "\n"; + + while ($i < min($num,$limit)) + { + $obj = $db->fetch_object($resql); + + $var = !$var; + print ""; + + // Ref + print ''; + + // Label + print ''; + + // Type + print ''; + + // Date end period + print ''; + + print ''; + + // Due date + print ''; + + print ''; + + print ''; + $i++; + } + + print '
 '; + $formsocialcontrib->select_type_socialcontrib($typeid,'typeid',1,16,0); + print '   '; + print ''; + print '
'; + $loan->id=$obj->id; + $loan->lib=$obj->id; + $loan->ref=$obj->id; + print $loan->getNomUrl(1,'20'); + print ''.dol_trunc($obj->libelle,42).''.dol_trunc($obj->type_lib,16).''; + if ($obj->periode) + { + print 'jdate($obj->periode)).'">'.dol_print_date($db->jdate($obj->periode),'day').''; + } + else + { + print ' '; + } + print ''.price($obj->amount).''.dol_print_date($db->jdate($obj->date_ech), 'day').''.$loan->LibStatut($obj->paye,5,$obj->alreadypayed).'
'; + + print ''; + } +} +else +{ + dol_print_error($db); +} + +$db->close(); + +llxFooter(); diff --git a/htdocs/compta/loan/info.php b/htdocs/compta/loan/info.php new file mode 100644 index 00000000000..c41787b7d08 --- /dev/null +++ b/htdocs/compta/loan/info.php @@ -0,0 +1,65 @@ + + * + * 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/compta/sociales/info.php + * \ingroup tax + * \brief Page with info about social contribution + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/tax.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + +$langs->load("compta"); +$langs->load("bills"); + +$id=GETPOST('id','int'); +$action=GETPOST("action"); + +// Security check +$socid = GETPOST('socid','int'); +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'tax', $id, 'chargesociales','charges'); + + +/* + * View + */ + +$help_url='EN:Module_Taxes_and_social_contributions|FR:Module Taxes et dividendes|ES:Módulo Impuestos y cargas sociales (IVA, impuestos)'; +llxHeader("",$langs->trans("SocialContribution"),$help_url); + +$chargesociales = new ChargeSociales($db); +$chargesociales->fetch($id); +$chargesociales->info($id); + +$head = tax_prepare_head($chargesociales); + +dol_fiche_head($head, 'info', $langs->trans("SocialContribution"), 0, 'bill'); + + +print '
'; +dol_print_object_info($chargesociales); +print '
'; + +print ''; + +llxFooter(); + +$db->close(); diff --git a/htdocs/core/lib/loan.lib.php b/htdocs/core/lib/loan.lib.php new file mode 100644 index 00000000000..58ebaef7bfd --- /dev/null +++ b/htdocs/core/lib/loan.lib.php @@ -0,0 +1,66 @@ + + * + * 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/core/lib/loan.lib.php + * \ingroup loan + * \brief Library for loan module + */ + + +/** + * Prepare array with list of tabs + * + * @param Object $object Object related to tabs + * @return array Array of tabs to show + */ +function loan_prepare_head($object) +{ + global $langs, $conf; + + $h = 0; + $head = array(); + + $head[$h][0] = DOL_URL_ROOT.'/compta/loan/card.php?id='.$object->id; + $head[$h][1] = $langs->trans('Card'); + $head[$h][2] = 'card'; + $h++; + + // Show more tabs from modules + // Entries must be declared in modules descriptor with line + // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab + // $this->tabs = array('entity:-tabname); to remove a tab + complete_head_from_modules($conf,$langs,$object,$head,$h,'loan'); + + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + $upload_dir = $conf->loan->dir_output . "/" . dol_sanitizeFileName($object->ref); + $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$')); + $head[$h][0] = DOL_URL_ROOT.'/compta/loan/document.php?id='.$object->id; + $head[$h][1] = $langs->trans("Documents"); + if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')'; + $head[$h][2] = 'documents'; + $h++; + + $head[$h][0] = DOL_URL_ROOT.'/compta/loan/info.php?id='.$object->id; + $head[$h][1] = $langs->trans("Info"); + $head[$h][2] = 'info'; + $h++; + + complete_head_from_modules($conf,$langs,$object,$head,$h,'loan','remove'); + + return $head; +} \ No newline at end of file diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 1d7aa1a5a9a..fd37ccacaf9 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -134,9 +134,9 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0) } // Financial - $tmpentry=array('enabled'=>(! empty($conf->comptabilite->enabled) || ! empty($conf->accounting->enabled) || ! empty($conf->facture->enabled) || ! empty($conf->don->enabled) || ! empty($conf->tax->enabled) || ! empty($conf->salaries->enabled)), - 'perms'=>(! empty($user->rights->compta->resultat->lire) || ! empty($user->rights->accounting->plancompte->lire) || ! empty($user->rights->facture->lire) || ! empty($user->rights->don->lire) || ! empty($user->rights->tax->charges->lire) || ! empty($user->rights->salaries->read)), - 'module'=>'comptabilite|accounting|facture|don|tax|salaries'); + $tmpentry=array('enabled'=>(! empty($conf->comptabilite->enabled) || ! empty($conf->accounting->enabled) || ! empty($conf->facture->enabled) || ! empty($conf->don->enabled) || ! empty($conf->tax->enabled) || ! empty($conf->salaries->enabled) || ! empty($conf->loan->enabled)), + 'perms'=>(! empty($user->rights->compta->resultat->lire) || ! empty($user->rights->accounting->plancompte->lire) || ! empty($user->rights->facture->lire) || ! empty($user->rights->don->lire) || ! empty($user->rights->tax->charges->lire) || ! empty($user->rights->salaries->read) || ! empty($user->rights->loan->read)), + 'module'=>'comptabilite|accounting|facture|don|tax|salaries|loan'); $showmode=dol_eldy_showmenu($type_user, $tmpentry, $listofmodulesforexternal); if ($showmode) { @@ -802,11 +802,11 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu } // Taxes and social contributions - if (! empty($conf->tax->enabled) || ! empty($conf->salaries->enabled)) + if (! empty($conf->tax->enabled) || ! empty($conf->salaries->enabled) || ! empty($conf->loan->enabled)) { global $mysoc; - $permtoshowmenu=((! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read)); + $permtoshowmenu=((! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read) || (! empty($conf->loan->enabled) && $user->rights->loan->read)); $newmenu->add("/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy",$langs->trans("MenuSpecialExpenses"), 0, $permtoshowmenu, '', $mainmenu, 'tax'); // Salaries @@ -817,6 +817,15 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/fiche.php?leftmenu=tax_salary&action=create",$langs->trans("NewPayment"),2,$user->rights->salaries->write); if (empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary",$langs->trans("Payments"),2,$user->rights->salaries->read); } + + // Loan + if (! empty($conf->loan->enabled)) + { + $langs->load("loan"); + $newmenu->add("/compta/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy",$langs->trans("Loans"),1,$user->rights->loan->read, '', $mainmenu, 'tax_loan'); + if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/compta/loan/card.php?leftmenu=tax_loan&action=create",$langs->trans("NewLoan"),2,$user->rights->loan->write); + if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/compta/loan/index.php?leftmenu=tax_loan",$langs->trans("Payments"),2,$user->rights->loan->read); + } // Social contributions if (! empty($conf->tax->enabled)) diff --git a/htdocs/core/modules/modLoan.class.php b/htdocs/core/modules/modLoan.class.php new file mode 100644 index 00000000000..fb2de1e3a02 --- /dev/null +++ b/htdocs/core/modules/modLoan.class.php @@ -0,0 +1,173 @@ + + * + * 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 . + * or see http://www.gnu.org/ + */ + +/** + * \defgroup tax Module Loans + * \brief Module to include loans management + * \file htdocs/core/modules/modLoan.class.php + * \ingroup loan + * \brief File to activate module loan + */ +include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; + + +/** + * Class to manage loan module + */ +class modLoan extends DolibarrModules +{ + + /** + * Constructor. Define names, constants, directories, boxes, permissions + * + * @param DoliDB $db Database handler + */ + function __construct($db) + { + global $conf; + + $this->db = $db; + $this->numero = 520; + + $this->family = "financial"; + // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) + $this->name = preg_replace('/^mod/i','',get_class($this)); + // Module description used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module) + $this->description = "Loans management"; + + // Possible values for version are: 'development', 'experimental', 'dolibarr' or version + $this->version = 'development'; + + $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); + $this->special = 0; + $this->picto='bill'; + + // Data directories to create when module is enabled + $this->dirs = array("/loan/temp"); + + // Config pages + $this->config_page_url = array('loan.php'); + + // Dependances + $this->depends = array(); + $this->requiredby = array(); + $this->conflictwith = array(); + $this->langfiles = array("loan"); + + // Constants + $this->const = array(); + $this->const[0] = array( + "LOAN_ACCOUNTING_ACCOUNT_CAPITAL", + "chaine", + "164" + ); + $this->const[1] = array( + "LOAN_ACCOUNTING_ACCOUNT_INTEREST", + "chaine", + "6611" + ); + $this->const[1] = array( + "LOAN_ACCOUNTING_ACCOUNT_INSURANCE", + "chaine", + "6162" + ); + + // Boxes + $this->boxes = array(); + + // Permissions + $this->rights = array(); + $this->rights_class = 'loan'; + $r=0; + + $r++; + $this->rights[$r][0] = 520; + $this->rights[$r][1] = 'Read loans'; + $this->rights[$r][2] = 'r'; + $this->rights[$r][3] = 1; + $this->rights[$r][4] = 'read'; + $this->rights[$r][5] = ''; + + $r++; + $this->rights[$r][0] = 522; + $this->rights[$r][1] = 'Create/modify loans'; + $this->rights[$r][2] = 'w'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'write'; + $this->rights[$r][5] = ''; + + $r++; + $this->rights[$r][0] = 524; + $this->rights[$r][1] = 'Delete loans'; + $this->rights[$r][2] = 'd'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'delete'; + $this->rights[$r][5] = ''; + + $r++; + $this->rights[$r][0] = 527; + $this->rights[$r][1] = 'Export loans'; + $this->rights[$r][2] = 'r'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'export'; + $this->rights[$r][5] = ''; + + + // Exports + //-------- + $r=0; + + } + + + /** + * Function called when module is enabled. + * The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database. + * It also creates data directories + * + * @param string $options Options when enabling module ('', 'noboxes') + * @return int 1 if OK, 0 if KO + */ + function init($options='') + { + global $conf; + + // Clean before activation + $this->remove($options); + + $sql = array(); + + return $this->_init($sql,$options); + } + + /** + * Function called when module is disabled. + * Remove from database constants, boxes and permissions from Dolibarr database. + * Data directories are not deleted + * + * @param string $options Options when enabling module ('', 'noboxes') + * @return int 1 if OK, 0 if KO + */ + function remove($options='') + { + $sql = array(); + + return $this->_remove($sql,$options); + } + +} diff --git a/htdocs/install/mysql/tables/llx_loan.sql b/htdocs/install/mysql/tables/llx_loan.sql new file mode 100644 index 00000000000..2ca026ba417 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_loan.sql @@ -0,0 +1,47 @@ +-- ======================================================================== +-- Copyright (C) 2014 Alexandre Spangaro +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . +-- +-- ======================================================================== + +create table llx_loan +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + entity integer DEFAULT 1 NOT NULL, + datec datetime, + tms timestamp, + + label varchar(80) NOT NULL, + fk_bank integer, + + capital real default 0 NOT NULL, + datestart date, + dateend date, + nbterm real, + rate double NOT NULL, + + note text, + + capital_position real default 0, -- If not a new loan, just have the position of capital + date_position date, + + accountancy_account_capital varchar(32), + accountancy_account_insurance varchar(32), + accountancy_account_interest varchar(32), + + fk_user_author integer DEFAULT NULL, + fk_user_modif integer DEFAULT NULL, + active tinyint DEFAULT 1 NOT NULL +)ENGINE=innodb; \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_payment_loan.sql b/htdocs/install/mysql/tables/llx_payment_loan.sql new file mode 100644 index 00000000000..83bb3ac2548 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_payment_loan.sql @@ -0,0 +1,33 @@ +-- =================================================================== +-- Copyright (C) 2014 Alexandre Spangaro +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . +-- +-- =================================================================== + +create table llx_payment_loan +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + fk_loan integer, + datec datetime, -- creation date + tms timestamp, + datep datetime, -- payment date + amount real DEFAULT 0, + fk_typepayment integer NOT NULL, + num_payment varchar(50), + note text, + fk_bank integer NOT NULL, + fk_user_creat integer, -- creation user + fk_user_modif integer -- last modification user +)ENGINE=innodb; From 1409c8f4503c7f527f7faf538d7031bbbfdc6adc Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 21 Sep 2014 21:38:33 +0200 Subject: [PATCH 002/429] Continue to work --- htdocs/compta/loan/card.php | 40 +++++++++++++++---------- htdocs/compta/loan/class/loan.class.php | 22 +++++++------- 2 files changed, 35 insertions(+), 27 deletions(-) diff --git a/htdocs/compta/loan/card.php b/htdocs/compta/loan/card.php index f8cf4d29327..3e7ce94520a 100644 --- a/htdocs/compta/loan/card.php +++ b/htdocs/compta/loan/card.php @@ -24,6 +24,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; $langs->load("compta"); $langs->load("bills"); @@ -71,16 +72,16 @@ if ($action == 'confirm_delete' && $confirm == 'yes') // Add loan if ($action == 'add' && $user->rights->loan->write) { - $dateech=@dol_mktime($_POST["echhour"],$_POST["echmin"],$_POST["echsec"],$_POST["echmonth"],$_POST["echday"],$_POST["echyear"]); - $dateperiod=@dol_mktime($_POST["periodhour"],$_POST["periodmin"],$_POST["periodsec"],$_POST["periodmonth"],$_POST["periodday"],$_POST["periodyear"]); - if (! $dateech) + $datestart=dol_mktime(12,0,0, $_POST["startmonth"], $_POST["startday"], $_POST["startyear"]); + $dateend=dol_mktime(12,0,0, $_POST["endmonth"], $_POST["endday"], $_POST["endyear"]); + if (! $datestart) { - setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateDue")), 'errors'); + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateStart")), 'errors'); $action = 'create'; } - elseif (! $dateperiod) + elseif (! $dateend) { - setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Period")), 'errors'); + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateEnd")), 'errors'); $action = 'create'; } elseif (! $_POST["capital"]) @@ -92,10 +93,17 @@ if ($action == 'add' && $user->rights->loan->write) { $loan = new Loan($db); - $loan->label = $_POST["label"]; - $loan->date_ech = $dateech; - $loan->periode = $dateperiod; - $loan->capital = $_POST["capital"]; + $loan->label = GETPOST("label"); + $loan->fk_bank = GETPOST("accountid"); + $loan->capital = GETPOST("capital"); + $loan->datestart = $datestart; + $loan->dateend = $dateend; + $loan->nbterm = GETPOST("nbterm"); + $loan->rate = GETPOST("rate"); + + $loan->account_capital = GETPOST("accountancy_account_capital"); + $loan->account_insurance = GETPOST("accountancy_account_insurance"); + $loan->account_interest = GETPOST("accountancy_account_interest"); $id=$loan->create($user); if ($id <= 0) @@ -125,9 +133,9 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->loan->write) $loan = new Loan($db); $result=$loan->fetch($_GET["id"]); - $loan->lib=$_POST["label"]; - $loan->date_ech=$dateech; - $loan->periode=$dateperiod; + $loan->label=$_POST["label"]; + $loan->datestart=$datestart; + $loan->dateend=$dateend; $result=$loan->update($user); if ($result <= 0) @@ -188,13 +196,13 @@ if ($action == 'create') // Date Start print ""; print ''.$langs->trans("DateStart").''; - print $form->select_date($datestart?$datestart:-1,'','','','','add',1,1); + print $form->select_date($datestart?$datestart:-1,'start','','','','add',1,1); print ''; // Date End print ""; print ''.$langs->trans("DateEnd").''; - print $form->select_date($dateend?$dateend:-1,'','','','','add',1,1); + print $form->select_date($dateend?$dateend:-1,'end','','','','add',1,1); print ''; // Number of terms @@ -430,7 +438,7 @@ if ($id > 0) // Edit if ($user->rights->loan->write) { - print "id&action=edit\">".$langs->trans("Modify").""; + print "id&action=edit\">".$langs->trans("Modify").""; } // Emettre paiement diff --git a/htdocs/compta/loan/class/loan.class.php b/htdocs/compta/loan/class/loan.class.php index 74aed1d048b..8b6bba2abf5 100644 --- a/htdocs/compta/loan/class/loan.class.php +++ b/htdocs/compta/loan/class/loan.class.php @@ -34,7 +34,7 @@ class Loan extends CommonObject var $id; var $ref; - var $date_start; + var $datestart; var $dateend; var $label; var $capital; @@ -116,8 +116,8 @@ class Loan extends CommonObject // clean parameters $newcapital=price2num($this->capital,'MT'); - // Validation parametres - if (! $newamount > 0 || empty($this->date_ech) || empty($this->periode)) + // Check parameters + if (! $newcapital > 0 || empty($this->datestart) || empty($this->dateend)) { $this->error="ErrorBadParameter"; return -2; @@ -125,10 +125,10 @@ class Loan extends CommonObject $this->db->begin(); - $sql = "INSERT INTO ".MAIN_DB_PREFIX."chargesociales (fk_type, libelle, date_ech, periode, amount, entity)"; - $sql.= " VALUES (".$this->type.",'".$this->db->escape($this->lib)."',"; - $sql.= " '".$this->db->idate($this->date_ech)."','".$this->db->idate($this->periode)."',"; - $sql.= " '".price2num($newamount)."',"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."loan (label, date_ech, periode, amount, entity)"; + $sql.= " VALUES ('".$this->db->escape($this->label)."',"; + $sql.= " '".$this->db->idate($this->datestart)."','".$this->db->idate($this->dateend)."',"; + $sql.= " '".price2num($newcapital)."',"; $sql.= " ".$conf->entity; $sql.= ")"; @@ -136,9 +136,9 @@ class Loan extends CommonObject $resql=$this->db->query($sql); if ($resql) { - $this->id=$this->db->last_insert_id(MAIN_DB_PREFIX."chargesociales"); + $this->id=$this->db->last_insert_id(MAIN_DB_PREFIX."loan"); - //dol_syslog("ChargesSociales::create this->id=".$this->id); + //dol_syslog("Loans::create this->id=".$this->id); $this->db->commit(); return $this->id; } @@ -152,7 +152,7 @@ class Loan extends CommonObject /** - * Delete a social contribution + * Delete a loan * * @param User $user Object user making delete * @return int <0 if KO, >0 if OK @@ -223,7 +223,7 @@ class Loan extends CommonObject /** - * Met a jour une charge sociale + * Update loan * * @param User $user Utilisateur qui modifie * @return int <0 si erreur, >0 si ok From f51df9da705e6f42230f03e4f787f3d836b951f1 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Mon, 22 Sep 2014 08:24:58 +0200 Subject: [PATCH 003/429] Add loan language file --- .tx/config | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.tx/config b/.tx/config index a89b56c1013..bf62f32d9d6 100644 --- a/.tx/config +++ b/.tx/config @@ -176,6 +176,12 @@ source_file = htdocs/langs/en_US/link.lang source_lang = en_US type = MOZILLAPROPERTIES +[dolibarr.loan] +file_filter = htdocs/langs//loan.lang +source_file = htdocs/langs/en_US/loan.lang +source_lang = en_US +type = MOZILLAPROPERTIES + [dolibarr.mailmanspip] file_filter = htdocs/langs//mailmanspip.lang source_file = htdocs/langs/en_US/mailmanspip.lang From c53663c8858801ba1002a2be7a27c9127e2b2366 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Mon, 22 Sep 2014 08:25:39 +0200 Subject: [PATCH 004/429] Continue to work --- htdocs/compta/loan/card.php | 174 +++++++++--------- htdocs/compta/loan/class/loan.class.php | 54 +++++- .../compta/loan/class/paymentloan.class.php | 6 +- htdocs/compta/loan/document.php | 77 ++++---- htdocs/compta/loan/info.php | 31 ++-- 5 files changed, 189 insertions(+), 153 deletions(-) diff --git a/htdocs/compta/loan/card.php b/htdocs/compta/loan/card.php index 3e7ce94520a..6b075e3d758 100644 --- a/htdocs/compta/loan/card.php +++ b/htdocs/compta/loan/card.php @@ -153,7 +153,7 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->loan->write) $form = new Form($db); -$help_url='EN:Module_Loan|FR:Module Emprunt'; +$help_url='EN:Module_Loan|FR:Module_Emprunt'; llxHeader("",$langs->trans("Loan"),$help_url); @@ -268,7 +268,7 @@ if ($action == 'create') if ($id > 0) { $object = new Loan($db); - $result=$object->fetch($id); + $result = $object->fetch($id); if ($result > 0) { @@ -313,101 +313,41 @@ if ($id > 0) { print ''.$langs->trans("Label").''.$object->label.''; } + + // Capital + print ''.$langs->trans("Capital").''.price($object->capital,0,$outputlangs,1,-1,-1,$conf->currency).''; - $rowspan=5; - print ''; - - /* - * Payments - */ - $sql = "SELECT p.rowid, p.num_payment, datep as dp, p.amount,"; - $sql.= "c.libelle as paiement_type"; - $sql.= " FROM ".MAIN_DB_PREFIX."payment_loan as p"; - $sql.= ", ".MAIN_DB_PREFIX."c_paiement as c "; - $sql.= ", ".MAIN_DB_PREFIX."loan as l"; - $sql.= " WHERE p.fk_loan = ".$id; - $sql.= " AND p.fk_loan = l.rowid"; - $sql.= " AND l.entity = ".$conf->entity; - $sql.= " AND p.fk_typepayment = c.id"; - $sql.= " ORDER BY dp DESC"; - - //print $sql; - $resql = $db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - $i = 0; $total = 0; - echo ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - $var=True; - while ($i < $num) - { - $objp = $db->fetch_object($resql); - $var=!$var; - print "'; - print '\n"; - print "\n"; - print '\n"; - print ""; - $totalpaye += $objp->amount; - $i++; - } - - if ($object->paye == 0) - { - print "\n"; - print "\n"; - - $resteapayer = $object->amount - $totalpaye; - - print ""; - print "\n"; - } - print "
'.$langs->trans("RefPayment").''.$langs->trans("Date").''.$langs->trans("Type").''.$langs->trans("Amount").' 
"; - print ''.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.''.dol_print_date($db->jdate($objp->dp),'day')."".$objp->paiement_type.' '.$objp->num_paiement."'.price($objp->amount)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("AlreadyPaid")." :".price($totalpaye)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("AmountExpected")." :".price($object->amount)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("RemainderToPay")." :".price($resteapayer)." ".$langs->trans("Currency".$conf->currency)."
"; - $db->free($resql); - } - else - { - dol_print_error($db); - } - print ""; - - print ""; - - // Period end date - print "".$langs->trans("PeriodEndDate").""; + // Date start + print "".$langs->trans("DateStart").""; print ""; if ($action == 'edit') { - print $form->select_date($object->periode, 'period', 0, 0, 0, 'charge', 1); + print $form->select_date($object->datestart, 'start', 0, 0, 0, 'update', 1); } else { - print dol_print_date($object->periode,"day"); + print dol_print_date($object->datestart,"day"); } print ""; - // Due date + // Date end + print "".$langs->trans("DateEnd").""; + print ""; if ($action == 'edit') { - print ''.$langs->trans("DateDue").""; - print $form->select_date($object->date_ech, 'ech', 0, 0, 0, 'charge', 1); - print ""; + print $form->select_date($object->dateend, 'end', 0, 0, 0, 'update', 1); } - else { - print "".$langs->trans("DateDue")."".dol_print_date($object->date_ech,'day').""; + else + { + print dol_print_date($object->dateend,"day"); } - - // Amount - print ''.$langs->trans("AmountTTC").''.price($object->amount,0,$outputlangs,1,-1,-1,$conf->currency).''; + print ""; + + // Nbterms + print ''.$langs->trans("Nbterms").''.$object->nbterm.''; + + // Rate + print ''.$langs->trans("Rate").''.$object->rate.''; // Status print ''.$langs->trans("Status").''.$object->getLibStatut(4, $totalpaye).''; @@ -461,6 +401,74 @@ if ($id > 0) print ""; } + + print '
'; + print ''; + print '"; + print "
'; + + /* + * Payments + */ + $sql = "SELECT p.rowid, p.num_payment, datep as dp, p.amount,"; + $sql.= "c.libelle as paiement_type"; + $sql.= " FROM ".MAIN_DB_PREFIX."payment_loan as p"; + $sql.= ", ".MAIN_DB_PREFIX."c_paiement as c "; + $sql.= ", ".MAIN_DB_PREFIX."loan as l"; + $sql.= " WHERE p.fk_loan = ".$id; + $sql.= " AND p.fk_loan = l.rowid"; + $sql.= " AND l.entity = ".$conf->entity; + $sql.= " AND p.fk_typepayment = c.id"; + $sql.= " ORDER BY dp DESC"; + + //print $sql; + $resql = $db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + $i = 0; $total = 0; + echo ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + $var=True; + while ($i < $num) + { + $objp = $db->fetch_object($resql); + $var=!$var; + print "'; + print '\n"; + print "\n"; + print '\n"; + print ""; + $totalpaye += $objp->amount; + $i++; + } + + if ($object->paye == 0) + { + print "\n"; + print "\n"; + + $resteapayer = $object->amount - $totalpaye; + + print ""; + print "\n"; + } + print "
'.$langs->trans("RefPayment").''.$langs->trans("Date").''.$langs->trans("Type").''.$langs->trans("Amount").' 
"; + print ''.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.''.dol_print_date($db->jdate($objp->dp),'day')."".$objp->paiement_type.' '.$objp->num_paiement."'.price($objp->amount)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("AlreadyPaid")." :".price($totalpaye)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("AmountExpected")." :".price($object->amount)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("RemainderToPay")." :".price($resteapayer)." ".$langs->trans("Currency".$conf->currency)."
"; + $db->free($resql); + } + else + { + dol_print_error($db); + } + print "
"; } else { diff --git a/htdocs/compta/loan/class/loan.class.php b/htdocs/compta/loan/class/loan.class.php index 8b6bba2abf5..b63f9b32eff 100644 --- a/htdocs/compta/loan/class/loan.class.php +++ b/htdocs/compta/loan/class/loan.class.php @@ -47,6 +47,9 @@ class Loan extends CommonObject var $date_creation; var $date_modification; var $date_validation; + var $fk_bank; + var $fk_user_creat; + var $fk_user_modif; /** @@ -68,8 +71,7 @@ class Loan extends CommonObject */ function fetch($id) { - $sql = "SELECT l.rowid, l.datestart,"; - $sql.= " l.label, l.capital"; + $sql = "SELECT l.rowid, l.label, l.capital, l.datestart, l.dateend, l.nbterm, l.rate, l.note"; $sql.= " FROM ".MAIN_DB_PREFIX."loan as l"; $sql.= " WHERE l.rowid = ".$id; @@ -84,8 +86,12 @@ class Loan extends CommonObject $this->id = $obj->rowid; $this->ref = $obj->rowid; $this->datestart = $this->db->jdate($obj->datestart); + $this->dateend = $this->db->jdate($obj->dateend); $this->label = $obj->label; $this->capital = $obj->capital; + $this->nbterm = $obj->nbterm; + $this->rate = $obj->rate; + $this->note = $obj->note; return 1; } @@ -112,9 +118,20 @@ class Loan extends CommonObject function create($user) { global $conf; + + $error=0; + + $now=dol_now(); // clean parameters $newcapital=price2num($this->capital,'MT'); + if (isset($this->note)) $this->note = trim($this->note); + if (isset($this->account_capital)) $this->account_capital = trim($this->account_capital); + if (isset($this->account_insurance)) $this->account_insurance = trim($this->account_insurance); + if (isset($this->account_interest)) $this->account_interest = trim($this->account_interest); + if (isset($this->fk_bank)) $this->fk_bank=trim($this->fk_bank); + if (isset($this->fk_user_creat)) $this->fk_user_creat=trim($this->fk_user_creat); + if (isset($this->fk_user_modif)) $this->fk_user_modif=trim($this->fk_user_modif); // Check parameters if (! $newcapital > 0 || empty($this->datestart) || empty($this->dateend)) @@ -122,14 +139,31 @@ class Loan extends CommonObject $this->error="ErrorBadParameter"; return -2; } + if (($conf->accounting->enabled) && empty($this->account_capital) && empty($this->account_insurance) && empty($this->account_interest)) + { + $this->error="ErrorAccountingParameter"; + return -2; + } $this->db->begin(); - $sql = "INSERT INTO ".MAIN_DB_PREFIX."loan (label, date_ech, periode, amount, entity)"; - $sql.= " VALUES ('".$this->db->escape($this->label)."',"; - $sql.= " '".$this->db->idate($this->datestart)."','".$this->db->idate($this->dateend)."',"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."loan (label, fk_bank, capital, datestart, dateend, nbterm, rate, note"; + $sql.= " ,accountancy_account_capital, accountancy_account_insurance, accountancy_account_interest, entity"; + $sql.= " ,datec, fk_user_author)"; + $sql.= " VALUES ('".$this->db->escape($this->label)."',"; + $sql.= " '".$this->db->escape($this->fk_bank)."',"; $sql.= " '".price2num($newcapital)."',"; - $sql.= " ".$conf->entity; + $sql.= " '".$this->db->idate($this->datestart)."',"; + $sql.= " '".$this->db->idate($this->dateend)."',"; + $sql.= " '".$this->db->escape($this->nbterm)."',"; + $sql.= " '".$this->db->escape($this->rate)."',"; + $sql.= " '".$this->db->escape($this->note)."',"; + $sql.= " '".$this->db->escape($this->account_capital)."',"; + $sql.= " '".$this->db->escape($this->account_insurance)."',"; + $sql.= " '".$this->db->escape($this->account_interest)."',"; + $sql.= " ".$conf->entity.","; + $sql.= " '".$this->db->idate($now)."',"; + $sql.= " ".$user->id; $sql.= ")"; dol_syslog(get_class($this)."::create", LOG_DEBUG); @@ -440,7 +474,7 @@ class Loan extends CommonObject */ function info($id) { - $sql = "SELECT l.rowid, l.tms as datem, l.datec as datec"; + $sql = "SELECT l.rowid, l.tms as datem, l.fk_user_author as user_author, l.datec as datec"; $sql.= " FROM ".MAIN_DB_PREFIX."loan as l"; $sql.= " WHERE l.rowid = ".$id; @@ -454,10 +488,10 @@ class Loan extends CommonObject $this->id = $obj->rowid; - if ($obj->fk_user_author) { + if ($obj->user_author) { $cuser = new User($this->db); - $cuser->fetch($obj->fk_user_author); - $this->user_creation = $cuser; + $cuser->fetch($obj->user_author); + $this->user_creation = $cuser; } $this->date_creation = $this->db->jdate($obj->datec); diff --git a/htdocs/compta/loan/class/paymentloan.class.php b/htdocs/compta/loan/class/paymentloan.class.php index 972fa762b96..24d59fb417b 100644 --- a/htdocs/compta/loan/class/paymentloan.class.php +++ b/htdocs/compta/loan/class/paymentloan.class.php @@ -28,10 +28,10 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; /** \class PaymentSocialContribution * \brief Class to manage payments of social contributions */ -class PaymentSocialContribution extends CommonObject +class PaymentLoan extends CommonObject { - public $element='paiementcharge'; //!< Id that identify managed objects - public $table_element='paiementcharge'; //!< Name of table without prefix where object is stored + public $element='payment_loan'; //!< Id that identify managed objects + public $table_element='payment_loan'; //!< Name of table without prefix where object is stored var $id; var $ref; diff --git a/htdocs/compta/loan/document.php b/htdocs/compta/loan/document.php index ad5af8f84c2..022340270ad 100644 --- a/htdocs/compta/loan/document.php +++ b/htdocs/compta/loan/document.php @@ -1,11 +1,5 @@ - * Copyright (C) 2004-2014 Laurent Destailleur - * Copyright (C) 2005 Marc Barilley / Ocebo - * Copyright (C) 2005-2009 Regis Houssin - * Copyright (C) 2005 Simon TOSSER - * Copyright (C) 2011 Juanjo Menent - * Copyright (C) 2013 Cédric Salvador +/* Copyright (C) 2014 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,22 +16,23 @@ */ /** - * \file htdocs/compta/sociales/document.php - * \ingroup tax - * \brief Page with attached files on social contributions + * \file htdocs/compta/loan/document.php + * \ingroup loan + * \brief Page with attached files on loan */ require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/tax.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; $langs->load("other"); $langs->load("companies"); $langs->load("compta"); $langs->load("bills"); +$langs->load("loan"); $id = GETPOST('id','int'); $action = GETPOST("action"); @@ -45,8 +40,7 @@ $confirm = GETPOST('confirm', 'alpha'); // Security check if ($user->societe_id) $socid=$user->societe_id; -$result = restrictedArea($user, 'tax', $id, 'chargesociales','charges'); - +$result = restrictedArea($user, 'loan', $id, '',''); // Get parameters $sortfield = GETPOST("sortfield",'alpha'); @@ -61,12 +55,11 @@ $pagenext = $page + 1; if (! $sortorder) $sortorder="ASC"; if (! $sortfield) $sortfield="name"; - -$object = new ChargeSociales($db); +$object = new Loan($db); if ($id > 0) $object->fetch($id); -$upload_dir = $conf->tax->dir_output.'/'.dol_sanitizeFileName($object->ref); -$modulepart='tax'; +$upload_dir = $conf->loan->dir_output.'/'.dol_sanitizeFileName($object->ref); +$modulepart='loan'; /* @@ -82,16 +75,16 @@ include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php $form = new Form($db); -$help_url='EN:Module_Taxes_and_social_contributions|FR:Module Taxes et dividendes|ES:Módulo Impuestos y cargas sociales (IVA, impuestos)'; -llxHeader("",$langs->trans("SocialContribution"),$help_url); +$help_url='EN:Module_Loan|FR:Module_Emprunt'; +llxHeader("",$langs->trans("Loan"),$help_url); if ($object->id) { - $alreadypayed=$object->getSommePaiement(); + $alreadypayed=$object->getSumPayment(); - $head=tax_prepare_head($object, $user); + $head = loan_prepare_head($object, $user); - dol_fiche_head($head, 'documents', $langs->trans("SocialContribution"), 0, 'bill'); + dol_fiche_head($head, 'documents', $langs->trans("Loan"), 0, 'bill'); // Construit liste des fichiers @@ -114,44 +107,44 @@ if ($object->id) if ($action == 'edit') { print ''.$langs->trans("Label").''; - print ''; + print ''; print ''; } else { - print ''.$langs->trans("Label").''.$object->lib.''; + print ''.$langs->trans("Label").''.$object->label.''; } - // Type - print "".$langs->trans("Type")."".$object->type_libelle.""; + // Amount + print ''.$langs->trans("Capital").''.price($object->capital,0,$outputlangs,1,-1,-1,$conf->currency).''; - // Period end date - print "".$langs->trans("PeriodEndDate").""; + // Date start + print "".$langs->trans("Datestart").""; print ""; if ($action == 'edit') { - print $form->select_date($object->periode, 'period', 0, 0, 0, 'charge', 1); + print $form->select_date($object->datestart, 'start', 0, 0, 0, 'loan', 1); } else { - print dol_print_date($object->periode,"day"); + print dol_print_date($object->datestart,"day"); } print ""; print ""; - // Due date + // Date end + print "".$langs->trans("Dateend").""; + print ""; if ($action == 'edit') { - print ''.$langs->trans("DateDue").""; - print $form->select_date($object->date_ech, 'ech', 0, 0, 0, 'charge', 1); - print ""; + print $form->select_date($object->dateend, 'end', 0, 0, 0, 'loan', 1); } - else { - print "".$langs->trans("DateDue")."".dol_print_date($object->date_ech,'day').""; + else + { + print dol_print_date($object->dateend,"day"); } - - // Amount - print ''.$langs->trans("AmountTTC").''.price($object->amount,0,$outputlangs,1,-1,-1,$conf->currency).''; + print ""; + print ""; // Status print ''.$langs->trans("Status").''.$object->getLibStatut(4,$alreadypayed).''; @@ -162,8 +155,8 @@ if ($object->id) print ''; - $modulepart = 'tax'; - $permission = $user->rights->tax->charges->creer; + $modulepart = 'loan'; + $permission = $user->rights->loan->write; $param = '&id=' . $object->id; include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php'; } diff --git a/htdocs/compta/loan/info.php b/htdocs/compta/loan/info.php index c41787b7d08..74319ba40b8 100644 --- a/htdocs/compta/loan/info.php +++ b/htdocs/compta/loan/info.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2014 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,18 +16,19 @@ */ /** - * \file htdocs/compta/sociales/info.php - * \ingroup tax - * \brief Page with info about social contribution + * \file htdocs/compta/loan/info.php + * \ingroup loan + * \brief Page with info about loan */ require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/tax.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; $langs->load("compta"); $langs->load("bills"); +$langs->load("loan"); $id=GETPOST('id','int'); $action=GETPOST("action"); @@ -35,27 +36,27 @@ $action=GETPOST("action"); // Security check $socid = GETPOST('socid','int'); if ($user->societe_id) $socid=$user->societe_id; -$result = restrictedArea($user, 'tax', $id, 'chargesociales','charges'); +$result = restrictedArea($user, 'loan', $id, '',''); /* * View */ -$help_url='EN:Module_Taxes_and_social_contributions|FR:Module Taxes et dividendes|ES:Módulo Impuestos y cargas sociales (IVA, impuestos)'; -llxHeader("",$langs->trans("SocialContribution"),$help_url); +$help_url='EN:Module_Loan|FR:Module_Emprunt'; +llxHeader("",$langs->trans("Loan"),$help_url); -$chargesociales = new ChargeSociales($db); -$chargesociales->fetch($id); -$chargesociales->info($id); +$loan = new Loan($db); +$loan->fetch($id); +$loan->info($id); -$head = tax_prepare_head($chargesociales); +$head = loan_prepare_head($loan); -dol_fiche_head($head, 'info', $langs->trans("SocialContribution"), 0, 'bill'); +dol_fiche_head($head, 'info', $langs->trans("Loan"), 0, 'bill'); print '
'; -dol_print_object_info($chargesociales); +dol_print_object_info($loan); print '
'; print ''; From 1e15474495ec854b1baa4a62d4a56720cc518800 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Tue, 23 Sep 2014 21:21:38 +0200 Subject: [PATCH 005/429] Continue working --- htdocs/compta/loan/class/loan.class.php | 10 +-- htdocs/compta/loan/index.php | 92 +++++++------------------ 2 files changed, 28 insertions(+), 74 deletions(-) diff --git a/htdocs/compta/loan/class/loan.class.php b/htdocs/compta/loan/class/loan.class.php index b63f9b32eff..afd15ced451 100644 --- a/htdocs/compta/loan/class/loan.class.php +++ b/htdocs/compta/loan/class/loan.class.php @@ -423,14 +423,14 @@ class Loan extends CommonObject $result=''; - if (empty($this->ref)) $this->ref=$this->lib; + if (empty($this->ref)) $this->ref=$this->label; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; - if ($withpicto) $result.=($lien.img_object($langs->trans("ShowSocialContribution").': '.$this->lib,'bill').$lienfin.' '); + if ($withpicto) $result.=($link.img_object($langs->trans("ShowLoan").': '.$this->label,'bill').$linkend.' '); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.($maxlen?dol_trunc($this->ref,$maxlen):$this->ref).$lienfin; + if ($withpicto != 2) $result.=$link.($maxlen?dol_trunc($this->ref,$maxlen):$this->ref).$linkend; return $result; } diff --git a/htdocs/compta/loan/index.php b/htdocs/compta/loan/index.php index d84d1897c24..41299668dd1 100644 --- a/htdocs/compta/loan/index.php +++ b/htdocs/compta/loan/index.php @@ -45,7 +45,6 @@ $limit = $conf->liste_limit; if (! $sortfield) $sortfield="l.rowid"; if (! $sortorder) $sortorder="DESC"; -$year=$_GET["year"]; $filtre=$_GET["filtre"]; /* @@ -57,33 +56,19 @@ $loan = new Loan($db); llxHeader(); -$sql = "SELECT cs.rowid as id, cs.fk_type as type, "; -$sql.= " cs.amount, cs.date_ech, cs.libelle, cs.paye, cs.periode,"; -$sql.= " c.libelle as type_lib,"; -$sql.= " SUM(pc.amount) as alreadypayed"; -$sql.= " FROM ".MAIN_DB_PREFIX."c_chargesociales as c,"; -$sql.= " ".MAIN_DB_PREFIX."chargesociales as cs"; -$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiementcharge as pc ON pc.fk_charge = cs.rowid"; -$sql.= " WHERE cs.fk_type = c.id"; -$sql.= " AND cs.entity = ".$conf->entity; -if (GETPOST("search_label")) $sql.=" AND cs.libelle LIKE '%".$db->escape(GETPOST("search_label"))."%'"; -if ($year > 0) -{ - $sql .= " AND ("; - // Si period renseignee on l'utilise comme critere de date, sinon on prend date echeance, - // ceci afin d'etre compatible avec les cas ou la periode n'etait pas obligatoire - $sql .= " (cs.periode IS NOT NULL AND date_format(cs.periode, '%Y') = '".$year."') "; - $sql .= "OR (cs.periode IS NULL AND date_format(cs.date_ech, '%Y') = '".$year."')"; - $sql .= ")"; -} +$sql = "SELECT l.rowid as id, l.label, l.capital, l.datestart, l.dateend,"; +$sql.= " SUM(pl.amount) as alreadypayed"; +$sql.= " FROM ".MAIN_DB_PREFIX."loan as l,"; +$sql.= " ".MAIN_DB_PREFIX."payment_loan as pl"; +$sql.= " WHERE pl.fk_loan = l.rowid"; +$sql.= " AND l.entity = ".$conf->entity; +if (GETPOST("search_label")) $sql.=" AND l.label LIKE '%".$db->escape(GETPOST("search_label"))."%'"; + if ($filtre) { $filtre=str_replace(":","=",$filtre); $sql .= " AND ".$filtre; } -if ($typeid) { - $sql .= " AND cs.fk_type=".$typeid; -} -$sql.= " GROUP BY cs.rowid, cs.fk_type, cs.amount, cs.date_ech, cs.libelle, cs.paye, cs.periode, c.libelle"; + $sql.= $db->order($sortfield,$sortorder); $sql.= $db->plimit($limit+1,$offset); @@ -96,18 +81,9 @@ if ($resql) $var=true; $param=''; - if ($year) $param.='&year='.$year; - if ($typeid) $param.='&typeid='.$typeid; - - if ($year) - { - print_fiche_titre($langs->trans("SocialContributions"),($year?"".img_previous()." ".$langs->trans("Year")." $year ".img_next()."":"")); - } - else - { - print_barre_liste($langs->trans("SocialContributions"),$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$totalnboflines); - } - + + print_fiche_titre($langs->trans("Loans")); + if (empty($mysoc->country_id) && empty($mysoc->country_code)) { print '
'; @@ -125,24 +101,16 @@ if ($resql) print ""; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"id","",$param,"",$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"cs.libelle","",$param,'align="left"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Type"),$_SERVER["PHP_SELF"],"type","",$param,'align="left"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("PeriodEndDate"),$_SERVER["PHP_SELF"],"periode","",$param,'align="center"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Amount"),$_SERVER["PHP_SELF"],"cs.amount","",$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("DateDue"),$_SERVER["PHP_SELF"],"cs.date_ech","",$param,'align="center"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"cs.paye","",$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"l.label","",$param,'align="left"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Capital"),$_SERVER["PHP_SELF"],"l.capital","",$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("DateStart"),$_SERVER["PHP_SELF"],"l.datestart","",$param,'align="center"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"l.paid","",$param,'align="right"',$sortfield,$sortorder); print "\n"; print ''; print ' '; print ''; - // Type - print ''; - $formsocialcontrib->select_type_socialcontrib($typeid,'typeid',1,16,0); - print ''; - // Period end date print ' '; - print ' '; print ' '; print ''; print ''; @@ -161,33 +129,19 @@ if ($resql) $loan->id=$obj->id; $loan->lib=$obj->id; $loan->ref=$obj->id; - print $loan->getNomUrl(1,'20'); + print $loan->getNameUrl(1,'20'); print ''; // Label - print ''.dol_trunc($obj->libelle,42).''; + print ''.dol_trunc($obj->label,42).''; - // Type - print ''.dol_trunc($obj->type_lib,16).''; + // Capital + print ''.price($obj->capital).''; - // Date end period - print ''; - if ($obj->periode) - { - print 'jdate($obj->periode)).'">'.dol_print_date($db->jdate($obj->periode),'day').''; - } - else - { - print ' '; - } - print ''; + // Date start + print ''.dol_print_date($db->jdate($obj->datestart), 'day').''; - print ''.price($obj->amount).''; - - // Due date - print ''.dol_print_date($db->jdate($obj->date_ech), 'day').''; - - print ''.$loan->LibStatut($obj->paye,5,$obj->alreadypayed).''; + print ''.$loan->LibStatut($obj->paid,5,$obj->alreadypayed).''; print ''; $i++; From 3d23319226f5b4054151ba7d59fef1d2cdb76821 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 24 Sep 2014 04:10:29 +0200 Subject: [PATCH 006/429] Update --- htdocs/compta/loan/index.php | 103 +++++++++++++---------------- htdocs/compta/prelevement/list.php | 2 +- 2 files changed, 46 insertions(+), 59 deletions(-) diff --git a/htdocs/compta/loan/index.php b/htdocs/compta/loan/index.php index 41299668dd1..16b9a10c054 100644 --- a/htdocs/compta/loan/index.php +++ b/htdocs/compta/loan/index.php @@ -72,8 +72,8 @@ if ($filtre) { $sql.= $db->order($sortfield,$sortorder); $sql.= $db->plimit($limit+1,$offset); - $resql=$db->query($sql); + if ($resql) { $num = $db->num_rows($resql); @@ -84,73 +84,60 @@ if ($resql) print_fiche_titre($langs->trans("Loans")); - if (empty($mysoc->country_id) && empty($mysoc->country_code)) - { - print '
'; - $langs->load("errors"); - $countrynotdefined=$langs->trans("ErrorSetACountryFirst"); - print $countrynotdefined; - print '
'; - } - else + print '
'; + + print ""; + + print ""; + print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"id","",$param,"",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"l.label","",$param,'align="left"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Capital"),$_SERVER["PHP_SELF"],"l.capital","",$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("DateStart"),$_SERVER["PHP_SELF"],"l.datestart","",$param,'align="center"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"l.paid","",$param,'align="right"',$sortfield,$sortorder); + print "\n"; + + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + + while ($i < min($num,$limit)) { + $obj = $db->fetch_object($resql); - print ''; + $var = !$var; + print ""; - print "
   '; + print ''; + print '
"; - - print ""; - print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"id","",$param,"",$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"l.label","",$param,'align="left"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Capital"),$_SERVER["PHP_SELF"],"l.capital","",$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("DateStart"),$_SERVER["PHP_SELF"],"l.datestart","",$param,'align="center"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"l.paid","",$param,'align="right"',$sortfield,$sortorder); - print "\n"; - - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print "\n"; - while ($i < min($num,$limit)) - { - $obj = $db->fetch_object($resql); + // Label + print ''; - $var = !$var; - print ""; + // Capital + print ''; - // Ref - print ''; + // Date start + print ''; - // Label - print ''; + print ''; - // Capital - print ''; - - // Date start - print ''; - - print ''; - - print ''; - $i++; - } - - print '
   '; - print ''; + // Ref + print ''; + $loan->id=$obj->id; + $loan->label=$obj->id; + $loan->ref=$obj->id; + print $loan->getNameUrl(1,'20'); print '
'.dol_trunc($obj->label,42).'
'.price($obj->capital).''; - $loan->id=$obj->id; - $loan->lib=$obj->id; - $loan->ref=$obj->id; - print $loan->getNameUrl(1,'20'); - print ''.dol_print_date($db->jdate($obj->datestart), 'day').''.dol_trunc($obj->label,42).''.$loan->LibStatut($obj->paid,5,$obj->alreadypayed).''.price($obj->capital).''.dol_print_date($db->jdate($obj->datestart), 'day').''.$loan->LibStatut($obj->paid,5,$obj->alreadypayed).'
'; - - print '
'; + print ''; + $i++; } + + print ''; + print ''; } else { diff --git a/htdocs/compta/prelevement/list.php b/htdocs/compta/prelevement/list.php index 819d879b098..0608ea70431 100644 --- a/htdocs/compta/prelevement/list.php +++ b/htdocs/compta/prelevement/list.php @@ -120,7 +120,7 @@ if ($result) print ' '; print ''; - print '
'; + print ''; print ''; print ''; print ''; From d3252d1348cb736fe4cd4e809f313f9f30f76d82 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Mon, 29 Sep 2014 20:37:51 +0200 Subject: [PATCH 007/429] Update --- htdocs/compta/loan/card.php | 86 +++-- htdocs/compta/loan/class/loan.class.php | 76 +--- .../compta/loan/class/paymentloan.class.php | 168 +++------ htdocs/compta/loan/index.php | 48 ++- htdocs/compta/loan/payment.php | 331 ++++++++++++++++++ .../install/mysql/migration/3.6.0-3.7.0.sql | 42 +++ htdocs/install/mysql/tables/llx_loan.sql | 2 + 7 files changed, 498 insertions(+), 255 deletions(-) create mode 100644 htdocs/compta/loan/payment.php diff --git a/htdocs/compta/loan/card.php b/htdocs/compta/loan/card.php index 6b075e3d758..b3e31324cb0 100644 --- a/htdocs/compta/loan/card.php +++ b/htdocs/compta/loan/card.php @@ -367,42 +367,6 @@ if ($id > 0) dol_fiche_end(); - - /* - * Boutons actions - */ - if ($action != 'edit') - { - print "
\n"; - - // Edit - if ($user->rights->loan->write) - { - print "id&action=edit\">".$langs->trans("Modify").""; - } - - // Emettre paiement - if ($object->paye == 0 && ((price2num($object->amount) < 0 && round($resteapayer) < 0) || (price2num($object->amount) > 0 && round($resteapayer) > 0)) && $user->rights->loan->write) - { - print "id&action=create\">".$langs->trans("DoPayment").""; - } - - // Classify 'paid' - if ($object->paye == 0 && round($resteapayer) <=0 && $user->rights->loan->write) - { - print "id&action=paid\">".$langs->trans("ClassifyPaid").""; - } - - // Delete - if ($user->rights->loan->delete) - { - print "id&action=delete\">".$langs->trans("Delete").""; - } - - print "
"; - } - - print '
'; print ''; print ''; + print ''.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.''; print '\n"; - print "\n"; + print "\n"; print '\n"; print ""; - $totalpaye += $objp->amount; + $totalpaid += $objp->amount; $i++; } - if ($object->paye == 0) + if ($object->paid == 0) { - print "\n"; - print "\n"; + print "\n"; + print "\n"; - $resteapayer = $object->amount - $totalpaye; + $staytopay = $object->capital - $totalpaid; print ""; - print "\n"; + print "\n"; } print "
'; @@ -441,24 +405,24 @@ if ($id > 0) $objp = $db->fetch_object($resql); $var=!$var; print "
"; - print ''.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.''.dol_print_date($db->jdate($objp->dp),'day')."".$objp->paiement_type.' '.$objp->num_paiement."".$objp->paiement_type.' '.$objp->num_payment."'.price($objp->amount)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("AlreadyPaid")." :".price($totalpaye)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("AmountExpected")." :".price($object->amount)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("AlreadyPaid")." :".price($totalpaid)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("AmountExpected")." :".price($object->capital)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("RemainderToPay")." :".price($resteapayer)." ".$langs->trans("Currency".$conf->currency)."
".price($staytopay)." ".$langs->trans("Currency".$conf->currency)."
"; $db->free($resql); @@ -469,6 +433,40 @@ if ($id > 0) } print ""; print ""; + + /* + * Boutons actions + */ + if ($action != 'edit') + { + print "
\n"; + + // Edit + if ($user->rights->loan->write) + { + print "id&action=edit\">".$langs->trans("Modify").""; + } + + // Emit payment + if ($object->paid == 0 && ((price2num($object->capital) > 0 && round($staytopay) < 0) || (price2num($object->capital) > 0 && round($staytopay) > 0)) && $user->rights->loan->write) + { + print "id&action=create\">".$langs->trans("DoPayment").""; + } + + // Classify 'paid' + if ($object->paid == 0 && round($staytopay) <=0 && $user->rights->loan->write) + { + print "rowid&action=paid\">".$langs->trans("ClassifyPaid").""; + } + + // Delete + if ($user->rights->loan->delete) + { + print "id&action=delete\">".$langs->trans("Delete").""; + } + + print "
"; + } } else { diff --git a/htdocs/compta/loan/class/loan.class.php b/htdocs/compta/loan/class/loan.class.php index afd15ced451..a0cbf9a8224 100644 --- a/htdocs/compta/loan/class/loan.class.php +++ b/htdocs/compta/loan/class/loan.class.php @@ -33,6 +33,7 @@ class Loan extends CommonObject public $table_element='loan'; var $id; + var $rowid; var $ref; var $datestart; var $dateend; @@ -41,6 +42,7 @@ class Loan extends CommonObject var $nbterm; var $rate; var $note; + var $paid; var $account_capital; var $account_insurance; var $account_interest; @@ -71,7 +73,8 @@ class Loan extends CommonObject */ function fetch($id) { - $sql = "SELECT l.rowid, l.label, l.capital, l.datestart, l.dateend, l.nbterm, l.rate, l.note"; + $sql = "SELECT l.rowid, l.label, l.capital, l.datestart, l.dateend, l.nbterm, l.rate, l.note,"; + $sql.= " l.paid"; $sql.= " FROM ".MAIN_DB_PREFIX."loan as l"; $sql.= " WHERE l.rowid = ".$id; @@ -92,6 +95,7 @@ class Loan extends CommonObject $this->nbterm = $obj->nbterm; $this->rate = $obj->rate; $this->note = $obj->note; + $this->paid = $obj->paid; return 1; } @@ -220,7 +224,7 @@ class Loan extends CommonObject // Delete payments if (! $error) { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."paiementcharge where fk_charge='".$this->id."'"; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."payment_loan where fk_loan='".$this->id."'"; dol_syslog(get_class($this)."::delete", LOG_DEBUG); $resql=$this->db->query($sql); if (! $resql) @@ -232,7 +236,7 @@ class Loan extends CommonObject if (! $error) { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."chargesociales where rowid='".$this->id."'"; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."loan where rowid='".$this->id."'"; dol_syslog(get_class($this)."::delete", LOG_DEBUG); $resql=$this->db->query($sql); if (! $resql) @@ -266,10 +270,10 @@ class Loan extends CommonObject { $this->db->begin(); - $sql = "UPDATE ".MAIN_DB_PREFIX."chargesociales"; - $sql.= " SET libelle='".$this->db->escape($this->lib)."',"; - $sql.= " date_ech='".$this->db->idate($this->date_ech)."',"; - $sql.= " periode='".$this->db->idate($this->periode)."'"; + $sql = "UPDATE ".MAIN_DB_PREFIX."loan"; + $sql.= " SET label='".$this->db->escape($this->label)."',"; + $sql.= " datestart='".$this->db->idate($this->datestart)."',"; + $sql.= " dateend='".$this->db->idate($this->dateend)."'"; $sql.= " WHERE rowid=".$this->id; dol_syslog(get_class($this)."::update", LOG_DEBUG); @@ -288,57 +292,15 @@ class Loan extends CommonObject } /** - * Enter description here ... - * - * @param int $year Year - * @return number - */ - function solde($year = 0) - { - global $conf; - - $sql = "SELECT SUM(f.amount) as amount"; - $sql.= " FROM ".MAIN_DB_PREFIX."chargesociales as f"; - $sql.= " WHERE f.entity = ".$conf->entity; - $sql.= " AND paye = 0"; - - if ($year) { - $sql .= " AND f.datev >= '$y-01-01' AND f.datev <= '$y-12-31' "; - } - - $result = $this->db->query($sql); - if ($result) - { - if ($this->db->num_rows($result)) - { - $obj = $this->db->fetch_object($result); - return $obj->amount; - } - else - { - return 0; - } - - $this->db->free($result); - - } - else - { - print $this->db->error(); - return -1; - } - } - - /** - * Tag social contribution as payed completely + * Tag loan as payed completely * * @param User $user Object user making change * @return int <0 if KO, >0 if OK */ function set_paid($user) { - $sql = "UPDATE ".MAIN_DB_PREFIX."chargesociales SET"; - $sql.= " paye = 1"; + $sql = "UPDATE ".MAIN_DB_PREFIX."loan SET"; + $sql.= " paid = 1"; $sql.= " WHERE rowid = ".$this->id; $return = $this->db->query($sql); if ($return) return 1; @@ -346,22 +308,22 @@ class Loan extends CommonObject } /** - * Retourne le libelle du statut d'une charge (impaye, payee) + * Return label of loan status (unpaid, paid) * - * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long + * @param int $mode 0=label, 1=short label, 2=Picto + Short label, 3=Picto, 4=Picto + Label * @param double $alreadypaid 0=No payment already done, >0=Some payments were already done (we recommand to put here amount payed if you have it, 1 otherwise) * @return string Label */ function getLibStatut($mode=0,$alreadypaid=-1) { - return $this->LibStatut($this->paye,$mode,$alreadypaid); + return $this->LibStatut($this->paid,$mode,$alreadypaid); } /** * Return label for given status * * @param int $statut Id statut - * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto + * @param int $mode 0=Label, 1=Short label, 2=Picto + Short label, 3=Picto, 4=Picto + Label, 5=Short label + Picto * @param double $alreadypaid 0=No payment already done, >0=Some payments were already done (we recommand to put here amount payed if you have it, 1 otherwise) * @return string Label */ @@ -425,7 +387,7 @@ class Loan extends CommonObject if (empty($this->ref)) $this->ref=$this->label; - $link = ''; + $link = ''; $linkend=''; if ($withpicto) $result.=($link.img_object($langs->trans("ShowLoan").': '.$this->label,'bill').$linkend.' '); diff --git a/htdocs/compta/loan/class/paymentloan.class.php b/htdocs/compta/loan/class/paymentloan.class.php index 24d59fb417b..c0cdb3cdb85 100644 --- a/htdocs/compta/loan/class/paymentloan.class.php +++ b/htdocs/compta/loan/class/paymentloan.class.php @@ -1,6 +1,5 @@ - * Copyright (C) 2004-2007 Laurent Destailleur +/* Copyright (C) 2014 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,9 +16,9 @@ */ /** - * \file htdocs/compta/sociales/class/paymentsocialcontribution.class.php + * \file htdocs/compta/loan/class/paymentloan.class.php * \ingroup facture - * \brief File of class to manage payment of social contributions + * \brief File of class to manage payment of loans */ require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; @@ -36,7 +35,7 @@ class PaymentLoan extends CommonObject var $id; var $ref; - var $fk_charge; + var $fk_loan; var $datec=''; var $tms=''; var $datep=''; @@ -74,18 +73,18 @@ class PaymentLoan extends CommonObject $now=dol_now(); - // Validate parametres - if (! $this->datepaye) + // Validate parameters + if (! $this->datepaid) { $this->error='ErrorBadValueForParameter'; return -1; } // Clean parameters - if (isset($this->fk_charge)) $this->fk_charge=trim($this->fk_charge); + if (isset($this->fk_loan)) $this->fk_loan=trim($this->fk_loan); if (isset($this->amount)) $this->amount=trim($this->amount); - if (isset($this->fk_typepaiement)) $this->fk_typepaiement=trim($this->fk_typepaiement); - if (isset($this->num_paiement)) $this->num_paiement=trim($this->num_paiement); + if (isset($this->fk_typepayment)) $this->fk_typepaiement=trim($this->fk_typepayment); + if (isset($this->num_payment)) $this->num_payment=trim($this->num_payment); if (isset($this->note)) $this->note=trim($this->note); if (isset($this->fk_bank)) $this->fk_bank=trim($this->fk_bank); if (isset($this->fk_user_creat)) $this->fk_user_creat=trim($this->fk_user_creat); @@ -101,26 +100,26 @@ class PaymentLoan extends CommonObject $totalamount = price2num($totalamount); // Check parameters - if ($totalamount == 0) return -1; // On accepte les montants negatifs pour les rejets de prelevement mais pas null + if ($totalamount == 0) return -1; // Negative amounts are accepted for reject prelevement but not null $this->db->begin(); if ($totalamount != 0) { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."paiementcharge (fk_charge, datec, datep, amount,"; - $sql.= " fk_typepaiement, num_paiement, note, fk_user_creat, fk_bank)"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."payment_loan (fk_loan, datec, datep, amount,"; + $sql.= " fk_typepayment, num_payment, note, fk_user_creat, fk_bank)"; $sql.= " VALUES ($this->chid, '".$this->db->idate($now)."',"; - $sql.= " '".$this->db->idate($this->datepaye)."',"; + $sql.= " '".$this->db->idate($this->datepaid)."',"; $sql.= " ".$totalamount.","; - $sql.= " ".$this->paiementtype.", '".$this->db->escape($this->num_paiement)."', '".$this->db->escape($this->note)."', ".$user->id.","; + $sql.= " ".$this->paymenttype.", '".$this->db->escape($this->num_payment)."', '".$this->db->escape($this->note)."', ".$user->id.","; $sql.= " 0)"; 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."paiementcharge"); + $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."payment_loan"); } else { @@ -155,22 +154,22 @@ class PaymentLoan extends CommonObject global $langs; $sql = "SELECT"; $sql.= " t.rowid,"; - $sql.= " t.fk_charge,"; + $sql.= " t.fk_loan,"; $sql.= " t.datec,"; $sql.= " t.tms,"; $sql.= " t.datep,"; $sql.= " t.amount,"; - $sql.= " t.fk_typepaiement,"; - $sql.= " t.num_paiement,"; + $sql.= " t.fk_typepayment,"; + $sql.= " t.num_payment,"; $sql.= " t.note,"; $sql.= " t.fk_bank,"; $sql.= " t.fk_user_creat,"; $sql.= " t.fk_user_modif,"; $sql.= " pt.code as type_code, pt.libelle as type_libelle,"; $sql.= ' b.fk_account'; - $sql.= " FROM (".MAIN_DB_PREFIX."c_paiement as pt, ".MAIN_DB_PREFIX."paiementcharge as t)"; + $sql.= " FROM (".MAIN_DB_PREFIX."c_paiement as pt, ".MAIN_DB_PREFIX."payment_loan as t)"; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank as b ON t.fk_bank = b.rowid'; - $sql.= " WHERE t.rowid = ".$id." AND t.fk_typepaiement = pt.id"; + $sql.= " WHERE t.rowid = ".$id." AND t.fk_typepayment = pt.id"; dol_syslog(get_class($this)."::fetch", LOG_DEBUG); $resql=$this->db->query($sql); @@ -183,13 +182,13 @@ class PaymentLoan extends CommonObject $this->id = $obj->rowid; $this->ref = $obj->rowid; - $this->fk_charge = $obj->fk_charge; + $this->fk_loan = $obj->fk_loan; $this->datec = $this->db->jdate($obj->datec); $this->tms = $this->db->jdate($obj->tms); $this->datep = $this->db->jdate($obj->datep); $this->amount = $obj->amount; - $this->fk_typepaiement = $obj->fk_typepaiement; - $this->num_paiement = $obj->num_paiement; + $this->fk_typepayment = $obj->fk_typepayment; + $this->num_payment = $obj->num_payment; $this->note = $obj->note; $this->fk_bank = $obj->fk_bank; $this->fk_user_creat = $obj->fk_user_creat; @@ -227,36 +226,33 @@ class PaymentLoan extends CommonObject // Clean parameters - if (isset($this->fk_charge)) $this->fk_charge=trim($this->fk_charge); + if (isset($this->fk_loan)) $this->fk_loan=trim($this->fk_loan); if (isset($this->amount)) $this->amount=trim($this->amount); - if (isset($this->fk_typepaiement)) $this->fk_typepaiement=trim($this->fk_typepaiement); - if (isset($this->num_paiement)) $this->num_paiement=trim($this->num_paiement); + if (isset($this->fk_typepayment)) $this->fk_typepayment=trim($this->fk_typepayment); + if (isset($this->num_payment)) $this->num_payment=trim($this->num_payment); if (isset($this->note)) $this->note=trim($this->note); if (isset($this->fk_bank)) $this->fk_bank=trim($this->fk_bank); if (isset($this->fk_user_creat)) $this->fk_user_creat=trim($this->fk_user_creat); if (isset($this->fk_user_modif)) $this->fk_user_modif=trim($this->fk_user_modif); - - // Check parameters // Put here code to add control on parameters values // Update request - $sql = "UPDATE ".MAIN_DB_PREFIX."paiementcharge SET"; + $sql = "UPDATE ".MAIN_DB_PREFIX."payment_loan SET"; - $sql.= " fk_charge=".(isset($this->fk_charge)?$this->fk_charge:"null").","; + $sql.= " fk_loan=".(isset($this->fk_loan)?$this->fk_loan:"null").","; $sql.= " datec=".(dol_strlen($this->datec)!=0 ? "'".$this->db->idate($this->datec)."'" : 'null').","; $sql.= " tms=".(dol_strlen($this->tms)!=0 ? "'".$this->db->idate($this->tms)."'" : 'null').","; $sql.= " datep=".(dol_strlen($this->datep)!=0 ? "'".$this->db->idate($this->datep)."'" : 'null').","; $sql.= " amount=".(isset($this->amount)?$this->amount:"null").","; - $sql.= " fk_typepaiement=".(isset($this->fk_typepaiement)?$this->fk_typepaiement:"null").","; - $sql.= " num_paiement=".(isset($this->num_paiement)?"'".$this->db->escape($this->num_paiement)."'":"null").","; + $sql.= " fk_typepayment=".(isset($this->fk_typepayment)?$this->fk_typepayment:"null").","; + $sql.= " num_payment=".(isset($this->num_payment)?"'".$this->db->escape($this->num_payment)."'":"null").","; $sql.= " note=".(isset($this->note)?"'".$this->db->escape($this->note)."'":"null").","; $sql.= " fk_bank=".(isset($this->fk_bank)?$this->fk_bank:"null").","; $sql.= " fk_user_creat=".(isset($this->fk_user_creat)?$this->fk_user_creat:"null").","; $sql.= " fk_user_modif=".(isset($this->fk_user_modif)?$this->fk_user_modif:"null").""; - $sql.= " WHERE rowid=".$this->id; $this->db->begin(); @@ -317,7 +313,7 @@ class PaymentLoan extends CommonObject if (! $error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_url"; - $sql.= " WHERE type='payment_sc' AND url_id=".$this->id; + $sql.= " WHERE type='payment_loan' AND url_id=".$this->id; dol_syslog(get_class($this)."::delete", LOG_DEBUG); $resql = $this->db->query($sql); @@ -326,7 +322,7 @@ class PaymentLoan extends CommonObject if (! $error) { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."paiementcharge"; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."payment_loan"; $sql.= " WHERE rowid=".$this->id; dol_syslog(get_class($this)."::delete", LOG_DEBUG); @@ -368,96 +364,12 @@ class PaymentLoan extends CommonObject } } - - - /** - * Load an object from its id and create a new one in database - * - * @param int $fromid Id of object to clone - * @return int New id of clone - */ - function createFromClone($fromid) - { - global $user,$langs; - - $error=0; - - $object=new PaymentSocialContribution($this->db); - - $this->db->begin(); - - // Load source object - $object->fetch($fromid); - $object->id=0; - $object->statut=0; - - // Clear fields - // ... - - // Create clone - $result=$object->create($user); - - // Other options - if ($result < 0) - { - $this->error=$object->error; - $error++; - } - - if (! $error) - { - - - - } - - // End - if (! $error) - { - $this->db->commit(); - return $object->id; - } - else - { - $this->db->rollback(); - return -1; - } - } - - - /** - * Initialise an instance with random values. - * Used to build previews or test instances. - * id must be 0 if object instance is a specimen. - * - * @return void - */ - function initAsSpecimen() - { - $this->id=0; - - $this->fk_charge=''; - $this->datec=''; - $this->tms=''; - $this->datep=''; - $this->amount=''; - $this->fk_typepaiement=''; - $this->num_paiement=''; - $this->note=''; - $this->fk_bank=''; - $this->fk_user_creat=''; - $this->fk_user_modif=''; - - - } - - /** * Add record into bank for payment with links between this bank record and invoices of payment. * All payment properties must have been set first like after a call to create(). * * @param User $user Object of user making payment - * @param string $mode 'payment_sc' + * @param string $mode 'payment_loan' * @param string $label Label to use in bank record * @param int $accountid Id of bank account to do link with * @param string $emetteur_nom Name of transmitter @@ -482,11 +394,11 @@ class PaymentLoan extends CommonObject // Insert payment into llx_bank $bank_line_id = $acc->addline( - $this->datepaye, - $this->paiementtype, // Payment mode id or code ("CHQ or VIR for example") + $this->datepaid, + $this->paymenttype, // Payment mode id or code ("CHQ or VIR for example") $label, $total, - $this->num_paiement, + $this->num_payment, '', $user, $emetteur_nom, @@ -506,10 +418,10 @@ class PaymentLoan extends CommonObject // Add link 'payment', 'payment_supplier', 'payment_sc' in bank_url between payment and bank transaction $url=''; - if ($mode == 'payment_sc') $url=DOL_URL_ROOT.'/compta/payment_sc/fiche.php?id='; + if ($mode == 'payment_loan') $url=DOL_URL_ROOT.'/compta/loan/payment/card.php?id='; if ($url) { - $result=$acc->add_url_line($bank_line_id, $this->id, $url, '(paiement)', $mode); + $result=$acc->add_url_line($bank_line_id, $this->id, $url, '(payment)', $mode); if ($result <= 0) { $error++; @@ -578,7 +490,7 @@ class PaymentLoan extends CommonObject * @param int $maxlen Longueur max libelle * @return string Chaine avec URL */ - function getNomUrl($withpicto=0,$maxlen=0) + function getNameUrl($withpicto=0,$maxlen=0) { global $langs; @@ -588,7 +500,7 @@ class PaymentLoan extends CommonObject if (!empty($this->id)) { - $lien = ''; + $lien = ''; $lienfin=''; if ($withpicto) $result.=($lien.img_object($langs->trans("ShowPayment").': '.$this->ref,'payment').$lienfin.' '); diff --git a/htdocs/compta/loan/index.php b/htdocs/compta/loan/index.php index 16b9a10c054..8bef47ff66e 100644 --- a/htdocs/compta/loan/index.php +++ b/htdocs/compta/loan/index.php @@ -41,17 +41,17 @@ if ($page == -1) { $page = 0; } $offset = $conf->liste_limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -$limit = $conf->liste_limit; if (! $sortfield) $sortfield="l.rowid"; if (! $sortorder) $sortorder="DESC"; +$limit = $conf->liste_limit; +$search_label=GETPOST('search_label','alpha'); $filtre=$_GET["filtre"]; /* * View */ -$form = new Form($db); $loan = new Loan($db); llxHeader(); @@ -68,34 +68,29 @@ if ($filtre) { $filtre=str_replace(":","=",$filtre); $sql .= " AND ".$filtre; } - $sql.= $db->order($sortfield,$sortorder); -$sql.= $db->plimit($limit+1,$offset); +$sql.= $db->plimit($limit + 1, $offset); +//print $sql; $resql=$db->query($sql); - if ($resql) { $num = $db->num_rows($resql); - $i = 0; - $var=true; - $param=''; - print_fiche_titre($langs->trans("Loans")); - - print ''; - print ""; - - print ""; + $i = 0; + print ''."\n"; + print '
'; + print ''; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"id","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"l.label","",$param,'align="left"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Capital"),$_SERVER["PHP_SELF"],"l.capital","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateStart"),$_SERVER["PHP_SELF"],"l.datestart","",$param,'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"l.paid","",$param,'align="right"',$sortfield,$sortorder); - print "\n"; + print "\n"; + // Filters lines print ''; print ''; print ''; @@ -103,9 +98,9 @@ if ($resql) print ''; print ''; - print "\n"; - + print "\n"; + + $var=true; while ($i < min($num,$limit)) { $obj = $db->fetch_object($resql); @@ -115,9 +110,9 @@ if ($resql) // Ref print ''; @@ -132,18 +127,19 @@ if ($resql) print ''; - print ''; + print "\n"; + $i++; } - print '
  '; print ''; - print '
'; - $loan->id=$obj->id; - $loan->label=$obj->id; - $loan->ref=$obj->id; + $loan->id=$obj->rowid; + $loan->label=$obj->rowid; + $loan->ref=$obj->rowid; print $loan->getNameUrl(1,'20'); print ''.$loan->LibStatut($obj->paid,5,$obj->alreadypayed).'
'; - print ''; + print ""; + print "\n"; + $db->free($resql); } else { - dol_print_error($db); + dol_print_error($db); } - $db->close(); llxFooter(); diff --git a/htdocs/compta/loan/payment.php b/htdocs/compta/loan/payment.php new file mode 100644 index 00000000000..a513ba212cd --- /dev/null +++ b/htdocs/compta/loan/payment.php @@ -0,0 +1,331 @@ + + * + * 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/compta/loan/payment.php + * \ingroup Loan + * \brief Page to add payment of a loan + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/paymentloan.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; + +$langs->load("bills"); + +$chid=GETPOST("id"); +$action=GETPOST('action'); +$amounts = array(); + +// Security check +$socid=0; +if ($user->societe_id > 0) +{ + $socid = $user->societe_id; +} + +/* + * Actions + */ + +if ($action == 'add_payment') +{ + $error=0; + + if ($_POST["cancel"]) + { + $loc = DOL_URL_ROOT.'/compta/loan/card.php?id='.$chid; + header("Location: ".$loc); + exit; + } + + $datepaid = dol_mktime(12, 0, 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]); + + if (! $_POST["paymenttype"] > 0) + { + $mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("PaymentMode")); + $error++; + } + if ($datepaid == '') + { + $mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("Date")); + $error++; + } + if (! empty($conf->banque->enabled) && ! $_POST["accountid"] > 0) + { + $mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("AccountToCredit")); + $error++; + } + + if (! $error) + { + $paymentid = 0; + + // Read possible payments + foreach ($_POST as $key => $value) + { + if (substr($key,0,7) == 'amount_') + { + $other_chid = substr($key,7); + $amounts[$other_chid] = price2num($_POST[$key]); + } + } + + if (count($amounts) <= 0) + { + $error++; + $errmsg='ErrorNoPaymentDefined'; + } + + if (! $error) + { + $db->begin(); + + // Create a line of payments + $paiement = new PaymentSocialContribution($db); + $paiement->chid = $chid; + $paiement->datepaid = $datepaid; + $paiement->amounts = $amounts; // Tableau de montant + $paiement->paymenttype = $_POST["paymenttype"]; + $paiement->num_payment = $_POST["num_payment"]; + $paiement->note = $_POST["note"]; + + if (! $error) + { + $paymentid = $payment->create($user); + if ($paymentid < 0) + { + $errmsg=$paiement->error; + $error++; + } + } + + if (! $error) + { + $result=$paiement->addPaymentToBank($user,'payment_sc','(SocialContributionPayment)',$_POST['accountid'],'',''); + if (! $result > 0) + { + $errmsg=$paiement->error; + $error++; + } + } + + if (! $error) + { + $db->commit(); + $loc = DOL_URL_ROOT.'/compta/loan/card.php?id='.$chid; + header('Location: '.$loc); + exit; + } + else + { + $db->rollback(); + } + } + } + + $_GET["action"]='create'; +} + + +/* + * View + */ + +llxHeader(); + +$form=new Form($db); + + +// Form to create loan's payment +if ($_GET["action"] == 'create') +{ + + $loan = new Loan($db); + $loan->fetch($chid); + + $total = $loan->capital; + + print_fiche_titre($langs->trans("DoPayment")); + print "
\n"; + + if ($mesg) + { + print "
$mesg
"; + } + + print '
'; + print ''; + print ''; + print ''; + print ''; + + print ''; + + print ""; + + print ''; + print '\n"; + print '\n"; + print ''; + + $sql = "SELECT sum(p.amount) as total"; + $sql.= " FROM ".MAIN_DB_PREFIX."payment_loan as p"; + $sql.= " WHERE p.fk_loan = ".$chid; + $resql = $db->query($sql); + if ($resql) + { + $obj=$db->fetch_object($resql); + $sumpaid = $obj->total; + $db->free(); + } + print ''; + print ''; + print ''; + + print '
".$langs->trans("Loan")."
'.$langs->trans("Ref").''.$chid.'
'.$langs->trans("Period")."".dol_print_date($loan->datestart,'day')."
'.$langs->trans("Label").''.$loan->label."
'.$langs->trans("Amount")."".price($loan->capital,0,$outputlangs,1,-1,-1,$conf->currency).'
'.$langs->trans("AlreadyPaid").''.price($sumpaid,0,$outputlangs,1,-1,-1,$conf->currency).'
'.$langs->trans("RemainderToPay").''.price($total-$sumpaid,0,$outputlangs,1,-1,-1,$conf->currency).'
'; + + print '
'; + + print ''; + print ''; + print "'; + print ''; + + print '"; + print ''; + + print '\n"; + print ''; + + print ''; + print ''; + print ''; + + // Number + print ''; + print ''."\n"; + + print ''; + print ''; + print ''; + print ''; + + print '
".$langs->trans("Payment").'
'.$langs->trans("Date").''; + $datepaid = dol_mktime(12, 0, 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]); + $datepayment = empty($conf->global->MAIN_AUTOFILL_DATE)?(empty($_POST["remonth"])?-1:$datepaye):0; + $form->select_date($datepayment,'','','','',"add_payment",1,1); + print "
'.$langs->trans("PaymentMode").''; + $form->select_types_paiements(isset($_POST["paymenttype"])?$_POST["paymenttype"]:$loan->paymenttype, "paymenttype"); + print "
'.$langs->trans('AccountToDebit').''; + $form->select_comptes(isset($_POST["accountid"])?$_POST["accountid"]:$charge->accountid, "accountid", 0, '',1); // Show opend bank account list + print '
'.$langs->trans('Number'); + print ' ('.$langs->trans("ChequeOrTransferNumber").')'; + print '
'.$langs->trans("Comments").'
'; + + print '
'; + + /* + * Autres charges impayees + */ + $num = 1; + $i = 0; + + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + + $var=True; + $total=0; + $totalrecu=0; + + while ($i < $num) + { + $objp = $loan; + + $var=!$var; + + print ""; + + if ($objp->datestart > 0) + { + print "\n"; + } + else + { + print "\n"; + } + + print '"; + + print '"; + + print '"; + + print '"; + + print "\n"; + $total+=$objp->total; + $total_ttc+=$objp->total_ttc; + $totalrecu+=$objp->am; + $i++; + } + if ($i > 1) + { + // Print total + print ""; + print ''; + print ""; + print ""; + print ""; + print ''; + print "\n"; + } + + print "
'.$langs->trans("DateDue").''.$langs->trans("Amount").''.$langs->trans("AlreadyPaid").''.$langs->trans("RemainderToPay").''.$langs->trans("Amount").'
".dol_print_date($objp->datestart,'day')."!!!'.price($objp->capital)."'.price($sumpaid)."'.price($objp->capital - $sumpaid)."'; + if ($sumpaid < $objp->capital) + { + $namef = "amount_".$objp->id; + print ''; + } + else + { + print '-'; + } + print "
'.$langs->trans("Total").':".price($total_ttc)."".price($totalrecu)."".price($total_ttc - $totalrecu)." 
"; + + print '
'; + + print ''; + print '   '; + print ''; + + print '
'; + + print "
\n"; +} + + +$db->close(); + +llxFooter(); diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql index 9e109cd311f..5bffbc0e5be 100644 --- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql +++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql @@ -1083,3 +1083,45 @@ CREATE TABLE llx_usergroup_extrafields ( ) ENGINE=innodb; ALTER TABLE llx_usergroup_extrafields ADD INDEX idx_usergroup_extrafields (fk_object); + +-- Loan +create table llx_loan +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + entity integer DEFAULT 1 NOT NULL, + datec datetime, + tms timestamp, + label varchar(80) NOT NULL, + fk_bank integer, + capital real default 0 NOT NULL, + datestart date, + dateend date, + nbterm real, + rate double NOT NULL, + note text, + capital_position real default 0, + date_position date, + paid smallint default 0 NOT NULL, + accountancy_account_capital varchar(32), + accountancy_account_insurance varchar(32), + accountancy_account_interest varchar(32), + fk_user_author integer DEFAULT NULL, + fk_user_modif integer DEFAULT NULL, + active tinyint DEFAULT 1 NOT NULL +)ENGINE=innodb; + +create table llx_payment_loan +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + fk_loan integer, + datec datetime, + tms timestamp, + datep datetime, + amount real DEFAULT 0, + fk_typepayment integer NOT NULL, + num_payment varchar(50), + note text, + fk_bank integer NOT NULL, + fk_user_creat integer, + fk_user_modif integer +)ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_loan.sql b/htdocs/install/mysql/tables/llx_loan.sql index 2ca026ba417..bc152099a04 100644 --- a/htdocs/install/mysql/tables/llx_loan.sql +++ b/htdocs/install/mysql/tables/llx_loan.sql @@ -37,6 +37,8 @@ create table llx_loan capital_position real default 0, -- If not a new loan, just have the position of capital date_position date, + paid smallint default 0 NOT NULL, + accountancy_account_capital varchar(32), accountancy_account_insurance varchar(32), accountancy_account_interest varchar(32), From 3627f157d2d208882366ddd7615ed5eb0b2f525c Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 1 Oct 2014 07:16:29 +0200 Subject: [PATCH 008/429] Add langs & debug --- htdocs/compta/bank/account.php | 24 ++ htdocs/compta/loan/card.php | 25 +- htdocs/compta/loan/class/loan.class.php | 14 +- .../compta/loan/class/paymentloan.class.php | 62 ++-- htdocs/compta/loan/document.php | 4 +- htdocs/compta/loan/index.php | 4 +- htdocs/compta/loan/payment/card.php | 308 ++++++++++++++++++ htdocs/compta/loan/payment/index.html | 0 htdocs/compta/loan/{ => payment}/payment.php | 32 +- htdocs/langs/en_US/admin.lang | 6 + htdocs/langs/en_US/loan.lang | 15 + htdocs/langs/fr_FR/admin.lang | 6 + htdocs/langs/fr_FR/loan.lang | 15 + 13 files changed, 442 insertions(+), 73 deletions(-) create mode 100644 htdocs/compta/loan/payment/card.php create mode 100644 htdocs/compta/loan/payment/index.html rename htdocs/compta/loan/{ => payment}/payment.php (89%) create mode 100644 htdocs/langs/en_US/loan.lang create mode 100644 htdocs/langs/fr_FR/loan.lang diff --git a/htdocs/compta/bank/account.php b/htdocs/compta/bank/account.php index 14b586c6d80..57329e9e93b 100644 --- a/htdocs/compta/bank/account.php +++ b/htdocs/compta/bank/account.php @@ -37,6 +37,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php' require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/salaries/class/paymentsalary.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/paiementfourn.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; @@ -44,6 +45,7 @@ $langs->load("banks"); $langs->load("categories"); $langs->load("bills"); $langs->load("companies"); +$langs->load("loan"); $id = (GETPOST('id','int') ? GETPOST('id','int') : GETPOST('account','int')); $ref = GETPOST('ref','alpha'); @@ -148,6 +150,7 @@ llxHeader(); $societestatic=new Societe($db); $userstatic=new User($db); $chargestatic=new ChargeSociales($db); +$loanstatic=new Loan($db); $memberstatic=new Adherent($db); $paymentstatic=new Paiement($db); $paymentsupplierstatic=new PaiementFourn($db); @@ -606,6 +609,12 @@ if ($id > 0 || ! empty($ref)) $paymentsalstatic->ref=$links[$key]['url_id']; print ' '.$paymentsalstatic->getNomUrl(2); } + elseif ($links[$key]['type']=='payment_loan') + { + print ''; + print ' '.img_object($langs->trans('ShowPayment'),'payment').' '; + print ''; + } 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. @@ -705,6 +714,21 @@ if ($id > 0 || ! empty($ref)) $chargestatic->ref=$chargestatic->lib; print $chargestatic->getNomUrl(1,16); } + else if ($links[$key]['type']=='loan') + { + $loanstatic->id=$links[$key]['url_id']; + if (preg_match('/^\((.*)\)$/i',$links[$key]['label'],$reg)) + { + if ($reg[1]=='loan') $reg[1]='Loan'; + $loanstatic->label=$langs->trans($reg[1]); + } + else + { + $loanstatic->label=$links[$key]['label']; + } + $loanstatic->ref=$loanstatic->label; + print $loanstatic->getNameUrl(1,16); + } else if ($links[$key]['type']=='member') { $memberstatic->id=$links[$key]['url_id']; diff --git a/htdocs/compta/loan/card.php b/htdocs/compta/loan/card.php index b3e31324cb0..d2dc5362915 100644 --- a/htdocs/compta/loan/card.php +++ b/htdocs/compta/loan/card.php @@ -116,16 +116,16 @@ if ($action == 'add' && $user->rights->loan->write) if ($action == 'update' && ! $_POST["cancel"] && $user->rights->loan->write) { - $dateech=dol_mktime($_POST["echhour"],$_POST["echmin"],$_POST["echsec"],$_POST["echmonth"],$_POST["echday"],$_POST["echyear"]); - $dateperiod=dol_mktime($_POST["periodhour"],$_POST["periodmin"],$_POST["periodsec"],$_POST["periodmonth"],$_POST["periodday"],$_POST["periodyear"]); - if (! $dateech) + $datestart=dol_mktime(12,0,0, $_POST["startmonth"], $_POST["startday"], $_POST["startyear"]); + $dateend=dol_mktime(12,0,0, $_POST["endmonth"], $_POST["endday"], $_POST["endyear"]); + if (! $datestart) { - setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateDue")), 'errors'); + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateStart")), 'errors'); $action = 'edit'; } - elseif (! $dateperiod) + elseif (! $dateend) { - setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Period")), 'errors'); + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateEnd")), 'errors'); $action = 'edit'; } else @@ -298,7 +298,7 @@ if ($id > 0) print ''; // Ref - print '"; @@ -360,10 +360,9 @@ if ($id > 0) print ''; print '   '; print ''; - print '\n"; + print ''; + print ''; + } dol_fiche_end(); @@ -450,13 +449,13 @@ if ($id > 0) // Emit payment if ($object->paid == 0 && ((price2num($object->capital) > 0 && round($staytopay) < 0) || (price2num($object->capital) > 0 && round($staytopay) > 0)) && $user->rights->loan->write) { - print "id&action=create\">".$langs->trans("DoPayment").""; + print "id&action=create\">".$langs->trans("DoPayment").""; } // Classify 'paid' if ($object->paid == 0 && round($staytopay) <=0 && $user->rights->loan->write) { - print "rowid&action=paid\">".$langs->trans("ClassifyPaid").""; + print "id&action=paid\">".$langs->trans("ClassifyPaid").""; } // Delete diff --git a/htdocs/compta/loan/class/loan.class.php b/htdocs/compta/loan/class/loan.class.php index a0cbf9a8224..07b842b708e 100644 --- a/htdocs/compta/loan/class/loan.class.php +++ b/htdocs/compta/loan/class/loan.class.php @@ -87,7 +87,7 @@ class Loan extends CommonObject $obj = $this->db->fetch_object($resql); $this->id = $obj->rowid; - $this->ref = $obj->rowid; + $this->ref = $obj->rowid; $this->datestart = $this->db->jdate($obj->datestart); $this->dateend = $this->db->jdate($obj->dateend); $this->label = $obj->label; @@ -114,7 +114,7 @@ class Loan extends CommonObject /** - * Create a social contribution into database + * Create a loan into database * * @param User $user User making creation * @return int <0 if KO, id if OK @@ -201,10 +201,10 @@ class Loan extends CommonObject $this->db->begin(); - // Get bank transaction lines for this social contributions + // Get bank transaction lines for this loan include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $account=new Account($this->db); - $lines_url=$account->get_url('',$this->id,'sc'); + $lines_url=$account->get_url('',$this->id,'loan'); // Delete bank urls foreach ($lines_url as $line_url) @@ -385,14 +385,12 @@ class Loan extends CommonObject $result=''; - if (empty($this->ref)) $this->ref=$this->label; - - $link = ''; + $link = ''; $linkend=''; if ($withpicto) $result.=($link.img_object($langs->trans("ShowLoan").': '.$this->label,'bill').$linkend.' '); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$link.($maxlen?dol_trunc($this->ref,$maxlen):$this->ref).$linkend; + if ($withpicto != 2) $result.=$link.($maxlen?dol_trunc($this->label,$maxlen):$this->label).$linkend; return $result; } diff --git a/htdocs/compta/loan/class/paymentloan.class.php b/htdocs/compta/loan/class/paymentloan.class.php index c0cdb3cdb85..0a558fc9bf4 100644 --- a/htdocs/compta/loan/class/paymentloan.class.php +++ b/htdocs/compta/loan/class/paymentloan.class.php @@ -24,8 +24,8 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; -/** \class PaymentSocialContribution - * \brief Class to manage payments of social contributions +/** \class PaymentLoan + * \brief Class to manage payments of loans */ class PaymentLoan extends CommonObject { @@ -41,8 +41,8 @@ class PaymentLoan extends CommonObject var $datep=''; var $amount; // Total amount of payment var $amounts=array(); // Array of amounts - var $fk_typepaiement; - var $num_paiement; + var $fk_typepayment; + var $num_payment; var $note; var $fk_bank; var $fk_user_creat; @@ -59,7 +59,7 @@ class PaymentLoan extends CommonObject } /** - * Create payment of social contribution into database. + * Create payment of loan into database. * Use this->amounts to have list of lines for the payment * * @param User $user User making payment @@ -81,14 +81,14 @@ class PaymentLoan extends CommonObject } // Clean parameters - if (isset($this->fk_loan)) $this->fk_loan=trim($this->fk_loan); - if (isset($this->amount)) $this->amount=trim($this->amount); - if (isset($this->fk_typepayment)) $this->fk_typepaiement=trim($this->fk_typepayment); - if (isset($this->num_payment)) $this->num_payment=trim($this->num_payment); - if (isset($this->note)) $this->note=trim($this->note); - if (isset($this->fk_bank)) $this->fk_bank=trim($this->fk_bank); - if (isset($this->fk_user_creat)) $this->fk_user_creat=trim($this->fk_user_creat); - if (isset($this->fk_user_modif)) $this->fk_user_modif=trim($this->fk_user_modif); + if (isset($this->fk_loan)) $this->fk_loan = trim($this->fk_loan); + if (isset($this->amount)) $this->amount = trim($this->amount); + if (isset($this->fk_typepayment)) $this->fk_typepayment = trim($this->fk_typepayment); + if (isset($this->num_payment)) $this->num_payment = trim($this->num_payment); + if (isset($this->note)) $this->note = trim($this->note); + if (isset($this->fk_bank)) $this->fk_bank = trim($this->fk_bank); + if (isset($this->fk_user_creat)) $this->fk_user_creat = trim($this->fk_user_creat); + if (isset($this->fk_user_modif)) $this->fk_user_modif = trim($this->fk_user_modif); $totalamount = 0; foreach ($this->amounts as $key => $value) // How payment is dispatch @@ -390,7 +390,7 @@ class PaymentLoan extends CommonObject $acc->fetch($accountid); $total=$this->total; - if ($mode == 'payment_sc') $total=-$total; + if ($mode == 'payment_loan') $total=-$total; // Insert payment into llx_bank $bank_line_id = $acc->addline( @@ -405,8 +405,8 @@ class PaymentLoan extends CommonObject $emetteur_banque ); - // Mise a jour fk_bank dans llx_paiement. - // On connait ainsi le paiement qui a genere l'ecriture bancaire + // Update fk_bank into llx_paiement. + // We know the payment who generated the account write if ($bank_line_id > 0) { $result=$this->update_fk_bank($bank_line_id); @@ -416,7 +416,7 @@ class PaymentLoan extends CommonObject dol_print_error($this->db); } - // Add link 'payment', 'payment_supplier', 'payment_sc' in bank_url between payment and bank transaction + // Add link 'payment_loan' in bank_url between payment and bank transaction $url=''; if ($mode == 'payment_loan') $url=DOL_URL_ROOT.'/compta/loan/payment/card.php?id='; if ($url) @@ -433,11 +433,11 @@ class PaymentLoan extends CommonObject $linkaddedforthirdparty=array(); foreach ($this->amounts as $key => $value) { - if ($mode == 'payment_sc') + if ($mode == 'payment_loan') { - $socialcontrib = new ChargeSociales($this->db); - $socialcontrib->fetch($key); - $result=$acc->add_url_line($bank_line_id, $socialcontrib->id, DOL_URL_ROOT.'/compta/charges.php?id=', $socialcontrib->type_libelle.(($socialcontrib->lib && $socialcontrib->lib!=$socialcontrib->type_libelle)?' ('.$socialcontrib->lib.')':''),'sc'); + $loan = new Loan($this->db); + $loan->fetch($key); + $result=$acc->add_url_line($bank_line_id, $loan->id, DOL_URL_ROOT.'/compta/loan/card.php?id=', $loan->type_libelle.(($loan->lib && $loan->lib!=$loan->type_libelle)?' ('.$loan->lib.')':''),'loan'); if ($result <= 0) dol_print_error($this->db); } } @@ -461,14 +461,14 @@ class PaymentLoan extends CommonObject /** - * Mise a jour du lien entre le paiement de charge et la ligne dans llx_bank generee + * Update link between loan's payment and the line generate in llx_bank * * @param int $id_bank Id if bank * @return int >0 if OK, <=0 if KO */ function update_fk_bank($id_bank) { - $sql = "UPDATE ".MAIN_DB_PREFIX."paiementcharge SET fk_bank = ".$id_bank." WHERE rowid = ".$this->id; + $sql = "UPDATE ".MAIN_DB_PREFIX."payment_loan SET fk_bank = ".$id_bank." WHERE rowid = ".$this->id; dol_syslog(get_class($this)."::update_fk_bank", LOG_DEBUG); $result = $this->db->query($sql); @@ -484,11 +484,11 @@ class PaymentLoan extends CommonObject } /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with eventually a picto) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul - * @param int $maxlen Longueur max libelle - * @return string Chaine avec URL + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=No picto + * @param int $maxlen Max length label + * @return string Chaine with URL */ function getNameUrl($withpicto=0,$maxlen=0) { @@ -500,12 +500,12 @@ class PaymentLoan extends CommonObject if (!empty($this->id)) { - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; - if ($withpicto) $result.=($lien.img_object($langs->trans("ShowPayment").': '.$this->ref,'payment').$lienfin.' '); + if ($withpicto) $result.=($link.img_object($langs->trans("ShowPayment").': '.$this->ref,'payment').$linkend.' '); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.($maxlen?dol_trunc($this->ref,$maxlen):$this->ref).$lienfin; + if ($withpicto != 2) $result.=$link.($maxlen?dol_trunc($this->ref,$maxlen):$this->ref).$linkend; } return $result; diff --git a/htdocs/compta/loan/document.php b/htdocs/compta/loan/document.php index 022340270ad..b263fa1687d 100644 --- a/htdocs/compta/loan/document.php +++ b/htdocs/compta/loan/document.php @@ -119,7 +119,7 @@ if ($object->id) print ''; // Date start - print ""; + print ""; print ""; // Date end - print ""; + print ""; print "'; diff --git a/htdocs/compta/loan/payment/card.php b/htdocs/compta/loan/payment/card.php new file mode 100644 index 00000000000..d08c5f8ce0f --- /dev/null +++ b/htdocs/compta/loan/payment/card.php @@ -0,0 +1,308 @@ + + * + * 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/compta/loan/payment/card.php + * \ingroup loan + * \brief Payment's card of loan + */ + +require '../../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/paymentloan.class.php'; +// require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; +// require_once DOL_DOCUMENT_ROOT.'/core/modules/facture/modules_facture.php'; +if (! empty($conf->banque->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; + +$langs->load('bills'); +$langs->load('banks'); +$langs->load('companies'); +$langs->load('loan'); + +// Security check +$id=GETPOST("id"); +$action=GETPOST("action"); +$confirm=GETPOST('confirm'); +if ($user->societe_id) $socid=$user->societe_id; +// TODO ajouter regle pour restreindre acces paiement +//$result = restrictedArea($user, 'facture', $id,''); + +$payment = new PaymentLoan($db); +if ($id > 0) +{ + $result=$payment->fetch($id); + if (! $result) dol_print_error($db,'Failed to get payment id '.$id); +} + + +/* + * Actions + */ + +// Delete payment +if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->loan->delete) +{ + $db->begin(); + + $result = $payment->delete($user); + if ($result > 0) + { + $db->commit(); + header("Location: ".DOL_URL_ROOT."/compta/loan/index.php"); + exit; + } + else + { + setEventMessage($payment->error, 'errors'); + $db->rollback(); + } +} + +// Create payment +if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->loan->write) +{ + $db->begin(); + + $result=$payment->valide(); + + if ($result > 0) + { + $db->commit(); + + $factures=array(); // TODO Get all id of invoices linked to this payment + foreach($factures as $id) + { + $fac = new Facture($db); + $fac->fetch($id); + + $outputlangs = $langs; + if (! empty($_REQUEST['lang_id'])) + { + $outputlangs = new Translate("",$conf); + $outputlangs->setDefaultLang($_REQUEST['lang_id']); + } + if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { + $fac->generateDocument($fac->modelpdf, $outputlangs); + } + } + + header('Location: card.php?id='.$payment->id); + exit; + } + else + { + setEventMessage($payment->error); + $db->rollback(); + } +} + + +/* + * View + */ + +llxHeader(); + +$loan = new Loan($db); + +$form = new Form($db); + +$h=0; + +$head[$h][0] = DOL_URL_ROOT.'/compta/loan/payment/card.php?id='.$_GET["id"]; +$head[$h][1] = $langs->trans("Card"); +$hselected = $h; +$h++; + +dol_fiche_head($head, $hselected, $langs->trans("PaymentLoan"), 0, 'payment'); + +/* + * Confirm deletion of the payment + */ +if ($action == 'delete') +{ + print $form->formconfirm('card.php?id='.$payment->id, $langs->trans("DeletePayment"), $langs->trans("ConfirmDeletePayment"), 'confirm_delete','',0,2); + +} + +/* + * Confirm validation of the payment + */ +if ($action == 'valide') +{ + $facid = $_GET['facid']; + print $form->formconfirm('card.php?id='.$payment->id.'&facid='.$facid, $langs->trans("ValidatePayment"), $langs->trans("ConfirmValidatePayment"), 'confirm_valide','',0,2); + +} + + +print '
'.$langs->trans("Ref").''; + print '
'.$langs->trans("Ref").''; print $form->showrefnav($object,'id'); print "
'.$langs->trans("Capital").''.price($object->capital,0,$outputlangs,1,-1,-1,$conf->currency).'
".$langs->trans("Datestart")."
".$langs->trans("DateStart").""; if ($action == 'edit') { @@ -133,7 +133,7 @@ if ($object->id) print "
".$langs->trans("Dateend")."
".$langs->trans("DateEnd").""; if ($action == 'edit') { diff --git a/htdocs/compta/loan/index.php b/htdocs/compta/loan/index.php index 8bef47ff66e..a4432ba9ced 100644 --- a/htdocs/compta/loan/index.php +++ b/htdocs/compta/loan/index.php @@ -110,9 +110,7 @@ if ($resql) // Ref print ''; - $loan->id=$obj->rowid; - $loan->label=$obj->rowid; - $loan->ref=$obj->rowid; + $loan->id = $obj->id; print $loan->getNameUrl(1,'20'); print '
'; + +// Ref +print ''; +print ''; + +// Date +print ''; + +// Mode +print ''; + +// Number +print ''; + +// Amount +print ''; + +// Note +print ''; + +// Bank account +if (! empty($conf->banque->enabled)) +{ + if ($payment->bank_account) + { + $bankline=new AccountLine($db); + $bankline->fetch($payment->bank_line); + + print ''; + print ''; + print ''; + print ''; + } +} + +print '
'.$langs->trans('Ref').''; +print $form->showrefnav($payment,'id','',1,'rowid','id'); +print '
'.$langs->trans('Date').''.dol_print_date($payment->datep,'day').'
'.$langs->trans('Mode').''.$langs->trans("PaymentType".$payment->type_code).'
'.$langs->trans('Number').''.$payment->num_payment.'
'.$langs->trans('Amount').''.price($payment->amount, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans('Note').''.nl2br($payment->note).'
'.$langs->trans('BankTransactionLine').''; + print $bankline->getNomUrl(1,0,'showall'); + print '
'; + + +/* + * List of loans payed + */ + +$disable_delete = 0; +$sql = 'SELECT l.rowid as id, l.label, l.paid, l.capital as capital, pl.amount'; +$sql.= ' FROM '.MAIN_DB_PREFIX.'payment_loan as pl,'.MAIN_DB_PREFIX.'loan as l'; +$sql.= ' WHERE pl.fk_loan = l.rowid'; +$sql.= ' AND l.entity = '.$conf->entity; +$sql.= ' AND pl.rowid = '.$payment->id; + +dol_syslog("compta/loan/payment/card.php", LOG_DEBUG); +$resql=$db->query($sql); +if ($resql) +{ + $num = $db->num_rows($resql); + + $i = 0; + $total = 0; + print '
'; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + + if ($num > 0) + { + $var=True; + + while ($i < $num) + { + $objp = $db->fetch_object($resql); + + $var=!$var; + print ''; + // Ref + print '\n"; + // Label + print ''; + // Expected to pay + print ''; + // Status + print ''; + // Amount payed + print ''; + print "\n"; + if ($objp->paye == 1) // If at least one invoice is paid, disable delete + { + $disable_delete = 1; + } + $total = $total + $objp->amount; + $i++; + } + } + $var=!$var; + + print "
'.$langs->trans('Loan').''.$langs->trans('Label').''.$langs->trans('ExpectedToPay').''.$langs->trans('Status').''.$langs->trans('PayedByThisPayment').'
'; + $loan->fetch($objp->id); + print $loan->getNameUrl(1); + print "'.$objp->label.''.price($objp->capital).''.$loan->getLibStatut(4,$objp->amount).''.price($objp->amount).'
\n"; + $db->free($resql); +} +else +{ + dol_print_error($db); +} + +print '
'; + + +/* + * Boutons Actions + */ +print '
'; + +/* +if (! empty($conf->global->BILL_ADD_PAYMENT_VALIDATION)) +{ + if ($user->societe_id == 0 && $payment->statut == 0 && $_GET['action'] == '') + { + if ($user->rights->facture->paiement) + { + print ''.$langs->trans('Valid').''; + } + } +} +*/ + +if ($_GET['action'] == '') +{ + if ($user->rights->loan->delete) + { + if (! $disable_delete) + { + print ''.$langs->trans('Delete').''; + } + else + { + print ''.$langs->trans('Delete').''; + } + } +} + +print '
'; + + + +llxFooter(); + +$db->close(); diff --git a/htdocs/compta/loan/payment/index.html b/htdocs/compta/loan/payment/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/compta/loan/payment.php b/htdocs/compta/loan/payment/payment.php similarity index 89% rename from htdocs/compta/loan/payment.php rename to htdocs/compta/loan/payment/payment.php index a513ba212cd..ed249d8f246 100644 --- a/htdocs/compta/loan/payment.php +++ b/htdocs/compta/loan/payment/payment.php @@ -21,12 +21,13 @@ * \brief Page to add payment of a loan */ -require '../../main.inc.php'; +require '../../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/paymentloan.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $langs->load("bills"); +$langs->load("loan"); $chid=GETPOST("id"); $action=GETPOST('action'); @@ -42,7 +43,6 @@ if ($user->societe_id > 0) /* * Actions */ - if ($action == 'add_payment') { $error=0; @@ -97,30 +97,30 @@ if ($action == 'add_payment') $db->begin(); // Create a line of payments - $paiement = new PaymentSocialContribution($db); - $paiement->chid = $chid; - $paiement->datepaid = $datepaid; - $paiement->amounts = $amounts; // Tableau de montant - $paiement->paymenttype = $_POST["paymenttype"]; - $paiement->num_payment = $_POST["num_payment"]; - $paiement->note = $_POST["note"]; + $payment = new PaymentLoan($db); + $payment->chid = $chid; + $payment->datepaid = $datepaid; + $payment->amounts = $amounts; // Tableau de montant + $payment->paymenttype = $_POST["paymenttype"]; + $payment->num_payment = $_POST["num_payment"]; + $payment->note = $_POST["note"]; if (! $error) { $paymentid = $payment->create($user); if ($paymentid < 0) { - $errmsg=$paiement->error; + $errmsg=$payment->error; $error++; } } if (! $error) { - $result=$paiement->addPaymentToBank($user,'payment_sc','(SocialContributionPayment)',$_POST['accountid'],'',''); + $result=$payment->addPaymentToBank($user,'payment_loan','(LoanPayment)',$_POST['accountid'],'',''); if (! $result > 0) { - $errmsg=$paiement->error; + $errmsg=$payment->error; $error++; } } @@ -180,7 +180,7 @@ if ($_GET["action"] == 'create') print "".$langs->trans("Loan").""; print ''.$langs->trans("Ref").''.$chid.''; - print ''.$langs->trans("Period")."".dol_print_date($loan->datestart,'day')."\n"; + print ''.$langs->trans("DateStart")."".dol_print_date($loan->datestart,'day')."\n"; print ''.$langs->trans("Label").''.$loan->label."\n"; print ''.$langs->trans("Amount")."".price($loan->capital,0,$outputlangs,1,-1,-1,$conf->currency).''; @@ -222,14 +222,14 @@ if ($_GET["action"] == 'create') print ''; print ''.$langs->trans('AccountToDebit').''; print ''; - $form->select_comptes(isset($_POST["accountid"])?$_POST["accountid"]:$charge->accountid, "accountid", 0, '',1); // Show opend bank account list + $form->select_comptes(isset($_POST["accountid"])?$_POST["accountid"]:$loan->accountid, "accountid", 0, '',1); // Show opend bank account list print ''; // Number print ''.$langs->trans('Number'); print ' ('.$langs->trans("ChequeOrTransferNumber").')'; print ''; - print ''."\n"; + print ''."\n"; print ''; print ''.$langs->trans("Comments").''; @@ -241,7 +241,7 @@ if ($_GET["action"] == 'create') print '
'; /* - * Autres charges impayees + * Other loan unpaid */ $num = 1; $i = 0; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index fae312ee8e8..7650b14950e 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -483,6 +483,8 @@ Module500Name=Special expenses (tax, social contributions, dividends) Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries Module510Name=Salaries Module510Desc=Management of employees salaries and payments +Module520Name=Loan +Module520Desc=Management of loans Module600Name=Notifications Module600Desc=Send notifications by email on some Dolibarr business events to third party contacts Module700Name=Donations @@ -696,6 +698,10 @@ Permission510=Read Salaries Permission512=Create/modify salaries Permission514=Delete salaries Permission517=Export salaries +Permission520=Read Loans +Permission522=Create/modify loans +Permission524=Delete loans +Permission527=Export loans Permission531=Read services Permission532=Create/modify services Permission534=Delete services diff --git a/htdocs/langs/en_US/loan.lang b/htdocs/langs/en_US/loan.lang new file mode 100644 index 00000000000..6be2f13a101 --- /dev/null +++ b/htdocs/langs/en_US/loan.lang @@ -0,0 +1,15 @@ +# Dolibarr language file - Source file is en_US - loan +Loan=Loan +Loans=Loans +NewLoan=New Loan +ShowLoan=Show Loan +PaymentLoan=Loan payment +Capital=Capital +Nbterms=Number of terms +LoanAccountancyCapitalCode=Accountancy code capital +LoanAccountancyInsuranceCode=Accountancy code insurance +LoanAccountancyInterestCode=Accountancy code interest +ConfigLoan=Configuration of the module loan +LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accountancy code capital by default +LOAN_ACCOUNTING_ACCOUNT_INTEREST=Accountancy code interest by default +LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Accountancy code insurance by default \ No newline at end of file diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 0ea2d9d51f4..d8f1e3b0c16 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -482,6 +482,8 @@ Module500Name=Dépenses spéciales (taxes, charges, dividendes) Module500Desc=Gestion des dépenses spéciales comme les taxes, charges sociales et dividendes Module510Name=Salaires Module510Desc=Gestion des paiements des salaires des employés +Module520Name=Emprunts +Module520Desc=Suivi des emprunts Module600Name=Notifications Module600Desc=Envoi de notifications (par email) aux contacts de tiers sur certains événements métiers Module700Name=Dons @@ -695,6 +697,10 @@ Permission510=Consulter les salaires Permission512=Créer/modifier les salaires Permission514=Supprimer les salaires Permission517=Exporter les salaires +Permission520=Consulter les emprunts +Permission522=Créer/modifier les emprunts +Permission524=Supprimer les emprunts +Permission527=Exporter les emprunts Permission531=Consulter les services Permission532=Créer/modifier les services Permission534=Supprimer les services diff --git a/htdocs/langs/fr_FR/loan.lang b/htdocs/langs/fr_FR/loan.lang new file mode 100644 index 00000000000..d230f7f0582 --- /dev/null +++ b/htdocs/langs/fr_FR/loan.lang @@ -0,0 +1,15 @@ +# Dolibarr language file - Source file is en_US - loan +Loan=Emprunt +Loans=Emprunts +NewLoan=Nouvel emprunt +ShowLoan=Voir emprunt +PaymentLoan=Règlement d'emprunt +Capital=Capital +Nbterms=Nombre d'échéances +LoanAccountancyCapitalCode=Compte comptable capital +LoanAccountancyInsuranceCode=Compte comptable assurance +LoanAccountancyInterestCode=Compte comptable intérêts +ConfigLoan=Configuration du module emprunt +LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Compte comptable capital par défaut +LOAN_ACCOUNTING_ACCOUNT_INTEREST=Compte comptable intérêts par défaut +LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Compte comptable assurance par défaut \ No newline at end of file From a0b4a0a3cd33eb1c5926f50aad858ada3f835e22 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 1 Oct 2014 07:32:03 +0200 Subject: [PATCH 009/429] Update menu auguria --- htdocs/core/menus/init_menu_auguria.sql | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 36a59d33109..3dfa9a546ba 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -12,7 +12,7 @@ insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, left insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('societe|fournisseur', '( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)', 2__+MAX_llx_menu__, __HANDLER__, 'top', 'companies', '', 0, '/societe/index.php?mainmenu=companies&leftmenu=', 'ThirdParties', -1, 'companies', '$user->rights->societe->lire || $user->rights->societe->contact->lire', '', 2, 20, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('product|service', '$conf->product->enabled || $conf->service->enabled', 3__+MAX_llx_menu__, __HANDLER__, 'top', 'products', '', 0, '/product/index.php?mainmenu=products&leftmenu=', 'Products/Services', -1, 'products', '$user->rights->produit->lire||$user->rights->service->lire', '', 0, 30, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('propal|commande|fournisseur|contrat|ficheinter', '$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled', 5__+MAX_llx_menu__, __HANDLER__, 'top', 'commercial', '', 0, '/comm/index.php?mainmenu=commercial&leftmenu=', 'Commercial', -1, 'commercial', '$user->rights->societe->lire || $user->rights->societe->contact->lire', '', 2, 40, __ENTITY__); -insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('comptabilite|accounting|facture|deplacement|don|tax|salaries', '$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled || $conf->salaries->enabled', 6__+MAX_llx_menu__, __HANDLER__, 'top', 'accountancy', '', 0, '/compta/index.php?mainmenu=accountancy&leftmenu=', 'MenuFinancial', -1, 'compta', '$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire || $user->rights->salaries->read', '', 2, 50, __ENTITY__); +insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('comptabilite|accounting|facture|deplacement|don|tax|salaries|loan', '$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled || $conf->salaries->enabled || $conf->loan->enabled', 6__+MAX_llx_menu__, __HANDLER__, 'top', 'accountancy', '', 0, '/compta/index.php?mainmenu=accountancy&leftmenu=', 'MenuFinancial', -1, 'compta', '$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire || $user->rights->salaries->read || $user->rights->loan->read', '', 2, 50, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('banque|prelevement', '$conf->banque->enabled || $conf->prelevement->enabled', 14__+MAX_llx_menu__, __HANDLER__, 'top', 'bank', '', 0, '/compta/bank/index.php?mainmenu=bank&leftmenu=bank', 'MenuBankCash', -1, 'banks', '$user->rights->banque->lire || $user->rights->prelevement->bons->lire', '', 0, 60, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('projet', '$conf->projet->enabled', 7__+MAX_llx_menu__, __HANDLER__, 'top', 'project', '', 0, '/projet/index.php?mainmenu=project&leftmenu=', 'Projects', -1, 'projects', '$user->rights->projet->lire', '', 2, 70, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('mailing|export|import|opensurvey', '$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled || $conf->opensurvey->enabled', 8__+MAX_llx_menu__, __HANDLER__, 'top', 'tools', '', 0, '/core/tools.php?mainmenu=tools&leftmenu=', 'Tools', -1, 'other', '$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run || $user->rights->opensurvey->read', '', 2, 90, __ENTITY__); @@ -179,6 +179,9 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled', __HANDLER__, 'left', 2210__+MAX_llx_menu__, 'accountancy', 'tax_sal', 2200__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=accountancy', 'Salaries', 1, 'salaries', '$user->rights->salaries->read', '', 0, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2211__+MAX_llx_menu__, 'accountancy', '', 2210__+MAX_llx_menu__, '/compta/salaries/card.php?leftmenu=tax_salary&action=create', 'NewPayment', 2, 'companies', '$user->rights->salaries->write', '', 0, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2212__+MAX_llx_menu__, 'accountancy', '', 2210__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary', 'Payments', 2, 'companies', '$user->rights->salaries->read', '', 0, 3, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled', __HANDLER__, 'left', 2220__+MAX_llx_menu__, 'accountancy', 'tax_loan', 2200__+MAX_llx_menu__, '/compta/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy', 'Loans', 1, 'loan', '$user->rights->loan->read', '', 0, 1, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2221__+MAX_llx_menu__, 'accountancy', '', 2210__+MAX_llx_menu__, '/compta/loan/card.php?leftmenu=tax_loan&action=create', 'NewLoan', 2, 'loan', '$user->rights->loan->write', '', 0, 2, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2222__+MAX_llx_menu__, 'accountancy', '', 2210__+MAX_llx_menu__, '/compta/loan/index.php?leftmenu=tax_loan', 'Payments', 2, 'companies', '$user->rights->loan->read', '', 0, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled', __HANDLER__, 'left', 2250__+MAX_llx_menu__, 'accountancy', 'tax_social', 2200__+MAX_llx_menu__, '/compta/sociales/index.php?leftmenu=tax_social', 'SocialContributions', 1, '', '$user->rights->tax->charges->lire', '', 0, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2251__+MAX_llx_menu__, 'accountancy', '', 2250__+MAX_llx_menu__, '/compta/sociales/charges.php?leftmenu=tax_social&action=create', 'MenuNewSocialContribution', 2, '', '$user->rights->tax->charges->creer', '', 0, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2252__+MAX_llx_menu__, 'accountancy', '', 2250__+MAX_llx_menu__, '/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly', 'Payments', 2, '', '$user->rights->tax->charges->lire', '', 0, 3, __ENTITY__); From ba7a4d6f8802fda8adcedd6e2cdb2aac7f4ae069 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 2 Oct 2014 19:56:41 +0200 Subject: [PATCH 010/429] Update card --- htdocs/compta/loan/card.php | 87 ++++++++++++++++++++----------------- 1 file changed, 46 insertions(+), 41 deletions(-) diff --git a/htdocs/compta/loan/card.php b/htdocs/compta/loan/card.php index d2dc5362915..c97ca6d84b0 100644 --- a/htdocs/compta/loan/card.php +++ b/htdocs/compta/loan/card.php @@ -31,8 +31,9 @@ $langs->load("bills"); $langs->load("loan"); $id=GETPOST('id','int'); -$action=GETPOST("action"); +$action=GETPOST('action'); $confirm=GETPOST('confirm'); +$cancel=GETPOST('cancel'); // Security check $socid = GETPOST('socid','int'); @@ -46,17 +47,17 @@ $result = restrictedArea($user, 'loan', $id, '',''); // Classify paid if ($action == 'confirm_paid' && $confirm == 'yes') { - $loan = new Loan($db); - $loan->fetch($id); - $result = $loan->set_paid($user); + $object = new Loan($db); + $object->fetch($id); + $result = $object->set_paid($user); } // Delete loan if ($action == 'confirm_delete' && $confirm == 'yes') { - $loan = new Loan($db); - $loan->fetch($id); - $result=$loan->delete($user); + $object = new Loan($db); + $object->fetch($id); + $result=$object->delete($user); if ($result > 0) { header("Location: index.php"); @@ -72,8 +73,8 @@ if ($action == 'confirm_delete' && $confirm == 'yes') // Add loan if ($action == 'add' && $user->rights->loan->write) { - $datestart=dol_mktime(12,0,0, $_POST["startmonth"], $_POST["startday"], $_POST["startyear"]); - $dateend=dol_mktime(12,0,0, $_POST["endmonth"], $_POST["endday"], $_POST["endyear"]); + $datestart=dol_mktime(12,0,0, $GETPOST("startmonth"), $GETPOST("startday"), $GETPOST("startyear")); + $dateend=dol_mktime(12,0,0, $GETPOST("endmonth"), $GETPOST("endday"), $GETPOST("endyear")); if (! $datestart) { setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateStart")), 'errors'); @@ -91,33 +92,33 @@ if ($action == 'add' && $user->rights->loan->write) } else { - $loan = new Loan($db); + $object = new Loan($db); - $loan->label = GETPOST("label"); - $loan->fk_bank = GETPOST("accountid"); - $loan->capital = GETPOST("capital"); - $loan->datestart = $datestart; - $loan->dateend = $dateend; - $loan->nbterm = GETPOST("nbterm"); - $loan->rate = GETPOST("rate"); + $object->label = GETPOST("label"); + $object->fk_bank = GETPOST("accountid"); + $object->capital = GETPOST("capital"); + $object->datestart = $datestart; + $object->dateend = $dateend; + $object->nbterm = GETPOST("nbterm"); + $object->rate = GETPOST("rate"); - $loan->account_capital = GETPOST("accountancy_account_capital"); - $loan->account_insurance = GETPOST("accountancy_account_insurance"); - $loan->account_interest = GETPOST("accountancy_account_interest"); + $object->account_capital = GETPOST("accountancy_account_capital"); + $object->account_insurance = GETPOST("accountancy_account_insurance"); + $object->account_interest = GETPOST("accountancy_account_interest"); - $id=$loan->create($user); + $id=$object->create($user); if ($id <= 0) { - setEventMessage($loan->error, 'errors'); + setEventMessage($object->error, 'errors'); } } } -if ($action == 'update' && ! $_POST["cancel"] && $user->rights->loan->write) +if ($action == 'update' && ! $cancel && $user->rights->loan->write) { - $datestart=dol_mktime(12,0,0, $_POST["startmonth"], $_POST["startday"], $_POST["startyear"]); - $dateend=dol_mktime(12,0,0, $_POST["endmonth"], $_POST["endday"], $_POST["endyear"]); + $datestart=dol_mktime(12,0,0, $GETPOST("startmonth"), $GETPOST("startday"), $GETPOST("startyear")); + $dateend=dol_mktime(12,0,0, $GETPOST("endmonth"), $GETPOST("endday"), $GETPOST("endyear")); if (! $datestart) { setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateStart")), 'errors'); @@ -130,17 +131,22 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->loan->write) } else { - $loan = new Loan($db); - $result=$loan->fetch($_GET["id"]); - - $loan->label=$_POST["label"]; - $loan->datestart=$datestart; - $loan->dateend=$dateend; - - $result=$loan->update($user); - if ($result <= 0) + $object = new Loan($db); + if ($object->fetch($id)) { - setEventMessage($loan->error, 'errors'); + $object->label = $GETPOST("label"); + $object->datestart = $datestart; + $object->dateend = $dateend; + } + + if ($object->update($id, $user) > 0) + { + $action = ''; + } + else + { + $action = 'edit'; + setEventMessage($object->error, 'errors'); } } } @@ -180,7 +186,7 @@ if ($action == 'create') if (! empty($conf->banque->enabled)) { print ''.$langs->trans("Account").''; - $form->select_comptes($_POST["accountid"],"accountid",0,"courant=1",1); // Show list of bank account with courant + $form->select_comptes($GETPOST["accountid"],"accountid",0,"courant=1",1); // Show list of bank account with courant print ''; } else @@ -259,7 +265,7 @@ if ($action == 'create') print ''; print '
    '; - print '
'; print ''; } @@ -434,8 +440,8 @@ if ($id > 0) print ""; /* - * Boutons actions - */ + * Buttons actions + */ if ($action != 'edit') { print "
\n"; @@ -474,7 +480,6 @@ if ($id > 0) } } - llxFooter(); -$db->close(); +$db->close(); \ No newline at end of file From dca4591cdf7615eb400c53dd21da5cf1a98c004c Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 2 Oct 2014 20:00:35 +0200 Subject: [PATCH 011/429] Add calculator --- htdocs/compta/loan/calculator.php | 223 ++++++++++++++++++++++++ htdocs/compta/loan/calculator.tpl | 150 ++++++++++++++++ htdocs/core/menus/standard/eldy.lib.php | 1 + htdocs/langs/en_US/loan.lang | 6 + htdocs/langs/fr_FR/loan.lang | 6 + 5 files changed, 386 insertions(+) create mode 100644 htdocs/compta/loan/calculator.php create mode 100644 htdocs/compta/loan/calculator.tpl diff --git a/htdocs/compta/loan/calculator.php b/htdocs/compta/loan/calculator.php new file mode 100644 index 00000000000..562ce2c27d5 --- /dev/null +++ b/htdocs/compta/loan/calculator.php @@ -0,0 +1,223 @@ + + * + * 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/compta/loan/calculator.php + * \ingroup loan + * \brief Calculator for loan + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; + +$langs->load("loan"); +$langs->load("compta"); +$langs->load("banks"); +$langs->load("bills"); + +// Security check +$socid = isset($GETPOST["socid"])?$GETPOST["socid"]:''; +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'loan', '', '', ''); + +$action=GETPOST("action"); + +/* Defining Variables */ +$periods = array( + 52 => $langs->trans("Weekly"), + 26 => $langs->trans("Bi-weekly"), + 12 => $langs->trans("Monthly"), + 6 => $langs->trans("Bi-monthly"), + 4 => $langs->trans("Quarterly"), + 2 => $langs->trans("Semi-annually"), + 1 => $langs->trans("Annually") + ); + +$loan_capital = isset($GETPOST("loan_capital")) ? $GETPOST("loan_capital") : 0; +$loan_length = isset($GETPOST("loan_length")) ? $GETPOST("loan_length") : 0; +$loan_interest = isset(GETPOST("loan_interest")) ? $GETPOST("loan_interest") : 0; +$pay_periodicity = isset(GETPOST("pay_periodicity")) ? $GETPOST("pay_periodicity") : 12; +$periodicity = $periods[$pay_periodicity]; + +$pay_periods = ''; +foreach($periods as $value => $name) +{ + $selected = ($pay_periodicity == $value) ? 'selected' : ''; +} + +if ($action == 'calculate') +{ + /* Checking Variables */ + $error = 0; + + if(!is_numeric($loan_capital) || $loan_capital <= 0) + { + // $this->error="ErrorLoanCapital"; + return -1; + } + if(!is_numeric($loan_length) || $loan_length <= 0) + { + // $this->error="ErrorLoanLength"; + return -1; + } + if(!is_numeric($loan_interest) or $loan_interest <= 0) + { + // $this->error="ErrorLoanInterest"; + return -1; + } + + /* + * Calculating + */ + if(isset($_GET['action'])) + { + $c_balance = $loan_capital; + $total_periods = $loan_length * $pay_periodicity; + $interest_percent = $loan_interest / 100; + $period_interest = $interest_percent / $pay_periodicity; + $c_period_payment = $loan_capital * ($period_interest / (1 - pow((1 + $period_interest), -($total_periods)))); + $total_paid = number_format($c_period_payment * $total_periods, 2, '.', ' '); + $total_interest = number_format($c_period_payment * $total_periods - $loan_capital, 2, '.', ' '); + $total_principal = number_format($loan_capital, 2, '.', ' '); + + $loan_capital = number_format($loan_capital, 2, '.', ' '); + $loan_interest = number_format($loan_interest, 2, '.', ' '); + $period_payment = number_format($c_period_payment, 2, '.', ' '); + + for($period = 1; $period <= $total_periods; $period++) + { + $c_interest = $c_balance * $period_interest; + $c_principal = $c_period_payment - $c_interest; + $c_balance -= $c_principal; + + $interest = number_format($c_interest, 2, '.', ' '); + $principal = number_format($c_principal, 2, '.', ' '); + $balance = number_format($c_balance, 2, '.', ' '); + + $evenrow_row_modifier = ($period % 2) ? '' : 'class=evenrow'; + } + } + else + { + $amortization_table = ''; + $loan_summary = ''; + } +} + +/* + * View + */ + +$help_url='EN:Module_Loan|FR:Module_Emprunt'; +llxHeader("",$langs->trans("Loan"),$help_url); + +print_fiche_titre($langs->trans("CalculatorLoan")); + +print ''; + +print '' . "\n"; +print ''; +print ''; + +// Capital +print ''; + +// Length +print ''; + +// Interest +print ''; + +print '
'.$langs->trans("Capital").'
'.$langs->trans("LengthByYears").'
'.$langs->trans("Interest").' %
'; + +print '
'; + +print ''; + +if ($action == 'calculate') +{ +/* + + + + + + {amortization_table_rows} + + + +
PeriodInterest PaidPrincipal PaidRemaining Balance
Totals:{total_interest}${total_principal}$ 
+ + + + + {period} + {interest}$ + {principal}$ + {balance}$ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Loan Summary
Loan amount:{loan_amount}$
Loan length:{loan_length} years
Annual interest:{annual_interest}%
Pay periodicity:{periodicity}
{periodicity} payment:{period_payment}$
Total paid:{total_paid}$
Total interest:{total_interest}$
Total periods:{total_periods}
+ + */ +} +else +{ + +} + +$db->close(); + +llxFooter(); diff --git a/htdocs/compta/loan/calculator.tpl b/htdocs/compta/loan/calculator.tpl new file mode 100644 index 00000000000..7efbca9924b --- /dev/null +++ b/htdocs/compta/loan/calculator.tpl @@ -0,0 +1,150 @@ + + + + Loan Calculator + + + + + + + + + + +
+ {error} + + + + + +
+ {loan_summary} + {loan_parameters_form} + + {amortization_table} +
+
+ + + +
+ + + + + + + + + + +
Loan Parameters
+ + + + + + + + + + + + + + + + + + + + +
Loan amount: $
Loan length: years
Annual interest: %
Pay periodicity: + +
+
Powered by PC Calculators
+
+ + + + + + + + + + + + {amortization_table_rows} + + + +
PeriodInterest PaidPrincipal PaidRemaining Balance
Totals:{total_interest}${total_principal}$ 
+ + + + + {period} + {interest}$ + {principal}$ + {balance}$ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Loan Summary
Loan amount:{loan_amount}$
Loan length:{loan_length} years
Annual interest:{annual_interest}%
Pay periodicity:{periodicity}
{periodicity} payment:{period_payment}$
Total paid:{total_paid}$
Total interest:{total_interest}$
Total periods:{total_periods}
+ + + + + + diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index c3df5b82fff..bea92481d12 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -825,6 +825,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/compta/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy",$langs->trans("Loans"),1,$user->rights->loan->read, '', $mainmenu, 'tax_loan'); if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/compta/loan/card.php?leftmenu=tax_loan&action=create",$langs->trans("NewLoan"),2,$user->rights->loan->write); if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/compta/loan/index.php?leftmenu=tax_loan",$langs->trans("Payments"),2,$user->rights->loan->read); + if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/compta/loan/calculator.php?leftmenu=tax_loan",$langs->trans("Calculator"),2,$user->rights->loan->read); } // Social contributions diff --git a/htdocs/langs/en_US/loan.lang b/htdocs/langs/en_US/loan.lang index 6be2f13a101..37523b7408b 100644 --- a/htdocs/langs/en_US/loan.lang +++ b/htdocs/langs/en_US/loan.lang @@ -9,6 +9,12 @@ Nbterms=Number of terms LoanAccountancyCapitalCode=Accountancy code capital LoanAccountancyInsuranceCode=Accountancy code insurance LoanAccountancyInterestCode=Accountancy code interest +Calculator=Simulator +CalculatorLoan=Loan simulator +ErrorLoanCapital=Loan amount has to be numeric and greater than zero. +ErrorLoanLength=Loan length has to be numeric and greater than zero. +ErrorLoanInterest=Annual interest has to be numeric and greater than zero. +# Admin ConfigLoan=Configuration of the module loan LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accountancy code capital by default LOAN_ACCOUNTING_ACCOUNT_INTEREST=Accountancy code interest by default diff --git a/htdocs/langs/fr_FR/loan.lang b/htdocs/langs/fr_FR/loan.lang index d230f7f0582..c699388e0c0 100644 --- a/htdocs/langs/fr_FR/loan.lang +++ b/htdocs/langs/fr_FR/loan.lang @@ -9,6 +9,12 @@ Nbterms=Nombre d'échéances LoanAccountancyCapitalCode=Compte comptable capital LoanAccountancyInsuranceCode=Compte comptable assurance LoanAccountancyInterestCode=Compte comptable intérêts +Calculator=Simulateur +CalculatorLoan=Simulateur d'emprunt +ErrorLoanCapital=Le capital de l'emprunt doit être au format numérique et supérieur à zéro. +ErrorLoanLength=La durée de l'emprunt doit être au format numérique et supérieur à zéro. +ErrorLoanInterest=Les intérêts d'emprunt doivent être au format numérique et supérieur à zéro. +# Admin ConfigLoan=Configuration du module emprunt LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Compte comptable capital par défaut LOAN_ACCOUNTING_ACCOUNT_INTEREST=Compte comptable intérêts par défaut From 7fa2b6b3ebea20771d330ed97a5c339d2cdf2e2a Mon Sep 17 00:00:00 2001 From: aspangaro Date: Mon, 6 Oct 2014 05:34:45 +0200 Subject: [PATCH 012/429] Update --- htdocs/compta/loan/calculator.php | 223 ------------------------ htdocs/compta/loan/calculator.tpl | 150 ---------------- htdocs/compta/loan/card.php | 2 +- htdocs/core/menus/standard/eldy.lib.php | 1 - htdocs/langs/en_US/loan.lang | 4 +- htdocs/langs/fr_FR/loan.lang | 4 +- 6 files changed, 5 insertions(+), 379 deletions(-) delete mode 100644 htdocs/compta/loan/calculator.php delete mode 100644 htdocs/compta/loan/calculator.tpl diff --git a/htdocs/compta/loan/calculator.php b/htdocs/compta/loan/calculator.php deleted file mode 100644 index 562ce2c27d5..00000000000 --- a/htdocs/compta/loan/calculator.php +++ /dev/null @@ -1,223 +0,0 @@ - - * - * 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/compta/loan/calculator.php - * \ingroup loan - * \brief Calculator for loan - */ - -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; - -$langs->load("loan"); -$langs->load("compta"); -$langs->load("banks"); -$langs->load("bills"); - -// Security check -$socid = isset($GETPOST["socid"])?$GETPOST["socid"]:''; -if ($user->societe_id) $socid=$user->societe_id; -$result = restrictedArea($user, 'loan', '', '', ''); - -$action=GETPOST("action"); - -/* Defining Variables */ -$periods = array( - 52 => $langs->trans("Weekly"), - 26 => $langs->trans("Bi-weekly"), - 12 => $langs->trans("Monthly"), - 6 => $langs->trans("Bi-monthly"), - 4 => $langs->trans("Quarterly"), - 2 => $langs->trans("Semi-annually"), - 1 => $langs->trans("Annually") - ); - -$loan_capital = isset($GETPOST("loan_capital")) ? $GETPOST("loan_capital") : 0; -$loan_length = isset($GETPOST("loan_length")) ? $GETPOST("loan_length") : 0; -$loan_interest = isset(GETPOST("loan_interest")) ? $GETPOST("loan_interest") : 0; -$pay_periodicity = isset(GETPOST("pay_periodicity")) ? $GETPOST("pay_periodicity") : 12; -$periodicity = $periods[$pay_periodicity]; - -$pay_periods = ''; -foreach($periods as $value => $name) -{ - $selected = ($pay_periodicity == $value) ? 'selected' : ''; -} - -if ($action == 'calculate') -{ - /* Checking Variables */ - $error = 0; - - if(!is_numeric($loan_capital) || $loan_capital <= 0) - { - // $this->error="ErrorLoanCapital"; - return -1; - } - if(!is_numeric($loan_length) || $loan_length <= 0) - { - // $this->error="ErrorLoanLength"; - return -1; - } - if(!is_numeric($loan_interest) or $loan_interest <= 0) - { - // $this->error="ErrorLoanInterest"; - return -1; - } - - /* - * Calculating - */ - if(isset($_GET['action'])) - { - $c_balance = $loan_capital; - $total_periods = $loan_length * $pay_periodicity; - $interest_percent = $loan_interest / 100; - $period_interest = $interest_percent / $pay_periodicity; - $c_period_payment = $loan_capital * ($period_interest / (1 - pow((1 + $period_interest), -($total_periods)))); - $total_paid = number_format($c_period_payment * $total_periods, 2, '.', ' '); - $total_interest = number_format($c_period_payment * $total_periods - $loan_capital, 2, '.', ' '); - $total_principal = number_format($loan_capital, 2, '.', ' '); - - $loan_capital = number_format($loan_capital, 2, '.', ' '); - $loan_interest = number_format($loan_interest, 2, '.', ' '); - $period_payment = number_format($c_period_payment, 2, '.', ' '); - - for($period = 1; $period <= $total_periods; $period++) - { - $c_interest = $c_balance * $period_interest; - $c_principal = $c_period_payment - $c_interest; - $c_balance -= $c_principal; - - $interest = number_format($c_interest, 2, '.', ' '); - $principal = number_format($c_principal, 2, '.', ' '); - $balance = number_format($c_balance, 2, '.', ' '); - - $evenrow_row_modifier = ($period % 2) ? '' : 'class=evenrow'; - } - } - else - { - $amortization_table = ''; - $loan_summary = ''; - } -} - -/* - * View - */ - -$help_url='EN:Module_Loan|FR:Module_Emprunt'; -llxHeader("",$langs->trans("Loan"),$help_url); - -print_fiche_titre($langs->trans("CalculatorLoan")); - -print ''; - -print '' . "\n"; -print ''; -print ''; - -// Capital -print ''; - -// Length -print ''; - -// Interest -print ''; - -print '
'.$langs->trans("Capital").'
'.$langs->trans("LengthByYears").'
'.$langs->trans("Interest").' %
'; - -print '
'; - -print ''; - -if ($action == 'calculate') -{ -/* - - - - - - {amortization_table_rows} - - - -
PeriodInterest PaidPrincipal PaidRemaining Balance
Totals:{total_interest}${total_principal}$ 
- - - - - {period} - {interest}$ - {principal}$ - {balance}$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Loan Summary
Loan amount:{loan_amount}$
Loan length:{loan_length} years
Annual interest:{annual_interest}%
Pay periodicity:{periodicity}
{periodicity} payment:{period_payment}$
Total paid:{total_paid}$
Total interest:{total_interest}$
Total periods:{total_periods}
- - */ -} -else -{ - -} - -$db->close(); - -llxFooter(); diff --git a/htdocs/compta/loan/calculator.tpl b/htdocs/compta/loan/calculator.tpl deleted file mode 100644 index 7efbca9924b..00000000000 --- a/htdocs/compta/loan/calculator.tpl +++ /dev/null @@ -1,150 +0,0 @@ - - - - Loan Calculator - - - - - - - - - - -
- {error} - - - - - -
- {loan_summary} - {loan_parameters_form} - - {amortization_table} -
-
- - - -
- - - - - - - - - - -
Loan Parameters
- - - - - - - - - - - - - - - - - - - - -
Loan amount: $
Loan length: years
Annual interest: %
Pay periodicity: - -
-
Powered by PC Calculators
-
- - - - - - - - - - - - {amortization_table_rows} - - - -
PeriodInterest PaidPrincipal PaidRemaining Balance
Totals:{total_interest}${total_principal}$ 
- - - - - {period} - {interest}$ - {principal}$ - {balance}$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Loan Summary
Loan amount:{loan_amount}$
Loan length:{loan_length} years
Annual interest:{annual_interest}%
Pay periodicity:{periodicity}
{periodicity} payment:{period_payment}$
Total paid:{total_paid}$
Total interest:{total_interest}$
Total periods:{total_periods}
- - - - - - diff --git a/htdocs/compta/loan/card.php b/htdocs/compta/loan/card.php index c97ca6d84b0..e49aee1b61f 100644 --- a/htdocs/compta/loan/card.php +++ b/htdocs/compta/loan/card.php @@ -297,7 +297,7 @@ if ($id > 0) if ($action == 'edit') { - print "
id&action=update\" method=\"post\">"; + print 'id&action=update" method="POST">'; print ''; } diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 86e74cfcc5f..1e4f1197cb0 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -834,7 +834,6 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/compta/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy",$langs->trans("Loans"),1,$user->rights->loan->read, '', $mainmenu, 'tax_loan'); if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/compta/loan/card.php?leftmenu=tax_loan&action=create",$langs->trans("NewLoan"),2,$user->rights->loan->write); if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/compta/loan/index.php?leftmenu=tax_loan",$langs->trans("Payments"),2,$user->rights->loan->read); - if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/compta/loan/calculator.php?leftmenu=tax_loan",$langs->trans("Calculator"),2,$user->rights->loan->read); } // Social contributions diff --git a/htdocs/langs/en_US/loan.lang b/htdocs/langs/en_US/loan.lang index 37523b7408b..10fb0249f6d 100644 --- a/htdocs/langs/en_US/loan.lang +++ b/htdocs/langs/en_US/loan.lang @@ -9,8 +9,8 @@ Nbterms=Number of terms LoanAccountancyCapitalCode=Accountancy code capital LoanAccountancyInsuranceCode=Accountancy code insurance LoanAccountancyInterestCode=Accountancy code interest -Calculator=Simulator -CalculatorLoan=Loan simulator +ConfirmDeleteLoan=Confirm deleting this loan +ConfirmPayLoan=Confirm classify paid this loan ErrorLoanCapital=Loan amount has to be numeric and greater than zero. ErrorLoanLength=Loan length has to be numeric and greater than zero. ErrorLoanInterest=Annual interest has to be numeric and greater than zero. diff --git a/htdocs/langs/fr_FR/loan.lang b/htdocs/langs/fr_FR/loan.lang index c699388e0c0..1e54f90e2be 100644 --- a/htdocs/langs/fr_FR/loan.lang +++ b/htdocs/langs/fr_FR/loan.lang @@ -9,8 +9,8 @@ Nbterms=Nombre d'échéances LoanAccountancyCapitalCode=Compte comptable capital LoanAccountancyInsuranceCode=Compte comptable assurance LoanAccountancyInterestCode=Compte comptable intérêts -Calculator=Simulateur -CalculatorLoan=Simulateur d'emprunt +ConfirmDeleteLoan=Confirmation de supression de cet emprunt +ConfirmPayLoan=Confirmation que cet emprunt est classé comme payé ErrorLoanCapital=Le capital de l'emprunt doit être au format numérique et supérieur à zéro. ErrorLoanLength=La durée de l'emprunt doit être au format numérique et supérieur à zéro. ErrorLoanInterest=Les intérêts d'emprunt doivent être au format numérique et supérieur à zéro. From aecb9856593d36d2226a6e952d51c433a052f1d9 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Tue, 4 Nov 2014 20:53:07 +0100 Subject: [PATCH 013/429] Update work --- htdocs/compta/loan/card.php | 28 ++++++++++++++-------------- htdocs/compta/loan/index.php | 23 +++++++++++++++++------ htdocs/compta/salaries/card.php | 2 +- 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/htdocs/compta/loan/card.php b/htdocs/compta/loan/card.php index e49aee1b61f..49e3884562c 100644 --- a/htdocs/compta/loan/card.php +++ b/htdocs/compta/loan/card.php @@ -69,12 +69,12 @@ if ($action == 'confirm_delete' && $confirm == 'yes') } } - // Add loan if ($action == 'add' && $user->rights->loan->write) { - $datestart=dol_mktime(12,0,0, $GETPOST("startmonth"), $GETPOST("startday"), $GETPOST("startyear")); - $dateend=dol_mktime(12,0,0, $GETPOST("endmonth"), $GETPOST("endday"), $GETPOST("endyear")); + $datestart=@dol_mktime(12,0,0, $_POST["startmonth"], $_POST["startday"], $_POST["startyear"]); + $dateend=@dol_mktime(12,0,0, $_POST["endmonth"], $_POST["endday"], $_POST["endyear"]); + if (! $datestart) { setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateStart")), 'errors'); @@ -94,17 +94,17 @@ if ($action == 'add' && $user->rights->loan->write) { $object = new Loan($db); - $object->label = GETPOST("label"); - $object->fk_bank = GETPOST("accountid"); - $object->capital = GETPOST("capital"); - $object->datestart = $datestart; - $object->dateend = $dateend; - $object->nbterm = GETPOST("nbterm"); - $object->rate = GETPOST("rate"); + $object->label = $_POST["label"]; + $object->fk_bank = $_POST["accountid"]; + $object->capital = $_POST["capital"]; + $object->datestart = $datestart; + $object->dateend = $dateend; + $object->nbterm = $_POST["nbterm"]; + $object->rate = $_POST["rate"]; - $object->account_capital = GETPOST("accountancy_account_capital"); - $object->account_insurance = GETPOST("accountancy_account_insurance"); - $object->account_interest = GETPOST("accountancy_account_interest"); + $object->account_capital = $_POST["accountancy_account_capital"]; + $object->account_insurance = $_POST["accountancy_account_insurance"]; + $object->account_interest = $_POST["accountancy_account_interest"]; $id=$object->create($user); if ($id <= 0) @@ -173,7 +173,7 @@ if ($action == 'create') $datec = dol_mktime(12, 0, 0, GETPOST('remonth','int'), GETPOST('reday','int'), GETPOST('reyear','int')); - print '' . "\n"; + print '' . "\n"; print ''; print ''; diff --git a/htdocs/compta/loan/index.php b/htdocs/compta/loan/index.php index a4432ba9ced..2834ce2069f 100644 --- a/htdocs/compta/loan/index.php +++ b/htdocs/compta/loan/index.php @@ -45,8 +45,16 @@ if (! $sortfield) $sortfield="l.rowid"; if (! $sortorder) $sortorder="DESC"; $limit = $conf->liste_limit; +$search_ref=GETPOST('search_ref','int'); $search_label=GETPOST('search_label','alpha'); -$filtre=$_GET["filtre"]; +$filtre=GETPOST("filtre"); + +if (GETPOST("button_removefilter")) +{ + $search_ref=""; + $search_label=""; + $search_amount=""; +} /* * View @@ -56,13 +64,14 @@ $loan = new Loan($db); llxHeader(); -$sql = "SELECT l.rowid as id, l.label, l.capital, l.datestart, l.dateend,"; +$sql = "SELECT l.rowid, l.label, l.capital, l.datestart, l.dateend,"; $sql.= " SUM(pl.amount) as alreadypayed"; $sql.= " FROM ".MAIN_DB_PREFIX."loan as l,"; $sql.= " ".MAIN_DB_PREFIX."payment_loan as pl"; $sql.= " WHERE pl.fk_loan = l.rowid"; $sql.= " AND l.entity = ".$conf->entity; -if (GETPOST("search_label")) $sql.=" AND l.label LIKE '%".$db->escape(GETPOST("search_label"))."%'"; +if (GETPOST("search_ref")) $sql.=" AND (l.rowid = ".$db->escape($search_ref).")"; +if (GETPOST("search_label")) $sql.=" AND l.label LIKE '%".$db->escape($search_label)."%'"; if ($filtre) { $filtre=str_replace(":","=",$filtre); @@ -83,7 +92,7 @@ if ($resql) print ''."\n"; print ''; print ''; - print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"id","",$param,"",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"l.rowid","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"l.label","",$param,'align="left"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Capital"),$_SERVER["PHP_SELF"],"l.capital","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateStart"),$_SERVER["PHP_SELF"],"l.datestart","",$param,'align="center"',$sortfield,$sortorder); @@ -96,9 +105,11 @@ if ($resql) print ''; print ''; print ''; - print '\n"; + print ''; + print ''; + print ''; $var=true; while ($i < min($num,$limit)) diff --git a/htdocs/compta/salaries/card.php b/htdocs/compta/salaries/card.php index 3ee796c6134..c6e492cd787 100644 --- a/htdocs/compta/salaries/card.php +++ b/htdocs/compta/salaries/card.php @@ -206,7 +206,7 @@ if ($action == 'create') $datesp=dol_get_first_day($pastmonthyear,$pastmonth,false); $dateep=dol_get_last_day($pastmonthyear,$pastmonth,false); } - print "\n"; + print ''; print ''; print ''; From 3042bf4dc2a4fbaab5d759fcf94a2b809b1de2a8 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Mon, 10 Nov 2014 06:08:50 +0100 Subject: [PATCH 014/429] Correct lot of bugs --- htdocs/compta/loan/card.php | 176 +++++++++--------- htdocs/compta/loan/class/loan.class.php | 82 ++++---- .../compta/loan/class/paymentloan.class.php | 29 ++- htdocs/compta/loan/index.php | 42 ++--- htdocs/compta/loan/payment/card.php | 19 +- htdocs/compta/loan/payment/payment.php | 74 +++++--- .../install/mysql/migration/3.6.0-3.7.0.sql | 42 ----- .../install/mysql/migration/3.7.0-3.8.0.sql | 63 +++++++ .../install/mysql/tables/llx_payment_loan.sql | 4 +- htdocs/langs/en_US/loan.lang | 3 + htdocs/langs/fr_FR/loan.lang | 3 + 11 files changed, 306 insertions(+), 231 deletions(-) create mode 100644 htdocs/install/mysql/migration/3.7.0-3.8.0.sql diff --git a/htdocs/compta/loan/card.php b/htdocs/compta/loan/card.php index 49e3884562c..88a4429e7c5 100644 --- a/htdocs/compta/loan/card.php +++ b/htdocs/compta/loan/card.php @@ -33,13 +33,15 @@ $langs->load("loan"); $id=GETPOST('id','int'); $action=GETPOST('action'); $confirm=GETPOST('confirm'); -$cancel=GETPOST('cancel'); +$cancel=GETPOST('cancel','alpha'); // Security check $socid = GETPOST('socid','int'); if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'loan', $id, '',''); +$object = new Loan($db); + /* * Actions */ @@ -47,7 +49,6 @@ $result = restrictedArea($user, 'loan', $id, '',''); // Classify paid if ($action == 'confirm_paid' && $confirm == 'yes') { - $object = new Loan($db); $object->fetch($id); $result = $object->set_paid($user); } @@ -55,7 +56,6 @@ if ($action == 'confirm_paid' && $confirm == 'yes') // Delete loan if ($action == 'confirm_delete' && $confirm == 'yes') { - $object = new Loan($db); $object->fetch($id); $result=$object->delete($user); if ($result > 0) @@ -72,86 +72,88 @@ if ($action == 'confirm_delete' && $confirm == 'yes') // Add loan if ($action == 'add' && $user->rights->loan->write) { - $datestart=@dol_mktime(12,0,0, $_POST["startmonth"], $_POST["startday"], $_POST["startyear"]); - $dateend=@dol_mktime(12,0,0, $_POST["endmonth"], $_POST["endday"], $_POST["endyear"]); - - if (! $datestart) + if (! $cancel) { - setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateStart")), 'errors'); - $action = 'create'; - } - elseif (! $dateend) - { - setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateEnd")), 'errors'); - $action = 'create'; - } - elseif (! $_POST["capital"]) - { - setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Capital")), 'errors'); - $action = 'create'; - } - else - { - $object = new Loan($db); - - $object->label = $_POST["label"]; - $object->fk_bank = $_POST["accountid"]; - $object->capital = $_POST["capital"]; - $object->datestart = $datestart; - $object->dateend = $dateend; - $object->nbterm = $_POST["nbterm"]; - $object->rate = $_POST["rate"]; + $datestart=@dol_mktime(12,0,0, $_POST["startmonth"], $_POST["startday"], $_POST["startyear"]); + $dateend=@dol_mktime(12,0,0, $_POST["endmonth"], $_POST["endday"], $_POST["endyear"]); - $object->account_capital = $_POST["accountancy_account_capital"]; - $object->account_insurance = $_POST["accountancy_account_insurance"]; - $object->account_interest = $_POST["accountancy_account_interest"]; - - $id=$object->create($user); - if ($id <= 0) + if (! $datestart) { - setEventMessage($object->error, 'errors'); + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateStart")), 'errors'); + $action = 'create'; } - } -} - - -if ($action == 'update' && ! $cancel && $user->rights->loan->write) -{ - $datestart=dol_mktime(12,0,0, $GETPOST("startmonth"), $GETPOST("startday"), $GETPOST("startyear")); - $dateend=dol_mktime(12,0,0, $GETPOST("endmonth"), $GETPOST("endday"), $GETPOST("endyear")); - if (! $datestart) - { - setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateStart")), 'errors'); - $action = 'edit'; - } - elseif (! $dateend) - { - setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateEnd")), 'errors'); - $action = 'edit'; - } - else - { - $object = new Loan($db); - if ($object->fetch($id)) + elseif (! $dateend) { - $object->label = $GETPOST("label"); - $object->datestart = $datestart; - $object->dateend = $dateend; + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateEnd")), 'errors'); + $action = 'create'; } - - if ($object->update($id, $user) > 0) + elseif (! $_POST["capital"]) { - $action = ''; + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Capital")), 'errors'); + $action = 'create'; } else { - $action = 'edit'; - setEventMessage($object->error, 'errors'); + $object->label = $_POST["label"]; + $object->fk_bank = $_POST["accountid"]; + $object->capital = $_POST["capital"]; + $object->datestart = $datestart; + $object->dateend = $dateend; + $object->nbterm = $_POST["nbterm"]; + $object->rate = $_POST["rate"]; + + $object->account_capital = $_POST["accountancy_account_capital"]; + $object->account_insurance = $_POST["accountancy_account_insurance"]; + $object->account_interest = $_POST["accountancy_account_interest"]; + + $id=$object->create($user); + if ($id <= 0) + { + setEventMessage($object->error, 'errors'); + } } } + else + { + header("Location: index.php"); + exit(); + } } +// Update record +else if ($action == 'update' && $user->rights->loan->write) +{ + if (! $cancel) + { + $result = $object->fetch($id); + + if ($object->fetch($id)) + { + $object->label = GETPOST("label"); + $object->datestart = dol_mktime(12, 0, 0, GETPOST('startmonth','int'), GETPOST('startday','int'), GETPOST('startyear','int')); + $object->dateend = dol_mktime(12, 0, 0, GETPOST('endmonth','int'), GETPOST('endday','int'), GETPOST('endyear','int')); + $object->nbterm = GETPOST("nbterm"); + $object->rate = GETPOST("rate"); + } + + $result = $object->update($user); + if ($result > 0) + { + header("Location: " . $_SERVER["PHP_SELF"] . "?id=" . $id); + exit; + } + else + { + setEventMessage($object->error, 'errors'); + } + } + else + { + header("Location: " . $_SERVER["PHP_SELF"] . "?id=" . $id); + exit; + } +} /* * View @@ -212,10 +214,10 @@ if ($action == 'create') print ''; // Number of terms - print ''; + print ''; // Rate - print ''; + print ''; // Note print ''; @@ -273,7 +275,6 @@ if ($action == 'create') // View if ($id > 0) { - $object = new Loan($db); $result = $object->fetch($id); if ($result > 0) @@ -297,8 +298,10 @@ if ($id > 0) if ($action == 'edit') { - print 'id&action=update" method="POST">'; - print ''; + print '' . "\n"; + print ''; + print ''; + print ''; } print '
  '; + print ''; print ''; - print "
'.$langs->trans("Nbterms").'
'.$langs->trans("Nbterms").'
'.$langs->trans("Rate").'
'.$langs->trans("Rate").' %
'; @@ -353,7 +356,7 @@ if ($id > 0) print ''; // Rate - print ''; + print ''; // Status print ''; @@ -378,8 +381,9 @@ if ($id > 0) /* * Payments */ - $sql = "SELECT p.rowid, p.num_payment, datep as dp, p.amount,"; - $sql.= "c.libelle as paiement_type"; + $sql = "SELECT p.rowid, p.num_payment, datep as dp,"; + $sql.= " p.amount_capital, p.amount_insurance, p.amount_interest,"; + $sql.= " c.libelle as paiement_type"; $sql.= " FROM ".MAIN_DB_PREFIX."payment_loan as p"; $sql.= ", ".MAIN_DB_PREFIX."c_paiement as c "; $sql.= ", ".MAIN_DB_PREFIX."loan as l"; @@ -400,7 +404,9 @@ if ($id > 0) print ''; print ''; print ''; - print ''; + print ''; + print ''; + print ''; print ''; print ''; @@ -413,21 +419,23 @@ if ($id > 0) print ''.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.''; print '\n"; print "\n"; - print '\n"; + print '\n"; + print '\n"; + print '\n"; print ""; - $totalpaid += $objp->amount; + $totalpaid += $objp->amount_capital; $i++; } if ($object->paid == 0) { - print "\n"; - print "\n"; + print ''; + print ''; $staytopay = $object->capital - $totalpaid; - print ""; - print "\n"; + print ''; + print ''; } print "
'.$langs->trans("Nbterms").''.$object->nbterm.'
'.$langs->trans("Rate").''.$object->rate.'
'.$langs->trans("Rate").''.$object->rate.' %
'.$langs->trans("Status").''.$object->getLibStatut(4, $totalpaye).'
'.$langs->trans("RefPayment").''.$langs->trans("Date").''.$langs->trans("Type").''.$langs->trans("Amount").''.$langs->trans("Insurance").''.$langs->trans("Interest").''.$langs->trans("Capital").' 
'.dol_print_date($db->jdate($objp->dp),'day')."".$objp->paiement_type.' '.$objp->num_payment."'.price($objp->amount)." ".$langs->trans("Currency".$conf->currency)."'.price($objp->amount_insurance)." ".$langs->trans("Currency".$conf->currency)."'.price($objp->amount_interest)." ".$langs->trans("Currency".$conf->currency)."'.price($objp->amount_capital)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("AlreadyPaid")." :".price($totalpaid)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("AmountExpected")." :".price($object->capital)." ".$langs->trans("Currency".$conf->currency)."
'.$langs->trans("AlreadyPaid").' :'.price($totalpaid).' '.$langs->trans("Currency".$conf->currency).'
'.$langs->trans("AmountExpected").' :'.price($object->capital).' '.$langs->trans("Currency".$conf->currency).'
".$langs->trans("RemainderToPay")." :".price($staytopay)." ".$langs->trans("Currency".$conf->currency)."
'.$langs->trans("RemainderToPay").' :'.price($staytopay).' '.$langs->trans("Currency".$conf->currency).'
"; $db->free($resql); @@ -444,7 +452,7 @@ if ($id > 0) */ if ($action != 'edit') { - print "
\n"; + print '
'; // Edit if ($user->rights->loan->write) diff --git a/htdocs/compta/loan/class/loan.class.php b/htdocs/compta/loan/class/loan.class.php index 07b842b708e..b8fcf04728f 100644 --- a/htdocs/compta/loan/class/loan.class.php +++ b/htdocs/compta/loan/class/loan.class.php @@ -263,8 +263,8 @@ class Loan extends CommonObject /** * Update loan * - * @param User $user Utilisateur qui modifie - * @return int <0 si erreur, >0 si ok + * @param User $user User who modified + * @return int <0 if error, >0 if ok */ function update($user) { @@ -273,7 +273,8 @@ class Loan extends CommonObject $sql = "UPDATE ".MAIN_DB_PREFIX."loan"; $sql.= " SET label='".$this->db->escape($this->label)."',"; $sql.= " datestart='".$this->db->idate($this->datestart)."',"; - $sql.= " dateend='".$this->db->idate($this->dateend)."'"; + $sql.= " dateend='".$this->db->idate($this->dateend)."',"; + $sql.= " fk_user_modif = ".$user->id; $sql.= " WHERE rowid=".$this->id; dol_syslog(get_class($this)."::update", LOG_DEBUG); @@ -379,7 +380,7 @@ class Loan extends CommonObject * @param int $maxlen Label max length * @return string Chaine with URL */ - function getNameUrl($withpicto=0,$maxlen=0) + function getLinkUrl($withpicto=0,$maxlen=0) { global $langs; @@ -432,40 +433,43 @@ class Loan extends CommonObject * @param int $id Id of record * @return void */ - function info($id) - { - $sql = "SELECT l.rowid, l.tms as datem, l.fk_user_author as user_author, l.datec as datec"; - $sql.= " FROM ".MAIN_DB_PREFIX."loan as l"; - $sql.= " WHERE l.rowid = ".$id; + function info($id) + { + $sql = 'SELECT l.rowid, l.datec, l.fk_user_author, l.fk_user_modif,'; + $sql.= ' l.tms'; + $sql.= ' FROM '.MAIN_DB_PREFIX.'loan as l'; + $sql.= ' WHERE l.rowid = '.$id; - dol_syslog(get_class($this)."::info", LOG_DEBUG); - $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->user_author) { - $cuser = new User($this->db); - $cuser->fetch($obj->user_author); - $this->user_creation = $cuser; - } - - $this->date_creation = $this->db->jdate($obj->datec); - $this->date_modification = $this->db->jdate($obj->datem); - - } - - $this->db->free($result); - - } - else - { - dol_print_error($this->db); - } - } -} + dol_syslog(get_class($this).'::info', LOG_DEBUG); + $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_modif) + { + $muser = new User($this->db); + $muser->fetch($obj->fk_user_modif); + $this->user_modification = $muser; + } + $this->date_creation = $this->db->jdate($obj->datec); + if (empty($obj->fk_user_modif)) $obj->tms = ""; + $this->date_modification = $this->db->jdate($obj->tms); + } + $this->db->free($result); + } + else + { + dol_print_error($this->db); + } + } +} \ No newline at end of file diff --git a/htdocs/compta/loan/class/paymentloan.class.php b/htdocs/compta/loan/class/paymentloan.class.php index 0a558fc9bf4..944cfe4ce2f 100644 --- a/htdocs/compta/loan/class/paymentloan.class.php +++ b/htdocs/compta/loan/class/paymentloan.class.php @@ -39,8 +39,10 @@ class PaymentLoan extends CommonObject var $datec=''; var $tms=''; var $datep=''; - var $amount; // Total amount of payment var $amounts=array(); // Array of amounts + var $amount_capital; // Total amount of payment + var $amount_insurance; + var $amount_interest; var $fk_typepayment; var $num_payment; var $note; @@ -82,7 +84,9 @@ class PaymentLoan extends CommonObject // Clean parameters if (isset($this->fk_loan)) $this->fk_loan = trim($this->fk_loan); - if (isset($this->amount)) $this->amount = trim($this->amount); + if (isset($this->amount_capital)) $this->amount_capital = trim($this->amount_capital); + if (isset($this->amount_insurance)) $this->amount_insurance = trim($this->amount_insurance); + if (isset($this->amount_interest)) $this->amount_interest = trim($this->amount_interest); if (isset($this->fk_typepayment)) $this->fk_typepayment = trim($this->fk_typepayment); if (isset($this->num_payment)) $this->num_payment = trim($this->num_payment); if (isset($this->note)) $this->note = trim($this->note); @@ -107,7 +111,7 @@ class PaymentLoan extends CommonObject if ($totalamount != 0) { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."payment_loan (fk_loan, datec, datep, amount,"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."payment_loan (fk_loan, datec, datep, amount_capital, amount_insurance, amount_interest,"; $sql.= " fk_typepayment, num_payment, note, fk_user_creat, fk_bank)"; $sql.= " VALUES ($this->chid, '".$this->db->idate($now)."',"; $sql.= " '".$this->db->idate($this->datepaid)."',"; @@ -130,7 +134,7 @@ class PaymentLoan extends CommonObject if ($totalamount != 0 && ! $error) { - $this->amount=$totalamount; + $this->amount_capital=$totalamount; $this->total=$totalamount; // deprecated $this->db->commit(); return $this->id; @@ -158,7 +162,9 @@ class PaymentLoan extends CommonObject $sql.= " t.datec,"; $sql.= " t.tms,"; $sql.= " t.datep,"; - $sql.= " t.amount,"; + $sql.= " t.amount_capital,"; + $sql.= " t.amount_insurance,"; + $sql.= " t.amount_interest,"; $sql.= " t.fk_typepayment,"; $sql.= " t.num_payment,"; $sql.= " t.note,"; @@ -186,7 +192,9 @@ class PaymentLoan extends CommonObject $this->datec = $this->db->jdate($obj->datec); $this->tms = $this->db->jdate($obj->tms); $this->datep = $this->db->jdate($obj->datep); - $this->amount = $obj->amount; + $this->amount_capital = $obj->amount_capital; + $this->amount_insurance = $obj->amount_insurance; + $this->amount_interest = $obj->amount_interest; $this->fk_typepayment = $obj->fk_typepayment; $this->num_payment = $obj->num_payment; $this->note = $obj->note; @@ -225,9 +233,10 @@ class PaymentLoan extends CommonObject $error=0; // Clean parameters - if (isset($this->fk_loan)) $this->fk_loan=trim($this->fk_loan); - if (isset($this->amount)) $this->amount=trim($this->amount); + if (isset($this->amount_capital)) $this->amount_capital=trim($this->amount_capital); + if (isset($this->amount_insurance)) $this->amount_insurance=trim($this->amount_insurance); + if (isset($this->amount_interest)) $this->amount_interest=trim($this->amount_interest); if (isset($this->fk_typepayment)) $this->fk_typepayment=trim($this->fk_typepayment); if (isset($this->num_payment)) $this->num_payment=trim($this->num_payment); if (isset($this->note)) $this->note=trim($this->note); @@ -245,7 +254,9 @@ class PaymentLoan extends CommonObject $sql.= " datec=".(dol_strlen($this->datec)!=0 ? "'".$this->db->idate($this->datec)."'" : 'null').","; $sql.= " tms=".(dol_strlen($this->tms)!=0 ? "'".$this->db->idate($this->tms)."'" : 'null').","; $sql.= " datep=".(dol_strlen($this->datep)!=0 ? "'".$this->db->idate($this->datep)."'" : 'null').","; - $sql.= " amount=".(isset($this->amount)?$this->amount:"null").","; + $sql.= " amount_capital=".(isset($this->amount_capital)?$this->amount_capital:"null").","; + $sql.= " amount_insurance=".(isset($this->amount_insurance)?$this->amount_insurance:"null").","; + $sql.= " amount_interest=".(isset($this->amount_interest)?$this->amount_interest:"null").","; $sql.= " fk_typepayment=".(isset($this->fk_typepayment)?$this->fk_typepayment:"null").","; $sql.= " num_payment=".(isset($this->num_payment)?"'".$this->db->escape($this->num_payment)."'":"null").","; $sql.= " note=".(isset($this->note)?"'".$this->db->escape($this->note)."'":"null").","; diff --git a/htdocs/compta/loan/index.php b/htdocs/compta/loan/index.php index 2834ce2069f..720b52de0a1 100644 --- a/htdocs/compta/loan/index.php +++ b/htdocs/compta/loan/index.php @@ -47,6 +47,7 @@ $limit = $conf->liste_limit; $search_ref=GETPOST('search_ref','int'); $search_label=GETPOST('search_label','alpha'); +$search_amount=GETPOST('search_amount','alpha'); $filtre=GETPOST("filtre"); if (GETPOST("button_removefilter")) @@ -60,36 +61,37 @@ if (GETPOST("button_removefilter")) * View */ -$loan = new Loan($db); +$loan_static = new Loan($db); llxHeader(); $sql = "SELECT l.rowid, l.label, l.capital, l.datestart, l.dateend,"; -$sql.= " SUM(pl.amount) as alreadypayed"; -$sql.= " FROM ".MAIN_DB_PREFIX."loan as l,"; -$sql.= " ".MAIN_DB_PREFIX."payment_loan as pl"; -$sql.= " WHERE pl.fk_loan = l.rowid"; -$sql.= " AND l.entity = ".$conf->entity; -if (GETPOST("search_ref")) $sql.=" AND (l.rowid = ".$db->escape($search_ref).")"; -if (GETPOST("search_label")) $sql.=" AND l.label LIKE '%".$db->escape($search_label)."%'"; - +$sql.= " SUM(pl.amount_capital) as alreadypayed"; +$sql.= " FROM ".MAIN_DB_PREFIX."loan as l LEFT JOIN ".MAIN_DB_PREFIX."payment_loan AS pl"; +$sql.= " ON l.rowid = pl.fk_loan"; +$sql.= " WHERE l.entity = ".$conf->entity; +if ($search_amount) $sql.=" AND l.capital='".$db->escape(price2num(trim($search_amount)))."'"; +if ($search_ref) $sql.=" AND l.rowid = ".$db->escape($search_ref); +if ($search_label) $sql.=" AND l.label LIKE '%".$db->escape($search_label)."%'"; if ($filtre) { $filtre=str_replace(":","=",$filtre); $sql .= " AND ".$filtre; } +$sql.= " GROUP BY l.rowid, l.label, l.capital, l.datestart, l.dateend"; $sql.= $db->order($sortfield,$sortorder); -$sql.= $db->plimit($limit + 1, $offset); +$sql.= $db->plimit($limit+1, $offset); //print $sql; $resql=$db->query($sql); if ($resql) { $num = $db->num_rows($resql); + $i = 0; + $var=true; print_fiche_titre($langs->trans("Loans")); - $i = 0; - print ''."\n"; + print ''."\n"; print ''; print ''; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"l.rowid","",$param,"",$sortfield,$sortorder); @@ -101,9 +103,9 @@ if ($resql) // Filters lines print ''; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; print ''; print ''; print ''; - $var=true; while ($i < min($num,$limit)) { $obj = $db->fetch_object($resql); - + $var = !$var; print ""; // Ref - print ''; + print ''; // Label print ''; @@ -134,7 +132,7 @@ if ($resql) // Date start print ''; - print ''; + print ''; print "\n"; diff --git a/htdocs/compta/loan/payment/card.php b/htdocs/compta/loan/payment/card.php index d08c5f8ce0f..4dc1407e8ad 100644 --- a/htdocs/compta/loan/payment/card.php +++ b/htdocs/compta/loan/payment/card.php @@ -118,7 +118,6 @@ if ($action == 'confirm_valide' && $confirm == 'yes' && $user->rights->loan->wri llxHeader(); $loan = new Loan($db); - $form = new Form($db); $h=0; @@ -168,7 +167,9 @@ print ''; // Amount -print ''; +print ''; +print ''; +print ''; // Note print ''; @@ -198,7 +199,7 @@ print '
   '; print ''; @@ -111,19 +113,15 @@ if ($resql) print '
'; - $loan->id = $obj->id; - print $loan->getNameUrl(1,'20'); - print ''.img_object($langs->trans("ShowLoan"),"label").' '.$obj->rowid.''.dol_trunc($obj->label,42).''.dol_print_date($db->jdate($obj->datestart), 'day').''.$loan->LibStatut($obj->paid,5,$obj->alreadypayed).''.$loan_static->LibStatut($obj->paid,5,$obj->alreadypayed).'
'.$langs->trans('Mode').''.$lan print '
'.$langs->trans('Number').''.$payment->num_payment.'
'.$langs->trans('Amount').''.price($payment->amount, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans('Capital').''.price($payment->amount_capital, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans('Insurance').''.price($payment->amount_insurance, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans('Interest').''.price($payment->amount_interest, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans('Note').''.nl2br($payment->note).'
'; */ $disable_delete = 0; -$sql = 'SELECT l.rowid as id, l.label, l.paid, l.capital as capital, pl.amount'; +$sql = 'SELECT l.rowid as id, l.label, l.paid, l.capital as capital, pl.amount_capital, pl.amount_insurance, pl.amount_interest'; $sql.= ' FROM '.MAIN_DB_PREFIX.'payment_loan as pl,'.MAIN_DB_PREFIX.'loan as l'; $sql.= ' WHERE pl.fk_loan = l.rowid'; $sql.= ' AND l.entity = '.$conf->entity; @@ -234,22 +235,22 @@ if ($resql) // Ref print ''; $loan->fetch($objp->id); - print $loan->getNameUrl(1); + print $loan->getLinkUrl(1); print "\n"; // Label print ''.$objp->label.''; // Expected to pay print ''.price($objp->capital).''; // Status - print ''.$loan->getLibStatut(4,$objp->amount).''; + print ''.$loan->getLibStatut(4,$objp->amount_capital).''; // Amount payed - print ''.price($objp->amount).''; + print ''.price($objp->amount_capital).''; print "\n"; - if ($objp->paye == 1) // If at least one invoice is paid, disable delete + if ($objp->paid == 1) // If at least one invoice is paid, disable delete { $disable_delete = 1; } - $total = $total + $objp->amount; + $total = $total + $objp->amount_capital; $i++; } } @@ -267,7 +268,7 @@ print '
'; /* - * Boutons Actions + * Actions buttons */ print '
'; diff --git a/htdocs/compta/loan/payment/payment.php b/htdocs/compta/loan/payment/payment.php index ed249d8f246..678ca1b8429 100644 --- a/htdocs/compta/loan/payment/payment.php +++ b/htdocs/compta/loan/payment/payment.php @@ -29,9 +29,10 @@ require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $langs->load("bills"); $langs->load("loan"); -$chid=GETPOST("id"); +$chid=GETPOST('id','int'); $action=GETPOST('action'); $amounts = array(); +$cancel=GETPOST('cancel','alpha'); // Security check $socid=0; @@ -47,7 +48,7 @@ if ($action == 'add_payment') { $error=0; - if ($_POST["cancel"]) + if ($cancel) { $loc = DOL_URL_ROOT.'/compta/loan/card.php?id='.$chid; header("Location: ".$loc); @@ -98,12 +99,15 @@ if ($action == 'add_payment') // Create a line of payments $payment = new PaymentLoan($db); - $payment->chid = $chid; - $payment->datepaid = $datepaid; - $payment->amounts = $amounts; // Tableau de montant - $payment->paymenttype = $_POST["paymenttype"]; - $payment->num_payment = $_POST["num_payment"]; - $payment->note = $_POST["note"]; + $payment->chid = $chid; + $payment->datepaid = $datepaid; + $payment->amounts = $amounts; // Tableau de montant + $payment->amount_capital = $_POST["amount_capital"]; + $payment->amount_insurance = $_POST["amount_insurance"]; + $payment->amount_interest = $_POST["amount_interest"]; + $payment->paymenttype = $_POST["paymenttype"]; + $payment->num_payment = $_POST["num_payment"]; + $payment->note = $_POST["note"]; if (! $error) { @@ -177,12 +181,12 @@ if ($_GET["action"] == 'create') print ''; - print ""; + print ''; print ''; - print '\n"; + print '\n"; print '\n"; - print ''; + print ''; $sql = "SELECT sum(p.amount) as total"; $sql.= " FROM ".MAIN_DB_PREFIX."payment_loan as p"; @@ -204,7 +208,7 @@ if ($_GET["action"] == 'create') print '
".$langs->trans("Loan")."
'.$langs->trans("Loan").'
'.$langs->trans("Ref").''.$chid.'
'.$langs->trans("DateStart")."".dol_print_date($loan->datestart,'day')."
'.$langs->trans("DateStart").''.dol_print_date($loan->datestart,'day')."
'.$langs->trans("Label").''.$loan->label."
'.$langs->trans("Amount")."".price($loan->capital,0,$outputlangs,1,-1,-1,$conf->currency).'
'.$langs->trans("Amount").''.price($loan->capital,0,$outputlangs,1,-1,-1,$conf->currency).'
'; print ''; - print "'; + print ''; print ''; print ''; + } else { + print ''; + } + } + print ''; + } + + if ($soc->outstanding_limit) + { + // Outstanding Bill + print ''; + print ''; + } + + if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && $conf->banque->enabled) + { + // Bank Account + print ''; + print ''; + } + + // Other attributes + $cols = 3; + include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_view.tpl.php'; + + // Amount HT + print ''; + print ''; + print ''; + + // Margin Infos + if (! empty($conf->margin->enabled)) { + print ''; + } + print ''; + + // Amount VAT + print ''; + print ''; + print ''; + + // Amount Local Taxes + if ($mysoc->localtax1_assuj == "1" || $object->total_localtax1 != 0) // Localtax1 + { + print ''; + print ''; + print ''; + } + if ($mysoc->localtax2_assuj == "1" || $object->total_localtax2 != 0) // Localtax2 + { + print ''; + print ''; + print ''; + } + + // Amount TTC + print ''; + print ''; + print ''; + + // Statut + print ''; + + print '
".$langs->trans("Payment").''.$langs->trans("Payment").'
'.$langs->trans("Date").''; @@ -249,10 +253,10 @@ if ($_GET["action"] == 'create') print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; - print ''; + print ''; print "\n"; $var=True; @@ -269,24 +273,44 @@ if ($_GET["action"] == 'create') if ($objp->datestart > 0) { - print "\n"; + print ''; } else { - print "\n"; + print ''; } - print '"; + print '"; - print '"; + print '"; - print '"; + print '"; - print '"; print ''; - print ""; - print ""; - print ""; + print ''; + print ''; + print ''; print ''; print "\n"; } diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql index 95158c60a4f..0cbede46864 100755 --- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql +++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql @@ -1099,48 +1099,6 @@ CREATE TABLE llx_usergroup_extrafields ( ALTER TABLE llx_usergroup_extrafields ADD INDEX idx_usergroup_extrafields (fk_object); --- Loan -create table llx_loan -( - rowid integer AUTO_INCREMENT PRIMARY KEY, - entity integer DEFAULT 1 NOT NULL, - datec datetime, - tms timestamp, - label varchar(80) NOT NULL, - fk_bank integer, - capital real default 0 NOT NULL, - datestart date, - dateend date, - nbterm real, - rate double NOT NULL, - note text, - capital_position real default 0, - date_position date, - paid smallint default 0 NOT NULL, - accountancy_account_capital varchar(32), - accountancy_account_insurance varchar(32), - accountancy_account_interest varchar(32), - fk_user_author integer DEFAULT NULL, - fk_user_modif integer DEFAULT NULL, - active tinyint DEFAULT 1 NOT NULL -)ENGINE=innodb; - -create table llx_payment_loan -( - rowid integer AUTO_INCREMENT PRIMARY KEY, - fk_loan integer, - datec datetime, - tms timestamp, - datep datetime, - amount real DEFAULT 0, - fk_typepayment integer NOT NULL, - num_payment varchar(50), - note text, - fk_bank integer NOT NULL, - fk_user_creat integer, - fk_user_modif integer -)ENGINE=innodb; - ALTER TABLE llx_contrat ADD COLUMN model_pdf varchar(255) DEFAULT NULL AFTER note_public; ALTER TABLE llx_c_country ADD COLUMN favorite tinyint DEFAULT 0 AFTER active; diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql new file mode 100644 index 00000000000..93f2197de12 --- /dev/null +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -0,0 +1,63 @@ +-- +-- Be carefull to requests order. +-- This file must be loaded by calling /install/index.php page +-- when current version is 3.8.0 or higher. +-- +-- To rename a table: ALTER TABLE llx_table RENAME TO llx_table_new; +-- To add a column: ALTER TABLE llx_table ADD COLUMN newcol varchar(60) NOT NULL DEFAULT '0' AFTER existingcol; +-- To rename a column: ALTER TABLE llx_table CHANGE COLUMN oldname newname varchar(60); +-- To drop a column: ALTER TABLE llx_table DROP COLUMN oldname; +-- To change type of field: ALTER TABLE llx_table MODIFY COLUMN name varchar(60); +-- To drop a foreign key: ALTER TABLE llx_table DROP FOREIGN KEY fk_name; +-- To restrict request to Mysql version x.y use -- VMYSQLx.y +-- To restrict request to Pgsql version x.y use -- VPGSQLx.y +-- To make pk to be auto increment (mysql): VMYSQL4.3 ALTER TABLE llx_c_shipment_mode CHANGE COLUMN rowid rowid INTEGER NOT NULL AUTO_INCREMENT; +-- To make pk to be auto increment (postgres): VPGSQL8.2 NOT POSSIBLE. MUST DELETE/CREATE TABLE +-- To set a field as NULL: VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name DROP NOT NULL; +-- To set a field as default NULL: VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name SET DEFAULT NULL; +-- -- VPGSQL8.2 DELETE FROM llx_usergroup_user WHERE fk_user NOT IN (SELECT rowid from llx_user); +-- -- VMYSQL4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup); + +-- Loan +create table llx_loan +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + entity integer DEFAULT 1 NOT NULL, + datec datetime, + tms timestamp, + label varchar(80) NOT NULL, + fk_bank integer, + capital real default 0 NOT NULL, + datestart date, + dateend date, + nbterm real, + rate double NOT NULL, + note text, + capital_position real default 0, + date_position date, + paid smallint default 0 NOT NULL, + accountancy_account_capital varchar(32), + accountancy_account_insurance varchar(32), + accountancy_account_interest varchar(32), + fk_user_author integer DEFAULT NULL, + fk_user_modif integer DEFAULT NULL, + active tinyint DEFAULT 1 NOT NULL +)ENGINE=innodb; + +create table llx_payment_loan +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + fk_loan integer, + datec datetime, + tms timestamp, + datep datetime, + amount_capital real DEFAULT 0, + amount_insurance real DEFAULT 0, + amount_interest real DEFAULT 0, + fk_typepayment integer NOT NULL, + num_payment varchar(50), + note text, + fk_bank integer NOT NULL, + fk_user_creat integer, + fk_user_modif integer +)ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_payment_loan.sql b/htdocs/install/mysql/tables/llx_payment_loan.sql index 83bb3ac2548..0fb6b566ca5 100644 --- a/htdocs/install/mysql/tables/llx_payment_loan.sql +++ b/htdocs/install/mysql/tables/llx_payment_loan.sql @@ -23,7 +23,9 @@ create table llx_payment_loan datec datetime, -- creation date tms timestamp, datep datetime, -- payment date - amount real DEFAULT 0, + amount_capital real DEFAULT 0, + amount_insurance real DEFAULT 0, + amount_interest real DEFAULT 0, fk_typepayment integer NOT NULL, num_payment varchar(50), note text, diff --git a/htdocs/langs/en_US/loan.lang b/htdocs/langs/en_US/loan.lang index 10fb0249f6d..9ccff4eecf4 100644 --- a/htdocs/langs/en_US/loan.lang +++ b/htdocs/langs/en_US/loan.lang @@ -5,10 +5,13 @@ NewLoan=New Loan ShowLoan=Show Loan PaymentLoan=Loan payment Capital=Capital +Insurance=Insurance +Interest=Interest Nbterms=Number of terms LoanAccountancyCapitalCode=Accountancy code capital LoanAccountancyInsuranceCode=Accountancy code insurance LoanAccountancyInterestCode=Accountancy code interest +LoanPayment=Loan payment ConfirmDeleteLoan=Confirm deleting this loan ConfirmPayLoan=Confirm classify paid this loan ErrorLoanCapital=Loan amount has to be numeric and greater than zero. diff --git a/htdocs/langs/fr_FR/loan.lang b/htdocs/langs/fr_FR/loan.lang index 1e54f90e2be..0a5c6320d5b 100644 --- a/htdocs/langs/fr_FR/loan.lang +++ b/htdocs/langs/fr_FR/loan.lang @@ -5,10 +5,13 @@ NewLoan=Nouvel emprunt ShowLoan=Voir emprunt PaymentLoan=Règlement d'emprunt Capital=Capital +Insurance=Assurance +Interest=Intérêt Nbterms=Nombre d'échéances LoanAccountancyCapitalCode=Compte comptable capital LoanAccountancyInsuranceCode=Compte comptable assurance LoanAccountancyInterestCode=Compte comptable intérêts +LoanPayment=Règlement emprunt ConfirmDeleteLoan=Confirmation de supression de cet emprunt ConfirmPayLoan=Confirmation que cet emprunt est classé comme payé ErrorLoanCapital=Le capital de l'emprunt doit être au format numérique et supérieur à zéro. From 15e44b6e28bc873e20a45133df22679167e02346 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Mon, 10 Nov 2014 06:39:37 +0100 Subject: [PATCH 015/429] Correct Auguria menu --- htdocs/core/menus/init_menu_auguria.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index a4833551f5b..bf35ac2806e 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -179,8 +179,8 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2211__+MAX_llx_menu__, 'accountancy', '', 2210__+MAX_llx_menu__, '/compta/salaries/card.php?leftmenu=tax_salary&action=create', 'NewPayment', 2, 'companies', '$user->rights->salaries->write', '', 0, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2212__+MAX_llx_menu__, 'accountancy', '', 2210__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary', 'Payments', 2, 'companies', '$user->rights->salaries->read', '', 0, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled', __HANDLER__, 'left', 2220__+MAX_llx_menu__, 'accountancy', 'tax_loan', 2200__+MAX_llx_menu__, '/compta/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy', 'Loans', 1, 'loan', '$user->rights->loan->read', '', 0, 1, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2221__+MAX_llx_menu__, 'accountancy', '', 2210__+MAX_llx_menu__, '/compta/loan/card.php?leftmenu=tax_loan&action=create', 'NewLoan', 2, 'loan', '$user->rights->loan->write', '', 0, 2, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2222__+MAX_llx_menu__, 'accountancy', '', 2210__+MAX_llx_menu__, '/compta/loan/index.php?leftmenu=tax_loan', 'Payments', 2, 'companies', '$user->rights->loan->read', '', 0, 3, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2221__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/compta/loan/card.php?leftmenu=tax_loan&action=create', 'NewLoan', 2, 'loan', '$user->rights->loan->write', '', 0, 2, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2222__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/compta/loan/index.php?leftmenu=tax_loan', 'Payments', 2, 'companies', '$user->rights->loan->read', '', 0, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled', __HANDLER__, 'left', 2250__+MAX_llx_menu__, 'accountancy', 'tax_social', 2200__+MAX_llx_menu__, '/compta/sociales/index.php?leftmenu=tax_social', 'SocialContributions', 1, '', '$user->rights->tax->charges->lire', '', 0, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2251__+MAX_llx_menu__, 'accountancy', '', 2250__+MAX_llx_menu__, '/compta/sociales/charges.php?leftmenu=tax_social&action=create', 'MenuNewSocialContribution', 2, '', '$user->rights->tax->charges->creer', '', 0, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2252__+MAX_llx_menu__, 'accountancy', '', 2250__+MAX_llx_menu__, '/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly', 'Payments', 2, '', '$user->rights->tax->charges->lire', '', 0, 3, __ENTITY__); From c70539b3b220755594ffd4432f433fbdd7cd3c15 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 12 Nov 2014 07:33:03 +0100 Subject: [PATCH 016/429] Bug & merge --- htdocs/compta/bank/account.php | 2 +- htdocs/fichinter/card.php | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/compta/bank/account.php b/htdocs/compta/bank/account.php index 858df658158..875fb4a7ab2 100644 --- a/htdocs/compta/bank/account.php +++ b/htdocs/compta/bank/account.php @@ -727,7 +727,7 @@ if ($id > 0 || ! empty($ref)) $loanstatic->label=$links[$key]['label']; } $loanstatic->ref=$loanstatic->label; - print $loanstatic->getNameUrl(1,16); + print $loanstatic->getLinkUrl(1,16); } else if ($links[$key]['type']=='member') { diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index 77c7e17ffb5..4ffc31c9cab 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -748,10 +748,10 @@ if ($action == 'send' && ! GETPOST('cancel','alpha') && (empty($conf->global->MA $actionmsg = $langs->transnoentities('MailSentBy').' '.$from.' '.$langs->transnoentities('To').' '.$sendto; if ($message) { - if ($sendtocc) $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('Bcc') . ": " . $sendtocc); - $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('MailTopic') . ": " . $subject); - $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('TextUsedInTheMessageBody') . ":"); - $actionmsg = dol_concatdesc($actionmsg, $message); + if ($sendtocc) $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('Bcc') . ": " . $sendtocc); + $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('MailTopic') . ": " . $subject); + $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('TextUsedInTheMessageBody') . ":"); + $actionmsg = dol_concatdesc($actionmsg, $message); } $actionmsg2=$langs->transnoentities("InterventionSentByEMail",$object->ref); } From d15ef855da78952f3258c788ead2ba82aff75744 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 12 Nov 2014 07:37:59 +0100 Subject: [PATCH 017/429] Correct travis --- htdocs/langs/tr_TR/main.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/tr_TR/main.lang b/htdocs/langs/tr_TR/main.lang index 87b19cf7d91..63a4c3904c9 100644 --- a/htdocs/langs/tr_TR/main.lang +++ b/htdocs/langs/tr_TR/main.lang @@ -7,7 +7,7 @@ DIRECTION=ltr FONTFORPDF=DejaVuSans FONTSIZEFORPDF=8 SeparatorDecimal=, -SeparatorThousand=, +SeparatorThousand=Space FormatDateShort=%d/%m/%Y FormatDateShortInput=%d/%m/%Y FormatDateShortJava=dd/MM/yyyy From 31b90cf3834b48f4fda5ab2f5b41a56326935943 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Mon, 17 Nov 2014 06:38:06 +0100 Subject: [PATCH 018/429] Add 1st version of calculator but need work --- htdocs/compta/loan/calc.php | 385 ++++++++++++++++++++++++ htdocs/core/menus/init_menu_auguria.sql | 1 + htdocs/core/menus/standard/eldy.lib.php | 1 + htdocs/core/modules/modLoan.class.php | 8 + htdocs/langs/en_US/admin.lang | 1 + htdocs/langs/en_US/loan.lang | 2 + 6 files changed, 398 insertions(+) create mode 100644 htdocs/compta/loan/calc.php diff --git a/htdocs/compta/loan/calc.php b/htdocs/compta/loan/calc.php new file mode 100644 index 00000000000..5cc2c830094 --- /dev/null +++ b/htdocs/compta/loan/calc.php @@ -0,0 +1,385 @@ + + * Copyright (C) 2014 Alexandre Spangaro + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +require '../../main.inc.php'; + +$langs->load("loan"); + +/* --------------------------------------------------- * + * Set Form DEFAULT values + * --------------------------------------------------- */ +$default_sale_price = "150000"; +$default_annual_interest_percent = 7.0; +$default_year_term = 30; +$default_down_percent = 10; +$default_show_progress = TRUE; + +/* --------------------------------------------------- * + * Initialize Variables + * --------------------------------------------------- */ +$sale_price = 0; +$annual_interest_percent = 0; +$year_term = 0; +$down_percent = 0; +$this_year_interest_paid = 0; +$this_year_principal_paid = 0; +$form_complete = false; +$show_progress = false; +$monthly_payment = false; +$show_progress = false; +$error = false; + +/* --------------------------------------------------- * + * Set the USER INPUT values + * --------------------------------------------------- */ +if (isset($_REQUEST['form_complete'])) { + $sale_price = $_REQUEST['sale_price']; + $annual_interest_percent = $_REQUEST['annual_interest_percent']; + $year_term = $_REQUEST['year_term']; + $down_percent = $_REQUEST['down_percent']; + $show_progress = (isset($_REQUEST['show_progress'])) ? $_REQUEST['show_progress'] : false; + $form_complete = $_REQUEST['form_complete']; +} + +// This function does the actual mortgage calculations +// by plotting a PVIFA (Present Value Interest Factor of Annuity) +// table... +function get_interest_factor($year_term, $monthly_interest_rate) { + global $base_rate; + + $factor = 0; + $base_rate = 1 + $monthly_interest_rate; + $denominator = $base_rate; + for ($i=0; $i < ($year_term * 12); $i++) { + $factor += (1 / $denominator); + $denominator *= $base_rate; + } + return $factor; +} + +// If the form is complete, we'll start the math +if ($form_complete) { + // We'll set all the numeric values to JUST + // numbers - this will delete any dollars signs, + // commas, spaces, and letters, without invalidating + // the value of the number + $sale_price = preg_replace( "[^0-9.]", "", $sale_price); + $annual_interest_percent = preg_replace( "[^0-9.]", "", $annual_interest_percent); + $year_term = preg_replace( "[^0-9.]", "", $year_term); + $down_percent = preg_replace( "[^0-9.]", "", $down_percent); + + if (((float) $year_term <= 0) || ((float) $sale_price <= 0) || ((float) $annual_interest_percent <= 0)) { + $error = "You must enter a Sale Price of Home, Length of Motgage and Annual Interest Rate"; + } + + if (!$error) { + $month_term = $year_term * 12; + $down_payment = $sale_price * ($down_percent / 100); + $annual_interest_rate = $annual_interest_percent / 100; + $monthly_interest_rate = $annual_interest_rate / 12; + $financing_price = $sale_price - $down_payment; + $monthly_factor = get_interest_factor($year_term, $monthly_interest_rate); + $monthly_payment = $financing_price / $monthly_factor; + } +} else { + if (!$sale_price) { $sale_price = $default_sale_price; } + if (!$annual_interest_percent) { $annual_interest_percent = $default_annual_interest_percent; } + if (!$year_term) { $year_term = $default_year_term; } + if (!$down_percent) { $down_percent = $default_down_percent; } + if (!$show_progress) { $show_progress = $default_show_progress; } +} + +if ($error) { + print("" . $error . "

\n"); + $form_complete = false; +} + +/* + * View + */ + +llxHeader(); + +echo "This mortgage calculator can be used to figure out monthly payments of a home mortgage loan, + based on the home's sale price, the term of the loan desired, buyer's down payment percentage, and the loan's interest rate. + This calculator factors in PMI (Private Mortgage Insurance) for loans where less than 20% is put as a down payment. Also taken + into consideration are the town property taxes, and their effect on the total monthly mortgage payment.
"; + +print ''; +print ''; +print '
'.$langs->trans("DateDue").''.$langs->trans("Amount").''.$langs->trans("Capital").''.$langs->trans("AlreadyPaid").''.$langs->trans("RemainderToPay").''.$langs->trans("Amount").''.$langs->trans("Amount").'
".dol_print_date($objp->datestart,'day')."'.dol_print_date($objp->datestart,'day').'!!!!!!'.price($objp->capital)."'.price($objp->capital)."'.price($sumpaid)."'.price($sumpaid)."'.price($objp->capital - $sumpaid)."'.price($objp->capital - $sumpaid)."'; + print ''; if ($sumpaid < $objp->capital) { - $namef = "amount_".$objp->id; - print ''; + $namec = "amount_capital_".$objp->id; + print $langs->trans("Capital") .': '; + } + else + { + print '-'; + } + print '
'; + if ($sumpaid < $objp->capital) + { + $namea = "amount_insurance_".$objp->id; + print $langs->trans("Insurance") .': '; + } + else + { + print '-'; + } + print '
'; + if ($sumpaid < $objp->capital) + { + $namei = "amount_interest_".$objp->id; + print $langs->trans("Interest") .': '; } else { @@ -305,9 +329,9 @@ if ($_GET["action"] == 'create') // Print total print "
'.$langs->trans("Total").':".price($total_ttc)."".price($totalrecu)."".price($total_ttc - $totalrecu).""'.price($total_ttc).'""'.price($totalrecu).'""'.price($total_ttc - $totalrecu).'" 
'; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; + +if (! empty($show_progress)) +{ + print ''; +} +else +{ + print ''; +} + +print ''; +print '
Purchase & Financing Information
Sale Price of Home: '.$langs->trans("Currency".$conf->currency).'
Percentage Down:%
Length of Mortgage:years
Annual Interest Rate:%
Explain Calculations:Show me the calculations and amortizationShow me the calculations and amortization
'; + +print '
    '; +print '
'; + +// If the form has already been calculated, the $down_payment +// and $monthly_payment variables will be figured out, so we can show them in this table +if ($form_complete && $monthly_payment) +{ + print '
'; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + if ($down_percent < 20) + { + $pmi_per_month = 55 * ($financing_price / 100000); + + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + } + + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; +} + +print '
Mortgage Payment Information
Down Payment:' . number_format($down_payment, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '
Amount Financed:' . number_format($financing_price, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '
Monthly Payment:' . number_format($monthly_payment, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '
(Principal & Interest ONLY)
 '; + print '
'; + echo 'Since you are putting LESS than 20% down, you will need to pay PMI + (Private Mortgage Insurance), which tends + to be about $55 per month for every $100,000 financed (until you have paid off 20% of your loan). This could add + '."\$" . number_format($pmi_per_month, "2", ".", ",").' to your monthly payment.'; + print '
Monthly Payment:' . number_format(($monthly_payment + $pmi_per_month), "2", ".", ",") . $langs->trans("Currency".$conf->currency) . '
'; + print '(Principal & Interest, and PMI)
 '; + print '
'; + + $assessed_price = ($sale_price * .85); + $residential_yearly_tax = ($assessed_price / 1000) * 14; + $residential_monthly_tax = $residential_yearly_tax / 12; + + if ($pmi_per_month) + { + $pmi_text = "PMI and "; + } + + echo "Residential (or Property) Taxes are a little harder to figure out... In Massachusetts, the average resedential tax rate seems + to be around $14 per year for every $1,000 of your property's assessed value."; + + print '

'; + print "Let's say that your property's assessed value is 85% of what you actually paid for it - "; + print number_format($assessed_price, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . 'This would mean that your yearly residential taxes will be around'; + print number_format($residential_yearly_tax, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency); + print 'This could add ' . number_format($residential_monthly_tax, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . 'to your monthly payment'; + print '
TOTAL Monthly Payment:' . number_format(($monthly_payment + $pmi_per_month + $residential_monthly_tax), "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '
'; + print '(including '.$pmi_text.' residential tax)
'; +print ''; + +// This prints the calculation progress and +// the instructions of HOW everything is figured +// out +if ($form_complete && $show_progress) { + $step = 1; + + print '

'; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print '
'. $step++ .''; + echo 'The down payment + = The price of the home multiplied by the percentage down divided by 100 (for 5% down becomes 5/100 or 0.05)

+ ' . number_format($down_payment,"2",".",",") . ' ' . $langs->trans("Currency".$conf->currency) . ' = '.number_format($sale_price,"2",".",",") . ' ' . $langs->trans("Currency".$conf->currency) . ' X + ('.$down_percent.' / 100)'; + print '
' . $step++ . ''; + print 'The interest rate = The annual interest percentage divided by 100

'; + print $annual_interest_rate . ' = ' . $annual_interest_percent . '% / 100'; + print '
'; + print 'The monthly factor = The result of the following formula:'; + print '
' . $step++ . ''; + print 'The monthly interest rate = The annual interest rate divided by 12 (for the 12 months in a year)

'; + print $monthly_interest_rate . ' = ' . $annual_interest_rate . ' / 12'; + print '
' . $step++ . ''; + print 'The month term of the loan in months = The number of years you\'ve taken the loan out for times 12

'; + print $month_term . ' Months = ' . $year_term . ' Years X 12'; + print '
' . $step++ . ''; + print 'The montly payment is figured out using the following formula:
'; + print 'Monthly Payment = ' . number_format($financing_price, "2", "", "") . ' * '; + print number_format($monthly_interest_rate, "4", "", "") . ' / '; + print '(1 - ((1 + ' . number_format($monthly_interest_rate, "4", "", "") . ')'; + print '-(' . $month_term . '))))'; + print '

'; + print 'The amortization breaks down how much of your monthly payment goes towards the bank\'s interest,'; + print 'and how much goes into paying off the principal of your loan.'; + print '
'; + print '
'; + + + // Set some base variables + $principal = $financing_price; + $current_month = 1; + $current_year = 1; + + // This basically, re-figures out the monthly payment, again. + $power = -($month_term); + $denom = pow((1 + $monthly_interest_rate), $power); + $monthly_payment = $principal * ($monthly_interest_rate / (1 - $denom)); + + print("

Amortization For Monthly Payment: \$" . number_format($monthly_payment, "2", ".", ",") . " over " . $year_term . " years
\n"); + + print ''; + + // This LEGEND will get reprinted every 12 months + $legend = ''; + $legend.= ''; + $legend.= ''; + $legend.= ''; + $legend.= ''; + $legend.= ''; + + echo $legend; + + // Loop through and get the current month's payments for + // the length of the loan + while ($current_month <= $month_term) + { + $interest_paid = $principal * $monthly_interest_rate; + $principal_paid = $monthly_payment - $interest_paid; + $remaining_balance = $principal - $principal_paid; + + $this_year_interest_paid = $this_year_interest_paid + $interest_paid; + $this_year_principal_paid = $this_year_principal_paid + $principal_paid; + + $var = !$var; + print ""; + print ''; + print ''; + print ''; + print ''; + print ''; + + ($current_month % 12) ? $show_legend = FALSE : $show_legend = TRUE; + + if ($show_legend) { + print ''; + print ''; + print ''; + + $total_spent_this_year = $this_year_interest_paid + $this_year_principal_paid; + print ''; + print ''; + print ''; + print ''; + + print ''; + print ''; + print ''; + + $current_year++; + $this_year_interest_paid = 0; + $this_year_principal_paid = 0; + + if (($current_month + 6) < $month_term) + { + echo $legend; + } + } + $principal = $remaining_balance; + $current_month++; + } + print("
' . $langs->trans("Month") . '' . $langs->trans("Interest") . '' . $langs->trans("Capital") . '' . $langs->trans("Position") . '
' . $current_month . '' . number_format($interest_paid, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '' . number_format($principal_paid, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '' . number_format($remaining_balance, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '
' . $langs->trans("Totalsforyear") . ' ' . $current_year . '
 '; + print 'You will spend ' . number_format($total_spent_this_year, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . ' on your house in year ' . $current_year . '
'; + print number_format($this_year_interest_paid, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . ' will go towards INTEREST
'; + print number_format($this_year_principal_paid, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . ' will go towards PRINCIPAL
'; + print '
 
\n"); +} + +llxFooter(); + +$db->close(); diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index bf35ac2806e..a0a91cab781 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -181,6 +181,7 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled', __HANDLER__, 'left', 2220__+MAX_llx_menu__, 'accountancy', 'tax_loan', 2200__+MAX_llx_menu__, '/compta/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy', 'Loans', 1, 'loan', '$user->rights->loan->read', '', 0, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2221__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/compta/loan/card.php?leftmenu=tax_loan&action=create', 'NewLoan', 2, 'loan', '$user->rights->loan->write', '', 0, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2222__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/compta/loan/index.php?leftmenu=tax_loan', 'Payments', 2, 'companies', '$user->rights->loan->read', '', 0, 3, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2223__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/compta/loan/calc.php?leftmenu=tax_loan', 'Calculator', 2, 'companies', '$user->rights->loan->calc', '', 0, 4, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled', __HANDLER__, 'left', 2250__+MAX_llx_menu__, 'accountancy', 'tax_social', 2200__+MAX_llx_menu__, '/compta/sociales/index.php?leftmenu=tax_social', 'SocialContributions', 1, '', '$user->rights->tax->charges->lire', '', 0, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2251__+MAX_llx_menu__, 'accountancy', '', 2250__+MAX_llx_menu__, '/compta/sociales/charges.php?leftmenu=tax_social&action=create', 'MenuNewSocialContribution', 2, '', '$user->rights->tax->charges->creer', '', 0, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2252__+MAX_llx_menu__, 'accountancy', '', 2250__+MAX_llx_menu__, '/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly', 'Payments', 2, '', '$user->rights->tax->charges->lire', '', 0, 3, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 87c88ac028c..61ad1a4163f 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -817,6 +817,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/compta/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy",$langs->trans("Loans"),1,$user->rights->loan->read, '', $mainmenu, 'tax_loan'); if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/compta/loan/card.php?leftmenu=tax_loan&action=create",$langs->trans("NewLoan"),2,$user->rights->loan->write); if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/compta/loan/index.php?leftmenu=tax_loan",$langs->trans("Payments"),2,$user->rights->loan->read); + if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/compta/loan/calc.php?leftmenu=tax_loan",$langs->trans("Calculator"),2,$user->rights->loan->calc); } // Social contributions diff --git a/htdocs/core/modules/modLoan.class.php b/htdocs/core/modules/modLoan.class.php index fb2de1e3a02..21ae96eba26 100644 --- a/htdocs/core/modules/modLoan.class.php +++ b/htdocs/core/modules/modLoan.class.php @@ -118,6 +118,14 @@ class modLoan extends DolibarrModules $this->rights[$r][3] = 0; $this->rights[$r][4] = 'delete'; $this->rights[$r][5] = ''; + + $r++; + $this->rights[$r][0] = 525; + $this->rights[$r][1] = 'Access loan calculator'; + $this->rights[$r][2] = 'r'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'calc'; + $this->rights[$r][5] = ''; $r++; $this->rights[$r][0] = 527; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index a56a68f3b66..b1d69ae015d 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -698,6 +698,7 @@ Permission517=Export salaries Permission520=Read Loans Permission522=Create/modify loans Permission524=Delete loans +Permission525=Access loan calculator Permission527=Export loans Permission531=Read services Permission532=Create/modify services diff --git a/htdocs/langs/en_US/loan.lang b/htdocs/langs/en_US/loan.lang index 9ccff4eecf4..e59fc7898b8 100644 --- a/htdocs/langs/en_US/loan.lang +++ b/htdocs/langs/en_US/loan.lang @@ -17,6 +17,8 @@ ConfirmPayLoan=Confirm classify paid this loan ErrorLoanCapital=Loan amount has to be numeric and greater than zero. ErrorLoanLength=Loan length has to be numeric and greater than zero. ErrorLoanInterest=Annual interest has to be numeric and greater than zero. +# Calc +Totalsforyear=Totals for year # Admin ConfigLoan=Configuration of the module loan LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accountancy code capital by default From 872fe157433f3efca2ccc35865c9c1be914be410 Mon Sep 17 00:00:00 2001 From: Drosis Nikos Date: Mon, 26 Jan 2015 17:05:47 +0200 Subject: [PATCH 019/429] Check live last version from sourceforge.net --- htdocs/admin/tools/update.php | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/htdocs/admin/tools/update.php b/htdocs/admin/tools/update.php index 40683bdc747..cdf93a221e7 100644 --- a/htdocs/admin/tools/update.php +++ b/htdocs/admin/tools/update.php @@ -105,7 +105,30 @@ llxHeader('',$langs->trans("Upgrade"),$wikihelp); print_fiche_titre($langs->trans("Upgrade"),'','setup'); print $langs->trans("CurrentVersion").' : '.DOL_VERSION.'
'; -print $langs->trans("LastStableVersion").' : '.$langs->trans("FeatureNotYetAvailable").'
'; +if ($sfurl = simplexml_load_file('http://sourceforge.net/projects/dolibarr/rss')) { + $title=$sfurl->channel[0]->item[0]->title; +function word_limiter( $text, $limit = 30, $chars = '0123456789.' ) { + if( strlen( $text ) > $limit ) { + $words = str_word_count( $text, 2, $chars ); + $words = array_reverse( $words, TRUE ); + foreach( $words as $length => $word ) { + if( $length + strlen( $word ) >= $limit ) { + array_shift( $words ); + } else { + break; + } + } + $words = array_reverse( $words ); + $text = implode( " ", $words ) . ''; + } + return $text; +} + +$str = $title; +print $langs->trans("LastStableVersion").' : '. word_limiter( $str ).'
'; +} else { + print $langs->trans("LastStableVersion").' : ' .('Update Server Off-Line').'
'; +} print '
'; print $langs->trans("Upgrade").'
'; From 60be0193b07d11348f01d45eb23aa0ab64494c44 Mon Sep 17 00:00:00 2001 From: phf Date: Mon, 26 Jan 2015 17:21:35 +0100 Subject: [PATCH 020/429] [CORE] Initialisation global du module askpricesupplier (#new_ask_price). --- htdocs/comm/askpricesupplier/apercu.php | 221 ++ .../class/askpricesupplier.class.php | 3211 +++++++++++++++++ htdocs/comm/askpricesupplier/class/index.html | 0 htdocs/comm/askpricesupplier/contact.php | 223 ++ htdocs/comm/askpricesupplier/document.php | 144 + htdocs/comm/askpricesupplier/index.php | 528 +++ htdocs/comm/askpricesupplier/info.php | 65 + htdocs/comm/askpricesupplier/list.php | 464 +++ htdocs/comm/askpricesupplier/note.php | 151 + htdocs/comm/askpricesupplier/tpl/index.html | 0 .../tpl/linkedobjectblock.tpl.php | 79 + .../modules/modAskPriceSupplier.class.php | 226 ++ htdocs/langs/fr_FR/askpricesupplier.lang | 6 + .../eldy/img/object_askpricesupplier.png | Bin 0 -> 1038 bytes 14 files changed, 5318 insertions(+) create mode 100644 htdocs/comm/askpricesupplier/apercu.php create mode 100644 htdocs/comm/askpricesupplier/class/askpricesupplier.class.php create mode 100644 htdocs/comm/askpricesupplier/class/index.html create mode 100644 htdocs/comm/askpricesupplier/contact.php create mode 100644 htdocs/comm/askpricesupplier/document.php create mode 100644 htdocs/comm/askpricesupplier/index.php create mode 100644 htdocs/comm/askpricesupplier/info.php create mode 100644 htdocs/comm/askpricesupplier/list.php create mode 100644 htdocs/comm/askpricesupplier/note.php create mode 100644 htdocs/comm/askpricesupplier/tpl/index.html create mode 100644 htdocs/comm/askpricesupplier/tpl/linkedobjectblock.tpl.php create mode 100644 htdocs/core/modules/modAskPriceSupplier.class.php create mode 100644 htdocs/langs/fr_FR/askpricesupplier.lang create mode 100644 htdocs/theme/eldy/img/object_askpricesupplier.png diff --git a/htdocs/comm/askpricesupplier/apercu.php b/htdocs/comm/askpricesupplier/apercu.php new file mode 100644 index 00000000000..87281e7ea63 --- /dev/null +++ b/htdocs/comm/askpricesupplier/apercu.php @@ -0,0 +1,221 @@ + + * Copyright (C) 2004 Eric Seigne + * Copyright (C) 2004-2007 Laurent Destailleur + * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2011 Juanjo Menent + * Copyright (C) 2014 Frederic 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/comm/propal/apercu.php + * \ingroup propal + * \brief Preview tab of propal + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + +$langs->load('propal'); +$langs->load("bills"); +$langs->load('compta'); + +// Security check +$socid=0; +$id = GETPOST('id','int'); +$ref = GETPOST("ref"); +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'propal', $id); + + +/* + * View Mode + */ + +llxHeader(); + + +if ($id > 0 || ! empty($ref)) +{ + $object = new Propal($db); + + if ($object->fetch($id,$ref) > 0) + { + $soc = new Societe($db); + $soc->fetch($object->socid); + + $head = propal_prepare_head($object); + dol_fiche_head($head, 'preview', $langs->trans('Proposal'), 0, 'propal'); + + + /* + * Propal + */ + print ''; + + // Ref + print ''; + print ''; + print ''; + + // Ref client + print ''; + print ''; + print ''; + + + // Thirdparty + print ''; + print ''; + print ''; + + // Status + print ''; + print ''; + print ''; + + // Discount + print ''; + print ''; + + // Date + print ''; + print ''; + + // Right part with $rowspan lines + $rowspan=4; + print ''; + print ''; + + // Total HT - left part + print ''; + print ''; + print ''; + + // Total VAT - left part + print ''; + print ''; + print ''; + + // Total TTC - left part + print ''; + print ''; + print ''; + + print '
'.$langs->trans('Ref').''.$object->ref.'
'.$langs->trans('RefCustomer').''.$object->ref_client.'
'.$langs->trans('Company').''.$soc->getNomUrl(1).'
'.$langs->trans("Status").''.$object->getLibStatut(4).'
'.$langs->trans('Discounts').''; + if ($soc->remise_percent) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_percent); + else print $langs->trans("CompanyHasNoRelativeDiscount"); + $absolute_discount=$soc->getAvailableDiscounts(); + print '. '; + if ($absolute_discount) print $langs->trans("CompanyHasAbsoluteDiscount",$absolute_discount,$langs->trans("Currency".$conf->currency)); + else print $langs->trans("CompanyHasNoAbsoluteDiscount"); + print '.
'.$langs->trans('Date').''.dol_print_date($object->date,'daytext').''; + + /* + * Documents + */ + $objectref = dol_sanitizeFileName($object->ref); + $dir_output = $conf->propal->dir_output . "/"; + $filepath = $dir_output . $objectref . "/"; + $file = $filepath . $objectref . ".pdf"; + $filedetail = $filepath . $objectref . "-detail.pdf"; + $relativepath = $objectref.'/'.$objectref.'.pdf'; + $relativepathdetail = $objectref.'/'.$objectref.'-detail.pdf'; + + // Define path to preview pdf file (preview precompiled "file.ext" are "file.ext_preview.png") + $fileimage = $file.'_preview.png'; // If PDF has 1 page + $fileimagebis = $file.'_preview-0.pdf.png'; // If PDF has more than one page + $relativepathimage = $relativepath.'_preview.png'; + + $var=true; + + // Si fichier PDF existe + if (file_exists($file)) + { + $encfile = urlencode($file); + print ''; + print ''; + + print ''; + + print ''; + + print ''; + print ''; + print ''; + + print "
'.$langs->trans("Documents").'
'.$langs->trans("Proposal").' PDF'.$object->ref.'.pdf'.dol_print_size(dol_filesize($file)).''.dol_print_date(dol_filemtime($file),'dayhour').'
\n"; + + // Conversion du PDF en image png si fichier png non existant + if (! file_exists($fileimage) && ! file_exists($fileimagebis)) + { + if (class_exists("Imagick")) + { + $ret = dol_convert_file($file,'png',$fileimage); + if ($ret < 0) $error++; + } + else + { + $langs->load("errors"); + print ''.$langs->trans("ErrorNoImagickReadimage").''; + } + } + } + + print '
'.$langs->trans('AmountHT').'' . price($object->total_ht, '', $langs, 0, - 1, - 1, $conf->currency) . '
'.$langs->trans('AmountVAT').'' . price($object->total_tva, '', $langs, 0, - 1, - 1, $conf->currency) . '
'.$langs->trans('AmountTTC').'' . price($object->total_ttc, '', $langs, 0, - 1, - 1, $conf->currency) . '
'; + + dol_fiche_end(); + } + else + { + // Propal non trouvee + print $langs->trans("ErrorPropalNotFound",$_GET["id"]); + } +} + +print ''; +print ''; +print '
'; +print '
'; +// Si fichier png PDF d'1 page trouve +if (file_exists($fileimage)) +{ + print ''; +} +// Si fichier png PDF de plus d'1 page trouve +elseif (file_exists($fileimagebis)) +{ + $multiple = preg_replace('/\.png/','',$relativepath) . "-"; + + for ($i = 0; $i < 20; $i++) + { + $preview = $multiple.$i.'.png'; + + if (file_exists($dir_output.$preview)) + { + print '

'; + } + } +} +print '

'; +print '
'; + + +llxFooter(); + +$db->close(); diff --git a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php new file mode 100644 index 00000000000..f68a1f4f708 --- /dev/null +++ b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php @@ -0,0 +1,3211 @@ + + * Copyright (C) 2004 Eric Seigne + * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2005 Marc Barilley + * Copyright (C) 2005-2013 Regis Houssin + * Copyright (C) 2006 Andre Cianfarani + * Copyright (C) 2008 Raphael Bertrand + * Copyright (C) 2010-2014 Juanjo Menent + * Copyright (C) 2010-2011 Philippe Grand + * Copyright (C) 2012-2014 Christophe Battarel + * Copyright (C) 2013 Florian Henry + * Copyright (C) 2014 Marcos García + * + * 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/comm/propal/class/propal.class.php + * \brief File of class to manage proposals + */ + +require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php'; +require_once DOL_DOCUMENT_ROOT .'/product/class/product.class.php'; +require_once DOL_DOCUMENT_ROOT .'/contact/class/contact.class.php'; +require_once DOL_DOCUMENT_ROOT .'/margin/lib/margins.lib.php'; + +/** + * Class to manage proposals + */ +class Propal extends CommonObject +{ + public $element='propal'; + public $table_element='propal'; + public $table_element_line='propaldet'; + public $fk_element='fk_propal'; + protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe + + /** + * {@inheritdoc} + */ + protected $table_ref_field = 'ref'; + + var $id; + + var $socid; // Id client + var $client; // Objet societe client (a charger par fetch_client) + + var $contactid; + var $fk_project; + var $author; + var $ref; + var $ref_client; + var $statut; // 0 (draft), 1 (validated), 2 (signed), 3 (not signed), 4 (billed) + var $datec; // Date of creation + var $datev; // Date of validation + var $date; // Date of proposal + var $datep; // Same than date + var $date_livraison; + var $fin_validite; + + var $user_author_id; + var $user_valid_id; + var $user_close_id; + + var $total_ht; // Total net of tax + var $total_tva; // Total VAT + var $total_localtax1; // Total Local Taxes 1 + var $total_localtax2; // Total Local Taxes 2 + var $total_ttc; // Total with tax + var $price; // deprecated (for compatibility) + var $tva; // deprecated (for compatibility) + var $total; // deprecated (for compatibility) + + var $cond_reglement_id; + var $cond_reglement_code; + var $fk_account; // Id of bank account + var $mode_reglement_id; + var $mode_reglement_code; + var $remise; + var $remise_percent; + var $remise_absolue; + var $note; // deprecated (for compatibility) + var $note_private; + var $note_public; + var $fk_delivery_address; // deprecated (for compatibility) + var $fk_address; + var $address_type; + var $address; + var $shipping_method_id; + var $availability_id; + var $availability_code; + var $demand_reason_id; + var $demand_reason_code; + + var $products=array(); + var $extraparams=array(); + + var $lines = array(); + var $line; + + var $origin; + var $origin_id; + + var $labelstatut=array(); + var $labelstatut_short=array(); + + // Pour board + var $nbtodo; + var $nbtodolate; + + var $specimen; + + + /** + * Constructor + * + * @param DoliDB $db Database handler + * @param int $socid Id third party + * @param int $propalid Id proposal + */ + function __construct($db, $socid="", $propalid=0) + { + global $conf,$langs; + + $this->db = $db; + $this->socid = $socid; + $this->id = $propalid; + $this->products = array(); + $this->remise = 0; + $this->remise_percent = 0; + $this->remise_absolue = 0; + + $this->duree_validite=$conf->global->PROPALE_VALIDITY_DURATION; + + $langs->load("propal"); + $this->labelstatut[0]=(! empty($conf->global->PROPAL_STATUS_DRAFT_LABEL) ? $conf->global->PROPAL_STATUS_DRAFT_LABEL : $langs->trans("PropalStatusDraft")); + $this->labelstatut[1]=(! empty($conf->global->PROPAL_STATUS_VALIDATED_LABEL) ? $conf->global->PROPAL_STATUS_VALIDATED_LABEL : $langs->trans("PropalStatusValidated")); + $this->labelstatut[2]=(! empty($conf->global->PROPAL_STATUS_SIGNED_LABEL) ? $conf->global->PROPAL_STATUS_SIGNED_LABEL : $langs->trans("PropalStatusSigned")); + $this->labelstatut[3]=(! empty($conf->global->PROPAL_STATUS_NOTSIGNED_LABEL) ? $conf->global->PROPAL_STATUS_NOTSIGNED_LABEL : $langs->trans("PropalStatusNotSigned")); + $this->labelstatut[4]=(! empty($conf->global->PROPAL_STATUS_BILLED_LABEL) ? $conf->global->PROPAL_STATUS_BILLED_LABEL : $langs->trans("PropalStatusBilled")); + $this->labelstatut_short[0]=(! empty($conf->global->PROPAL_STATUS_DRAFTSHORT_LABEL) ? $conf->global->PROPAL_STATUS_DRAFTSHORT_LABEL : $langs->trans("PropalStatusDraftShort")); + $this->labelstatut_short[1]=(! empty($conf->global->PROPAL_STATUS_VALIDATEDSHORT_LABEL) ? $conf->global->PROPAL_STATUS_VALIDATEDSHORT_LABEL : $langs->trans("Opened")); + $this->labelstatut_short[2]=(! empty($conf->global->PROPAL_STATUS_SIGNEDSHORT_LABEL) ? $conf->global->PROPAL_STATUS_SIGNEDSHORT_LABEL : $langs->trans("PropalStatusSignedShort")); + $this->labelstatut_short[3]=(! empty($conf->global->PROPAL_STATUS_NOTSIGNEDSHORT_LABEL) ? $conf->global->PROPAL_STATUS_NOTSIGNEDSHORT_LABEL : $langs->trans("PropalStatusNotSignedShort")); + $this->labelstatut_short[4]=(! empty($conf->global->PROPAL_STATUS_BILLEDSHORT_LABEL) ? $conf->global->PROPAL_STATUS_BILLEDSHORT_LABEL : $langs->trans("PropalStatusBilledShort")); + } + + + /** + * Add line into array products + * $this->client doit etre charge + * + * @param int $idproduct Product Id to add + * @param int $qty Quantity + * @param int $remise_percent Discount effected on Product + * @return int <0 if KO, >0 if OK + * + * TODO Remplacer les appels a cette fonction par generation objet Ligne + * insere dans tableau $this->products + */ + function add_product($idproduct, $qty, $remise_percent=0) + { + global $conf, $mysoc; + + if (! $qty) $qty = 1; + + dol_syslog(get_class($this)."::add_product $idproduct, $qty, $remise_percent"); + if ($idproduct > 0) + { + $prod=new Product($this->db); + $prod->fetch($idproduct); + + $productdesc = $prod->description; + + $tva_tx = get_default_tva($mysoc,$this->client,$prod->id); + // local taxes + $localtax1_tx = get_default_localtax($mysoc,$this->client,1,$prod->tva_tx); + $localtax2_tx = get_default_localtax($mysoc,$this->client,2,$prod->tva_tx); + + // multiprix + if($conf->global->PRODUIT_MULTIPRICES && $this->client->price_level) + { + $price = $prod->multiprices[$this->client->price_level]; + } + else + { + $price = $prod->price; + } + + $line = new PropaleLigne($this->db); + + $line->fk_product=$idproduct; + $line->desc=$productdesc; + $line->qty=$qty; + $line->subprice=$price; + $line->remise_percent=$remise_percent; + $line->tva_tx=$tva_tx; + + $this->lines[]=$line; + } + } + + /** + * Adding line of fixed discount in the proposal in DB + * + * @param int $idremise Id of fixed discount + * @return int >0 if OK, <0 if KO + */ + function insert_discount($idremise) + { + global $langs; + + include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php'; + include_once DOL_DOCUMENT_ROOT.'/core/class/discount.class.php'; + + $this->db->begin(); + + $remise=new DiscountAbsolute($this->db); + $result=$remise->fetch($idremise); + + if ($result > 0) + { + if ($remise->fk_facture) // Protection against multiple submission + { + $this->error=$langs->trans("ErrorDiscountAlreadyUsed"); + $this->db->rollback(); + return -5; + } + + $propalligne=new PropaleLigne($this->db); + $propalligne->fk_propal=$this->id; + $propalligne->fk_remise_except=$remise->id; + $propalligne->desc=$remise->description; // Description ligne + $propalligne->tva_tx=$remise->tva_tx; + $propalligne->subprice=-$remise->amount_ht; + $propalligne->fk_product=0; // Id produit predefini + $propalligne->qty=1; + $propalligne->remise=0; + $propalligne->remise_percent=0; + $propalligne->rang=-1; + $propalligne->info_bits=2; + + // TODO deprecated + $propalligne->price=-$remise->amount_ht; + + $propalligne->total_ht = -$remise->amount_ht; + $propalligne->total_tva = -$remise->amount_tva; + $propalligne->total_ttc = -$remise->amount_ttc; + + $result=$propalligne->insert(); + if ($result > 0) + { + $result=$this->update_price(1); + if ($result > 0) + { + $this->db->commit(); + return 1; + } + else + { + $this->db->rollback(); + return -1; + } + } + else + { + $this->error=$propalligne->error; + $this->db->rollback(); + return -2; + } + } + else + { + $this->db->rollback(); + return -2; + } + } + + /** + * Add a proposal line into database (linked to product/service or not) + * Les parametres sont deja cense etre juste et avec valeurs finales a l'appel + * de cette methode. Aussi, pour le taux tva, il doit deja avoir ete defini + * par l'appelant par la methode get_default_tva(societe_vendeuse,societe_acheteuse,'',produit) + * et le desc doit deja avoir la bonne valeur (a l'appelant de gerer le multilangue) + * + * @param string $desc Description de la ligne + * @param double $pu_ht Prix unitaire + * @param double $qty Quantite + * @param double $txtva Taux de tva + * @param double $txlocaltax1 Local tax 1 rate + * @param double $txlocaltax2 Local tax 2 rate + * @param int $fk_product Id du produit/service predefini + * @param double $remise_percent Pourcentage de remise de la ligne + * @param string $price_base_type HT or TTC + * @param double $pu_ttc Prix unitaire TTC + * @param int $info_bits Bits de type de lignes + * @param int $type Type of line (product, service) + * @param int $rang Position of line + * @param int $special_code Special code (also used by externals modules!) + * @param int $fk_parent_line Id of parent line + * @param int $fk_fournprice Id supplier price + * @param int $pa_ht Buying price without tax + * @param string $label ??? + * @param int $date_start Start date of the line + * @param int $date_end End date of the line + * @param array $array_option extrafields array + * @return int >0 if OK, <0 if KO + * + * @see add_product + */ + function addline($desc, $pu_ht, $qty, $txtva, $txlocaltax1=0, $txlocaltax2=0, $fk_product=0, $remise_percent=0, $price_base_type='HT', $pu_ttc=0, $info_bits=0, $type=0, $rang=-1, $special_code=0, $fk_parent_line=0, $fk_fournprice=0, $pa_ht=0, $label='',$date_start='', $date_end='',$array_option=0) + { + global $mysoc; + + dol_syslog(get_class($this)."::addline propalid=$this->id, desc=$desc, pu_ht=$pu_ht, qty=$qty, txtva=$txtva, fk_product=$fk_product, remise_except=$remise_percent, price_base_type=$price_base_type, pu_ttc=$pu_ttc, info_bits=$info_bits, type=$type"); + include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php'; + + // Clean parameters + if (empty($remise_percent)) $remise_percent=0; + if (empty($qty)) $qty=0; + if (empty($info_bits)) $info_bits=0; + if (empty($rang)) $rang=0; + if (empty($fk_parent_line) || $fk_parent_line < 0) $fk_parent_line=0; + + $remise_percent=price2num($remise_percent); + $qty=price2num($qty); + $pu_ht=price2num($pu_ht); + $pu_ttc=price2num($pu_ttc); + $txtva=price2num($txtva); + $txlocaltax1=price2num($txlocaltax1); + $txlocaltax2=price2num($txlocaltax2); + $pa_ht=price2num($pa_ht); + if ($price_base_type=='HT') + { + $pu=$pu_ht; + } + else + { + $pu=$pu_ttc; + } + + // Check parameters + if ($type < 0) return -1; + + if ($this->statut == 0) + { + $this->db->begin(); + + // Calcul du total TTC et de la TVA pour la ligne a partir de + // qty, pu, remise_percent et txtva + // TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker + // la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva. + + $localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc); + + $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type, '', $localtaxes_type); + $total_ht = $tabprice[0]; + $total_tva = $tabprice[1]; + $total_ttc = $tabprice[2]; + $total_localtax1 = $tabprice[9]; + $total_localtax2 = $tabprice[10]; + + // Rang to use + $rangtouse = $rang; + if ($rangtouse == -1) + { + $rangmax = $this->line_max($fk_parent_line); + $rangtouse = $rangmax + 1; + } + + // TODO A virer + // Anciens indicateurs: $price, $remise (a ne plus utiliser) + $price = $pu; + $remise = 0; + if ($remise_percent > 0) + { + $remise = round(($pu * $remise_percent / 100), 2); + $price = $pu - $remise; + } + + // Insert line + $this->line=new PropaleLigne($this->db); + + $this->line->fk_propal=$this->id; + $this->line->label=$label; + $this->line->desc=$desc; + $this->line->qty=$qty; + $this->line->tva_tx=$txtva; + $this->line->localtax1_tx=$txlocaltax1; + $this->line->localtax2_tx=$txlocaltax2; + $this->line->localtax1_type = $localtaxes_type[0]; + $this->line->localtax2_type = $localtaxes_type[2]; + $this->line->fk_product=$fk_product; + $this->line->remise_percent=$remise_percent; + $this->line->subprice=$pu_ht; + $this->line->rang=$rangtouse; + $this->line->info_bits=$info_bits; + $this->line->total_ht=$total_ht; + $this->line->total_tva=$total_tva; + $this->line->total_localtax1=$total_localtax1; + $this->line->total_localtax2=$total_localtax2; + $this->line->total_ttc=$total_ttc; + $this->line->product_type=$type; + $this->line->special_code=$special_code; + $this->line->fk_parent_line=$fk_parent_line; + + $this->line->date_start=$date_start; + $this->line->date_end=$date_end; + + + // infos marge + if (!empty($fk_product) && empty($fk_fournprice) && empty($pa_ht)) { + // by external module, take lowest buying price + include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php'; + $productFournisseur = new ProductFournisseur($this->db); + $productFournisseur->find_min_price_product_fournisseur($fk_product); + $this->line->fk_fournprice = $productFournisseur->product_fourn_price_id; + } else { + $this->line->fk_fournprice = $fk_fournprice; + } + $this->line->pa_ht = $pa_ht; + + // Mise en option de la ligne + if (empty($qty) && empty($special_code)) $this->line->special_code=3; + + // TODO deprecated + $this->line->price=$price; + $this->line->remise=$remise; + + if (is_array($array_option) && count($array_option)>0) { + $this->line->array_options=$array_option; + } + + $result=$this->line->insert(); + if ($result > 0) + { + // Reorder if child line + if (! empty($fk_parent_line)) $this->line_order(true,'DESC'); + + // Mise a jour informations denormalisees au niveau de la propale meme + $result=$this->update_price(1,'auto'); // This method is designed to add line from user input so total calculation must be done using 'auto' mode. + if ($result > 0) + { + $this->db->commit(); + return $this->line->rowid; + } + else + { + $this->error=$this->db->error(); + $this->db->rollback(); + return -1; + } + } + else + { + $this->error=$this->line->error; + $this->db->rollback(); + return -2; + } + } + } + + + /** + * Update a proposal line + * + * @param int $rowid Id de la ligne + * @param double $pu Prix unitaire (HT ou TTC selon price_base_type) + * @param double $qty Quantity + * @param double $remise_percent Remise effectuee sur le produit + * @param double $txtva Taux de TVA + * @param double $txlocaltax1 Local tax 1 rate + * @param double $txlocaltax2 Local tax 2 rate + * @param string $desc Description + * @param double $price_base_type HT ou TTC + * @param int $info_bits Miscellaneous informations + * @param int $special_code Special code (also used by externals modules!) + * @param int $fk_parent_line Id of parent line (0 in most cases, used by modules adding sublevels into lines). + * @param int $skip_update_total Keep fields total_xxx to 0 (used for special lines by some modules) + * @param int $fk_fournprice Id of origin supplier price + * @param int $pa_ht Price (without tax) of product when it was bought + * @param string $label ??? + * @param int $type 0/1=Product/service + * @param int $date_start Start date of the line + * @param int $date_end End date of the line + * @param array $array_option extrafields array + * @return int 0 if OK, <0 if KO + */ + function updateline($rowid, $pu, $qty, $remise_percent, $txtva, $txlocaltax1=0, $txlocaltax2=0, $desc='', $price_base_type='HT', $info_bits=0, $special_code=0, $fk_parent_line=0, $skip_update_total=0, $fk_fournprice=0, $pa_ht=0, $label='', $type=0, $date_start='', $date_end='', $array_option=0) + { + global $conf,$user,$langs, $mysoc; + + dol_syslog(get_class($this)."::updateLine $rowid, $pu, $qty, $remise_percent, $txtva, $desc, $price_base_type, $info_bits"); + include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php'; + + // Clean parameters + $remise_percent=price2num($remise_percent); + $qty=price2num($qty); + $pu = price2num($pu); + $txtva = price2num($txtva); + $txlocaltax1=price2num($txlocaltax1); + $txlocaltax2=price2num($txlocaltax2); + $pa_ht=price2num($pa_ht); + if (empty($qty) && empty($special_code)) $special_code=3; // Set option tag + if (! empty($qty) && $special_code == 3) $special_code=0; // Remove option tag + + if ($this->statut == 0) + { + $this->db->begin(); + + // Calcul du total TTC et de la TVA pour la ligne a partir de + // qty, pu, remise_percent et txtva + // TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker + // la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva. + + $localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc); + + $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $type,'', $localtaxes_type); + $total_ht = $tabprice[0]; + $total_tva = $tabprice[1]; + $total_ttc = $tabprice[2]; + $total_localtax1 = $tabprice[9]; + $total_localtax2 = $tabprice[10]; + + // Anciens indicateurs: $price, $remise (a ne plus utiliser) + $price = $pu; + if ($remise_percent > 0) + { + $remise = round(($pu * $remise_percent / 100), 2); + $price = $pu - $remise; + } + + // Update line + $this->line=new PropaleLigne($this->db); + + // Stock previous line records + $staticline=new PropaleLigne($this->db); + $staticline->fetch($rowid); + $this->line->oldline = $staticline; + + // Reorder if fk_parent_line change + if (! empty($fk_parent_line) && ! empty($staticline->fk_parent_line) && $fk_parent_line != $staticline->fk_parent_line) + { + $rangmax = $this->line_max($fk_parent_line); + $this->line->rang = $rangmax + 1; + } + + $this->line->rowid = $rowid; + $this->line->label = $label; + $this->line->desc = $desc; + $this->line->qty = $qty; + $this->line->product_type = $type; + $this->line->tva_tx = $txtva; + $this->line->localtax1_tx = $txlocaltax1; + $this->line->localtax2_tx = $txlocaltax2; + $this->line->localtax1_type = $localtaxes_type[0]; + $this->line->localtax2_type = $localtaxes_type[2]; + $this->line->remise_percent = $remise_percent; + $this->line->subprice = $pu; + $this->line->info_bits = $info_bits; + $this->line->total_ht = $total_ht; + $this->line->total_tva = $total_tva; + $this->line->total_localtax1 = $total_localtax1; + $this->line->total_localtax2 = $total_localtax2; + $this->line->total_ttc = $total_ttc; + $this->line->special_code = $special_code; + $this->line->fk_parent_line = $fk_parent_line; + $this->line->skip_update_total = $skip_update_total; + + // infos marge + if (!empty($fk_product) && empty($fk_fournprice) && empty($pa_ht)) { + // by external module, take lowest buying price + include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php'; + $productFournisseur = new ProductFournisseur($this->db); + $productFournisseur->find_min_price_product_fournisseur($fk_product); + $this->line->fk_fournprice = $productFournisseur->product_fourn_price_id; + } else { + $this->line->fk_fournprice = $fk_fournprice; + } + $this->line->pa_ht = $pa_ht; + + $this->line->date_start=$date_start; + $this->line->date_end=$date_end; + + // TODO deprecated + $this->line->price=$price; + $this->line->remise=$remise; + + if (is_array($array_option) && count($array_option)>0) { + $this->line->array_options=$array_option; + } + + $result=$this->line->update(); + if ($result > 0) + { + // Reorder if child line + if (! empty($fk_parent_line)) $this->line_order(true,'DESC'); + + $this->update_price(1); + + $this->fk_propal = $this->id; + $this->rowid = $rowid; + + $this->db->commit(); + return $result; + } + else + { + $this->error=$this->db->error(); + $this->db->rollback(); + return -1; + } + } + else + { + dol_syslog(get_class($this)."::updateline Erreur -2 Propal en mode incompatible pour cette action"); + return -2; + } + } + + + /** + * Delete detail line + * + * @param int $lineid Id of line to delete + * @return int >0 if OK, <0 if KO + */ + function deleteline($lineid) + { + if ($this->statut == 0) + { + $line=new PropaleLigne($this->db); + + // For triggers + $line->fetch($lineid); + + if ($line->delete() > 0) + { + $this->update_price(1); + + return 1; + } + else + { + return -1; + } + } + else + { + return -2; + } + } + + + /** + * Create commercial proposal into database + * this->ref can be set or empty. If empty, we will use "(PROVid)" + * + * @param User $user User that create + * @param int $notrigger 1=Does not execute triggers, 0= execuete triggers + * @return int <0 if KO, >=0 if OK + */ + function create($user, $notrigger=0) + { + global $langs,$conf,$mysoc,$hookmanager; + $error=0; + + $now=dol_now(); + + // Clean parameters + if (empty($this->date)) $this->date=$this->datep; + $this->fin_validite = $this->date + ($this->duree_validite * 24 * 3600); + if (empty($this->availability_id)) $this->availability_id=0; + if (empty($this->demand_reason_id)) $this->demand_reason_id=0; + + dol_syslog(get_class($this)."::create"); + + // Check parameters + $result=$this->fetch_thirdparty(); + if ($result < 0) + { + $this->error="Failed to fetch company"; + dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR); + return -3; + } + + // Check parameters + if (! empty($this->ref)) // We check that ref is not already used + { + $result=self::isExistingObject($this->element, 0, $this->ref); // Check ref is not yet used + if ($result > 0) + { + $this->error='ErrorRefAlreadyExists'; + dol_syslog(get_class($this)."::create ".$this->error,LOG_WARNING); + $this->db->rollback(); + return -1; + } + } + + if (empty($this->date)) + { + $this->error="Date of proposal is required"; + dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR); + return -4; + } + + + $this->db->begin(); + + // Insert into database + $sql = "INSERT INTO ".MAIN_DB_PREFIX."propal ("; + $sql.= "fk_soc"; + $sql.= ", price"; + $sql.= ", remise"; + $sql.= ", remise_percent"; + $sql.= ", remise_absolue"; + $sql.= ", tva"; + $sql.= ", total"; + $sql.= ", datep"; + $sql.= ", datec"; + $sql.= ", ref"; + $sql.= ", fk_user_author"; + $sql.= ", note_private"; + $sql.= ", note_public"; + $sql.= ", model_pdf"; + $sql.= ", fin_validite"; + $sql.= ", fk_cond_reglement"; + $sql.= ", fk_mode_reglement"; + $sql.= ", fk_account"; + $sql.= ", ref_client"; + $sql.= ", date_livraison"; + $sql.= ", fk_shipping_method"; + $sql.= ", fk_availability"; + $sql.= ", fk_input_reason"; + $sql.= ", fk_projet"; + $sql.= ", entity"; + $sql.= ") "; + $sql.= " VALUES ("; + $sql.= $this->socid; + $sql.= ", 0"; + $sql.= ", ".$this->remise; + $sql.= ", ".($this->remise_percent?$this->remise_percent:'null'); + $sql.= ", ".($this->remise_absolue?$this->remise_absolue:'null'); + $sql.= ", 0"; + $sql.= ", 0"; + $sql.= ", '".$this->db->idate($this->date)."'"; + $sql.= ", '".$this->db->idate($now)."'"; + $sql.= ", '(PROV)'"; + $sql.= ", ".($user->id > 0 ? "'".$user->id."'":"null"); + $sql.= ", '".$this->db->escape($this->note_private)."'"; + $sql.= ", '".$this->db->escape($this->note_public)."'"; + $sql.= ", '".$this->modelpdf."'"; + $sql.= ", ".($this->fin_validite!=''?"'".$this->db->idate($this->fin_validite)."'":"null"); + $sql.= ", ".$this->cond_reglement_id; + $sql.= ", ".$this->mode_reglement_id; + $sql.= ", ".($this->fk_account>0?$this->fk_account:'NULL'); + $sql.= ", '".$this->db->escape($this->ref_client)."'"; + $sql.= ", ".($this->date_livraison!=''?"'".$this->db->idate($this->date_livraison)."'":"null"); + $sql.= ", ".($this->shipping_method_id>0?$this->shipping_method_id:'NULL'); + $sql.= ", ".$this->availability_id; + $sql.= ", ".$this->demand_reason_id; + $sql.= ", ".($this->fk_project?$this->fk_project:"null"); + $sql.= ", ".$conf->entity; + $sql.= ")"; + + 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."propal"); + + if ($this->id) + { + $this->ref='(PROV'.$this->id.')'; + $sql = 'UPDATE '.MAIN_DB_PREFIX."propal SET ref='".$this->ref."' WHERE rowid=".$this->id; + + dol_syslog(get_class($this)."::create", LOG_DEBUG); + $resql=$this->db->query($sql); + if (! $resql) $error++; + + /* + * Insertion du detail des produits dans la base + */ + if (! $error) + { + $fk_parent_line=0; + $num=count($this->lines); + + for ($i=0;$i<$num;$i++) + { + // Reset fk_parent_line for no child products and special product + if (($this->lines[$i]->product_type != 9 && empty($this->lines[$i]->fk_parent_line)) || $this->lines[$i]->product_type == 9) { + $fk_parent_line = 0; + } + + $result = $this->addline( + $this->lines[$i]->desc, + $this->lines[$i]->subprice, + $this->lines[$i]->qty, + $this->lines[$i]->tva_tx, + $this->lines[$i]->localtax1_tx, + $this->lines[$i]->localtax2_tx, + $this->lines[$i]->fk_product, + $this->lines[$i]->remise_percent, + 'HT', + 0, + 0, + $this->lines[$i]->product_type, + $this->lines[$i]->rang, + $this->lines[$i]->special_code, + $fk_parent_line, + $this->lines[$i]->fk_fournprice, + $this->lines[$i]->pa_ht, + $this->lines[$i]->label, + $this->lines[$i]->date_start, + $this->lines[$i]->date_end, + $this->lines[$i]->array_options + ); + + if ($result < 0) + { + $error++; + $this->error=$this->db->error; + dol_print_error($this->db); + break; + } + // Defined the new fk_parent_line + if ($result > 0 && $this->lines[$i]->product_type == 9) { + $fk_parent_line = $result; + } + } + } + + // Add linked object + if (! $error && $this->origin && $this->origin_id) + { + $ret = $this->add_object_linked(); + if (! $ret) dol_print_error($this->db); + } + + // Set delivery address + if (! $error && $this->fk_delivery_address) + { + $sql = "UPDATE ".MAIN_DB_PREFIX."propal"; + $sql.= " SET fk_delivery_address = ".$this->fk_delivery_address; + $sql.= " WHERE ref = '".$this->ref."'"; + $sql.= " AND entity = ".$conf->entity; + + $result=$this->db->query($sql); + } + + if (! $error) + { + // Mise a jour infos denormalisees + $resql=$this->update_price(1); + if ($resql) + { + $action='update'; + + // Actions on extra fields (by external module or standard code) + // FIXME le hook fait double emploi avec le trigger !! + $hookmanager->initHooks(array('propaldao')); + $parameters=array('socid'=>$this->id); + $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + if (empty($reshook)) + { + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + { + $result=$this->insertExtraFields(); + if ($result < 0) + { + $error++; + } + } + } + else if ($reshook < 0) $error++; + + if (! $notrigger) + { + // Call trigger + $result=$this->call_trigger('PROPAL_CREATE',$user); + if ($result < 0) { $error++; } + // End call triggers + } + } + else + { + $this->error=$this->db->lasterror(); + $error++; + } + } + } + else + { + $this->error=$this->db->lasterror(); + $error++; + } + + if (! $error) + { + $this->db->commit(); + dol_syslog(get_class($this)."::create done id=".$this->id); + return $this->id; + } + else + { + $this->db->rollback(); + return -2; + } + } + else + { + $this->error=$this->db->lasterror(); + $this->db->rollback(); + return -1; + } + } + + + /** + * Insert into DB a proposal object completely defined by its data members (ex, results from copy). + * + * @param User $user User that create + * @return int Id of the new object if ok, <0 if ko + * @see create + */ + function create_from($user) + { + $this->products=$this->lines; + + return $this->create($user); + } + + /** + * Load an object from its id and create a new one in database + * + * @param int $socid Id of thirdparty + * @return int New id of clone + */ + function createFromClone($socid=0) + { + global $user,$langs,$conf,$hookmanager; + + $error=0; + $now=dol_now(); + + $this->db->begin(); + + // get extrafields so they will be clone + foreach($this->lines as $line) + $line->fetch_optionals($line->rowid); + + // Load source object + $objFrom = dol_clone($this); + + $objsoc=new Societe($this->db); + + // Change socid if needed + if (! empty($socid) && $socid != $this->socid) + { + if ($objsoc->fetch($socid) > 0) + { + $this->socid = $objsoc->id; + $this->cond_reglement_id = (! empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0); + $this->mode_reglement_id = (! empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0); + $this->fk_project = ''; + $this->fk_delivery_address = ''; + } + + // reset ref_client + $this->ref_client = ''; + + // TODO Change product price if multi-prices + } + else + { + $objsoc->fetch($this->socid); + } + + $this->id=0; + $this->statut=0; + + if (empty($conf->global->PROPALE_ADDON) || ! is_readable(DOL_DOCUMENT_ROOT ."/core/modules/propale/".$conf->global->PROPALE_ADDON.".php")) + { + $this->error='ErrorSetupNotComplete'; + return -1; + } + + // Clear fields + $this->user_author = $user->id; + $this->user_valid = ''; + $this->date = $now; + $this->datep = $now; // deprecated + $this->fin_validite = $this->date + ($this->duree_validite * 24 * 3600); + if (empty($conf->global->MAIN_KEEP_REF_CUSTOMER_ON_CLONING)) $this->ref_client = ''; + + // Set ref + require_once DOL_DOCUMENT_ROOT ."/core/modules/propale/".$conf->global->PROPALE_ADDON.'.php'; + $obj = $conf->global->PROPALE_ADDON; + $modPropale = new $obj; + $this->ref = $modPropale->getNextValue($objsoc,$this); + + // Create clone + $result=$this->create($user); + if ($result < 0) $error++; + else + { + // copy internal contacts + if ($this->copy_linked_contact($objFrom, 'internal') < 0) + $error++; + + // copy external contacts if same company + elseif ($objFrom->socid == $this->socid) + { + if ($this->copy_linked_contact($objFrom, 'external') < 0) + $error++; + } + } + + if (! $error) + { + // Hook of thirdparty module + if (is_object($hookmanager)) + { + $parameters=array('objFrom'=>$objFrom); + $action=''; + $reshook=$hookmanager->executeHooks('createFrom',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + if ($reshook < 0) $error++; + } + + // Call trigger + $result=$this->call_trigger('PROPAL_CLONE',$user); + if ($result < 0) { $error++; } + // End call triggers + } + + // End + if (! $error) + { + $this->db->commit(); + return $this->id; + } + else + { + $this->db->rollback(); + return -1; + } + } + + /** + * Load a proposal from database and its ligne array + * + * @param int $rowid id of object to load + * @param string $ref Ref of proposal + * @return int >0 if OK, <0 if KO + */ + function fetch($rowid,$ref='') + { + global $conf; + + $sql = "SELECT p.rowid, p.ref, p.remise, p.remise_percent, p.remise_absolue, p.fk_soc"; + $sql.= ", p.total, p.tva, p.localtax1, p.localtax2, p.total_ht"; + $sql.= ", p.datec"; + $sql.= ", p.date_valid as datev"; + $sql.= ", p.datep as dp"; + $sql.= ", p.fin_validite as dfv"; + $sql.= ", p.date_livraison as date_livraison"; + $sql.= ", p.model_pdf, p.ref_client, p.extraparams"; + $sql.= ", p.note_private, p.note_public"; + $sql.= ", p.fk_projet, p.fk_statut"; + $sql.= ", p.fk_user_author, p.fk_user_valid, p.fk_user_cloture"; + $sql.= ", p.fk_delivery_address"; + $sql.= ", p.fk_availability"; + $sql.= ", p.fk_input_reason"; + $sql.= ", p.fk_cond_reglement"; + $sql.= ", p.fk_mode_reglement"; + $sql.= ', p.fk_account'; + $sql.= ", p.fk_shipping_method"; + $sql.= ", c.label as statut_label"; + $sql.= ", ca.code as availability_code, ca.label as availability"; + $sql.= ", dr.code as demand_reason_code, dr.label as demand_reason"; + $sql.= ", cr.code as cond_reglement_code, cr.libelle as cond_reglement, cr.libelle_facture as cond_reglement_libelle_doc"; + $sql.= ", cp.code as mode_reglement_code, cp.libelle as mode_reglement"; + $sql.= " FROM ".MAIN_DB_PREFIX."c_propalst as c, ".MAIN_DB_PREFIX."propal as p"; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_paiement as cp ON p.fk_mode_reglement = cp.id'; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_payment_term as cr ON p.fk_cond_reglement = cr.rowid'; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_availability as ca ON p.fk_availability = ca.rowid'; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_input_reason as dr ON p.fk_input_reason = dr.rowid'; + $sql.= " WHERE p.fk_statut = c.id"; + $sql.= " AND p.entity = ".$conf->entity; + if ($ref) $sql.= " AND p.ref='".$ref."'"; + else $sql.= " AND p.rowid=".$rowid; + + dol_syslog(get_class($this)."::fetch", LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + if ($this->db->num_rows($resql)) + { + $obj = $this->db->fetch_object($resql); + + $this->id = $obj->rowid; + + $this->ref = $obj->ref; + $this->ref_client = $obj->ref_client; + $this->remise = $obj->remise; + $this->remise_percent = $obj->remise_percent; + $this->remise_absolue = $obj->remise_absolue; + $this->total = $obj->total; // TODO obsolete + $this->total_ht = $obj->total_ht; + $this->total_tva = $obj->tva; + $this->total_localtax1 = $obj->localtax1; + $this->total_localtax2 = $obj->localtax2; + $this->total_ttc = $obj->total; + $this->socid = $obj->fk_soc; + $this->fk_project = $obj->fk_projet; + $this->modelpdf = $obj->model_pdf; + $this->note = $obj->note_private; // TODO obsolete + $this->note_private = $obj->note_private; + $this->note_public = $obj->note_public; + $this->statut = $obj->fk_statut; + $this->statut_libelle = $obj->statut_label; + + $this->datec = $this->db->jdate($obj->datec); // TODO obsolete + $this->datev = $this->db->jdate($obj->datev); // TODO obsolete + $this->date_creation = $this->db->jdate($obj->datec); //Creation date + $this->date_validation = $this->db->jdate($obj->datev); //Validation date + $this->date = $this->db->jdate($obj->dp); // Proposal date + $this->datep = $this->db->jdate($obj->dp); // deprecated + $this->fin_validite = $this->db->jdate($obj->dfv); + $this->date_livraison = $this->db->jdate($obj->date_livraison); + $this->shipping_method_id = ($obj->fk_shipping_method>0)?$obj->fk_shipping_method:null; + $this->availability_id = $obj->fk_availability; + $this->availability_code = $obj->availability_code; + $this->availability = $obj->availability; + $this->demand_reason_id = $obj->fk_input_reason; + $this->demand_reason_code = $obj->demand_reason_code; + $this->demand_reason = $obj->demand_reason; + $this->fk_address = $obj->fk_delivery_address; + + $this->mode_reglement_id = $obj->fk_mode_reglement; + $this->mode_reglement_code = $obj->mode_reglement_code; + $this->mode_reglement = $obj->mode_reglement; + $this->fk_account = ($obj->fk_account>0)?$obj->fk_account:null; + $this->cond_reglement_id = $obj->fk_cond_reglement; + $this->cond_reglement_code = $obj->cond_reglement_code; + $this->cond_reglement = $obj->cond_reglement; + $this->cond_reglement_doc = $obj->cond_reglement_libelle_doc; + + $this->extraparams = (array) json_decode($obj->extraparams, true); + + $this->user_author_id = $obj->fk_user_author; + $this->user_valid_id = $obj->fk_user_valid; + $this->user_close_id = $obj->fk_user_cloture; + + if ($obj->fk_statut == 0) + { + $this->brouillon = 1; + } + + // Retreive all extrafield for invoice + // fetch optionals attributes and labels + require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; + $extrafields=new ExtraFields($this->db); + $extralabels=$extrafields->fetch_name_optionals_label($this->table_element,true); + $this->fetch_optionals($this->id,$extralabels); + + $this->db->free($resql); + + $this->lines = array(); + + /* + * Lignes propales liees a un produit ou non + */ + $sql = "SELECT d.rowid, d.fk_propal, d.fk_parent_line, d.label as custom_label, d.description, d.price, d.tva_tx, d.localtax1_tx, d.localtax2_tx, d.qty, d.fk_remise_except, d.remise_percent, d.subprice, d.fk_product,"; + $sql.= " d.info_bits, d.total_ht, d.total_tva, d.total_localtax1, d.total_localtax2, d.total_ttc, d.fk_product_fournisseur_price as fk_fournprice, d.buy_price_ht as pa_ht, d.special_code, d.rang, d.product_type,"; + $sql.= ' p.ref as product_ref, p.description as product_desc, p.fk_product_type, p.label as product_label,'; + $sql.= ' d.date_start, d.date_end'; + $sql.= " FROM ".MAIN_DB_PREFIX."propaldet as d"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON d.fk_product = p.rowid"; + $sql.= " WHERE d.fk_propal = ".$this->id; + $sql.= " ORDER by d.rang"; + + $result = $this->db->query($sql); + if ($result) + { + $num = $this->db->num_rows($result); + $i = 0; + + while ($i < $num) + { + $objp = $this->db->fetch_object($result); + + $line = new PropaleLigne($this->db); + + $line->rowid = $objp->rowid; + $line->fk_propal = $objp->fk_propal; + $line->fk_parent_line = $objp->fk_parent_line; + $line->product_type = $objp->product_type; + $line->label = $objp->custom_label; + $line->desc = $objp->description; // Description ligne + $line->qty = $objp->qty; + $line->tva_tx = $objp->tva_tx; + $line->localtax1_tx = $objp->localtax1_tx; + $line->localtax2_tx = $objp->localtax2_tx; + $line->subprice = $objp->subprice; + $line->fk_remise_except = $objp->fk_remise_except; + $line->remise_percent = $objp->remise_percent; + $line->price = $objp->price; // TODO deprecated + + $line->info_bits = $objp->info_bits; + $line->total_ht = $objp->total_ht; + $line->total_tva = $objp->total_tva; + $line->total_localtax1 = $objp->total_localtax1; + $line->total_localtax2 = $objp->total_localtax2; + $line->total_ttc = $objp->total_ttc; + $line->fk_fournprice = $objp->fk_fournprice; + $marginInfos = getMarginInfos($objp->subprice, $objp->remise_percent, $objp->tva_tx, $objp->localtax1_tx, $objp->localtax2_tx, $line->fk_fournprice, $objp->pa_ht); + $line->pa_ht = $marginInfos[0]; + $line->marge_tx = $marginInfos[1]; + $line->marque_tx = $marginInfos[2]; + $line->special_code = $objp->special_code; + $line->rang = $objp->rang; + + $line->fk_product = $objp->fk_product; + + $line->ref = $objp->product_ref; // TODO deprecated + $line->product_ref = $objp->product_ref; + $line->libelle = $objp->product_label; // TODO deprecated + $line->product_label = $objp->product_label; + $line->product_desc = $objp->product_desc; // Description produit + $line->fk_product_type = $objp->fk_product_type; + + $line->date_start = $objp->date_start; + $line->date_end = $objp->date_end; + + $this->lines[$i] = $line; + //dol_syslog("1 ".$line->fk_product); + //print "xx $i ".$this->lines[$i]->fk_product; + $i++; + } + $this->db->free($result); + } + else + { + $this->error=$this->db->error(); + return -1; + } + + // Retreive all extrafield for propal + // fetch optionals attributes and labels + require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; + $extrafields=new ExtraFields($this->db); + $extralabels=$extrafields->fetch_name_optionals_label($this->table_element,true); + $this->fetch_optionals($this->id,$extralabels); + + return 1; + } + + $this->error="Record Not Found"; + return 0; + } + else + { + $this->error=$this->db->error(); + return -1; + } + } + + /** + * Update value of extrafields on the proposal + * + * @param User $user Object user that modify + * @return int <0 if ko, >0 if ok + */ + function update_extrafields($user) + { + $action='update'; + + // Actions on extra fields (by external module or standard code) + // FIXME le hook fait double emploi avec le trigger !! + $hookmanager->initHooks(array('propaldao')); + $parameters=array('id'=>$this->id); + $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + if (empty($reshook)) + { + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + { + $result=$this->insertExtraFields(); + if ($result < 0) + { + $error++; + } + } + } + else if ($reshook < 0) $error++; + + if (!$error) + { + return 1; + } + else + { + return -1; + } + + } + + /** + * Set status to validated + * + * @param User $user Object user that validate + * @param int $notrigger 1=Does not execute triggers, 0= execuete triggers + * @return int <0 if KO, >=0 if OK + */ + function valid($user, $notrigger=0) + { + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + + global $conf,$langs; + + $error=0; + $now=dol_now(); + + if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->propal->creer)) + || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->propal->propal_advance->validate))) + { + $this->db->begin(); + + // Numbering module definition + $soc = new Societe($this->db); + $soc->fetch($this->socid); + + // Define new ref + if (! $error && (preg_match('/^[\(]?PROV/i', $this->ref))) + { + $num = $this->getNextNumRef($soc); + } + else + { + $num = $this->ref; + } + $this->newref = $num; + + $sql = "UPDATE ".MAIN_DB_PREFIX."propal"; + $sql.= " SET ref = '".$num."',"; + $sql.= " fk_statut = 1, date_valid='".$this->db->idate($now)."', fk_user_valid=".$user->id; + $sql.= " WHERE rowid = ".$this->id." AND fk_statut = 0"; + + dol_syslog(get_class($this)."::valid", LOG_DEBUG); + $resql=$this->db->query($sql); + if (! $resql) + { + dol_print_error($this->db); + $error++; + } + + // Trigger calls + if (! $error && ! $notrigger) + { + // Call trigger + $result=$this->call_trigger('PROPAL_VALIDATE',$user); + if ($result < 0) { $error++; } + // End call triggers + } + + if (! $error) + { + $this->oldref = $this->ref; + + // Rename directory if dir was a temporary ref + if (preg_match('/^[\(]?PROV/i', $this->ref)) + { + // Rename of propal directory ($this->ref = old ref, $num = new ref) + // to not lose the linked files + $oldref = dol_sanitizeFileName($this->ref); + $newref = dol_sanitizeFileName($num); + $dirsource = $conf->propal->dir_output.'/'.$oldref; + $dirdest = $conf->propal->dir_output.'/'.$newref; + + if (file_exists($dirsource)) + { + dol_syslog(get_class($this)."::validate rename dir ".$dirsource." into ".$dirdest); + if (@rename($dirsource, $dirdest)) + { + dol_syslog("Rename ok"); + // Rename docs starting with $oldref with $newref + $listoffiles=dol_dir_list($conf->propal->dir_output.'/'.$newref, 'files', 1, '^'.preg_quote($oldref,'/')); + foreach($listoffiles as $fileentry) + { + $dirsource=$fileentry['name']; + $dirdest=preg_replace('/^'.preg_quote($oldref,'/').'/',$newref, $dirsource); + $dirsource=$fileentry['path'].'/'.$dirsource; + $dirdest=$fileentry['path'].'/'.$dirdest; + @rename($dirsource, $dirdest); + } + } + } + } + + $this->ref=$num; + $this->brouillon=0; + $this->statut = 1; + $this->user_valid_id=$user->id; + $this->datev=$now; + + $this->db->commit(); + return 1; + } + else + { + $this->db->rollback(); + return -1; + } + } + } + + + /** + * Define proposal date + * + * @param User $user Object user that modify + * @param int $date Date + * @return int <0 if KO, >0 if OK + */ + function set_date($user, $date) + { + if (empty($date)) + { + $this->error='ErrorBadParameter'; + dol_syslog(get_class($this)."::set_date ".$this->error, LOG_ERR); + return -1; + } + + if (! empty($user->rights->propal->creer)) + { + $sql = "UPDATE ".MAIN_DB_PREFIX."propal SET datep = '".$this->db->idate($date)."'"; + $sql.= " WHERE rowid = ".$this->id." AND fk_statut = 0"; + + dol_syslog(get_class($this)."::set_date", LOG_DEBUG); + if ($this->db->query($sql) ) + { + $this->date = $date; + $this->datep = $date; // deprecated + return 1; + } + else + { + $this->error=$this->db->lasterror(); + return -1; + } + } + } + + /** + * Define end validity date + * + * @param User $user Object user that modify + * @param int $date_fin_validite End of validity date + * @return int <0 if KO, >0 if OK + */ + function set_echeance($user, $date_fin_validite) + { + if (! empty($user->rights->propal->creer)) + { + $sql = "UPDATE ".MAIN_DB_PREFIX."propal SET fin_validite = ".($date_fin_validite!=''?"'".$this->db->idate($date_fin_validite)."'":'null'); + $sql.= " WHERE rowid = ".$this->id." AND fk_statut = 0"; + if ($this->db->query($sql) ) + { + $this->fin_validite = $date_fin_validite; + return 1; + } + else + { + $this->error=$this->db->error(); + return -1; + } + } + } + + /** + * Set delivery date + * + * @param User $user Object user that modify + * @param int $date_livraison Delivery date + * @return int <0 if ko, >0 if ok + */ + function set_date_livraison($user, $date_livraison) + { + if (! empty($user->rights->propal->creer)) + { + $sql = "UPDATE ".MAIN_DB_PREFIX."propal "; + $sql.= " SET date_livraison = ".($date_livraison!=''?"'".$this->db->idate($date_livraison)."'":'null'); + $sql.= " WHERE rowid = ".$this->id; + + if ($this->db->query($sql)) + { + $this->date_livraison = $date_livraison; + return 1; + } + else + { + $this->error=$this->db->error(); + dol_syslog(get_class($this)."::set_date_livraison Erreur SQL"); + return -1; + } + } + } + + /** + * Set delivery + * + * @param User $user Object user that modify + * @param int $id Availability id + * @return int <0 if KO, >0 if OK + */ + function set_availability($user, $id) + { + if (! empty($user->rights->propal->creer)) + { + $sql = "UPDATE ".MAIN_DB_PREFIX."propal "; + $sql.= " SET fk_availability = '".$id."'"; + $sql.= " WHERE rowid = ".$this->id; + + if ($this->db->query($sql)) + { + $this->fk_availability = $id; + return 1; + } + else + { + $this->error=$this->db->error(); + dol_syslog(get_class($this)."::set_availability Erreur SQL"); + return -1; + } + } + } + + /** + * Set source of demand + * + * @param User $user Object user that modify + * @param int $id Input reason id + * @return int <0 if KO, >0 if OK + */ + function set_demand_reason($user, $id) + { + if (! empty($user->rights->propal->creer)) + { + $sql = "UPDATE ".MAIN_DB_PREFIX."propal "; + $sql.= " SET fk_input_reason = '".$id."'"; + $sql.= " WHERE rowid = ".$this->id; + + if ($this->db->query($sql)) + { + $this->fk_input_reason = $id; + return 1; + } + else + { + $this->error=$this->db->error(); + dol_syslog(get_class($this)."::set_demand_reason Erreur SQL"); + return -1; + } + } + } + + /** + * Set customer reference number + * + * @param User $user Object user that modify + * @param string $ref_client Customer reference + * @return int <0 if ko, >0 if ok + */ + function set_ref_client($user, $ref_client) + { + if (! empty($user->rights->propal->creer)) + { + dol_syslog('Propale::set_ref_client this->id='.$this->id.', ref_client='.$ref_client); + + $sql = 'UPDATE '.MAIN_DB_PREFIX.'propal SET ref_client = '.(empty($ref_client) ? 'NULL' : '\''.$this->db->escape($ref_client).'\''); + $sql.= ' WHERE rowid = '.$this->id; + if ($this->db->query($sql) ) + { + $this->ref_client = $ref_client; + return 1; + } + else + { + $this->error=$this->db->error(); + dol_syslog('Propale::set_ref_client Erreur '.$this->error.' - '.$sql); + return -2; + } + } + else + { + return -1; + } + } + + /** + * Set an overall discount on the proposal + * + * @param User $user Object user that modify + * @param double $remise Amount discount + * @return int <0 if ko, >0 if ok + */ + function set_remise_percent($user, $remise) + { + $remise=trim($remise)?trim($remise):0; + + if (! empty($user->rights->propal->creer)) + { + $remise = price2num($remise); + + $sql = "UPDATE ".MAIN_DB_PREFIX."propal SET remise_percent = ".$remise; + $sql.= " WHERE rowid = ".$this->id." AND fk_statut = 0"; + + if ($this->db->query($sql) ) + { + $this->remise_percent = $remise; + $this->update_price(1); + return 1; + } + else + { + $this->error=$this->db->error(); + return -1; + } + } + } + + + /** + * Set an absolute overall discount on the proposal + * + * @param User $user Object user that modify + * @param double $remise Amount discount + * @return int <0 if ko, >0 if ok + */ + function set_remise_absolue($user, $remise) + { + $remise=trim($remise)?trim($remise):0; + + if (! empty($user->rights->propal->creer)) + { + $remise = price2num($remise); + + $sql = "UPDATE ".MAIN_DB_PREFIX."propal "; + $sql.= " SET remise_absolue = ".$remise; + $sql.= " WHERE rowid = ".$this->id." AND fk_statut = 0"; + + if ($this->db->query($sql) ) + { + $this->remise_absolue = $remise; + $this->update_price(1); + return 1; + } + else + { + $this->error=$this->db->error(); + return -1; + } + } + } + + + + /** + * Reopen the commercial proposal + * + * @param User $user Object user that close + * @param int $statut Statut + * @param string $note Comment + * @param int $notrigger 1=Does not execute triggers, 0= execuete triggers + * @return int <0 if KO, >0 if OK + */ + function reopen($user, $statut, $note='', $notrigger=0) + { + global $langs,$conf; + + $this->statut = $statut; + $error=0; + + $sql = "UPDATE ".MAIN_DB_PREFIX."propal"; + $sql.= " SET fk_statut = ".$this->statut.","; + if (! empty($note)) $sql.= " note_private = '".$this->db->escape($note)."',"; + $sql.= " date_cloture=NULL, fk_user_cloture=NULL"; + $sql.= " WHERE rowid = ".$this->id; + + $this->db->begin(); + + dol_syslog(get_class($this)."::reopen", LOG_DEBUG); + $resql = $this->db->query($sql); + if (! $resql) { + $error++; $this->errors[]="Error ".$this->db->lasterror(); + } + if (! $error) + { + if (! $notrigger) + { + // Call trigger + $result=$this->call_trigger('PROPAL_REOPEN',$user); + if ($result < 0) { $error++; } + // End call triggers + } + } + + // Commit or rollback + if ($error) + { + if (!empty($this->errors)) + { + foreach($this->errors as $errmsg) + { + dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR); + $this->error.=($this->error?', '.$errmsg:$errmsg); + } + } + $this->db->rollback(); + return -1*$error; + } + else + { + $this->db->commit(); + return 1; + } + } + + + /** + * Close the commercial proposal + * + * @param User $user Object user that close + * @param int $statut Statut + * @param string $note Comment + * @return int <0 if KO, >0 if OK + */ + function cloture($user, $statut, $note) + { + global $langs,$conf; + + $this->statut = $statut; + $error=0; + $now=dol_now(); + + $this->db->begin(); + + $sql = "UPDATE ".MAIN_DB_PREFIX."propal"; + $sql.= " SET fk_statut = ".$statut.", note_private = '".$this->db->escape($note)."', date_cloture='".$this->db->idate($now)."', fk_user_cloture=".$user->id; + $sql.= " WHERE rowid = ".$this->id; + + $resql=$this->db->query($sql); + if ($resql) + { + $modelpdf=$conf->global->PROPALE_ADDON_PDF_ODT_CLOSED?$conf->global->PROPALE_ADDON_PDF_ODT_CLOSED:$this->modelpdf; + $trigger_name='PROPAL_CLOSE_REFUSED'; + + if ($statut == 2) + { + $trigger_name='PROPAL_CLOSE_SIGNED'; + $modelpdf=$conf->global->PROPALE_ADDON_PDF_ODT_TOBILL?$conf->global->PROPALE_ADDON_PDF_ODT_TOBILL:$this->modelpdf; + + // The connected company is classified as a client + $soc=new Societe($this->db); + $soc->id = $this->socid; + $result=$soc->set_as_client(); + + if ($result < 0) + { + $this->error=$this->db->error(); + $this->db->rollback(); + return -2; + } + } + if ($statut == 4) + { + $trigger_name='PROPAL_CLASSIFY_BILLED'; + } + + if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) + { + // Define output language + $outputlangs = $langs; + if (! empty($conf->global->MAIN_MULTILANGS)) + { + $outputlangs = new Translate("",$conf); + $newlang=(GETPOST('lang_id') ? GETPOST('lang_id') : $this->client->default_lang); + $outputlangs->setDefaultLang($newlang); + } + //$ret=$object->fetch($id); // Reload to get new records + $this->generateDocument($modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); + } + + // Call trigger + $result=$this->call_trigger($trigger_name,$user); + if ($result < 0) { $error++; } + // End call triggers + + if ( ! $error ) + { + $this->db->commit(); + return 1; + } + else + { + $this->db->rollback(); + return -1; + } + } + else + { + $this->error=$this->db->error(); + $this->db->rollback(); + return -1; + } + } + + /** + * Class invoiced the Propal + * + * @return int <0 si ko, >0 si ok + */ + function classifyBilled() + { + $sql = 'UPDATE '.MAIN_DB_PREFIX.'propal SET fk_statut = 4'; + $sql .= ' WHERE rowid = '.$this->id.' AND fk_statut > 0 ;'; + if ($this->db->query($sql) ) + { + $this->statut=4; + return 1; + } + else + { + dol_print_error($this->db); + } + } + + /** + * Class invoiced the Propal + * + * @return int <0 si ko, >0 si ok + * @deprecated + */ + function classer_facturee() + { + return $this->classifyBilled(); + } + + /** + * Set draft status + * + * @param User $user Object user that modify + * @return int <0 if KO, >0 if OK + */ + function set_draft($user) + { + global $conf,$langs; + + $sql = "UPDATE ".MAIN_DB_PREFIX."propal SET fk_statut = 0"; + $sql.= " WHERE rowid = ".$this->id; + + if ($this->db->query($sql)) + { + $this->statut = 0; + $this->brouillon = 1; + return 1; + } + else + { + return -1; + } + } + + + /** + * Return list of proposal (eventually filtered on user) into an array + * + * @param int $shortlist 0=Return array[id]=ref, 1=Return array[](id=>id,ref=>ref,name=>name) + * @param int $draft 0=not draft, 1=draft + * @param int $notcurrentuser 0=all user, 1=not current user + * @param int $socid Id third pary + * @param int $limit For pagination + * @param int $offset For pagination + * @param string $sortfield Sort criteria + * @param string $sortorder Sort order + * @return int -1 if KO, array with result if OK + */ + function liste_array($shortlist=0, $draft=0, $notcurrentuser=0, $socid=0, $limit=0, $offset=0, $sortfield='p.datep', $sortorder='DESC') + { + global $conf,$user; + + $ga = array(); + + $sql = "SELECT s.rowid, s.nom as name, s.client,"; + $sql.= " p.rowid as propalid, p.fk_statut, p.total_ht, p.ref, p.remise, "; + $sql.= " p.datep as dp, p.fin_validite as datelimite"; + if (! $user->rights->societe->client->voir && ! $socid) $sql .= ", sc.fk_soc, sc.fk_user"; + $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."propal as p, ".MAIN_DB_PREFIX."c_propalst as c"; + if (! $user->rights->societe->client->voir && ! $socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql.= " WHERE p.entity = ".$conf->entity; + $sql.= " AND p.fk_soc = s.rowid"; + $sql.= " AND p.fk_statut = c.id"; + if (! $user->rights->societe->client->voir && ! $socid) //restriction + { + $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; + } + if ($socid) $sql.= " AND s.rowid = ".$socid; + if ($draft) $sql.= " AND p.fk_statut = 0"; + if ($notcurrentuser > 0) $sql.= " AND p.fk_user_author <> ".$user->id; + $sql.= $this->db->order($sortfield,$sortorder); + $sql.= $this->db->plimit($limit,$offset); + + $result=$this->db->query($sql); + if ($result) + { + $num = $this->db->num_rows($result); + if ($num) + { + $i = 0; + while ($i < $num) + { + $obj = $this->db->fetch_object($result); + + if ($shortlist == 1) + { + $ga[$obj->propalid] = $obj->ref; + } + else if ($shortlist == 2) + { + $ga[$obj->propalid] = $obj->ref.' ('.$obj->name.')'; + } + else + { + $ga[$i]['id'] = $obj->propalid; + $ga[$i]['ref'] = $obj->ref; + $ga[$i]['name'] = $obj->name; + } + + $i++; + } + } + return $ga; + } + else + { + dol_print_error($this->db); + return -1; + } + } + + /** + * Returns an array with the numbers of related invoices + * + * @return array Array of invoices + */ + function getInvoiceArrayList() + { + return $this->InvoiceArrayList($this->id); + } + + /** + * Returns an array with id and ref of related invoices + * + * @param int $id Id propal + * @return array Array of invoices id + */ + function InvoiceArrayList($id) + { + $ga = array(); + $linkedInvoices = array(); + + $this->fetchObjectLinked($id,$this->element); + foreach($this->linkedObjectsIds as $objecttype => $objectid) + { + $numi=count($objectid); + for ($i=0;$i<$numi;$i++) + { + // Cas des factures liees directement + if ($objecttype == 'facture') + { + $linkedInvoices[] = $objectid[$i]; + } + // Cas des factures liees par un autre objet (ex: commande) + else + { + $this->fetchObjectLinked($objectid[$i],$objecttype); + foreach($this->linkedObjectsIds as $subobjecttype => $subobjectid) + { + $numj=count($subobjectid); + for ($j=0;$j<$numj;$j++) + { + if ($subobjecttype == 'facture') + { + $linkedInvoices[] = $subobjectid[$j]; + } + } + } + } + } + } + + if (count($linkedInvoices) > 0) + { + $sql= "SELECT rowid as facid, facnumber, total, datef as df, fk_user_author, fk_statut, paye"; + $sql.= " FROM ".MAIN_DB_PREFIX."facture"; + $sql.= " WHERE rowid IN (".implode(',',$linkedInvoices).")"; + + dol_syslog(get_class($this)."::InvoiceArrayList", LOG_DEBUG); + $resql=$this->db->query($sql); + + if ($resql) + { + $tab_sqlobj=array(); + $nump = $this->db->num_rows($resql); + for ($i = 0;$i < $nump;$i++) + { + $sqlobj = $this->db->fetch_object($resql); + $tab_sqlobj[] = $sqlobj; + } + $this->db->free($resql); + + $nump = count($tab_sqlobj); + + if ($nump) + { + $i = 0; + while ($i < $nump) + { + $obj = array_shift($tab_sqlobj); + + $ga[$i] = $obj; + + $i++; + } + } + return $ga; + } + else + { + return -1; + } + } + else return $ga; + } + + /** + * Delete proposal + * + * @param User $user Object user that delete + * @param int $notrigger 1=Does not execute triggers, 0= execuete triggers + * @return int 1 if ok, otherwise if error + */ + function delete($user, $notrigger=0) + { + global $conf,$langs; + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + + $error=0; + + $this->db->begin(); + + if (! $notrigger) + { + // Call trigger + $result=$this->call_trigger('PROPAL_DELETE',$user); + if ($result < 0) { $error++; } + // End call triggers + } + + if (! $error) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."propaldet WHERE fk_propal = ".$this->id; + if ($this->db->query($sql)) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."propal WHERE rowid = ".$this->id; + if ($this->db->query($sql)) + { + // Delete linked object + $res = $this->deleteObjectLinked(); + if ($res < 0) $error++; + + // Delete linked contacts + $res = $this->delete_linked_contact(); + if ($res < 0) $error++; + + if (! $error) + { + // We remove directory + $ref = dol_sanitizeFileName($this->ref); + if ($conf->propal->dir_output && !empty($this->ref)) + { + $dir = $conf->propal->dir_output . "/" . $ref ; + $file = $dir . "/" . $ref . ".pdf"; + if (file_exists($file)) + { + dol_delete_preview($this); + + if (! dol_delete_file($file,0,0,0,$this)) // For triggers + { + $this->error='ErrorFailToDeleteFile'; + $this->errors=array('ErrorFailToDeleteFile'); + $this->db->rollback(); + return 0; + } + } + if (file_exists($dir)) + { + $res=@dol_delete_dir_recursive($dir); + if (! $res) + { + $this->error='ErrorFailToDeleteDir'; + $this->errors=array('ErrorFailToDeleteDir'); + $this->db->rollback(); + return 0; + } + } + } + } + + // Removed extrafields + if (! $error) + { + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + { + $result=$this->deleteExtraFields(); + if ($result < 0) + { + $error++; + $errorflag=-4; + dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR); + } + } + } + + if (! $error) + { + dol_syslog(get_class($this)."::delete ".$this->id." by ".$user->id, LOG_DEBUG); + $this->db->commit(); + return 1; + } + else + { + $this->error=$this->db->lasterror(); + $this->db->rollback(); + return 0; + } + } + else + { + $this->error=$this->db->lasterror(); + $this->db->rollback(); + return -3; + } + } + else + { + $this->error=$this->db->lasterror(); + $this->db->rollback(); + return -2; + } + } + else + { + $this->db->rollback(); + return -1; + } + } + + /** + * Change the delivery time + * + * @param int $availability_id Id of new delivery time + * @return int >0 if OK, <0 if KO + */ + function availability($availability_id) + { + dol_syslog('Propale::availability('.$availability_id.')'); + if ($this->statut >= 0) + { + $sql = 'UPDATE '.MAIN_DB_PREFIX.'propal'; + $sql .= ' SET fk_availability = '.$availability_id; + $sql .= ' WHERE rowid='.$this->id; + if ( $this->db->query($sql) ) + { + $this->availability_id = $availability_id; + return 1; + } + else + { + dol_syslog('Propale::availability Erreur '.$sql.' - '.$this->db->error()); + $this->error=$this->db->error(); + return -1; + } + } + else + { + dol_syslog('Propale::availability, etat propale incompatible'); + $this->error='Etat propale incompatible '.$this->statut; + return -2; + } + } + + /** + * Change source demand + * + * @param int $demand_reason_id Id of new source demand + * @return int >0 si ok, <0 si ko + */ + function demand_reason($demand_reason_id) + { + dol_syslog('Propale::demand_reason('.$demand_reason_id.')'); + if ($this->statut >= 0) + { + $sql = 'UPDATE '.MAIN_DB_PREFIX.'propal'; + $sql .= ' SET fk_input_reason = '.$demand_reason_id; + $sql .= ' WHERE rowid='.$this->id; + if ( $this->db->query($sql) ) + { + $this->demand_reason_id = $demand_reason_id; + return 1; + } + else + { + dol_syslog('Propale::demand_reason Erreur '.$sql.' - '.$this->db->error()); + $this->error=$this->db->error(); + return -1; + } + } + else + { + dol_syslog('Propale::demand_reason, etat propale incompatible'); + $this->error='Etat propale incompatible '.$this->statut; + return -2; + } + } + + + /** + * Object Proposal Information + * + * @param int $id Proposal id + * @return void + */ + function info($id) + { + $sql = "SELECT c.rowid, "; + $sql.= " c.datec, c.date_valid as datev, c.date_cloture as dateo,"; + $sql.= " c.fk_user_author, c.fk_user_valid, c.fk_user_cloture"; + $sql.= " FROM ".MAIN_DB_PREFIX."propal as c"; + $sql.= " WHERE c.rowid = ".$id; + + $result = $this->db->query($sql); + + if ($result) + { + if ($this->db->num_rows($result)) + { + $obj = $this->db->fetch_object($result); + + $this->id = $obj->rowid; + + $this->date_creation = $this->db->jdate($obj->datec); + $this->date_validation = $this->db->jdate($obj->datev); + $this->date_cloture = $this->db->jdate($obj->dateo); + + $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->db->free($result); + + } + else + { + dol_print_error($this->db); + } + } + + + /** + * Return label of status of proposal (draft, validated, ...) + * + * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto + * @return string Label + */ + function getLibStatut($mode=0) + { + return $this->LibStatut($this->statut,$mode); + } + + /** + * Return label of a status (draft, validated, ...) + * + * @param int $statut id statut + * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto + * @return string Label + */ + function LibStatut($statut,$mode=1) + { + global $langs; + $langs->load("propal"); + + if ($statut==0) $statuttrans='statut0'; + if ($statut==1) $statuttrans='statut1'; + if ($statut==2) $statuttrans='statut3'; + if ($statut==3) $statuttrans='statut5'; + if ($statut==4) $statuttrans='statut6'; + + if ($mode == 0) return $this->labelstatut[$statut]; + if ($mode == 1) return $this->labelstatut_short[$statut]; + if ($mode == 2) return img_picto($this->labelstatut_short[$statut], $statuttrans).' '.$this->labelstatut_short[$statut]; + if ($mode == 3) return img_picto($this->labelstatut[$statut], $statuttrans); + if ($mode == 4) return img_picto($this->labelstatut[$statut],$statuttrans).' '.$this->labelstatut[$statut]; + if ($mode == 5) return ''.$this->labelstatut_short[$statut].' '.img_picto($this->labelstatut_short[$statut],$statuttrans); + } + + + /** + * Load indicators for dashboard (this->nbtodo and this->nbtodolate) + * + * @param User $user Object user + * @param int $mode "opened" for proposal to close, "signed" for proposal to invoice + * @return int <0 if KO, >0 if OK + */ + function load_board($user,$mode) + { + global $conf, $user; + + $now=dol_now(); + + $this->nbtodo=$this->nbtodolate=0; + $clause = " WHERE"; + + $sql = "SELECT p.rowid, p.ref, p.datec as datec, p.fin_validite as datefin"; + $sql.= " FROM ".MAIN_DB_PREFIX."propal as p"; + if (!$user->rights->societe->client->voir && !$user->societe_id) + { + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON p.fk_soc = sc.fk_soc"; + $sql.= " WHERE sc.fk_user = " .$user->id; + $clause = " AND"; + } + $sql.= $clause." p.entity = ".$conf->entity; + if ($mode == 'opened') $sql.= " AND p.fk_statut = 1"; + if ($mode == 'signed') $sql.= " AND p.fk_statut = 2"; + if ($user->societe_id) $sql.= " AND p.fk_soc = ".$user->societe_id; + + $resql=$this->db->query($sql); + if ($resql) + { + if ($mode == 'opened') $delay_warning=$conf->propal->cloture->warning_delay; + if ($mode == 'signed') $delay_warning=$conf->propal->facturation->warning_delay; + + // This assignment in condition is not a bug. It allows walking the results. + while ($obj=$this->db->fetch_object($resql)) + { + $this->nbtodo++; + if ($mode == 'opened') + { + $datelimit = $this->db->jdate($obj->datefin); + if ($datelimit < ($now - $delay_warning)) + { + $this->nbtodolate++; + } + } + // TODO Definir regle des propales a facturer en retard + // if ($mode == 'signed' && ! count($this->FactureListeArray($obj->rowid))) $this->nbtodolate++; + } + return 1; + } + else + { + $this->error=$this->db->error(); + return -1; + } + } + + + /** + * Initialise an instance with random values. + * Used to build previews or test instances. + * id must be 0 if object instance is a specimen. + * + * @return void + */ + function initAsSpecimen() + { + global $user,$langs,$conf; + + // Charge tableau des produits prodids + $prodids = array(); + $sql = "SELECT rowid"; + $sql.= " FROM ".MAIN_DB_PREFIX."product"; + $sql.= " WHERE entity IN (".getEntity('product', 1).")"; + $resql = $this->db->query($sql); + if ($resql) + { + $num_prods = $this->db->num_rows($resql); + $i = 0; + while ($i < $num_prods) + { + $i++; + $row = $this->db->fetch_row($resql); + $prodids[$i] = $row[0]; + } + } + + // Initialise parametres + $this->id=0; + $this->ref = 'SPECIMEN'; + $this->ref_client='NEMICEPS'; + $this->specimen=1; + $this->socid = 1; + $this->date = time(); + $this->fin_validite = $this->date+3600*24*30; + $this->cond_reglement_id = 1; + $this->cond_reglement_code = 'RECEP'; + $this->mode_reglement_id = 7; + $this->mode_reglement_code = 'CHQ'; + $this->availability_id = 1; + $this->availability_code = 'AV_NOW'; + $this->demand_reason_id = 1; + $this->demand_reason_code = 'SRC_00'; + $this->note_public='This is a comment (public)'; + $this->note_private='This is a comment (private)'; + // Lines + $nbp = 5; + $xnbp = 0; + while ($xnbp < $nbp) + { + $line=new PropaleLigne($this->db); + $line->desc=$langs->trans("Description")." ".$xnbp; + $line->qty=1; + $line->subprice=100; + $line->price=100; + $line->tva_tx=19.6; + $line->localtax1_tx=0; + $line->localtax2_tx=0; + if ($xnbp == 2) + { + $line->total_ht=50; + $line->total_ttc=59.8; + $line->total_tva=9.8; + $line->remise_percent=50; + } + else + { + $line->total_ht=100; + $line->total_ttc=119.6; + $line->total_tva=19.6; + $line->remise_percent=00; + } + + $prodid = rand(1, $num_prods); + $line->fk_product=$prodids[$prodid]; + + $this->lines[$xnbp]=$line; + + $this->total_ht += $line->total_ht; + $this->total_tva += $line->total_tva; + $this->total_ttc += $line->total_ttc; + + $xnbp++; + } + } + + /** + * Charge indicateurs this->nb de tableau de bord + * + * @return int <0 if ko, >0 if ok + */ + function load_state_board() + { + global $conf, $user; + + $this->nb=array(); + $clause = "WHERE"; + + $sql = "SELECT count(p.rowid) as nb"; + $sql.= " FROM ".MAIN_DB_PREFIX."propal as p"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON p.fk_soc = s.rowid"; + if (!$user->rights->societe->client->voir && !$user->societe_id) + { + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc"; + $sql.= " WHERE sc.fk_user = " .$user->id; + $clause = "AND"; + } + $sql.= " ".$clause." p.entity = ".$conf->entity; + + $resql=$this->db->query($sql); + if ($resql) + { + // This assignment in condition is not a bug. It allows walking the results. + while ($obj=$this->db->fetch_object($resql)) + { + $this->nb["proposals"]=$obj->nb; + } + $this->db->free($resql); + return 1; + } + else + { + dol_print_error($this->db); + $this->error=$this->db->error(); + return -1; + } + } + + + /** + * Returns the reference to the following non used Proposal used depending on the active numbering module + * defined into PROPALE_ADDON + * + * @param Societe $soc Object thirdparty + * @return string Reference libre pour la propale + */ + function getNextNumRef($soc) + { + global $conf, $db, $langs; + $langs->load("propal"); + + if (! empty($conf->global->PROPALE_ADDON)) + { + $mybool=false; + + $file = $conf->global->PROPALE_ADDON.".php"; + $classname = $conf->global->PROPALE_ADDON; + + // Include file with class + $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']); + foreach ($dirmodels as $reldir) { + + $dir = dol_buildpath($reldir."core/modules/propale/"); + + // Load file with numbering class (if found) + $mybool|=@include_once $dir.$file; + } + + if (! $mybool) + { + dol_print_error('',"Failed to include file ".$file); + return ''; + } + + $obj = new $classname(); + $numref = ""; + $numref = $obj->getNextValue($soc,$this); + + if ($numref != "") + { + return $numref; + } + else + { + $this->error=$obj->error; + //dol_print_error($db,"Propale::getNextNumRef ".$obj->error); + return ""; + } + } + else + { + $langs->load("errors"); + print $langs->trans("Error")." ".$langs->trans("ErrorModuleSetupNotComplete"); + return ""; + } + } + + /** + * Return clicable link of object (with eventually picto) + * + * @param int $withpicto Add picto into link + * @param string $option Where point the link ('compta', 'expedition', 'document', ...) + * @param string $get_params Parametres added to url + * @return string String with URL + */ + function getNomUrl($withpicto=0,$option='', $get_params='') + { + global $langs; + + $result=''; + $label=$langs->trans("ShowPropal").': '.$this->ref; + if (! empty($this->ref_client)) + $label.= '
'.$langs->trans('RefCustomer').': '.$this->ref_client; + $linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; + if ($option == '') { + $lien = ''; + + $picto='propal'; + + + if ($withpicto) + $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto && $withpicto != 2) + $result.=' '; + $result.=$lien.$this->ref.$lienfin; + return $result; + } + + /** + * Retrieve an array of propal lines + * + * @return int <0 if ko, >0 if ok + */ + function getLinesArray() + { + $sql = 'SELECT pt.rowid, pt.label as custom_label, pt.description, pt.fk_product, pt.fk_remise_except,'; + $sql.= ' pt.qty, pt.tva_tx, pt.remise_percent, pt.subprice, pt.info_bits,'; + $sql.= ' pt.total_ht, pt.total_tva, pt.total_ttc, pt.fk_product_fournisseur_price as fk_fournprice, pt.buy_price_ht as pa_ht, pt.special_code, pt.localtax1_tx, pt.localtax2_tx,'; + $sql.= ' pt.date_start, pt.date_end, pt.product_type, pt.rang, pt.fk_parent_line,'; + $sql.= ' p.label as product_label, p.ref, p.fk_product_type, p.rowid as prodid,'; + $sql.= ' p.description as product_desc'; + $sql.= ' FROM '.MAIN_DB_PREFIX.'propaldet as pt'; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON pt.fk_product=p.rowid'; + $sql.= ' WHERE pt.fk_propal = '.$this->id; + $sql.= ' ORDER BY pt.rang ASC, pt.rowid'; + + dol_syslog(get_class($this).'::getLinesArray', LOG_DEBUG); + $resql = $this->db->query($sql); + if ($resql) + { + $num = $this->db->num_rows($resql); + $i = 0; + + while ($i < $num) + { + $obj = $this->db->fetch_object($resql); + + $this->lines[$i] = new PropaleLigne($this->db); + $this->lines[$i]->id = $obj->rowid; // for backward compatibility + $this->lines[$i]->rowid = $obj->rowid; + $this->lines[$i]->label = $obj->custom_label; + $this->lines[$i]->description = $obj->description; + $this->lines[$i]->fk_product = $obj->fk_product; + $this->lines[$i]->ref = $obj->ref; + $this->lines[$i]->product_label = $obj->product_label; + $this->lines[$i]->product_desc = $obj->product_desc; + $this->lines[$i]->fk_product_type = $obj->fk_product_type; // deprecated + $this->lines[$i]->product_type = $obj->product_type; + $this->lines[$i]->qty = $obj->qty; + $this->lines[$i]->subprice = $obj->subprice; + $this->lines[$i]->fk_remise_except = $obj->fk_remise_except; + $this->lines[$i]->remise_percent = $obj->remise_percent; + $this->lines[$i]->tva_tx = $obj->tva_tx; + $this->lines[$i]->info_bits = $obj->info_bits; + $this->lines[$i]->total_ht = $obj->total_ht; + $this->lines[$i]->total_tva = $obj->total_tva; + $this->lines[$i]->total_ttc = $obj->total_ttc; + $this->lines[$i]->fk_fournprice = $obj->fk_fournprice; + $marginInfos = getMarginInfos($obj->subprice, $obj->remise_percent, $obj->tva_tx, $obj->localtax1_tx, $obj->localtax2_tx, $this->lines[$i]->fk_fournprice, $obj->pa_ht); + $this->lines[$i]->pa_ht = $marginInfos[0]; + $this->lines[$i]->marge_tx = $marginInfos[1]; + $this->lines[$i]->marque_tx = $marginInfos[2]; + $this->lines[$i]->fk_parent_line = $obj->fk_parent_line; + $this->lines[$i]->special_code = $obj->special_code; + $this->lines[$i]->rang = $obj->rang; + $this->lines[$i]->date_start = $this->db->jdate($obj->date_start); + $this->lines[$i]->date_end = $this->db->jdate($obj->date_end); + + $i++; + } + $this->db->free($resql); + + return 1; + } + else + { + $this->error=$this->db->error(); + return -1; + } + } + + /** + * Create a document onto disk according to template module. + * + * @param string $modele Force model to use ('' to not force) + * @param Translate $outputlangs Object langs to use for output + * @param int $hidedetails Hide details of lines + * @param int $hidedesc Hide description + * @param int $hideref Hide ref + * @return int 0 if KO, 1 if OK + */ + public function generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0) + { + global $conf,$user,$langs; + + $langs->load("propale"); + + // Positionne le modele sur le nom du modele a utiliser + if (! dol_strlen($modele)) + { + if (! empty($conf->global->PROPALE_ADDON_PDF)) + { + $modele = $conf->global->PROPALE_ADDON_PDF; + } + else + { + $modele = 'azur'; + } + } + + $modelpath = "core/modules/propale/doc/"; + + return $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref); + } + + +} + + +/** + * \class PropaleLigne + * \brief Class to manage commercial proposal lines + */ +class PropaleLigne extends CommonObject +{ + var $db; + var $error; + + public $element='propaldet'; + public $table_element='propaldet'; + + var $oldline; + + // From llx_propaldet + var $rowid; + var $fk_propal; + var $fk_parent_line; + var $desc; // Description ligne + var $fk_product; // Id produit predefini + var $product_type = 0; // Type 0 = product, 1 = Service + + var $qty; + var $tva_tx; + var $subprice; + var $remise_percent; + var $fk_remise_except; + + var $rang = 0; + + var $fk_fournprice; + var $pa_ht; + var $marge_tx; + var $marque_tx; + + var $special_code; // Tag for special lines (exlusive tags) + // 1: frais de port + // 2: ecotaxe + // 3: option line (when qty = 0) + + var $info_bits = 0; // Liste d'options cumulables: + // Bit 0: 0 si TVA normal - 1 si TVA NPR + // Bit 1: 0 ligne normale - 1 si ligne de remise fixe + + var $total_ht; // Total HT de la ligne toute quantite et incluant la remise ligne + var $total_tva; // Total TVA de la ligne toute quantite et incluant la remise ligne + var $total_ttc; // Total TTC de la ligne toute quantite et incluant la remise ligne + + // Ne plus utiliser + var $remise; + var $price; + + // From llx_product + var $ref; // Reference produit + var $libelle; // Label produit + var $product_desc; // Description produit + + var $localtax1_tx; // Local tax 1 + var $localtax2_tx; // Local tax 2 + var $localtax1_type; // Local tax 1 type + var $localtax2_type; // Local tax 2 type + var $total_localtax1; // Line total local tax 1 + var $total_localtax2; // Line total local tax 2 + + var $date_start; + var $date_end; + + var $skip_update_total; // Skip update price total for special lines + + /** + * Class line Contructor + * + * @param DoliDB $db Database handler + */ + function __construct($db) + { + $this->db= $db; + } + + /** + * Retrieve the propal line object + * + * @param int $rowid Propal line id + * @return int <0 if KO, >0 if OK + */ + function fetch($rowid) + { + $sql = 'SELECT pd.rowid, pd.fk_propal, pd.fk_parent_line, pd.fk_product, pd.label as custom_label, pd.description, pd.price, pd.qty, pd.tva_tx,'; + $sql.= ' pd.remise, pd.remise_percent, pd.fk_remise_except, pd.subprice,'; + $sql.= ' pd.info_bits, pd.total_ht, pd.total_tva, pd.total_ttc, pd.fk_product_fournisseur_price as fk_fournprice, pd.buy_price_ht as pa_ht, pd.special_code, pd.rang,'; + $sql.= ' pd.localtax1_tx, pd.localtax2_tx, pd.total_localtax1, pd.total_localtax2,'; + $sql.= ' p.ref as product_ref, p.label as product_label, p.description as product_desc,'; + $sql.= ' pd.date_start, pd.date_end, pd.product_type'; + $sql.= ' FROM '.MAIN_DB_PREFIX.'propaldet as pd'; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON pd.fk_product = p.rowid'; + $sql.= ' WHERE pd.rowid = '.$rowid; + + $result = $this->db->query($sql); + if ($result) + { + $objp = $this->db->fetch_object($result); + + $this->rowid = $objp->rowid; + $this->fk_propal = $objp->fk_propal; + $this->fk_parent_line = $objp->fk_parent_line; + $this->label = $objp->custom_label; + $this->desc = $objp->description; + $this->qty = $objp->qty; + $this->price = $objp->price; // deprecated + $this->subprice = $objp->subprice; + $this->tva_tx = $objp->tva_tx; + $this->remise = $objp->remise; + $this->remise_percent = $objp->remise_percent; + $this->fk_remise_except = $objp->fk_remise_except; + $this->fk_product = $objp->fk_product; + $this->info_bits = $objp->info_bits; + + $this->total_ht = $objp->total_ht; + $this->total_tva = $objp->total_tva; + $this->total_ttc = $objp->total_ttc; + + $this->fk_fournprice = $objp->fk_fournprice; + + $marginInfos = getMarginInfos($objp->subprice, $objp->remise_percent, $objp->tva_tx, $objp->localtax1_tx, $objp->localtax2_tx, $this->fk_fournprice, $objp->pa_ht); + $this->pa_ht = $marginInfos[0]; + $this->marge_tx = $marginInfos[1]; + $this->marque_tx = $marginInfos[2]; + + $this->special_code = $objp->special_code; + $this->product_type = $objp->product_type; + $this->rang = $objp->rang; + + $this->ref = $objp->product_ref; // deprecated + $this->product_ref = $objp->product_ref; + $this->libelle = $objp->product_label; // deprecated + $this->product_label = $objp->product_label; + $this->product_desc = $objp->product_desc; + + $this->date_start = $this->db->jdate($objp->date_start); + $this->date_end = $this->db->jdate($objp->date_end); + + $this->db->free($result); + } + else + { + dol_print_error($this->db); + } + } + + /** + * Insert object line propal in database + * + * @param int $notrigger 1=Does not execute triggers, 0= execuete triggers + * @return int <0 if KO, >0 if OK + */ + function insert($notrigger=0) + { + global $conf,$langs,$user; + + $error=0; + + dol_syslog(get_class($this)."::insert rang=".$this->rang); + + // Clean parameters + if (empty($this->tva_tx)) $this->tva_tx=0; + if (empty($this->localtax1_tx)) $this->localtax1_tx=0; + if (empty($this->localtax2_tx)) $this->localtax2_tx=0; + if (empty($this->localtax1_type)) $this->localtax1_type=0; + if (empty($this->localtax2_type)) $this->localtax2_type=0; + if (empty($this->total_localtax1)) $this->total_localtax1=0; + if (empty($this->total_localtax2)) $this->total_localtax2=0; + if (empty($this->rang)) $this->rang=0; + if (empty($this->remise)) $this->remise=0; + if (empty($this->remise_percent)) $this->remise_percent=0; + if (empty($this->info_bits)) $this->info_bits=0; + if (empty($this->special_code)) $this->special_code=0; + if (empty($this->fk_parent_line)) $this->fk_parent_line=0; + if (empty($this->fk_fournprice)) $this->fk_fournprice=0; + + if (empty($this->pa_ht)) $this->pa_ht=0; + + // si prix d'achat non renseigne et utilise pour calcul des marges alors prix achat = prix vente + if ($this->pa_ht == 0) { + if ($this->subprice > 0 && (isset($conf->global->ForceBuyingPriceIfNull) && $conf->global->ForceBuyingPriceIfNull == 1)) + $this->pa_ht = $this->subprice * (1 - $this->remise_percent / 100); + } + + // Check parameters + if ($this->product_type < 0) return -1; + + $this->db->begin(); + + // Insert line into database + $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'propaldet'; + $sql.= ' (fk_propal, fk_parent_line, label, description, fk_product, product_type,'; + $sql.= ' fk_remise_except, qty, tva_tx, localtax1_tx, localtax2_tx, localtax1_type, localtax2_type,'; + $sql.= ' subprice, remise_percent, '; + $sql.= ' info_bits, '; + $sql.= ' total_ht, total_tva, total_localtax1, total_localtax2, total_ttc, fk_product_fournisseur_price, buy_price_ht, special_code, rang,'; + $sql.= ' date_start, date_end)'; + $sql.= " VALUES (".$this->fk_propal.","; + $sql.= " ".($this->fk_parent_line>0?"'".$this->fk_parent_line."'":"null").","; + $sql.= " ".(! empty($this->label)?"'".$this->db->escape($this->label)."'":"null").","; + $sql.= " '".$this->db->escape($this->desc)."',"; + $sql.= " ".($this->fk_product?"'".$this->fk_product."'":"null").","; + $sql.= " '".$this->product_type."',"; + $sql.= " ".($this->fk_remise_except?"'".$this->fk_remise_except."'":"null").","; + $sql.= " ".price2num($this->qty).","; + $sql.= " ".price2num($this->tva_tx).","; + $sql.= " ".price2num($this->localtax1_tx).","; + $sql.= " ".price2num($this->localtax2_tx).","; + $sql.= " '".$this->localtax1_type."',"; + $sql.= " '".$this->localtax2_type."',"; + $sql.= " ".($this->subprice?price2num($this->subprice):"null").","; + $sql.= " ".price2num($this->remise_percent).","; + $sql.= " ".(isset($this->info_bits)?"'".$this->info_bits."'":"null").","; + $sql.= " ".price2num($this->total_ht).","; + $sql.= " ".price2num($this->total_tva).","; + $sql.= " ".price2num($this->total_localtax1).","; + $sql.= " ".price2num($this->total_localtax2).","; + $sql.= " ".price2num($this->total_ttc).","; + $sql.= " ".(!empty($this->fk_fournprice)?"'".$this->fk_fournprice."'":"null").","; + $sql.= " ".(isset($this->pa_ht)?"'".price2num($this->pa_ht)."'":"null").","; + $sql.= ' '.$this->special_code.','; + $sql.= ' '.$this->rang.','; + $sql.= " ".(! empty($this->date_start)?"'".$this->db->idate($this->date_start)."'":"null").','; + $sql.= " ".(! empty($this->date_end)?"'".$this->db->idate($this->date_end)."'":"null"); + $sql.= ')'; + + dol_syslog(get_class($this).'::insert', LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + $this->rowid=$this->db->last_insert_id(MAIN_DB_PREFIX.'propaldet'); + + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + { + $this->id=$this->rowid; + $result=$this->insertExtraFields(); + if ($result < 0) + { + $error++; + } + } + + if (! $notrigger) + { + // Call trigger + $result=$this->call_trigger('LINEPROPAL_INSERT',$user); + if ($result < 0) + { + $this->db->rollback(); + return -1; + } + // End call triggers + } + + $this->db->commit(); + return 1; + } + else + { + $this->error=$this->db->error()." sql=".$sql; + $this->db->rollback(); + return -1; + } + } + + /** + * Delete line in database + * + * @return int <0 if ko, >0 if ok + */ + function delete() + { + global $conf,$langs,$user; + + $error=0; + $this->db->begin(); + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."propaldet WHERE rowid = ".$this->rowid; + dol_syslog("PropaleLigne::delete", LOG_DEBUG); + if ($this->db->query($sql) ) + { + + // Remove extrafields + if ((! $error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used + { + $this->id=$this->rowid; + $result=$this->deleteExtraFields(); + if ($result < 0) + { + $error++; + dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR); + } + } + + // Call trigger + $result=$this->call_trigger('LINEPROPAL_DELETE',$user); + if ($result < 0) + { + $this->db->rollback(); + return -1; + } + // End call triggers + + $this->db->commit(); + + return 1; + } + else + { + $this->error=$this->db->error()." sql=".$sql; + $this->db->rollback(); + return -1; + } + } + + /** + * Update propal line object into DB + * + * @param int $notrigger 1=Does not execute triggers, 0= execuete triggers + * @return int <0 if ko, >0 if ok + */ + function update($notrigger=0) + { + global $conf,$langs,$user; + + $error=0; + + // Clean parameters + if (empty($this->tva_tx)) $this->tva_tx=0; + if (empty($this->localtax1_tx)) $this->localtax1_tx=0; + if (empty($this->localtax2_tx)) $this->localtax2_tx=0; + if (empty($this->total_localtax1)) $this->total_localtax1=0; + if (empty($this->total_localtax2)) $this->total_localtax2=0; + if (empty($this->localtax1_type)) $this->localtax1_type=0; + if (empty($this->localtax2_type)) $this->localtax2_type=0; + if (empty($this->marque_tx)) $this->marque_tx=0; + if (empty($this->marge_tx)) $this->marge_tx=0; + if (empty($this->price)) $this->price=0; // TODO A virer + if (empty($this->remise)) $this->remise=0; // TODO A virer + if (empty($this->remise_percent)) $this->remise_percent=0; + if (empty($this->info_bits)) $this->info_bits=0; + if (empty($this->special_code)) $this->special_code=0; + if (empty($this->fk_parent_line)) $this->fk_parent_line=0; + if (empty($this->fk_fournprice)) $this->fk_fournprice=0; + + if (empty($this->pa_ht)) $this->pa_ht=0; + + // si prix d'achat non renseigne et utilise pour calcul des marges alors prix achat = prix vente + if ($this->pa_ht == 0) { + if ($this->subprice > 0 && (isset($conf->global->ForceBuyingPriceIfNull) && $conf->global->ForceBuyingPriceIfNull == 1)) + $this->pa_ht = $this->subprice * (1 - $this->remise_percent / 100); + } + + $this->db->begin(); + + // Mise a jour ligne en base + $sql = "UPDATE ".MAIN_DB_PREFIX."propaldet SET"; + $sql.= " description='".$this->db->escape($this->desc)."'"; + $sql.= " , label=".(! empty($this->label)?"'".$this->db->escape($this->label)."'":"null"); + $sql.= " , product_type=".$this->product_type; + $sql.= " , tva_tx='".price2num($this->tva_tx)."'"; + $sql.= " , localtax1_tx=".price2num($this->localtax1_tx); + $sql.= " , localtax2_tx=".price2num($this->localtax2_tx); + $sql.= " , localtax1_type='".$this->localtax1_type."'"; + $sql.= " , localtax2_type='".$this->localtax2_type."'"; + $sql.= " , qty='".price2num($this->qty)."'"; + $sql.= " , subprice=".price2num($this->subprice).""; + $sql.= " , remise_percent=".price2num($this->remise_percent).""; + $sql.= " , price=".price2num($this->price).""; // TODO A virer + $sql.= " , remise=".price2num($this->remise).""; // TODO A virer + $sql.= " , info_bits='".$this->info_bits."'"; + if (empty($this->skip_update_total)) + { + $sql.= " , total_ht=".price2num($this->total_ht).""; + $sql.= " , total_tva=".price2num($this->total_tva).""; + $sql.= " , total_ttc=".price2num($this->total_ttc).""; + $sql.= " , total_localtax1=".price2num($this->total_localtax1).""; + $sql.= " , total_localtax2=".price2num($this->total_localtax2).""; + } + $sql.= " , fk_product_fournisseur_price=".(! empty($this->fk_fournprice)?"'".$this->fk_fournprice."'":"null"); + $sql.= " , buy_price_ht=".price2num($this->pa_ht); + if (strlen($this->special_code)) $sql.= " , special_code=".$this->special_code; + $sql.= " , fk_parent_line=".($this->fk_parent_line>0?$this->fk_parent_line:"null"); + if (! empty($this->rang)) $sql.= ", rang=".$this->rang; + $sql.= " , date_start=".(! empty($this->date_start)?"'".$this->db->idate($this->date_start)."'":"null"); + $sql.= " , date_end=".(! empty($this->date_end)?"'".$this->db->idate($this->date_end)."'":"null"); + $sql.= " WHERE rowid = ".$this->rowid; + + dol_syslog(get_class($this)."::update", LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + { + $this->id=$this->rowid; + $result=$this->insertExtraFields(); + if ($result < 0) + { + $error++; + } + } + + if (! $notrigger) + { + // Call trigger + $result=$this->call_trigger('LINEPROPAL_UPDATE',$user); + if ($result < 0) + { + $this->db->rollback(); + return -1; + } + // End call triggers + } + + $this->db->commit(); + return 1; + } + else + { + $this->error=$this->db->error(); + $this->db->rollback(); + return -2; + } + } + + /** + * Update DB line fields total_xxx + * Used by migration + * + * @return int <0 if ko, >0 if ok + */ + function update_total() + { + $this->db->begin(); + + // Mise a jour ligne en base + $sql = "UPDATE ".MAIN_DB_PREFIX."propaldet SET"; + $sql.= " total_ht=".price2num($this->total_ht,'MT').""; + $sql.= ",total_tva=".price2num($this->total_tva,'MT').""; + $sql.= ",total_ttc=".price2num($this->total_ttc,'MT').""; + $sql.= " WHERE rowid = ".$this->rowid; + + dol_syslog("PropaleLigne::update_total", LOG_DEBUG); + + $resql=$this->db->query($sql); + if ($resql) + { + $this->db->commit(); + return 1; + } + else + { + $this->error=$this->db->error(); + $this->db->rollback(); + return -2; + } + } + +} + diff --git a/htdocs/comm/askpricesupplier/class/index.html b/htdocs/comm/askpricesupplier/class/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/comm/askpricesupplier/contact.php b/htdocs/comm/askpricesupplier/contact.php new file mode 100644 index 00000000000..6a0a1076e62 --- /dev/null +++ b/htdocs/comm/askpricesupplier/contact.php @@ -0,0 +1,223 @@ + + * Copyright (C) 2005-2009 Destailleur Laurent + * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2011-2012 Philippe Grand + * + * 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/comm/propal/contact.php + * \ingroup propal + * \brief Onglet de gestion des contacts de propal + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; +require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; + +$langs->load("facture"); +$langs->load("orders"); +$langs->load("sendings"); +$langs->load("companies"); + +$id=GETPOST('id','int'); +$ref= GETPOST('ref','alpha'); +$lineid=GETPOST('lineid','int'); +$action=GETPOST('action','alpha'); + +// Security check +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'propal', $id); + +$object = new Propal($db); + +// Load object +if ($id > 0 || ! empty($ref)) +{ + $ret=$object->fetch($id, $ref); + if ($ret == 0) + { + $langs->load("errors"); + setEventMessage($langs->trans('ErrorRecordNotFound'), 'errors'); + $error++; + } + else if ($ret < 0) + { + setEventMessage($object->error, 'errors'); + $error++; + } +} +if (! $error) +{ + $object->fetch_thirdparty(); +} +else +{ + header('Location: '.DOL_URL_ROOT.'/comm/propal/list.php'); + exit; +} + + +/* + * Ajout d'un nouveau contact + */ + +if ($action == 'addcontact' && $user->rights->propale->creer) +{ + if ($object->id > 0) + { + $contactid = (GETPOST('userid','int') ? GETPOST('userid','int') : GETPOST('contactid','int')); + $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]); + } + + if ($result >= 0) + { + header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); + exit; + } + else + { + if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') + { + $langs->load("errors"); + setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'errors'); + } + else + { + setEventMessage($object->error, 'errors'); + } + } +} + +// Bascule du statut d'un contact +else if ($action == 'swapstatut' && $user->rights->propale->creer) +{ + if ($object->id > 0) + { + $result=$object->swapContactStatus(GETPOST('ligne')); + } +} + +// Efface un contact +else if ($action == 'deletecontact' && $user->rights->propale->creer) +{ + $result = $object->delete_contact($lineid); + + if ($result >= 0) + { + header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); + exit; + } + else + { + dol_print_error($db); + } +} + +else if ($action == 'setaddress' && $user->rights->propale->creer) +{ + $result=$object->setDeliveryAddress($_POST['fk_address']); + if ($result < 0) dol_print_error($db,$object->error); +} + + +/* + * View + */ + +llxHeader('',$langs->trans('Proposal'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); + +$form = new Form($db); +$formcompany= new FormCompany($db); +$formother = new FormOther($db); + +if ($object->id > 0) +{ + $head = propal_prepare_head($object); + dol_fiche_head($head, 'contact', $langs->trans("Proposal"), 0, 'propal'); + + /* + * Propal synthese pour rappel + */ + print ''; + + $linkback=''.$langs->trans("BackToList").''; + + // Ref + print ''; + + // Ref client + print ''; + print ''; + + // Customer + print ""; + print ''; + + // Delivery address + if (! empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT)) + { + print ''; + } + + print "
'.$langs->trans('Ref').''; + print $form->showrefnav($object,'ref',$linkback,1,'ref','ref',''); + print '
'; + print ''; + print '
'; + print $langs->trans('RefCustomer').''; + print '
'; + print '
'; + print $object->ref_client; + print '
".$langs->trans("Company")."'.$object->client->getNomUrl(1).'
'; + print ''; + + if ($action != 'editdelivery_address' && ! empty($object->brouillon)) + print ''; + print '
'; + print $langs->trans('DeliveryAddress'); + print 'socid.'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetDeliveryAddress'),1).'
'; + print '
'; + + if ($action == 'editdelivery_address') + { + $formother->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$object->socid,'fk_address','propal',$object->id); + } + else + { + $formother->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$object->socid,'none','propal',$object->id); + } + print '
"; + + print ''; + + print '
'; + + // Contacts lines (modules that overwrite templates must declare this into descriptor) + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl')); + foreach($dirtpls as $reldir) + { + $res=@include dol_buildpath($reldir.'/contacts.tpl.php'); + if ($res) break; + } +} + +llxFooter(); + +$db->close(); diff --git a/htdocs/comm/askpricesupplier/document.php b/htdocs/comm/askpricesupplier/document.php new file mode 100644 index 00000000000..d224c20bc97 --- /dev/null +++ b/htdocs/comm/askpricesupplier/document.php @@ -0,0 +1,144 @@ + + * Copyright (C) 2004-2009 Laurent Destailleur + * Copyright (C) 2005 Marc Barilley / Ocebo + * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2013 Cédric Salvador + * + * 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/comm/propal/document.php + * \ingroup propal + * \brief Management page of documents attached to a business proposal + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; + +$langs->load('compta'); +$langs->load('other'); + +$action = GETPOST('action','alpha'); +$confirm = GETPOST('confirm','alpha'); +$id = GETPOST('id','int'); +$ref = GETPOST('ref','alpha'); + +// Security check +$socid=''; +if (! empty($user->societe_id)) +{ + $action=''; + $socid = $user->societe_id; +} +$result = restrictedArea($user, 'propal', $id); + +// Get parameters +$sortfield = GETPOST("sortfield",'alpha'); +$sortorder = GETPOST("sortorder",'alpha'); +$page = GETPOST("page",'int'); +if ($page == -1) { $page = 0; } +$offset = $conf->liste_limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; +if (! $sortorder) $sortorder="ASC"; +if (! $sortfield) $sortfield="name"; + +$object = new Propal($db); +$object->fetch($id,$ref); +if ($object->id > 0) +{ + $object->fetch_thirdparty(); + $upload_dir = $conf->propal->dir_output.'/'.dol_sanitizeFileName($object->ref); + include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php'; +} + +/* + * Actions + */ + + + +/* + * View + */ + +llxHeader('',$langs->trans('Proposal'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); + +$form = new Form($db); + +if ($object->id > 0) +{ + $upload_dir = $conf->propal->dir_output.'/'.dol_sanitizeFileName($object->ref); + + $head = propal_prepare_head($object); + dol_fiche_head($head, 'document', $langs->trans('Proposal'), 0, 'propal'); + + // Construit liste des fichiers + $filearray=dol_dir_list($upload_dir,"files",0,'','(\.meta|_preview\.png)$',$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + $totalsize=0; + foreach($filearray as $key => $file) + { + $totalsize+=$file['size']; + } + + + print ''; + + $linkback=''.$langs->trans("BackToList").''; + + // Ref + print ''; + + // Ref client + print ''; + print ''; + + // Customer + print ""; + print ''; + + print ''; + print ''; + + print '
'.$langs->trans('Ref').''; + print $form->showrefnav($object,'ref',$linkback,1,'ref','ref',''); + print '
'; + print ''; + print '
'; + print $langs->trans('RefCustomer').''; + print '
'; + print '
'; + print $object->ref_client; + print '
".$langs->trans("Company")."'.$object->thirdparty->getNomUrl(1).'
'.$langs->trans("NbOfAttachedFiles").''.count($filearray).'
'.$langs->trans("TotalSizeOfAttachedFiles").''.$totalsize.' '.$langs->trans("bytes").'
'; + + print ''; + + $modulepart = 'propal'; + $permission = $user->rights->propal->creer; + $param = '&id=' . $object->id; + include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php'; +} +else +{ + print $langs->trans("ErrorUnknown"); +} + +llxFooter(); +$db->close(); diff --git a/htdocs/comm/askpricesupplier/index.php b/htdocs/comm/askpricesupplier/index.php new file mode 100644 index 00000000000..a0e8a3409ab --- /dev/null +++ b/htdocs/comm/askpricesupplier/index.php @@ -0,0 +1,528 @@ + + * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2005-2012 Regis Houssin + * + * 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/comm/propal/index.php + * \ingroup propal + * \brief Home page of proposal area + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; +require_once DOL_DOCUMENT_ROOT .'/comm/propal/class/propal.class.php'; + +$langs->load("propal"); +$langs->load("companies"); + +// Security check +$socid=GETPOST('socid','int'); +if (isset($user->societe_id) && $user->societe_id > 0) +{ + $action = ''; + $socid = $user->societe_id; +} +$result = restrictedArea($user, 'propal'); + + +/* + * View + */ +$now=dol_now(); +$propalstatic=new Propal($db); +$companystatic=new Societe($db); +$form = new Form($db); +$formfile = new FormFile($db); +$help_url="EN:Module_Commercial_Proposals|FR:Module_Propositions_commerciales|ES:Módulo_Presupuestos"; + +llxHeader("",$langs->trans("ProspectionArea"),$help_url); + +print_fiche_titre($langs->trans("ProspectionArea")); + +//print ''; +//print '
'; +print '
'; + + +/* + * Search form + */ +$var=false; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print "
'.$langs->trans("SearchPropal").'
'; +print $langs->trans("Ref").':
'.$langs->trans("Other").':

\n"; + + +/* + * Statistics + */ + +$sql = "SELECT count(p.rowid), p.fk_statut"; +$sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; +$sql.= ", ".MAIN_DB_PREFIX."propal as p"; +if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; +$sql.= " WHERE p.fk_soc = s.rowid"; +$sql.= " AND p.entity = ".$conf->entity; +if ($user->societe_id) $sql.=' AND p.fk_soc = '.$user->societe_id; +if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; +$sql.= " AND p.fk_statut IN (0,1,2,3,4)"; +$sql.= " GROUP BY p.fk_statut"; +$resql = $db->query($sql); +if ($resql) +{ + $num = $db->num_rows($resql); + $i = 0; + + $total=0; + $totalinprocess=0; + $dataseries=array(); + $vals=array(); + // -1=Canceled, 0=Draft, 1=Validated, (2=Accepted/On process not managed for customer orders), 3=Closed (Sent/Received, billed or not) + while ($i < $num) + { + $row = $db->fetch_row($resql); + if ($row) + { + //if ($row[1]!=-1 && ($row[1]!=3 || $row[2]!=1)) + { + $vals[$row[1]]=$row[0]; + $totalinprocess+=$row[0]; + } + $total+=$row[0]; + } + $i++; + } + $db->free($resql); + + print ''; + print ''."\n"; + $var=true; + $listofstatus=array(0,1,2,3,4); + foreach ($listofstatus as $status) + { + $dataseries[]=array('label'=>$propalstatic->LibStatut($status,1),'data'=>(isset($vals[$status])?(int) $vals[$status]:0)); + if (! $conf->use_javascript_ajax) + { + $var=!$var; + print ""; + print ''; + print ''; + print "\n"; + } + } + if ($conf->use_javascript_ajax) + { + print ''; + } + //if ($totalinprocess != $total) + //print ''; + print ''; + print "
'.$langs->trans("Statistics").' - '.$langs->trans("Proposals").'
'.$propalstatic->LibStatut($status,0).''.(isset($vals[$status])?$vals[$status]:0).'
'; + $data=array('series'=>$dataseries); + dol_print_graph('stats',300,180,$data,1,'pie',1); + print '
'.$langs->trans("Total").' ('.$langs->trans("CustomersOrdersRunning").')'.$totalinprocess.'
'.$langs->trans("Total").''.$total.'

"; +} +else +{ + dol_print_error($db); +} + + +/* + * Draft proposals + */ +if (! empty($conf->propal->enabled)) +{ + $sql = "SELECT c.rowid, c.ref, s.nom as socname, s.rowid as socid, s.canvas, s.client"; + $sql.= " FROM ".MAIN_DB_PREFIX."propal as c"; + $sql.= ", ".MAIN_DB_PREFIX."societe as s"; + if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql.= " WHERE c.fk_soc = s.rowid"; + $sql.= " AND c.entity = ".$conf->entity; + $sql.= " AND c.fk_statut = 0"; + if ($socid) $sql.= " AND c.fk_soc = ".$socid; + if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; + + $resql=$db->query($sql); + if ($resql) + { + print ''; + print ''; + print ''; + $langs->load("propal"); + $num = $db->num_rows($resql); + if ($num) + { + $i = 0; + $var = True; + while ($i < $num) + { + $var=!$var; + $obj = $db->fetch_object($resql); + print ""; + + $propalstatic->id=$obj->rowid; + $propalstatic->ref=$obj->ref; + print ''; + + $companystatic->id=$obj->socid; + $companystatic->name=$obj->socname; + $companystatic->client=$obj->client; + $companystatic->canvas=$obj->canvas; + print ''; + + print ''; + $i++; + } + } + print "
'.$langs->trans("DraftPropals").'
'.$propalstatic->getNomUrl(1).''.$companystatic->getNomUrl(1,'customer',24).'

"; + } +} + + +//print '
'; +print '
'; + + +$max=5; + +/* + * Last modified proposals + */ + +$sql = "SELECT c.rowid, c.ref, c.fk_statut, s.nom as socname, s.rowid as socid, s.canvas, s.client,"; +$sql.= " date_cloture as datec"; +$sql.= " FROM ".MAIN_DB_PREFIX."propal as c"; +$sql.= ", ".MAIN_DB_PREFIX."societe as s"; +if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; +$sql.= " WHERE c.fk_soc = s.rowid"; +$sql.= " AND c.entity = ".$conf->entity; +//$sql.= " AND c.fk_statut > 2"; +if ($socid) $sql .= " AND c.fk_soc = ".$socid; +if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; +$sql.= " ORDER BY c.tms DESC"; +$sql.= $db->plimit($max, 0); + +$resql=$db->query($sql); +if ($resql) +{ + print ''; + print ''; + print ''; + + $num = $db->num_rows($resql); + if ($num) + { + $i = 0; + $var = True; + while ($i < $num) + { + $var=!$var; + $obj = $db->fetch_object($resql); + + print ""; + print ''; + + $companystatic->id=$obj->socid; + $companystatic->name=$obj->socname; + $companystatic->client=$obj->client; + $companystatic->canvas=$obj->canvas; + print ''; + + print ''; + print ''; + print ''; + $i++; + } + } + print "
'.$langs->trans("LastModifiedProposals",$max).'
'; + + $propalstatic->id=$obj->rowid; + $propalstatic->ref=$obj->ref; + + print ''; + print ''; + + print ''; + + print '
'; + print $propalstatic->getNomUrl(1); + print ''; + print ' '; + print ''; + $filename=dol_sanitizeFileName($obj->ref); + $filedir=$conf->propal->dir_output . '/' . dol_sanitizeFileName($obj->ref); + $urlsource=$_SERVER['PHP_SELF'].'?id='.$obj->rowid; + print $formfile->getDocumentsLink($propalstatic->element, $filename, $filedir); + print '
'; + + print '
'.$companystatic->getNomUrl(1,'customer').''.dol_print_date($db->jdate($obj->datec),'day').''.$propalstatic->LibStatut($obj->fk_statut,5).'

"; +} +else dol_print_error($db); + + +/* + * Opened proposals + */ +if (! empty($conf->propal->enabled) && $user->rights->propale->lire) +{ + $langs->load("propal"); + + $now=dol_now(); + + $sql = "SELECT s.nom as socname, s.rowid as socid, s.canvas, s.client, p.rowid as propalid, p.total as total_ttc, p.total_ht, p.ref, p.fk_statut, p.datep as dp, p.fin_validite as dfv"; + $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; + $sql.= ", ".MAIN_DB_PREFIX."propal as p"; + if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql.= " WHERE p.fk_soc = s.rowid"; + $sql.= " AND p.entity = ".$conf->entity; + $sql.= " AND p.fk_statut = 1"; + if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; + if ($socid) $sql.= " AND s.rowid = ".$socid; + $sql.= " ORDER BY p.rowid DESC"; + + $result=$db->query($sql); + if ($result) + { + $total = 0; + $num = $db->num_rows($result); + $i = 0; + if ($num > 0) + { + $var=true; + + print ''; + print ''; + + $nbofloop=min($num, (empty($conf->global->MAIN_MAXLIST_OVERLOAD)?500:$conf->global->MAIN_MAXLIST_OVERLOAD)); + while ($i < $nbofloop) + { + $obj = $db->fetch_object($result); + $var=!$var; + print ''; + + // Ref + print '"; + + $companystatic->id=$obj->socid; + $companystatic->name=$obj->socname; + $companystatic->client=$obj->client; + $companystatic->canvas=$obj->canvas; + print ''."\n"; + + print ''."\n"; + print ''; + print ''."\n"; + print ''."\n"; + $i++; + $total += $obj->total_ttc; + } + if ($num > $nbofloop) + { + print '"; + } + else if ($total>0) + { + print '"; + } + print "
'.$langs->trans("ProposalsOpened").' '.$num.'
'; + + $propalstatic->id=$obj->propalid; + $propalstatic->ref=$obj->ref; + + print ''; + print ''; + print ''; + print '
'; + print $propalstatic->getNomUrl(1); + print ''; + if ($db->jdate($obj->dfv) < ($now - $conf->propal->cloture->warning_delay)) print img_warning($langs->trans("Late")); + print ''; + $filename=dol_sanitizeFileName($obj->ref); + $filedir=$conf->propal->dir_output . '/' . dol_sanitizeFileName($obj->ref); + $urlsource=$_SERVER['PHP_SELF'].'?id='.$obj->propalid; + print $formfile->getDocumentsLink($propalstatic->element, $filename, $filedir); + print '
'; + + print "
'.$companystatic->getNomUrl(1,'customer',44).''; + print dol_print_date($db->jdate($obj->dp),'day').''.price($obj->total_ttc).''.$propalstatic->LibStatut($obj->fk_statut,3).'
'.$langs->trans("XMoreLines", ($num - $nbofloop))."
'.$langs->trans("Total")."".price($total)." 

"; + } + } + else + { + dol_print_error($db); + } +} + +/* + * Proposals to process + */ +/* +if (! empty($conf->propal->enabled)) +{ + $sql = "SELECT c.rowid, c.ref, c.fk_statut, s.nom as name, s.rowid as socid"; + $sql.=" FROM ".MAIN_DB_PREFIX."propal as c"; + $sql.= ", ".MAIN_DB_PREFIX."societe as s"; + if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql.= " WHERE c.fk_soc = s.rowid"; + $sql.= " AND c.entity = ".$conf->entity; + $sql.= " AND c.fk_statut = 1"; + if ($socid) $sql.= " AND c.fk_soc = ".$socid; + if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; + $sql.= " ORDER BY c.rowid DESC"; + + $resql=$db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + + print ''; + print ''; + print ''; + + if ($num) + { + $i = 0; + $var = True; + while ($i < $num) + { + $var=!$var; + $obj = $db->fetch_object($resql); + print ""; + print ''; + + print ''; + + print ''; + + print ''; + $i++; + } + } + + print "
'.$langs->trans("ProposalsToProcess").' '.$num.'
'; + + $propalstatic->id=$obj->rowid; + $propalstatic->ref=$obj->ref; + + print ''; + print ''; + + print ''; + + print '
'; + print $propalstatic->getNomUrl(1); + print ''; + print ' '; + print ''; + $filename=dol_sanitizeFileName($obj->ref); + $filedir=$conf->commande->dir_output . '/' . dol_sanitizeFileName($obj->ref); + $urlsource=$_SERVER['PHP_SELF'].'?id='.$obj->rowid; + print $formfile->getDocumentsLink($propalstatic->element, $filename, $filedir); + print '
'; + + print '
'.img_object($langs->trans("ShowCompany"),"company").' '.dol_trunc($obj->name,24).''.$propalstatic->LibStatut($obj->fk_statut,$obj->facture,5).'

"; + } + else dol_print_error($db); +} +*/ + +/* + * Proposal that are in a shipping process + */ +/*if (! empty($conf->propal->enabled)) +{ + $sql = "SELECT c.rowid, c.ref, c.fk_statut, c.facture, s.nom as name, s.rowid as socid"; + $sql.= " FROM ".MAIN_DB_PREFIX."commande as c"; + $sql.= ", ".MAIN_DB_PREFIX."societe as s"; + if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql.= " WHERE c.fk_soc = s.rowid"; + $sql.= " AND c.entity = ".$conf->entity; + $sql.= " AND c.fk_statut = 2 "; + if ($socid) $sql.= " AND c.fk_soc = ".$socid; + if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; + $sql.= " ORDER BY c.rowid DESC"; + + $resql=$db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + + print ''; + print ''; + print ''; + + if ($num) + { + $i = 0; + $var = True; + while ($i < $num) + { + $var=!$var; + $obj = $db->fetch_object($resql); + print ""; + print ''; + + print ''; + + print ''; + + print ''; + $i++; + } + } + print "
'.$langs->trans("OnProcessOrders").' '.$num.'
'; + + $propalstatic->id=$obj->rowid; + $propalstatic->ref=$obj->ref; + + print ''; + print ''; + + print ''; + + print '
'; + print $propalstatic->getNomUrl(1); + print ''; + print ' '; + print ''; + $filename=dol_sanitizeFileName($obj->ref); + $filedir=$conf->commande->dir_output . '/' . dol_sanitizeFileName($obj->ref); + $urlsource=$_SERVER['PHP_SELF'].'?id='.$obj->rowid; + print $formfile->getDocumentsLink($propalstatic->element, $filename, $filedir); + print '
'; + + print '
'.img_object($langs->trans("ShowCompany"),"company").' '.$obj->name.''.$propalstatic->LibStatut($obj->fk_statut,$obj->facture,5).'

"; + } + else dol_print_error($db); +} +*/ + +//print '
'; +print ''; + + +llxFooter(); + +$db->close(); diff --git a/htdocs/comm/askpricesupplier/info.php b/htdocs/comm/askpricesupplier/info.php new file mode 100644 index 00000000000..d3a3899537b --- /dev/null +++ b/htdocs/comm/askpricesupplier/info.php @@ -0,0 +1,65 @@ + + * Copyright (C) 2004-2006 Laurent Destailleur + * Copyright (C) 2005-2012 Regis Houssin + * + * 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/comm/propal/info.php + * \ingroup propal + * \brief Page d'affichage des infos d'une proposition commerciale + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; + +$langs->load('propal'); +$langs->load('compta'); + +$id=GETPOST('id','int'); +$socid=GETPOST('socid','int'); + +// Security check +if (! empty($user->societe_id)) $socid=$user->societe_id; +$result = restrictedArea($user, 'propal', $id); + + +/* + * View + */ + +llxHeader('',$langs->trans('Proposal'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); + +$object = new Propal($db); +$object->fetch($id); +$object->fetch_thirdparty(); + +$head = propal_prepare_head($object); +dol_fiche_head($head, 'info', $langs->trans('Proposal'), 0, 'propal'); + +$object->info($object->id); + +print '
'; +dol_print_object_info($object); +print '
'; + +print ''; + + +llxFooter(); +$db->close(); diff --git a/htdocs/comm/askpricesupplier/list.php b/htdocs/comm/askpricesupplier/list.php new file mode 100644 index 00000000000..c28128e81c5 --- /dev/null +++ b/htdocs/comm/askpricesupplier/list.php @@ -0,0 +1,464 @@ + + * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2004 Eric Seigne + * Copyright (C) 2005 Marc Barilley / Ocebo + * Copyright (C) 2005-2013 Regis Houssin + * Copyright (C) 2006 Andre Cianfarani + * Copyright (C) 2010-2011 Juanjo Menent + * Copyright (C) 2010-2011 Philippe Grand + * Copyright (C) 2012 Christophe Battarel + * Copyright (C) 2013 Cédric Salvador +* + * 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/comm/propal/list.php + * \ingroup propal + * \brief Page of commercial proposals card and list + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formpropal.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; +if (! empty($conf->projet->enabled)) + require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; + +$langs->load('companies'); +$langs->load('propal'); +$langs->load('compta'); +$langs->load('bills'); +$langs->load('orders'); +$langs->load('products'); + +$socid=GETPOST('socid','int'); + +$search_user=GETPOST('search_user','int'); +$search_sale=GETPOST('search_sale','int'); +$search_ref=GETPOST('sf_ref')?GETPOST('sf_ref','alpha'):GETPOST('search_ref','alpha'); +$search_refcustomer=GETPOST('search_refcustomer','alpha'); +$search_societe=GETPOST('search_societe','alpha'); +$search_montant_ht=GETPOST('search_montant_ht','alpha'); +$search_author=GETPOST('search_author','alpha'); +$search_town=GETPOST('search_town','alpha'); +$viewstatut=$db->escape(GETPOST('viewstatut')); +$object_statut=$db->escape(GETPOST('propal_statut')); + +$sall=GETPOST("sall"); +$mesg=(GETPOST("msg") ? GETPOST("msg") : GETPOST("mesg")); +$year=GETPOST("year"); +$month=GETPOST("month"); + +// Nombre de ligne pour choix de produit/service predefinis +$NBLINES=4; + +// Security check +$module='propal'; +$dbtable=''; +$objectid=''; +if (! empty($user->societe_id)) $socid=$user->societe_id; +if (! empty($socid)) +{ + $objectid=$socid; + $module='societe'; + $dbtable='&societe'; +} +$result = restrictedArea($user, $module, $objectid, $dbtable); + +if (GETPOST("button_removefilter") || GETPOST("button_removefilter_x")) // Both tests are required to be compatible with all browsers +{ + $search_categ=''; + $search_user=''; + $search_sale=''; + $search_ref=''; + $search_refcustomer=''; + $search_societe=''; + $search_montant_ht=''; + $search_author=''; + $search_town=''; + $year=''; + $month=''; + $viewstatut=''; + $object_statut=''; +} + +if($object_statut != '') +$viewstatut=$object_statut; + + +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$hookmanager->initHooks(array('propallist')); + + + +/* + * 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) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + + + +/* + * View + */ + +llxHeader('',$langs->trans('Proposal'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); + +$form = new Form($db); +$formother = new FormOther($db); +$formfile = new FormFile($db); +$formpropal = new FormPropal($db); +$companystatic=new Societe($db); + +$now=dol_now(); + +$sortfield = GETPOST("sortfield",'alpha'); +$sortorder = GETPOST("sortorder",'alpha'); +$page = GETPOST("page",'int'); +if ($page == -1) { $page = 0; } +$offset = $conf->liste_limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; + +if (! $sortfield) $sortfield='p.datep'; +if (! $sortorder) $sortorder='DESC'; +$limit = $conf->liste_limit; + + +$sql = 'SELECT s.rowid, s.nom as name, s.town, s.client, s.code_client,'; +$sql.= ' p.rowid as propalid, p.note_private, p.total_ht, p.ref, p.ref_client, p.fk_statut, p.fk_user_author, p.datep as dp, p.fin_validite as dfv,'; +if (! $user->rights->societe->client->voir && ! $socid) $sql .= " sc.fk_soc, sc.fk_user,"; +$sql.= ' u.login'; +$sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'propal as p'; +if ($sall) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'propaldet as pd ON p.rowid=pd.fk_propal'; +$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'user as u ON p.fk_user_author = u.rowid'; +// We'll need this table joined to the select in order to filter by sale +if ($search_sale > 0 || (! $user->rights->societe->client->voir && ! $socid)) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; +if ($search_user > 0) +{ + $sql.=", ".MAIN_DB_PREFIX."element_contact as c"; + $sql.=", ".MAIN_DB_PREFIX."c_type_contact as tc"; +} +$sql.= ' WHERE p.fk_soc = s.rowid'; +$sql.= ' AND p.entity = '.$conf->entity; +if (! $user->rights->societe->client->voir && ! $socid) //restriction +{ + $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; +} +if ($search_town) {//restriction + $sql .= natural_search('s.town', $search_town); +} +if ($search_ref) { + $sql .= natural_search('p.ref', $search_ref); +} +if ($search_refcustomer) { + $sql .= natural_search('p.ref_client', $search_refcustomer); +} +if ($search_societe) { + $sql .= natural_search('s.nom', $search_societe); +} +if ($search_author) +{ + $sql.= " AND u.login LIKE '%".$db->escape(trim($search_author))."%'"; +} +if ($search_montant_ht) +{ + $sql.= " AND p.total_ht='".$db->escape(price2num(trim($search_montant_ht)))."'"; +} +if ($sall) { + $sql .= natural_search(array('s.nom', 'p.note_private', 'p.note_public', 'pd.description'), $sall); +} +if ($socid) $sql.= ' AND s.rowid = '.$socid; +if ($viewstatut <> '') +{ + $sql.= ' AND p.fk_statut IN ('.$viewstatut.')'; +} +if ($month > 0) +{ + if ($year > 0 && empty($day)) + $sql.= " AND p.datep BETWEEN '".$db->idate(dol_get_first_day($year,$month,false))."' AND '".$db->idate(dol_get_last_day($year,$month,false))."'"; + else if ($year > 0 && ! empty($day)) + $sql.= " AND p.datep BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month, $day, $year))."' AND '".$db->idate(dol_mktime(23, 59, 59, $month, $day, $year))."'"; + else + $sql.= " AND date_format(p.datep, '%m') = '".$month."'"; +} +else if ($year > 0) +{ + $sql.= " AND p.datep BETWEEN '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'"; +} +if ($search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale; +if ($search_user > 0) +{ + $sql.= " AND c.fk_c_type_contact = tc.rowid AND tc.element='propal' AND tc.source='internal' AND c.element_id = p.rowid AND c.fk_socpeople = ".$search_user; +} + + +$sql.= ' ORDER BY '.$sortfield.' '.$sortorder.', p.ref DESC'; + +$nbtotalofrecords = 0; +if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) +{ + $result = $db->query($sql); + $nbtotalofrecords = $db->num_rows($result); +} + + +$sql.= $db->plimit($limit + 1,$offset); +$result=$db->query($sql); + +if ($result) +{ + $objectstatic=new Propal($db); + $userstatic=new User($db); + $num = $db->num_rows($result); + + if ($socid) + { + $soc = new Societe($db); + $soc->fetch($socid); + } + + $param='&socid='.$socid.'&viewstatut='.$viewstatut; + if ($month) $param.='&month='.$month; + if ($year) $param.='&year='.$year; + if ($search_ref) $param.='&search_ref=' .$search_ref; + if ($search_refcustomer) $param.='&search_refcustomer=' .$search_refcustomer; + if ($search_societe) $param.='&search_societe=' .$search_societe; + if ($search_user > 0) $param.='&search_user='.$search_user; + if ($search_sale > 0) $param.='&search_sale='.$search_sale; + if ($search_montant_ht) $param.='&search_montant_ht='.$search_montant_ht; + if ($search_author) $param.='&search_author='.$search_author; + if ($search_town) $param.='&search_town='.$search_town; + print_barre_liste($langs->trans('ListOfProposals').' '.($socid?'- '.$soc->name:''), $page, $_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords); + + // Lignes des champs de filtre + print '
'; + + $i = 0; + print ''; + + $moreforfilter=''; + + // If the user can view prospects other than his' + if ($user->rights->societe->client->voir || $socid) + { + $langs->load("commercial"); + $moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': '; + $moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user); + $moreforfilter.='       '; + } + // If the user can view prospects other than his' + if ($user->rights->societe->client->voir || $socid) + { + $moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': '; + $moreforfilter.=$form->select_dolusers($search_user,'search_user',1); + } + if (! empty($moreforfilter)) + { + print ''; + print ''; + } + + print ''; + print_liste_field_titre($langs->trans('Ref'),$_SERVER["PHP_SELF"],'p.ref','',$param,'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('RefCustomer'),$_SERVER["PHP_SELF"],'p.ref_client','',$param,'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('Company'),$_SERVER["PHP_SELF"],'s.nom','',$param,'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('Town'),$_SERVER["PHP_SELF"],'s.town','',$param,'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('Date'),$_SERVER["PHP_SELF"],'p.datep','',$param, 'align="center"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('DateEndPropalShort'),$_SERVER["PHP_SELF"],'dfv','',$param, 'align="center"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('AmountHT'),$_SERVER["PHP_SELF"],'p.total_ht','',$param, 'align="right"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('Author'),$_SERVER["PHP_SELF"],'u.login','',$param,'align="center"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('Status'),$_SERVER["PHP_SELF"],'p.fk_statut','',$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre(''); + print "\n"; + + print ''; + print ''; + print ''; + print ''; + print ''; + // Date + print ''; + print ''; + // Amount + print ''; + // Author + print ''; + print ''; + + print ''; + + print "\n"; + + $var=true; + $total=0; + $subtotal=0; + + while ($i < min($num,$limit)) + { + $objp = $db->fetch_object($result); + $now = dol_now(); + $var=!$var; + print ''; + print '\n"; + + // Customer ref + print ''; + + $url = DOL_URL_ROOT.'/comm/card.php?socid='.$objp->rowid; + + // Company + $companystatic->id=$objp->rowid; + $companystatic->name=$objp->name; + $companystatic->client=$objp->client; + $companystatic->code_client=$objp->code_client; + print ''; + + // Town + print ''; + + // Date proposal + print '\n"; + + // Date end validity + if ($objp->dfv) + { + print ''; + } + else + { + print ''; + } + + print '\n"; + + $userstatic->id=$objp->fk_user_author; + $userstatic->login=$objp->login; + print '\n"; + + print '\n"; + + print ''; + + print "\n"; + + $total += $objp->total_ht; + $subtotal += $objp->total_ht; + + $i++; + } + + if ($total>0) + { + if($num<$limit){ + $var=!$var; + print ''; + print ''; + print ''; + } + else + { + $var=!$var; + print ''; + print ''; + print ''; + } + + } + + print '
'; + print $moreforfilter; + print '
'; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + //print $langs->trans('Month').': '; + print ''; + //print ' '.$langs->trans('Year').': '; + $syear = $year; + $formother->select_year($syear,'year',1, 20, 5); + print ' '; + print ''; + print ''; + print ''; + print ''; + $formpropal->selectProposalStatus($viewstatut,1); + print ''; + print ''; + print ''; + print '
'; + + $objectstatic->id=$objp->propalid; + $objectstatic->ref=$objp->ref; + + print ''; + print ''; + + print ''; + + // Ref + print '
'; + print $objectstatic->getNomUrl(1); + print ''; + if ($objp->fk_statut == 1 && $db->jdate($objp->dfv) < ($now - $conf->propal->cloture->warning_delay)) print img_warning($langs->trans("Late")); + if (! empty($objp->note_private)) + { + print ' '; + print ''.img_picto($langs->trans("ViewPrivateNote"),'object_generic').''; + print ''; + } + print ''; + $filename=dol_sanitizeFileName($objp->ref); + $filedir=$conf->propal->dir_output . '/' . dol_sanitizeFileName($objp->ref); + $urlsource=$_SERVER['PHP_SELF'].'?id='.$objp->propalid; + print $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir); + print '
'; + + print "
'; + print $objp->ref_client; + print ''; + print $companystatic->getNomUrl(1,'customer'); + print ''; + print $objp->town; + print ''; + print dol_print_date($db->jdate($objp->dp), 'day'); + print "'.dol_print_date($db->jdate($objp->dfv),'day'); + print ' '.price($objp->total_ht)."'; + if ($userstatic->id) print $userstatic->getLoginUrl(1); + else print ' '; + print "'.$objectstatic->LibStatut($objp->fk_statut,5)." 
'.$langs->trans("TotalHT").''.price($total).'
'.$langs->trans("TotalHTforthispage").''.price($total).'
'; + + print '
'; + + $db->free($result); +} +else +{ + dol_print_error($db); +} + +// End of page +llxFooter(); +$db->close(); diff --git a/htdocs/comm/askpricesupplier/note.php b/htdocs/comm/askpricesupplier/note.php new file mode 100644 index 00000000000..9292684d06f --- /dev/null +++ b/htdocs/comm/askpricesupplier/note.php @@ -0,0 +1,151 @@ + + * Copyright (C) 2004-2012 Laurent Destailleur + * Copyright (C) 2004 Eric Seigne + * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2013 Florian Henry + * + * 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/comm/propal/note.php + * \ingroup propal + * \brief Fiche d'information sur une proposition commerciale + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; + +$langs->load('propal'); +$langs->load('compta'); +$langs->load('bills'); + +$id = GETPOST('id','int'); +$ref=GETPOST('ref','alpha'); +$action=GETPOST('action','alpha'); + +// Security check +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'propale', $id, 'propal'); + +$object = new Propal($db); + + + +/******************************************************************************/ +/* Actions */ +/******************************************************************************/ + +$permissionnote=$user->rights->propale->creer; // Used by the include of actions_setnotes.inc.php + +include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not includ_once + + + +/******************************************************************************/ +/* Affichage fiche */ +/******************************************************************************/ + +llxHeader('',$langs->trans('Proposal'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); + +$form = new Form($db); + +if ($id > 0 || ! empty($ref)) +{ + if ($mesg) print $mesg; + + $now=dol_now(); + + if ($object->fetch($id, $ref)) + { + $societe = new Societe($db); + if ( $societe->fetch($object->socid) ) + { + $head = propal_prepare_head($object); + dol_fiche_head($head, 'note', $langs->trans('Proposal'), 0, 'propal'); + + print ''; + + $linkback = ''.$langs->trans('BackToList').''; + + // Ref + print ''; + + // Ref client + print ''; + print ''; + + // Customer + if ( is_null($object->client) ) + $object->fetch_thirdparty(); + print ""; + print ''; + + // Ligne info remises tiers + print ''; + + // Date + print ''; + print ''; + + // Date fin propal + print ''; + print ''; + print ''; + + print "
'.$langs->trans('Ref').''; + print $form->showrefnav($object,'ref',$linkback,1,'ref','ref',''); + print '
'; + print ''; + print '
'; + print $langs->trans('RefCustomer').''; + print '
'; + print '
'; + print $object->ref_client; + print '
".$langs->trans("Company")."'.$object->client->getNomUrl(1).'
'.$langs->trans('Discounts').''; + if ($societe->remise_percent) print $langs->trans("CompanyHasRelativeDiscount",$societe->remise_percent); + else print $langs->trans("CompanyHasNoRelativeDiscount"); + $absolute_discount=$societe->getAvailableDiscounts(); + print '. '; + if ($absolute_discount) print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->trans("Currency".$conf->currency)); + else print $langs->trans("CompanyHasNoAbsoluteDiscount"); + print '.'; + print '
'.$langs->trans('Date').''; + print dol_print_date($object->date,'daytext'); + print '
'.$langs->trans('DateEndPropal').''; + if ($object->fin_validite) + { + print dol_print_date($object->fin_validite,'daytext'); + if ($object->statut == 1 && $object->fin_validite < ($now - $conf->propal->cloture->warning_delay)) print img_warning($langs->trans("Late")); + } + else + { + print $langs->trans("Unknown"); + } + print '
"; + + print '
'; + + include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php'; + + dol_fiche_end(); + } + } +} + + +llxFooter(); +$db->close(); diff --git a/htdocs/comm/askpricesupplier/tpl/index.html b/htdocs/comm/askpricesupplier/tpl/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/comm/askpricesupplier/tpl/linkedobjectblock.tpl.php b/htdocs/comm/askpricesupplier/tpl/linkedobjectblock.tpl.php new file mode 100644 index 00000000000..cb920afd5fc --- /dev/null +++ b/htdocs/comm/askpricesupplier/tpl/linkedobjectblock.tpl.php @@ -0,0 +1,79 @@ + + * Copyright (C) 2013 Juanjo Menent + * Copyright (C) 2014 Marcos García + * + * 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/comm/propal/tpl/linkedobjectblock.tpl.php + * \ingroup propal + * \brief Template to show objects linked to proposals + */ +?> + + + +'; +print_titre($langs->trans('RelatedCommercialProposals')); +?> + + + + + + + + + + > + + + + + + + + + + + +
trans("Ref"); ?>trans('RefCustomer'); ?>trans("Date"); ?>trans("AmountHTShort"); ?>trans("Status"); ?>
+ trans("ShowPropal"),"propal").' '.$object->ref; ?>ref_client; ?>date,'day'); ?>rights->propale->lire) { + $total = $total + $object->total_ht; + echo price($object->total_ht); + } ?>getLibStatut(3); ?>
trans('TotalHT'); ?>rights->propale->lire) { + echo price($total); + } ?> 
+ + diff --git a/htdocs/core/modules/modAskPriceSupplier.class.php b/htdocs/core/modules/modAskPriceSupplier.class.php new file mode 100644 index 00000000000..9ae6d15ba71 --- /dev/null +++ b/htdocs/core/modules/modAskPriceSupplier.class.php @@ -0,0 +1,226 @@ + + * Copyright (C) 2004-2010 Laurent Destailleur + * Copyright (C) 2004 Sebastien Di Cintio + * Copyright (C) 2004 Benoit Mortier + * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2012 Juanjo Menent + * + * 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 . + */ + +/** + * \defgroup propale Module commercial proposals + * \brief Module pour gerer la tenue de propositions commerciales + * \file htdocs/core/modules/modPropale.class.php + * \ingroup propale + * \brief Fichier de description et activation du module Propale + */ +include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; + + +/** + * Classe de description et activation du module Propale + */ +class modAskPriceSupplier extends DolibarrModules +{ + + /** + * Constructor. Define names, constants, directories, boxes, permissions + * + * @param DoliDB $db Database handler + */ + function __construct($db) + { + global $conf; + + $this->db = $db; + $this->numero = 999999; + + $this->family = "products"; + // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) + $this->name = preg_replace('/^mod/i','',get_class($this)); + $this->description = "askpricesupplierDESC"; + + // Possible values for version are: 'development', 'experimental', 'dolibarr' or version + $this->version = '0.1'; + + $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); + $this->special = 0; + $this->picto='askpricesupplier'; + + // Data directories to create when module is enabled + $this->dirs = array(); + + // Dependancies + $this->depends = array('modFournisseur'); + $this->requiredby = array(); + $this->config_page_url = array("askpricesupplier.php"); + $this->langfiles = array("askpricesupplier"); + + // Constants + $this->const = array(); + $r=0; + + /*$this->const[$r][0] = "PROPALE_ADDON_PDF"; + $this->const[$r][1] = "chaine"; + $this->const[$r][2] = "azur"; + $this->const[$r][3] = 'Nom du gestionnaire de generation des propales en PDF'; + $this->const[$r][4] = 0; + $r++;*/ + + // Boxes + $this->boxes = array(); + + // Permissions + $this->rights = array(); + $this->rights_class = 'askpricesupplier'; + $r=0; + + $r++; + $this->rights[$r][0] = $this->numero + $r; // id de la permission + $this->rights[$r][1] = 'Créer/modifier les demandes fournisseurs'; // libelle de la permission + $this->rights[$r][3] = 1; // La permission est-elle une permission par defaut + $this->rights[$r][4] = 'create'; + + $r++; + $this->rights[$r][0] = $this->numero + $r; // id de la permission + $this->rights[$r][1] = 'Lire les demandes fournisseurs'; // libelle de la permission + $this->rights[$r][3] = 1; // La permission est-elle une permission par defaut + $this->rights[$r][4] = 'read'; + + $r++; + $this->rights[$r][0] = $this->numero + $r; // id de la permission + $this->rights[$r][1] = 'Valider les demandes fournisseurs'; // libelle de la permission + $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut + $this->rights[$r][4] = 'read'; + $this->rights[$r][5] = 'validate'; + + $r++; + $this->rights[$r][0] = $this->numero + $r; // id de la permission + $this->rights[$r][1] = 'Envoyer les demandes fournisseurs'; // libelle de la permission + $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut + $this->rights[$r][4] = 'read'; + $this->rights[$r][5] = 'send'; + + $r++; + $this->rights[$r][0] = $this->numero + $r; // id de la permission + $this->rights[$r][1] = 'Supprimer les demandes fournisseurs'; // libelle de la permission + $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut + $this->rights[$r][4] = 'delete'; + + // Exports + //-------- + $r=0; +/* + $r++; + $this->export_code[$r]=$this->rights_class.'_'.$r; + $this->export_label[$r]='ProposalsAndProposalsLines'; // Translation key (used only if key ExportDataset_xxx_z not found) + $this->export_permission[$r]=array(array("propale","export")); + $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','co.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','c.rowid'=>"Id",'c.ref'=>"Ref",'c.ref_client'=>"RefCustomer",'c.fk_soc'=>"IdCompany",'c.datec'=>"DateCreation",'c.datep'=>"DatePropal",'c.fin_validite'=>"DateEndPropal",'c.remise_percent'=>"GlobalDiscount",'c.total_ht'=>"TotalHT",'c.total'=>"TotalTTC",'c.fk_statut'=>'Status','c.note_public'=>"Note",'c.date_livraison'=>'DeliveryDate','c.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','c.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin','cd.rowid'=>'LineId','cd.label'=>"Label",'cd.description'=>"LineDescription",'cd.product_type'=>'TypeOfLineServiceOrProduct','cd.tva_tx'=>"LineVATRate",'cd.qty'=>"LineQty",'cd.total_ht'=>"LineTotalHT",'cd.total_tva'=>"LineTotalVAT",'cd.total_ttc'=>"LineTotalTTC",'p.rowid'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel'); + //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.datec'=>"Date",'c.datep'=>"Date",'c.fin_validite'=>"Date",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total'=>"Numeric",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.rowid'=>'List:Product:label','p.ref'=>'Text','p.label'=>'Text'); + $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','c.ref'=>"Text",'c.ref_client'=>"Text",'c.datec'=>"Date",'c.datep'=>"Date",'c.fin_validite'=>"Date",'c.remise_percent'=>"Numeric",'c.total_ht'=>"Numeric",'c.total'=>"Numeric",'c.fk_statut'=>'Status','c.note_public'=>"Text",'c.date_livraison'=>'Date','cd.description'=>"Text",'cd.product_type'=>'Boolean','cd.tva_tx'=>"Numeric",'cd.qty'=>"Numeric",'cd.total_ht'=>"Numeric",'cd.total_tva'=>"Numeric",'cd.total_ttc'=>"Numeric",'p.ref'=>'Text','p.label'=>'Text'); + $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.siret'=>'company','c.rowid'=>"propal",'c.ref'=>"propal",'c.ref_client'=>"propal",'c.fk_soc'=>"propal",'c.datec'=>"propal",'c.datep'=>"propal",'c.fin_validite'=>"propal",'c.remise_percent'=>"propal",'c.total_ht'=>"propal",'c.total'=>"propal",'c.fk_statut'=>"propal",'c.note_public'=>"propal",'c.date_livraison'=>"propal",'cd.rowid'=>'propal_line','cd.label'=>"propal_line",'cd.description'=>"propal_line",'cd.product_type'=>'propal_line','cd.tva_tx'=>"propal_line",'cd.qty'=>"propal_line",'cd.total_ht'=>"propal_line",'cd.total_tva'=>"propal_line",'cd.total_ttc'=>"propal_line",'p.rowid'=>'product','p.ref'=>'product','p.label'=>'product'); + $this->export_dependencies_array[$r]=array('propal_line'=>'cd.rowid','product'=>'cd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them + + $this->export_sql_start[$r]='SELECT DISTINCT '; + $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s '; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON s.fk_pays = co.rowid,'; + $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'propal as c'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uc ON c.fk_user_author = uc.rowid'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as uv ON c.fk_user_valid = uc.rowid'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'propal_extrafields as extra ON c.rowid = extra.fk_object'; + $this->export_sql_end[$r] .=', '.MAIN_DB_PREFIX.'propaldet as cd'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (cd.fk_product = p.rowid)'; + $this->export_sql_end[$r] .=' WHERE c.fk_soc = s.rowid AND c.rowid = cd.fk_propal'; + $this->export_sql_end[$r] .=' AND c.entity = '.$conf->entity; + */ + + // Main menu entries + $this->menu = array(); // List of menus to add + $r=0; + $this->menu[$r]=array( + 'fk_menu'=>'fk_mainmenu=commercial', // Use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode + 'type'=>'left', // This is a Left menu entry + 'titre'=>'askpricesupplierMENU_LEFT_TITLE', + 'leftmenu'=>'askpricesuppliersubmenu', + 'url'=>'/askpricesupplier/index.php', + 'langs'=>'askpricesupplier', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. + 'enabled'=>'$conf->askpricesupplier->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected. + 'perms'=>'$user->rights->askpricesupplier->read', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules + 'user'=>2 // 0=Menu for internal users, 1=external users, 2=both + ); + $r++; + + $this->menu[$r]=array( + 'fk_menu'=>'fk_mainmenu=commercial,fk_leftmenu=askpricesuppliersubmenu', + 'type'=>'left', + 'titre'=>'askpricesupplierMENU_LEFT_TITLE_NEW', + 'url'=>'/askpricesupplier/card.php?action=create', + 'langs'=>'askpricesupplier', + 'enabled'=>'$conf->askpricesupplier->enabled', + 'perms'=>'$user->rights->askpricesupplier->create', + 'user'=>2 + ); + $r++; + + $this->menu[$r]=array( + 'fk_menu'=>'fk_mainmenu=commercial,fk_leftmenu=askpricesuppliersubmenu', + 'type'=>'left', + 'titre'=>'askpricesupplierMENU_LEFT_TITLE_LIST', + 'url'=>'/askpricesupplier/list.php', + 'langs'=>'askpricesupplier', + 'enabled'=>'$conf->askpricesupplier->enabled', + 'perms'=>'$user->rights->askpricesupplier->read', + 'user'=>2 + ); + $r++; + } + + + /** + * Function called when module is enabled. + * The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database. + * It also creates data directories + * + * @param string $options Options when enabling module ('', 'noboxes') + * @return int 1 if OK, 0 if KO + */ + function init($options='') + { + //global $conf,$langs; + + $sql = array(); + + $result=$this->_load_tables('/mymodule/sql/'); + + return $this->_init($sql, $options); + } + + /** + * Function called when module is disabled. + * Remove from database constants, boxes and permissions from Dolibarr database. + * Data directories are not deleted + * + * @param string $options Options when enabling module ('', 'noboxes') + * @return int 1 if OK, 0 if KO + */ + function remove($options='') + { + $sql = array(); + + return $this->_remove($sql,$options); + } + +} diff --git a/htdocs/langs/fr_FR/askpricesupplier.lang b/htdocs/langs/fr_FR/askpricesupplier.lang new file mode 100644 index 00000000000..784082f42c4 --- /dev/null +++ b/htdocs/langs/fr_FR/askpricesupplier.lang @@ -0,0 +1,6 @@ +# Dolibarr language file - Source file is en_US - askpricesupplier +AskPriceSupplier=Demande de prix fournisseur +askpricesupplierDESC=Gestion des demandes de prix aux fournisseurs +askpricesupplierMENU_LEFT_TITLE=Demandes de prix fourn. +askpricesupplierMENU_LEFT_TITLE_NEW=Nouvelle demande +askpricesupplierMENU_LEFT_TITLE_LIST=Liste \ No newline at end of file diff --git a/htdocs/theme/eldy/img/object_askpricesupplier.png b/htdocs/theme/eldy/img/object_askpricesupplier.png new file mode 100644 index 0000000000000000000000000000000000000000..9ab48924ccb26606d331789871b185e8c015e221 GIT binary patch literal 1038 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(^vlDyqr z82*Fcg1yTp14TFsJR*yMvQ&rUPlPc?>bf)*fbHU{?2ZaSX9I-8(7Q zV{)L#@$)q|uYE|Jw9wCFsp6Iz#@~~~Iz*?`t#DX0;l!dAoovBKDMRtV6p^UgOMHT* zv-EScnt8q-+}7l?GUuvsWZ;vS1yg2k-4^+3|8E;kMUj#RMLX|&w*Fp!?yvA)_s&_>)=GLaBtp^V}&N!QPBgZU4XIf<0_0<6y)1E(hqSNN8 zB)H!*I4CIZ1A~0rdhxk)V_&?kZb;B*IeF64#N6C@X;A5gJ1bbz0vpeM{P^*{kD9R4 zLP-mm^9wJ^G;iE1I9Yi9gA%KSmtP)`W< z3Z5T$AHn?nbX-h+mRnq$+>s>1h&*v^0nGzz^5Yz(Zp*&u=;`6P@wSYmIqu9)zXSGF z0*~eIH-=A}I`!z`gr9obrZjb(IN`C>M{VA8TfB60PLxo-A<2i@&Bi4p3 ztjNsNT(o#`tx)HYGa>IE@9s#;lHmDz+Bh5IwlpO}#QtMhKx?`d&& z_SLfM>gw*e6~JHnm(}D-X7jA%>TKEVr;@v^Eu}1{dOpci{T1OqNuK#;`m-Hg;U_|W zKek@pSe;rihm~aN^%yH%v-I4M4 zcQtq3mCTN^eC3}{qqK5%IqhBtjMJyq8KpTQo~O!eaxLHz$YeDOJ{# z6w?zE{>xP5e`X<1!WKbb{!uM)jVMV;EJ?LWE=mPb3`Pb9mbyS>XdGf_Y-MC_Wo)W# nU}R-raJl_f1&W5;{FKbJO57S2-AXzF)WG2B>gTe~DWM4ff-TFL literal 0 HcmV?d00001 From 6fee87ca56752dc11c764604641045a1835c16f4 Mon Sep 17 00:00:00 2001 From: phf Date: Mon, 26 Jan 2015 17:35:37 +0100 Subject: [PATCH 021/429] [CORE] ajout en commentaire de la requete sql de creation de table (#new_ask_price). --- htdocs/core/modules/modAskPriceSupplier.class.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/core/modules/modAskPriceSupplier.class.php b/htdocs/core/modules/modAskPriceSupplier.class.php index 9ae6d15ba71..1c108c572d1 100644 --- a/htdocs/core/modules/modAskPriceSupplier.class.php +++ b/htdocs/core/modules/modAskPriceSupplier.class.php @@ -201,9 +201,11 @@ class modAskPriceSupplier extends DolibarrModules { //global $conf,$langs; + /*CREATE IF NOT EXISTS llx_askpricesupplier (rowid int auto_increment);*/ + $sql = array(); - $result=$this->_load_tables('/mymodule/sql/'); + //$result=$this->_load_tables('/mymodule/sql/'); return $this->_init($sql, $options); } From aaacca9b136deb2fa7f65192ad949290eb563b05 Mon Sep 17 00:00:00 2001 From: phf Date: Tue, 27 Jan 2015 16:53:27 +0100 Subject: [PATCH 022/429] =?UTF-8?q?[CORE]=20premi=C3=A8re=20partie=20des?= =?UTF-8?q?=20grosses=20modifications=20(#new=5Fask=5Fprice).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/comm/askpricesupplier.php | 2328 +++++++++++++++++ .../class/askpricesupplier.class.php | 270 +- htdocs/comm/askpricesupplier/index.php | 94 +- .../sql/llx_askpricesupplier.sql | 58 + .../sql/llx_askpricesupplier_extrafields.sql | 8 + .../sql/llx_askpricesupplierdet.sql | 36 + .../llx_askpricesupplierdet_extrafields.sql | 8 + .../tpl/linkedobjectblock.tpl.php | 6 +- htdocs/core/lib/askpricesupplier.lib.php | 148 ++ .../doc/doc_generic_proposal_odt.modules.php | 484 ++++ .../modules/askpricesupplier/doc/index.html | 0 .../askpricesupplier/doc/pdf_azur.modules.php | 1385 ++++++++++ .../core/modules/askpricesupplier/index.html | 0 .../askpricesupplier/mod_propale_marbre.php | 153 ++ .../askpricesupplier/mod_propale_saphir.php | 131 + .../modules_askpricesupplier.php | 165 ++ .../modules/modAskPriceSupplier.class.php | 75 +- .../interface_90_all_Demo.class.php-NORUN | 13 + htdocs/langs/fr_FR/askpricesupplier.lang | 125 +- 19 files changed, 5283 insertions(+), 204 deletions(-) create mode 100644 htdocs/comm/askpricesupplier.php create mode 100644 htdocs/comm/askpricesupplier/sql/llx_askpricesupplier.sql create mode 100644 htdocs/comm/askpricesupplier/sql/llx_askpricesupplier_extrafields.sql create mode 100644 htdocs/comm/askpricesupplier/sql/llx_askpricesupplierdet.sql create mode 100644 htdocs/comm/askpricesupplier/sql/llx_askpricesupplierdet_extrafields.sql create mode 100644 htdocs/core/lib/askpricesupplier.lib.php create mode 100644 htdocs/core/modules/askpricesupplier/doc/doc_generic_proposal_odt.modules.php create mode 100644 htdocs/core/modules/askpricesupplier/doc/index.html create mode 100644 htdocs/core/modules/askpricesupplier/doc/pdf_azur.modules.php create mode 100644 htdocs/core/modules/askpricesupplier/index.html create mode 100644 htdocs/core/modules/askpricesupplier/mod_propale_marbre.php create mode 100644 htdocs/core/modules/askpricesupplier/mod_propale_saphir.php create mode 100644 htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php diff --git a/htdocs/comm/askpricesupplier.php b/htdocs/comm/askpricesupplier.php new file mode 100644 index 00000000000..bd694f4a925 --- /dev/null +++ b/htdocs/comm/askpricesupplier.php @@ -0,0 +1,2328 @@ + + * Copyright (C) 2004-2014 Laurent Destailleur + * Copyright (C) 2004 Eric Seigne + * Copyright (C) 2005 Marc Barilley / Ocebo + * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2006 Andre Cianfarani + * Copyright (C) 2010-2014 Juanjo Menent + * Copyright (C) 2010-2011 Philippe Grand + * Copyright (C) 2012-2013 Christophe Battarel + * Copyright (C) 2013-2014 Florian Henry + * Copyright (C) 2014 Ferran Marcet + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * 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/comm/propal.php + * \ingroup propale + * \brief Page of commercial proposals card and list + */ +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php'; +require_once DOL_DOCUMENT_ROOT . '/core/class/html.formpropal.class.php'; +require_once DOL_DOCUMENT_ROOT . '/comm/askpricesupplier/class/askpricesupplier.class.php'; +require_once DOL_DOCUMENT_ROOT . '/comm/action/class/actioncomm.class.php'; +require_once DOL_DOCUMENT_ROOT . '/core/modules/askpricesupplier/modules_askpricesupplier.php'; +require_once DOL_DOCUMENT_ROOT . '/core/lib/askpricesupplier.lib.php'; +require_once DOL_DOCUMENT_ROOT . '/core/lib/functions2.lib.php'; +require_once DOL_DOCUMENT_ROOT . '/core/class/extrafields.class.php'; +if (! empty($conf->projet->enabled)) { + require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php'; + require_once DOL_DOCUMENT_ROOT . '/core/class/html.formprojet.class.php'; +} + +$langs->load('companies'); +$langs->load('askpricesupplier'); +$langs->load('compta'); +$langs->load('bills'); +$langs->load('orders'); +$langs->load('products'); +$langs->load("deliveries"); +$langs->load('sendings'); +if (! empty($conf->margin->enabled)) + $langs->load('margins'); + +$error = 0; + +$id = GETPOST('id', 'int'); +$ref = GETPOST('ref', 'alpha'); +$socid = GETPOST('socid', 'int'); +$action = GETPOST('action', 'alpha'); +$origin = GETPOST('origin', 'alpha'); +$originid = GETPOST('originid', 'int'); +$confirm = GETPOST('confirm', 'alpha'); +$lineid = GETPOST('lineid', 'int'); +$contactid = GETPOST('contactid','int'); + +// PDF +$hidedetails = (GETPOST('hidedetails', 'int') ? GETPOST('hidedetails', 'int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 1 : 0)); +$hidedesc = (GETPOST('hidedesc', 'int') ? GETPOST('hidedesc', 'int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 1 : 0)); +$hideref = (GETPOST('hideref', 'int') ? GETPOST('hideref', 'int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0)); + +// Nombre de ligne pour choix de produit/service predefinis +$NBLINES = 4; + +// Security check +if (! empty($user->societe_id)) $socid = $user->societe_id; +$result = restrictedArea($user, 'askpricesupplier', $id); + +$object = new AskPriceSupplier($db); +$extrafields = new ExtraFields($db); + +// fetch optionals attributes and labels +$extralabels = $extrafields->fetch_name_optionals_label($object->table_element); + +// Load object +if ($id > 0 || ! empty($ref)) { + $ret = $object->fetch($id, $ref); + if ($ret > 0) + $ret = $object->fetch_thirdparty(); + if ($ret < 0) + dol_print_error('', $object->error); +} + +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$hookmanager->initHooks(array('propalcard','globalcard')); + +$permissionnote = $user->rights->askpricesupplier->creer; // Used by the include of actions_setnotes.inc.php + + +/* + * 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) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + +if (empty($reshook)) +{ + include DOL_DOCUMENT_ROOT . '/core/actions_setnotes.inc.php'; // Must be include, not includ_once + + // Action clone object + if ($action == 'confirm_clone' && $confirm == 'yes') + { + if (1 == 0 && ! GETPOST('clone_content') && ! GETPOST('clone_receivers')) + { + setEventMessage($langs->trans("NoCloneOptionsSpecified"), 'errors'); + } + else + { + if ($object->id > 0) { + $result = $object->createFromClone($socid); + if ($result > 0) { + header("Location: " . $_SERVER['PHP_SELF'] . '?id=' . $result); + exit(); + } else { + setEventMessage($object->error, 'errors'); + $action = ''; + } + } + } + } + + // Delete proposal + else if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->askpricesupplier->supprimer) + { + $result = $object->delete($user); + if ($result > 0) { + header('Location: ' . DOL_URL_ROOT . '/comm/askpricesupplier/list.php'); + exit(); + } else { + $langs->load("errors"); + setEventMessage($langs->trans($object->error), 'errors'); + } + } + + // Remove line + else if ($action == 'confirm_deleteline' && $confirm == 'yes' && $user->rights->askpricesupplier->creer) + { + $result = $object->deleteline($lineid); + // reorder lines + if ($result) + $object->line_order(true); + + if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { + // Define output language + $outputlangs = $langs; + if (! empty($conf->global->MAIN_MULTILANGS)) { + $outputlangs = new Translate("", $conf); + $newlang = (GETPOST('lang_id') ? GETPOST('lang_id') : $object->thirdparty->default_lang); + $outputlangs->setDefaultLang($newlang); + } + $ret = $object->fetch($id); // Reload to get new records + $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); + } + + header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id); + exit(); + } + + // Validation + else if ($action == 'confirm_validate' && $confirm == 'yes' && + ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->askpricesupplier->creer)) + || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->askpricesupplier->validate))) + ) + { + $result = $object->valid($user); + if ($result >= 0) + { + if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) + { + // Define output language + if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) + { + $outputlangs = $langs; + $newlang = ''; + if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha'); + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang; + if (! empty($newlang)) { + $outputlangs = new Translate("", $conf); + $outputlangs->setDefaultLang($newlang); + } + $model=$object->modelpdf; + $ret = $object->fetch($id); // Reload to get new records + + $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); + } + } + } else { + $langs->load("errors"); + if (count($object->errors) > 0) setEventMessage($object->errors, 'errors'); + else setEventMessage($langs->trans($object->error), 'errors'); + } + } + + else if ($action == 'setdate' && $user->rights->askpricesupplier->creer) + { + $datep = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']); + + if (empty($datep)) { + $error ++; + setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), 'errors'); + } + + if (! $error) { + $result = $object->set_date($user, $datep); + if ($result < 0) + dol_print_error($db, $object->error); + } + } + else if ($action == 'setecheance' && $user->rights->askpricesupplier->creer) + { + $result = $object->set_echeance($user, dol_mktime(12, 0, 0, $_POST['echmonth'], $_POST['echday'], $_POST['echyear'])); + if ($result < 0) + dol_print_error($db, $object->error); + } + else if ($action == 'setdate_livraison' && $user->rights->askpricesupplier->creer) + { + $result = $object->set_date_livraison($user, dol_mktime(12, 0, 0, $_POST['liv_month'], $_POST['liv_day'], $_POST['liv_year'])); + if ($result < 0) + dol_print_error($db, $object->error); + } + + // Positionne ref client + else if ($action == 'set_ref_client' && $user->rights->askpricesupplier->creer) + { + $object->set_ref_client($user, $_POST['ref_client']); + } + + // Create proposal + else if ($action == 'add' && $user->rights->askpricesupplier->creer) + { + $object->socid = $socid; + $object->fetch_thirdparty(); + + $datep = dol_mktime(12, 0, 0, GETPOST('remonth'), GETPOST('reday'), GETPOST('reyear')); + $date_delivery = dol_mktime(12, 0, 0, GETPOST('liv_month'), GETPOST('liv_day'), GETPOST('liv_year')); + $duration = GETPOST('duree_validite'); + + if (empty($datep)) { + setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), 'errors'); + $action = 'create'; + $error ++; + } + if (empty($duration)) { + setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("ValidityDuration")), 'errors'); + $action = 'create'; + $error ++; + } + + if ($socid < 1) { + setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Customer")), 'errors'); + $action = 'create'; + $error ++; + } + + if (! $error) + { + $db->begin(); + + // Si on a selectionne une propal a copier, on realise la copie + if (GETPOST('createmode') == 'copy' && GETPOST('copie_askpricesupplier')) + { + if ($object->fetch(GETPOST('copie_askpricesupplier')) > 0) { + $object->ref = GETPOST('ref'); + $object->datep = $datep; + $object->date_livraison = $date_delivery; + $object->availability_id = GETPOST('availability_id'); + $object->demand_reason_id = GETPOST('demand_reason_id'); + $object->fk_delivery_address = GETPOST('fk_address'); + $object->shipping_method_id = GETPOST('shipping_method_id', 'int'); + $object->duree_validite = $duration; + $object->cond_reglement_id = GETPOST('cond_reglement_id'); + $object->mode_reglement_id = GETPOST('mode_reglement_id'); + $object->fk_account = GETPOST('fk_account', 'int'); + $object->remise_percent = GETPOST('remise_percent'); + $object->remise_absolue = GETPOST('remise_absolue'); + $object->socid = GETPOST('socid'); + $object->contactid = GETPOST('contactid'); + $object->fk_project = GETPOST('projectid'); + $object->modelpdf = GETPOST('model'); + $object->author = $user->id; // deprecated + $object->note = GETPOST('note'); + $object->statut = 0; + + $id = $object->create_from($user); + } else { + setEventMessage($langs->trans("ErrorFailedToCopyProposal", GETPOST('copie_askpricesupplier')), 'errors'); + } + } else { + $object->ref = GETPOST('ref'); + $object->ref_client = GETPOST('ref_client'); + $object->datep = $datep; + $object->date_livraison = $date_delivery; + $object->availability_id = GETPOST('availability_id'); + $object->demand_reason_id = GETPOST('demand_reason_id'); + $object->fk_delivery_address = GETPOST('fk_address'); + $object->shipping_method_id = GETPOST('shipping_method_id', 'int'); + $object->duree_validite = GETPOST('duree_validite'); + $object->cond_reglement_id = GETPOST('cond_reglement_id'); + $object->mode_reglement_id = GETPOST('mode_reglement_id'); + $object->fk_account = GETPOST('fk_account', 'int'); + $object->contactid = GETPOST('contactid'); + $object->fk_project = GETPOST('projectid'); + $object->modelpdf = GETPOST('model'); + $object->author = $user->id; // deprecated + $object->note = GETPOST('note'); + + $object->origin = GETPOST('origin'); + $object->origin_id = GETPOST('originid'); + + for($i = 1; $i <= $conf->global->PRODUCT_SHOW_WHEN_CREATE; $i ++) + { + if ($_POST['idprod' . $i]) { + $xid = 'idprod' . $i; + $xqty = 'qty' . $i; + $xremise = 'remise' . $i; + $object->add_product($_POST[$xid], $_POST[$xqty], $_POST[$xremise]); + } + } + + // Fill array 'array_options' with data from add form + $ret = $extrafields->setOptionalsFromPost($extralabels, $object); + if ($ret < 0) { + $error ++; + $action = 'create'; + } + } + + if (! $error) + { + if ($origin && $originid) + { + // Parse element/subelement (ex: project_task) + $element = $subelement = $origin; + if (preg_match('/^([^_]+)_([^_]+)/i', $origin, $regs)) { + $element = $regs [1]; + $subelement = $regs [2]; + } + + // For compatibility + if ($element == 'order') { + $element = $subelement = 'commande'; + } + if ($element == 'askpricesupplier') { + $element = 'comm/askpricesupplier'; + $subelement = 'askpricesupplier'; + } + if ($element == 'contract') { + $element = $subelement = 'contrat'; + } + if ($element == 'inter') { + $element = $subelement = 'ficheinter'; + } + if ($element == 'shipping') { + $element = $subelement = 'expedition'; + } + + $object->origin = $origin; + $object->origin_id = $originid; + + // Possibility to add external linked objects with hooks + $object->linked_objects [$object->origin] = $object->origin_id; + if (is_array($_POST['other_linked_objects']) && ! empty($_POST['other_linked_objects'])) { + $object->linked_objects = array_merge($object->linked_objects, $_POST['other_linked_objects']); + } + + $id = $object->create($user); + if ($id > 0) + { + dol_include_once('/' . $element . '/class/' . $subelement . '.class.php'); + + $classname = ucfirst($subelement); + $srcobject = new $classname($db); + + dol_syslog("Try to find source object origin=" . $object->origin . " originid=" . $object->origin_id . " to add lines"); + $result = $srcobject->fetch($object->origin_id); + + if ($result > 0) + { + $lines = $srcobject->lines; + if (empty($lines) && method_exists($srcobject, 'fetch_lines')) + { + $srcobject->fetch_lines(); + $lines = $srcobject->lines; + } + + $fk_parent_line=0; + $num=count($lines); + for ($i=0;$i<$num;$i++) + { + $label=(! empty($lines[$i]->label)?$lines[$i]->label:''); + $desc=(! empty($lines[$i]->desc)?$lines[$i]->desc:$lines[$i]->libelle); + + // Positive line + $product_type = ($lines[$i]->product_type ? $lines[$i]->product_type : 0); + + // Date start + $date_start = false; + if ($lines[$i]->date_debut_prevue) + $date_start = $lines[$i]->date_debut_prevue; + if ($lines[$i]->date_debut_reel) + $date_start = $lines[$i]->date_debut_reel; + if ($lines[$i]->date_start) + $date_start = $lines[$i]->date_start; + + // Date end + $date_end = false; + if ($lines[$i]->date_fin_prevue) + $date_end = $lines[$i]->date_fin_prevue; + if ($lines[$i]->date_fin_reel) + $date_end = $lines[$i]->date_fin_reel; + if ($lines[$i]->date_end) + $date_end = $lines[$i]->date_end; + + // Reset fk_parent_line for no child products and special product + if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) { + $fk_parent_line = 0; + } + + // Extrafields + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && method_exists($lines[$i], 'fetch_optionals')) { + $lines[$i]->fetch_optionals($lines[$i]->rowid); + $array_option = $lines[$i]->array_options; + } + + $tva_tx=get_default_tva($mysoc, $object->thirdparty); + + $result = $object->addline($desc, $lines[$i]->subprice, $lines[$i]->qty, $tva_tx, $lines[$i]->localtax1_tx, $lines[$i]->localtax2_tx, $lines[$i]->fk_product, $lines[$i]->remise_percent, 'HT', 0, $lines[$i]->info_bits, $product_type, $lines[$i]->rang, $lines[$i]->special_code, $fk_parent_line, $lines[$i]->fk_fournprice, $lines[$i]->pa_ht, $label, $date_start, $date_end, $array_option); + + if ($result > 0) { + $lineid = $result; + } else { + $lineid = 0; + $error ++; + break; + } + + // Defined the new fk_parent_line + if ($result > 0 && $lines[$i]->product_type == 9) { + $fk_parent_line = $result; + } + } + + // Hooks + $parameters = array('objFrom' => $srcobject); + $reshook = $hookmanager->executeHooks('createFrom', $parameters, $object, $action); // Note that $action and $object may have been + // modified by hook + if ($reshook < 0) + $error ++; + } else { + setEventMessages($srcobject->error, $srcobject->errors, 'errors'); + $error ++; + } + } else { + setEventMessages($object->error, $object->errors, 'errors'); + $error ++; + } + } // Standard creation + else + { + $id = $object->create($user); + } + + if ($id > 0) + { + // Insertion contact par defaut si defini + if (GETPOST('contactid') > 0) + { + $result = $object->add_contact(GETPOST('contactid'), 'CUSTOMER', 'external'); + if ($result < 0) + { + $error++; + setEventMessage($langs->trans("ErrorFailedToAddContact"), 'errors'); + } + } + + if (! $error) + { + $db->commit(); + + // Define output language + if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) + { + $outputlangs = $langs; + $newlang = ''; + if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha'); + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang; + if (! empty($newlang)) { + $outputlangs = new Translate("", $conf); + $outputlangs->setDefaultLang($newlang); + } + $model=$object->modelpdf; + + $ret = $object->fetch($id); // Reload to get new records + $result=$object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); + if ($result < 0) dol_print_error($db,$result); + } + + header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $id); + exit(); + } + else + { + $db->rollback(); + $action='create'; + } + } + else + { + setEventMessages($object->error, $object->errors, 'errors'); + $db->rollback(); + $action='create'; + } + } + } + } + + // Classify billed + else if ($action == 'classifybilled' && $user->rights->askpricesupplier->cloturer) { + $object->cloture($user, 4, ''); + } + + // Reopen proposal + else if ($action == 'confirm_reopen' && $user->rights->askpricesupplier->cloturer && ! GETPOST('cancel')) { + // prevent browser refresh from reopening proposal several times + if ($object->statut == 2 || $object->statut == 3 || $object->statut == 4) { + $object->reopen($user, 1); + } + } + + // Close proposal + else if ($action == 'setstatut' && $user->rights->askpricesupplier->cloturer && ! GETPOST('cancel')) { + if (! GETPOST('statut')) { + setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentities("CloseAs")), 'errors'); + $action = 'statut'; + } else { + // prevent browser refresh from closing proposal several times + if ($object->statut == 1) { + $object->cloture($user, GETPOST('statut'), GETPOST('note')); + } + } + } + + // Classify billed + else if ($action == 'classifybilled' && $user->rights->askpricesupplier->cloturer) { + $object->cloture($user, 4, ''); + } + + // Reopen proposal + else if ($action == 'confirm_reopen' && $user->rights->askpricesupplier->cloturer && ! GETPOST('cancel')) { + // prevent browser refresh from reopening proposal several times + if ($object->statut == 2 || $object->statut == 3 || $object->statut == 4) { + $object->reopen($user, 1); + } + } + + // Close proposal + else if ($action == 'setstatut' && $user->rights->askpricesupplier->cloturer && ! GETPOST('cancel')) { + if (! GETPOST('statut')) { + setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentities("CloseAs")), 'errors'); + $action = 'statut'; + } else { + // prevent browser refresh from closing proposal several times + if ($object->statut == 1) { + $object->cloture($user, GETPOST('statut'), GETPOST('note')); + } + } + } + + include DOL_DOCUMENT_ROOT.'/core/actions_printing.inc.php'; + + + /* + * Send mail + */ + + // Actions to send emails + $actiontypecode='AC_ASKPRICE'; + $trigger_name='ASKPRICESUPPLIER_SENTBYMAIL'; + $paramname='id'; + $mode='emailfromaskpricesupplier'; + include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php'; + + + + // Go back to draft + if ($action == 'modif' && $user->rights->askpricesupplier->creer) + { + $object->set_draft($user); + + if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) + { + // Define output language + $outputlangs = $langs; + if (! empty($conf->global->MAIN_MULTILANGS)) { + $outputlangs = new Translate("", $conf); + $newlang = (GETPOST('lang_id') ? GETPOST('lang_id') : $object->thirdparty->default_lang); + $outputlangs->setDefaultLang($newlang); + } + $ret = $object->fetch($id); // Reload to get new records + $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); + } + } + + else if ($action == "setabsolutediscount" && $user->rights->askpricesupplier->creer) { + if ($_POST["remise_id"]) { + if ($object->id > 0) { + $result = $object->insert_discount($_POST["remise_id"]); + if ($result < 0) { + setEventMessage($object->error, 'errors'); + } + } + } + } + + // Add line + else if ($action == 'addline' && $user->rights->askpricesupplier->creer) { + + // Set if we used free entry or predefined product + $predef=''; + $product_desc=(GETPOST('dp_desc')?GETPOST('dp_desc'):''); + $price_ht = GETPOST('price_ht'); + if (GETPOST('prod_entry_mode') == 'free') + { + $idprod=0; + $tva_tx = (GETPOST('tva_tx') ? GETPOST('tva_tx') : 0); + } + else + { + $idprod=GETPOST('idprod', 'int'); + $tva_tx = ''; + } + + $qty = GETPOST('qty' . $predef); + $remise_percent = GETPOST('remise_percent' . $predef); + + // Extrafields + $extrafieldsline = new ExtraFields($db); + $extralabelsline = $extrafieldsline->fetch_name_optionals_label($object->table_element_line); + $array_option = $extrafieldsline->getOptionalsFromPost($extralabelsline, $predef); + // Unset extrafield + if (is_array($extralabelsline)) { + // Get extra fields + foreach ($extralabelsline as $key => $value) { + unset($_POST["options_" . $key]); + } + } + + if (GETPOST('prod_entry_mode') == 'free' && empty($idprod) && GETPOST('type') < 0) { + setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type")), 'errors'); + $error ++; + } + + if (GETPOST('prod_entry_mode') == 'free' && empty($idprod) && $price_ht == '') // Unit price can be 0 but not ''. Also price can be negative for proposal. + { + setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), 'errors'); + $error ++; + } + if (GETPOST('prod_entry_mode') == 'free' && empty($idprod) && empty($product_desc)) { + setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Description")), 'errors'); + $error ++; + } + + if (! $error && ($qty >= 0) && (! empty($product_desc) || ! empty($idprod))) { + $pu_ht = 0; + $pu_ttc = 0; + $price_min = 0; + $price_base_type = (GETPOST('price_base_type', 'alpha') ? GETPOST('price_base_type', 'alpha') : 'HT'); + + $db->begin(); + + // Ecrase $pu par celui du produit + // Ecrase $desc par celui du produit + // Ecrase $txtva par celui du produit + if (! empty($idprod)) { + $prod = new Product($db); + $prod->fetch($idprod); + + $label = ((GETPOST('product_label') && GETPOST('product_label') != $prod->label) ? GETPOST('product_label') : ''); + + // If prices fields are update + $tva_tx = get_default_tva($mysoc, $object->thirdparty, $prod->id); + $tva_npr = get_default_npr($mysoc, $object->thirdparty, $prod->id); + $pu_ht = $prod->price; + $pu_ttc = $prod->price_ttc; + $price_min = $prod->price_min; + $price_base_type = $prod->price_base_type; + + // On defini prix unitaire + if (! empty($conf->global->PRODUIT_MULTIPRICES) && $object->thirdparty->price_level) + { + $pu_ht = $prod->multiprices[$object->thirdparty->price_level]; + $pu_ttc = $prod->multiprices_ttc[$object->thirdparty->price_level]; + $price_min = $prod->multiprices_min[$object->thirdparty->price_level]; + $price_base_type = $prod->multiprices_base_type[$object->thirdparty->price_level]; + if (isset($prod->multiprices_tva_tx[$object->thirdparty->price_level])) $tva_tx=$prod->multiprices_tva_tx[$object->thirdparty->price_level]; + if (isset($prod->multiprices_recuperableonly[$object->thirdparty->price_level])) $tva_npr=$prod->multiprices_recuperableonly[$object->thirdparty->price_level]; + } + elseif (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) + { + require_once DOL_DOCUMENT_ROOT . '/product/class/productcustomerprice.class.php'; + + $prodcustprice = new Productcustomerprice($db); + + $filter = array('t.fk_product' => $prod->id,'t.fk_soc' => $object->thirdparty->id); + + $result = $prodcustprice->fetch_all('', '', 0, 0, $filter); + if ($result) { + if (count($prodcustprice->lines) > 0) { + $pu_ht = price($prodcustprice->lines [0]->price); + $pu_ttc = price($prodcustprice->lines [0]->price_ttc); + $price_base_type = $prodcustprice->lines [0]->price_base_type; + $prod->tva_tx = $prodcustprice->lines [0]->tva_tx; + } + } + } + + // if price ht is forced (ie: calculated by margin rate and cost price) + if (! empty($price_ht)) { + $pu_ht = price2num($price_ht, 'MU'); + $pu_ttc = price2num($pu_ht * (1 + ($tva_tx / 100)), 'MU'); + } + + // On reevalue prix selon taux tva car taux tva transaction peut etre different + // de ceux du produit par defaut (par exemple si pays different entre vendeur et acheteur). + elseif ($tva_tx != $prod->tva_tx) { + if ($price_base_type != 'HT') { + $pu_ht = price2num($pu_ttc / (1 + ($tva_tx / 100)), 'MU'); + } else { + $pu_ttc = price2num($pu_ht * (1 + ($tva_tx / 100)), 'MU'); + } + } + + $desc = ''; + + // Define output language + if (! empty($conf->global->MAIN_MULTILANGS) && ! empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) { + $outputlangs = $langs; + $newlang = ''; + if (empty($newlang) && GETPOST('lang_id')) + $newlang = GETPOST('lang_id'); + if (empty($newlang)) + $newlang = $object->thirdparty->default_lang; + if (! empty($newlang)) { + $outputlangs = new Translate("", $conf); + $outputlangs->setDefaultLang($newlang); + } + + $desc = (! empty($prod->multilangs [$outputlangs->defaultlang] ["description"])) ? $prod->multilangs [$outputlangs->defaultlang] ["description"] : $prod->description; + } else { + $desc = $prod->description; + } + + $desc = dol_concatdesc($desc, $product_desc); + + // Add custom code and origin country into description + if (empty($conf->global->MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE) && (! empty($prod->customcode) || ! empty($prod->country_code))) { + $tmptxt = '('; + if (! empty($prod->customcode)) + $tmptxt .= $langs->transnoentitiesnoconv("CustomCode") . ': ' . $prod->customcode; + if (! empty($prod->customcode) && ! empty($prod->country_code)) + $tmptxt .= ' - '; + if (! empty($prod->country_code)) + $tmptxt .= $langs->transnoentitiesnoconv("CountryOrigin") . ': ' . getCountry($prod->country_code, 0, $db, $langs, 0); + $tmptxt .= ')'; + $desc = dol_concatdesc($desc, $tmptxt); + } + + $type = $prod->type; + } else { + $pu_ht = price2num($price_ht, 'MU'); + $pu_ttc = price2num(GETPOST('price_ttc'), 'MU'); + $tva_npr = (preg_match('/\*/', $tva_tx) ? 1 : 0); + $tva_tx = str_replace('*', '', $tva_tx); + $label = (GETPOST('product_label') ? GETPOST('product_label') : ''); + $desc = $product_desc; + $type = GETPOST('type'); + } + + // Margin + $fournprice = (GETPOST('fournprice' . $predef) ? GETPOST('fournprice' . $predef) : ''); + $buyingprice = (GETPOST('buying_price' . $predef) ? GETPOST('buying_price' . $predef) : ''); + + $date_start = dol_mktime(0, 0, 0, GETPOST('date_start' . $predef . 'month'), GETPOST('date_start' . $predef . 'day'), GETPOST('date_start' . $predef . 'year')); + $date_end = dol_mktime(0, 0, 0, GETPOST('date_end' . $predef . 'month'), GETPOST('date_end' . $predef . 'day'), GETPOST('date_end' . $predef . 'year')); + + // Local Taxes + $localtax1_tx = get_localtax($tva_tx, 1, $object->thirdparty); + $localtax2_tx = get_localtax($tva_tx, 2, $object->thirdparty); + + $info_bits = 0; + if ($tva_npr) + $info_bits |= 0x01; + + if (! empty($price_min) && (price2num($pu_ht) * (1 - price2num($remise_percent) / 100) < price2num($price_min))) { + $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)); + setEventMessage($mesg, 'errors'); + } else { + // Insert line + $result = $object->addline($desc, $pu_ht, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, $idprod, $remise_percent, $price_base_type, $pu_ttc, $info_bits, $type, - 1, 0, GETPOST('fk_parent_line'), $fournprice, $buyingprice, $label, $date_start, $date_end, $array_option); + + if ($result > 0) { + $db->commit(); + + if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { + // Define output language + $outputlangs = $langs; + if (! empty($conf->global->MAIN_MULTILANGS)) { + $outputlangs = new Translate("", $conf); + $newlang = (GETPOST('lang_id') ? GETPOST('lang_id') : $object->thirdparty->default_lang); + $outputlangs->setDefaultLang($newlang); + } + $ret = $object->fetch($id); // Reload to get new records + $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); + } + + unset($_POST['prod_entry_mode']); + + unset($_POST['qty']); + unset($_POST['type']); + unset($_POST['remise_percent']); + unset($_POST['price_ht']); + unset($_POST['price_ttc']); + unset($_POST['tva_tx']); + unset($_POST['product_ref']); + unset($_POST['product_label']); + unset($_POST['product_desc']); + unset($_POST['fournprice']); + unset($_POST['buying_price']); + unset($_POST['np_marginRate']); + unset($_POST['np_markRate']); + unset($_POST['dp_desc']); + unset($_POST['idprod']); + + unset($_POST['date_starthour']); + unset($_POST['date_startmin']); + unset($_POST['date_startsec']); + unset($_POST['date_startday']); + unset($_POST['date_startmonth']); + unset($_POST['date_startyear']); + unset($_POST['date_endhour']); + unset($_POST['date_endmin']); + unset($_POST['date_endsec']); + unset($_POST['date_endday']); + unset($_POST['date_endmonth']); + unset($_POST['date_endyear']); + } else { + $db->rollback(); + + setEventMessage($object->error, 'errors'); + } + } + } + } + + // Mise a jour d'une ligne dans la propale + else if ($action == 'updateligne' && $user->rights->askpricesupplier->creer && GETPOST('save') == $langs->trans("Save")) { + // Define info_bits + $info_bits = 0; + if (preg_match('/\*/', GETPOST('tva_tx'))) + $info_bits |= 0x01; + + // Clean parameters + $description = dol_htmlcleanlastbr(GETPOST('product_desc')); + + // Define vat_rate + $vat_rate = (GETPOST('tva_tx') ? GETPOST('tva_tx') : 0); + $vat_rate = str_replace('*', '', $vat_rate); + $localtax1_rate = get_localtax($vat_rate, 1, $object->thirdparty); + $localtax2_rate = get_localtax($vat_rate, 2, $object->thirdparty); + $pu_ht = GETPOST('price_ht'); + + // Add buying price + $fournprice = (GETPOST('fournprice') ? GETPOST('fournprice') : ''); + $buyingprice = (GETPOST('buying_price') ? GETPOST('buying_price') : ''); + + $date_start = dol_mktime(0, 0, 0, GETPOST('date_startmonth'), GETPOST('date_startday'), GETPOST('date_startyear')); + $date_end = dol_mktime(0, 0, 0, GETPOST('date_endmonth'), GETPOST('date_endday'), GETPOST('date_endyear')); + + // Extrafields + $extrafieldsline = new ExtraFields($db); + $extralabelsline = $extrafieldsline->fetch_name_optionals_label($object->table_element_line); + $array_option = $extrafieldsline->getOptionalsFromPost($extralabelsline); + // Unset extrafield + if (is_array($extralabelsline)) { + // Get extra fields + foreach ($extralabelsline as $key => $value) { + unset($_POST["options_" . $key]); + } + } + + // Define special_code for special lines + $special_code=GETPOST('special_code'); + if (! GETPOST('qty')) $special_code=3; + + // Check minimum price + $productid = GETPOST('productid', 'int'); + if (! empty($productid)) { + $product = new Product($db); + $res = $product->fetch($productid); + + $type = $product->type; + + $price_min = $product->price_min; + if (! empty($conf->global->PRODUIT_MULTIPRICES) && ! empty($object->thirdparty->price_level)) + $price_min = $product->multiprices_min [$object->thirdparty->price_level]; + + $label = ((GETPOST('update_label') && GETPOST('product_label')) ? GETPOST('product_label') : ''); + + if ($price_min && (price2num($pu_ht) * (1 - price2num(GETPOST('remise_percent')) / 100) < price2num($price_min))) { + setEventMessage($langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)), 'errors'); + $error ++; + } + } else { + $type = GETPOST('type'); + $label = (GETPOST('product_label') ? GETPOST('product_label') : ''); + + // Check parameters + if (GETPOST('type') < 0) { + setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type")), 'errors'); + $error ++; + } + } + + if (! $error) { + $db->begin(); + + $result = $object->updateline(GETPOST('lineid'), $pu_ht, GETPOST('qty'), GETPOST('remise_percent'), $vat_rate, $localtax1_rate, $localtax2_rate, $description, 'HT', $info_bits, $special_code, GETPOST('fk_parent_line'), 0, $fournprice, $buyingprice, $label, $type, $date_start, $date_end, $array_option); + + if ($result >= 0) { + $db->commit(); + + if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { + // Define output language + $outputlangs = $langs; + if (! empty($conf->global->MAIN_MULTILANGS)) { + $outputlangs = new Translate("", $conf); + $newlang = (GETPOST('lang_id') ? GETPOST('lang_id') : $object->thirdparty->default_lang); + $outputlangs->setDefaultLang($newlang); + } + $ret = $object->fetch($id); // Reload to get new records + $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); + } + + unset($_POST['qty']); + unset($_POST['type']); + unset($_POST['productid']); + unset($_POST['remise_percent']); + unset($_POST['price_ht']); + unset($_POST['price_ttc']); + unset($_POST['tva_tx']); + unset($_POST['product_ref']); + unset($_POST['product_label']); + unset($_POST['product_desc']); + unset($_POST['fournprice']); + unset($_POST['buying_price']); + } else { + $db->rollback(); + + setEventMessage($object->error, 'errors'); + } + } + } + + else if ($action == 'updateligne' && $user->rights->propal->creer && GETPOST('cancel') == $langs->trans('Cancel')) { + header('Location: ' . $_SERVER['PHP_SELF'] . '?id=' . $object->id); // Pour reaffichage de la fiche en cours d'edition + exit(); + } + + // Generation doc (depuis lien ou depuis cartouche doc) + else if ($action == 'builddoc' && $user->rights->askpricesupplier->creer) { + if (GETPOST('model')) { + $object->setDocModel($user, GETPOST('model')); + } + + // Define output language + $outputlangs = $langs; + if (! empty($conf->global->MAIN_MULTILANGS)) { + $outputlangs = new Translate("", $conf); + $newlang = (GETPOST('lang_id') ? GETPOST('lang_id') : $object->thirdparty->default_lang); + $outputlangs->setDefaultLang($newlang); + } + $ret = $object->fetch($id); // Reload to get new records + $result = $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); + + if ($result <= 0) { + dol_print_error($db, $result); + exit(); + } else { + header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . (empty($conf->global->MAIN_JUMP_TAG) ? '' : '#builddoc')); + exit(); + } + } + + // Remove file in doc form + else if ($action == 'remove_file' && $user->rights->askpricesupplier->creer) { + if ($object->id > 0) { + require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; + + $langs->load("other"); + $upload_dir = $conf->askpricesupplier->dir_output; + $file = $upload_dir . '/' . GETPOST('file'); + $ret = dol_delete_file($file, 0, 0, 0, $object); + if ($ret) + setEventMessage($langs->trans("FileWasRemoved", GETPOST('file'))); + else + setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), 'errors'); + } + } + + // Set project + else if ($action == 'classin' && $user->rights->askpricesupplier->creer) { + $object->setProject($_POST['projectid']); + } + + // Delai de livraison + else if ($action == 'setavailability' && $user->rights->askpricesupplier->creer) { + $result = $object->availability($_POST['availability_id']); + } + + // Origine de la propale + else if ($action == 'setdemandreason' && $user->rights->askpricesupplier->creer) { + $result = $object->demand_reason($_POST['demand_reason_id']); + } + + // Conditions de reglement + else if ($action == 'setconditions' && $user->rights->askpricesupplier->creer) { + $result = $object->setPaymentTerms(GETPOST('cond_reglement_id', 'int')); + } + + else if ($action == 'setremisepercent' && $user->rights->askpricesupplier->creer) { + $result = $object->set_remise_percent($user, $_POST['remise_percent']); + } + + else if ($action == 'setremiseabsolue' && $user->rights->askpricesupplier->creer) { + $result = $object->set_remise_absolue($user, $_POST['remise_absolue']); + } + + // Mode de reglement + else if ($action == 'setmode' && $user->rights->askpricesupplier->creer) { + $result = $object->setPaymentMethods(GETPOST('mode_reglement_id', 'int')); + } + + // bank account + else if ($action == 'setbankaccount' && $user->rights->askpricesupplier->creer) { + $result=$object->setBankAccount(GETPOST('fk_account', 'int')); + } + + // shipping method + else if ($action == 'setshippingmethod' && $user->rights->askpricesupplier->creer) { + $result=$object->setShippingMethod(GETPOST('shipping_method_id', 'int')); + } + + /* + * Ordonnancement des lignes + */ + + else if ($action == 'up' && $user->rights->askpricesupplier->creer) { + $object->line_up(GETPOST('rowid')); + + if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { + // Define output language + $outputlangs = $langs; + if (! empty($conf->global->MAIN_MULTILANGS)) { + $outputlangs = new Translate("", $conf); + $newlang = (GETPOST('lang_id') ? GETPOST('lang_id') : $object->thirdparty->default_lang); + $outputlangs->setDefaultLang($newlang); + } + $ret = $object->fetch($id); // Reload to get new records + $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); + } + + header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $id . '#' . GETPOST('rowid')); + exit(); + } + + else if ($action == 'down' && $user->rights->askpricesupplier->creer) { + $object->line_down(GETPOST('rowid')); + + if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { + // Define output language + $outputlangs = $langs; + if (! empty($conf->global->MAIN_MULTILANGS)) { + $outputlangs = new Translate("", $conf); + $newlang = (GETPOST('lang_id') ? GETPOST('lang_id') : $object->thirdparty->default_lang); + $outputlangs->setDefaultLang($newlang); + } + $ret = $object->fetch($id); // Reload to get new records + $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); + } + + header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $id . '#' . GETPOST('rowid')); + exit(); + } else if ($action == 'update_extras') { + // Fill array 'array_options' with data from update form + $extralabels = $extrafields->fetch_name_optionals_label($object->table_element); + $ret = $extrafields->setOptionalsFromPost($extralabels, $object, GETPOST('attribute')); + if ($ret < 0) + $error ++; + + if (! $error) { + // Actions on extra fields (by external module or standard code) + // FIXME le hook fait double emploi avec le trigger !! + $hookmanager->initHooks(array('propaldao')); + $parameters = array('id' => $object->id); + $reshook = $hookmanager->executeHooks('insertExtraFields', $parameters, $object, $action); // Note that $action and $object may have been + // modified by + // some hooks + if (empty($reshook)) { + $result = $object->insertExtraFields(); + if ($result < 0) { + $error ++; + } + } else if ($reshook < 0) + $error ++; + } + + if ($error) + $action = 'edit_extras'; + } + + if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && $user->rights->askpricesupplier->creer) + { + if ($action == 'addcontact') + { + if ($object->id > 0) { + $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid')); + $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]); + } + + if ($result >= 0) { + header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $object->id); + exit(); + } else { + if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { + $langs->load("errors"); + setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'errors'); + } else { + setEventMessage($object->error, 'errors'); + } + } + } + + // Bascule du statut d'un contact + else if ($action == 'swapstatut') { + if ($object->fetch($id) > 0) { + $result = $object->swapContactStatus(GETPOST('ligne')); + } else { + dol_print_error($db); + } + } + + // Efface un contact + else if ($action == 'deletecontact') { + $object->fetch($id); + $result = $object->delete_contact($lineid); + + if ($result >= 0) { + header("Location: " . $_SERVER['PHP_SELF'] . "?id=" . $object->id); + exit(); + } else { + dol_print_error($db); + } + } + } +} + + +/* + * View + */ + +llxHeader('', $langs->trans('CommRequests'), 'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); + +$form = new Form($db); +$formother = new FormOther($db); +$formfile = new FormFile($db); +$formpropal = new FormPropal($db); +$companystatic = new Societe($db); + +$now = dol_now(); + +// Add new proposal +if ($action == 'create') +{ + print_fiche_titre($langs->trans("NewAskPrice")); + + $soc = new Societe($db); + if ($socid > 0) + $res = $soc->fetch($socid); + + // Load objectsrc + if (! empty($origin) && ! empty($originid)) + { + // Parse element/subelement (ex: project_task) + $element = $subelement = $origin; + if (preg_match('/^([^_]+)_([^_]+)/i', $origin, $regs)) { + $element = $regs [1]; + $subelement = $regs [2]; + } + + if ($element == 'project') { + $projectid = $originid; + } else { + // For compatibility + if ($element == 'order' || $element == 'commande') { + $element = $subelement = 'commande'; + } + if ($element == 'askpricesupplier') { + $element = 'comm/askpricesupplier'; + $subelement = 'askpricesupplier'; + } + if ($element == 'contract') { + $element = $subelement = 'contrat'; + } + if ($element == 'shipping') { + $element = $subelement = 'expedition'; + } + + dol_include_once('/' . $element . '/class/' . $subelement . '.class.php'); + + $classname = ucfirst($subelement); + $objectsrc = new $classname($db); + $objectsrc->fetch($originid); + if (empty($objectsrc->lines) && method_exists($objectsrc, 'fetch_lines')) + { + $objectsrc->fetch_lines(); + } + $objectsrc->fetch_thirdparty(); + + $projectid = (! empty($objectsrc->fk_project) ? $objectsrc->fk_project : ''); + $ref_client = (! empty($objectsrc->ref_client) ? $objectsrc->ref_client : ''); + $ref_int = (! empty($objectsrc->ref_int) ? $objectsrc->ref_int : ''); + + $soc = $objectsrc->thirdparty; + + $cond_reglement_id = (! empty($objectsrc->cond_reglement_id)?$objectsrc->cond_reglement_id:(! empty($soc->cond_reglement_id)?$soc->cond_reglement_id:1)); + $mode_reglement_id = (! empty($objectsrc->mode_reglement_id)?$objectsrc->mode_reglement_id:(! empty($soc->mode_reglement_id)?$soc->mode_reglement_id:0)); + $remise_percent = (! empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(! empty($soc->remise_percent)?$soc->remise_percent:0)); + $remise_absolue = (! empty($objectsrc->remise_absolue)?$objectsrc->remise_absolue:(! empty($soc->remise_absolue)?$soc->remise_absolue:0)); + $dateinvoice = (empty($dateinvoice)?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:''):$dateinvoice); + + // Replicate extrafields + $objectsrc->fetch_optionals($originid); + $object->array_options = $objectsrc->array_options; + } + } + + $object = new AskPriceSupplier($db); + + print '
'; + print ''; + print ''; + if ($origin != 'project' && $originid) { + print ''; + print ''; + } + + dol_fiche_head(); + + print ''; + + // Reference + print ''; + + // Ref customer + print ''; + print ''; + + // Third party + print ''; + print ''; + if ($socid > 0) { + print ''; + } else { + print ''; + } + print '' . "\n"; + + // Contacts (ask contact only if thirdparty already defined). TODO do this also into order and invoice. + if ($socid > 0) + { + print "'; + } + + if ($socid > 0) + { + // Ligne info remises tiers + print ''; + } + + // Date + print ''; + + // Validaty duration + print ''; + + // Terms of payment + print ''; + + // Mode of payment + print ''; + + // Bank Account + if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && $conf->banque->enabled) { + print ''; + } + + // What trigger creation + print ''; + + // Delivery delay + print ''; + + // Shipping Method + if (! empty($conf->expedition->enabled)) { + print ''; + } + + // Delivery date (or manufacturing) + print ''; + print ''; + + // Model + print ''; + print ''; + print '"; + + // Project + if (! empty($conf->projet->enabled) && $socid > 0) { + + $formproject = new FormProjets($db); + + $projectid = 0; + if ($origin == 'project') + $projectid = ($originid ? $originid : 0); + + print ''; + print ''; + print ''; + } + + // Other attributes + $parameters = array('colspan' => ' colspan="3"'); + $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified + // by + // hook + if (empty($reshook) && ! empty($extrafields->attribute_label)) { + print $object->showOptionals($extrafields, 'edit'); + } + + + // Lines from source + if (! empty($origin) && ! empty($originid) && is_object($objectsrc)) + { + // TODO for compatibility + if ($origin == 'contrat') { + // Calcul contrat->price (HT), contrat->total (TTC), contrat->tva + $objectsrc->remise_absolue = $remise_absolue; + $objectsrc->remise_percent = $remise_percent; + $objectsrc->update_price(1, - 1, 1); + } + + print "\n"; + print "\n"; + print '' . "\n"; + print '' . "\n"; + print '' . "\n"; + print ''; + print ''; + + $newclassname = $classname; + if ($newclassname == 'Askpricesupplier') + $newclassname = 'CommRequest'; + elseif ($newclassname == 'Commande') + $newclassname = 'Order'; + elseif ($newclassname == 'Expedition') + $newclassname = 'Sending'; + elseif ($newclassname == 'Fichinter') + $newclassname = 'Intervention'; + + print ''; + print ''; + print '"; + if ($mysoc->localtax1_assuj == "1" || $objectsrc->total_localtax1 != 0 ) // Localtax1 + { + print '"; + } + + if ($mysoc->localtax2_assuj == "1" || $objectsrc->total_localtax2 != 0) // Localtax2 + { + print '"; + } + print '"; + } + + print "
' . $langs->trans('Ref') . '' . $langs->trans("Draft") . '
' . $langs->trans('RefCustomer') . ''; + print '
' . $langs->trans('Customer') . ''; + print $soc->getNomUrl(1); + print ''; + print ''; + print $form->select_company('', 'socid', 's.client = 1 OR s.client = 2 OR s.client = 3', 1); + print '
" . $langs->trans("DefaultContact") . ''; + $form->select_contacts($soc->id, $contactid, 'contactid', 1, $srccontactslist); + print '
' . $langs->trans('Discounts') . ''; + if ($soc->remise_percent) + print $langs->trans("CompanyHasRelativeDiscount", $soc->remise_percent); + else + print $langs->trans("CompanyHasNoRelativeDiscount"); + $absolute_discount = $soc->getAvailableDiscounts(); + print '. '; + if ($absolute_discount) + print $langs->trans("CompanyHasAbsoluteDiscount", price($absolute_discount), $langs->trans("Currency" . $conf->currency)); + else + print $langs->trans("CompanyHasNoAbsoluteDiscount"); + print '.'; + print '
' . $langs->trans('Date') . ''; + $form->select_date('', '', '', '', '', "addask", 1, 1); + print '
' . $langs->trans("ValidityDuration") . ' ' . $langs->trans("days") . '
' . $langs->trans('PaymentConditionsShort') . ''; + $form->select_conditions_paiements($soc->cond_reglement_id, 'cond_reglement_id'); + print '
' . $langs->trans('PaymentMode') . ''; + $form->select_types_paiements($soc->mode_reglement_id, 'mode_reglement_id'); + print '
' . $langs->trans('BankAccount') . ''; + $form->select_comptes($fk_account, 'fk_account', 0, '', 1); + print '
' . $langs->trans('Source') . ''; + $form->selectInputReason('', 'demand_reason_id', "SRC_PROP", 1); + print '
' . $langs->trans('AvailabilityPeriod') . ''; + $form->selectAvailabilityDelay('', 'availability_id', '', 1); + print '
' . $langs->trans('SendingMethod') . ''; + print $form->selectShippingMethod($shipping_method_id, 'shipping_method_id', '', 1); + print '
' . $langs->trans("DeliveryDate") . ''; + if ($conf->global->DATE_LIVRAISON_WEEK_DELAY != "") { + $tmpdte = time() + ((7 * $conf->global->DATE_LIVRAISON_WEEK_DELAY) * 24 * 60 * 60); + $syear = date("Y", $tmpdte); + $smonth = date("m", $tmpdte); + $sday = date("d", $tmpdte); + $form->select_date($syear."-".$smonth."-".$sday, 'liv_', '', '', '', "addask"); + } else { + $form->select_date(-1, 'liv_', '', '', '', "addask", 1, 1); + } + print '
' . $langs->trans("DefaultModel") . ''; + $liste = ModelePDFAskPriceSupplier::liste_modeles($db); + print $form->selectarray('model', $liste, ($conf->global->ASKPRICESUPPLIER_ADDON_PDF_ODT_DEFAULT ? $conf->global->ASKPRICESUPPLIER_ADDON_PDF_ODT_DEFAULT : $conf->global->ASKPRICESUPPLIER_ADDON_PDF)); + print "
' . $langs->trans("Project") . ''; + + $numprojet = $formproject->select_projects($soc->id, $projectid); + if ($numprojet == 0) { + $langs->load("projects"); + print '   ' . $langs->trans("AddProject") . ''; + } + print '
' . $langs->trans($newclassname) . '' . $objectsrc->getNomUrl(1) . '
' . $langs->trans('TotalHT') . '' . price($objectsrc->total_ht) . '
' . $langs->trans('TotalVAT') . '' . price($objectsrc->total_tva) . "
' . $langs->transcountry("AmountLT1", $mysoc->country_code) . '' . price($objectsrc->total_localtax1) . "
' . $langs->transcountry("AmountLT2", $mysoc->country_code) . '' . price($objectsrc->total_localtax2) . "
' . $langs->trans('TotalTTC') . '' . price($objectsrc->total_ttc) . "
\n"; + + + /* + * Combobox pour la fonction de copie + */ + + if (empty($conf->global->ASKPRICESUPPLIER_CLONE_ON_CREATE_PAGE)) print ''; + + if (! empty($conf->global->ASKPRICESUPPLIER_CLONE_ON_CREATE_PAGE) || ! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE)) print '
'; + if (! empty($conf->global->ASKPRICESUPPLIER_CLONE_ON_CREATE_PAGE)) + { + // For backward compatibility + print ''; + print ''; + print ''; + print ''; + + if (! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE)) + print ''; + + print ''; + print ''; + } + + if (! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE)) + { + print ''; + } + if (! empty($conf->global->ASKPRICESUPPLIER_CLONE_ON_CREATE_PAGE) || ! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE)) print '
' . $langs->trans("CopyAskFrom") . ' '; + $liste_ask = array(); + $liste_ask [0] = ''; + + $sql = "SELECT p.rowid as id, p.ref, s.nom"; + $sql .= " FROM " . MAIN_DB_PREFIX . "askpricesupplier p"; + $sql .= ", " . MAIN_DB_PREFIX . "societe s"; + $sql .= " WHERE s.rowid = p.fk_soc"; + $sql .= " AND p.entity = " . $conf->entity; + $sql .= " AND p.fk_statut <> 0"; + $sql .= " ORDER BY Id"; + + $resql = $db->query($sql); + if ($resql) { + $num = $db->num_rows($resql); + $i = 0; + while ($i < $num) { + $row = $db->fetch_row($resql); + $propalRefAndSocName = $row [1] . " - " . $row [2]; + $liste_ask [$row [0]] = $propalRefAndSocName; + $i ++; + } + print $form->selectarray("copie_askpricesupplier", $liste_ask, 0); + } else { + dol_print_error($db); + } + print '
 
' . $langs->trans("CreateEmptyAsk") . '
'; + if (! empty($conf->product->enabled) || ! empty($conf->service->enabled)) { + $lib = $langs->trans("ProductsAndServices"); + + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + for($i = 1; $i <= $conf->global->PRODUCT_SHOW_WHEN_CREATE; $i ++) { + print ''; + print ''; + print ''; + print ''; + } + print "
' . $lib . '' . $langs->trans("Qty") . '' . $langs->trans("ReductionShort") . '
'; + // multiprix + if ($conf->global->PRODUIT_MULTIPRICES && $soc->price_level) + $form->select_produits('', "idprod" . $i, '', $conf->product->limit_size, $soc->price_level); + else + $form->select_produits('', "idprod" . $i, '', $conf->product->limit_size); + print '%
"; + } + print '
'; + + dol_fiche_end(); + + $langs->load("bills"); + print '
'; + print ''; + print '     '; + print ''; + print '
'; + + print "
"; + + + // Show origin lines + if (! empty($origin) && ! empty($originid) && is_object($objectsrc)) { + print '
'; + + $title = $langs->trans('ProductsAndServices'); + print_titre($title); + + print ''; + + $objectsrc->printOriginLinesList(); + + print '
'; + } + +} else { + /* + * Show object in view mode + */ + + $soc = new Societe($db); + $soc->fetch($object->socid); + + $head = propal_prepare_head($object); + dol_fiche_head($head, 'comm', $langs->trans('CommRequest'), 0, 'CommRequest'); + + $formconfirm = ''; + + // Clone confirmation + if ($action == 'clone') { + // Create an array for form + $formquestion = array( + // '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' => 'other','name' => 'socid','label' => $langs->trans("SelectThirdParty"),'value' => $form->select_company(GETPOST('socid', 'int'), 'socid', '(s.client=1 OR s.client=2 OR s.client=3)'))); + // Paiement incomplet. On demande si motif = escompte ou autre + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('CloneAsk'), $langs->trans('ConfirmCloneAsk', $object->ref), 'confirm_clone', $formquestion, 'yes', 1); + } + + // Confirm delete + else if ($action == 'delete') { + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('DeleteAsk'), $langs->trans('ConfirmDeleteAsk', $object->ref), 'confirm_delete', '', 0, 1); + } + + // Confirm reopen + else if ($action == 'reopen') { + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('ReOpen'), $langs->trans('ConfirmReOpenAsk', $object->ref), 'confirm_reopen', '', 0, 1); + } + + // Confirmation delete product/service line + else if ($action == 'ask_deleteline') { + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id . '&lineid=' . $lineid, $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteline', '', 0, 1); + } + + // Confirm validate proposal + else if ($action == 'validate') { + $error = 0; + + // on verifie si l'objet est en numerotation provisoire + $ref = substr($object->ref, 1, 4); + if ($ref == 'PROV') { + $numref = $object->getNextNumRef($soc); + if (empty($numref)) { + $error ++; + setEventMessage($object->error, 'errors'); + } + } else { + $numref = $object->ref; + } + + $text = $langs->trans('ConfirmValidateAsk', $numref); + if (! empty($conf->notification->enabled)) { + require_once DOL_DOCUMENT_ROOT . '/core/class/notify.class.php'; + $notify = new Notify($db); + $text .= '
'; + $text .= $notify->confirmMessage('ASKPRICESUPPLIER_VALIDATE', $object->socid); + } + + if (! $error) + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('ValidateAsk'), $text, 'confirm_validate', '', 0, 1); + } + + if (! $formconfirm) { + $parameters = array('lineid' => $lineid); + $formconfirm = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified + // by + // hook + } + + // Print form confirm + print $formconfirm; + + print ''; + + $linkback = '' . $langs->trans("BackToList") . ''; + + // Ref + print ''; + + // Ref customer + print ''; + print ''; + + // Company + print ''; + print ''; + + // Ligne info remises tiers + print ''; + + // Date of proposal + print ''; + print ''; + + // Date end proposal + print ''; + print ''; + print ''; + + // Payment term + print ''; + print ''; + + // Delivery date + $langs->load('deliveries'); + print ''; + print ''; + + // Delivery delay + print ''; + print ''; + + // Shipping Method + if (! empty($conf->expedition->enabled)) { + print ''; + print ''; + } + + // Origin of demand + print ''; + print ''; + + // Payment mode + print ''; + print ''; + + // Project + if (! empty($conf->projet->enabled)) { + $langs->load("projects"); + print ''; + } else { + print '
' . $langs->trans('Ref') . ''; + print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', ''); + print '
'; + print ''; + if ($action != 'refclient' && ! empty($object->brouillon)) + print ''; + print ''; + print '
'; + print $langs->trans('RefCustomer') . '' . img_edit($langs->trans('Modify')) . '
'; + print '
'; + if ($user->rights->askpricesupplier->creer && $action == 'refclient') { + print '
'; + print ''; + print ''; + print ''; + print ' '; + print '
'; + } else { + print $object->ref_client; + } + print '
' . $langs->trans('Company') . '' . $soc->getNomUrl(1) . '
' . $langs->trans('Discounts') . ''; + if ($soc->remise_percent) + print $langs->trans("CompanyHasRelativeDiscount", $soc->remise_percent); + else + print $langs->trans("CompanyHasNoRelativeDiscount"); + print '. '; + $absolute_discount = $soc->getAvailableDiscounts('', 'fk_facture_source IS NULL'); + $absolute_creditnote = $soc->getAvailableDiscounts('', 'fk_facture_source IS NOT NULL'); + $absolute_discount = price2num($absolute_discount, 'MT'); + $absolute_creditnote = price2num($absolute_creditnote, 'MT'); + if ($absolute_discount) { + if ($object->statut > 0) { + print $langs->trans("CompanyHasAbsoluteDiscount", price($absolute_discount, 0, $langs, 0, 0, -1, $conf->currency)); + } else { + // Remise dispo de type non avoir + $filter = 'fk_facture_source IS NULL'; + print '
'; + $form->form_remise_dispo($_SERVER["PHP_SELF"] . '?id=' . $object->id, 0, 'remise_id', $soc->id, $absolute_discount, $filter); + } + } + if ($absolute_creditnote) { + print $langs->trans("CompanyHasCreditNote", price($absolute_creditnote, 0, $langs, 0, 0, -1, $conf->currency)) . '. '; + } + if (! $absolute_discount && ! $absolute_creditnote) + print $langs->trans("CompanyHasNoAbsoluteDiscount") . '.'; + print '
'; + print ''; + if ($action != 'editdate' && ! empty($object->brouillon)) + print ''; + print '
'; + print $langs->trans('Date'); + print 'id . '">' . img_edit($langs->trans('SetDate'), 1) . '
'; + print '
'; + if (! empty($object->brouillon) && $action == 'editdate') { + print '
'; + print ''; + print ''; + $form->select_date($object->date, 're', '', '', 0, "editdate"); + print ''; + print '
'; + } else { + if ($object->date) { + print dol_print_date($object->date, 'daytext'); + } else { + print ' '; + } + } + print '
'; + print ''; + if ($action != 'editecheance' && ! empty($object->brouillon)) + print ''; + print '
'; + print $langs->trans('DateEndAsk'); + print 'id . '">' . img_edit($langs->trans('SetConditions'), 1) . '
'; + print '
'; + if (! empty($object->brouillon) && $action == 'editecheance') { + print '
'; + print ''; + print ''; + $form->select_date($object->fin_validite, 'ech', '', '', '', "editecheance"); + print ''; + print '
'; + } else { + if (! empty($object->fin_validite)) { + print dol_print_date($object->fin_validite, 'daytext'); + if ($object->statut == 1 && $object->fin_validite < ($now - $conf->askpricesupplier->cloture->warning_delay)) + print img_warning($langs->trans("Late")); + } else { + print ' '; + } + } + print '
'; + print ''; + if ($action != 'editconditions' && ! empty($object->brouillon)) + print ''; + print '
'; + print $langs->trans('PaymentConditionsShort'); + print 'id . '">' . img_edit($langs->transnoentitiesnoconv('SetConditions'), 1) . '
'; + print '
'; + if ($action == 'editconditions') { + $form->form_conditions_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->cond_reglement_id, 'cond_reglement_id'); + } else { + $form->form_conditions_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->cond_reglement_id, 'none'); + } + print '
'; + print ''; + if ($action != 'editdate_livraison' && ! empty($object->brouillon)) + print ''; + print '
'; + print $langs->trans('DeliveryDate'); + print 'id . '">' . img_edit($langs->transnoentitiesnoconv('SetDeliveryDate'), 1) . '
'; + print '
'; + if ($action == 'editdate_livraison') { + print '
'; + print ''; + print ''; + $form->select_date($object->date_livraison, 'liv_', '', '', '', "editdate_livraison"); + print ''; + print '
'; + } else { + print dol_print_date($object->date_livraison, 'daytext'); + } + print '
'; + print ''; + if ($action != 'editavailability' && ! empty($object->brouillon)) + print ''; + print '
'; + print $langs->trans('AvailabilityPeriod'); + if (! empty($conf->commande->enabled)) + print ' (' . $langs->trans('AfterOrder') . ')'; + print 'id . '">' . img_edit($langs->transnoentitiesnoconv('SetAvailability'), 1) . '
'; + print '
'; + if ($action == 'editavailability') { + $form->form_availability($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->availability_id, 'availability_id', 1); + } else { + $form->form_availability($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->availability_id, 'none', 1); + } + + print '
'; + print ''; + if ($action != 'editshippingmethod' && $user->rights->propal->creer) + print ''; + print '
'; + print $langs->trans('SendingMethod'); + print 'id.'">'.img_edit($langs->trans('SetShippingMode'),1).'
'; + print '
'; + if ($action == 'editshippingmethod') { + $form->formSelectShippingMethod($_SERVER['PHP_SELF'].'?id='.$object->id, $object->shipping_method_id, 'shipping_method_id', 1); + } else { + $form->formSelectShippingMethod($_SERVER['PHP_SELF'].'?id='.$object->id, $object->shipping_method_id, 'none'); + } + print '
'; + print ''; + if ($action != 'editdemandreason' && ! empty($object->brouillon)) + print ''; + print '
'; + print $langs->trans('Source'); + print 'id . '">' . img_edit($langs->transnoentitiesnoconv('SetDemandReason'), 1) . '
'; + print '
'; + if ($action == 'editdemandreason') { + $form->formInputReason($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->demand_reason_id, 'demand_reason_id', 1); + } else { + $form->formInputReason($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->demand_reason_id, 'none'); + } + print '
'; + print ''; + if ($action != 'editmode' && ! empty($object->brouillon)) + print ''; + print '
'; + print $langs->trans('PaymentMode'); + print 'id . '">' . img_edit($langs->transnoentitiesnoconv('SetMode'), 1) . '
'; + print '
'; + if ($action == 'editmode') { + $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'mode_reglement_id'); + } else { + $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'none'); + } + print '
'; + print ''; + if ($user->rights->askpricesupplier->creer) { + if ($action != 'classify') + print ''; + print '
'; + print $langs->trans('Project') . '' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '
'; + print '
'; + if ($action == 'classify') { + $form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid'); + } else { + $form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none'); + } + print '
'; + if (! empty($object->fk_project)) { + print '
'; + $proj = new Project($db); + $proj->fetch($object->fk_project); + print ''; + print $proj->ref; + print ''; + print ' 
'; + print $langs->trans('OutstandingBill'); + print ''; + print price($soc->get_OutstandingBill()) . ' / '; + print price($soc->outstanding_limit, 0, '', 1, - 1, - 1, $conf->currency); + print '
'; + print ''; + if ($action != 'editbankaccount' && $user->rights->propal->creer) + print ''; + print '
'; + print $langs->trans('BankAccount'); + print 'id.'">'.img_edit($langs->trans('SetBankAccount'),1).'
'; + print '
'; + if ($action == 'editbankaccount') { + $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'fk_account', 1); + } else { + $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'none'); + } + print '
' . $langs->trans('AmountHT') . '' . price($object->total_ht, '', $langs, 0, - 1, - 1, $conf->currency) . ''; + $object->displayMarginInfos(); + print '
' . $langs->trans('AmountVAT') . '' . price($object->total_tva, '', $langs, 0, - 1, - 1, $conf->currency) . '
' . $langs->transcountry("AmountLT1", $mysoc->country_code) . '' . price($object->total_localtax1, '', $langs, 0, - 1, - 1, $conf->currency) . '
' . $langs->transcountry("AmountLT2", $mysoc->country_code) . '' . price($object->total_localtax2, '', $langs, 0, - 1, - 1, $conf->currency) . '
' . $langs->trans('AmountTTC') . '' . price($object->total_ttc, '', $langs, 0, - 1, - 1, $conf->currency) . '
' . $langs->trans('Status') . '' . $object->getLibStatut(4) . '

'; + + if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) { + $blocname = 'contacts'; + $title = $langs->trans('ContactsAddresses'); + include DOL_DOCUMENT_ROOT . '/core/tpl/bloc_showhide.tpl.php'; + } + + if (! empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { + $blocname = 'notes'; + $title = $langs->trans('Notes'); + include DOL_DOCUMENT_ROOT . '/core/tpl/bloc_showhide.tpl.php'; + } + + /* + * Lines + */ + + // Show object lines + $result = $object->getLinesArray(); + + print '
+ + + + + '; + + if (! empty($conf->use_javascript_ajax) && $object->statut == 0) { + include DOL_DOCUMENT_ROOT . '/core/tpl/ajaxrow.tpl.php'; + } + + print ''; + + if (! empty($object->lines)) + $ret = $object->printObjectLines($action, $mysoc, $soc, $lineid, 1); + + // Form to add new line + if ($object->statut == 0 && $user->rights->propal->creer) + { + if ($action != 'editline') + { + $var = true; + + // Add products/services form + $object->formAddObjectLine(1, $mysoc, $soc); + + $parameters = array(); + $reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + } + } + + print '
'; + + print "
\n"; + + dol_fiche_end(); + + if ($action == 'statut') + { + /* + * Form to close proposal (signed or not) + */ + $form_close = '
'; + $form_close .= ''; + $form_close .= ''; + $form_close .= ''; + $form_close .= ''; + $form_close .= ''; + $form_close .= '
' . $langs->trans("CloseAs") . ''; + $form_close .= ''; + $form_close .= ''; + $form_close .= '
' . $langs->trans('Note') . '
'; + $form_close .= ''; + $form_close .= '   '; + $form_close .= ' '; + $form_close .= '
'; + + print $form_close; + } + + /* + * Boutons Actions + */ + if ($action != 'presend') { + print '
'; + + $parameters = array(); + $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been + // modified by hook + if (empty($reshook)) + { + if ($action != 'statut' && $action != 'editline') + { + // Validate + if ($object->statut == 0 && $object->total_ttc >= 0 && count($object->lines) > 0 && + ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->propal->creer)) + || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->askpricesupplier->validate))) + ) { + if (count($object->lines) > 0) + print ''; + // else print ''.$langs->trans('Validate').''; + } + // Create event + if ($conf->agenda->enabled && ! empty($conf->global->MAIN_ADD_EVENT_ON_ELEMENT_CARD)) // Add hidden condition because this is not a "workflow" action so should appears somewhere else on page. + { + print '' . $langs->trans("AddAction") . ''; + } + // Edit + if ($object->statut == 1 && $user->rights->askpricesupplier->creer) { + print ''; + } + + // ReOpen + if (($object->statut == 2 || $object->statut == 3 || $object->statut == 4) && $user->rights->askpricesupplier->cloturer) { + print ''; + } + + // Send + if ($object->statut == 1 || $object->statut == 2) { + if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->askpricesupplier->propal_advance->send) { + print ''; + } else + print ''; + } + + // Create an order + if (! empty($conf->commande->enabled) && $object->statut == 2) { + if ($user->rights->commande->creer) { + print ''; + } + } + + // Create contract + if ($conf->contrat->enabled && $object->statut == 2) { + $langs->load("contracts"); + + if ($user->rights->contrat->creer) { + print ''; + } + } + + // Create an invoice and classify billed + if ($object->statut == 2) { + if (! empty($conf->facture->enabled) && $user->rights->facture->creer) + { + print ''; + } + + $arrayofinvoiceforpropal = $object->getInvoiceArrayList(); + if ((is_array($arrayofinvoiceforpropal) && count($arrayofinvoiceforpropal) > 0) || ! empty($conf->global->WORKFLOW_PROPAL_CAN_CLASSIFIED_BILLED_WITHOUT_INVOICES)) + { + print ''; + } + } + + // Close + if ($object->statut == 1 && $user->rights->askpricesupplier->cloturer) { + print ''; + } + + // Clone + if ($user->rights->askpricesupplier->creer) { + print ''; + } + + // Delete + if ($user->rights->askpricesupplier->supprimer) { + print ''; + } + } + } + + print '
'; + } + print "
\n"; + + if ($action != 'presend') + { + print '
'; + // print '
'; + // print ''; // ancre + + /* + * Documents generes + */ + $filename = dol_sanitizeFileName($object->ref); + $filedir = $conf->propal->dir_output . "/" . dol_sanitizeFileName($object->ref); + $urlsource = $_SERVER["PHP_SELF"] . "?id=" . $object->id; + $genallowed = $user->rights->askpricesupplier->creer; + $delallowed = $user->rights->askpricesupplier->supprimer; + + $var = true; + + $somethingshown = $formfile->show_documents('propal', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', 0, '', $soc->default_lang); + + /* + * Linked object block + */ + $somethingshown = $object->showLinkedObjectBlock(); + + print '
'; + // print '
'; + + // List of actions on element + include_once DOL_DOCUMENT_ROOT . '/core/class/html.formactions.class.php'; + $formactions = new FormActions($db); + $somethingshown = $formactions->showactions($object, 'propal', $socid); + + // print '
'; + print '
'; + } + + /* + * Action presend + */ + if ($action == 'presend') + { + $object->fetch_projet(); + + $ref = dol_sanitizeFileName($object->ref); + include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; + $fileparams = dol_most_recent_file($conf->propal->dir_output . '/' . $ref, preg_quote($ref, '/')); + $file = $fileparams ['fullname']; + + // Define output language + $outputlangs = $langs; + $newlang = ''; + if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) + $newlang = $_REQUEST['lang_id']; + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) + $newlang = $object->thirdparty->default_lang; + + if (!empty($newlang)) + { + $outputlangs = new Translate('', $conf); + $outputlangs->setDefaultLang($newlang); + $outputlangs->load('commercial'); + } + + // Build document if it not exists + if (! $file || ! is_readable($file)) { + $result = $object->generateDocument(GETPOST('model') ? GETPOST('model') : $object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); + if ($result <= 0) { + dol_print_error($db, $result); + exit(); + } + $fileparams = dol_most_recent_file($conf->askpricesupplier->dir_output . '/' . $ref, preg_quote($ref, '/')); + $file = $fileparams ['fullname']; + } + + print '
'; + print_titre($langs->trans('SendAskByMail')); + + // Create form object + include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php'; + $formmail = new FormMail($db); + $formmail->param['langsmodels']=(empty($newlang)?$langs->defaultlang:$newlang); + $formmail->fromtype = 'user'; + $formmail->fromid = $user->id; + $formmail->fromname = $user->getFullName($langs); + $formmail->frommail = $user->email; + $formmail->withfrom = 1; + $liste = array(); + foreach ($object->thirdparty->thirdparty_and_contact_email_array(1) as $key => $value) + $liste [$key] = $value; + $formmail->withto = GETPOST("sendto") ? GETPOST("sendto") : $liste; + $formmail->withtocc = $liste; + $formmail->withtoccc = (! empty($conf->global->MAIN_EMAIL_USECCC) ? $conf->global->MAIN_EMAIL_USECCC : false); + if (empty($object->ref_client)) { + $formmail->withtopic = $outputlangs->trans('SendAskRef', '__ASKREF__'); + } else if (! empty($object->ref_client)) { + $formmail->withtopic = $outputlangs->trans('SendAskRef', '__ASKREF__ (__REFCLIENT__)'); + } + $formmail->withfile = 2; + $formmail->withbody = 1; + $formmail->withdeliveryreceipt = 1; + $formmail->withcancel = 1; + + // Tableau des substitutions + $formmail->substit['__ASKREF__'] = $object->ref; + $formmail->substit['__SIGNATURE__'] = $user->signature; + $formmail->substit['__REFCLIENT__'] = $object->ref_client; + $formmail->substit['__THIRPARTY_NAME__'] = $object->thirdparty->name; + $formmail->substit['__PROJECT_REF__'] = (is_object($object->projet)?$object->projet->ref:''); + $formmail->substit['__PERSONALIZED__'] = ''; + $formmail->substit['__CONTACTCIVNAME__'] = ''; + + // Find the good contact adress + $custcontact = ''; + $contactarr = array(); + $contactarr = $object->liste_contact(- 1, 'external'); + + if (is_array($contactarr) && count($contactarr) > 0) { + foreach ($contactarr as $contact) { + if ($contact ['libelle'] == $langs->trans('TypeContact_askpricesupplier_external_CUSTOMER')) { // TODO Use code and not label + $contactstatic = new Contact($db); + $contactstatic->fetch($contact ['id']); + $custcontact = $contactstatic->getFullName($langs, 1); + } + } + + if (! empty($custcontact)) { + $formmail->substit['__CONTACTCIVNAME__'] = $custcontact; + } + } + + // Tableau des parametres complementaires + $formmail->param['action'] = 'send'; + $formmail->param['models'] = 'propal_send'; + $formmail->param['id'] = $object->id; + $formmail->param['returnurl'] = $_SERVER["PHP_SELF"] . '?id=' . $object->id; + // Init list of files + if (GETPOST("mode") == 'init') { + $formmail->clear_attached_files(); + $formmail->add_attached_files($file, basename($file), dol_mimetype($file)); + } + + print $formmail->get_form(); + + print '
'; + } +} + +// End of page +llxFooter(); +$db->close(); diff --git a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php index f68a1f4f708..b2c7fc4dfb2 100644 --- a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php +++ b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php @@ -37,14 +37,14 @@ require_once DOL_DOCUMENT_ROOT .'/contact/class/contact.class.php'; require_once DOL_DOCUMENT_ROOT .'/margin/lib/margins.lib.php'; /** - * Class to manage proposals + * Class to manage price ask supplier */ -class Propal extends CommonObject +class AskPriceSupplier extends CommonObject { - public $element='propal'; - public $table_element='propal'; - public $table_element_line='propaldet'; - public $fk_element='fk_propal'; + public $element='askpricesupplier'; + public $table_element='askpricesupplier'; + public $table_element_line='askpricesupplierdet'; + public $fk_element='fk_askpricesupplier'; protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe /** @@ -128,33 +128,33 @@ class Propal extends CommonObject * * @param DoliDB $db Database handler * @param int $socid Id third party - * @param int $propalid Id proposal + * @param int $askpricesupplierid Id askpricesupplier */ - function __construct($db, $socid="", $propalid=0) + function __construct($db, $socid="", $askpricesupplierid=0) { global $conf,$langs; $this->db = $db; $this->socid = $socid; - $this->id = $propalid; + $this->id = $askpricesupplierid; $this->products = array(); $this->remise = 0; $this->remise_percent = 0; $this->remise_absolue = 0; - $this->duree_validite=$conf->global->PROPALE_VALIDITY_DURATION; + $this->duree_validite=$conf->global->ASKPRICESUPPLIER_VALIDITY_DURATION; - $langs->load("propal"); - $this->labelstatut[0]=(! empty($conf->global->PROPAL_STATUS_DRAFT_LABEL) ? $conf->global->PROPAL_STATUS_DRAFT_LABEL : $langs->trans("PropalStatusDraft")); - $this->labelstatut[1]=(! empty($conf->global->PROPAL_STATUS_VALIDATED_LABEL) ? $conf->global->PROPAL_STATUS_VALIDATED_LABEL : $langs->trans("PropalStatusValidated")); - $this->labelstatut[2]=(! empty($conf->global->PROPAL_STATUS_SIGNED_LABEL) ? $conf->global->PROPAL_STATUS_SIGNED_LABEL : $langs->trans("PropalStatusSigned")); - $this->labelstatut[3]=(! empty($conf->global->PROPAL_STATUS_NOTSIGNED_LABEL) ? $conf->global->PROPAL_STATUS_NOTSIGNED_LABEL : $langs->trans("PropalStatusNotSigned")); - $this->labelstatut[4]=(! empty($conf->global->PROPAL_STATUS_BILLED_LABEL) ? $conf->global->PROPAL_STATUS_BILLED_LABEL : $langs->trans("PropalStatusBilled")); - $this->labelstatut_short[0]=(! empty($conf->global->PROPAL_STATUS_DRAFTSHORT_LABEL) ? $conf->global->PROPAL_STATUS_DRAFTSHORT_LABEL : $langs->trans("PropalStatusDraftShort")); - $this->labelstatut_short[1]=(! empty($conf->global->PROPAL_STATUS_VALIDATEDSHORT_LABEL) ? $conf->global->PROPAL_STATUS_VALIDATEDSHORT_LABEL : $langs->trans("Opened")); - $this->labelstatut_short[2]=(! empty($conf->global->PROPAL_STATUS_SIGNEDSHORT_LABEL) ? $conf->global->PROPAL_STATUS_SIGNEDSHORT_LABEL : $langs->trans("PropalStatusSignedShort")); - $this->labelstatut_short[3]=(! empty($conf->global->PROPAL_STATUS_NOTSIGNEDSHORT_LABEL) ? $conf->global->PROPAL_STATUS_NOTSIGNEDSHORT_LABEL : $langs->trans("PropalStatusNotSignedShort")); - $this->labelstatut_short[4]=(! empty($conf->global->PROPAL_STATUS_BILLEDSHORT_LABEL) ? $conf->global->PROPAL_STATUS_BILLEDSHORT_LABEL : $langs->trans("PropalStatusBilledShort")); + $langs->load("askpricesupplier"); + $this->labelstatut[0]=(! empty($conf->global->ASKPRICESUPPLIER_STATUS_DRAFT_LABEL) ? $conf->global->ASKPRICESUPPLIER_STATUS_DRAFT_LABEL : $langs->trans("AskpricesupplierStatusDraft")); + $this->labelstatut[1]=(! empty($conf->global->ASKPRICESUPPLIER_STATUS_VALIDATED_LABEL) ? $conf->global->ASKPRICESUPPLIER_STATUS_VALIDATED_LABEL : $langs->trans("AskpricesupplierStatusValidated")); + $this->labelstatut[2]=(! empty($conf->global->ASKPRICESUPPLIER_STATUS_SIGNED_LABEL) ? $conf->global->ASKPRICESUPPLIER_STATUS_SIGNED_LABEL : $langs->trans("AskpricesupplierStatusSigned")); + $this->labelstatut[3]=(! empty($conf->global->ASKPRICESUPPLIER_STATUS_NOTSIGNED_LABEL) ? $conf->global->ASKPRICESUPPLIER_STATUS_NOTSIGNED_LABEL : $langs->trans("AskpricesupplierStatusNotSigned")); + $this->labelstatut[4]=(! empty($conf->global->ASKPRICESUPPLIER_STATUS_BILLED_LABEL) ? $conf->global->ASKPRICESUPPLIER_STATUS_BILLED_LABEL : $langs->trans("AskpricesupplierStatusBilled")); + $this->labelstatut_short[0]=(! empty($conf->global->ASKPRICESUPPLIER_STATUS_DRAFTSHORT_LABEL) ? $conf->global->ASKPRICESUPPLIER_STATUS_DRAFTSHORT_LABEL : $langs->trans("AskpricesupplierStatusDraftShort")); + $this->labelstatut_short[1]=(! empty($conf->global->ASKPRICESUPPLIER_STATUS_VALIDATEDSHORT_LABEL) ? $conf->global->ASKPRICESUPPLIER_STATUS_VALIDATEDSHORT_LABEL : $langs->trans("Opened")); + $this->labelstatut_short[2]=(! empty($conf->global->ASKPRICESUPPLIER_STATUS_SIGNEDSHORT_LABEL) ? $conf->global->ASKPRICESUPPLIER_STATUS_SIGNEDSHORT_LABEL : $langs->trans("AskpricesupplierStatusSignedShort")); + $this->labelstatut_short[3]=(! empty($conf->global->ASKPRICESUPPLIER_STATUS_NOTSIGNEDSHORT_LABEL) ? $conf->global->ASKPRICESUPPLIER_STATUS_NOTSIGNEDSHORT_LABEL : $langs->trans("AskpricesupplierStatusNotSignedShort")); + $this->labelstatut_short[4]=(! empty($conf->global->ASKPRICESUPPLIER_STATUS_BILLEDSHORT_LABEL) ? $conf->global->ASKPRICESUPPLIER_STATUS_BILLEDSHORT_LABEL : $langs->trans("AskpricesupplierStatusBilledShort")); } @@ -199,7 +199,7 @@ class Propal extends CommonObject $price = $prod->price; } - $line = new PropaleLigne($this->db); + $line = new AskPriceSupplierLigne($this->db); $line->fk_product=$idproduct; $line->desc=$productdesc; @@ -239,8 +239,8 @@ class Propal extends CommonObject return -5; } - $propalligne=new PropaleLigne($this->db); - $propalligne->fk_propal=$this->id; + $propalligne=new AskPriceSupplierLigne($this->db); + $propalligne->fk_askpricesupplier=$this->id; $propalligne->fk_remise_except=$remise->id; $propalligne->desc=$remise->description; // Description ligne $propalligne->tva_tx=$remise->tva_tx; @@ -324,7 +324,7 @@ class Propal extends CommonObject { global $mysoc; - dol_syslog(get_class($this)."::addline propalid=$this->id, desc=$desc, pu_ht=$pu_ht, qty=$qty, txtva=$txtva, fk_product=$fk_product, remise_except=$remise_percent, price_base_type=$price_base_type, pu_ttc=$pu_ttc, info_bits=$info_bits, type=$type"); + dol_syslog(get_class($this)."::addline askpricesupplierid=$this->id, desc=$desc, pu_ht=$pu_ht, qty=$qty, txtva=$txtva, fk_product=$fk_product, remise_except=$remise_percent, price_base_type=$price_base_type, pu_ttc=$pu_ttc, info_bits=$info_bits, type=$type"); include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php'; // Clean parameters @@ -391,9 +391,9 @@ class Propal extends CommonObject } // Insert line - $this->line=new PropaleLigne($this->db); + $this->line=new AskPriceSupplierLigne($this->db); - $this->line->fk_propal=$this->id; + $this->line->fk_askpricesupplier=$this->id; $this->line->label=$label; $this->line->desc=$desc; $this->line->qty=$qty; @@ -543,10 +543,10 @@ class Propal extends CommonObject } // Update line - $this->line=new PropaleLigne($this->db); + $this->line=new AskPriceSupplierLigne($this->db); // Stock previous line records - $staticline=new PropaleLigne($this->db); + $staticline=new AskPriceSupplierLigne($this->db); $staticline->fetch($rowid); $this->line->oldline = $staticline; @@ -610,7 +610,7 @@ class Propal extends CommonObject $this->update_price(1); - $this->fk_propal = $this->id; + $this->fk_askpricesupplier = $this->id; $this->rowid = $rowid; $this->db->commit(); @@ -625,7 +625,7 @@ class Propal extends CommonObject } else { - dol_syslog(get_class($this)."::updateline Erreur -2 Propal en mode incompatible pour cette action"); + dol_syslog(get_class($this)."::updateline Erreur -2 Askpricesupplier en mode incompatible pour cette action"); return -2; } } @@ -641,7 +641,7 @@ class Propal extends CommonObject { if ($this->statut == 0) { - $line=new PropaleLigne($this->db); + $line=new AskPriceSupplierLigne($this->db); // For triggers $line->fetch($lineid); @@ -720,7 +720,7 @@ class Propal extends CommonObject $this->db->begin(); // Insert into database - $sql = "INSERT INTO ".MAIN_DB_PREFIX."propal ("; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."askpricesupplier ("; $sql.= "fk_soc"; $sql.= ", price"; $sql.= ", remise"; @@ -779,12 +779,12 @@ class Propal extends CommonObject $resql=$this->db->query($sql); if ($resql) { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."propal"); + $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."askpricesupplier"); if ($this->id) { $this->ref='(PROV'.$this->id.')'; - $sql = 'UPDATE '.MAIN_DB_PREFIX."propal SET ref='".$this->ref."' WHERE rowid=".$this->id; + $sql = 'UPDATE '.MAIN_DB_PREFIX."askpricesupplier SET ref='".$this->ref."' WHERE rowid=".$this->id; dol_syslog(get_class($this)."::create", LOG_DEBUG); $resql=$this->db->query($sql); @@ -853,7 +853,7 @@ class Propal extends CommonObject // Set delivery address if (! $error && $this->fk_delivery_address) { - $sql = "UPDATE ".MAIN_DB_PREFIX."propal"; + $sql = "UPDATE ".MAIN_DB_PREFIX."askpricesupplier"; $sql.= " SET fk_delivery_address = ".$this->fk_delivery_address; $sql.= " WHERE ref = '".$this->ref."'"; $sql.= " AND entity = ".$conf->entity; @@ -890,7 +890,7 @@ class Propal extends CommonObject if (! $notrigger) { // Call trigger - $result=$this->call_trigger('PROPAL_CREATE',$user); + $result=$this->call_trigger('ASKPRICESUPPLIER_CREATE',$user); if ($result < 0) { $error++; } // End call triggers } @@ -992,7 +992,7 @@ class Propal extends CommonObject $this->id=0; $this->statut=0; - if (empty($conf->global->PROPALE_ADDON) || ! is_readable(DOL_DOCUMENT_ROOT ."/core/modules/propale/".$conf->global->PROPALE_ADDON.".php")) + if (empty($conf->global->ASKPRICESUPPLIER_ADDON) || ! is_readable(DOL_DOCUMENT_ROOT ."/core/modules/askpricesupplier/".$conf->global->ASKPRICESUPPLIER_ADDON.".php")) { $this->error='ErrorSetupNotComplete'; return -1; @@ -1007,10 +1007,10 @@ class Propal extends CommonObject if (empty($conf->global->MAIN_KEEP_REF_CUSTOMER_ON_CLONING)) $this->ref_client = ''; // Set ref - require_once DOL_DOCUMENT_ROOT ."/core/modules/propale/".$conf->global->PROPALE_ADDON.'.php'; - $obj = $conf->global->PROPALE_ADDON; - $modPropale = new $obj; - $this->ref = $modPropale->getNextValue($objsoc,$this); + require_once DOL_DOCUMENT_ROOT ."/core/modules/askpricesupplier/".$conf->global->ASKPRICESUPPLIER_ADDON.'.php'; + $obj = $conf->global->ASKPRICESUPPLIER_ADDON; + $modAskPriceSupplier = new $obj; + $this->ref = $modAskPriceSupplier->getNextValue($objsoc,$this); // Create clone $result=$this->create($user); @@ -1041,7 +1041,7 @@ class Propal extends CommonObject } // Call trigger - $result=$this->call_trigger('PROPAL_CLONE',$user); + $result=$this->call_trigger('ASKPRICESUPPLIER_CLONE',$user); if ($result < 0) { $error++; } // End call triggers } @@ -1184,13 +1184,13 @@ class Propal extends CommonObject /* * Lignes propales liees a un produit ou non */ - $sql = "SELECT d.rowid, d.fk_propal, d.fk_parent_line, d.label as custom_label, d.description, d.price, d.tva_tx, d.localtax1_tx, d.localtax2_tx, d.qty, d.fk_remise_except, d.remise_percent, d.subprice, d.fk_product,"; + $sql = "SELECT d.rowid, d.fk_askpricesupplier, d.fk_parent_line, d.label as custom_label, d.description, d.price, d.tva_tx, d.localtax1_tx, d.localtax2_tx, d.qty, d.fk_remise_except, d.remise_percent, d.subprice, d.fk_product,"; $sql.= " d.info_bits, d.total_ht, d.total_tva, d.total_localtax1, d.total_localtax2, d.total_ttc, d.fk_product_fournisseur_price as fk_fournprice, d.buy_price_ht as pa_ht, d.special_code, d.rang, d.product_type,"; $sql.= ' p.ref as product_ref, p.description as product_desc, p.fk_product_type, p.label as product_label,'; $sql.= ' d.date_start, d.date_end'; - $sql.= " FROM ".MAIN_DB_PREFIX."propaldet as d"; + $sql.= " FROM ".MAIN_DB_PREFIX."askpricesupplierdet as d"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON d.fk_product = p.rowid"; - $sql.= " WHERE d.fk_propal = ".$this->id; + $sql.= " WHERE d.fk_askpricesupplier = ".$this->id; $sql.= " ORDER by d.rang"; $result = $this->db->query($sql); @@ -1203,10 +1203,10 @@ class Propal extends CommonObject { $objp = $this->db->fetch_object($result); - $line = new PropaleLigne($this->db); + $line = new AskPriceSupplierLigne($this->db); $line->rowid = $objp->rowid; - $line->fk_propal = $objp->fk_propal; + $line->fk_askpricesupplier = $objp->fk_askpricesupplier; $line->fk_parent_line = $objp->fk_parent_line; $line->product_type = $objp->product_type; $line->label = $objp->custom_label; @@ -1334,8 +1334,8 @@ class Propal extends CommonObject $error=0; $now=dol_now(); - if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->propal->creer)) - || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->propal->propal_advance->validate))) + if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->askpricesupplier->creer)) + || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->askpricesupplier->propal_advance->validate))) { $this->db->begin(); @@ -1354,7 +1354,7 @@ class Propal extends CommonObject } $this->newref = $num; - $sql = "UPDATE ".MAIN_DB_PREFIX."propal"; + $sql = "UPDATE ".MAIN_DB_PREFIX."askpricesupplier"; $sql.= " SET ref = '".$num."',"; $sql.= " fk_statut = 1, date_valid='".$this->db->idate($now)."', fk_user_valid=".$user->id; $sql.= " WHERE rowid = ".$this->id." AND fk_statut = 0"; @@ -1371,7 +1371,7 @@ class Propal extends CommonObject if (! $error && ! $notrigger) { // Call trigger - $result=$this->call_trigger('PROPAL_VALIDATE',$user); + $result=$this->call_trigger('ASKPRICESUPPLIER_VALIDATE',$user); if ($result < 0) { $error++; } // End call triggers } @@ -1387,8 +1387,8 @@ class Propal extends CommonObject // to not lose the linked files $oldref = dol_sanitizeFileName($this->ref); $newref = dol_sanitizeFileName($num); - $dirsource = $conf->propal->dir_output.'/'.$oldref; - $dirdest = $conf->propal->dir_output.'/'.$newref; + $dirsource = $conf->askpricesupplier->dir_output.'/'.$oldref; + $dirdest = $conf->askpricesupplier->dir_output.'/'.$newref; if (file_exists($dirsource)) { @@ -1397,7 +1397,7 @@ class Propal extends CommonObject { dol_syslog("Rename ok"); // Rename docs starting with $oldref with $newref - $listoffiles=dol_dir_list($conf->propal->dir_output.'/'.$newref, 'files', 1, '^'.preg_quote($oldref,'/')); + $listoffiles=dol_dir_list($conf->askpricesupplier->dir_output.'/'.$newref, 'files', 1, '^'.preg_quote($oldref,'/')); foreach($listoffiles as $fileentry) { $dirsource=$fileentry['name']; @@ -1444,9 +1444,9 @@ class Propal extends CommonObject return -1; } - if (! empty($user->rights->propal->creer)) + if (! empty($user->rights->askpricesupplier->creer)) { - $sql = "UPDATE ".MAIN_DB_PREFIX."propal SET datep = '".$this->db->idate($date)."'"; + $sql = "UPDATE ".MAIN_DB_PREFIX."askpricesupplier SET datep = '".$this->db->idate($date)."'"; $sql.= " WHERE rowid = ".$this->id." AND fk_statut = 0"; dol_syslog(get_class($this)."::set_date", LOG_DEBUG); @@ -1475,7 +1475,7 @@ class Propal extends CommonObject { if (! empty($user->rights->propal->creer)) { - $sql = "UPDATE ".MAIN_DB_PREFIX."propal SET fin_validite = ".($date_fin_validite!=''?"'".$this->db->idate($date_fin_validite)."'":'null'); + $sql = "UPDATE ".MAIN_DB_PREFIX."askpricesupplier SET fin_validite = ".($date_fin_validite!=''?"'".$this->db->idate($date_fin_validite)."'":'null'); $sql.= " WHERE rowid = ".$this->id." AND fk_statut = 0"; if ($this->db->query($sql) ) { @@ -1501,7 +1501,7 @@ class Propal extends CommonObject { if (! empty($user->rights->propal->creer)) { - $sql = "UPDATE ".MAIN_DB_PREFIX."propal "; + $sql = "UPDATE ".MAIN_DB_PREFIX."askpricesupplier "; $sql.= " SET date_livraison = ".($date_livraison!=''?"'".$this->db->idate($date_livraison)."'":'null'); $sql.= " WHERE rowid = ".$this->id; @@ -1530,7 +1530,7 @@ class Propal extends CommonObject { if (! empty($user->rights->propal->creer)) { - $sql = "UPDATE ".MAIN_DB_PREFIX."propal "; + $sql = "UPDATE ".MAIN_DB_PREFIX."askpricesupplier "; $sql.= " SET fk_availability = '".$id."'"; $sql.= " WHERE rowid = ".$this->id; @@ -1559,7 +1559,7 @@ class Propal extends CommonObject { if (! empty($user->rights->propal->creer)) { - $sql = "UPDATE ".MAIN_DB_PREFIX."propal "; + $sql = "UPDATE ".MAIN_DB_PREFIX."askpricesupplier "; $sql.= " SET fk_input_reason = '".$id."'"; $sql.= " WHERE rowid = ".$this->id; @@ -1586,11 +1586,11 @@ class Propal extends CommonObject */ function set_ref_client($user, $ref_client) { - if (! empty($user->rights->propal->creer)) + if (! empty($user->rights->askpricesupplier->creer)) { - dol_syslog('Propale::set_ref_client this->id='.$this->id.', ref_client='.$ref_client); + dol_syslog('AskPriceSupplier::set_ref_client this->id='.$this->id.', ref_client='.$ref_client); - $sql = 'UPDATE '.MAIN_DB_PREFIX.'propal SET ref_client = '.(empty($ref_client) ? 'NULL' : '\''.$this->db->escape($ref_client).'\''); + $sql = 'UPDATE '.MAIN_DB_PREFIX.'askpricesupplier SET ref_client = '.(empty($ref_client) ? 'NULL' : '\''.$this->db->escape($ref_client).'\''); $sql.= ' WHERE rowid = '.$this->id; if ($this->db->query($sql) ) { @@ -1600,7 +1600,7 @@ class Propal extends CommonObject else { $this->error=$this->db->error(); - dol_syslog('Propale::set_ref_client Erreur '.$this->error.' - '.$sql); + dol_syslog('AskPriceSupplier::set_ref_client Erreur '.$this->error.' - '.$sql); return -2; } } @@ -1625,7 +1625,7 @@ class Propal extends CommonObject { $remise = price2num($remise); - $sql = "UPDATE ".MAIN_DB_PREFIX."propal SET remise_percent = ".$remise; + $sql = "UPDATE ".MAIN_DB_PREFIX."askpricesupplier SET remise_percent = ".$remise; $sql.= " WHERE rowid = ".$this->id." AND fk_statut = 0"; if ($this->db->query($sql) ) @@ -1658,7 +1658,7 @@ class Propal extends CommonObject { $remise = price2num($remise); - $sql = "UPDATE ".MAIN_DB_PREFIX."propal "; + $sql = "UPDATE ".MAIN_DB_PREFIX."askpricesupplier "; $sql.= " SET remise_absolue = ".$remise; $sql.= " WHERE rowid = ".$this->id." AND fk_statut = 0"; @@ -1694,7 +1694,7 @@ class Propal extends CommonObject $this->statut = $statut; $error=0; - $sql = "UPDATE ".MAIN_DB_PREFIX."propal"; + $sql = "UPDATE ".MAIN_DB_PREFIX."askpricesupplier"; $sql.= " SET fk_statut = ".$this->statut.","; if (! empty($note)) $sql.= " note_private = '".$this->db->escape($note)."',"; $sql.= " date_cloture=NULL, fk_user_cloture=NULL"; @@ -1712,7 +1712,7 @@ class Propal extends CommonObject if (! $notrigger) { // Call trigger - $result=$this->call_trigger('PROPAL_REOPEN',$user); + $result=$this->call_trigger('ASKPRICESUPPLIER_REOPEN',$user); if ($result < 0) { $error++; } // End call triggers } @@ -1758,20 +1758,20 @@ class Propal extends CommonObject $this->db->begin(); - $sql = "UPDATE ".MAIN_DB_PREFIX."propal"; + $sql = "UPDATE ".MAIN_DB_PREFIX."askpricesupplier"; $sql.= " SET fk_statut = ".$statut.", note_private = '".$this->db->escape($note)."', date_cloture='".$this->db->idate($now)."', fk_user_cloture=".$user->id; $sql.= " WHERE rowid = ".$this->id; $resql=$this->db->query($sql); if ($resql) { - $modelpdf=$conf->global->PROPALE_ADDON_PDF_ODT_CLOSED?$conf->global->PROPALE_ADDON_PDF_ODT_CLOSED:$this->modelpdf; - $trigger_name='PROPAL_CLOSE_REFUSED'; + $modelpdf=$conf->global->ASKPRICESUPPLIER_ADDON_PDF_ODT_CLOSED?$conf->global->ASKPRICESUPPLIER_ADDON_PDF_ODT_CLOSED:$this->modelpdf; + $trigger_name='ASKPRICESUPPLIER_CLOSE_REFUSED'; if ($statut == 2) { - $trigger_name='PROPAL_CLOSE_SIGNED'; - $modelpdf=$conf->global->PROPALE_ADDON_PDF_ODT_TOBILL?$conf->global->PROPALE_ADDON_PDF_ODT_TOBILL:$this->modelpdf; + $trigger_name='ASKPRICESUPPLIER_CLOSE_SIGNED'; + $modelpdf=$conf->global->ASKPRICESUPPLIER_ADDON_PDF_ODT_TOBILL?$conf->global->ASKPRICESUPPLIER_ADDON_PDF_ODT_TOBILL:$this->modelpdf; // The connected company is classified as a client $soc=new Societe($this->db); @@ -1787,7 +1787,7 @@ class Propal extends CommonObject } if ($statut == 4) { - $trigger_name='PROPAL_CLASSIFY_BILLED'; + $trigger_name='ASKPRICESUPPLIER_CLASSIFY_BILLED'; } if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) @@ -1835,7 +1835,7 @@ class Propal extends CommonObject */ function classifyBilled() { - $sql = 'UPDATE '.MAIN_DB_PREFIX.'propal SET fk_statut = 4'; + $sql = 'UPDATE '.MAIN_DB_PREFIX.'askpricesupplier SET fk_statut = 4'; $sql .= ' WHERE rowid = '.$this->id.' AND fk_statut > 0 ;'; if ($this->db->query($sql) ) { @@ -1869,7 +1869,7 @@ class Propal extends CommonObject { global $conf,$langs; - $sql = "UPDATE ".MAIN_DB_PREFIX."propal SET fk_statut = 0"; + $sql = "UPDATE ".MAIN_DB_PREFIX."askpricesupplier SET fk_statut = 0"; $sql.= " WHERE rowid = ".$this->id; if ($this->db->query($sql)) @@ -1908,7 +1908,7 @@ class Propal extends CommonObject $sql.= " p.rowid as propalid, p.fk_statut, p.total_ht, p.ref, p.remise, "; $sql.= " p.datep as dp, p.fin_validite as datelimite"; if (! $user->rights->societe->client->voir && ! $socid) $sql .= ", sc.fk_soc, sc.fk_user"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."propal as p, ".MAIN_DB_PREFIX."c_propalst as c"; + $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."askpricesupplier as p, ".MAIN_DB_PREFIX."c_propalst as c"; if (! $user->rights->societe->client->voir && ! $socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE p.entity = ".$conf->entity; $sql.= " AND p.fk_soc = s.rowid"; @@ -1944,7 +1944,7 @@ class Propal extends CommonObject } else { - $ga[$i]['id'] = $obj->propalid; + $ga[$i]['id'] = $obj->askpricesupplierid; $ga[$i]['ref'] = $obj->ref; $ga[$i]['name'] = $obj->name; } @@ -2075,17 +2075,17 @@ class Propal extends CommonObject if (! $notrigger) { // Call trigger - $result=$this->call_trigger('PROPAL_DELETE',$user); + $result=$this->call_trigger('ASKPRICESUPPLIER_DELETE',$user); if ($result < 0) { $error++; } // End call triggers } if (! $error) { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."propaldet WHERE fk_propal = ".$this->id; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."askpricesupplierdet WHERE fk_askpricesupplier = ".$this->id; if ($this->db->query($sql)) { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."propal WHERE rowid = ".$this->id; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."askpricesupplier WHERE rowid = ".$this->id; if ($this->db->query($sql)) { // Delete linked object @@ -2187,10 +2187,10 @@ class Propal extends CommonObject */ function availability($availability_id) { - dol_syslog('Propale::availability('.$availability_id.')'); + dol_syslog('AskPriceSupplier::availability('.$availability_id.')'); if ($this->statut >= 0) { - $sql = 'UPDATE '.MAIN_DB_PREFIX.'propal'; + $sql = 'UPDATE '.MAIN_DB_PREFIX.'askpricesupplier'; $sql .= ' SET fk_availability = '.$availability_id; $sql .= ' WHERE rowid='.$this->id; if ( $this->db->query($sql) ) @@ -2200,14 +2200,14 @@ class Propal extends CommonObject } else { - dol_syslog('Propale::availability Erreur '.$sql.' - '.$this->db->error()); + dol_syslog('AskPriceSupplier::availability Erreur '.$sql.' - '.$this->db->error()); $this->error=$this->db->error(); return -1; } } else { - dol_syslog('Propale::availability, etat propale incompatible'); + dol_syslog('AskPriceSupplier::availability, etat propale incompatible'); $this->error='Etat propale incompatible '.$this->statut; return -2; } @@ -2221,10 +2221,10 @@ class Propal extends CommonObject */ function demand_reason($demand_reason_id) { - dol_syslog('Propale::demand_reason('.$demand_reason_id.')'); + dol_syslog('AskPriceSupplier::demand_reason('.$demand_reason_id.')'); if ($this->statut >= 0) { - $sql = 'UPDATE '.MAIN_DB_PREFIX.'propal'; + $sql = 'UPDATE '.MAIN_DB_PREFIX.'askpricesupplier'; $sql .= ' SET fk_input_reason = '.$demand_reason_id; $sql .= ' WHERE rowid='.$this->id; if ( $this->db->query($sql) ) @@ -2234,14 +2234,14 @@ class Propal extends CommonObject } else { - dol_syslog('Propale::demand_reason Erreur '.$sql.' - '.$this->db->error()); + dol_syslog('AskPriceSupplier::demand_reason Erreur '.$sql.' - '.$this->db->error()); $this->error=$this->db->error(); return -1; } } else { - dol_syslog('Propale::demand_reason, etat propale incompatible'); + dol_syslog('AskPriceSupplier::demand_reason, etat propale incompatible'); $this->error='Etat propale incompatible '.$this->statut; return -2; } @@ -2259,7 +2259,7 @@ class Propal extends CommonObject $sql = "SELECT c.rowid, "; $sql.= " c.datec, c.date_valid as datev, c.date_cloture as dateo,"; $sql.= " c.fk_user_author, c.fk_user_valid, c.fk_user_cloture"; - $sql.= " FROM ".MAIN_DB_PREFIX."propal as c"; + $sql.= " FROM ".MAIN_DB_PREFIX."askpricesupplier as c"; $sql.= " WHERE c.rowid = ".$id; $result = $this->db->query($sql); @@ -2327,7 +2327,7 @@ class Propal extends CommonObject function LibStatut($statut,$mode=1) { global $langs; - $langs->load("propal"); + $langs->load("askpricesupplier"); if ($statut==0) $statuttrans='statut0'; if ($statut==1) $statuttrans='statut1'; @@ -2361,7 +2361,7 @@ class Propal extends CommonObject $clause = " WHERE"; $sql = "SELECT p.rowid, p.ref, p.datec as datec, p.fin_validite as datefin"; - $sql.= " FROM ".MAIN_DB_PREFIX."propal as p"; + $sql.= " FROM ".MAIN_DB_PREFIX."askpricesupplier as p"; if (!$user->rights->societe->client->voir && !$user->societe_id) { $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON p.fk_soc = sc.fk_soc"; @@ -2376,8 +2376,8 @@ class Propal extends CommonObject $resql=$this->db->query($sql); if ($resql) { - if ($mode == 'opened') $delay_warning=$conf->propal->cloture->warning_delay; - if ($mode == 'signed') $delay_warning=$conf->propal->facturation->warning_delay; + if ($mode == 'opened') $delay_warning=$conf->askpricesupplier->cloture->warning_delay; + if ($mode == 'signed') $delay_warning=$conf->askpricesupplier->facturation->warning_delay; // This assignment in condition is not a bug. It allows walking the results. while ($obj=$this->db->fetch_object($resql)) @@ -2456,7 +2456,7 @@ class Propal extends CommonObject $xnbp = 0; while ($xnbp < $nbp) { - $line=new PropaleLigne($this->db); + $line=new AskPriceSupplierLigne($this->db); $line->desc=$langs->trans("Description")." ".$xnbp; $line->qty=1; $line->subprice=100; @@ -2505,7 +2505,7 @@ class Propal extends CommonObject $clause = "WHERE"; $sql = "SELECT count(p.rowid) as nb"; - $sql.= " FROM ".MAIN_DB_PREFIX."propal as p"; + $sql.= " FROM ".MAIN_DB_PREFIX."askpricesupplier as p"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON p.fk_soc = s.rowid"; if (!$user->rights->societe->client->voir && !$user->societe_id) { @@ -2545,20 +2545,20 @@ class Propal extends CommonObject function getNextNumRef($soc) { global $conf, $db, $langs; - $langs->load("propal"); + $langs->load("askpricesupplier"); - if (! empty($conf->global->PROPALE_ADDON)) + if (! empty($conf->global->ASKPRICESUPPLIER_ADDON)) { $mybool=false; - $file = $conf->global->PROPALE_ADDON.".php"; - $classname = $conf->global->PROPALE_ADDON; + $file = $conf->global->ASKPRICESUPPLIER_ADDON.".php"; + $classname = $conf->global->ASKPRICESUPPLIER_ADDON; // Include file with class $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']); foreach ($dirmodels as $reldir) { - $dir = dol_buildpath($reldir."core/modules/propale/"); + $dir = dol_buildpath($reldir."core/modules/askpricesupplier/"); // Load file with numbering class (if found) $mybool|=@include_once $dir.$file; @@ -2606,25 +2606,25 @@ class Propal extends CommonObject global $langs; $result=''; - $label=$langs->trans("ShowPropal").': '.$this->ref; + $label=$langs->trans("ShowAskpricesupplier").': '.$this->ref; if (! empty($this->ref_client)) $label.= '
'.$langs->trans('RefCustomer').': '.$this->ref_client; $linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; if ($option == '') { - $lien = 'load("askpricesupplier"); // Positionne le modele sur le nom du modele a utiliser if (! dol_strlen($modele)) { - if (! empty($conf->global->PROPALE_ADDON_PDF)) + if (! empty($conf->global->ASKPRICESUPPLIER_ADDON_PDF)) { - $modele = $conf->global->PROPALE_ADDON_PDF; + $modele = $conf->global->ASKPRICESUPPLIER_ADDON_PDF; } else { @@ -2737,7 +2737,7 @@ class Propal extends CommonObject } } - $modelpath = "core/modules/propale/doc/"; + $modelpath = "core/modules/askpricesupplier/doc/"; return $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref); } @@ -2747,22 +2747,22 @@ class Propal extends CommonObject /** - * \class PropaleLigne - * \brief Class to manage commercial proposal lines + * \class AskPriceSupplierLigne + * \brief Class to manage price ask supplier lines */ -class PropaleLigne extends CommonObject +class AskPriceSupplierLigne extends CommonObject { var $db; var $error; - public $element='propaldet'; - public $table_element='propaldet'; + public $element='askpricesupplierdet'; + public $table_element='askpricesupplierdet'; var $oldline; // From llx_propaldet var $rowid; - var $fk_propal; + var $fk_askpricesupplier; var $fk_parent_line; var $desc; // Description ligne var $fk_product; // Id produit predefini @@ -2833,13 +2833,13 @@ class PropaleLigne extends CommonObject */ function fetch($rowid) { - $sql = 'SELECT pd.rowid, pd.fk_propal, pd.fk_parent_line, pd.fk_product, pd.label as custom_label, pd.description, pd.price, pd.qty, pd.tva_tx,'; + $sql = 'SELECT pd.rowid, pd.fk_askpricesupplier, pd.fk_parent_line, pd.fk_product, pd.label as custom_label, pd.description, pd.price, pd.qty, pd.tva_tx,'; $sql.= ' pd.remise, pd.remise_percent, pd.fk_remise_except, pd.subprice,'; $sql.= ' pd.info_bits, pd.total_ht, pd.total_tva, pd.total_ttc, pd.fk_product_fournisseur_price as fk_fournprice, pd.buy_price_ht as pa_ht, pd.special_code, pd.rang,'; $sql.= ' pd.localtax1_tx, pd.localtax2_tx, pd.total_localtax1, pd.total_localtax2,'; $sql.= ' p.ref as product_ref, p.label as product_label, p.description as product_desc,'; $sql.= ' pd.date_start, pd.date_end, pd.product_type'; - $sql.= ' FROM '.MAIN_DB_PREFIX.'propaldet as pd'; + $sql.= ' FROM '.MAIN_DB_PREFIX.'askpricesupplierdet as pd'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON pd.fk_product = p.rowid'; $sql.= ' WHERE pd.rowid = '.$rowid; @@ -2849,7 +2849,7 @@ class PropaleLigne extends CommonObject $objp = $this->db->fetch_object($result); $this->rowid = $objp->rowid; - $this->fk_propal = $objp->fk_propal; + $this->fk_askpricesupplier = $objp->fk_askpricesupplier; $this->fk_parent_line = $objp->fk_parent_line; $this->label = $objp->custom_label; $this->desc = $objp->description; @@ -2939,14 +2939,14 @@ class PropaleLigne extends CommonObject $this->db->begin(); // Insert line into database - $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'propaldet'; - $sql.= ' (fk_propal, fk_parent_line, label, description, fk_product, product_type,'; + $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'askpricesupplierdet'; + $sql.= ' (fk_askpricesupplier, fk_parent_line, label, description, fk_product, product_type,'; $sql.= ' fk_remise_except, qty, tva_tx, localtax1_tx, localtax2_tx, localtax1_type, localtax2_type,'; $sql.= ' subprice, remise_percent, '; $sql.= ' info_bits, '; $sql.= ' total_ht, total_tva, total_localtax1, total_localtax2, total_ttc, fk_product_fournisseur_price, buy_price_ht, special_code, rang,'; $sql.= ' date_start, date_end)'; - $sql.= " VALUES (".$this->fk_propal.","; + $sql.= " VALUES (".$this->fk_askpricesupplier.","; $sql.= " ".($this->fk_parent_line>0?"'".$this->fk_parent_line."'":"null").","; $sql.= " ".(! empty($this->label)?"'".$this->db->escape($this->label)."'":"null").","; $sql.= " '".$this->db->escape($this->desc)."',"; @@ -2979,7 +2979,7 @@ class PropaleLigne extends CommonObject $resql=$this->db->query($sql); if ($resql) { - $this->rowid=$this->db->last_insert_id(MAIN_DB_PREFIX.'propaldet'); + $this->rowid=$this->db->last_insert_id(MAIN_DB_PREFIX.'askpricesupplierdet'); if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used { @@ -2994,7 +2994,7 @@ class PropaleLigne extends CommonObject if (! $notrigger) { // Call trigger - $result=$this->call_trigger('LINEPROPAL_INSERT',$user); + $result=$this->call_trigger('LINEASKPRICESUPPLIER_INSERT',$user); if ($result < 0) { $this->db->rollback(); @@ -3026,8 +3026,8 @@ class PropaleLigne extends CommonObject $error=0; $this->db->begin(); - $sql = "DELETE FROM ".MAIN_DB_PREFIX."propaldet WHERE rowid = ".$this->rowid; - dol_syslog("PropaleLigne::delete", LOG_DEBUG); + $sql = "DELETE FROM ".MAIN_DB_PREFIX."askpricesupplierdet WHERE rowid = ".$this->rowid; + dol_syslog("AskPriceSupplierLigne::delete", LOG_DEBUG); if ($this->db->query($sql) ) { @@ -3044,7 +3044,7 @@ class PropaleLigne extends CommonObject } // Call trigger - $result=$this->call_trigger('LINEPROPAL_DELETE',$user); + $result=$this->call_trigger('LINEASKPRICESUPLLIER_DELETE',$user); if ($result < 0) { $this->db->rollback(); @@ -3105,7 +3105,7 @@ class PropaleLigne extends CommonObject $this->db->begin(); // Mise a jour ligne en base - $sql = "UPDATE ".MAIN_DB_PREFIX."propaldet SET"; + $sql = "UPDATE ".MAIN_DB_PREFIX."askpricesupplierdet SET"; $sql.= " description='".$this->db->escape($this->desc)."'"; $sql.= " , label=".(! empty($this->label)?"'".$this->db->escape($this->label)."'":"null"); $sql.= " , product_type=".$this->product_type; @@ -3154,7 +3154,7 @@ class PropaleLigne extends CommonObject if (! $notrigger) { // Call trigger - $result=$this->call_trigger('LINEPROPAL_UPDATE',$user); + $result=$this->call_trigger('LINEASKPRICESUPPLIER_UPDATE',$user); if ($result < 0) { $this->db->rollback(); @@ -3185,13 +3185,13 @@ class PropaleLigne extends CommonObject $this->db->begin(); // Mise a jour ligne en base - $sql = "UPDATE ".MAIN_DB_PREFIX."propaldet SET"; + $sql = "UPDATE ".MAIN_DB_PREFIX."askpricesupplierdet SET"; $sql.= " total_ht=".price2num($this->total_ht,'MT').""; $sql.= ",total_tva=".price2num($this->total_tva,'MT').""; $sql.= ",total_ttc=".price2num($this->total_ttc,'MT').""; $sql.= " WHERE rowid = ".$this->rowid; - dol_syslog("PropaleLigne::update_total", LOG_DEBUG); + dol_syslog("AskPriceSupplierLigne::update_total", LOG_DEBUG); $resql=$this->db->query($sql); if ($resql) diff --git a/htdocs/comm/askpricesupplier/index.php b/htdocs/comm/askpricesupplier/index.php index a0e8a3409ab..dcd3436bd25 100644 --- a/htdocs/comm/askpricesupplier/index.php +++ b/htdocs/comm/askpricesupplier/index.php @@ -25,9 +25,9 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; -require_once DOL_DOCUMENT_ROOT .'/comm/propal/class/propal.class.php'; +require_once DOL_DOCUMENT_ROOT .'/comm/askpricesupplier/class/askpricesupplier.class.php'; -$langs->load("propal"); +$langs->load("askpricesupplier"); $langs->load("companies"); // Security check @@ -37,22 +37,22 @@ if (isset($user->societe_id) && $user->societe_id > 0) $action = ''; $socid = $user->societe_id; } -$result = restrictedArea($user, 'propal'); +$result = restrictedArea($user, 'askpricesupplier'); /* * View */ $now=dol_now(); -$propalstatic=new Propal($db); +$askpricesupplierstatic=new AskPriceSupplier($db); $companystatic=new Societe($db); $form = new Form($db); $formfile = new FormFile($db); $help_url="EN:Module_Commercial_Proposals|FR:Module_Propositions_commerciales|ES:Módulo_Presupuestos"; -llxHeader("",$langs->trans("ProspectionArea"),$help_url); +llxHeader("",$langs->trans("AskPriceSupplierArea"),$help_url); -print_fiche_titre($langs->trans("ProspectionArea")); +print_fiche_titre($langs->trans("AskPriceSupplierArea")); //print ''; //print ''; print ''; - print ''; - print ''; + print ''; + print ''; - print ''; - print ''; + print ''; + print ''; // Amount Local Taxes if ($mysoc->localtax1_assuj=="1" || $object->total_localtax1 != 0) //Localtax1 { print ''; - print ''; - print ''; + print ''; + print ''; } if ($mysoc->localtax2_assuj=="1" || $object->total_localtax2 != 0) //Localtax2 { print ''; - print ''; - print ''; + print ''; + print ''; } - print ''; - print ''; + print ''; + print ''; print "
'; @@ -64,9 +64,9 @@ print '
'; */ $var=false; print ''; -print ''; +print ''; print ''; -print ''; +print ''; print ''; print ''; @@ -80,7 +80,7 @@ print "
'.$langs->trans("SearchPropal").'
'.$langs->trans("SearchRequest").'
'; print $langs->trans("Ref").':
'.$langs->trans("Other").':

\n"; $sql = "SELECT count(p.rowid), p.fk_statut"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; -$sql.= ", ".MAIN_DB_PREFIX."propal as p"; +$sql.= ", ".MAIN_DB_PREFIX."askpricesupplier as p"; if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE p.fk_soc = s.rowid"; $sql.= " AND p.entity = ".$conf->entity; @@ -116,17 +116,17 @@ if ($resql) $db->free($resql); print ''; - print ''."\n"; + print ''."\n"; $var=true; $listofstatus=array(0,1,2,3,4); foreach ($listofstatus as $status) { - $dataseries[]=array('label'=>$propalstatic->LibStatut($status,1),'data'=>(isset($vals[$status])?(int) $vals[$status]:0)); + $dataseries[]=array('label'=>$askpricesupplierstatic->LibStatut($status,1),'data'=>(isset($vals[$status])?(int) $vals[$status]:0)); if (! $conf->use_javascript_ajax) { $var=!$var; print ""; - print ''; + print ''; print ''; print "\n"; } @@ -155,7 +155,7 @@ else if (! empty($conf->propal->enabled)) { $sql = "SELECT c.rowid, c.ref, s.nom as socname, s.rowid as socid, s.canvas, s.client"; - $sql.= " FROM ".MAIN_DB_PREFIX."propal as c"; + $sql.= " FROM ".MAIN_DB_PREFIX."askpricesupplier as c"; $sql.= ", ".MAIN_DB_PREFIX."societe as s"; if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE c.fk_soc = s.rowid"; @@ -169,8 +169,8 @@ if (! empty($conf->propal->enabled)) { print '
'.$langs->trans("Statistics").' - '.$langs->trans("Proposals").'
'.$langs->trans("Statistics").' - '.$langs->trans("CommRequests").'
'.$propalstatic->LibStatut($status,0).''.$askpricesupplierstatic->LibStatut($status,0).''.(isset($vals[$status])?$vals[$status]:0).'
'; print ''; - print ''; - $langs->load("propal"); + print ''; + $langs->load("askpricesupplier"); $num = $db->num_rows($resql); if ($num) { @@ -182,9 +182,9 @@ if (! empty($conf->propal->enabled)) $obj = $db->fetch_object($resql); print ""; - $propalstatic->id=$obj->rowid; - $propalstatic->ref=$obj->ref; - print ''; + $askpricesupplierstatic->id=$obj->rowid; + $askpricesupplierstatic->ref=$obj->ref; + print ''; $companystatic->id=$obj->socid; $companystatic->name=$obj->socname; @@ -213,7 +213,7 @@ $max=5; $sql = "SELECT c.rowid, c.ref, c.fk_statut, s.nom as socname, s.rowid as socid, s.canvas, s.client,"; $sql.= " date_cloture as datec"; -$sql.= " FROM ".MAIN_DB_PREFIX."propal as c"; +$sql.= " FROM ".MAIN_DB_PREFIX."askpricesupplier as c"; $sql.= ", ".MAIN_DB_PREFIX."societe as s"; if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE c.fk_soc = s.rowid"; @@ -229,7 +229,7 @@ if ($resql) { print '
'.$langs->trans("DraftPropals").'
'.$langs->trans("DraftRequests").'
'.$propalstatic->getNomUrl(1).''.$askpricesupplierstatic->getNomUrl(1).'
'; print ''; - print ''; + print ''; $num = $db->num_rows($resql); if ($num) @@ -244,12 +244,12 @@ if ($resql) print ""; print ''; @@ -272,7 +272,7 @@ if ($resql) print ''; print ''; - print ''; + print ''; print ''; $i++; } @@ -285,15 +285,15 @@ else dol_print_error($db); /* * Opened proposals */ -if (! empty($conf->propal->enabled) && $user->rights->propale->lire) +if (! empty($conf->askpricesupplier->enabled) && $user->rights->askpricesupplier->lire) { - $langs->load("propal"); + $langs->load("askpricesupplier"); $now=dol_now(); $sql = "SELECT s.nom as socname, s.rowid as socid, s.canvas, s.client, p.rowid as propalid, p.total as total_ttc, p.total_ht, p.ref, p.fk_statut, p.datep as dp, p.fin_validite as dfv"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; - $sql.= ", ".MAIN_DB_PREFIX."propal as p"; + $sql.= ", ".MAIN_DB_PREFIX."askpricesupplier as p"; if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE p.fk_soc = s.rowid"; $sql.= " AND p.entity = ".$conf->entity; @@ -313,7 +313,7 @@ if (! empty($conf->propal->enabled) && $user->rights->propale->lire) $var=true; print '
'.$langs->trans("LastModifiedProposals",$max).'
'.$langs->trans("LastModifiedRequests",$max).'
'; - $propalstatic->id=$obj->rowid; - $propalstatic->ref=$obj->ref; + $askpricesupplierstatic->id=$obj->rowid; + $askpricesupplierstatic->ref=$obj->ref; print ''; print ''; print '
'; - print $propalstatic->getNomUrl(1); + print $askpricesupplierstatic->getNomUrl(1); print ''; @@ -260,7 +260,7 @@ if ($resql) $filename=dol_sanitizeFileName($obj->ref); $filedir=$conf->propal->dir_output . '/' . dol_sanitizeFileName($obj->ref); $urlsource=$_SERVER['PHP_SELF'].'?id='.$obj->rowid; - print $formfile->getDocumentsLink($propalstatic->element, $filename, $filedir); + print $formfile->getDocumentsLink($askpricesupplierstatic->element, $filename, $filedir); print '
'; print '
'.$companystatic->getNomUrl(1,'customer').''.dol_print_date($db->jdate($obj->datec),'day').''.$propalstatic->LibStatut($obj->fk_statut,5).''.$askpricesupplierstatic->LibStatut($obj->fk_statut,5).'
'; - print ''; + print ''; $nbofloop=min($num, (empty($conf->global->MAIN_MAXLIST_OVERLOAD)?500:$conf->global->MAIN_MAXLIST_OVERLOAD)); while ($i < $nbofloop) @@ -325,21 +325,21 @@ if (! empty($conf->propal->enabled) && $user->rights->propale->lire) // Ref print '"; @@ -353,7 +353,7 @@ if (! empty($conf->propal->enabled) && $user->rights->propale->lire) print ''."\n"; print ''; - print ''."\n"; + print ''."\n"; print ''."\n"; $i++; $total += $obj->total_ttc; @@ -412,12 +412,12 @@ if (! empty($conf->propal->enabled)) print ""; print ''; print ''; - print ''; + print ''; print ''; $i++; @@ -484,12 +484,12 @@ if (! empty($conf->propal->enabled)) print ""; print ''; print ''; - print ''; + print ''; print ''; $i++; diff --git a/htdocs/comm/askpricesupplier/sql/llx_askpricesupplier.sql b/htdocs/comm/askpricesupplier/sql/llx_askpricesupplier.sql new file mode 100644 index 00000000000..93389cd5770 --- /dev/null +++ b/htdocs/comm/askpricesupplier/sql/llx_askpricesupplier.sql @@ -0,0 +1,58 @@ +CREATE TABLE `llx_askpricesupplier` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `ref` varchar(30) NOT NULL, + `entity` int(11) NOT NULL DEFAULT '1', + `ref_ext` varchar(255) DEFAULT NULL, + `ref_int` varchar(255) DEFAULT NULL, + `ref_client` varchar(255) DEFAULT NULL, + `fk_soc` int(11) DEFAULT NULL, + `fk_projet` int(11) DEFAULT NULL, + `tms` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `datec` datetime DEFAULT NULL, + `datep` date DEFAULT NULL, + `fin_validite` datetime DEFAULT NULL, + `date_valid` datetime DEFAULT NULL, + `date_cloture` datetime DEFAULT NULL, + `fk_user_author` int(11) DEFAULT NULL, + `fk_user_modif` int(11) DEFAULT NULL, + `fk_user_valid` int(11) DEFAULT NULL, + `fk_user_cloture` int(11) DEFAULT NULL, + `fk_statut` smallint(6) NOT NULL DEFAULT '0', + `price` double DEFAULT '0', + `remise_percent` double DEFAULT '0', + `remise_absolue` double DEFAULT '0', + `remise` double DEFAULT '0', + `total_ht` double(24,8) DEFAULT '0.00000000', + `tva` double(24,8) DEFAULT '0.00000000', + `localtax1` double(24,8) DEFAULT '0.00000000', + `localtax2` double(24,8) DEFAULT '0.00000000', + `total` double(24,8) DEFAULT '0.00000000', + `fk_account` int(11) DEFAULT NULL, + `fk_currency` varchar(3) DEFAULT NULL, + `fk_cond_reglement` int(11) DEFAULT NULL, + `fk_mode_reglement` int(11) DEFAULT NULL, + `note_private` text, + `note_public` text, + `model_pdf` varchar(255) DEFAULT NULL, + `date_livraison` date DEFAULT NULL, + `fk_shipping_method` int(11) DEFAULT NULL, + `fk_availability` int(11) DEFAULT NULL, + `fk_input_reason` int(11) DEFAULT NULL, + `import_key` varchar(14) DEFAULT NULL, + `extraparams` varchar(255) DEFAULT NULL, + `fk_delivery_address` int(11) DEFAULT NULL, + PRIMARY KEY (`rowid`), + UNIQUE KEY `uk_askpricesupplier_ref` (`ref`,`entity`), + KEY `idx_askpricesupplier_fk_soc` (`fk_soc`), + KEY `idx_askpricesupplier_fk_user_author` (`fk_user_author`), + KEY `idx_askpricesupplier_fk_user_valid` (`fk_user_valid`), + KEY `idx_askpricesupplier_fk_user_cloture` (`fk_user_cloture`), + KEY `idx_askpricesupplier_fk_projet` (`fk_projet`), + KEY `idx_askpricesupplier_fk_account` (`fk_account`), + KEY `idx_askpricesupplier_fk_currency` (`fk_currency`), + CONSTRAINT `fk_askpricesupplier_fk_projet` FOREIGN KEY (`fk_projet`) REFERENCES `llx_projet` (`rowid`), + CONSTRAINT `fk_askpricesupplier_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), + CONSTRAINT `fk_askpricesupplier_fk_user_author` FOREIGN KEY (`fk_user_author`) REFERENCES `llx_user` (`rowid`), + CONSTRAINT `fk_askpricesupplier_fk_user_cloture` FOREIGN KEY (`fk_user_cloture`) REFERENCES `llx_user` (`rowid`), + CONSTRAINT `fk_askpricesupplier_fk_user_valid` FOREIGN KEY (`fk_user_valid`) REFERENCES `llx_user` (`rowid`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 diff --git a/htdocs/comm/askpricesupplier/sql/llx_askpricesupplier_extrafields.sql b/htdocs/comm/askpricesupplier/sql/llx_askpricesupplier_extrafields.sql new file mode 100644 index 00000000000..24071c0c5b8 --- /dev/null +++ b/htdocs/comm/askpricesupplier/sql/llx_askpricesupplier_extrafields.sql @@ -0,0 +1,8 @@ +CREATE TABLE `llx_askpricesupplier_extrafields` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `tms` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `fk_object` int(11) NOT NULL, + `import_key` varchar(14) DEFAULT NULL, + PRIMARY KEY (`rowid`), + KEY `idx_askpricesupplier_extrafields` (`fk_object`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 \ No newline at end of file diff --git a/htdocs/comm/askpricesupplier/sql/llx_askpricesupplierdet.sql b/htdocs/comm/askpricesupplier/sql/llx_askpricesupplierdet.sql new file mode 100644 index 00000000000..86c605f2b2d --- /dev/null +++ b/htdocs/comm/askpricesupplier/sql/llx_askpricesupplierdet.sql @@ -0,0 +1,36 @@ +CREATE TABLE `llx_askpricesupplierdet` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `fk_askpricesupplier` int(11) NOT NULL, + `fk_parent_line` int(11) DEFAULT NULL, + `fk_product` int(11) DEFAULT NULL, + `label` varchar(255) DEFAULT NULL, + `description` text, + `fk_remise_except` int(11) DEFAULT NULL, + `tva_tx` double(6,3) DEFAULT '0.000', + `localtax1_tx` double(6,3) DEFAULT '0.000', + `localtax1_type` varchar(10) DEFAULT NULL, + `localtax2_tx` double(6,3) DEFAULT '0.000', + `localtax2_type` varchar(10) DEFAULT NULL, + `qty` double DEFAULT NULL, + `remise_percent` double DEFAULT '0', + `remise` double DEFAULT '0', + `price` double DEFAULT NULL, + `subprice` double(24,8) DEFAULT '0.00000000', + `total_ht` double(24,8) DEFAULT '0.00000000', + `total_tva` double(24,8) DEFAULT '0.00000000', + `total_localtax1` double(24,8) DEFAULT '0.00000000', + `total_localtax2` double(24,8) DEFAULT '0.00000000', + `total_ttc` double(24,8) DEFAULT '0.00000000', + `product_type` int(11) DEFAULT '0', + `date_start` datetime DEFAULT NULL, + `date_end` datetime DEFAULT NULL, + `info_bits` int(11) DEFAULT '0', + `buy_price_ht` double(24,8) DEFAULT '0.00000000', + `fk_product_fournisseur_price` int(11) DEFAULT NULL, + `special_code` int(11) DEFAULT '0', + `rang` int(11) DEFAULT '0', + PRIMARY KEY (`rowid`), + KEY `idx_askpricesupplierdet_fk_askpricesupplierdet` (`fk_askpricesupplier`), + KEY `idx_askpricesupplierdet_fk_product` (`fk_product`), + CONSTRAINT `fk_askpricesupplierdet_fk_propal` FOREIGN KEY (`fk_askpricesupplier`) REFERENCES `llx_askpricesupplier` (`rowid`) +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 diff --git a/htdocs/comm/askpricesupplier/sql/llx_askpricesupplierdet_extrafields.sql b/htdocs/comm/askpricesupplier/sql/llx_askpricesupplierdet_extrafields.sql new file mode 100644 index 00000000000..dfd7a889560 --- /dev/null +++ b/htdocs/comm/askpricesupplier/sql/llx_askpricesupplierdet_extrafields.sql @@ -0,0 +1,8 @@ +CREATE TABLE `llx_askpricesupplierdet_extrafields` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `tms` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `fk_object` int(11) NOT NULL, + `import_key` varchar(14) DEFAULT NULL, + PRIMARY KEY (`rowid`), + KEY `idx_askpricesupplierdet_extrafields` (`fk_object`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 \ No newline at end of file diff --git a/htdocs/comm/askpricesupplier/tpl/linkedobjectblock.tpl.php b/htdocs/comm/askpricesupplier/tpl/linkedobjectblock.tpl.php index cb920afd5fc..0ae63216086 100644 --- a/htdocs/comm/askpricesupplier/tpl/linkedobjectblock.tpl.php +++ b/htdocs/comm/askpricesupplier/tpl/linkedobjectblock.tpl.php @@ -52,11 +52,11 @@ foreach($linkedObjectBlock as $object) $var=!$var; ?> > + trans("ShowAskPriceSupplier"),"askpricesupplier").' '.$object->ref; ?> @@ -69,7 +69,7 @@ foreach($linkedObjectBlock as $object) diff --git a/htdocs/core/lib/askpricesupplier.lib.php b/htdocs/core/lib/askpricesupplier.lib.php new file mode 100644 index 00000000000..fd227d512b7 --- /dev/null +++ b/htdocs/core/lib/askpricesupplier.lib.php @@ -0,0 +1,148 @@ + + * Copyright (C) 2005-2012 Regis Houssin + * + * 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 . + * or see http://www.gnu.org/ + */ + +/** + * \file htdocs/core/lib/propal.lib.php + * \brief Ensemble de fonctions de base pour le module propal + * \ingroup propal + */ + +/** + * Prepare array with list of tabs + * + * @param object $object Object related to tabs + * @return array Array of tabs to show + */ +function propal_prepare_head($object) +{ + global $langs, $conf, $user; + $langs->load("propal"); + $langs->load("compta"); + + $h = 0; + $head = array(); + + $head[$h][0] = DOL_URL_ROOT.'/comm/propal.php?id='.$object->id; + $head[$h][1] = $langs->trans('ProposalCard'); + $head[$h][2] = 'comm'; + $h++; + + if ((empty($conf->commande->enabled) && ((! empty($conf->expedition_bon->enabled) && $user->rights->expedition->lire) + || (! empty($conf->livraison_bon->enabled) && $user->rights->expedition->livraison->lire)))) + { + $langs->load("sendings"); + $head[$h][0] = DOL_URL_ROOT.'/expedition/propal.php?id='.$object->id; + if ($conf->expedition_bon->enabled) $text=$langs->trans("Shipment"); + if ($conf->livraison_bon->enabled) $text.='/'.$langs->trans("Receivings"); + $head[$h][1] = $text; + $head[$h][2] = 'shipping'; + $h++; + } + if (! empty($conf->global->MAIN_USE_PREVIEW_TABS)) + { + $head[$h][0] = DOL_URL_ROOT.'/comm/propal/apercu.php?id='.$object->id; + $head[$h][1] = $langs->trans("Preview"); + $head[$h][2] = 'preview'; + $h++; + } + + if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) + { + $head[$h][0] = DOL_URL_ROOT.'/comm/propal/contact.php?id='.$object->id; + $head[$h][1] = $langs->trans('ContactsAddresses'); + $head[$h][2] = 'contact'; + $h++; + } + + // Show more tabs from modules + // Entries must be declared in modules descriptor with line + // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab + // $this->tabs = array('entity:-tabname); to remove a tab + complete_head_from_modules($conf,$langs,$object,$head,$h,'propal'); + + if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) + { + $nbNote = 0; + if(!empty($object->note_private)) $nbNote++; + if(!empty($object->note_public)) $nbNote++; + $head[$h][0] = DOL_URL_ROOT.'/comm/propal/note.php?id='.$object->id; + $head[$h][1] = $langs->trans('Notes'); + if ($nbNote > 0) $head[$h][1].= ' '.$nbNote.''; + $head[$h][2] = 'note'; + $h++; + } + + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + $upload_dir = $conf->propal->dir_output . "/" . dol_sanitizeFileName($object->ref); + $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$')); + $head[$h][0] = DOL_URL_ROOT.'/comm/propal/document.php?id='.$object->id; + $head[$h][1] = $langs->trans('Documents'); + if($nbFiles > 0) $head[$h][1].= ' '.$nbFiles.''; + $head[$h][2] = 'document'; + $h++; + + $head[$h][0] = DOL_URL_ROOT.'/comm/propal/info.php?id='.$object->id; + $head[$h][1] = $langs->trans('Info'); + $head[$h][2] = 'info'; + $h++; + + complete_head_from_modules($conf,$langs,$object,$head,$h,'propal','remove'); + + return $head; +} + +/** + * Return array head with list of tabs to view object informations. + * + * @return array head array with tabs + */ +function propal_admin_prepare_head() +{ + global $langs, $conf, $user; + + $h = 0; + $head = array(); + + $head[$h][0] = DOL_URL_ROOT.'/admin/propal.php'; + $head[$h][1] = $langs->trans("Miscellaneous"); + $head[$h][2] = 'general'; + $h++; + + // Show more tabs from modules + // Entries must be declared in modules descriptor with line + // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab + // $this->tabs = array('entity:-tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to remove a tab + complete_head_from_modules($conf,$langs,null,$head,$h,'propal_admin'); + + $head[$h][0] = DOL_URL_ROOT.'/comm/admin/propal_extrafields.php'; + $head[$h][1] = $langs->trans("ExtraFields"); + $head[$h][2] = 'attributes'; + $h++; + + $head[$h][0] = DOL_URL_ROOT.'/comm/admin/propaldet_extrafields.php'; + $head[$h][1] = $langs->trans("ExtraFieldsLines"); + $head[$h][2] = 'attributeslines'; + $h++; + + complete_head_from_modules($conf,$langs,null,$head,$h,'propal_admin','remove'); + + return $head; +} + + diff --git a/htdocs/core/modules/askpricesupplier/doc/doc_generic_proposal_odt.modules.php b/htdocs/core/modules/askpricesupplier/doc/doc_generic_proposal_odt.modules.php new file mode 100644 index 00000000000..8f79094befc --- /dev/null +++ b/htdocs/core/modules/askpricesupplier/doc/doc_generic_proposal_odt.modules.php @@ -0,0 +1,484 @@ + + * Copyright (C) 2012 Juanjo Menent +* +* 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 . +* or see http://www.gnu.org/ +*/ + +/** + * \file htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php + * \ingroup societe + * \brief File of class to build ODT documents for third parties + */ + +require_once DOL_DOCUMENT_ROOT.'/core/modules/propale/modules_propale.php'; +require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/doc.lib.php'; + + +/** + * Class to build documents using ODF templates generator + */ +class doc_generic_proposal_odt extends ModelePDFPropales +{ + var $emetteur; // Objet societe qui emet + + var $phpmin = array(5,2,0); // Minimum version of PHP required by module + var $version = 'dolibarr'; + + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + function __construct($db) + { + global $conf,$langs,$mysoc; + + $langs->load("main"); + $langs->load("companies"); + + $this->db = $db; + $this->name = "ODT templates"; + $this->description = $langs->trans("DocumentModelOdt"); + $this->scandir = 'PROPALE_ADDON_PDF_ODT_PATH'; // Name of constant that is used to save list of directories to scan + + // Dimension page pour format A4 + $this->type = 'odt'; + $this->page_largeur = 0; + $this->page_hauteur = 0; + $this->format = array($this->page_largeur,$this->page_hauteur); + $this->marge_gauche=0; + $this->marge_droite=0; + $this->marge_haute=0; + $this->marge_basse=0; + + $this->option_logo = 1; // Affiche logo + $this->option_tva = 0; // Gere option tva PROPALE_TVAOPTION + $this->option_modereg = 0; // Affiche mode reglement + $this->option_condreg = 0; // Affiche conditions reglement + $this->option_codeproduitservice = 0; // Affiche code produit-service + $this->option_multilang = 1; // Dispo en plusieurs langues + $this->option_escompte = 0; // Affiche si il y a eu escompte + $this->option_credit_note = 0; // Support credit notes + $this->option_freetext = 1; // Support add of a personalised text + $this->option_draft_watermark = 0; // Support add of a watermark on drafts + + // Recupere emetteur + $this->emetteur=$mysoc; + if (! $this->emetteur->country_code) $this->emetteur->country_code=substr($langs->defaultlang,-2); // By default if not defined + } + + + /** + * Return description of a module + * + * @param Translate $langs Lang object to use for output + * @return string Description + */ + function info($langs) + { + global $conf,$langs; + + $langs->load("companies"); + $langs->load("errors"); + + $form = new Form($this->db); + + $texte = $this->description.".
\n"; + $texte.= '
'; + $texte.= ''; + $texte.= ''; + $texte.= ''; + if ($conf->global->MAIN_PROPAL_CHOOSE_ODT_DOCUMENT > 0) + { + $texte.= ''; + $texte.= ''; + $texte.= ''; + } + $texte.= '
'.$langs->trans("ProposalsOpened").' '.$num.'
'.$langs->trans("RequestsOpened").' '.$num.'
'; - $propalstatic->id=$obj->propalid; - $propalstatic->ref=$obj->ref; + $askpricesupplierstatic->id=$obj->propalid; + $askpricesupplierstatic->ref=$obj->ref; print ''; print ''; print ''; print '
'; - print $propalstatic->getNomUrl(1); + print $askpricesupplierstatic->getNomUrl(1); print ''; - if ($db->jdate($obj->dfv) < ($now - $conf->propal->cloture->warning_delay)) print img_warning($langs->trans("Late")); + if ($db->jdate($obj->dfv) < ($now - $conf->askpricesupplier->cloture->warning_delay)) print img_warning($langs->trans("Late")); print ''; $filename=dol_sanitizeFileName($obj->ref); - $filedir=$conf->propal->dir_output . '/' . dol_sanitizeFileName($obj->ref); - $urlsource=$_SERVER['PHP_SELF'].'?id='.$obj->propalid; - print $formfile->getDocumentsLink($propalstatic->element, $filename, $filedir); + $filedir=$conf->askpricesupplier->dir_output . '/' . dol_sanitizeFileName($obj->ref); + $urlsource=$_SERVER['PHP_SELF'].'?id='.$obj->askpricesupplierid; + print $formfile->getDocumentsLink($askpricesupplierstatic->element, $filename, $filedir); print '
'; print "
'; print dol_print_date($db->jdate($obj->dp),'day').''.price($obj->total_ttc).''.$propalstatic->LibStatut($obj->fk_statut,3).''.$askpricesupplierstatic->LibStatut($obj->fk_statut,3).'
'; - $propalstatic->id=$obj->rowid; - $propalstatic->ref=$obj->ref; + $askpricesupplierstatic->id=$obj->rowid; + $askpricesupplierstatic->ref=$obj->ref; print ''; print ''; print '
'; - print $propalstatic->getNomUrl(1); + print $askpricesupplierstatic->getNomUrl(1); print ''; @@ -428,14 +428,14 @@ if (! empty($conf->propal->enabled)) $filename=dol_sanitizeFileName($obj->ref); $filedir=$conf->commande->dir_output . '/' . dol_sanitizeFileName($obj->ref); $urlsource=$_SERVER['PHP_SELF'].'?id='.$obj->rowid; - print $formfile->getDocumentsLink($propalstatic->element, $filename, $filedir); + print $formfile->getDocumentsLink($askpricesupplierstatic->element, $filename, $filedir); print '
'; print '
'.img_object($langs->trans("ShowCompany"),"company").' '.dol_trunc($obj->name,24).''.$propalstatic->LibStatut($obj->fk_statut,$obj->facture,5).''.$askpricesupplierstatic->LibStatut($obj->fk_statut,$obj->facture,5).'
'; - $propalstatic->id=$obj->rowid; - $propalstatic->ref=$obj->ref; + $askpricesupplierstatic->id=$obj->rowid; + $askpricesupplierstatic->ref=$obj->ref; print ''; print ''; print '
'; - print $propalstatic->getNomUrl(1); + print $askpricesupplierstatic->getNomUrl(1); print ''; @@ -500,14 +500,14 @@ if (! empty($conf->propal->enabled)) $filename=dol_sanitizeFileName($obj->ref); $filedir=$conf->commande->dir_output . '/' . dol_sanitizeFileName($obj->ref); $urlsource=$_SERVER['PHP_SELF'].'?id='.$obj->rowid; - print $formfile->getDocumentsLink($propalstatic->element, $filename, $filedir); + print $formfile->getDocumentsLink($askpricesupplierstatic->element, $filename, $filedir); print '
'; print '
'.img_object($langs->trans("ShowCompany"),"company").' '.$obj->name.''.$propalstatic->LibStatut($obj->fk_statut,$obj->facture,5).''.$askpricesupplierstatic->LibStatut($obj->fk_statut,$obj->facture,5).'
- trans("ShowPropal"),"propal").' '.$object->ref; ?> ref_client; ?> date,'day'); ?> rights->propale->lire) { + if ($user->rights->askpricesupplier->lire) { $total = $total + $object->total_ht; echo price($object->total_ht); } ?>
trans('TotalHT'); ?> rights->propale->lire) { + if ($user->rights->askpricesupplier->lire) { echo price($total); } ?>  
'; + + // List of directories area + $texte.= ''; + + $texte.= ''; + $texte.= ''; + + $texte.= '
'; + $texttitle=$langs->trans("ListOfDirectories"); + $listofdir=explode(',',preg_replace('/[\r\n]+/',',',trim($conf->global->PROPALE_ADDON_PDF_ODT_PATH))); + $listoffiles=array(); + foreach($listofdir as $key=>$tmpdir) + { + $tmpdir=trim($tmpdir); + $tmpdir=preg_replace('/DOL_DATA_ROOT/',DOL_DATA_ROOT,$tmpdir); + if (! $tmpdir) { + unset($listofdir[$key]); continue; + } + if (! is_dir($tmpdir)) $texttitle.=img_warning($langs->trans("ErrorDirNotFound",$tmpdir),0); + else + { + $tmpfiles=dol_dir_list($tmpdir,'files',0,'\.(ods|odt)'); + if (count($tmpfiles)) $listoffiles=array_merge($listoffiles,$tmpfiles); + } + } + $texthelp=$langs->trans("ListOfDirectoriesForModelGenODT"); + // Add list of substitution keys + $texthelp.='
'.$langs->trans("FollowingSubstitutionKeysCanBeUsed").'
'; + $texthelp.=$langs->transnoentitiesnoconv("FullListOnOnlineDocumentation"); // This contains an url, we don't modify it + + $texte.= $form->textwithpicto($texttitle,$texthelp,1,'help','',1); + $texte.= '
'; + $texte.= ''; + $texte.= '
'; + $texte.= ''; + $texte.= '
'; + + // Scan directories + if (count($listofdir)) + { + $texte.=$langs->trans("NumberOfModelFilesFound").': '.count($listoffiles).''; + + if ($conf->global->MAIN_PROPAL_CHOOSE_ODT_DOCUMENT > 0) + { + // Model for creation + $liste=ModelePDFPropales::liste_modeles($this->db); + $texte.= ''; + $texte.= ''; + $texte.= ''; + $texte.= '"; + + $texte.= ''; + $texte.= ''; + $texte.= '"; + $texte.= ''; + + $texte.= ''; + $texte.= '"; + $texte.= '
'.$langs->trans("DefaultModelPropalCreate").''; + $texte.= $form->selectarray('value2',$liste,$conf->global->PROPALE_ADDON_PDF_ODT_DEFAULT); + $texte.= "
'.$langs->trans("DefaultModelPropalToBill").''; + $texte.= $form->selectarray('value3',$liste,$conf->global->PROPALE_ADDON_PDF_ODT_TOBILL); + $texte.= "
'.$langs->trans("DefaultModelPropalClosed").''; + $texte.= $form->selectarray('value4',$liste,$conf->global->PROPALE_ADDON_PDF_ODT_CLOSED); + $texte.= "
'; + } + } + + $texte.= '
'; + $texte.= $langs->trans("ExampleOfDirectoriesForModelGen"); + $texte.= '
'; + $texte.= ''; + + return $texte; + } + + /** + * Function to build a document on disk using the generic odt module. + * + * @param Propale $object Object source to build document + * @param Translate $outputlangs Lang output object + * @param string $srctemplatepath Full path of source filename for generator using a template file + * @param int $hidedetails Do not show line details + * @param int $hidedesc Do not show desc + * @param int $hideref Do not show ref + * @return int 1 if OK, <=0 if KO + */ + function write_file($object,$outputlangs,$srctemplatepath,$hidedetails=0,$hidedesc=0,$hideref=0) + { + global $user,$langs,$conf,$mysoc,$hookmanager; + + if (empty($srctemplatepath)) + { + dol_syslog("doc_generic_odt::write_file parameter srctemplatepath empty", LOG_WARNING); + return -1; + } + + // Add odtgeneration hook + if (! is_object($hookmanager)) + { + include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; + $hookmanager=new HookManager($this->db); + } + $hookmanager->initHooks(array('odtgeneration')); + global $action; + + if (! is_object($outputlangs)) $outputlangs=$langs; + $sav_charset_output=$outputlangs->charset_output; + $outputlangs->charset_output='UTF-8'; + + $outputlangs->load("main"); + $outputlangs->load("dict"); + $outputlangs->load("companies"); + $outputlangs->load("bills"); + + if ($conf->propal->dir_output) + { + // If $object is id instead of object + if (! is_object($object)) + { + $id = $object; + $object = new Propale($this->db); + $result=$object->fetch($id); + if ($result < 0) + { + dol_print_error($this->db,$object->error); + return -1; + } + } + + $dir = $conf->propal->dir_output; + $objectref = dol_sanitizeFileName($object->ref); + if (! preg_match('/specimen/i',$objectref)) $dir.= "/" . $objectref; + $file = $dir . "/" . $objectref . ".odt"; + + if (! file_exists($dir)) + { + if (dol_mkdir($dir) < 0) + { + $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir); + return -1; + } + } + + if (file_exists($dir)) + { + //print "srctemplatepath=".$srctemplatepath; // Src filename + $newfile=basename($srctemplatepath); + $newfiletmp=preg_replace('/\.od(t|s)/i','',$newfile); + $newfiletmp=preg_replace('/template_/i','',$newfiletmp); + $newfiletmp=preg_replace('/modele_/i','',$newfiletmp); + + $newfiletmp=$objectref.'_'.$newfiletmp; + + // Get extension (ods or odt) + $newfileformat=substr($newfile, strrpos($newfile, '.')+1); + if ( ! empty($conf->global->MAIN_DOC_USE_TIMING)) + { + $filename=$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.'.$newfileformat; + } + else + { + $filename=$newfiletmp.'.'.$newfileformat; + } + $file=$dir.'/'.$filename; + //print "newdir=".$dir; + //print "newfile=".$newfile; + //print "file=".$file; + //print "conf->propal->dir_temp=".$conf->propal->dir_temp; + + dol_mkdir($conf->propal->dir_temp); + + + // If BILLING contact defined on invoice, we use it + $usecontact=false; + $arrayidcontact=$object->getIdContact('external','BILLING'); + if (count($arrayidcontact) > 0) + { + $usecontact=true; + $result=$object->fetch_contact($arrayidcontact[0]); + } + + // Recipient name + if (! empty($usecontact)) + { + // On peut utiliser le nom de la societe du contact + if (! empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) $socobject = $object->contact; + else $socobject = $object->client; + } + else + { + $socobject=$object->client; + } + + // Make substitution + $substitutionarray=array( + '__FROM_NAME__' => $this->emetteur->name, + '__FROM_EMAIL__' => $this->emetteur->email, + '__TOTAL_TTC__' => $object->total_ttc, + '__TOTAL_HT__' => $object->total_ht, + '__TOTAL_VAT__' => $object->total_vat + ); + complete_substitutions_array($substitutionarray, $langs, $object); + // Call the ODTSubstitution hook + $parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$substitutionarray); + $reshook=$hookmanager->executeHooks('ODTSubstitution',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + + // Line of free text + $newfreetext=''; + $paramfreetext='PROPALE_FREE_TEXT'; + if (! empty($conf->global->$paramfreetext)) + { + $newfreetext=make_substitutions($conf->global->$paramfreetext,$substitutionarray); + } + + // Open and load template + require_once ODTPHP_PATH.'odf.php'; + try { + $odfHandler = new odf( + $srctemplatepath, + array( + 'PATH_TO_TMP' => $conf->propal->dir_temp, + 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'DELIMITER_LEFT' => '{', + 'DELIMITER_RIGHT' => '}' + ) + ); + } + catch(Exception $e) + { + $this->error=$e->getMessage(); + return -1; + } + // After construction $odfHandler->contentXml contains content and + // [!-- BEGIN row.lines --]*[!-- END row.lines --] has been replaced by + // [!-- BEGIN lines --]*[!-- END lines --] + //print html_entity_decode($odfHandler->__toString()); + //print exit; + + + // Make substitutions into odt of freetext + try { + $odfHandler->setVars('free_text', $newfreetext, true, 'UTF-8'); + } + catch(OdfException $e) + { + } + + // Make substitutions into odt + $array_user=$this->get_substitutionarray_user($user,$outputlangs); + $array_soc=$this->get_substitutionarray_mysoc($mysoc,$outputlangs); + $array_thirdparty=$this->get_substitutionarray_thirdparty($socobject,$outputlangs); + $array_objet=$this->get_substitutionarray_object($object,$outputlangs); + $array_other=$this->get_substitutionarray_other($outputlangs); + + $tmparray = array_merge($array_user,$array_soc,$array_thirdparty,$array_objet,$array_other); + complete_substitutions_array($tmparray, $outputlangs, $object); + // Call the ODTSubstitution hook + $parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray); + $reshook=$hookmanager->executeHooks('ODTSubstitution',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + foreach($tmparray as $key=>$value) + { + try { + if (preg_match('/logo$/',$key)) // Image + { + if (file_exists($value)) $odfHandler->setImage($key, $value); + else $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); + } + else // Text + { + $odfHandler->setVars($key, $value, true, 'UTF-8'); + } + } + catch(OdfException $e) + { + } + } + // Replace tags of lines + try + { + $listlines = $odfHandler->setSegment('lines'); + foreach ($object->lines as $line) + { + $tmparray=$this->get_substitutionarray_lines($line,$outputlangs); + complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines"); + // Call the ODTSubstitutionLine hook + $parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray,'line'=>$line); + $reshook=$hookmanager->executeHooks('ODTSubstitutionLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + foreach($tmparray as $key => $val) + { + try + { + $listlines->setVars($key, $val, true, 'UTF-8'); + } + catch(OdfException $e) + { + } + catch(SegmentException $e) + { + } + } + $listlines->merge(); + } + $odfHandler->mergeSegment($listlines); + } + catch(OdfException $e) + { + $this->error=$e->getMessage(); + dol_syslog($this->error, LOG_WARNING); + return -1; + } + + // Replace labels translated + $tmparray=$outputlangs->get_translations_for_substitutions(); + foreach($tmparray as $key=>$value) + { + try { + $odfHandler->setVars($key, $value, true, 'UTF-8'); + } + catch(OdfException $e) + { + } + } + + // Call the beforeODTSave hook + $parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs); + $reshook=$hookmanager->executeHooks('beforeODTSave',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + + // Write new file + if (!empty($conf->global->MAIN_ODT_AS_PDF)) { + try { + $odfHandler->exportAsAttachedPDF($file); + }catch (Exception $e){ + $this->error=$e->getMessage(); + return -1; + } + } + else { + try { + $odfHandler->saveToDisk($file); + }catch (Exception $e){ + $this->error=$e->getMessage(); + return -1; + } + } + + $reshook=$hookmanager->executeHooks('afterODTCreation',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + + $odfHandler=null; // Destroy object + + return 1; // Success + } + else + { + $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir); + return -1; + } + } + + return -1; + } + +} + diff --git a/htdocs/core/modules/askpricesupplier/doc/index.html b/htdocs/core/modules/askpricesupplier/doc/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/core/modules/askpricesupplier/doc/pdf_azur.modules.php b/htdocs/core/modules/askpricesupplier/doc/pdf_azur.modules.php new file mode 100644 index 00000000000..35953b8521f --- /dev/null +++ b/htdocs/core/modules/askpricesupplier/doc/pdf_azur.modules.php @@ -0,0 +1,1385 @@ + + * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2008 Raphael Bertrand + * Copyright (C) 2010-2014 Juanjo Menent + * Copyright (C) 2012 Christophe Battarel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * 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 . + * or see http://www.gnu.org/ + */ + +/** + * \file htdocs/core/modules/propale/doc/pdf_azur.modules.php + * \ingroup propale + * \brief Fichier de la classe permettant de generer les propales au modele Azur + */ +require_once DOL_DOCUMENT_ROOT.'/core/modules/propale/modules_propale.php'; +require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; + + +/** + * Class to generate PDF proposal Azur + */ +class pdf_azur extends ModelePDFPropales +{ + var $db; + var $name; + var $description; + var $type; + + var $phpmin = array(4,3,0); // Minimum version of PHP required by module + var $version = 'dolibarr'; + + var $page_largeur; + var $page_hauteur; + var $format; + var $marge_gauche; + var $marge_droite; + var $marge_haute; + var $marge_basse; + + var $emetteur; // Objet societe qui emet + + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + function __construct($db) + { + global $conf,$langs,$mysoc; + + $langs->load("main"); + $langs->load("bills"); + + $this->db = $db; + $this->name = "azur"; + $this->description = $langs->trans('DocModelAzurDescription'); + + // Dimension page pour format A4 + $this->type = 'pdf'; + $formatarray=pdf_getFormat(); + $this->page_largeur = $formatarray['width']; + $this->page_hauteur = $formatarray['height']; + $this->format = array($this->page_largeur,$this->page_hauteur); + $this->marge_gauche=isset($conf->global->MAIN_PDF_MARGIN_LEFT)?$conf->global->MAIN_PDF_MARGIN_LEFT:10; + $this->marge_droite=isset($conf->global->MAIN_PDF_MARGIN_RIGHT)?$conf->global->MAIN_PDF_MARGIN_RIGHT:10; + $this->marge_haute =isset($conf->global->MAIN_PDF_MARGIN_TOP)?$conf->global->MAIN_PDF_MARGIN_TOP:10; + $this->marge_basse =isset($conf->global->MAIN_PDF_MARGIN_BOTTOM)?$conf->global->MAIN_PDF_MARGIN_BOTTOM:10; + + $this->option_logo = 1; // Affiche logo + $this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION + $this->option_modereg = 1; // Affiche mode reglement + $this->option_condreg = 1; // Affiche conditions reglement + $this->option_codeproduitservice = 1; // Affiche code produit-service + $this->option_multilang = 1; // Dispo en plusieurs langues + $this->option_escompte = 1; // Affiche si il y a eu escompte + $this->option_credit_note = 1; // Support credit notes + $this->option_freetext = 1; // Support add of a personalised text + $this->option_draft_watermark = 1; //Support add of a watermark on drafts + + $this->franchise=!$mysoc->tva_assuj; + + // Get source company + $this->emetteur=$mysoc; + if (empty($this->emetteur->country_code)) $this->emetteur->country_code=substr($langs->defaultlang,-2); // By default, if was not defined + + // Define position of columns + $this->posxdesc=$this->marge_gauche+1; + $this->posxtva=112; + $this->posxup=126; + $this->posxqty=145; + $this->posxdiscount=162; + $this->postotalht=174; + if (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) $this->posxtva=$this->posxup; + $this->posxpicture=$this->posxtva - (empty($conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH)?20:$conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH); // width of images + if ($this->page_largeur < 210) // To work with US executive format + { + $this->posxpicture-=20; + $this->posxtva-=20; + $this->posxup-=20; + $this->posxqty-=20; + $this->posxdiscount-=20; + $this->postotalht-=20; + } + + $this->tva=array(); + $this->localtax1=array(); + $this->localtax2=array(); + $this->atleastoneratenotnull=0; + $this->atleastonediscount=0; + } + + /** + * Function to build pdf onto disk + * + * @param Object $object Object to generate + * @param Translate $outputlangs Lang output object + * @param string $srctemplatepath Full path of source filename for generator using a template file + * @param int $hidedetails Do not show line details + * @param int $hidedesc Do not show desc + * @param int $hideref Do not show ref + * @return int 1=OK, 0=KO + */ + function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hidedesc=0,$hideref=0) + { + global $user,$langs,$conf,$mysoc,$db,$hookmanager; + + if (! is_object($outputlangs)) $outputlangs=$langs; + // For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO + if (! empty($conf->global->MAIN_USE_FPDF)) $outputlangs->charset_output='ISO-8859-1'; + + $outputlangs->load("main"); + $outputlangs->load("dict"); + $outputlangs->load("companies"); + $outputlangs->load("bills"); + $outputlangs->load("propal"); + $outputlangs->load("products"); + + $nblignes = count($object->lines); + + // Loop on each lines to detect if there is at least one image to show + $realpatharray=array(); + if (! empty($conf->global->MAIN_GENERATE_PROPOSALS_WITH_PICTURE)) + { + for ($i = 0 ; $i < $nblignes ; $i++) + { + if (empty($object->lines[$i]->fk_product)) continue; + + $objphoto = new Product($this->db); + $objphoto->fetch($object->lines[$i]->fk_product); + + $pdir = get_exdir($object->lines[$i]->fk_product,2) . $object->lines[$i]->fk_product ."/photos/"; + $dir = $conf->product->dir_output.'/'.$pdir; + + $realpath=''; + foreach ($objphoto->liste_photos($dir,1) as $key => $obj) + { + $filename=$obj['photo']; + //if ($obj['photo_vignette']) $filename='thumbs/'.$obj['photo_vignette']; + $realpath = $dir.$filename; + break; + } + + if ($realpath) $realpatharray[$i]=$realpath; + } + } + if (count($realpatharray) == 0) $this->posxpicture=$this->posxtva; + + if ($conf->propal->dir_output) + { + $object->fetch_thirdparty(); + + // $deja_regle = 0; + + // Definition of $dir and $file + if ($object->specimen) + { + $dir = $conf->propal->dir_output; + $file = $dir . "/SPECIMEN.pdf"; + } + else + { + $objectref = dol_sanitizeFileName($object->ref); + $dir = $conf->propal->dir_output . "/" . $objectref; + $file = $dir . "/" . $objectref . ".pdf"; + } + + if (! file_exists($dir)) + { + if (dol_mkdir($dir) < 0) + { + $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir); + return 0; + } + } + + if (file_exists($dir)) + { + // Add pdfgeneration hook + if (! is_object($hookmanager)) + { + include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; + $hookmanager=new HookManager($this->db); + } + $hookmanager->initHooks(array('pdfgeneration')); + $parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs); + global $action; + $reshook=$hookmanager->executeHooks('beforePDFCreation',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks + + // Create pdf instance + $pdf=pdf_getInstance($this->format); + $default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance + $heightforinfotot = 50; // Height reserved to output the info and total part + $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page + $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + $pdf->SetAutoPageBreak(1,0); + + if (class_exists('TCPDF')) + { + $pdf->setPrintHeader(false); + $pdf->setPrintFooter(false); + } + $pdf->SetFont(pdf_getPDFFont($outputlangs)); + // Set path to the background PDF File + if (empty($conf->global->MAIN_DISABLE_FPDI) && ! empty($conf->global->MAIN_ADD_PDF_BACKGROUND)) + { + $pagecount = $pdf->setSourceFile($conf->mycompany->dir_output.'/'.$conf->global->MAIN_ADD_PDF_BACKGROUND); + $tplidx = $pdf->importPage(1); + } + + $pdf->Open(); + $pagenb=0; + $pdf->SetDrawColor(128,128,128); + + $pdf->SetTitle($outputlangs->convToOutputCharset($object->ref)); + $pdf->SetSubject($outputlangs->transnoentities("CommercialProposal")); + $pdf->SetCreator("Dolibarr ".DOL_VERSION); + $pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs))); + $pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("CommercialProposal")); + if (! empty($conf->global->MAIN_DISABLE_PDF_COMPRESSION)) $pdf->SetCompression(false); + + $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right + + // Positionne $this->atleastonediscount si on a au moins une remise + for ($i = 0 ; $i < $nblignes ; $i++) + { + if ($object->lines[$i]->remise_percent) + { + $this->atleastonediscount++; + } + } + if (empty($this->atleastonediscount)) + { + $this->posxpicture+=($this->postotalht - $this->posxdiscount); + $this->posxtva+=($this->postotalht - $this->posxdiscount); + $this->posxup+=($this->postotalht - $this->posxdiscount); + $this->posxqty+=($this->postotalht - $this->posxdiscount); + $this->posxdiscount+=($this->postotalht - $this->posxdiscount); + //$this->postotalht; + } + + // New page + $pdf->AddPage(); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); + $pagenb++; + $this->_pagehead($pdf, $object, 1, $outputlangs); + $pdf->SetFont('','', $default_font_size - 1); + $pdf->MultiCell(0, 3, ''); // Set interline to 3 + $pdf->SetTextColor(0,0,0); + + $tab_top = 90; + $tab_top_newpage = (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)?42:10); + $tab_height = 130; + $tab_height_newpage = 150; + + // Affiche notes + $notetoshow=empty($object->note_public)?'':$object->note_public; + if (! empty($conf->global->MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE)) + { + // Get first sale rep + if (is_object($object->thirdparty)) + { + $salereparray=$object->thirdparty->getSalesRepresentatives($user); + $salerepobj=new User($this->db); + $salerepobj->fetch($salereparray[0]['id']); + if (! empty($salerepobj->signature)) $notetoshow=dol_concatdesc($notetoshow, $salerepobj->signature); + } + } + if ($notetoshow) + { + $tab_top = 88; + + $pdf->SetFont('','', $default_font_size - 1); + $pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1); + $nexY = $pdf->GetY(); + $height_note=$nexY-$tab_top; + + // Rect prend une longueur en 3eme param + $pdf->SetDrawColor(192,192,192); + $pdf->Rect($this->marge_gauche, $tab_top-1, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $height_note+1); + + $tab_height = $tab_height - $height_note; + $tab_top = $nexY+6; + } + else + { + $height_note=0; + } + + $iniY = $tab_top + 7; + $curY = $tab_top + 7; + $nexY = $tab_top + 7; + + // Loop on each lines + for ($i = 0 ; $i < $nblignes ; $i++) + { + $curY = $nexY; + $pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage + $pdf->SetTextColor(0,0,0); + + // Define size of image if we need it + $imglinesize=array(); + if (! empty($realpatharray[$i])) $imglinesize=pdf_getSizeForImage($realpatharray[$i]); + + $pdf->setTopMargin($tab_top_newpage); + $pdf->setPageOrientation('', 1, $heightforfooter+$heightforfreetext+$heightforinfotot); // The only function to edit the bottom margin of current page to set it. + $pageposbefore=$pdf->getPage(); + + $showpricebeforepagebreak=1; + $posYAfterImage=0; + $posYAfterDescription=0; + + // We start with Photo of product line + if (isset($imglinesize['width']) && isset($imglinesize['height']) && ($curY + $imglinesize['height']) > ($this->page_hauteur-($heightforfooter+$heightforfreetext+$heightforinfotot))) // If photo too high, we moved completely on new page + { + $pdf->AddPage('','',true); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); + $pdf->setPage($pageposbefore+1); + + $curY = $tab_top_newpage; + $showpricebeforepagebreak=0; + } + + if (isset($imglinesize['width']) && isset($imglinesize['height'])) + { + $curX = $this->posxpicture-1; + $pdf->Image($realpatharray[$i], $curX + (($this->posxtva-$this->posxpicture-$imglinesize['width'])/2), $curY, $imglinesize['width'], $imglinesize['height'], '', '', '', 2, 300); // Use 300 dpi + // $pdf->Image does not increase value return by getY, so we save it manually + $posYAfterImage=$curY+$imglinesize['height']; + } + + // Description of product line + $curX = $this->posxdesc-1; + + $pdf->startTransaction(); + pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxpicture-$curX,3,$curX,$curY,$hideref,$hidedesc); + + $pageposafter=$pdf->getPage(); + if ($pageposafter > $pageposbefore) // There is a pagebreak + { + $pdf->rollbackTransaction(true); + $pageposafter=$pageposbefore; + //print $pageposafter.'-'.$pageposbefore;exit; + $pdf->setPageOrientation('', 1, $heightforfooter); // The only function to edit the bottom margin of current page to set it. + pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxpicture-$curX,3,$curX,$curY,$hideref,$hidedesc); + + $pageposafter=$pdf->getPage(); + $posyafter=$pdf->GetY(); + //var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit; + if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text + { + if ($i == ($nblignes-1)) // No more lines, and no space left to show total, so we create a new page + { + $pdf->AddPage('','',true); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); + $pdf->setPage($pageposafter+1); + } + } + else + { + // We found a page break + $showpricebeforepagebreak=0; + } + } + else // No pagebreak + { + $pdf->commitTransaction(); + } + $posYAfterDescription=$pdf->GetY(); + + $nexY = $pdf->GetY(); + $pageposafter=$pdf->getPage(); + + $pdf->setPage($pageposbefore); + $pdf->setTopMargin($this->marge_haute); + $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. + + // We suppose that a too long description or photo were moved completely on next page + if ($pageposafter > $pageposbefore && empty($showpricebeforepagebreak)) { + $pdf->setPage($pageposafter); $curY = $tab_top_newpage; + } + + $pdf->SetFont('','', $default_font_size - 1); // On repositionne la police par defaut + + // VAT Rate + if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) + { + $vat_rate = pdf_getlinevatrate($object, $i, $outputlangs, $hidedetails); + $pdf->SetXY($this->posxtva, $curY); + $pdf->MultiCell($this->posxup-$this->posxtva-0.8, 3, $vat_rate, 0, 'R'); + } + + // Unit price before discount + $up_excl_tax = pdf_getlineupexcltax($object, $i, $outputlangs, $hidedetails); + $pdf->SetXY($this->posxup, $curY); + $pdf->MultiCell($this->posxqty-$this->posxup-0.8, 3, $up_excl_tax, 0, 'R', 0); + + // Quantity + $qty = pdf_getlineqty($object, $i, $outputlangs, $hidedetails); + $pdf->SetXY($this->posxqty, $curY); + $pdf->MultiCell($this->posxdiscount-$this->posxqty-0.8, 3, $qty, 0, 'R'); // Enough for 6 chars + + // Discount on line + if ($object->lines[$i]->remise_percent) + { + $pdf->SetXY($this->posxdiscount-2, $curY); + $remise_percent = pdf_getlineremisepercent($object, $i, $outputlangs, $hidedetails); + $pdf->MultiCell($this->postotalht-$this->posxdiscount+2, 3, $remise_percent, 0, 'R'); + } + + // Total HT line + $total_excl_tax = pdf_getlinetotalexcltax($object, $i, $outputlangs, $hidedetails); + $pdf->SetXY($this->postotalht, $curY); + $pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->postotalht, 3, $total_excl_tax, 0, 'R', 0); + + // Collecte des totaux par valeur de tva dans $this->tva["taux"]=total_tva + $tvaligne=$object->lines[$i]->total_tva; + $localtax1ligne=$object->lines[$i]->total_localtax1; + $localtax2ligne=$object->lines[$i]->total_localtax2; + $localtax1_rate=$object->lines[$i]->localtax1_tx; + $localtax2_rate=$object->lines[$i]->localtax2_tx; + $localtax1_type=$object->lines[$i]->localtax1_type; + $localtax2_type=$object->lines[$i]->localtax2_type; + + if ($object->remise_percent) $tvaligne-=($tvaligne*$object->remise_percent)/100; + if ($object->remise_percent) $localtax1ligne-=($localtax1ligne*$object->remise_percent)/100; + if ($object->remise_percent) $localtax2ligne-=($localtax2ligne*$object->remise_percent)/100; + + $vatrate=(string) $object->lines[$i]->tva_tx; + + // Retrieve type from database for backward compatibility with old records + if ((! isset($localtax1_type) || $localtax1_type=='' || ! isset($localtax2_type) || $localtax2_type=='') // if tax type not defined + && (! empty($localtax1_rate) || ! empty($localtax2_rate))) // and there is local tax + { + $localtaxtmp_array=getLocalTaxesFromRate($vatrate,0,$object->thirdparty,$mysoc); + $localtax1_type = $localtaxtmp_array[0]; + $localtax2_type = $localtaxtmp_array[2]; + } + + // retrieve global local tax + if ($localtax1_type && $localtax1ligne != 0) + $this->localtax1[$localtax1_type][$localtax1_rate]+=$localtax1ligne; + if ($localtax2_type && $localtax2ligne != 0) + $this->localtax2[$localtax2_type][$localtax2_rate]+=$localtax2ligne; + + if (($object->lines[$i]->info_bits & 0x01) == 0x01) $vatrate.='*'; + if (! isset($this->tva[$vatrate])) $this->tva[$vatrate]=''; + $this->tva[$vatrate] += $tvaligne; + + if ($posYAfterImage > $posYAfterDescription) $nexY=$posYAfterImage; + + // Add line + if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1)) + { + $pdf->setPage($pageposafter); + $pdf->SetLineStyle(array('dash'=>'1,1','color'=>array(210,210,210))); + //$pdf->SetDrawColor(190,190,200); + $pdf->line($this->marge_gauche, $nexY+1, $this->page_largeur - $this->marge_droite, $nexY+1); + $pdf->SetLineStyle(array('dash'=>0)); + } + + $nexY+=2; // Passe espace entre les lignes + + // Detect if some page were added automatically and output _tableau for past pages + while ($pagenb < $pageposafter) + { + $pdf->setPage($pagenb); + if ($pagenb == 1) + { + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); + } + else + { + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); + } + $this->_pagefoot($pdf,$object,$outputlangs,1); + $pagenb++; + $pdf->setPage($pagenb); + $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); + } + if (isset($object->lines[$i+1]->pagebreak) && $object->lines[$i+1]->pagebreak) + { + if ($pagenb == 1) + { + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1); + } + else + { + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); + } + $this->_pagefoot($pdf,$object,$outputlangs,1); + // New page + $pdf->AddPage(); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); + $pagenb++; + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); + } + } + + // Show square + if ($pagenb == 1) + { + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); + $bottomlasttab=$this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; + } + else + { + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); + $bottomlasttab=$this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; + } + + // Affiche zone infos + $posy=$this->_tableau_info($pdf, $object, $bottomlasttab, $outputlangs); + + // Affiche zone totaux + $posy=$this->_tableau_tot($pdf, $object, 0, $bottomlasttab, $outputlangs); + + // Affiche zone versements + /* + if ($deja_regle || $amount_credit_notes_included || $amount_deposits_included) + { + $posy=$this->_tableau_versements($pdf, $object, $posy, $outputlangs); + } + */ + + // Pied de page + $this->_pagefoot($pdf,$object,$outputlangs); + if (method_exists($pdf,'AliasNbPages')) $pdf->AliasNbPages(); + + $pdf->Close(); + + $pdf->Output($file,'F'); + + //Add pdfgeneration hook + $hookmanager->initHooks(array('pdfgeneration')); + $parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs); + global $action; + $reshook=$hookmanager->executeHooks('afterPDFCreation',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + + if (! empty($conf->global->MAIN_UMASK)) + @chmod($file, octdec($conf->global->MAIN_UMASK)); + + return 1; // Pas d'erreur + } + else + { + $this->error=$langs->trans("ErrorCanNotCreateDir",$dir); + return 0; + } + } + else + { + $this->error=$langs->trans("ErrorConstantNotDefined","PROP_OUTPUTDIR"); + return 0; + } + + $this->error=$langs->trans("ErrorUnknown"); + return 0; // Erreur par defaut + } + + /** + * Show payments table + * + * @param PDF $pdf Object PDF + * @param Object $object Object proposal + * @param int $posy Position y in PDF + * @param Translate $outputlangs Object langs for output + * @return int <0 if KO, >0 if OK + */ + function _tableau_versements(&$pdf, $object, $posy, $outputlangs) + { + + } + + + /** + * Show miscellaneous information (payment mode, payment term, ...) + * + * @param PDF $pdf Object PDF + * @param Object $object Object to show + * @param int $posy Y + * @param Translate $outputlangs Langs object + * @return void + */ + function _tableau_info(&$pdf, $object, $posy, $outputlangs) + { + global $conf; + $default_font_size = pdf_getPDFFontSize($outputlangs); + + $pdf->SetFont('','', $default_font_size - 1); + + // If France, show VAT mention if not applicable + if ($this->emetteur->country_code == 'FR' && $this->franchise == 1) + { + $pdf->SetFont('','B', $default_font_size - 2); + $pdf->SetXY($this->marge_gauche, $posy); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("VATIsNotUsedForInvoice"), 0, 'L', 0); + + $posy=$pdf->GetY()+4; + } + + $posxval=52; + + // Show shipping date + if (! empty($object->date_livraison)) + { + $outputlangs->load("sendings"); + $pdf->SetFont('','B', $default_font_size - 2); + $pdf->SetXY($this->marge_gauche, $posy); + $titre = $outputlangs->transnoentities("DateDeliveryPlanned").':'; + $pdf->MultiCell(80, 4, $titre, 0, 'L'); + $pdf->SetFont('','', $default_font_size - 2); + $pdf->SetXY($posxval, $posy); + $dlp=dol_print_date($object->date_livraison,"daytext",false,$outputlangs,true); + $pdf->MultiCell(80, 4, $dlp, 0, 'L'); + + $posy=$pdf->GetY()+1; + } + elseif ($object->availability_code || $object->availability) // Show availability conditions + { + $pdf->SetFont('','B', $default_font_size - 2); + $pdf->SetXY($this->marge_gauche, $posy); + $titre = $outputlangs->transnoentities("AvailabilityPeriod").':'; + $pdf->MultiCell(80, 4, $titre, 0, 'L'); + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('','', $default_font_size - 2); + $pdf->SetXY($posxval, $posy); + $lib_availability=$outputlangs->transnoentities("AvailabilityType".$object->availability_code)!=('AvailabilityType'.$object->availability_code)?$outputlangs->transnoentities("AvailabilityType".$object->availability_code):$outputlangs->convToOutputCharset($object->availability); + $lib_availability=str_replace('\n',"\n",$lib_availability); + $pdf->MultiCell(80, 4, $lib_availability, 0, 'L'); + + $posy=$pdf->GetY()+1; + } + + // Show payments conditions + if (empty($conf->global->PROPALE_PDF_HIDE_PAYMENTTERMCOND) && ($object->cond_reglement_code || $object->cond_reglement)) + { + $pdf->SetFont('','B', $default_font_size - 2); + $pdf->SetXY($this->marge_gauche, $posy); + $titre = $outputlangs->transnoentities("PaymentConditions").':'; + $pdf->MultiCell(80, 4, $titre, 0, 'L'); + + $pdf->SetFont('','', $default_font_size - 2); + $pdf->SetXY($posxval, $posy); + $lib_condition_paiement=$outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code)!=('PaymentCondition'.$object->cond_reglement_code)?$outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code):$outputlangs->convToOutputCharset($object->cond_reglement_doc); + $lib_condition_paiement=str_replace('\n',"\n",$lib_condition_paiement); + $pdf->MultiCell(80, 4, $lib_condition_paiement,0,'L'); + + $posy=$pdf->GetY()+3; + } + + if (empty($conf->global->PROPALE_PDF_HIDE_PAYMENTTERMCOND)) + { + // Check a payment mode is defined + /* Not required on a proposal + if (empty($object->mode_reglement_code) + && ! $conf->global->FACTURE_CHQ_NUMBER + && ! $conf->global->FACTURE_RIB_NUMBER) + { + $pdf->SetXY($this->marge_gauche, $posy); + $pdf->SetTextColor(200,0,0); + $pdf->SetFont('','B', $default_font_size - 2); + $pdf->MultiCell(90, 3, $outputlangs->transnoentities("ErrorNoPaiementModeConfigured"),0,'L',0); + $pdf->SetTextColor(0,0,0); + + $posy=$pdf->GetY()+1; + } + */ + + // Show payment mode + if ($object->mode_reglement_code + && $object->mode_reglement_code != 'CHQ' + && $object->mode_reglement_code != 'VIR') + { + $pdf->SetFont('','B', $default_font_size - 2); + $pdf->SetXY($this->marge_gauche, $posy); + $titre = $outputlangs->transnoentities("PaymentMode").':'; + $pdf->MultiCell(80, 5, $titre, 0, 'L'); + $pdf->SetFont('','', $default_font_size - 2); + $pdf->SetXY($posxval, $posy); + $lib_mode_reg=$outputlangs->transnoentities("PaymentType".$object->mode_reglement_code)!=('PaymentType'.$object->mode_reglement_code)?$outputlangs->transnoentities("PaymentType".$object->mode_reglement_code):$outputlangs->convToOutputCharset($object->mode_reglement); + $pdf->MultiCell(80, 5, $lib_mode_reg,0,'L'); + + $posy=$pdf->GetY()+2; + } + + // Show payment mode CHQ + if (empty($object->mode_reglement_code) || $object->mode_reglement_code == 'CHQ') + { + // Si mode reglement non force ou si force a CHQ + if (! empty($conf->global->FACTURE_CHQ_NUMBER)) + { + $diffsizetitle=(empty($conf->global->PDF_DIFFSIZE_TITLE)?3:$conf->global->PDF_DIFFSIZE_TITLE); + + if ($conf->global->FACTURE_CHQ_NUMBER > 0) + { + $account = new Account($this->db); + $account->fetch($conf->global->FACTURE_CHQ_NUMBER); + + $pdf->SetXY($this->marge_gauche, $posy); + $pdf->SetFont('','B', $default_font_size - $diffsizetitle); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities('PaymentByChequeOrderedTo',$account->proprio),0,'L',0); + $posy=$pdf->GetY()+1; + + if (empty($conf->global->MAIN_PDF_HIDE_CHQ_ADDRESS)) + { + $pdf->SetXY($this->marge_gauche, $posy); + $pdf->SetFont('','', $default_font_size - $diffsizetitle); + $pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset($account->owner_address), 0, 'L', 0); + $posy=$pdf->GetY()+2; + } + } + if ($conf->global->FACTURE_CHQ_NUMBER == -1) + { + $pdf->SetXY($this->marge_gauche, $posy); + $pdf->SetFont('','B', $default_font_size - $diffsizetitle); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities('PaymentByChequeOrderedTo',$this->emetteur->name),0,'L',0); + $posy=$pdf->GetY()+1; + + if (empty($conf->global->MAIN_PDF_HIDE_CHQ_ADDRESS)) + { + $pdf->SetXY($this->marge_gauche, $posy); + $pdf->SetFont('','', $default_font_size - $diffsizetitle); + $pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset($this->emetteur->getFullAddress()), 0, 'L', 0); + $posy=$pdf->GetY()+2; + } + } + } + } + + // If payment mode not forced or forced to VIR, show payment with BAN + if (empty($object->mode_reglement_code) || $object->mode_reglement_code == 'VIR') + { + if (! empty($object->fk_bank) || ! empty($conf->global->FACTURE_RIB_NUMBER)) + { + $bankid=(empty($object->fk_bank)?$conf->global->FACTURE_RIB_NUMBER:$object->fk_bank); + $account = new Account($this->db); + $account->fetch($bankid); + + $curx=$this->marge_gauche; + $cury=$posy; + + $posy=pdf_bank($pdf,$outputlangs,$curx,$cury,$account,0,$default_font_size); + + $posy+=2; + } + } + } + + return $posy; + } + + + /** + * Show total to pay + * + * @param PDF $pdf Object PDF + * @param Facture $object Object invoice + * @param int $deja_regle Montant deja regle + * @param int $posy Position depart + * @param Translate $outputlangs Objet langs + * @return int Position pour suite + */ + function _tableau_tot(&$pdf, $object, $deja_regle, $posy, $outputlangs) + { + global $conf,$mysoc; + $default_font_size = pdf_getPDFFontSize($outputlangs); + + $tab2_top = $posy; + $tab2_hl = 4; + $pdf->SetFont('','', $default_font_size - 1); + + // Tableau total + $col1x = 120; $col2x = 170; + if ($this->page_largeur < 210) // To work with US executive format + { + $col2x-=20; + } + $largcol2 = ($this->page_largeur - $this->marge_droite - $col2x); + + $useborder=0; + $index = 0; + + // Total HT + $pdf->SetFillColor(255,255,255); + $pdf->SetXY($col1x, $tab2_top + 0); + $pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1); + + $pdf->SetXY($col2x, $tab2_top + 0); + $pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ht + (! empty($object->remise)?$object->remise:0), 0, $outputlangs), 0, 'R', 1); + + // Show VAT by rates and total + $pdf->SetFillColor(248,248,248); + + $this->atleastoneratenotnull=0; + if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) + { + $tvaisnull=((! empty($this->tva) && count($this->tva) == 1 && isset($this->tva['0.000']) && is_float($this->tva['0.000'])) ? true : false); + if (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_ISNULL) && $tvaisnull) + { + // Nothing to do + } + else + { + //Local tax 1 before VAT + //if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') + //{ + foreach( $this->localtax1 as $localtax_type => $localtax_rate ) + { + if (in_array((string) $localtax_type, array('1','3','5'))) continue; + + foreach( $localtax_rate 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("TotalLT1",$mysoc->country_code).' '; + $totalvat.=vatrate(abs($tvakey),1).$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($tvaval, 0, $outputlangs), 0, 'R', 1); + } + } + } + //} + //Local tax 2 before VAT + //if (! empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) && $conf->global->FACTURE_LOCAL_TAX2_OPTION=='localtax2on') + //{ + foreach( $this->localtax2 as $localtax_type => $localtax_rate ) + { + if (in_array((string) $localtax_type, array('1','3','5'))) continue; + + foreach( $localtax_rate 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("TotalLT2", $mysoc->country_code).' '; + $totalvat.=vatrate(abs($tvakey),1).$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($tvaval, 0, $outputlangs), 0, 'R', 1); + + } + } + } + //} + // VAT + foreach($this->tva 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->transnoentities("TotalVAT").' '; + $totalvat.=vatrate($tvakey,1).$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($tvaval, 0, $outputlangs), 0, 'R', 1); + } + } + + //Local tax 1 after VAT + //if (! empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') + //{ + foreach( $this->localtax1 as $localtax_type => $localtax_rate ) + { + if (in_array((string) $localtax_type, array('2','4','6'))) continue; + + foreach( $localtax_rate 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("TotalLT1",$mysoc->country_code).' '; + + $totalvat.=vatrate(abs($tvakey),1).$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($tvaval, 0, $outputlangs), 0, 'R', 1); + } + } + } + //} + //Local tax 2 after VAT + //if (! empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) && $conf->global->FACTURE_LOCAL_TAX2_OPTION=='localtax2on') + //{ + foreach( $this->localtax2 as $localtax_type => $localtax_rate ) + { + if (in_array((string) $localtax_type, array('2','4','6'))) continue; + + foreach( $localtax_rate as $tvakey => $tvaval ) + { + // retrieve global local tax + 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("TotalLT2",$mysoc->country_code).' '; + + $totalvat.=vatrate(abs($tvakey),1).$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($tvaval, 0, $outputlangs), 0, 'R', 1); + } + } + } + //} + + // Total TTC + $index++; + $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); + $pdf->SetTextColor(0,0,60); + $pdf->SetFillColor(224,224,224); + $pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("TotalTTC"), $useborder, 'L', 1); + + $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ttc, 0, $outputlangs), $useborder, 'R', 1); + } + } + + $pdf->SetTextColor(0,0,0); + + /* + $resteapayer = $object->total_ttc - $deja_regle; + if (! empty($object->paye)) $resteapayer=0; + */ + + if ($deja_regle > 0) + { + $index++; + + $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("AlreadyPaid"), 0, 'L', 0); + + $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($deja_regle, 0, $outputlangs), 0, 'R', 0); + + /* + if ($object->close_code == 'discount_vat') + { + $index++; + $pdf->SetFillColor(255,255,255); + + $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("EscompteOffered"), $useborder, 'L', 1); + + $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ttc - $deja_regle, 0, $outputlangs), $useborder, 'R', 1); + + $resteapayer=0; + } + */ + + $index++; + $pdf->SetTextColor(0,0,60); + $pdf->SetFillColor(224,224,224); + $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($col2x-$col1x, $tab2_hl, $outputlangs->transnoentities("RemainderToPay"), $useborder, 'L', 1); + + $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($resteapayer, 0, $outputlangs), $useborder, 'R', 1); + + $pdf->SetFont('','', $default_font_size - 1); + $pdf->SetTextColor(0,0,0); + } + + $index++; + return ($tab2_top + ($tab2_hl * $index)); + } + + /** + * Show table for lines + * + * @param PDF $pdf Object PDF + * @param string $tab_top Top position of table + * @param string $tab_height Height of table (rectangle) + * @param int $nexY Y (not used) + * @param Translate $outputlangs Langs object + * @param int $hidetop 1=Hide top bar of array and title, 0=Hide nothing, -1=Hide only title + * @param int $hidebottom Hide bottom bar of array + * @return void + */ + function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop=0, $hidebottom=0) + { + global $conf; + + // Force to disable hidetop and hidebottom + $hidebottom=0; + if ($hidetop) $hidetop=-1; + + $default_font_size = pdf_getPDFFontSize($outputlangs); + + // Amount in (at tab_top - 1) + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('','',$default_font_size - 2); + + if (empty($hidetop)) + { + $titre = $outputlangs->transnoentities("AmountInCurrency",$outputlangs->transnoentitiesnoconv("Currency".$conf->currency)); + $pdf->SetXY($this->page_largeur - $this->marge_droite - ($pdf->GetStringWidth($titre) + 3), $tab_top-4); + $pdf->MultiCell(($pdf->GetStringWidth($titre) + 3), 2, $titre); + + //$conf->global->MAIN_PDF_TITLE_BACKGROUND_COLOR='230,230,230'; + if (! empty($conf->global->MAIN_PDF_TITLE_BACKGROUND_COLOR)) $pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_droite-$this->marge_gauche, 5, 'F', null, explode(',',$conf->global->MAIN_PDF_TITLE_BACKGROUND_COLOR)); + } + + $pdf->SetDrawColor(128,128,128); + $pdf->SetFont('','',$default_font_size - 1); + + // Output Rect + $this->printRect($pdf,$this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $tab_height, $hidetop, $hidebottom); // Rect prend une longueur en 3eme param et 4eme param + + if (empty($hidetop)) + { + $pdf->line($this->marge_gauche, $tab_top+5, $this->page_largeur-$this->marge_droite, $tab_top+5); // line prend une position y en 2eme param et 4eme param + + $pdf->SetXY($this->posxdesc-1, $tab_top+1); + $pdf->MultiCell(108,2, $outputlangs->transnoentities("Designation"),'','L'); + } + + if (! empty($conf->global->MAIN_GENERATE_PROPOSALS_WITH_PICTURE)) + { + $pdf->line($this->posxpicture-1, $tab_top, $this->posxpicture-1, $tab_top + $tab_height); + if (empty($hidetop)) + { + //$pdf->SetXY($this->posxpicture-1, $tab_top+1); + //$pdf->MultiCell($this->posxtva-$this->posxpicture-1,2, $outputlangs->transnoentities("Photo"),'','C'); + } + } + + if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) + { + $pdf->line($this->posxtva-1, $tab_top, $this->posxtva-1, $tab_top + $tab_height); + if (empty($hidetop)) + { + $pdf->SetXY($this->posxtva-3, $tab_top+1); + $pdf->MultiCell($this->posxup-$this->posxtva+3,2, $outputlangs->transnoentities("VAT"),'','C'); + } + } + + $pdf->line($this->posxup-1, $tab_top, $this->posxup-1, $tab_top + $tab_height); + if (empty($hidetop)) + { + $pdf->SetXY($this->posxup-1, $tab_top+1); + $pdf->MultiCell($this->posxqty-$this->posxup-1,2, $outputlangs->transnoentities("PriceUHT"),'','C'); + } + + $pdf->line($this->posxqty-1, $tab_top, $this->posxqty-1, $tab_top + $tab_height); + if (empty($hidetop)) + { + $pdf->SetXY($this->posxqty-1, $tab_top+1); + $pdf->MultiCell($this->posxdiscount-$this->posxqty-1,2, $outputlangs->transnoentities("Qty"),'','C'); + } + + $pdf->line($this->posxdiscount-1, $tab_top, $this->posxdiscount-1, $tab_top + $tab_height); + if (empty($hidetop)) + { + if ($this->atleastonediscount) + { + $pdf->SetXY($this->posxdiscount-1, $tab_top+1); + $pdf->MultiCell($this->postotalht-$this->posxdiscount+1,2, $outputlangs->transnoentities("ReductionShort"),'','C'); + } + } + if ($this->atleastonediscount) + { + $pdf->line($this->postotalht, $tab_top, $this->postotalht, $tab_top + $tab_height); + } + if (empty($hidetop)) + { + $pdf->SetXY($this->postotalht-1, $tab_top+1); + $pdf->MultiCell(30,2, $outputlangs->transnoentities("TotalHT"),'','C'); + } + } + + /** + * Show top header of page. + * + * @param PDF $pdf Object PDF + * @param Object $object Object to show + * @param int $showaddress 0=no, 1=yes + * @param Translate $outputlangs Object lang for output + * @return void + */ + function _pagehead(&$pdf, $object, $showaddress, $outputlangs) + { + global $conf,$langs; + + $outputlangs->load("main"); + $outputlangs->load("bills"); + $outputlangs->load("propal"); + $outputlangs->load("companies"); + + $default_font_size = pdf_getPDFFontSize($outputlangs); + + pdf_pagehead($pdf,$outputlangs,$this->page_hauteur); + + // Show Draft Watermark + if($object->statut==0 && (! empty($conf->global->PROPALE_DRAFT_WATERMARK)) ) + { + pdf_watermark($pdf,$outputlangs,$this->page_hauteur,$this->page_largeur,'mm',$conf->global->PROPALE_DRAFT_WATERMARK); + } + + $pdf->SetTextColor(0,0,60); + $pdf->SetFont('','B', $default_font_size + 3); + + $posy=$this->marge_haute; + $posx=$this->page_largeur-$this->marge_droite-100; + + $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) + } + 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("ErrorGoToGlobalSetup"), 0, 'L'); + } + } + else + { + $text=$this->emetteur->name; + $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); + } + + $pdf->SetFont('','B',$default_font_size + 3); + $pdf->SetXY($posx,$posy); + $pdf->SetTextColor(0,0,60); + $title=$outputlangs->transnoentities("CommercialProposal"); + $pdf->MultiCell(100, 4, $title, '', 'R'); + + $pdf->SetFont('','B',$default_font_size); + + $posy+=5; + $pdf->SetXY($posx,$posy); + $pdf->SetTextColor(0,0,60); + $pdf->MultiCell(100, 4, $outputlangs->transnoentities("Ref")." : " . $outputlangs->convToOutputCharset($object->ref), '', 'R'); + + $posy+=1; + $pdf->SetFont('','', $default_font_size - 2); + + if ($object->ref_client) + { + $posy+=4; + $pdf->SetXY($posx,$posy); + $pdf->SetTextColor(0,0,60); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("RefCustomer")." : " . $outputlangs->convToOutputCharset($object->ref_client), '', 'R'); + } + + $posy+=4; + $pdf->SetXY($posx,$posy); + $pdf->SetTextColor(0,0,60); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("Date")." : " . dol_print_date($object->date,"day",false,$outputlangs,true), '', 'R'); + + $posy+=4; + $pdf->SetXY($posx,$posy); + $pdf->SetTextColor(0,0,60); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("DateEndPropal")." : " . dol_print_date($object->fin_validite,"day",false,$outputlangs,true), '', 'R'); + + if ($object->client->code_client) + { + $posy+=4; + $pdf->SetXY($posx,$posy); + $pdf->SetTextColor(0,0,60); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : " . $outputlangs->transnoentities($object->client->code_client), '', 'R'); + } + + $posy+=2; + + // Show list of linked objects + $posy = pdf_writeLinkedObjects($pdf, $object, $outputlangs, $posx, $posy, 100, 3, 'R', $default_font_size); + + if ($showaddress) + { + // Sender properties + $carac_emetteur=''; + // Add internal contact of proposal if defined + $arrayidcontact=$object->getIdContact('internal','SALESREPFOLL'); + if (count($arrayidcontact) > 0) + { + $object->fetch_user($arrayidcontact[0]); + $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$outputlangs->transnoentities("Name").": ".$outputlangs->convToOutputCharset($object->user->getFullName($outputlangs))."\n"; + } + + $carac_emetteur .= pdf_build_address($outputlangs, $this->emetteur, $object->client); + + // Show sender + $posy=42; + $posx=$this->marge_gauche; + if (! empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) $posx=$this->page_largeur-$this->marge_droite-80; + $hautcadre=40; + + // Show sender frame + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('','', $default_font_size - 2); + $pdf->SetXY($posx,$posy-5); + $pdf->MultiCell(66,5, $outputlangs->transnoentities("BillFrom").":", 0, 'L'); + $pdf->SetXY($posx,$posy); + $pdf->SetFillColor(230,230,230); + $pdf->MultiCell(82, $hautcadre, "", 0, 'R', 1); + $pdf->SetTextColor(0,0,60); + + // Show sender name + $pdf->SetXY($posx+2,$posy+3); + $pdf->SetFont('','B', $default_font_size); + $pdf->MultiCell(80, 4, $outputlangs->convToOutputCharset($this->emetteur->name), 0, 'L'); + $posy=$pdf->getY(); + + // Show sender information + $pdf->SetXY($posx+2,$posy); + $pdf->SetFont('','', $default_font_size - 1); + $pdf->MultiCell(80, 4, $carac_emetteur, 0, 'L'); + + + // If CUSTOMER contact defined, we use it + $usecontact=false; + $arrayidcontact=$object->getIdContact('external','CUSTOMER'); + if (count($arrayidcontact) > 0) + { + $usecontact=true; + $result=$object->fetch_contact($arrayidcontact[0]); + } + + // Recipient name + if (! empty($usecontact)) + { + // On peut utiliser le nom de la societe du contact + if (! empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)) $socname = $object->contact->socname; + else $socname = $object->client->name; + $carac_client_name=$outputlangs->convToOutputCharset($socname); + } + else + { + $carac_client_name=$outputlangs->convToOutputCharset($object->client->name); + } + + $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,($usecontact?$object->contact:''),$usecontact,'target'); + + // Show recipient + $widthrecbox=100; + if ($this->page_largeur < 210) $widthrecbox=84; // To work with US executive format + $posy=42; + $posx=$this->page_largeur-$this->marge_droite-$widthrecbox; + if (! empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) $posx=$this->marge_gauche; + + // Show recipient frame + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('','', $default_font_size - 2); + $pdf->SetXY($posx+2,$posy-5); + $pdf->MultiCell($widthrecbox, 5, $outputlangs->transnoentities("BillTo").":", 0, 'L'); + $pdf->Rect($posx, $posy, $widthrecbox, $hautcadre); + + // Show recipient name + $pdf->SetXY($posx+2,$posy+3); + $pdf->SetFont('','B', $default_font_size); + $pdf->MultiCell($widthrecbox, 4, $carac_client_name, 0, 'L'); + + // Show recipient information + $pdf->SetFont('','', $default_font_size - 1); + $pdf->SetXY($posx+2,$posy+4+(dol_nboflines_bis($carac_client_name,50)*4)); + $pdf->MultiCell($widthrecbox, 4, $carac_client, 0, 'L'); + } + + $pdf->SetTextColor(0,0,0); + } + + /** + * Show footer of page. Need this->emetteur object + * + * @param PDF $pdf PDF + * @param Object $object Object to show + * @param Translate $outputlangs Object lang for output + * @param int $hidefreetext 1=Hide free text + * @return int Return height of bottom margin including footer text + */ + function _pagefoot(&$pdf,$object,$outputlangs,$hidefreetext=0) + { + $showdetails=0; + return pdf_pagefoot($pdf,$outputlangs,'PROPALE_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object,$showdetails,$hidefreetext); + } + +} + diff --git a/htdocs/core/modules/askpricesupplier/index.html b/htdocs/core/modules/askpricesupplier/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/core/modules/askpricesupplier/mod_propale_marbre.php b/htdocs/core/modules/askpricesupplier/mod_propale_marbre.php new file mode 100644 index 00000000000..28260de97d8 --- /dev/null +++ b/htdocs/core/modules/askpricesupplier/mod_propale_marbre.php @@ -0,0 +1,153 @@ + + * Copyright (C) 2005-2012 Regis Houssin + * + * 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 . + * or see http://www.gnu.org/ + */ + +/** + * \file htdocs/core/modules/propale/mod_propale_marbre.php + * \ingroup propale + * \brief File of class to manage commercial proposal numbering rules Marbre + */ + +require_once DOL_DOCUMENT_ROOT .'/core/modules/propale/modules_propale.php'; + + +/** + * Class to manage customer order numbering rules Marbre + */ +class mod_propale_marbre extends ModeleNumRefPropales +{ + var $version='dolibarr'; // 'development', 'experimental', 'dolibarr' + var $prefix='PR'; + var $error=''; + var $nom = "Marbre"; + + + /** + * Return description of numbering module + * + * @return string Text with description + */ + function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc",$this->prefix); + } + + + /** + * Return an example of numbering module values + * + * @return string Example + */ + function getExample() + { + return $this->prefix."0501-0001"; + } + + + /** + * Test si les numeros deje en vigueur dans la base ne provoquent pas de + * de conflits qui empechera cette numerotation de fonctionner. + * + * @return boolean false si conflit, true si ok + */ + function canBeActivated() + { + global $conf,$langs,$db; + + $pryymm=''; $max=''; + + $posindice=8; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; + $sql.= " FROM ".MAIN_DB_PREFIX."propal"; + $sql.= " WHERE ref LIKE '".$this->prefix."____-%'"; + $sql.= " AND entity = ".$conf->entity; + + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + if ($row) { $pryymm = substr($row[0],0,6); $max=$row[0]; } + } + + if (! $pryymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i',$pryymm)) + { + return true; + } + else + { + $langs->load("errors"); + $this->error=$langs->trans('ErrorNumRefModel',$max); + return false; + } + } + + /** + * Return next value + * + * @param Societe $objsoc Object third party + * @param Propal $propal Object commercial proposal + * @return string Next value + */ + function getNextValue($objsoc,$propal) + { + global $db,$conf; + + // D'abord on recupere la valeur max + $posindice=8; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL + $sql.= " FROM ".MAIN_DB_PREFIX."propal"; + $sql.= " WHERE ref LIKE '".$this->prefix."____-%'"; + $sql.= " AND entity = ".$conf->entity; + + $resql=$db->query($sql); + if ($resql) + { + $obj = $db->fetch_object($resql); + if ($obj) $max = intval($obj->max); + else $max=0; + } + else + { + dol_syslog(get_class($this)."::getNextValue", LOG_DEBUG); + return -1; + } + + $date = time(); + $yymm = strftime("%y%m",$date); + + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max+1); + + dol_syslog(get_class($this)."::getNextValue return ".$this->prefix.$yymm."-".$num); + return $this->prefix.$yymm."-".$num; + } + + /** + * Return next free value + * + * @param Societe $objsoc Object third party + * @param Object $objforref Object for number to search + * @return string Next free value + */ + function getNumRef($objsoc,$objforref) + { + return $this->getNextValue($objsoc,$objforref); + } + +} diff --git a/htdocs/core/modules/askpricesupplier/mod_propale_saphir.php b/htdocs/core/modules/askpricesupplier/mod_propale_saphir.php new file mode 100644 index 00000000000..503d8754684 --- /dev/null +++ b/htdocs/core/modules/askpricesupplier/mod_propale_saphir.php @@ -0,0 +1,131 @@ + + * Copyright (C) 2004-2010 Laurent Destailleur + * Copyright (C) 2005-2007 Regis Houssin + * Copyright (C) 2008 Raphael Bertrand (Resultic) + * + * 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 . + * or see http://www.gnu.org/ + */ + +/** + * \file htdocs/core/modules/propale/mod_propale_saphir.php + * \ingroup propale + * \brief File that contains the numbering module rules Saphir + */ + +require_once DOL_DOCUMENT_ROOT .'/core/modules/propale/modules_propale.php'; + + +/** + * Class of file that contains the numbering module rules Saphir + */ +class mod_propale_saphir extends ModeleNumRefPropales +{ + var $version='dolibarr'; // 'development', 'experimental', 'dolibarr' + var $error = ''; + var $nom = 'Saphir'; + + + /** + * Return description of module + * + * @return string Texte descripif + */ + function info() + { + global $conf,$langs; + + $langs->load("bills"); + + $form = new Form($this->db); + + $texte = $langs->trans('GenericNumRefModelDesc')."
\n"; + $texte.= '
'; + $texte.= ''; + $texte.= ''; + $texte.= ''; + $texte.= ''; + + $tooltip=$langs->trans("GenericMaskCodes",$langs->transnoentities("Proposal"),$langs->transnoentities("Proposal")); + $tooltip.=$langs->trans("GenericMaskCodes2"); + $tooltip.=$langs->trans("GenericMaskCodes3"); + $tooltip.=$langs->trans("GenericMaskCodes4a",$langs->transnoentities("Proposal"),$langs->transnoentities("Proposal")); + $tooltip.=$langs->trans("GenericMaskCodes5"); + + // Parametrage du prefix + $texte.= ''; + $texte.= ''; + + $texte.= ''; + + $texte.= ''; + + $texte.= '
'.$langs->trans("Mask").':'.$form->textwithpicto('',$tooltip,1,1).' 
'; + $texte.= '
'; + + return $texte; + } + + /** + * Renvoi un exemple de numerotation + * + * @return string Example + */ + function getExample() + { + global $conf,$langs,$mysoc; + + $old_code_client=$mysoc->code_client; + $mysoc->code_client='CCCCCCCCCC'; + $numExample = $this->getNextValue($mysoc,''); + $mysoc->code_client=$old_code_client; + + if (! $numExample) + { + $numExample = 'NotConfigured'; + } + return $numExample; + } + + /** + * Return next value + * + * @param Societe $objsoc Object third party + * @param Propal $propal Object commercial proposal + * @return string Value if OK, 0 if KO + */ + function getNextValue($objsoc,$propal) + { + global $db,$conf; + + require_once DOL_DOCUMENT_ROOT .'/core/lib/functions2.lib.php'; + + // On defini critere recherche compteur + $mask=$conf->global->PROPALE_SAPHIR_MASK; + + if (! $mask) + { + $this->error='NotConfigured'; + return 0; + } + + $date=$propal->datep; + $customercode=$objsoc->code_client; + $numFinal=get_next_value($db,$mask,'propal','ref','',$customercode,$date); + + return $numFinal; + } + +} diff --git a/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php b/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php new file mode 100644 index 00000000000..68465c20512 --- /dev/null +++ b/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php @@ -0,0 +1,165 @@ + + * Copyright (C) 2004-2012 Laurent Destailleur + * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2012 Juanjo Menent + * Copyright (C) 2014 Marcos García + * + * 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 . + * or see http://www.gnu.org/ + */ + +/** + * \file htdocs/core/modules/propale/modules_propale.php + * \ingroup propale + * \brief Fichier contenant la classe mere de generation des propales en PDF + * et la classe mere de numerotation des propales + */ + +require_once DOL_DOCUMENT_ROOT.'/core/class/commondocgenerator.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; // Requis car utilise dans les classes qui heritent + + +/** + * Classe mere des modeles de propale + */ +abstract class ModelePDFAskPriceSupplier extends CommonDocGenerator +{ + var $error=''; + + + /** + * Return list of active generation modules + * + * @param DoliDB $db Database handler + * @param string $maxfilenamelength Max length of value to show + * @return array List of templates + */ + static function liste_modeles($db,$maxfilenamelength=0) + { + global $conf; + + $type='askpricesupplier'; + $liste=array(); + + include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + $liste=getListOfModels($db,$type,$maxfilenamelength); + + return $liste; + } +} + + +/** + * Classe mere des modeles de numerotation des references de propales + */ +abstract class ModeleNumRefPropales +{ + var $error=''; + + /** + * Return if a module can be used or not + * + * @return boolean true if module can be used + */ + function isEnabled() + { + return true; + } + + /** + * Renvoi la description par defaut du modele de numerotation + * + * @return string Texte descripif + */ + function info() + { + global $langs; + $langs->load("propale"); + return $langs->trans("NoDescription"); + } + + /** + * Renvoi un exemple de numerotation + * + * @return string Example + */ + function getExample() + { + global $langs; + $langs->load("propale"); + return $langs->trans("NoExample"); + } + + /** + * Test si les numeros deja en vigueur dans la base ne provoquent pas de + * de conflits qui empechera cette numerotation de fonctionner. + * + * @return boolean false si conflit, true si ok + */ + function canBeActivated() + { + return true; + } + + /** + * Renvoi prochaine valeur attribuee + * + * @param Societe $objsoc Object third party + * @param Propal $propal Object commercial proposal + * @return string Valeur + */ + function getNextValue($objsoc,$propal) + { + global $langs; + return $langs->trans("NotAvailable"); + } + + /** + * Renvoi version du module numerotation + * + * @return string Valeur + */ + function getVersion() + { + global $langs; + $langs->load("admin"); + + if ($this->version == 'development') return $langs->trans("VersionDevelopment"); + if ($this->version == 'experimental') return $langs->trans("VersionExperimental"); + if ($this->version == 'dolibarr') return DOL_VERSION; + if ($this->version) return $this->version; + return $langs->trans("NotAvailable"); + } +} + + +/** + * Create a document onto disk according to template module. + * + * @param DoliDB $db Database handler + * @param object $object Object proposal + * @param string $modele Force model to use ('' to not force) + * @param Translate $outputlangs Object langs to use for output + * @param int $hidedetails Hide details of lines + * @param int $hidedesc Hide description + * @param int $hideref Hide ref + * @return int 0 if KO, 1 if OK + * @deprecated Use the new function generateDocument of Propal class + */ +function propale_pdf_create(DoliDB $db, Propal $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0) +{ + return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref); +} + diff --git a/htdocs/core/modules/modAskPriceSupplier.class.php b/htdocs/core/modules/modAskPriceSupplier.class.php index 1c108c572d1..92906ba7ae7 100644 --- a/htdocs/core/modules/modAskPriceSupplier.class.php +++ b/htdocs/core/modules/modAskPriceSupplier.class.php @@ -73,12 +73,32 @@ class modAskPriceSupplier extends DolibarrModules $this->const = array(); $r=0; - /*$this->const[$r][0] = "PROPALE_ADDON_PDF"; + $this->const[$r][0] = "ASKPRICESUPPLIER_ADDON_PDF"; $this->const[$r][1] = "chaine"; $this->const[$r][2] = "azur"; - $this->const[$r][3] = 'Nom du gestionnaire de generation des propales en PDF'; + $this->const[$r][3] = 'Nom du gestionnaire de generation des demandes de prix fournisseurs en PDF'; + $this->const[$r][4] = 0; + $r++; + + $this->const[$r][0] = "ASKPRICESUPPLIER_ADDON"; + $this->const[$r][1] = "chaine"; + $this->const[$r][2] = "mod_propale_marbre"; + $this->const[$r][3] = 'Nom du gestionnaire de numerotation des demandes de prix fournisseurs'; + $this->const[$r][4] = 0; + $r++; + + $this->const[$r][0] = "ASKPRICESUPPLIER_VALIDITY_DURATION"; + $this->const[$r][1] = "chaine"; + $this->const[$r][2] = "15"; + $this->const[$r][3] = 'Durée de validitée des demandes de prix fournisseurs'; + $this->const[$r][4] = 0; + $r++; + + $this->const[$r][0] = "ASKPRICESUPPLIER_ADDON_PDF_ODT_PATH"; + $this->const[$r][1] = "chaine"; + $this->const[$r][2] = "DOL_DATA_ROOT/doctemplates/askpricesupplier"; + $this->const[$r][3] = ""; $this->const[$r][4] = 0; - $r++;*/ // Boxes $this->boxes = array(); @@ -90,35 +110,36 @@ class modAskPriceSupplier extends DolibarrModules $r++; $this->rights[$r][0] = $this->numero + $r; // id de la permission - $this->rights[$r][1] = 'Créer/modifier les demandes fournisseurs'; // libelle de la permission + $this->rights[$r][1] = 'Lire les demandes fournisseurs'; // libelle de la permission $this->rights[$r][3] = 1; // La permission est-elle une permission par defaut - $this->rights[$r][4] = 'create'; + $this->rights[$r][4] = 'lire'; $r++; $this->rights[$r][0] = $this->numero + $r; // id de la permission - $this->rights[$r][1] = 'Lire les demandes fournisseurs'; // libelle de la permission + $this->rights[$r][1] = 'Créer/modifier les demandes fournisseurs'; // libelle de la permission $this->rights[$r][3] = 1; // La permission est-elle une permission par defaut - $this->rights[$r][4] = 'read'; + $this->rights[$r][4] = 'creer'; + $r++; $this->rights[$r][0] = $this->numero + $r; // id de la permission $this->rights[$r][1] = 'Valider les demandes fournisseurs'; // libelle de la permission $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut - $this->rights[$r][4] = 'read'; + $this->rights[$r][4] = ''; $this->rights[$r][5] = 'validate'; $r++; $this->rights[$r][0] = $this->numero + $r; // id de la permission $this->rights[$r][1] = 'Envoyer les demandes fournisseurs'; // libelle de la permission $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut - $this->rights[$r][4] = 'read'; + $this->rights[$r][4] = ''; $this->rights[$r][5] = 'send'; $r++; $this->rights[$r][0] = $this->numero + $r; // id de la permission $this->rights[$r][1] = 'Supprimer les demandes fournisseurs'; // libelle de la permission $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut - $this->rights[$r][4] = 'delete'; + $this->rights[$r][4] = 'supprimer'; // Exports //-------- @@ -155,10 +176,10 @@ class modAskPriceSupplier extends DolibarrModules 'type'=>'left', // This is a Left menu entry 'titre'=>'askpricesupplierMENU_LEFT_TITLE', 'leftmenu'=>'askpricesuppliersubmenu', - 'url'=>'/askpricesupplier/index.php', + 'url'=>'/comm/askpricesupplier/index.php', 'langs'=>'askpricesupplier', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. 'enabled'=>'$conf->askpricesupplier->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected. - 'perms'=>'$user->rights->askpricesupplier->read', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules + 'perms'=>'$user->rights->askpricesupplier->lire', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules 'user'=>2 // 0=Menu for internal users, 1=external users, 2=both ); $r++; @@ -167,10 +188,10 @@ class modAskPriceSupplier extends DolibarrModules 'fk_menu'=>'fk_mainmenu=commercial,fk_leftmenu=askpricesuppliersubmenu', 'type'=>'left', 'titre'=>'askpricesupplierMENU_LEFT_TITLE_NEW', - 'url'=>'/askpricesupplier/card.php?action=create', + 'url'=>'/comm/askpricesupplier.php?action=create', 'langs'=>'askpricesupplier', 'enabled'=>'$conf->askpricesupplier->enabled', - 'perms'=>'$user->rights->askpricesupplier->create', + 'perms'=>'$user->rights->askpricesupplier->creer', 'user'=>2 ); $r++; @@ -179,10 +200,10 @@ class modAskPriceSupplier extends DolibarrModules 'fk_menu'=>'fk_mainmenu=commercial,fk_leftmenu=askpricesuppliersubmenu', 'type'=>'left', 'titre'=>'askpricesupplierMENU_LEFT_TITLE_LIST', - 'url'=>'/askpricesupplier/list.php', + 'url'=>'/comm/askpricesupplier/list.php', 'langs'=>'askpricesupplier', 'enabled'=>'$conf->askpricesupplier->enabled', - 'perms'=>'$user->rights->askpricesupplier->read', + 'perms'=>'$user->rights->askpricesupplier->lire', 'user'=>2 ); $r++; @@ -205,8 +226,7 @@ class modAskPriceSupplier extends DolibarrModules $sql = array(); - //$result=$this->_load_tables('/mymodule/sql/'); - + $result=$this->_load_tables('/comm/askpricesupplier/sql/'); return $this->_init($sql, $options); } @@ -226,3 +246,22 @@ class modAskPriceSupplier extends DolibarrModules } } + + +/* + * + * CREATE TABLE IF NOT EXISTS llx_askpricesupplier ( + rowid INT AUTO_INCREMENT, + fk_statut INT NOT NULL, + fk_soc INT NOT NULL, + price DOUBLE(24,8), + date_create TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + date_send TIMESTAMP, + PRIMARY KEY pk_rowid (rowid), + CONSTRAINT fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (rowid) +); + * + * + * + * + */ diff --git a/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN b/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN index d3abf17501d..c50a4afcc01 100644 --- a/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN +++ b/htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN @@ -151,6 +151,19 @@ class InterfaceDemo extends DolibarrTriggers case 'LINEPROPAL_UPDATE': case 'LINEPROPAL_DELETE': + // Askpricesupplier + case 'ASKPRICESUPPLIER_CREATE': + case 'ASKPRICESUPPLIER_CLONE': + case 'ASKPRICESUPPLIER_MODIFY': + case 'ASKPRICESUPPLIER_VALIDATE': + case 'ASKPRICESUPPLIER_SENTBYMAIL': + case 'ASKPRICESUPPLIER_CLOSE_SIGNED': + case 'ASKPRICESUPPLIER_CLOSE_REFUSED': + case 'ASKPRICESUPPLIER_DELETE': + case 'LINEASKPRICESUPPLIER_INSERT': + case 'LINEASKPRICESUPPLIER_UPDATE': + case 'LINEASKPRICESUPPLIER_DELETE': + // Contracts case 'CONTRACT_CREATE': case 'CONTRACT_ACTIVATE': diff --git a/htdocs/langs/fr_FR/askpricesupplier.lang b/htdocs/langs/fr_FR/askpricesupplier.lang index 784082f42c4..6daa44ce0ce 100644 --- a/htdocs/langs/fr_FR/askpricesupplier.lang +++ b/htdocs/langs/fr_FR/askpricesupplier.lang @@ -3,4 +3,127 @@ AskPriceSupplier=Demande de prix fournisseur askpricesupplierDESC=Gestion des demandes de prix aux fournisseurs askpricesupplierMENU_LEFT_TITLE=Demandes de prix fourn. askpricesupplierMENU_LEFT_TITLE_NEW=Nouvelle demande -askpricesupplierMENU_LEFT_TITLE_LIST=Liste \ No newline at end of file +askpricesupplierMENU_LEFT_TITLE_LIST=Liste + +# Dolibarr language file - Source file is en_US - propal +Proposals=Propositions commerciales +Proposal=Proposition commerciale +ProposalShort=Proposition +ProposalsDraft=Propositions commerciales brouillons +ProposalDraft=Proposition commerciale brouillon +ProposalsOpened=Propositions commerciales ouvertes +Prop=Propositions commerciales +CommercialProposal=Proposition commerciale +CommercialProposals=Propositions commerciales +ProposalCard=Fiche proposition +NewProp=Nouvelle proposition commerciale +NewProposal=Nouvelle proposition commerciale +NewPropal=Nouvelle proposition +Prospect=Prospect +ProspectList=Liste des prospects +ConfirmDeleteProp=Êtes-vous sûr de vouloir effacer cette proposition commerciale ? +ConfirmValidateProp=Êtes-vous sûr de vouloir valider cette proposition commerciale sous la référence %s ? +LastPropals=Les %s dernières propales +LastClosedProposals=Les %s dernières propositions commerciales fermées +LastModifiedProposals=Les %s dernières propositions commerciales modifiées +AllPropals=Toutes les propales +LastProposals=Dernières propositions +SearchAProposal=Rechercher une proposition commerciale +ProposalsStatistics=Statistiques des propositions commerciales +NumberOfProposalsByMonth=Nombre par mois +AmountOfProposalsByMonthHT=Montant par mois (HT) +NbOfProposals=Nombre de propositions commerciales + + +# # Ajout +ShowAskpricesupplier=Afficher demande +CommRequest=Demande de prix +CommRequests=Demandes de prix +SearchRequest=Rechercher une demande +DraftRequests=Demandes brouillons +LastModifiedRequests=Les %s dernières demandes de prix modifiées +RequestsOpened=Demandes de prix ouvertes +AskPriceSupplierArea=Espace des demandes de prix fournisseurs +NewAskPrice=Nouvelle demande de prix +NewAsk=Nouvelle demande +# # Modifié +DateAsk=Date de demande +DateEndAsk=Date de fin de validité +DateEndAskShort=Date de fin +DeleteAsk=Supprimer demande +ValidateAsk=Valider demande +AddAsk=Créer une demande +AskpricesupplierDraft=Brouillons +AskpricesupplierOpened=Ouvertes +AskpricesupplierNotBilled=Non facturées +AskpricesupplierStatusDraft=Brouillon (à valider) +AskpricesupplierStatusValidated=Validée (demande ouverte) +AskpricesupplierStatusOpened=Validée (demande ouverte) +AskpricesupplierStatusClosed=Fermée +AskpricesupplierStatusSigned=Signée (à facturer) +AskpricesupplierStatusNotSigned=Non signée (fermée) +AskpricesupplierStatusBilled=Facturée +AskpricesupplierStatusDraftShort=Brouillon +AskpricesupplierStatusValidatedShort=Validée +AskpricesupplierStatusOpenedShort=Ouverte +AskpricesupplierStatusClosedShort=Fermée +AskpricesupplierStatusSignedShort=Signée +AskpricesupplierStatusNotSignedShort=Non signée +AskpricesupplierStatusBilledShort=Facturée +AskpricesupplierToClose=Demandes de prix à fermer +AskpricesupplierToBill=Demandes de prix signées à facturer +CopyAskFrom=Créer demande/devis par recopie d'une demande existante +CreateEmptyAsk=Créer demande/devis vierge +CloneAsk=Cloner demande de prix +ConfirmCloneAsk=Êtes-vous sûr de vouloir cloner la demande de prix %s ? +ConfirmReOpenAsk=Êtes-vous sûr de vouloir réouvrir la demande de prix %s ? +SendAskByMail=Envoyer demande de prix par email +SendAskRef=Envoi de la demande de prix %s + + +##### Types de contacts ##### +TypeContact_askpricesupplier_internal_SALESREPFOLL=Commercial suivi demande +TypeContact_askpricesupplier_external_BILLING=Contact client facturation demande +TypeContact_askpricesupplier_external_CUSTOMER=Contact client suivi demande + +# # + + +ListOfProposals=Liste des devis/propositions commerciales +ActionsOnPropal=Événements sur la proposition +NoOpenedPropals=Pas de proposition ouverte +NoOtherOpenedPropals=Pas d'autre proposition brouillon +RefProposal=Réf. proposition commerciale +AssociatedDocuments=Documents associés à la proposition : +ErrorCantOpenDir=Impossible d'ouvrir le répertoire + +ValidityDuration=Durée de validité +CloseAs=Clôturer au statut +ClassifyBilled=Classer facturée +BuildBill=Créer facture +ErrorPropalNotFound=Propale %s inexistante +Estimate=Devis : +EstimateShort=Devis +OtherPropals=Autres propositions +AddToDraftProposals=Ajouter à proposition brouillon +NoDraftProposals=Pas de propositions brouillons +DefaultProposalDurationValidity=Délai de validité par défaut (en jours) +UseCustomerContactAsPropalRecipientIfExist=Utiliser l'adresse de contact suivi client si définie plutôt que l'adresse du tiers comme destinataire des propositions + +ProposalsAndProposalsLines=Propositions commerciales clients et lignes de propositions +ProposalLine=Ligne de proposition +AvailabilityPeriod=Délai de livraison +SetAvailability=Définir le délai de livraison +AfterOrder=après commande +##### Availability ##### +AvailabilityTypeAV_NOW=Immédiate +AvailabilityTypeAV_1W=1 semaine +AvailabilityTypeAV_2W=2 semaines +AvailabilityTypeAV_3W=3 semaines +AvailabilityTypeAV_1M=1 mois +# Document models +DocModelAzurDescription=Modèle de proposition commerciale complet (logo…) +DocModelJauneDescription=Modèle de proposition Jaune +DefaultModelPropalCreate=Modèle par défaut à la création +DefaultModelPropalToBill=Modèle par défaut lors de la clôture d'une proposition commerciale (à facturer) +DefaultModelPropalClosed=Modèle par défaut lors de la clôture d'une proposition commerciale (non facturée) From 49fa0056c87572b220b101b250b4cbed16dec80c Mon Sep 17 00:00:00 2001 From: phf Date: Tue, 27 Jan 2015 17:43:07 +0100 Subject: [PATCH 023/429] [CORE] Avancement des replace (#new_ask_price). --- htdocs/comm/askpricesupplier/list.php | 30 ++--- .../class/html.formaskpricesupplier.class.php | 104 ++++++++++++++++++ .../modules_askpricesupplier.php | 4 +- .../modules/modAskPriceSupplier.class.php | 5 + htdocs/langs/fr_FR/askpricesupplier.lang | 2 +- 5 files changed, 127 insertions(+), 18 deletions(-) create mode 100644 htdocs/core/class/html.formaskpricesupplier.class.php diff --git a/htdocs/comm/askpricesupplier/list.php b/htdocs/comm/askpricesupplier/list.php index c28128e81c5..948482fe4cd 100644 --- a/htdocs/comm/askpricesupplier/list.php +++ b/htdocs/comm/askpricesupplier/list.php @@ -33,14 +33,14 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formpropal.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaskpricesupplier.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; +require_once DOL_DOCUMENT_ROOT.'/comm/askpricesupplier/class/askpricesupplier.class.php'; if (! empty($conf->projet->enabled)) require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; $langs->load('companies'); -$langs->load('propal'); +$langs->load('askpricesupplier'); $langs->load('compta'); $langs->load('bills'); $langs->load('orders'); @@ -57,7 +57,7 @@ $search_montant_ht=GETPOST('search_montant_ht','alpha'); $search_author=GETPOST('search_author','alpha'); $search_town=GETPOST('search_town','alpha'); $viewstatut=$db->escape(GETPOST('viewstatut')); -$object_statut=$db->escape(GETPOST('propal_statut')); +$object_statut=$db->escape(GETPOST('askpricesupplier_statut')); $sall=GETPOST("sall"); $mesg=(GETPOST("msg") ? GETPOST("msg") : GETPOST("mesg")); @@ -68,7 +68,7 @@ $month=GETPOST("month"); $NBLINES=4; // Security check -$module='propal'; +$module='askpricesupplier'; $dbtable=''; $objectid=''; if (! empty($user->societe_id)) $socid=$user->societe_id; @@ -121,12 +121,12 @@ if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'e * View */ -llxHeader('',$langs->trans('Proposal'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); +llxHeader('',$langs->trans('CommRequest'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); $form = new Form($db); $formother = new FormOther($db); $formfile = new FormFile($db); -$formpropal = new FormPropal($db); +$formpropal = new FormAskPriceSupplier($db); $companystatic=new Societe($db); $now=dol_now(); @@ -148,8 +148,8 @@ $sql = 'SELECT s.rowid, s.nom as name, s.town, s.client, s.code_client,'; $sql.= ' p.rowid as propalid, p.note_private, p.total_ht, p.ref, p.ref_client, p.fk_statut, p.fk_user_author, p.datep as dp, p.fin_validite as dfv,'; if (! $user->rights->societe->client->voir && ! $socid) $sql .= " sc.fk_soc, sc.fk_user,"; $sql.= ' u.login'; -$sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'propal as p'; -if ($sall) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'propaldet as pd ON p.rowid=pd.fk_propal'; +$sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'askpricesupplier as p'; +if ($sall) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'askpricesupplierdet as pd ON p.rowid=pd.fk_askpricesupplier'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'user as u ON p.fk_user_author = u.rowid'; // We'll need this table joined to the select in order to filter by sale if ($search_sale > 0 || (! $user->rights->societe->client->voir && ! $socid)) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; @@ -208,7 +208,7 @@ else if ($year > 0) if ($search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale; if ($search_user > 0) { - $sql.= " AND c.fk_c_type_contact = tc.rowid AND tc.element='propal' AND tc.source='internal' AND c.element_id = p.rowid AND c.fk_socpeople = ".$search_user; + $sql.= " AND c.fk_c_type_contact = tc.rowid AND tc.element='askpricesupplier' AND tc.source='internal' AND c.element_id = p.rowid AND c.fk_socpeople = ".$search_user; } @@ -227,7 +227,7 @@ $result=$db->query($sql); if ($result) { - $objectstatic=new Propal($db); + $objectstatic=new AskPriceSupplier($db); $userstatic=new User($db); $num = $db->num_rows($result); @@ -248,7 +248,7 @@ if ($result) if ($search_montant_ht) $param.='&search_montant_ht='.$search_montant_ht; if ($search_author) $param.='&search_author='.$search_author; if ($search_town) $param.='&search_town='.$search_town; - print_barre_liste($langs->trans('ListOfProposals').' '.($socid?'- '.$soc->name:''), $page, $_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords); + print_barre_liste($langs->trans('ListOfAskPriceSupplier').' '.($socid?'- '.$soc->name:''), $page, $_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords); // Lignes des champs de filtre print '
'; @@ -344,7 +344,7 @@ if ($result) print '
'; - $objectstatic->id=$objp->propalid; + $objectstatic->id=$objp->askpricesupplierid; $objectstatic->ref=$objp->ref; print ''; @@ -353,11 +353,11 @@ if ($result) print ''; print ''; diff --git a/htdocs/core/class/html.formaskpricesupplier.class.php b/htdocs/core/class/html.formaskpricesupplier.class.php new file mode 100644 index 00000000000..ba7a6d8fee4 --- /dev/null +++ b/htdocs/core/class/html.formaskpricesupplier.class.php @@ -0,0 +1,104 @@ + + * + * 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/core/class/html.formpropal.class.php + * \ingroup core + * \brief File of class with all html predefined components + */ + + +/** + * Class to manage generation of HTML components for proposal management + */ +class FormAskPriceSupplier +{ + var $db; + var $error; + + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + public function __construct($db) + { + $this->db = $db; + } + + /** + * Return combo list of differents status of a proposal + * Values are id of table c_propalst + * + * @param string $selected Preselected value + * @param int $short Use short labels + * @return void + */ + function selectAskPriceSupplierStatus($selected='',$short=0) + { + global $langs; + + $sql = "SELECT id, code, label, active FROM ".MAIN_DB_PREFIX."c_propalst"; + $sql .= " WHERE active = 1"; + + dol_syslog(get_class($this)."::selectAskPriceSupplierStatus", LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + print ''; + } + else + { + dol_print_error($this->db); + } + } + +} + diff --git a/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php b/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php index 68465c20512..1662e9a45bf 100644 --- a/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php +++ b/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php @@ -64,7 +64,7 @@ abstract class ModelePDFAskPriceSupplier extends CommonDocGenerator /** * Classe mere des modeles de numerotation des references de propales */ -abstract class ModeleNumRefPropales +abstract class ModeleNumRefAskPriceSupplier { var $error=''; @@ -158,7 +158,7 @@ abstract class ModeleNumRefPropales * @return int 0 if KO, 1 if OK * @deprecated Use the new function generateDocument of Propal class */ -function propale_pdf_create(DoliDB $db, Propal $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0) +function askpricesupplier_pdf_create(DoliDB $db, Propal $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0) { return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref); } diff --git a/htdocs/core/modules/modAskPriceSupplier.class.php b/htdocs/core/modules/modAskPriceSupplier.class.php index 92906ba7ae7..e9b4359ee85 100644 --- a/htdocs/core/modules/modAskPriceSupplier.class.php +++ b/htdocs/core/modules/modAskPriceSupplier.class.php @@ -250,6 +250,11 @@ class modAskPriceSupplier extends DolibarrModules /* * +DROP TABLE llx_askpricesupplier_extrafields; +DROP TABLE llx_askpricesupplierdet_extrafields; +DROP TABLE llx_askpricesupplierdet; +DROP TABLE llx_askpricesupplier; + * * CREATE TABLE IF NOT EXISTS llx_askpricesupplier ( rowid INT AUTO_INCREMENT, fk_statut INT NOT NULL, diff --git a/htdocs/langs/fr_FR/askpricesupplier.lang b/htdocs/langs/fr_FR/askpricesupplier.lang index 6daa44ce0ce..c67e37dc7c5 100644 --- a/htdocs/langs/fr_FR/askpricesupplier.lang +++ b/htdocs/langs/fr_FR/askpricesupplier.lang @@ -80,6 +80,7 @@ ConfirmReOpenAsk=Êtes-vous sûr de vouloir réouvrir la demande de prix %s Date: Wed, 28 Jan 2015 10:33:15 +0100 Subject: [PATCH 024/429] [CORE] avancement du mercredi matin (#new_ask_price). --- .../admin/askpricesupplier_extrafields.php | 157 +++++++++++++++++ .../admin/askpricesupplierdet_extrafields.php | 159 ++++++++++++++++++ htdocs/comm/askpricesupplier.php | 2 +- htdocs/comm/askpricesupplier/apercu.php | 12 +- htdocs/comm/askpricesupplier/contact.php | 26 +-- htdocs/comm/askpricesupplier/document.php | 20 +-- htdocs/comm/askpricesupplier/info.php | 14 +- htdocs/comm/askpricesupplier/list.php | 8 +- htdocs/comm/askpricesupplier/note.php | 16 +- htdocs/comm/propal.php | 2 +- htdocs/core/lib/askpricesupplier.lib.php | 30 ++-- .../tpl/document_actions_post_headers.tpl.php | 2 +- htdocs/core/tpl/notes.tpl.php | 1 + htdocs/societe/class/societe.class.php | 2 +- 14 files changed, 384 insertions(+), 67 deletions(-) create mode 100644 htdocs/comm/admin/askpricesupplier_extrafields.php create mode 100644 htdocs/comm/admin/askpricesupplierdet_extrafields.php diff --git a/htdocs/comm/admin/askpricesupplier_extrafields.php b/htdocs/comm/admin/askpricesupplier_extrafields.php new file mode 100644 index 00000000000..fa0bd058f0f --- /dev/null +++ b/htdocs/comm/admin/askpricesupplier_extrafields.php @@ -0,0 +1,157 @@ + + * Copyright (C) 2003 Jean-Louis Bergamo + * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2012 Regis Houssin + * + * 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/comm/admin/propal_extrafields.php + * \ingroup propal + * \brief Page to setup extra fields of third party + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/askpricesupplier.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; + +$langs->load("companies"); +$langs->load("admin"); +$langs->load('askpricesupplier'); + +$extrafields = new ExtraFields($db); +$form = new Form($db); + +// List of supported format +$tmptype2label=ExtraFields::$type2label; +$type2label=array(''); +foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val); + +$action=GETPOST('action', 'alpha'); +$attrname=GETPOST('attrname', 'alpha'); +$elementtype='askpricesupplier'; //Must be the $table_element of the class that manage extrafield + +if (!$user->admin) accessforbidden(); + + +/* + * Actions + */ + +require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php'; + + + +/* + * View + */ + +$textobject=$langs->transnoentitiesnoconv("Proposals"); + + +llxHeader('',$langs->trans("AskPriceSupplierSetup")); + + +$linkback=''.$langs->trans("BackToModuleList").''; +print_fiche_titre($langs->trans("AskPriceSupplierSetup"),$linkback,'setup'); + + +$head = propal_admin_prepare_head(); + +dol_fiche_head($head, 'attributes', $langs->trans("CommRequests"), 0, 'askpricesupplier'); + + +print $langs->trans("DefineHereComplementaryAttributes",$textobject).'
'."\n"; +print '
'; + +// Load attribute_label +$extrafields->fetch_name_optionals_label($elementtype); + +print "
'; - if ($objp->fk_statut == 1 && $db->jdate($objp->dfv) < ($now - $conf->propal->cloture->warning_delay)) print img_warning($langs->trans("Late")); + if ($objp->fk_statut == 1 && $db->jdate($objp->dfv) < ($now - $conf->askpricesupplier->cloture->warning_delay)) print img_warning($langs->trans("Late")); if (! empty($objp->note_private)) { print ' '; - print ''.img_picto($langs->trans("ViewPrivateNote"),'object_generic').''; + print ''.img_picto($langs->trans("ViewPrivateNote"),'object_generic').''; print ''; } print '
"; + +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print "\n"; + +$var=True; +foreach($extrafields->attribute_type as $key => $value) +{ + $var=!$var; + print ""; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print '\n"; + print '\n"; + print '\n"; + print '\n"; + print ""; + // $i++; +} + +print "
'.$langs->trans("Position").''.$langs->trans("Label").''.$langs->trans("AttributeCode").''.$langs->trans("Type").''.$langs->trans("Size").''.$langs->trans("Unique").''.$langs->trans("Required").' 
".$extrafields->attribute_pos[$key]."".$extrafields->attribute_label[$key]."".$key."".$type2label[$extrafields->attribute_type[$key]]."'.$extrafields->attribute_size[$key]."'.yn($extrafields->attribute_unique[$key])."'.yn($extrafields->attribute_required[$key])."'.img_edit().''; + print "  ".img_delete()."
"; + +dol_fiche_end(); + + +// Buttons +if ($action != 'create' && $action != 'edit') +{ + print '
'; + print ''; + print "
"; +} + + +/* ************************************************************************** */ +/* */ +/* Creation d'un champ optionnel + /* */ +/* ************************************************************************** */ + +if ($action == 'create') +{ + print "
"; + print_titre($langs->trans('NewAttribute')); + + require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_add.tpl.php'; +} + +/* ************************************************************************** */ +/* */ +/* Edition d'un champ optionnel */ +/* */ +/* ************************************************************************** */ +if ($action == 'edit' && ! empty($attrname)) +{ + print "
"; + print_titre($langs->trans("FieldEdition", $attrname)); + + require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_edit.tpl.php'; +} + +llxFooter(); + +$db->close(); diff --git a/htdocs/comm/admin/askpricesupplierdet_extrafields.php b/htdocs/comm/admin/askpricesupplierdet_extrafields.php new file mode 100644 index 00000000000..85647950276 --- /dev/null +++ b/htdocs/comm/admin/askpricesupplierdet_extrafields.php @@ -0,0 +1,159 @@ + + * Copyright (C) 2003 Jean-Louis Bergamo + * Copyright (C) 2004-2013 Laurent Destailleur + * Copyright (C) 2012 Regis Houssin + * Copyright (C) 2012 Florian Henry + * Copyright (C) 2013 Philippe Grand + * Copyright (C) 2013 Florian Henry + * + * 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/comm/admin/propaldet_extrafields.php + * \ingroup order + * \brief Page to setup extra fields of order + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/askpricesupplier.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; + + +if (!$user->admin) + accessforbidden(); + +$langs->load("admin"); +$langs->load("other"); +$langs->load("askpricesupplier"); + +$extrafields = new ExtraFields($db); +$form = new Form($db); + +// List of supported format +$tmptype2label=ExtraFields::$type2label; +$type2label=array(''); +foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val); + +$action=GETPOST('action', 'alpha'); +$attrname=GETPOST('attrname', 'alpha'); + +$elementtype='askpricesupplierdet'; //Must be the $table_element of the class that manage extrafield + +if (!$user->admin) accessforbidden(); + + +/* + * Actions + */ + +require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php'; + + + +/* + * View + */ + +$textobject=$langs->transnoentitiesnoconv("CommRequests"); + +llxHeader('',$langs->trans("AskPriceSupplierSetup")); + +$linkback=''.$langs->trans("BackToModuleList").''; +print_fiche_titre($langs->trans("AskPriceSupplierSetup"),$linkback,'setup'); + +$head = propal_admin_prepare_head(); + +dol_fiche_head($head, 'attributeslines', $langs->trans("CommRequests"), 0, 'askpricesupplier'); + + +print $langs->trans("DefineHereComplementaryAttributes",$textobject).'
'."\n"; +print '
'; + +// Load attribute_label +$extrafields->fetch_name_optionals_label($elementtype); + +print ""; + +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print "\n"; + +$var=True; +foreach($extrafields->attribute_type as $key => $value) +{ + $var=!$var; + print ""; + print "\n"; + print "\n"; + print "\n"; + print '\n"; + print '\n"; + print '\n"; + print '\n"; + print ""; +} + +print "
'.$langs->trans("Label").''.$langs->trans("AttributeCode").''.$langs->trans("Type").''.$langs->trans("Size").''.$langs->trans("Unique").''.$langs->trans("Required").' 
".$extrafields->attribute_label[$key]."".$key."".$type2label[$extrafields->attribute_type[$key]]."'.$extrafields->attribute_size[$key]."'.yn($extrafields->attribute_unique[$key])."'.yn($extrafields->attribute_required[$key])."'.img_edit().''; + print "  ".img_delete()."
"; + +dol_fiche_end(); + + +// Buttons +if ($action != 'create' && $action != 'edit') +{ + print '
'; + print "".$langs->trans("NewAttribute").""; + print "
"; +} + + +/* ************************************************************************** */ +/* */ +/* Creation d'un champ optionnel */ +/* */ +/* ************************************************************************** */ + +if ($action == 'create') +{ + print "
"; + print_titre($langs->trans('NewAttribute')); + + require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_add.tpl.php'; +} + +/* ************************************************************************** */ +/* */ +/* Edition d'un champ optionnel */ +/* */ +/* ************************************************************************** */ +if ($action == 'edit' && ! empty($attrname)) +{ + print "
"; + print_titre($langs->trans("FieldEdition", $attrname)); + + require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_edit.tpl.php'; +} + +llxFooter(); + +$db->close(); diff --git a/htdocs/comm/askpricesupplier.php b/htdocs/comm/askpricesupplier.php index bd694f4a925..1cdd560bb49 100644 --- a/htdocs/comm/askpricesupplier.php +++ b/htdocs/comm/askpricesupplier.php @@ -1190,7 +1190,7 @@ llxHeader('', $langs->trans('CommRequests'), 'EN:Commercial_Proposals|FR:Proposi $form = new Form($db); $formother = new FormOther($db); $formfile = new FormFile($db); -$formpropal = new FormPropal($db); +$formaskpricesupplier = new FormAskPriceSupplier($db); $companystatic = new Societe($db); $now = dol_now(); diff --git a/htdocs/comm/askpricesupplier/apercu.php b/htdocs/comm/askpricesupplier/apercu.php index 87281e7ea63..a434bca9354 100644 --- a/htdocs/comm/askpricesupplier/apercu.php +++ b/htdocs/comm/askpricesupplier/apercu.php @@ -27,11 +27,11 @@ */ require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/comm/askpricesupplier/class/askpricesupplier.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/askpricesupplier.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; -$langs->load('propal'); +$langs->load('askpricesupplier'); $langs->load("bills"); $langs->load('compta'); @@ -40,7 +40,7 @@ $socid=0; $id = GETPOST('id','int'); $ref = GETPOST("ref"); if ($user->societe_id) $socid=$user->societe_id; -$result = restrictedArea($user, 'propal', $id); +$result = restrictedArea($user, 'askpricesupplier', $id); /* @@ -52,7 +52,7 @@ llxHeader(); if ($id > 0 || ! empty($ref)) { - $object = new Propal($db); + $object = new AskPriceSupplier($db); if ($object->fetch($id,$ref) > 0) { @@ -60,7 +60,7 @@ if ($id > 0 || ! empty($ref)) $soc->fetch($object->socid); $head = propal_prepare_head($object); - dol_fiche_head($head, 'preview', $langs->trans('Proposal'), 0, 'propal'); + dol_fiche_head($head, 'preview', $langs->trans('CommRequest'), 0, 'askpricesupplier'); /* diff --git a/htdocs/comm/askpricesupplier/contact.php b/htdocs/comm/askpricesupplier/contact.php index 6a0a1076e62..7ebb852d9bb 100644 --- a/htdocs/comm/askpricesupplier/contact.php +++ b/htdocs/comm/askpricesupplier/contact.php @@ -25,9 +25,9 @@ */ require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; +require_once DOL_DOCUMENT_ROOT.'/comm/askpricesupplier/class/askpricesupplier.class.php'; require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/askpricesupplier.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; @@ -43,9 +43,9 @@ $action=GETPOST('action','alpha'); // Security check if ($user->societe_id) $socid=$user->societe_id; -$result = restrictedArea($user, 'propal', $id); +$result = restrictedArea($user, 'askpricesupplier', $id); -$object = new Propal($db); +$object = new AskPriceSupplier($db); // Load object if ($id > 0 || ! empty($ref)) @@ -69,7 +69,7 @@ if (! $error) } else { - header('Location: '.DOL_URL_ROOT.'/comm/propal/list.php'); + header('Location: '.DOL_URL_ROOT.'/comm/askpricesupplier/list.php'); exit; } @@ -78,7 +78,7 @@ else * Ajout d'un nouveau contact */ -if ($action == 'addcontact' && $user->rights->propale->creer) +if ($action == 'addcontact' && $user->rights->askpricesupplier->creer) { if ($object->id > 0) { @@ -106,7 +106,7 @@ if ($action == 'addcontact' && $user->rights->propale->creer) } // Bascule du statut d'un contact -else if ($action == 'swapstatut' && $user->rights->propale->creer) +else if ($action == 'swapstatut' && $user->rights->askpricesupplier->creer) { if ($object->id > 0) { @@ -115,7 +115,7 @@ else if ($action == 'swapstatut' && $user->rights->propale->creer) } // Efface un contact -else if ($action == 'deletecontact' && $user->rights->propale->creer) +else if ($action == 'deletecontact' && $user->rights->askpricesupplier->creer) { $result = $object->delete_contact($lineid); @@ -130,7 +130,7 @@ else if ($action == 'deletecontact' && $user->rights->propale->creer) } } -else if ($action == 'setaddress' && $user->rights->propale->creer) +else if ($action == 'setaddress' && $user->rights->askpricesupplier->creer) { $result=$object->setDeliveryAddress($_POST['fk_address']); if ($result < 0) dol_print_error($db,$object->error); @@ -141,7 +141,7 @@ else if ($action == 'setaddress' && $user->rights->propale->creer) * View */ -llxHeader('',$langs->trans('Proposal'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); +llxHeader('',$langs->trans('CommRequest'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); $form = new Form($db); $formcompany= new FormCompany($db); @@ -150,14 +150,14 @@ $formother = new FormOther($db); if ($object->id > 0) { $head = propal_prepare_head($object); - dol_fiche_head($head, 'contact', $langs->trans("Proposal"), 0, 'propal'); + dol_fiche_head($head, 'contact', $langs->trans("CommRequest"), 0, 'askpricesupplier'); /* * Propal synthese pour rappel */ print ''; - $linkback=''.$langs->trans("BackToList").''; + $linkback=''.$langs->trans("BackToList").''; // Ref print ''."\n"; // Do not include sections without management permission // -require DOL_DOCUMENT_ROOT.'/core/class/WorkboardResponse.class.php'; +require DOL_DOCUMENT_ROOT.'/core/class/workboardresponse.class.php'; // Number of actions to do (late) if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->read) From 0b74ddf5c32d4582ec3cf5f143e040c335966bf2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Mar 2015 14:23:40 +0100 Subject: [PATCH 221/429] Doxygen --- htdocs/expedition/class/expeditionbatch.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/expedition/class/expeditionbatch.class.php b/htdocs/expedition/class/expeditionbatch.class.php index 38fe5078d9e..fd424fc4990 100644 --- a/htdocs/expedition/class/expeditionbatch.class.php +++ b/htdocs/expedition/class/expeditionbatch.class.php @@ -32,9 +32,9 @@ class ExpeditionLineBatch extends CommonObject private static $_table_element='expeditiondet_batch'; //!< Name of table without prefix where object is stored var $id; - var $sellby=''; - var $eatby=''; - var $batch=''; + var $sellby; + var $eatby; + var $batch; var $dluo_qty; var $entrepot_id; var $fk_origin_stock; From db4bbf46fc98a42b7007564bab4c165ecb6229cc Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Tue, 10 Mar 2015 14:43:13 +0100 Subject: [PATCH 222/429] New : allow to edit social contribution amount --- htdocs/compta/sociales/charges.php | 77 +++++++++++-------- .../sociales/class/chargesociales.class.php | 3 +- 2 files changed, 49 insertions(+), 31 deletions(-) diff --git a/htdocs/compta/sociales/charges.php b/htdocs/compta/sociales/charges.php index afe2c27a3be..a7a9e76a78b 100644 --- a/htdocs/compta/sociales/charges.php +++ b/htdocs/compta/sociales/charges.php @@ -77,8 +77,10 @@ if ($action == 'confirm_delete' && $confirm == 'yes') // Add social contribution if ($action == 'add' && $user->rights->tax->charges->creer) { - $dateech=@dol_mktime($_POST["echhour"],$_POST["echmin"],$_POST["echsec"],$_POST["echmonth"],$_POST["echday"],$_POST["echyear"]); - $dateperiod=@dol_mktime($_POST["periodhour"],$_POST["periodmin"],$_POST["periodsec"],$_POST["periodmonth"],$_POST["periodday"],$_POST["periodyear"]); + $dateech=@dol_mktime(GETPOST('echhour'),GETPOST('echmin'),GETPOST('echsec'),GETPOST('echmonth'),GETPOST('echday'),GETPOST('echyear')); + $dateperiod=@dol_mktime(GETPOST('periodhour'),GETPOST('periodmin'),GETPOST('periodsec'),GETPOST('periodmonth'),GETPOST('periodday'),GETPOST('periodyear')); + $amount=GETPOST('amount'); + $actioncode=GETPOST('actioncode'); if (! $dateech) { setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateDue")), 'errors'); @@ -89,12 +91,12 @@ if ($action == 'add' && $user->rights->tax->charges->creer) setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Period")), 'errors'); $action = 'create'; } - elseif (! $_POST["actioncode"] > 0) + elseif (! $actioncode > 0) { setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Type")), 'errors'); $action = 'create'; } - elseif (! $_POST["amount"]) + elseif (empty($amount)) { setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Amount")), 'errors'); $action = 'create'; @@ -103,11 +105,11 @@ if ($action == 'add' && $user->rights->tax->charges->creer) { $chargesociales=new ChargeSociales($db); - $chargesociales->type=$_POST["actioncode"]; - $chargesociales->lib=$_POST["label"]; + $chargesociales->type=$actioncode; + $chargesociales->lib=GETPOST('label'); $chargesociales->date_ech=$dateech; $chargesociales->periode=$dateperiod; - $chargesociales->amount=$_POST["amount"]; + $chargesociales->amount=price2num($amount); $id=$chargesociales->create($user); if ($id <= 0) @@ -120,32 +122,39 @@ if ($action == 'add' && $user->rights->tax->charges->creer) if ($action == 'update' && ! $_POST["cancel"] && $user->rights->tax->charges->creer) { - $dateech=dol_mktime($_POST["echhour"],$_POST["echmin"],$_POST["echsec"],$_POST["echmonth"],$_POST["echday"],$_POST["echyear"]); - $dateperiod=dol_mktime($_POST["periodhour"],$_POST["periodmin"],$_POST["periodsec"],$_POST["periodmonth"],$_POST["periodday"],$_POST["periodyear"]); - if (! $dateech) - { - setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateDue")), 'errors'); - $action = 'edit'; - } - elseif (! $dateperiod) - { - setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Period")), 'errors'); - $action = 'edit'; - } + $dateech=dol_mktime(GETPOST('echhour'),GETPOST('echmin'),GETPOST('echsec'),GETPOST('echmonth'),GETPOST('echday'),GETPOST('echyear')); + $dateperiod=dol_mktime(GETPOST('periodhour'),GETPOST('periodmin'),GETPOST('periodsec'),GETPOST('periodmonth'),GETPOST('periodday'),GETPOST('periodyear')); + $amount=GETPOST('amount'); + if (! $dateech) + { + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("DateDue")), 'errors'); + $action = 'edit'; + } + elseif (! $dateperiod) + { + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Period")), 'errors'); + $action = 'edit'; + } + elseif (empty($amount)) + { + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Amount")), 'errors'); + $action = 'edit'; + } else { - $chargesociales=new ChargeSociales($db); - $result=$chargesociales->fetch($_GET["id"]); + $chargesociales=new ChargeSociales($db); + $result=$chargesociales->fetch($id); - $chargesociales->lib=$_POST["label"]; - $chargesociales->date_ech=$dateech; - $chargesociales->periode=$dateperiod; + $chargesociales->lib=GETPOST('label'); + $chargesociales->date_ech=$dateech; + $chargesociales->periode=$dateperiod; + $chargesociales->amount=price2num($amount); - $result=$chargesociales->update($user); - if ($result <= 0) - { - setEventMessage($chargesociales->error, 'errors'); - } + $result=$chargesociales->update($user); + if ($result <= 0) + { + setEventMessage($chargesociales->error, 'errors'); + } } } @@ -437,7 +446,15 @@ if ($id > 0) } // Amount - print ''; + if ($action == 'edit') + { + print '"; + } + else { + print ''; + } // Status print ''; diff --git a/htdocs/compta/sociales/class/chargesociales.class.php b/htdocs/compta/sociales/class/chargesociales.class.php index 96f55ce34ba..6f68e76303c 100644 --- a/htdocs/compta/sociales/class/chargesociales.class.php +++ b/htdocs/compta/sociales/class/chargesociales.class.php @@ -266,7 +266,8 @@ class ChargeSociales extends CommonObject $sql = "UPDATE ".MAIN_DB_PREFIX."chargesociales"; $sql.= " SET libelle='".$this->db->escape($this->lib)."',"; $sql.= " date_ech='".$this->db->idate($this->date_ech)."',"; - $sql.= " periode='".$this->db->idate($this->periode)."'"; + $sql.= " periode='".$this->db->idate($this->periode)."',"; + $sql.= " amount='".price2num($this->amount,'MT')."'"; $sql.= " WHERE rowid=".$this->id; dol_syslog(get_class($this)."::update", LOG_DEBUG); From f90df57dc567d67c6ac341d57d94d839ae0b9007 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Tue, 10 Mar 2015 14:49:36 +0100 Subject: [PATCH 223/429] New : disallow social contribution modification if paid --- htdocs/compta/sociales/charges.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/sociales/charges.php b/htdocs/compta/sociales/charges.php index a7a9e76a78b..251bd6f7f6a 100644 --- a/htdocs/compta/sociales/charges.php +++ b/htdocs/compta/sociales/charges.php @@ -483,7 +483,7 @@ if ($id > 0) print "
\n"; // Edit - if ($user->rights->tax->charges->creer) + if ($object->paye == 0 && $user->rights->tax->charges->creer) { print "id&action=edit\">".$langs->trans("Modify").""; } @@ -517,7 +517,7 @@ if ($id > 0) } else { - /* Charge non trouv� */ + /* Social contribution not found */ dol_print_error('',$object->error); } } From 978dc8170dfff1a03138e7dd476a4a2c06c7a490 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Tue, 10 Mar 2015 14:56:58 +0100 Subject: [PATCH 224/429] Fix : display proposal date on proposal list --- htdocs/comm/propal/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index ba0a49f2772..21d774e36bb 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -388,7 +388,7 @@ if ($result) // Date proposal print '
\n"; // Date end validity From 6113a5b0f50b87e4fc4ac3a4c09e52c12055b28d Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Tue, 10 Mar 2015 15:27:36 +0100 Subject: [PATCH 225/429] FIX : [bug #1883] missing field in SQL installation --- htdocs/install/mysql/tables/llx_product_fournisseur_price.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql b/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql index f3905ab4fbe..fb5184715d1 100755 --- a/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql +++ b/htdocs/install/mysql/tables/llx_product_fournisseur_price.sql @@ -40,5 +40,6 @@ create table llx_product_fournisseur_price info_bits integer NOT NULL DEFAULT 0, fk_user integer, fk_supplier_price_expression integer, -- Link to the rule for dynamic price calculation - import_key varchar(14) -- Import key + import_key varchar(14), -- Import key + delivery_time_days integer )ENGINE=innodb; From fa628bba6f92cae12e0e7ec7f34a050097eafedc Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Tue, 10 Mar 2015 15:34:48 +0100 Subject: [PATCH 226/429] Fix SQL error when installing --- htdocs/install/mysql/tables/llx_projet_task_time.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_projet_task_time.sql b/htdocs/install/mysql/tables/llx_projet_task_time.sql index d58b35146a7..6c34440a58b 100644 --- a/htdocs/install/mysql/tables/llx_projet_task_time.sql +++ b/htdocs/install/mysql/tables/llx_projet_task_time.sql @@ -22,7 +22,7 @@ create table llx_projet_task_time fk_task integer NOT NULL, task_date date, -- only the day task_datehour datetime, -- day + hour - task_date_withhour integer DEFAULT 0; -- 0 by default, 1 if date was entered with start hour + task_date_withhour integer DEFAULT 0, -- 0 by default, 1 if date was entered with start hour task_duration double, fk_user integer, thm double(24,8), From 05a2a6af00f1c2a2934574d8d961fe3e27b41a7e Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Tue, 10 Mar 2015 15:53:02 +0100 Subject: [PATCH 227/429] FIX : [bug #1900] Unable to remove a salary with enough permissions --- htdocs/compta/salaries/fiche.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/salaries/fiche.php b/htdocs/compta/salaries/fiche.php index 34a2b9b4435..dac250eabc7 100644 --- a/htdocs/compta/salaries/fiche.php +++ b/htdocs/compta/salaries/fiche.php @@ -365,7 +365,7 @@ if ($id) print "
\n"; if ($salpayment->rappro == 0) { - if (! empty($user->rights->tax->charges->supprimer)) + if (! empty($user->rights->salaries->delete)) { print ''.$langs->trans("Delete").''; } From 0df2b4cc26cc8c76d7f5338e3a611a11a9cec037 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Mar 2015 16:14:46 +0100 Subject: [PATCH 228/429] Fix check parameters --- htdocs/societe/class/societe.class.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index a18aedfcc1b..dc6503646b4 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1158,12 +1158,21 @@ class Societe extends CommonObject * @param boolean $case Case sensitive (true/false) * @param boolean $similar Add test if string inside name into database, or name into database inside string. Do not use this: Not compatible with other database. * @param string $clause Clause for filters - * @return array Array of thirdparties object + * @return array|int <0 if KO, array of thirdparties object if OK */ function searchByName($name, $type='0', $filters = array(), $exact = false, $case = false, $similar = false, $clause = 'AND') { $thirdparties = array(); + dol_syslog("searchByName name=".$name." type=".$type." exact=".$exact); + + // Check parameter + if (empty($name)) + { + $this->errors[]='ErrorBadValueForParameter'; + return -1; + } + // Generation requete recherche $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."societe"; $sql.= " WHERE entity IN (".getEntity('category',1).")"; @@ -1242,7 +1251,7 @@ class Societe extends CommonObject } else { - $this->error=$this->db->error().' sql='.$sql; + $this->error=$this->db->lasterror(); return -1; } } From 154865f545466e212e8f85f4aa34ab3ae66cb2e3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Mar 2015 16:37:39 +0100 Subject: [PATCH 229/429] Fix return error when it is not --- htdocs/societe/class/societe.class.php | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index dc6503646b4..181c9f3ec8d 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -953,7 +953,7 @@ class Societe extends CommonObject * @param string $idprof2 Prof id 2 of third party (Warning, this can return several records) * @param string $idprof3 Prof id 3 of third party (Warning, this can return several records) * @param string $idprof4 Prof id 4 of third party (Warning, this can return several records) - * @return int >0 if OK, <0 if KO or if two records found for same ref or idprof. + * @return int >0 if OK, <0 if KO or if two records found for same ref or idprof, 0 if not found. */ function fetch($rowid, $ref='', $ref_ext='', $ref_int='', $idprof1='',$idprof2='',$idprof3='',$idprof4='') { @@ -1008,7 +1008,7 @@ class Societe extends CommonObject { $this->error='Fetch several records found for ref='.$ref; dol_syslog($this->error, LOG_ERR); - $result = -1; + $result = -2; } if ($num) { @@ -1128,17 +1128,15 @@ class Societe extends CommonObject $this->fetch_optionals($this->id,$extralabels); } else - { - $this->error='Fetch no third party found for id='.$rowid; - dol_syslog($this->error, LOG_ERR); - $result = -2; + { + $result = 0; } $this->db->free($resql); } else - { - $this->error=$this->db->error(); + { + $this->error=$this->db->lasterror(); $result = -3; } From ea0964d1ebaba35685c215afe0cc11cdf8a52390 Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Tue, 10 Mar 2015 17:17:02 +0100 Subject: [PATCH 230/429] Update export.class.php add specific choice of prefix for export (usefull with many dolibarr exporting data) --- htdocs/exports/class/export.class.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/exports/class/export.class.php b/htdocs/exports/class/export.class.php index d332592da6d..9ff540a92f2 100644 --- a/htdocs/exports/class/export.class.php +++ b/htdocs/exports/class/export.class.php @@ -524,7 +524,10 @@ class Export if ($resql) { //$this->array_export_label[$indice] - $filename="export_".$datatoexport; + if ($conf->global->EXPORT_PREFIX) + $filename=$conf->global->EXPORT_PREFIX_SPEC."_".$datatoexport; + else + $filename="export_".$datatoexport; $filename.='.'.$objmodel->getDriverExtension(); $dirname=$conf->export->dir_temp.'/'.$user->id; From 364b1854424aacc1fcb54f12503b9220f2e9b5a3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Mar 2015 18:33:14 +0100 Subject: [PATCH 231/429] Fix sql syntax --- htdocs/core/class/extrafields.class.php | 88 ++++++++++++++----------- 1 file changed, 51 insertions(+), 37 deletions(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index f1ad5d6687f..5a79c5ccf97 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -48,10 +48,12 @@ class ExtraFields var $attribute_required; // Array to store parameters of attribute (used in select type) var $attribute_param; - // Int to store position of attribute + // Array to store position of attribute var $attribute_pos; - // Int to store if attribute is editable regardless of the document status + // Array to store if attribute is editable regardless of the document status var $attribute_alwayseditable; + // Array to store permission to check + var $attribute_perms; var $error; var $errno; @@ -90,6 +92,7 @@ class ExtraFields $this->attribute_elementtype = array(); $this->attribute_unique = array(); $this->attribute_required = array(); + $this->attribute_perms = array(); } /** @@ -106,9 +109,10 @@ class ExtraFields * @param string $default_value Defaulted value * @param array $param Params for field * @param int $alwayseditable Is attribute always editable regardless of the document status + * @param string $perms Permission to check * @return int <=0 if KO, >0 if OK */ - function addExtraField($attrname, $label, $type, $pos, $size, $elementtype, $unique=0, $required=0, $default_value='', $param=0, $alwayseditable=0) + function addExtraField($attrname, $label, $type, $pos, $size, $elementtype, $unique=0, $required=0, $default_value='', $param=0, $alwayseditable=0, $perms='') { if (empty($attrname)) return -1; if (empty($label)) return -1; @@ -124,7 +128,7 @@ class ExtraFields if ($result > 0 || $err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' || $type == 'separate') { // Add declaration of field into table - $result2=$this->create_label($attrname,$label,$type,$pos,$size,$elementtype, $unique, $required, $param, $alwayseditable); + $result2=$this->create_label($attrname,$label,$type,$pos,$size,$elementtype, $unique, $required, $param, $alwayseditable, $perms); $err2=$this->errno; if ($result2 > 0 || ($err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' && $err2 == 'DB_ERROR_RECORD_ALREADY_EXISTS')) { @@ -225,9 +229,10 @@ class ExtraFields * @param int $required Is field required or not * @param array||string $param Params for field (ex for select list : array('options' => array(value'=>'label of option')) ) * @param int $alwayseditable Is attribute always editable regardless of the document status + * @param string $perms Permission to check * @return int <=0 if KO, >0 if OK */ - private function create_label($attrname, $label='', $type='', $pos=0, $size=0, $elementtype='member', $unique=0, $required=0, $param='', $alwayseditable=0) + private function create_label($attrname, $label='', $type='', $pos=0, $size=0, $elementtype='member', $unique=0, $required=0, $param='', $alwayseditable=0, $perms='') { global $conf; @@ -251,7 +256,7 @@ class ExtraFields $params=''; } - $sql = "INSERT INTO ".MAIN_DB_PREFIX."extrafields(name, label, type, pos, size, entity, elementtype, fieldunique, fieldrequired, param, alwayseditable)"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."extrafields(name, label, type, pos, size, entity, elementtype, fieldunique, fieldrequired, param, alwayseditable, perms)"; $sql.= " VALUES('".$attrname."',"; $sql.= " '".$this->db->escape($label)."',"; $sql.= " '".$type."',"; @@ -262,7 +267,8 @@ class ExtraFields $sql.= " '".$unique."',"; $sql.= " '".$required."',"; $sql.= " '".$params."',"; - $sql.= " '".$alwayseditable."'"; + $sql.= " '".$alwayseditable."',"; + $sql.= " ".($perms?"'".$this->db->escape($perms)."'":"null"); $sql.=')'; dol_syslog(get_class($this)."::create_label", LOG_DEBUG); @@ -363,9 +369,10 @@ class ExtraFields * @param int $pos Position of attribute * @param array $param Params for field (ex for select list : array('options' => array(value'=>'label of option')) ) * @param int $alwayseditable Is attribute always editable regardless of the document status + * @param string $perms Permission to check * @return int >0 if OK, <=0 if KO */ - function update($attrname,$label,$type,$length,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0) + function update($attrname,$label,$type,$length,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0, $perms='') { if ($elementtype == 'thirdparty') $elementtype='societe'; @@ -402,7 +409,7 @@ class ExtraFields { if ($label) { - $result=$this->update_label($attrname,$label,$type,$length,$elementtype,$unique,$required,$pos,$param,$alwayseditable); + $result=$this->update_label($attrname,$label,$type,$length,$elementtype,$unique,$required,$pos,$param,$alwayseditable,$perms); } if ($result > 0) { @@ -451,12 +458,13 @@ class ExtraFields * @param int $pos Position of attribute * @param array $param Params for field (ex for select list : array('options' => array(value'=>'label of option')) ) * @param int $alwayseditable Is attribute always editable regardless of the document status + * @param string $perms Permission to check * @return int <=0 if KO, >0 if OK */ - private function update_label($attrname,$label,$type,$size,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0) + private function update_label($attrname,$label,$type,$size,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0,$perms='') { global $conf; - dol_syslog(get_class($this)."::update_label ".$attrname.", ".$label.", ".$type.", ".$size.", ".$elementtype.", ".$unique.", ".$required); + dol_syslog(get_class($this)."::update_label ".$attrname.", ".$label.", ".$type.", ".$size.", ".$elementtype.", ".$unique.", ".$required.", ".$pos.", ".$alwayseditable.", ".$perms); if ($elementtype == 'thirdparty') $elementtype='societe'; @@ -485,6 +493,7 @@ class ExtraFields $sql.= " elementtype,"; $sql.= " fieldunique,"; $sql.= " fieldrequired,"; + $sql.= " perms,"; $sql.= " pos,"; $sql.= " alwayseditable,"; $sql.= " param"; @@ -497,6 +506,7 @@ class ExtraFields $sql.= " '".$elementtype."',"; $sql.= " '".$unique."',"; $sql.= " '".$required."',"; + $sql.= " ".($perms?"'".$this->db->escape($perms)."'":"null").","; $sql.= " '".$pos."',"; $sql.= " '".$alwayseditable."',"; $sql.= " '".$param."'"; @@ -542,7 +552,7 @@ class ExtraFields // For avoid conflicts with external modules if (!$forceload && !empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) return $array_name_label; - $sql = "SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired,param,pos,alwayseditable"; + $sql = "SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired,param,pos,alwayseditable,perms"; $sql.= " FROM ".MAIN_DB_PREFIX."extrafields"; $sql.= " WHERE entity IN (0,".$conf->entity.")"; if ($elementtype) $sql.= " AND elementtype = '".$elementtype."'"; @@ -571,6 +581,7 @@ class ExtraFields $this->attribute_param[$tab->name]=unserialize($tab->param); $this->attribute_pos[$tab->name]=$tab->pos; $this->attribute_alwayseditable[$tab->name]=$tab->alwayseditable; + $this->attribute_perms[$tab->name]=$tab->perms; } } } @@ -603,6 +614,8 @@ class ExtraFields $unique=$this->attribute_unique[$key]; $required=$this->attribute_required[$key]; $param=$this->attribute_param[$key]; + $perms=$this->attribute_perms[$key]; + if ($type == 'date') { $showsize=10; @@ -883,7 +896,7 @@ class ExtraFields elseif ($type == 'chkbxlst') { $value_arr = explode(',', $value); - + if (is_array($param['options'])) { $param_list = array_keys($param['options']); $InfoFieldList = explode(":", $param_list[0]); @@ -893,7 +906,7 @@ class ExtraFields // 3 : key field parent (for dependent lists) // 4 : where clause filter on column or table extrafield, syntax field='value' or extra.field=value $keyList = (empty($InfoFieldList[2]) ? 'rowid' : $InfoFieldList[2] . ' as rowid'); - + if (count($InfoFieldList) > 3 && ! empty($InfoFieldList[3])) { list ( $parentName, $parentField ) = explode('|', $InfoFieldList[3]); $keyList .= ', ' . $parentField; @@ -905,13 +918,13 @@ class ExtraFields $keyList = $InfoFieldList[2] . ' as rowid'; } } - + $fields_label = explode('|', $InfoFieldList[1]); if (is_array($fields_label)) { $keyList .= ', '; $keyList .= implode(', ', $fields_label); } - + $sqlwhere = ''; $sql = 'SELECT ' . $keyList; $sql .= ' FROM ' . MAIN_DB_PREFIX . $InfoFieldList[0]; @@ -927,7 +940,7 @@ class ExtraFields $sqlwhere .= ' WHERE 1'; } if (in_array($InfoFieldList[0], array ( - 'tablewithentity' + 'tablewithentity' ))) $sqlwhere .= ' AND entity = ' . $conf->entity; // Some tables may have field, some other not. For the moment we disable it. // $sql.=preg_replace('/^ AND /','',$sqlwhere); @@ -941,7 +954,7 @@ class ExtraFields while ( $i < $num ) { $labeltoshow = ''; $obj = $this->db->fetch_object($resql); - + // Several field into label (eq table:code|libelle:rowid) $fields_label = explode('|', $InfoFieldList[1]); if (is_array($fields_label)) { @@ -953,7 +966,7 @@ class ExtraFields $labeltoshow = $obj->$InfoFieldList[1]; } $labeltoshow = dol_trunc($labeltoshow, 45); - + if (is_array($value_arr) && in_array($obj->rowid, $value_arr)) { foreach ( $fields_label as $field_toshow ) { $translabel = $langs->trans($obj->$field_toshow); @@ -965,9 +978,9 @@ class ExtraFields } $out .= 'rowid . '"'; - + $out .= 'checked="checked"'; - + $out .= '/>' . $labeltoshow . '
'; } else { if (! $notrans) { @@ -980,31 +993,31 @@ class ExtraFields } if (empty($labeltoshow)) $labeltoshow = '(not defined)'; - + if (is_array($value_arr) && in_array($obj->rowid, $value_arr)) { $out .= 'rowid . '"'; - + $out .= 'checked="checked"'; $out .= ''; - + $out .= '/>' . $labeltoshow . '
'; } - + if (! empty($InfoFieldList[3])) { $parent = $parentName . ':' . $obj->{$parentField}; } - + $out .= 'rowid . '"'; - + $out .= ((is_array($value_arr) && in_array($obj->rowid, $value_arr)) ? ' checked="checked" ' : ''); ; $out .= ''; - + $out .= '/>' . $labeltoshow . '
'; } - + $i ++; } $this->db->free($resql); @@ -1040,6 +1053,7 @@ class ExtraFields $unique=$this->attribute_unique[$key]; $required=$this->attribute_required[$key]; $params=$this->attribute_param[$key]; + $perms=$this->attribute_perms[$key]; if ($type == 'date') { $showsize=10; @@ -1172,24 +1186,24 @@ class ExtraFields elseif ($type == 'chkbxlst') { $value_arr = explode(',', $value); - + $param_list = array_keys($params['options']); $InfoFieldList = explode(":", $param_list[0]); - + $selectkey = "rowid"; $keyList = 'rowid'; - + if (count($InfoFieldList) >= 3) { $selectkey = $InfoFieldList[2]; $keyList = $InfoFieldList[2] . ' as rowid'; } - + $fields_label = explode('|', $InfoFieldList[1]); if (is_array($fields_label)) { $keyList .= ', '; $keyList .= implode(', ', $fields_label); } - + $sql = 'SELECT ' . $keyList; $sql .= ' FROM ' . MAIN_DB_PREFIX . $InfoFieldList[0]; if (strpos($InfoFieldList[4], 'extra') !== false) { @@ -1197,14 +1211,14 @@ class ExtraFields } // $sql.= " WHERE ".$selectkey."='".$this->db->escape($value)."'"; // $sql.= ' AND entity = '.$conf->entity; - + dol_syslog(get_class($this) . ':showOutputField:$type=chkbxlst',LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { $value = ''; // value was used, so now we reste it to use it to build final output - + while ( $obj = $this->db->fetch_object($resql) ) { - + // Several field into label (eq table:code|libelle:rowid) $fields_label = explode('|', $InfoFieldList[1]); if (is_array($value_arr) && in_array($obj->rowid, $value_arr)) { From 548e720ca2c76b45417f27ca990ebe46d5615499 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Mar 2015 19:31:04 +0100 Subject: [PATCH 232/429] Uniformize code --- htdocs/comm/propal.php | 17 ++++++++--------- htdocs/core/tpl/extrafields_view.tpl.php | 2 +- htdocs/fourn/commande/card.php | 22 +++++++++++----------- 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index 98f662e3d5d..4a45f724f01 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -2003,8 +2003,7 @@ if ($action == 'create') // Amount HT print '
'; - print ''; - print ''; + print ''; // Margin Infos if (! empty($conf->margin->enabled)) { @@ -2016,27 +2015,27 @@ if ($action == 'create') // Amount VAT print ''; - print ''; - print ''; + print ''; + print ''; // Amount Local Taxes if ($mysoc->localtax1_assuj == "1" || $object->total_localtax1 != 0) // Localtax1 { print ''; - print ''; + print ''; print ''; } if ($mysoc->localtax2_assuj == "1" || $object->total_localtax2 != 0) // Localtax2 { print ''; - print ''; - print ''; + print ''; + print ''; } // Amount TTC print ''; - print ''; - print ''; + print ''; + print ''; // Statut print ''; diff --git a/htdocs/core/tpl/extrafields_view.tpl.php b/htdocs/core/tpl/extrafields_view.tpl.php index 7f0115b83bc..b6b26cc380d 100644 --- a/htdocs/core/tpl/extrafields_view.tpl.php +++ b/htdocs/core/tpl/extrafields_view.tpl.php @@ -65,7 +65,7 @@ if (empty($reshook) && ! empty($extrafields->attribute_label)) print ''; print '
'.$langs->trans('Ref').''; @@ -194,7 +194,7 @@ if ($object->id > 0) if ($action == 'editdelivery_address') { - $formother->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$object->socid,'fk_address','propal',$object->id); + $formother->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$object->socid,'fk_address','askpricesupplier',$object->id); } else { diff --git a/htdocs/comm/askpricesupplier/document.php b/htdocs/comm/askpricesupplier/document.php index d224c20bc97..5dd239e1cfa 100644 --- a/htdocs/comm/askpricesupplier/document.php +++ b/htdocs/comm/askpricesupplier/document.php @@ -26,8 +26,8 @@ */ require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/comm/askpricesupplier/class/askpricesupplier.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/askpricesupplier.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; @@ -47,7 +47,7 @@ if (! empty($user->societe_id)) $action=''; $socid = $user->societe_id; } -$result = restrictedArea($user, 'propal', $id); +$result = restrictedArea($user, 'askpricesupplier', $id); // Get parameters $sortfield = GETPOST("sortfield",'alpha'); @@ -60,12 +60,12 @@ $pagenext = $page + 1; if (! $sortorder) $sortorder="ASC"; if (! $sortfield) $sortfield="name"; -$object = new Propal($db); +$object = new AskPriceSupplier($db); $object->fetch($id,$ref); if ($object->id > 0) { $object->fetch_thirdparty(); - $upload_dir = $conf->propal->dir_output.'/'.dol_sanitizeFileName($object->ref); + $upload_dir = $conf->askpricesupplier->dir_output.'/'.dol_sanitizeFileName($object->ref); include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php'; } @@ -79,7 +79,7 @@ if ($object->id > 0) * View */ -llxHeader('',$langs->trans('Proposal'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); +llxHeader('',$langs->trans('CommRequest'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); $form = new Form($db); @@ -88,7 +88,7 @@ if ($object->id > 0) $upload_dir = $conf->propal->dir_output.'/'.dol_sanitizeFileName($object->ref); $head = propal_prepare_head($object); - dol_fiche_head($head, 'document', $langs->trans('Proposal'), 0, 'propal'); + dol_fiche_head($head, 'document', $langs->trans('CommRequest'), 0, 'askpricesupplier'); // Construit liste des fichiers $filearray=dol_dir_list($upload_dir,"files",0,'','(\.meta|_preview\.png)$',$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); @@ -101,7 +101,7 @@ if ($object->id > 0) print ''; - $linkback=''.$langs->trans("BackToList").''; + $linkback=''.$langs->trans("BackToList").''; // Ref print ''; print ''; print '
'.$langs->trans('Ref').''; @@ -130,8 +130,8 @@ if ($object->id > 0) print ''; - $modulepart = 'propal'; - $permission = $user->rights->propal->creer; + $modulepart = 'askpricesupplier'; + $permission = $user->rights->askpricesupplier->creer; $param = '&id=' . $object->id; include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php'; } diff --git a/htdocs/comm/askpricesupplier/info.php b/htdocs/comm/askpricesupplier/info.php index d3a3899537b..caa9f21dd1e 100644 --- a/htdocs/comm/askpricesupplier/info.php +++ b/htdocs/comm/askpricesupplier/info.php @@ -25,10 +25,10 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/comm/askpricesupplier/class/askpricesupplier.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/askpricesupplier.lib.php'; -$langs->load('propal'); +$langs->load('askpricesupplier'); $langs->load('compta'); $id=GETPOST('id','int'); @@ -36,21 +36,21 @@ $socid=GETPOST('socid','int'); // Security check if (! empty($user->societe_id)) $socid=$user->societe_id; -$result = restrictedArea($user, 'propal', $id); +$result = restrictedArea($user, 'askpricesupplier', $id); /* * View */ -llxHeader('',$langs->trans('Proposal'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); +llxHeader('',$langs->trans('CommRequest'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); -$object = new Propal($db); +$object = new AskPriceSupplier($db); $object->fetch($id); $object->fetch_thirdparty(); $head = propal_prepare_head($object); -dol_fiche_head($head, 'info', $langs->trans('Proposal'), 0, 'propal'); +dol_fiche_head($head, 'info', $langs->trans('CommRequest'), 0, 'askpricesupplier'); $object->info($object->id); diff --git a/htdocs/comm/askpricesupplier/list.php b/htdocs/comm/askpricesupplier/list.php index 948482fe4cd..47eb078d401 100644 --- a/htdocs/comm/askpricesupplier/list.php +++ b/htdocs/comm/askpricesupplier/list.php @@ -126,7 +126,7 @@ llxHeader('',$langs->trans('CommRequest'),'EN:Commercial_Proposals|FR:Propositio $form = new Form($db); $formother = new FormOther($db); $formfile = new FormFile($db); -$formpropal = new FormAskPriceSupplier($db); +$formaskpricesupplier = new FormAskPriceSupplier($db); $companystatic=new Societe($db); $now=dol_now(); @@ -145,7 +145,7 @@ $limit = $conf->liste_limit; $sql = 'SELECT s.rowid, s.nom as name, s.town, s.client, s.code_client,'; -$sql.= ' p.rowid as propalid, p.note_private, p.total_ht, p.ref, p.ref_client, p.fk_statut, p.fk_user_author, p.datep as dp, p.fin_validite as dfv,'; +$sql.= ' p.rowid as askpricesupplierid, p.note_private, p.total_ht, p.ref, p.ref_client, p.fk_statut, p.fk_user_author, p.datep as dp, p.fin_validite as dfv,'; if (! $user->rights->societe->client->voir && ! $socid) $sql .= " sc.fk_soc, sc.fk_user,"; $sql.= ' u.login'; $sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'askpricesupplier as p'; @@ -322,7 +322,7 @@ if ($result) print ''; print ''; - $formpropal->selectProposalStatus($viewstatut,1); + $formaskpricesupplier->selectAskPriceSupplierStatus($viewstatut,1); print ''; @@ -366,7 +366,7 @@ if ($result) print ''; $filename=dol_sanitizeFileName($objp->ref); $filedir=$conf->propal->dir_output . '/' . dol_sanitizeFileName($objp->ref); - $urlsource=$_SERVER['PHP_SELF'].'?id='.$objp->propalid; + $urlsource=$_SERVER['PHP_SELF'].'?id='.$objp->askpricesupplierid; print $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir); print '
'; diff --git a/htdocs/comm/askpricesupplier/note.php b/htdocs/comm/askpricesupplier/note.php index 9292684d06f..c7b430dff8e 100644 --- a/htdocs/comm/askpricesupplier/note.php +++ b/htdocs/comm/askpricesupplier/note.php @@ -26,10 +26,10 @@ */ require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/comm/askpricesupplier/class/askpricesupplier.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/askpricesupplier.lib.php'; -$langs->load('propal'); +$langs->load('askpricesupplier'); $langs->load('compta'); $langs->load('bills'); @@ -39,7 +39,7 @@ $action=GETPOST('action','alpha'); // Security check if ($user->societe_id) $socid=$user->societe_id; -$result = restrictedArea($user, 'propale', $id, 'propal'); +$result = restrictedArea($user, 'askpricesupplier', $id, 'askpricesupplier'); $object = new Propal($db); @@ -59,7 +59,7 @@ include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, /* Affichage fiche */ /******************************************************************************/ -llxHeader('',$langs->trans('Proposal'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); +llxHeader('',$langs->trans('CommRequest'),'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'); $form = new Form($db); @@ -75,11 +75,11 @@ if ($id > 0 || ! empty($ref)) if ( $societe->fetch($object->socid) ) { $head = propal_prepare_head($object); - dol_fiche_head($head, 'note', $langs->trans('Proposal'), 0, 'propal'); + dol_fiche_head($head, 'note', $langs->trans('CommRequest'), 0, 'askpricesupplier'); print ''; - $linkback = ''.$langs->trans('BackToList').''; + $linkback = ''.$langs->trans('BackToList').''; // Ref print ''; - print ''; - print ''; + print ''; print ''; @@ -505,7 +505,7 @@ if (! empty($conf->propal->enabled)) print ''; - print ''; + print ''; print ''; diff --git a/htdocs/core/modules/askpricesupplier/mod_propale_marbre.php b/htdocs/core/modules/askpricesupplier/mod_askpricesupplier_marbre.php similarity index 95% rename from htdocs/core/modules/askpricesupplier/mod_propale_marbre.php rename to htdocs/core/modules/askpricesupplier/mod_askpricesupplier_marbre.php index 28260de97d8..ec5164b679c 100644 --- a/htdocs/core/modules/askpricesupplier/mod_propale_marbre.php +++ b/htdocs/core/modules/askpricesupplier/mod_askpricesupplier_marbre.php @@ -29,7 +29,7 @@ require_once DOL_DOCUMENT_ROOT .'/core/modules/propale/modules_propale.php'; /** * Class to manage customer order numbering rules Marbre */ -class mod_propale_marbre extends ModeleNumRefPropales +class mod_askpricesupplier_marbre extends ModeleNumRefAskPriceSupplier { var $version='dolibarr'; // 'development', 'experimental', 'dolibarr' var $prefix='PR'; @@ -74,7 +74,7 @@ class mod_propale_marbre extends ModeleNumRefPropales $posindice=8; $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; - $sql.= " FROM ".MAIN_DB_PREFIX."propal"; + $sql.= " FROM ".MAIN_DB_PREFIX."askpricesupplier"; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -111,7 +111,7 @@ class mod_propale_marbre extends ModeleNumRefPropales // D'abord on recupere la valeur max $posindice=8; $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL - $sql.= " FROM ".MAIN_DB_PREFIX."propal"; + $sql.= " FROM ".MAIN_DB_PREFIX."askpricesupplier"; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; diff --git a/htdocs/core/modules/askpricesupplier/mod_propale_saphir.php b/htdocs/core/modules/askpricesupplier/mod_askpricesupplier_saphir.php similarity index 84% rename from htdocs/core/modules/askpricesupplier/mod_propale_saphir.php rename to htdocs/core/modules/askpricesupplier/mod_askpricesupplier_saphir.php index 503d8754684..9bfffcee262 100644 --- a/htdocs/core/modules/askpricesupplier/mod_propale_saphir.php +++ b/htdocs/core/modules/askpricesupplier/mod_askpricesupplier_saphir.php @@ -25,13 +25,13 @@ * \brief File that contains the numbering module rules Saphir */ -require_once DOL_DOCUMENT_ROOT .'/core/modules/propale/modules_propale.php'; +require_once DOL_DOCUMENT_ROOT .'/core/modules/askpricesupplier/modules_propale.php'; /** * Class of file that contains the numbering module rules Saphir */ -class mod_propale_saphir extends ModeleNumRefPropales +class mod_propale_saphir extends ModeleNumRefAskPriceSupplier { var $version='dolibarr'; // 'development', 'experimental', 'dolibarr' var $error = ''; @@ -55,18 +55,18 @@ class mod_propale_saphir extends ModeleNumRefPropales $texte.= ''; $texte.= ''; $texte.= ''; - $texte.= ''; + $texte.= ''; $texte.= '
'.$langs->trans('Ref').''; @@ -122,7 +122,7 @@ if ($id > 0 || ! empty($ref)) // Date fin propal print '
'.$langs->trans('DateEndPropal').''; + print ''.$langs->trans('DateEndAsk').''; if ($object->fin_validite) { print dol_print_date($object->fin_validite,'daytext'); diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index 35807912c0a..a3fcfa22bc8 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -488,7 +488,7 @@ if (empty($reshook)) setEventMessage($langs->trans("ErrorFailedToAddContact"), 'errors'); } } - + if (! $error) { $db->commit(); diff --git a/htdocs/core/lib/askpricesupplier.lib.php b/htdocs/core/lib/askpricesupplier.lib.php index fd227d512b7..b0b9369f6ee 100644 --- a/htdocs/core/lib/askpricesupplier.lib.php +++ b/htdocs/core/lib/askpricesupplier.lib.php @@ -32,13 +32,13 @@ function propal_prepare_head($object) { global $langs, $conf, $user; - $langs->load("propal"); + $langs->load("askpricesupplier"); $langs->load("compta"); $h = 0; $head = array(); - $head[$h][0] = DOL_URL_ROOT.'/comm/propal.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT.'/comm/askpricesupplier.php?id='.$object->id; $head[$h][1] = $langs->trans('ProposalCard'); $head[$h][2] = 'comm'; $h++; @@ -47,7 +47,7 @@ function propal_prepare_head($object) || (! empty($conf->livraison_bon->enabled) && $user->rights->expedition->livraison->lire)))) { $langs->load("sendings"); - $head[$h][0] = DOL_URL_ROOT.'/expedition/propal.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT.'/expedition/askpricesupplier.php?id='.$object->id; if ($conf->expedition_bon->enabled) $text=$langs->trans("Shipment"); if ($conf->livraison_bon->enabled) $text.='/'.$langs->trans("Receivings"); $head[$h][1] = $text; @@ -56,7 +56,7 @@ function propal_prepare_head($object) } if (! empty($conf->global->MAIN_USE_PREVIEW_TABS)) { - $head[$h][0] = DOL_URL_ROOT.'/comm/propal/apercu.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT.'/comm/askpricesupplier/apercu.php?id='.$object->id; $head[$h][1] = $langs->trans("Preview"); $head[$h][2] = 'preview'; $h++; @@ -64,7 +64,7 @@ function propal_prepare_head($object) if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) { - $head[$h][0] = DOL_URL_ROOT.'/comm/propal/contact.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT.'/comm/askpricesupplier/contact.php?id='.$object->id; $head[$h][1] = $langs->trans('ContactsAddresses'); $head[$h][2] = 'contact'; $h++; @@ -74,14 +74,14 @@ function propal_prepare_head($object) // Entries must be declared in modules descriptor with line // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab // $this->tabs = array('entity:-tabname); to remove a tab - complete_head_from_modules($conf,$langs,$object,$head,$h,'propal'); + complete_head_from_modules($conf,$langs,$object,$head,$h,'askpricesupplier'); if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { $nbNote = 0; if(!empty($object->note_private)) $nbNote++; if(!empty($object->note_public)) $nbNote++; - $head[$h][0] = DOL_URL_ROOT.'/comm/propal/note.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT.'/comm/askpricesupplier/note.php?id='.$object->id; $head[$h][1] = $langs->trans('Notes'); if ($nbNote > 0) $head[$h][1].= ' '.$nbNote.''; $head[$h][2] = 'note'; @@ -91,18 +91,18 @@ function propal_prepare_head($object) require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $upload_dir = $conf->propal->dir_output . "/" . dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$')); - $head[$h][0] = DOL_URL_ROOT.'/comm/propal/document.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT.'/comm/askpricesupplier/document.php?id='.$object->id; $head[$h][1] = $langs->trans('Documents'); if($nbFiles > 0) $head[$h][1].= ' '.$nbFiles.''; $head[$h][2] = 'document'; $h++; - $head[$h][0] = DOL_URL_ROOT.'/comm/propal/info.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT.'/comm/askpricesupplier/info.php?id='.$object->id; $head[$h][1] = $langs->trans('Info'); $head[$h][2] = 'info'; $h++; - complete_head_from_modules($conf,$langs,$object,$head,$h,'propal','remove'); + complete_head_from_modules($conf,$langs,$object,$head,$h,'askpricesupplier','remove'); return $head; } @@ -119,7 +119,7 @@ function propal_admin_prepare_head() $h = 0; $head = array(); - $head[$h][0] = DOL_URL_ROOT.'/admin/propal.php'; + $head[$h][0] = DOL_URL_ROOT.'/admin/askpricesupplier.php'; $head[$h][1] = $langs->trans("Miscellaneous"); $head[$h][2] = 'general'; $h++; @@ -128,19 +128,19 @@ function propal_admin_prepare_head() // Entries must be declared in modules descriptor with line // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab // $this->tabs = array('entity:-tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to remove a tab - complete_head_from_modules($conf,$langs,null,$head,$h,'propal_admin'); + complete_head_from_modules($conf,$langs,null,$head,$h,'askpricesupplier_admin'); - $head[$h][0] = DOL_URL_ROOT.'/comm/admin/propal_extrafields.php'; + $head[$h][0] = DOL_URL_ROOT.'/comm/admin/askpricesupplier_extrafields.php'; $head[$h][1] = $langs->trans("ExtraFields"); $head[$h][2] = 'attributes'; $h++; - $head[$h][0] = DOL_URL_ROOT.'/comm/admin/propaldet_extrafields.php'; + $head[$h][0] = DOL_URL_ROOT.'/comm/admin/askpricesupplierdet_extrafields.php'; $head[$h][1] = $langs->trans("ExtraFieldsLines"); $head[$h][2] = 'attributeslines'; $h++; - complete_head_from_modules($conf,$langs,null,$head,$h,'propal_admin','remove'); + complete_head_from_modules($conf,$langs,null,$head,$h,'askpricesupplier_admin','remove'); return $head; } diff --git a/htdocs/core/tpl/document_actions_post_headers.tpl.php b/htdocs/core/tpl/document_actions_post_headers.tpl.php index d1a1cedca61..b53e9cbd073 100644 --- a/htdocs/core/tpl/document_actions_post_headers.tpl.php +++ b/htdocs/core/tpl/document_actions_post_headers.tpl.php @@ -46,7 +46,7 @@ $savingdocmask=''; if (empty($conf->global->MAIN_DISABLE_SUGGEST_REF_AS_PREFIX)) { //var_dump($modulepart); - if (in_array($modulepart,array('facture_fournisseur','commande_fournisseur','facture','commande','propal','ficheinter','contract','project','project_task'))) + if (in_array($modulepart,array('facture_fournisseur','commande_fournisseur','facture','commande','propal', 'askpricesupplier','ficheinter','contract','project','project_task'))) { $savingdocmask=$object->ref.'___file__'; } diff --git a/htdocs/core/tpl/notes.tpl.php b/htdocs/core/tpl/notes.tpl.php index 66b310da69d..5773d7ce9d8 100644 --- a/htdocs/core/tpl/notes.tpl.php +++ b/htdocs/core/tpl/notes.tpl.php @@ -50,6 +50,7 @@ if (! empty($conf->global->MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES)) // Special cases if ($module == 'propal') { $permission=$user->rights->propale->creer;} +elseif ($module == 'askpricesupplier') { $permission=$user->rights->askpricesupplier->creer;} elseif ($module == 'fichinter') { $permission=$user->rights->ficheinter->creer;} elseif ($module == 'project') { $permission=$user->rights->projet->creer;} elseif ($module == 'project_task') { $permission=$user->rights->projet->creer;} diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 4ce603ee1ad..5b4f57ae6a4 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -42,7 +42,7 @@ class Societe extends CommonObject public $element='societe'; public $table_element = 'societe'; public $fk_element='fk_soc'; - protected $childtables=array("propal","commande","facture","contrat","facture_fourn","commande_fournisseur"); // To test if we can delete object + protected $childtables=array("askpricesupplier", "propal","commande","facture","contrat","facture_fourn","commande_fournisseur"); // To test if we can delete object /** * 0=No test on entity, 1=Test with field entity, 2=Test with link by societe From 778ddf269d660c8a77ccb457d7e1f53ee98483b3 Mon Sep 17 00:00:00 2001 From: phf Date: Wed, 28 Jan 2015 14:32:41 +0100 Subject: [PATCH 025/429] =?UTF-8?q?[CORE]=20maj=20des=20r=C3=A9f=C3=A9renc?= =?UTF-8?q?es=20de=20traductions=20(#new=5Fask=5Fprice).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/langs/fr_FR/admin.lang | 1 + htdocs/langs/fr_FR/askpricesupplier.lang | 6 +++--- htdocs/langs/fr_FR/other.lang | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 4e783fafce1..e8c8f6dd1a2 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -264,6 +264,7 @@ MAIN_MAIL_EMAIL_FROM=Adresse email de l'émetteur pour l'envoi d'emails automati MAIN_MAIL_ERRORS_TO=Adresse email utilisée pour les retours d'erreurs des emails envoyés MAIN_MAIL_AUTOCOPY_TO= Envoyer systématiquement une copie cachée des emails envoyés à MAIN_MAIL_AUTOCOPY_PROPOSAL_TO= Envoyer systématiquement une copie cachée des propositions envoyées par email à +MAIN_MAIL_AUTOCOPY_ASKPRICESUPPLIER_TO= Envoyer systématiquement une copie cachée des demandes de prix envoyées par email à MAIN_MAIL_AUTOCOPY_ORDER_TO= Envoyer systématiquement une copie cachée des commandes envoyées par emails à MAIN_MAIL_AUTOCOPY_INVOICE_TO= Envoyer systématiquement une copie cachée des factures envoyées par email à MAIN_DISABLE_ALL_MAILS=Désactiver globalement tout envoi d'emails (pour mode test ou démos) diff --git a/htdocs/langs/fr_FR/askpricesupplier.lang b/htdocs/langs/fr_FR/askpricesupplier.lang index c67e37dc7c5..863d3749dca 100644 --- a/htdocs/langs/fr_FR/askpricesupplier.lang +++ b/htdocs/langs/fr_FR/askpricesupplier.lang @@ -22,7 +22,7 @@ NewPropal=Nouvelle proposition Prospect=Prospect ProspectList=Liste des prospects ConfirmDeleteProp=Êtes-vous sûr de vouloir effacer cette proposition commerciale ? -ConfirmValidateProp=Êtes-vous sûr de vouloir valider cette proposition commerciale sous la référence %s ? + LastPropals=Les %s dernières propales LastClosedProposals=Les %s dernières propositions commerciales fermées LastModifiedProposals=Les %s dernières propositions commerciales modifiées @@ -36,7 +36,6 @@ NbOfProposals=Nombre de propositions commerciales # # Ajout -ShowAskpricesupplier=Afficher demande CommRequest=Demande de prix CommRequests=Demandes de prix SearchRequest=Rechercher une demande @@ -47,6 +46,7 @@ AskPriceSupplierArea=Espace des demandes de prix fournisseurs NewAskPrice=Nouvelle demande de prix NewAsk=Nouvelle demande # # Modifié +ConfirmValidateAsk=Êtes-vous sûr de vouloir valider cette demande de prix sous la référence %s ? DateAsk=Date de demande DateEndAsk=Date de fin de validité DateEndAskShort=Date de fin @@ -86,11 +86,11 @@ ListOfAskPriceSupplier=Liste des devis/propositions commerciales TypeContact_askpricesupplier_internal_SALESREPFOLL=Commercial suivi demande TypeContact_askpricesupplier_external_BILLING=Contact client facturation demande TypeContact_askpricesupplier_external_CUSTOMER=Contact client suivi demande +ActionsOnAskPriceSupplier=Événements sur la demande # # -ActionsOnPropal=Événements sur la proposition NoOpenedPropals=Pas de proposition ouverte NoOtherOpenedPropals=Pas d'autre proposition brouillon RefProposal=Réf. proposition commerciale diff --git a/htdocs/langs/fr_FR/other.lang b/htdocs/langs/fr_FR/other.lang index 1c23cce68cb..972fc5425fd 100644 --- a/htdocs/langs/fr_FR/other.lang +++ b/htdocs/langs/fr_FR/other.lang @@ -60,6 +60,7 @@ PredefinedMailTestHtml=Ceci est un message de test (le mot test doit êtr PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nVeuillez trouver ci-joint la facture __FACREF__\n\n__PERSONALIZED__Cordialement\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__ \n\nNous voudrions porter à votre connaissance que la facture __FACREF__ ne semble pas avoir été réglée. La voici donc, pour rappel, en pièce jointe.\n\n__PERSONALIZED__Cordialement\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nVeuillez trouver ci-joint la proposition commerciale __PROPREF__\n\n__PERSONALIZED__Cordialement\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nVeuillez trouver ci-joint la demande commerciale __ASKREF__\n\n__PERSONALIZED__Cordialement\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nVeuillez trouver ci-joint la commande __ORDERREF__\n\n__PERSONALIZED__Cordialement\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nVeuillez trouver ci-joint notre commande __ORDERREF__\n\n__PERSONALIZED__Cordialement\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nVeuillez trouver ci-joint la facture __FACREF__\n\n__PERSONALIZED__Cordialement\n\n__SIGNATURE__ From ec621244f39302befb2c588dde94fdc7f4814cf1 Mon Sep 17 00:00:00 2001 From: phf Date: Wed, 28 Jan 2015 14:34:27 +0100 Subject: [PATCH 026/429] =?UTF-8?q?[CORE]=20ajouts=20des=20conditions=20sp?= =?UTF-8?q?=C3=A9cifiques=20pour=20les=20appels=20depuis=20l'objet=20AskPr?= =?UTF-8?q?iceSupplier=20(#new=5Fask=5Fprice).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/core/class/commonobject.class.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index dc39692f08e..e035d0342c2 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -1768,7 +1768,7 @@ abstract class CommonObject // Specific code for backward compatibility with old field names if ($this->element == 'facture' || $this->element == 'facturerec') $fieldht='total'; if ($this->element == 'facture_fourn' || $this->element == 'invoice_supplier') $fieldtva='total_tva'; - if ($this->element == 'propal') $fieldttc='total'; + if ($this->element == 'propal' || $this->element == 'askpricesupplier') $fieldttc='total'; if (empty($nodatabaseupdate)) { @@ -1958,6 +1958,9 @@ abstract class CommonObject else if ($objecttype == 'propal') { $classpath = 'comm/propal/class'; } + else if ($objecttype == 'askpricesupplier') { + $classpath = 'comm/askpricesupplier/class'; + } else if ($objecttype == 'shipping') { $classpath = 'expedition/class'; $subelement = 'expedition'; $module = 'expedition_bon'; } @@ -2473,6 +2476,10 @@ abstract class CommonObject $tplpath = 'comm/'.$element; if (empty($conf->propal->enabled)) continue; // Do not show if module disabled } + else if ($objecttype == 'askpricesupplier') { + $tplpath = 'comm/'.$element; + if (empty($conf->askpricesupplier->enabled)) continue; // Do not show if module disabled + } else if ($objecttype == 'shipping') { $tplpath = 'expedition'; if (empty($conf->expedition->enabled)) continue; // Do not show if module disabled From a9d26efee8ae3aec9cdc57c34b12f6e896a65b93 Mon Sep 17 00:00:00 2001 From: phf Date: Wed, 28 Jan 2015 14:44:48 +0100 Subject: [PATCH 027/429] [CORE] ajout des conditions pour un element de type askpricesupplier (#new_ask_price). --- htdocs/core/class/html.formactions.class.php | 1 + htdocs/core/class/html.formmail.class.php | 3 +++ 2 files changed, 4 insertions(+) diff --git a/htdocs/core/class/html.formactions.class.php b/htdocs/core/class/html.formactions.class.php index 333969fc3b3..cfab0e52b7c 100644 --- a/htdocs/core/class/html.formactions.class.php +++ b/htdocs/core/class/html.formactions.class.php @@ -171,6 +171,7 @@ class FormActions if ($typeelement == 'invoice') $title=$langs->trans('ActionsOnBill'); elseif ($typeelement == 'invoice_supplier' || $typeelement == 'supplier_invoice') $title=$langs->trans('ActionsOnBill'); elseif ($typeelement == 'propal') $title=$langs->trans('ActionsOnPropal'); + elseif ($typeelement == 'askpricesupplier') $title=$langs->trans('ActionsOnAskPriceSupplier'); elseif ($typeelement == 'order') $title=$langs->trans('ActionsOnOrder'); elseif ($typeelement == 'order_supplier' || $typeelement == 'supplier_order') $title=$langs->trans('ActionsOnOrder'); elseif ($typeelement == 'project') $title=$langs->trans('ActionsOnProject'); diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 07edb962371..118bb0462b6 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -477,6 +477,7 @@ class FormMail $showinfobcc=''; if (! empty($conf->global->MAIN_MAIL_AUTOCOPY_PROPOSAL_TO) && ! empty($this->param['models']) && $this->param['models'] == 'propal_send') $showinfobcc=$conf->global->MAIN_MAIL_AUTOCOPY_PROPOSAL_TO; + if (! empty($conf->global->MAIN_MAIL_AUTOCOPY_ASKPRICESUPPLIER_TO) && ! empty($this->param['models']) && $this->param['models'] == 'askpricesupplier_send') $showinfobcc=$conf->global->MAIN_MAIL_AUTOCOPY_ASKPRICESUPPLIER_TO; if (! empty($conf->global->MAIN_MAIL_AUTOCOPY_ORDER_TO) && ! empty($this->param['models']) && $this->param['models'] == 'order_send') $showinfobcc=$conf->global->MAIN_MAIL_AUTOCOPY_ORDER_TO; if (! empty($conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO) && ! empty($this->param['models']) && $this->param['models'] == 'facture_send') $showinfobcc=$conf->global->MAIN_MAIL_AUTOCOPY_INVOICE_TO; if ($showinfobcc) $out.=' + '.$showinfobcc; @@ -496,6 +497,7 @@ class FormMail { $defaultvaluefordeliveryreceipt=0; if (! empty($conf->global->MAIL_FORCE_DELIVERY_RECEIPT_PROPAL) && ! empty($this->param['models']) && $this->param['models'] == 'propal_send') $defaultvaluefordeliveryreceipt=1; + if (! empty($conf->global->MAIL_FORCE_DELIVERY_RECEIPT_ASKPRICESUPPLIER) && ! empty($this->param['models']) && $this->param['models'] == 'askpricesupplier_send') $defaultvaluefordeliveryreceipt=1; if (! empty($conf->global->MAIL_FORCE_DELIVERY_RECEIPT_ORDER) && ! empty($this->param['models']) && $this->param['models'] == 'order_send') $defaultvaluefordeliveryreceipt=1; if (! empty($conf->global->MAIL_FORCE_DELIVERY_RECEIPT_INVOICE) && ! empty($this->param['models']) && $this->param['models'] == 'facture_send') $defaultvaluefordeliveryreceipt=1; $out.= $form->selectyesno('deliveryreceipt', (isset($_POST["deliveryreceipt"])?$_POST["deliveryreceipt"]:$defaultvaluefordeliveryreceipt), 1); @@ -718,6 +720,7 @@ class FormMail if ($type_template=='facture_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendInvoice"); } elseif ($type_template=='facture_relance') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendInvoiceReminder"); } elseif ($type_template=='propal_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendProposal"); } + elseif ($type_template=='askpricesupplier_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendAskPriceSupplier"); } elseif ($type_template=='order_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendOrder"); } elseif ($type_template=='order_supplier_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendSupplierOrder"); } elseif ($type_template=='invoice_supplier_send') { $defaultmessage=$outputlangs->transnoentities("PredefinedMailContentSendSupplierInvoice"); } From 3644f4c84cd2dfed1f7a41eef1c3ca2a86ee6752 Mon Sep 17 00:00:00 2001 From: phf Date: Wed, 28 Jan 2015 14:48:59 +0100 Subject: [PATCH 028/429] [CORE] renomage de masse (#new_ask_price). --- htdocs/comm/askpricesupplier.php | 10 +++++----- .../class/askpricesupplier.class.php | 4 ++-- htdocs/comm/askpricesupplier/index.php | 4 ++-- ...bre.php => mod_askpricesupplier_marbre.php} | 6 +++--- ...hir.php => mod_askpricesupplier_saphir.php} | 18 +++++++++--------- .../modules_askpricesupplier.php | 4 ++-- .../core/modules/modAskPriceSupplier.class.php | 2 +- 7 files changed, 24 insertions(+), 24 deletions(-) rename htdocs/core/modules/askpricesupplier/{mod_propale_marbre.php => mod_askpricesupplier_marbre.php} (95%) rename htdocs/core/modules/askpricesupplier/{mod_propale_saphir.php => mod_askpricesupplier_saphir.php} (84%) diff --git a/htdocs/comm/askpricesupplier.php b/htdocs/comm/askpricesupplier.php index 1cdd560bb49..855f84a72d8 100644 --- a/htdocs/comm/askpricesupplier.php +++ b/htdocs/comm/askpricesupplier.php @@ -33,7 +33,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php'; -require_once DOL_DOCUMENT_ROOT . '/core/class/html.formpropal.class.php'; +require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaskpricesupplier.class.php'; require_once DOL_DOCUMENT_ROOT . '/comm/askpricesupplier/class/askpricesupplier.class.php'; require_once DOL_DOCUMENT_ROOT . '/comm/action/class/actioncomm.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/modules/askpricesupplier/modules_askpricesupplier.php'; @@ -1497,8 +1497,8 @@ if ($action == 'create') $i = 0; while ($i < $num) { $row = $db->fetch_row($resql); - $propalRefAndSocName = $row [1] . " - " . $row [2]; - $liste_ask [$row [0]] = $propalRefAndSocName; + $askPriceSupplierRefAndSocName = $row [1] . " - " . $row [2]; + $liste_ask [$row [0]] = $askPriceSupplierRefAndSocName; $i ++; } print $form->selectarray("copie_askpricesupplier", $liste_ask, 0); @@ -1579,7 +1579,7 @@ if ($action == 'create') $soc->fetch($object->socid); $head = propal_prepare_head($object); - dol_fiche_head($head, 'comm', $langs->trans('CommRequest'), 0, 'CommRequest'); + dol_fiche_head($head, 'comm', $langs->trans('CommRequest'), 0, 'askpricesupplier'); $formconfirm = ''; @@ -2308,7 +2308,7 @@ if ($action == 'create') // Tableau des parametres complementaires $formmail->param['action'] = 'send'; - $formmail->param['models'] = 'propal_send'; + $formmail->param['models'] = 'askpricesupplier_send'; $formmail->param['id'] = $object->id; $formmail->param['returnurl'] = $_SERVER["PHP_SELF"] . '?id=' . $object->id; // Init list of files diff --git a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php index b2c7fc4dfb2..2deb897a192 100644 --- a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php +++ b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php @@ -1093,7 +1093,7 @@ class AskPriceSupplier extends CommonObject $sql.= ", dr.code as demand_reason_code, dr.label as demand_reason"; $sql.= ", cr.code as cond_reglement_code, cr.libelle as cond_reglement, cr.libelle_facture as cond_reglement_libelle_doc"; $sql.= ", cp.code as mode_reglement_code, cp.libelle as mode_reglement"; - $sql.= " FROM ".MAIN_DB_PREFIX."c_propalst as c, ".MAIN_DB_PREFIX."propal as p"; + $sql.= " FROM ".MAIN_DB_PREFIX."c_propalst as c, ".MAIN_DB_PREFIX."askpricesupplier as p"; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_paiement as cp ON p.fk_mode_reglement = cp.id'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_payment_term as cr ON p.fk_cond_reglement = cr.rowid'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_availability as ca ON p.fk_availability = ca.rowid'; @@ -2664,7 +2664,7 @@ class AskPriceSupplier extends CommonObject { $obj = $this->db->fetch_object($resql); - $this->lines[$i] = new PropaleLigne($this->db); + $this->lines[$i] = new AskPriceSupplierLigne($this->db); $this->lines[$i]->id = $obj->rowid; // for backward compatibility $this->lines[$i]->rowid = $obj->rowid; $this->lines[$i]->label = $obj->custom_label; diff --git a/htdocs/comm/askpricesupplier/index.php b/htdocs/comm/askpricesupplier/index.php index dcd3436bd25..ef9a37f145c 100644 --- a/htdocs/comm/askpricesupplier/index.php +++ b/htdocs/comm/askpricesupplier/index.php @@ -433,7 +433,7 @@ if (! empty($conf->propal->enabled)) print ''.img_object($langs->trans("ShowCompany"),"company").' '.dol_trunc($obj->name,24).''.img_object($langs->trans("ShowAskPriceSupplier"),"askpricesupplier").' '.dol_trunc($obj->name,24).''.$askpricesupplierstatic->LibStatut($obj->fk_statut,$obj->facture,5).''.img_object($langs->trans("ShowCompany"),"company").' '.$obj->name.''.img_object($langs->trans("ShowAskPriceSupplier"),"askpricesupplier").' '.$obj->name.''.$askpricesupplierstatic->LibStatut($obj->fk_statut,$obj->facture,5).'
'; - $tooltip=$langs->trans("GenericMaskCodes",$langs->transnoentities("Proposal"),$langs->transnoentities("Proposal")); + $tooltip=$langs->trans("GenericMaskCodes",$langs->transnoentities("CommRequest"),$langs->transnoentities("CommRequest")); $tooltip.=$langs->trans("GenericMaskCodes2"); $tooltip.=$langs->trans("GenericMaskCodes3"); - $tooltip.=$langs->trans("GenericMaskCodes4a",$langs->transnoentities("Proposal"),$langs->transnoentities("Proposal")); + $tooltip.=$langs->trans("GenericMaskCodes4a",$langs->transnoentities("CommRequest"),$langs->transnoentities("CommRequest")); $tooltip.=$langs->trans("GenericMaskCodes5"); // Parametrage du prefix $texte.= ''; - $texte.= ''; + $texte.= ''; $texte.= ''; @@ -106,14 +106,14 @@ class mod_propale_saphir extends ModeleNumRefPropales * @param Propal $propal Object commercial proposal * @return string Value if OK, 0 if KO */ - function getNextValue($objsoc,$propal) + function getNextValue($objsoc,$askpricesupplier) { global $db,$conf; require_once DOL_DOCUMENT_ROOT .'/core/lib/functions2.lib.php'; // On defini critere recherche compteur - $mask=$conf->global->PROPALE_SAPHIR_MASK; + $mask=$conf->global->ASKPRICESUPPLIER_SAPHIR_MASK; if (! $mask) { @@ -121,7 +121,7 @@ class mod_propale_saphir extends ModeleNumRefPropales return 0; } - $date=$propal->datep; + $date=$askpricesupplier->datep; $customercode=$objsoc->code_client; $numFinal=get_next_value($db,$mask,'propal','ref','',$customercode,$date); diff --git a/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php b/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php index 1662e9a45bf..b9efd387da5 100644 --- a/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php +++ b/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php @@ -86,7 +86,7 @@ abstract class ModeleNumRefAskPriceSupplier function info() { global $langs; - $langs->load("propale"); + $langs->load("askpricesupplier"); return $langs->trans("NoDescription"); } @@ -98,7 +98,7 @@ abstract class ModeleNumRefAskPriceSupplier function getExample() { global $langs; - $langs->load("propale"); + $langs->load("askpricesupplier"); return $langs->trans("NoExample"); } diff --git a/htdocs/core/modules/modAskPriceSupplier.class.php b/htdocs/core/modules/modAskPriceSupplier.class.php index e9b4359ee85..f0cf2a7a40f 100644 --- a/htdocs/core/modules/modAskPriceSupplier.class.php +++ b/htdocs/core/modules/modAskPriceSupplier.class.php @@ -82,7 +82,7 @@ class modAskPriceSupplier extends DolibarrModules $this->const[$r][0] = "ASKPRICESUPPLIER_ADDON"; $this->const[$r][1] = "chaine"; - $this->const[$r][2] = "mod_propale_marbre"; + $this->const[$r][2] = "mod_askpricesupplier_marbre"; $this->const[$r][3] = 'Nom du gestionnaire de numerotation des demandes de prix fournisseurs'; $this->const[$r][4] = 0; $r++; From d134fa6a323b3bffaadf6cdf0f800f4b2d70fa78 Mon Sep 17 00:00:00 2001 From: phf Date: Wed, 28 Jan 2015 15:33:52 +0100 Subject: [PATCH 029/429] [CORE] copie du odt propal pour le module askpricesupplier (#new_ask_price). --- .../doctemplates/askpricesupplier/index.html | 0 .../askpricesupplier/template_proposal.odt | Bin 0 -> 25866 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 htdocs/install/doctemplates/askpricesupplier/index.html create mode 100644 htdocs/install/doctemplates/askpricesupplier/template_proposal.odt diff --git a/htdocs/install/doctemplates/askpricesupplier/index.html b/htdocs/install/doctemplates/askpricesupplier/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/install/doctemplates/askpricesupplier/template_proposal.odt b/htdocs/install/doctemplates/askpricesupplier/template_proposal.odt new file mode 100644 index 0000000000000000000000000000000000000000..8ece83c989c9ff688337dbb0edf6febd47eb0dcf GIT binary patch literal 25866 zcmbTc1yo$i@-K|LLvVL@cXx-NfdIqcFu1#0aF^f?!QCOaLxKl)cbCUG_n!Oi`(&-} z|IJ!^rgzn^OS)@U@9r8^1xP3?FfceUurKab;)a9lNHkzzV1Hd7Brsb`TcERtJ}(0LV{x@JWd<2LSvoO;?16TsAb^W4(9W6J8R+h;`hN(EwSNsVhXMop>-t+5 z(Ak*T-PT4>nAx?;#jhU646lezknOfSJ3z2`;lxE^37ZFAf1euvx0)YJg zXkhv<#hCP?tDO`7zgR-#E{=Bmf7`-uXKV{};&%q{|F=>6|BdGVThYHL?lzWo)~R%pgZ|7B)UUK9;|^3iuDs-o?@8Z?SLQhL5{+TmL`rsmA`|5g@c)kQqj`R#r>-eFZWk&PSXEkezkW5Spfmg zEF4^{wrrH*E|xZ?O#kTk-{Ssq72pW`muO=b$B$Vg{oBQVi2u_6pRjXs{_xVt*%Cnd zw{OnICN@AO0LaD8`6G78|3$R4H8%eb@gto7MuJTKvgRM?KUDkwLbCrGX>aUkZ0=}m zZ}AV9jg|M`EH{v&=|5Bs9*hQnvpYoc(_W=lGw& zIsbzH`)T0+Yn=c0-G8R+Z}PvA5gZ)c-R3^wDwxI{y{KPJbn&PCX^3Enc+F z^J>{gWm#G3OjUS|P$UjT*<61`t9|Mdn1=Y@%yK9f=OsYMOz13NbR!LdpR+=h@2ert zs;{Bs)(&#g9_@L@^&H1Jl&L>i>YTv2$FCn>ymAQqR<}(1AWOq=DbZy$W{i-8@>LF8 z%8r*#1z6PTVicVWQW+r(c*KYRamNcs=Q%%0ChHgwdv}ksc{r$lXjfc6zBv0jL|W+y zb+@*b6}v6O!qC!qdzMz59NzyxbJ!m4iesX7(Gn17uQXflO#Ds09#Xu=HSeGU>UL;% zjPucK2^b#SGj&;FKAogUz2!l3AO>)yw?f;GSZr*L2y;uNZ_m_3nA1yZ} zLc1nJ%dmptii)xAXg^5d?9;EVr!PKbp+in+U=+w`D@zP#+f|)WB&t!j{Y+g8-mBS=yywzo`v~VNh(Rk53 zvS=@i4beiW3lG1z30yajg`5HS@^iz9kUh~We1OQ=IrW>^YBg4J5R{*(*}N$}KIve0y_EHyxx}B41K7i^IhVc zX>XN=%|u{oV9D2(bRqV1))`8syCZsg3Z1krBk*z6;2ML+QTyx4JR0$RylL%H0DWDM z+Cl^(r)kGGtIU|OnlIh< zQ3jeF1B2GGR>|R9TJl;5TmAmoWCi>xY-ssBdsSie>vebBzy=+snUe!p)!But5npo1 z#F|+7UkL=t9%{8cT{&*;JX4=W)a1xdkR3mzKU__mkX3dIFG-+fA=4IEBq?Xb!+#IKM zfc+q?gd@dN*kY}9%higolG zn5a;k0$ZV`s?weq+yBWHF@&@cp3YKVN4JJ=Y^1a3jK}Ryy1eG}o;<wUVJ%;L>6zT|?{60eYCF^r`^;9B zgi%y^+Dm7X5#KN84rNk|DPfs7iz$W7+9=w;w4+T=If}(VJisGF(7pvx#2j)g5xflh zVw{Ymh@Nh}%thPP52$^j=Q7c_r6~J)R9Np#V_>@JKZ#MaNcRLBc&wNhM{TKiI9hR? zJ#Z8~Ml44=q?UDUOhXb)I{#_*q8$Ke!h_PE*$O;r4pqK$3XedD1Q^Z5=nXmziQ+Xb zyUwHT?<|ENnUaRjBfHjI^pLem1+Qpa#5$(1vCT-MK z^8|5!g`w0S^H#elwTc2RXMU3FUd_oW7w|hO-Fy90bcv{{01L+lcgboG4F<+a0S5N} zo~aQ(GBp5X=ls_T=0~DF{qkx@(2D-vty23NT&j9lKE?Fe=Jq6LJJt|Pz!kH|LJbR| zaV$CQg!x|f2had5S7i?NIMI3db=p^sT-$Z)3qF*xEARETJ#QACfpYC*#&IvaVg6HlHeaTJ4_?_Wxi99t+c1?4bz`e zI*fkhx5&7JkhFljuqufqW#b~TQH9|}vYhwCB?}BewK~o?{mj66!}o`WmJ&UuknAj$ z$n@%#FC}3oZ6yN!lxy4=@d& zcY*ctdhXn5?de<`?lO`z(lT=6t`it`bBvnH9kJ+HI0p~=c3zaZ7sGe%Py1Q2(&NwQ3{m}?-n1DutiE%JwoQugXg9Op5z6eR`6jLm>&)C) zXx!u8ZBY3ZU2C_m=SUJCk`t?TbdP*y@q#8-J-^}16X5680K|Gmbs)D`RQUZw(RclR zTu}Xt`5c(?a)%UV1gE3LIH2z!DaniGeuhqAmExKCSpbr|TP!cStIN8JH0yl!*5w2Z zM;D|vT;)ahh3)NO+RJjXO~mjlk7-6>8vhUgcDp6k`HT1i!V2Ky%M| zTc6J$n%|OhpH`kxIj^WJw1i%XGY$prrZ9}SHR}CaR}T&?Q>;eg z3A=6mhr)fO8o}_qFJbVfA`BCQ=A`fC?$bgC=K`$;cz37l{kbB%51T4X&OVO^Z76L) z1>f3;iB5@{)NWtkHHB71Rtv5CP)+;@3|NQ_7CO&nW>7PoiOx{<$~+&T%!Ke!crtI@ zr$GhBzY`BUYor#884RW}f)Y-R)~m}A3iI=ciIn26jR!3V+tf)ARwB;@ryOEp1?srO z?do*@9G?*}RL7AgwWciz-vwLoh6fLnseCzZ7rHGO9vHSku^~fth-b8DFmRO*iQ}@S z_{v?^2PW%p<__!`WXo*tOJzI9A--KQN>vl7TG5Ok_){oV{Nx(u`*w=*y0t>|wA(Cj zQ?bu>V{4;g5!tTi8HFan5t{EY4+iByUqyT(c?97_dpBTO!-Ln4;s>O6FVz;edj7nM zacr%fnPbo}24uJ{ZBTXtprHJI)FZzX-V1bB$n58Ye1Tx}o4t&iLd;w_N&{zAxOJo# ztk&R>IGu(F*1U$GA!aM;(oaypxA_T=u)s4Gq(>rBi1cJe?5jmn8e{l%>XoJ3Tv#FU zx=;d&_nSsWSmC;J%6!xQT$1Af!Nx{9uK!EqZVDB~?hH5|fwvPt*ztFz$XWkB&)HD| zG9BVhts&qy3oe33ety@$sI_qay3MST7@5>`^AqaS)DbizD~p*hyh9W5XM`{P31@Y? z5$pId&c&LsNALJ*OGZx_z+0Lr)_jszza#wOv$FX;^Y5$M)z*&Jqm68azFadk-S_(J z&mdZ*Tak0(!BYO={l4)f1((8BIR;>Hs}zaL`Yq?}JcvI3zWW44amb+AW9J9+{g*q} zh%w|Q=B=S|7s&oy5WZvPWkup`i&*P#tNw4$Jn-ac`R2}Omc*e^=@deWK2?dejt9P zAzE}P+xz*m+FN8#bsb*3e~%ccXK+cX_K#{|>pJ_*JgK0`uh|CrZXmmJyY=q|CDSu74aUL=#agtp%0o_l zOb=1w$9E=3iW_;dMhxxR)&WkfDY+?al{ETBo%Z;r_Br6`jxqv&`b3J{&BvZ^$oJLM7ph-X5L2Y^nCPeAnhg#fiapdI=||n zG8`1f<7=>g-dE8z;lg)-uZ!eN!ILo$}6Qp}p5 z6&jBPz};y>ax#>bj~F!SPAEl!f&!q4;TYpdsYe?VF8U)hF;Wys60w$+99dv`;5DPG zH>PbnlHr)btH$e*a~(A26J)Yx^zW5L7t0Qc5_{72gZ1JPv9Q=jE5@_4nMG7suEzaG1v|+{tU4iJ5Gho#?TK$&gg+* z>J3#g>Q6CxRx*0tL*zggv=A4th;m&FcC`?k_M%MqYRJ&PYkFNMSuvxi&S~6cko_^w zfDrH|{;Bd*9BiEsnML$n@#3^DmpV5k|*OlB)^F@OZ8#ioz zNM&6=U%ri3Cvk)&kXo!K@ckYqR|6L`0{HUNzM% zH(h7K^u(M8Q+l)9ZnC7^_d$XL_jauBUUK+OR%;r$1mb3!<=mIhZDlEPa%$?+rK36; zGFad%$+*bS((PCIc`X*&dYo9;r=yXf`T0P(8CBH=MjHIc2-hM>0NG4=G%q71pI%Hx z8x@r3%l-QM48O+6B*v(Wolv$0BwOyPeUcWUmsL z9iaaaI6I`|b)Nzb)XYF)e0DfxuGg>oGVh{7@oux5xBYY56;F@HRPAaeX`DZ%P))Ba zLWhNFxt8ZQ1z6ecwdd_=$IMk3f)BKFZgUy#m0seii7!$Xwg;J#27SMYeKC4p`ofKMYuzxo~trdG2=8<>wNbOcyw<&3L}%uShN8E%%NI#K?bRcNcM zqWu20_6qZMrduR~9G|*JzQ0F~vq%2X(Ec3HCwEyuKQIbL)(QWIhK@Rfm?;i>tZo7(+P2M9mwCT}+-a(CFrO)#kP2UZB?Pyy^ z;4;%rz99Ue*ebbQMRFA)1Vn{8Vh&u{Dmjt|6mzC5jP95fyYEITyg@&TI=k|`+Q7sY zbuIJDo2SY)^3&N))-*q5k&(I?93|4(wEogYmOI!Av*V2Q+_#e87Tbiv$}l}rW}j&K zB0%7*>~>zTd51?&NPCZvDy*$C;xm0x_B60L_YVHo{$VK2#0~c2Ag4~}pZ&u>XV@S` z7s*)xFtEQa+>iZ(riF{GiJh^fjT4LWKTT$PJM#!tWf^1ye1s1OvYf1>`p0i07#KJh z9K=V|CiJ!bV|Z+ zf5_{8i&^uk;(sC3!ijp|2bGQLudUa^A+|A4vB8SB%8#h!gZMobX8jGC(H(^|8>-qD zDPI8mkSi_`1_2;;Nv)azZRd-M@Qx(8OB#zj`YKvOn5G=CSJHE%Y(x*T5eqa}N{-T%{888V>Vk7JRtwcA% z0FS%1t?zfJg2UOci|av;*P?&ardLp0&!9+r;K~vFaUiD;{V@;_p#7Dhm$~ip;D)*V zPv@VtivrJAM9=uaRQ;tP**JPv1bPzjdR~a#r4ZL>VRTJZJ)z+aNlDSrupzHtu_re~ zdqA)%o#4zqV3R^{hS{)PO&NBA&_A2;zFQ7 zRkdHN@&bgu29}F&>_X#eDgGzBhnhw7E+`9dCLPhDSLNCnX@1 zopcm(hAG#FY*7}BC!WMSU|RMfkcU?n$}u%SsT%xFdaRxSG0sos9_hZtFW0BH7LWqD zZeSEJ_ZTw#PSE4MbBr^;ot%;wtII;f(B$ni?69BU7eF=KJX9qz?j{&TiqQcO2ya?1 z`@`PzZW5k6YW74zy6(wtNgxYhl&H~lcVph`469G?I5Hy{6%p3!GcSDy_;G7}gp=Fj zSu^wGQgo^paJysoOa-+RGp~mRs$F^CR$tk!4)lZVdBE!XWc2QD54|Wt`UU(B6;2!1 z@16BxY>H^jE2woZk8xmA0DjEmH6KC_8`%tv`*Qeh+n3fFB?~P~UGEv<6@(>MSJ1L` zkZ!p995+N_h*ABUwO}zw&nP9y*MZAqjNC6e#!tqq+X_4TeaEveMyktVfyv3!)PMTU zMz|cfSX7%B4O73dj}t@L*-4fEe)d+JKRCPRs~@_iAjLCNkG%thK4{_wp_ENKs1mcQ zI3+Jw4VObC-$~kiGXz}Uvr)SI`YLJM(sq`bSS2zxQo;RG`_&!EbYR|K-vmr0`(ixf z;x3gXUA!-$?i%S_Ggu@QH&BqckpI@KR#@8ifMYHCg%p2)5+{?5^V|rO&~z{ds;S?y zqMvY}{HE=ln_n+6yK=v+R<9FzZ=Uc9!MR{Z=yPqlIQa;!DM%4#Vl;sE!{C_edG_~W z>l9Ga+w(af|WR?a%yWN$JU_MG1&WFnT)j77Fn6 zL|&WuN0n#ClMN7BUOW@anyq|mv@Lhn@u2RGlt7GNC_REN^TzCDSnTnujOA~Q)LR2M z`D0bcT9Ff!d=9%3V!O$op*lW9v}h2u1Jdt?zQSLwnbgX$d>Z9a#Fi&RAMW#Q57hKk zI11``o2VZ~{Qksw5tf*enjpU;*op!K_zJ(wUeZ&rxg1aSsg4W;Ewqxyhg^>^UB5UG zACe4&^0>8qfA^#6G#+zBsV)R zc3_QvqqtqDmSwN&a86DcQUgb-dzwFWrQrIR6WqV?^kDYh!pZ{BH~2JFc&ipad^DIL zJn!S+)2vqnlZ!*=({b7Ngl%I=KDWBeJXDD8fTXD6Lq+E3!H!=Gj4Ob17Rq%eSPsVe zoy{DvemZFQ!;LknhzAqT)F)N;aO`q0mv!)r-txiQ;}0JPQ&Q2nU6~f^nZlsaFmJ2+ znA@U3mVB>zP#1d9^S+I@*k7l6NHx zStOqFF!MqIyW9U}0J~l_X3!oNqIc9{+vGz@Az(}Uc{H=cPvk*S%jDhoz^U3?#9V0f z-J*5dwB~mTG>n~#(d0{MZqoQYNl(nMQDaoYzV}AQbNn6B7lXHrn$+dC@k{p%Cyk)5 z-qr(AlgMl7$GnW*n?UOoi~tVDb=h+f?nruf2L(rfgws~2j{aTWd8JMD{<5L{4ZApz^DVQG~Xny96s$Aoja=(1P_o%NhI5qt(T43pj(YmN2*`Bd45DYtU$AGs%Q7rZ#9 zpUU^-%A8#73VhuPGYRz^?zX~2@UT0sM$ICrJ4n-ARp#i)2E*aKeM>)$^Kl?`=(~Ae zv+GMKCg@gk7(2)Z;71MRE9wP}L<37E$Q!sUmKp3uF_RwbSunIivUqT3bf~@>BLyj+ ziojq#yyVg_>zNC@^j+h)Kfff;X*J<}bbD+-S9(8e&j{+vRp{q4(D^8$K)ulsJS^Ow3sWNA?>cdJCRw-jmq^3v z$jBiF7QX=qOc(A`X6m>4O*)>fin=0v=Ot}EZy(n0x?!a2p&5y6`|JMEU77JLV6oh` zDc)^)M<;m9ULI3Iz!Y)<$oJPS2P^SW6uB^1M^%s$f0w{b2v+wNa4k6X4a%)GsN}J? z)sps*7>XiQ>dX(9RrzLW6uN3+`5i4th6A?q+>eBMTBPQL7RA=iQ*l2&K}cpMk2?9_ zrHT)gIdbNct%uyr{Mr!a4AVYy(gLodD`Q+koby53sKNm7wxMq!@S)_#-7t_okN;?< z@(1YN39?*aogc5p(vngyIwOkJe`Tn8ZRW=C@wmPj+Z1YBY`oZi{(S11jq^R+NU*v~ zTTC2MomOH_tHS!nD#aBIVsfwX)>nlV%JtxJT1y~miX?f$;g-hp@qpn>!w&}Jr?e9! zKMxILC)c){(KRP;BrSE1FtkxHY2Ed29BeAUrc(heH73*Ir#w@CSqM+LYC3==XLnuM ztt=`%JH|Sb310Ot?NWDS?P_=nV===#JdfJZP<(js3hvo5C`W~4>EaXHbFl$xwwAgy zJiK%ch%;lMK1~3`Yd>X&2lRwlvjYX6Fs`tQ*hT-Q98^PF(`t`m5&CpSF$1z7x^RRY zw$>pnLP$c77JMg1P)#4ABPN23Osz=)Tpc3VpS7hS=#zBIcuKn>6l2zl=V?=9loduU zhZ<9q0TzEnvN~k(GB`|vsj6AIa7sqzaO9s#hBKRn8Oz6g>9KVJQ&f&SSJ96rDFCq( z(a4UH=CY6yNOw6WndX#6Pv+V!or0{azMh0vGybc`c$R34^)PZ*e>3X{c=D^ zk`ay3-bnnn|2vwSqjOzKfrtGZft$K zqr3XlRE-)Mel$u@R%^;=eAy&3URN%0L(s{zGk_{=@*0Qo<>di#xOrj)Ru)fTA#5ea zx4r9qr_Tj@`HQuu?6L&gu(r>$N)i0E>kexu56>yQ7d+x``Nr|XguH6`q^lFJkV>)< zj;Lml;4cl_TwDwfetOAXlJaR#MN*w}2#LdBW6@LNj#<((8uNCtGfl}&bmO(ZE`uW> zgSii+W)EQNqz?#x1V{;g@|NyASpD^`8{O@9AQ1Kb*w56kQ280LQATB59F|!>nUU#F z_i+m&x7Y%M5p~rUkxqyEUM<(YNU1D>Z#yq9e4D)awa>FEslKh$h+pf-mDK+b@lq6a zMvtYplMiXroC|wxbO!N;NV3^3wV8goZX6ZH;-LGc=XsJM#wog3Xqj3hQtPyo1;>7c z`YwGLi;Uh-cw|7r8C=!n_v&3Q4+I;}Q=|N8$`&w%%8@aizrp5Mr6Mi6zRS;z0MMkL zMk+=PA)ANyff&BJBQ6`pt(>bDj9INPt&G z{LG(DSIkfA6L-tOF13Hllf*)(4V*REa{hFH?7rJ#S7S_Q|CU)-$oCFo#oV+&xC+h{|_ zQ|c-xg?<0@F%70Iagzm_v+S6bq2eQg0( zek-a)y=1Yp>Ah6BBRnsvUg=8kx=6&7PL5A$bGIzsJd&!2N=Mi6*~m0V9SD!&6Ztiu zNg!GBey~$d8$M-4voAAvBoKSPY`r-iF8DSRpbuv*r!K8ysn>v;CSp1OS z>!J8-+_ZOwVxl;AfWYaYJ8R!@Zyb;pkz4UlKw_7k)nKQxkX$jk*pREsuqTV^qp^DW zdck3x6ej$xea#s)FO`N$sJ_e8XZUz4$t7gYw!g0;pG2skQIIi$Fq(#r4JUQJvl0K$ zKfSUxQLz_~HzRMC+4FOl(?wp5j~79?Ok07H+KV*56vUZkyQ3Tc*Q1km=-!GTMT&8Y zK!stiYN6&@6~%f#tm+uj+F0K>V?OAOxkjV2_F0Ci{D!(#7LO3>&&19~-b2Af5$d%- zaL42!Vh!6aR60t-_lfIjtCh&1r} zy3k=g*w0kZv4B;nd47$V8T-Xwe=g$ubla}slTNLWJp4zftw&JGQ@2jG28t?Oiq-W( zl}dK*!PwXZ^Fb4O#?^f*po`z&y86q5lftp?^o%b zghgjVUmM{0-UK;ED8-H=0#3@ zd0T{kU&y`$kj=7s1}w7(N$&w~`sxED%U~DdO_|yXWX^a*c{3^-(MQ=h%Rx49612J7 zOQF&cFoWb8D5wJ@PQ*IGvcN?lluxIW*4LS_B%ldjS`lA=G~O{iF!D}sTa6YMpEoC* z@yllV)U>cFcrz5PDAwy6ZnFbtYSgLmb$MnImO8}|>SA}E@5@dzsx>Zn^-WUDr|P*u zCi^s7W4a1)xVCrg=JDgk;*Y_yTbkd?aM+`G?){ z678thzF7bx2{=V;4!_FI-9Z>XesJq&@f3s7SRG`~3&Z83@!F=L***jhK3ODO&&?^f^&M}FyY({O+UCBy?qNuW^+ z3LiuZ9D-FDAR*w!pFDIzsN4)xTUOUz*{Ebqd}|_fpjD>Wl+YNHuFpT`cPs8p#E`>< zlfUUGPfO;$H)f-ZW$^Y6u`OPp*3V5MLj8E!byxFaMc(rQmPY8JPw3B4WQ&vER14+* zv{~LAe5{+vJ_Y;qhy>M*P!sS+Oiw?>+jp8n;@x6iPIHE?o3W)`*NN>(aHXM=>Jo#@ zUl3D7jUQ`D@muxEdZxo^IpNn`lvtOHIV*(R|W3~8HC zzQU4EAHH}>u3q)9v+x@|1u2R;`LvHBm0*2WQrmWn?110BZ0CL7y2$r_v_+1@!-A;A zxA7fr=%`P^2)_$zS%tDBv?+ zIaPc3d923M&ok|t1~K6`^Pbw7vLN$4&;XT`*JP4{LszA4h4w7-i7?Z|2=Lf01>Q6( z7fo`t9BVZaK(dgEId zUYMC}cj}8+r3*E`PIR%QnF@Ldta;-aJ;hjHwi}wVB>P44bWD4f1{t|R7y6Oq!yk5V zq<(X z+@TO*Yi=TN*6->gOlcWoMo|#^^YcbsFaUKUKJR=`QtdOnUTZVmHvam4)Q5abGH;W6@I{kH5jq3uBV=Epm0(5wct&0i zJ6RWoO_c`Gkw*wI9i*=Gs*MPBXf)}r>bTqn)V~vI9?ddI5Vcwo4u2jb-+_fGf!-Xc z!(>5Je8JrrTklB5{cyP)gWgDGy+8kQQ?tI#;7`u_Ku{J7Ot~UVnE5foBK^s zYpfngY=mPa3-6vfj(zHv-I}XUf>$%e#fVin>BbS{=I%dcNmR78Y^5@RbsL+A?)f`)1RSoOs@*5cl0Wuc}** zYUd{li=tJBrgN#y+J5yDnH5Y-oeH|(XTOzS^JJXtNwgThr&7bIARY8mYYZg(yuH9} z85#VdTNL7St@BPb#%6@Uouk#LPPY}FP4P3-kD+CjO5i>$@VQD)ZX&S5>3B#=FAT%`X2K3_;ueKE7h*Lm3I#A5#`+zJ=OZs$ru0g@8m*z#t+yg~%pq(i~z8 zZ$&xCIss2GBqA8|9$mv}E9KE949KPPmG>{`66&q_H%*>5B+>$EW@cDPq zG}9Oa)BXu|!S5jYvJH74ML)%*Oj=vl4*mLp@_AWGWV-eog3jfZ4%X}j!&)6 z4=^LtLKj(O3=;8F&|K^xXT`&zCTG{jbCoRA*faUmoSOXvS7;JQx5=@SF+4$uix`k2 zT(rsQlJ<49*tkg2@w0F|UbrYKKS>&SrAp$R)D~= z=vg^XW!cEIu@BcC&$fq9e_KCIuKEHJUfSzE*i3E$e<+^KC+QaW^uDQWO~urr+d3Z` zd>eGsM*#_@Q}@f!l;K=DW>a=#_~PfoQx#g`(6uiZ7r4{Fa}&Th|z|A_D!@I~WETemyrsf?0gy}ll^R0MHf1kS`eIeFX7 zrn^VGpU~sPBt;`l?ZlQv)61pmm<$e)ien9-a2>XF&_N}Nm$C&0ge1|#{jdS-A#$!+ zK>TK5Bo8d)+LY6&k~e2fS7P<@n7vqhYd*eqK4jdnGC^XSsf+0^hYdw*Y4*<++Ux&CfPh(>6Y6iRRxg_B77_u zpA9Tq5d6HlqgLI})ZJTrI^ zOEP#Zi>_mIINC<-csQC$p2<{VeM=J*#PkcMX6|6g3_v5LJHh8yC>x1L0+vw)Q+oXb%=pKk(S^6m+0bS*@ zui<`WKgufCyr5UAK{@Mv7OZL6FNjqR=Uxl46m0shQMIR;>q5I1EG}-QZ)8pwfvwMD zey7qe3hec}IU$+0Z&Znu#Sb%bC#)pjmXN#a->Fsw-oqP zAzo6CR;J#KW||#KK{QcbB_Kb#U5tmV=|14A<*7yyD4=)`q=K{i24o;US{d0|J6x$> zi>(~gPjO9m^dX4PZwrjk3mTIB5cSvi1ZX$8MgA1_L=*gd39F^G@J9;cP*ED!PZ9fG zdA)A(izVyO1LjjiiQ+m$EnVnLFi*spsE>f|s)Wzj+8bDzm>Cq~rsnaAr5R>SIMoNo zl1KQKDFt;&PN%p4ZaT+a1NXM9t*J=MO%_F?dUa;<9#d%F7~mBVKDI4jw< z4dMkpX?gA~EqJ+gw5h`0o|-zG-<-nhDyq}!n}L~LVjZuL4jv}XN~z?r)yP}Twzyrw zQn1p67RMcnO=}L3aCR5+rby=nZ67CwnQzAe%JC{myVrH-znol#{W#qz6JCkbn7kZn zjI8;ruT3?hh8ZC;zMP)(CIS-4Z}Gbw6Fb)HRZn&3p?FH65V{`drH^+X3@zfB`l5=+ zLWoYqY$!bUd^MvlogSxRQ;c1FHI>~))N;GD!62peH4%$h0@c7R(vo@kDb0pdyLGtj z>{su?n+=nfZmqcMUWG~DDyPYah%eUUxMZqM6>gaBrG7o_BJ5LkZ7;CZ&!6G+&7LEH#C0qBez@8wAwsYBF{Fe>hU=zhw#Xl)ePZX7ni2#uO^ zGAt?P2Kbssf9(AtbZ=Ha_W!XmAz(G$e*p8_OL9@qmfKqkyaagackI@bRRZ3B%322G z6xFY;&zDm^;SC@#y5PYIw!ekhzKfP*LuNPI+r#t@M5exmp4bc{BT*J!$SZ~xF>9bq zRlbu6zD-RyX;`0nT+XpIpnh>HtE4V(P~F;y+X4F`zifLRv}(?{_{`|HHt z1yu4YoG@3`w-@Q)^1Yqy?JdAL3N3*^590DXT2&bao zLOGf*;PN8CZieNRPh@KodrZ*nUBGSUt0!%kCX}~CSwgktf6vy5PlDI^ zWiaN4p^eEq1={w|!+Yg&v4)G905S6WW!b)n+*e$uYx_oFL2lJp!dP`1h2 z*Y(coO_gdAHOkJ*2}HVsCl$Zv*<&f;oaFA@_orL!Dd|&z+P7H^zn4Ph-JCFDY@gQ| zw@=Z9qUU`)+C1J5Ogw(j!1JjtmLF%28;SCA3qSf7&0Sx)H@4*7R+DE!t*4lUUiL#% zTeC4{fSSXiJd zrR1Ea@dEZFpZi)wd%!7BZomm!>IN)EnF&TQV_DQncIfu~R+k$zLuV5H$>YDqFr79* z4JjT7ECE8Z$?NhbX_|9xPFsv^4 z@jdrvm>0U5Xpt0t=;~l9LFkzXq=TEH=sNp;=R?+Zn4kBO-`j6(BAISwK-UiM+rrmV z23X>gYUlK+$6?pFUQcuXyG9`?*Uh+5%iUOMp%4Ve5M$epGFflX>qp?G)5y$`9RmVc zxqTCRE!Z=_P~6V35pzTrjW)incR$B5uBJ{c-KhUKM9IM?GEx%YhRb-0wT&}a*O#7( zM2)&Ut4MyLe$svSEgziI#zH?Vi${uXz3+*lYW34SUU(m4uMmJea~59ucg2O;YFH?I zMxZe@6N}n&Z!jqoWQEDS>mGYiA)}{`et8j>IGVAwQcK|UbnFNH?bM_*z?x%ci-)x# zesp=OJUnb4>5N2LP06x|oSufk=%RhNB1RWKg5(qkdnTYq(m~mAH&ijmhj<-$u7<=F z@D>1+ajlloy2Lu#`6iO_7 zHl$~+DEZWd{ZquHQHEIq{g~W%3+Op9)T1MMnuT;8USO^@-5X z(DVyM;AO{3)gO#1bT((|y|T(Kj(vINyGJTdJdbY+)nl`+f*GW(4->w?-n(bn>C z0YuM}N929OPj?h7IYxrA2^wGlmS-tp0|fLTOBF$*qh3;;W$K#j2L@VCD4guPU(}Xt zeweGxBs@_ot)AeGFIOA3<6dQc)Biq7b2A*&e<gE;Le=Ci>0_ z4>A<1U$R}5jX@2a(m;E$cgFy)`oYA*s$mJ$P<$v4sS>P`pBeI*KT@Y*-PyU8xk$(z4AElZx5)h@agP0Ae-Bl#Y{p>G8oXJ&enfd#RvktuGf;;q_DR)sQ$;L(uMUyH*QUaSmsct!U581o$ynmQ&FU7YBQ4dEE}7bY>XVj9AloGdV6Wew4S5O$jnw1L-9c|hz5-m z&g8b)g!aOlSh$Z4&dM&$(D!iuDR(O!=WFnaPk2K1>mx`s;(nB}fS z7L*)mdK649m$Qo2%Zsa@_`3M{syp@qnJKQ$TFv`Cw3q|n0pEL}22~n;sxY1!+O?Q< z>pKd4QogWjh=OHnt5JzpIV_jYGVV9!Ce{zed2vIaD&k(FeXJlC#thA&Wb5bZt)>%K zZLwdR(k|z5j2l174Bywp9g2I|FtvqJh=*AQsyv>yztL*9nrHIpW~qK0x6d2IqDnKY z@N;bj%}<6>shsuwdPqgr+6zZzT)AIxbKdNdiyp(lFH$^2978qpxq_V?`KRIlbZf~H z1u6JCp6_n&+wzT=i+H*j@$}to1(|2LQgB9&-uZaz$+gTKXV<4`c$P`(x-^xkO_+u- z`#MuWwh`R-*uD+?cX2^f0w}vW{iswjd5tpuV4U;7ZWZ$W5eN9OfFQogaW5FPGOg2Z5x+`&$4sXZ!6RsLv}s4j z?z%xOc}+@$X%Y|B=W0RL$OFktkh|I_95|n&=?cW<2ts5U{t8kWiRcIGTn-*|kS&3K1A>$QF2*8J-85CqcG(18vt`+?LDochEigOQR7bP;D@A@N0WH7ks z37Qqs4ET-QdgzLm$Tp$(Vr#9(_ELsu%6xKp;PT3ZGA*3!UPMT9KIYE7lh^alUeWlS z&ok#WVED+h)a)F2wHO4@ZN6U@{G+aY6V)V^s;h(c`TcdKOIN`}PbRMM*CgQFk5$!5 z|7uBKUVUX)2P;0ty4}4&4L@yk@m7xOoAgog9JZ|=-!jc-9b%j`}z6t+cX!O-X+ zP&sY2pj~W>)?Fb_b)}mYtG&j&Y_3M8U5h-Q8p)b}!Sx__qwFh>dKT&Yd~w1B9C=Htd_@*92&}H{o=ScS25sge8}eNW~|mRq0V7jcd+_Qu0Cx3pWWto8ZxV5lDW;X#aHyqgLF)AY8?zbX$+ z0kXtZ)ow%U3+ifAecl zn;?P^xKOHM|WG?q^pQFa>nbI}>y~|Gx zsOAI!8T!zV;j*iZ=LI>31~q{slp`lk>&!A&8f@laTd_`{w<@ds&$0#1o{Q@j#DY(G zoDEJwBt>4NyWi!<@!Tiv4ZNJW>Vs6P;JV?(@wT6%*wwcw?T)Yt&B)c9zurS1r%r9R z(%mJ@J9SG(77>@;Be=U-xYZoLiZEV_|xYpO$m5gXnQ8`gg zjLfmoI4TUT6$9o9piw%*n;evrT^Vj*n=+~Jd!AQW(mbv66_8}42F*7c!qV0H1yY&J zeS!ifk5eOn-$(M7#mzr9;eRqoYn&E}Ff+b2S3s~KQ+uJ~s?(AxDutwv}c5jun(?9?gb;f z-Pxgc@bRLw=}SG+w^7TFWB$QsUejS$R+9={92!MVOML#x!!#qK9Fnl1ZE-#>pit!V zO4&|9$H8U&J9B|lQRK8CS8D_hLU+j}cz0@jOsivL9_PuQSJ{WFVCz>EtJL4hAZ@Fz~KL7l2+qw|-s-y0DZ{}|ua1`qF|zGEv0 zDc;;T#<{HVdA!M^6u8?b-qATtcTqa%zCXtWBtmR?;pCv zGq^ao0Sm8-dLcO#jARQi*j7m;qk!SkM>7kbrHsoe!W*@X^b{*Tde`^48SjpIQCvX5 zA5F)~A+$xIk9PN`kY{|PD`2iw@%J%^LR)ufJ%zuOHj}%&3@+O_(W@652)0q*(3P%$ zuB$Id<+8WP9_a?v8BKpSa+gXqvLUZUSv!R!0o#bFl0*b4KZKZXL!z&?oSB&i5?|ea zu@<0LuU%dEbT&{wJ9T8{DQEff7S28zp6tYnVmoRG&9c>Ne4$xE0Q8QkZ%d$dtor!P0%is^c# zxW0^?IjOJSFf?-qKRE6w(K#ES!*X6`mcorEenu~{H`8~XqLvg%;NXsXCU{B;za0N% zUL^@y3Sn0TssmqKhcmni>{vC0Z!!B3bYgL(zL9K0cbS0+&OhXBIkN7Fo&yCwQgM zW9#3NnxY1(piT)k2rjg4>5gj1>NWQFAI0ZA7+$$XuJ2#OZc3=W*Z;}r+w};0-zcyx zxS1qV=rw1`Y+PDU3k`Mp;yd8xt2Y&@!-?&#=ifsOE%z^X5-`xW*$VJr(fCt`9~RHP z5=!dAHpJjr8(q`9Gki*$6`$z@aR52oPqRmSLfZ@oR$2jdiJ*UM!lJ|1XiQ~|%!W?* z#p%;#5o(LJpwWJ8D)^*?Vn46j+^}!LOf02#IrqR8sqv$?PP)o?cb%D3gh-?De9j|R(es=G-HtyHhw<^YLl=v?z( z+NLKnHwYmuO#XoTJd?aKH9WkWrs$*gAo@i;&{7`L{eBG&;fP#r#$Bz%yg6`1`C2in zFjfqMKFiCIMBPV}skEwTn7CF29|cp=IkDJCw%)1|LMlEOz3s^<&oQrb<-t;j6PCi6 zStQ?&oa5=XzL*6;XYu=51l{I{wkH+jbYZ&hb!C=0Z1+Cjoj!etp)~RR8=e0&&z&yI z?#F@iGfgF)28-CE_H+b``gE{4Av;12fkZdcPup5zZ$JTjG;(%|)t`tVhOLn*l#FUu z4a^|$$uwIURC+o3E0yTGh^tiXdR9hI?QXwc3o@2*K~Y7D$r zQwXl?uDx*Wu7s%z<0aW+$5~H?^`guo^QCH(O;OzrbGqO2aBiq2zR+hNtw|&wOZv>Q z6AR^NpI*y4H5Dsgh#j{z{kRv727+Y1;kdm8dVU^#7U{~+*PKj*Df^_oV2dNX2iyYK znxo`0F*C>+tNg|iU=ofIhb6cPBx*KZX4E+(AoF}?(Sa=@>t0mqt#6ugpejC37Ab{O z^y-3xCkOVkLwY5>GBv-oYes8hFx&L~Ofb;cgG?+ig z+jItG%ms3YGs*%wGch`Gur+wkXWL{^TE35}T&x`vYuzQa%eC1{?J$4B-+LXicw1Gh ze$op}Y$1}>1hx|%z8bH7``G_xB2GBn!|y=ng=EtMoQ8m0LEJJ9_9rlaI~utGEe5z;~w*G>GUD2_|??P?q(>p2EU9CSVz zHBr96eYSlb0v%AaCHoZ4jajt0d{Ez-g94)V*dXM#5>5a`m0c`;&VGmSn=X*y!aVGW z`L^pzhS43fM>37ZdwKSsfpiME5uCOTE}%{@iObzvNpFhBpfifC^Qe@KL!~LO)3@Fy zF@3C34w>e71T^ntKQn#IC8_aVXmatve?Asl+Oi;?b3h`W>`El1fYs3?@8Ig_hNoc3 z0s}~yy(j6r72dOo_`OVM1w z`{thTrQw-?d+d93$STipkxXL1$&M7n8+WjmT)Q1Fy-xMDONf~`fU{efnP}M=#+(B8 zABV;TrEbis*;Npe$8h+JGG8c*Yq4=Sc(GH4#@>F^ZsZ2$;xOMoMkQ@shyN}*W|mhq z7)Ew9ZqLfEHu7ITR7}5qAGiGtw4^jmf47Pma%5;pMb(062X)-QUVtA_X`>b}Szk8h zGnJ&a;i|2*;y~UcX;5gTaMt$4Cp{v)pGadj>FKM9$r7n%{&+Nzcf6+d7+%fr!GHP5 zh#pO5AKj%U3+KJR!G^>;u!z>QvoNn>X7@RYFyLL&DqKG3S&Zv5pxm*T(fot==yp@K zrwx{==PK;HhY%|Hx!HW-BtB#mYuMF7g$_|PnDK!lnFp)?x;x8NT*w_F$W&9$;`hz2 zM(s~ev=2MNJkMW*=opP}nscdKGc#n1gau!;Ob>OP)O#{rGiS|x{m?sxe=|9*TjOTr zn1FBX_3jY8cj`Klwe3=q!cuQ7?Sh=XS{c9#1 z6lyO#{SK^Syi)F3dHW#A>92O!cOK7HnQcD^jRlJyHFO3B;S}_ks`^eoYRF{dh^2S;p_8yK`^%ByuX zW8{FFtUKuR67HFGr|m3|@e8G_QT0Y$&L|&M1oyBn0Hw|7L@{$1Z_HAfyc?IeYu)mK zT?wwIUY>~jf2gx*c7Le30XG`~pshz3d!|5^Cd7n#Vx8g$glr5fL8Ue;rFavnhgnMRS; z%~Yv6?De(1uv^|(+@SBxG{S@DhZcVNSnUl2S7x6(EIxUNxwec=@`X;W=?HWg zCGpMR)+ITnPRMtZKhJdg|GyP^L-27&<+wB9zBYWWE|R>o%Ht|Yld!+m5ke@wIhgu7 zd&1@TOwDa9%`HqUSXazVOfXk0OiXIgc;FgD7?}6tJSvFcYa(8M@5|BD$=1r!-GkH3 z!fGsa%qg6UFyc@o(sF!O0)U3*#yZ?$2kPdJ(nSM&%_jcbnV71rURb^hnqIGx;ayH_ zczIw-Js4M4+Vh0Z{66!roXy)EcHuV8mZAmW`PoKxx@?+byYM0qTdTJdn~-rvB*#Ns zhY$7ntUlRL5!H6a9;mZN(HhvIuKhLTD<7K8alUF1#N%nM6ZILJCLuk-i^Ovf=ssmr=r(q@10sY_0!SKGK~B;NtA!=>nJ2^aT7f z?Z3m({Ra0B*+qANq^*aesf+vHfPc494`*iw7gHxohyN0X(1Y}JH#2qn8yxj-f`zM7 zTDw`g{~t)ijP*aK2NCJtZ|`>~L_Ys}l$C=sTn6;VzWq);5upwH=Lk*B&EbNm|B&kh zz;6XbXlf$#x={XcTEW*xLd>a0*k7Mkhp4Py}*GUoUB0fH-K`*pziPuwb)* zpvhaLhjvyuWRx>`#~0rwrm=-7=9auMbWgKiD&JzLAf_q2+c&d8k1npi8lTLz>*_kq zx&S3LHqPv}@<6IhU+m+;_Svd@)#@9@xGz^{!G8AysB&s7*-`?>v6a)rtd$Z>-10KC zn`2Mwbg|2u^~w0G?aES%SoK!#aY&s^KCqOHugjal6MR)UCr|J?e)hd#D{W^Ta&*0> ze3H~XCNe?166d~&p?m4i6X;_G70Z1`Vm05#eRyM2;@J|vzJ4qyHa;Nfw7xSkqUcbV z-XkB$e#XOF$`_;e-i7cG^jxqI=B+7%&H_LF@me`|bJNAx;7_X5ep&z0_ySm926K@F@a@n4@Q@1O};cw$GuxYx6 zDXW=79C&=69c&{7wquJcRAu3=3~BjD))$%?ZaghScA`WHt3in>lT}>wsNNdTt<#Wu zN>N8)lpFF|FWm_E+WPxWqz1v#FyBE$m=N@i2HvgL)PlgEPo?6YE`nq5O0jK=wp#5I zK7q{Bh#t5m_f-v}rw5XCoLL4i`a>t-EWV*mQ>8Up6{LOv6)s&@Ts#zOQp`26b|Ii-w+OM7g8GW8YWIg2!p|5grVfL5VUx zjhx`b;x#!F(|$go%KRapoQ>DL?uw;(MW0HBx8ia28L*K6P+8x z*pZf{GdMQUDg!#`SAuRGOpS*h-RSxr$uskhMz-q_^F;|t{aVQ1oj4!Vg@Olq8l zqk0;0mCzTp<+?)3MiWH@z?Ascetg=Kim%f#8)iuP-K^y#wO+~Gbgi(SN#~!DPJJk( zeI-@HaCF=xql!g6tq$z&M{W}>nXG&iV%H(w7I(FP7O&U#)nC^0TIzAyfm9gZxb7Ez ze^Gs$EFRlM+l%D6D#{o3vUa6DA;4j42r#dZn~erkMwGoK!cc_e&Lg1 zb!QphAl`D)OpH|n3}{hj@VsSkmU57nS+zOH;c^m2C5 z7P~qFa+$jwM%ts&3q~korn%qln=luvoExlde6_J5@KKChJKZ;qr!yjhm6d*A)_vVA zVA6H0W338$KhfS)qS(2#LvMJ?zA8u4wL7?rH(7QAddMicej_faVNn6RLkN^yDUE6E zkJMR0D@)bHN~cc2D8EE4D;t=Rv~SOP#Ln|Nl$EyKT1m5Eg-)$+A6)6)hDr67d%13I zZv&rTAylM!m0wxRnVEDhtr?0<#+vpP(8`Zd&V`?`DwKA)y!bG3d%bYFt0zfUJ#4*m zB!Oe_p>Hj~uyZK1@x{=2V<}shCbX+#GQb@jn@f0*D6za)5goXvzh|Z^#`A#XjSWX# zgKLUG=po8wA2`MlDg65h6Qt3E<@SD?@e7cM9jRn_y+FlnW7|=(RP8v}rib0BZX|2@ z1HNJUXITwRDAW=7k1RwELaBXYt8KPO4`l@HaXq&VJ5@$?XXaufS&RfUX`pObSwgc9 zZyL$x%lX!2cM5S0tKHL`I z<6gY&{r+UXCHjlP#M)eZm(Uo2w+wWBKQDS)f0A(?`}3=v0igNih406A9vrsZj%d!~ zCsR+kMX6M`mIh2&ZMhB*??7L3iyC;)MduavH{5O)nu>!%YTJ}B!pJ@(btyg%YT?ZW z8DIKTF>~Zsu8d{ns6b+OFMPgE1ky&Opo5KEaKOsygTV}Znl7pUfq=FbTYKf|%=8d$ zTc(KjAD&iaw$dyB{0aCLcmrUy;X(P>tX#|1k?#ANL_w>Om){7KT)N(ISV+%X(;o^< zypff$!)eXf3H(xL{CxfGSB3zFL$iVVWqK0u39kTR+n^^=W5!2P$OVsHr{u{ygmHsP=HZhMHLJ=A}YQ1eTKri)rIT2 zue72<6_Au7Nj7;)VJI7!1U)Hp$6`J-j|vZR7#2Ygu)08^e2g^{6^Ta%(kKaqJ|DBCfM zv2>_~q+?lS-!`Nmfcz!QY%|m$JO;L@hU=MDWyS1vmxg|>5KDw*OePw?44=jS?uKd@N9M%v|c#c!9FeuZMWmxxo zH7cX%mqF}!?P{K^K zq4fRv12T-jK|@L|j8|Oi9n8;JP5vx1^%K}f_Sd3QKfL@1{8!5P$G}J7f>gg!);}YEWm|tl z-qD07>KB6g1NkHJpOGRVA&AjW(|PjmrTwqm?2iZdCk_b-!OnhK(r^6y8&~^lXMYT8 z^f%6a-??A8++X`au(_Wm@*6*Yu3;xr~k1s7^4}K6j1RMNmci`7!{zGo~<6HT|>90dKf(!mMXSma!%<#{+ jUx%REKSA)Nd85A==G7F@&=G4A!~e?R literal 0 HcmV?d00001 From c5398f61f99a18e46ff46f84f100c831afdff6cd Mon Sep 17 00:00:00 2001 From: phf Date: Wed, 28 Jan 2015 15:37:52 +0100 Subject: [PATCH 030/429] [CORE] Modif de trad et renomage pour le module askpricesupplier (#new_ask_price). --- htdocs/comm/askpricesupplier.php | 8 ++--- .../modules/modAskPriceSupplier.class.php | 32 +++++++++++++++--- ...osal.odt => template_askpricesupplier.odt} | Bin 3 files changed, 31 insertions(+), 9 deletions(-) rename htdocs/install/doctemplates/askpricesupplier/{template_proposal.odt => template_askpricesupplier.odt} (100%) diff --git a/htdocs/comm/askpricesupplier.php b/htdocs/comm/askpricesupplier.php index 855f84a72d8..ca34e84fb30 100644 --- a/htdocs/comm/askpricesupplier.php +++ b/htdocs/comm/askpricesupplier.php @@ -1285,7 +1285,7 @@ if ($action == 'create') // Third party print ''; - print ''; + print ''; if ($socid > 0) { print ''; } else { print ''; } print '' . "\n"; @@ -2186,14 +2186,14 @@ if ($action == 'create') * Documents generes */ $filename = dol_sanitizeFileName($object->ref); - $filedir = $conf->propal->dir_output . "/" . dol_sanitizeFileName($object->ref); + $filedir = $conf->askpricesupplier->dir_output . "/" . dol_sanitizeFileName($object->ref); $urlsource = $_SERVER["PHP_SELF"] . "?id=" . $object->id; $genallowed = $user->rights->askpricesupplier->creer; $delallowed = $user->rights->askpricesupplier->supprimer; $var = true; - $somethingshown = $formfile->show_documents('propal', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', 0, '', $soc->default_lang); + $somethingshown = $formfile->show_documents('askpricesupplier', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', 0, '', $soc->default_lang); /* * Linked object block diff --git a/htdocs/core/modules/modAskPriceSupplier.class.php b/htdocs/core/modules/modAskPriceSupplier.class.php index f0cf2a7a40f..593ac749b1a 100644 --- a/htdocs/core/modules/modAskPriceSupplier.class.php +++ b/htdocs/core/modules/modAskPriceSupplier.class.php @@ -48,7 +48,7 @@ class modAskPriceSupplier extends DolibarrModules $this->db = $db; $this->numero = 999999; - $this->family = "products"; + $this->family = "crm"; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); $this->description = "askpricesupplierDESC"; @@ -220,11 +220,33 @@ class modAskPriceSupplier extends DolibarrModules */ function init($options='') { - //global $conf,$langs; + global $conf,$langs; - /*CREATE IF NOT EXISTS llx_askpricesupplier (rowid int auto_increment);*/ - - $sql = array(); + // Remove permissions and default values + $this->remove($options); + + //ODT template + $src=DOL_DOCUMENT_ROOT.'/install/doctemplates/askpricesupplier/template_askpricesupplier.odt'; + $dirodt=DOL_DATA_ROOT.'/doctemplates/askpricesupplier'; + $dest=$dirodt.'/template_askpricesupplier.odt'; + + if (file_exists($src) && ! file_exists($dest)) + { + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + dol_mkdir($dirodt); + $result=dol_copy($src,$dest,0,0); + if ($result < 0) + { + $langs->load("errors"); + $this->error=$langs->trans('ErrorFailToCopyFile',$src,$dest); + return 0; + } + } + + $sql = array( + "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->const[0][2]."' AND entity = ".$conf->entity, + "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->const[0][2]."','askpricesupplier',".$conf->entity.")", + ); $result=$this->_load_tables('/comm/askpricesupplier/sql/'); return $this->_init($sql, $options); diff --git a/htdocs/install/doctemplates/askpricesupplier/template_proposal.odt b/htdocs/install/doctemplates/askpricesupplier/template_askpricesupplier.odt similarity index 100% rename from htdocs/install/doctemplates/askpricesupplier/template_proposal.odt rename to htdocs/install/doctemplates/askpricesupplier/template_askpricesupplier.odt From a98ce0180786f841b04bd59ee91785e0c4e2ce13 Mon Sep 17 00:00:00 2001 From: phf Date: Wed, 28 Jan 2015 17:27:26 +0100 Subject: [PATCH 031/429] =?UTF-8?q?[CORE]=20renomage=20de=20masse=20+=20co?= =?UTF-8?q?rrection=20des=20noms=20des=20fichiers/fonctions=20par=20copie?= =?UTF-8?q?=20+=20ajout=20de=20cl=C3=A9s=20de=20traductions=20(#new=5Fask?= =?UTF-8?q?=5Fprice).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/admin/askpricesupplier.php | 648 ++++++++++++++++++ htdocs/comm/askpricesupplier.php | 2 +- htdocs/core/lib/askpricesupplier.lib.php | 4 +- ..._generic_askpricesupplier_odt.modules.php} | 44 +- ...zur.modules.php => pdf_aurore.modules.php} | 22 +- .../mod_askpricesupplier_marbre.php | 2 +- .../modules/modAskPriceSupplier.class.php | 2 +- htdocs/langs/fr_FR/askpricesupplier.lang | 16 +- 8 files changed, 695 insertions(+), 45 deletions(-) create mode 100644 htdocs/admin/askpricesupplier.php rename htdocs/core/modules/askpricesupplier/doc/{doc_generic_proposal_odt.modules.php => doc_generic_askpricesupplier_odt.modules.php} (89%) rename htdocs/core/modules/askpricesupplier/doc/{pdf_azur.modules.php => pdf_aurore.modules.php} (98%) diff --git a/htdocs/admin/askpricesupplier.php b/htdocs/admin/askpricesupplier.php new file mode 100644 index 00000000000..819aa64c471 --- /dev/null +++ b/htdocs/admin/askpricesupplier.php @@ -0,0 +1,648 @@ + + * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2004 Sebastien Di Cintio + * Copyright (C) 2004 Benoit Mortier + * Copyright (C) 2004 Eric Seigne + * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2008 Raphael Bertrand (Resultic) + * Copyright (C) 2011-2013 Juanjo Menent + * + * 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/admin/propal.php + * \ingroup propale + * \brief Setup page for commercial proposal module + */ + +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/comm/askpricesupplier/class/askpricesupplier.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; +$langs->load("admin"); +$langs->load("errors"); +$langs->load('other'); +$langs->load('propal'); + +if (! $user->admin) accessforbidden(); + +$action = GETPOST('action','alpha'); +$value = GETPOST('value','alpha'); +$label = GETPOST('label','alpha'); +$scandir = GETPOST('scandir','alpha'); +$type='askpricesupplier'; + +/* + * Actions + */ +$error=0; +if ($action == 'updateMask') +{ + $maskconstaskpricesupplier=GETPOST('maskconstaskpricesupplier','alpha'); + $maskaskpricesupplier=GETPOST('maskaskpricesupplier','alpha'); + if ($maskconstaskpricesupplier) $res = dolibarr_set_const($db,$maskconstaskpricesupplier,$maskaskpricesupplier,'chaine',0,'',$conf->entity); + + if (! $res > 0) $error++; + + if (! $error) + { + setEventMessage($langs->trans("SetupSaved")); + } + else + { + setEventMessage($langs->trans("Error"),'errors'); + } +} + +if ($action == 'specimen') +{ + $modele=GETPOST('module','alpha'); + + $propal = new AskPriceSupplier($db); + $propal->initAsSpecimen(); + + // Search template files + $file=''; $classname=''; $filefound=0; + $dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']); + foreach($dirmodels as $reldir) + { + $file=dol_buildpath($reldir."core/modules/askpricesupplier/doc/pdf_".$modele.".modules.php"); + if (file_exists($file)) + { + $filefound=1; + $classname = "pdf_".$modele; + break; + } + } + + if ($filefound) + { + require_once $file; + + $module = new $classname($db); + + if ($module->write_file($propal,$langs) > 0) + { + header("Location: ".DOL_URL_ROOT."/document.php?modulepart=askpricesupplier&file=SPECIMEN.pdf"); + return; + } + else + { + setEventMessage($module->error,'errors'); + dol_syslog($module->error, LOG_ERR); + } + } + else + { + setEventMessage($langs->trans("ErrorModuleNotFound"),'errors'); + dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); + } +} + +if ($action == 'set_ASKPRICESUPPLIER_DRAFT_WATERMARK') +{ + $draft = GETPOST('ASKPRICESUPPLIER_DRAFT_WATERMARK','alpha'); + + $res = dolibarr_set_const($db, "ASKPRICESUPPLIER_DRAFT_WATERMARK",trim($draft),'chaine',0,'',$conf->entity); + if (! $res > 0) $error++; + + if (! $error) + { + setEventMessage($langs->trans("SetupSaved")); + } + else + { + setEventMessage($langs->trans("Error"),'errors'); + } +} + +if ($action == 'set_ASKPRICESUPPLIER_FREE_TEXT') +{ + $freetext = GETPOST('ASKPRICESUPPLIER_FREE_TEXT'); // No alpha here, we want exact string + + $res = dolibarr_set_const($db, "ASKPRICESUPPLIER_FREE_TEXT",$freetext,'chaine',0,'',$conf->entity); + + if (! $res > 0) $error++; + + if (! $error) + { + setEventMessage($langs->trans("SetupSaved")); + } + else + { + setEventMessage($langs->trans("Error"),'errors'); + } +} + +if ($action == 'setdefaultduration') +{ + $res = dolibarr_set_const($db, "ASKPRICESUPPLIER_VALIDITY_DURATION",$value,'chaine',0,'',$conf->entity); + + if (! $res > 0) $error++; + + if (! $error) + { + setEventMessage($langs->trans("SetupSaved")); + } + else + { + setEventMessage($langs->trans("Error"),'errors'); + } +} + +if ($action == 'set_BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER') +{ + $res = dolibarr_set_const($db, "BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER",$value,'chaine',0,'',$conf->entity); + + if (! $res > 0) $error++; + + if (! $error) + { + setEventMessage($langs->trans("SetupSaved")); + } + else + { + setEventMessage($langs->trans("Error"),'errors'); + } +} + +// Define constants for submodules that contains parameters (forms with param1, param2, ... and value1, value2, ...) +if ($action == 'setModuleOptions') +{ + $post_size=count($_POST); + + $db->begin(); + + for($i=0;$i < $post_size;$i++) + { + if (array_key_exists('param'.$i,$_POST)) + { + $param=GETPOST("param".$i,'alpha'); + $value=GETPOST("value".$i,'alpha'); + if ($param) $res = dolibarr_set_const($db,$param,$value,'chaine',0,'',$conf->entity); + if (! $res > 0) $error++; + } + } + if (! $error) + { + $db->commit(); + setEventMessage($langs->trans("SetupSaved")); + } + else + { + $db->rollback(); + setEventMessage($langs->trans("Error"),'errors'); + } +} + +// Activate a model +if ($action == 'set') +{ + $ret = addDocumentModel($value, $type, $label, $scandir); +} + +else if ($action == 'del') +{ + $ret = delDocumentModel($value, $type); + if ($ret > 0) + { + if ($conf->global->ASKPRICESUPPLIER_ADDON_PDF == "$value") dolibarr_del_const($db, 'ASKPRICESUPPLIER_ADDON_PDF',$conf->entity); + } +} + +else if ($action == 'setdoc') +{ + if (dolibarr_set_const($db, "ASKPRICESUPPLIER_ADDON_PDF",$value,'chaine',0,'',$conf->entity)) + { + $conf->global->ASKPRICESUPPLIER_ADDON_PDF = $value; + } + + // On active le modele + $ret = delDocumentModel($value, $type); + if ($ret > 0) + { + $ret = addDocumentModel($value, $type, $label, $scandir); + } +} + +else if ($action == 'setmod') +{ + // TODO Verifier si module numerotation choisi peut etre active + // par appel methode canBeActivated + + dolibarr_set_const($db, "ASKPRICESUPPLIER_ADDON",$value,'chaine',0,'',$conf->entity); +} + + +/* + * Affiche page + */ + +$dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']); + + +llxHeader('',$langs->trans("AskPriceSupplierSetup")); + +$form=new Form($db); + +//if ($mesg) print $mesg; + +$linkback=''.$langs->trans("BackToModuleList").''; +print_fiche_titre($langs->trans("AskPriceSupplierSetup"),$linkback,'setup'); + +$head = askpricesupplier_admin_prepare_head(); + +dol_fiche_head($head, 'general', $langs->trans("CommRequests"), 0, 'askpricesupplier'); + +/* + * Module numerotation + */ +print_titre($langs->trans("AskPriceSupplierNumberingModules")); + +print '
'.$langs->trans("Mask").':'.$form->textwithpicto('',$tooltip,1,1).''.$form->textwithpicto('',$tooltip,1,1).' 
' . $langs->trans('Customer') . '' . $langs->trans('Supplier') . ''; print $soc->getNomUrl(1); @@ -1293,7 +1293,7 @@ if ($action == 'create') print ''; - print $form->select_company('', 'socid', 's.client = 1 OR s.client = 2 OR s.client = 3', 1); + print $form->select_company('', 'socid', 's.fournisseur = 1', 1); print '
'; +print ''; +print '\n"; +print '\n"; +print '\n"; +print ''; +print ''; +print ''."\n"; + +clearstatcache(); + +foreach ($dirmodels as $reldir) +{ + $dir = dol_buildpath($reldir."core/modules/askpricesupplier/"); + + if (is_dir($dir)) + { + $handle = opendir($dir); + if (is_resource($handle)) + { + $var=true; + + while (($file = readdir($handle))!==false) + { + if (substr($file, 0, 12) == 'mod_askpricesupplier_' && substr($file, dol_strlen($file)-3, 3) == 'php') + { + $file = substr($file, 0, dol_strlen($file)-4); + + require_once $dir.$file.'.php'; + + $module = new $file; + + // Show modules according to features level + if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) continue; + if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) continue; + + if ($module->isEnabled()) + { + $var=!$var; + print ''; + + // Show example of numbering module + print ''."\n"; + + print ''; + + $propal=new AskPriceSupplier($db); + $propal->initAsSpecimen(); + + // Info + $htmltooltip=''; + $htmltooltip.=''.$langs->trans("Version").': '.$module->getVersion().'
'; + $propal->type=0; + $nextval=$module->getNextValue($mysoc,$propal); + if ("$nextval" != $langs->trans("NotAvailable")) { // Keep " on nextval + $htmltooltip.=''.$langs->trans("NextValue").': '; + if ($nextval) { + if (preg_match('/^Error/',$nextval) || $nextval=='NotConfigured') + $nextval = $langs->trans($nextval); + $htmltooltip.=$nextval.'
'; + } else { + $htmltooltip.=$langs->trans($module->error).'
'; + } + } + + print ''; + + print "\n"; + } + } + } + closedir($handle); + } + } +} +print "
'.$langs->trans("Name")."'.$langs->trans("Description")."'.$langs->trans("Example")."'.$langs->trans("Status").''.$langs->trans("ShortInfo").'
'.$module->nom."\n"; + print $module->info(); + print ''; + $tmp=$module->getExample(); + if (preg_match('/^Error/',$tmp)) print '
'.$langs->trans($tmp).'
'; + elseif ($tmp=='NotConfigured') print $langs->trans($tmp); + else print $tmp; + print '
'; + if ($conf->global->PROPALE_ADDON == "$file") + { + print img_picto($langs->trans("Activated"),'switch_on'); + } + else + { + print ''; + print img_picto($langs->trans("Disabled"),'switch_off'); + print ''; + } + print ''; + print $form->textwithpicto('',$htmltooltip,1,0); + print '

\n"; + + +/* + * Document templates generators + */ + +print_titre($langs->trans("AskPriceSupplierPDFModules")); + +// Load array def with activated templates +$def = array(); +$sql = "SELECT nom"; +$sql.= " FROM ".MAIN_DB_PREFIX."document_model"; +$sql.= " WHERE type = '".$type."'"; +$sql.= " AND entity = ".$conf->entity; +$resql=$db->query($sql); +if ($resql) +{ + $i = 0; + $num_rows=$db->num_rows($resql); + while ($i < $num_rows) + { + $array = $db->fetch_array($resql); + array_push($def, $array[0]); + $i++; + } +} +else +{ + dol_print_error($db); +} + + +print "\n"; +print "\n"; +print " \n"; +print " \n"; +print '\n"; +print '\n"; +print ''; +print ''; +print "\n"; + +clearstatcache(); + +$var=true; +foreach ($dirmodels as $reldir) +{ + foreach (array('','/doc') as $valdir) + { + $dir = dol_buildpath($reldir."core/modules/askpricesupplier".$valdir); + + if (is_dir($dir)) + { + $handle=opendir($dir); + if (is_resource($handle)) + { + while (($file = readdir($handle))!==false) + { + $filelist[]=$file; + } + closedir($handle); + arsort($filelist); + + foreach($filelist as $file) + { + if (preg_match('/\.modules\.php$/i',$file) && preg_match('/^(pdf_|doc_)/',$file)) + { + if (file_exists($dir.'/'.$file)) + { + $name = substr($file, 4, dol_strlen($file) -16); + $classname = substr($file, 0, dol_strlen($file) -12); + + require_once $dir.'/'.$file; + $module = new $classname($db); + + $modulequalified=1; + if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) $modulequalified=0; + if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) $modulequalified=0; + + if ($modulequalified) + { + $var = !$var; + print ''; + + // Active + if (in_array($name, $def)) + { + print ''; + } + else + { + print ""; + } + + // Defaut + print "'; + + // Info + $htmltooltip = ''.$langs->trans("Name").': '.$module->name; + $htmltooltip.='
'.$langs->trans("Type").': '.($module->type?$module->type:$langs->trans("Unknown")); + if ($module->type == 'pdf') + { + $htmltooltip.='
'.$langs->trans("Width").'/'.$langs->trans("Height").': '.$module->page_largeur.'/'.$module->page_hauteur; + } + $htmltooltip.='

'.$langs->trans("FeaturesSupported").':'; + $htmltooltip.='
'.$langs->trans("Logo").': '.yn($module->option_logo,1,1); + $htmltooltip.='
'.$langs->trans("PaymentMode").': '.yn($module->option_modereg,1,1); + $htmltooltip.='
'.$langs->trans("PaymentConditions").': '.yn($module->option_condreg,1,1); + $htmltooltip.='
'.$langs->trans("MultiLanguage").': '.yn($module->option_multilang,1,1); + //$htmltooltip.='
'.$langs->trans("Discounts").': '.yn($module->option_escompte,1,1); + //$htmltooltip.='
'.$langs->trans("CreditNote").': '.yn($module->option_credit_note,1,1); + $htmltooltip.='
'.$langs->trans("WatermarkOnDraftProposal").': '.yn($module->option_draft_watermark,1,1); + + + print ''; + + // Preview + print ''; + + print "\n"; + } + } + } + } + } + } + } +} + +print '
".$langs->trans("Name")."".$langs->trans("Description")."'.$langs->trans("Status")."'.$langs->trans("Default")."'.$langs->trans("ShortInfo").''.$langs->trans("Preview").'
'; + print (empty($module->name)?$name:$module->name); + print "\n"; + if (method_exists($module,'info')) print $module->info($langs); + else print $module->description; + print ''."\n"; + print ''; + print img_picto($langs->trans("Enabled"),'switch_on'); + print ''; + print '\n"; + print 'scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"),'switch_off').''; + print ""; + if ($conf->global->ASKPRICESUPPLIER_ADDON_PDF == "$name") + { + print img_picto($langs->trans("Default"),'on'); + } + else + { + print 'scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"),'off').''; + } + print ''; + print $form->textwithpicto('',$htmltooltip,1,0); + print ''; + if ($module->type == 'pdf') + { + print ''.img_object($langs->trans("Preview"),'bill').''; + } + else + { + print img_object($langs->trans("PreviewNotAvailable"),'generic'); + } + print '
'; +print '
'; + + +/* + * Other options + * + */ +print_titre($langs->trans("OtherOptions")); + +$var=true; +print ""; +print ""; +print "\n"; +print '\n"; +print "\n"; +print ""; + +$var=!$var; +print ""; +print ''; +print ""; +print ""; +print ''; +print '"; +print ''; +print ''; +print ''; + +/* +$var=! $var; +print ''; +print ''; +print ''; +print '\n"; +print ''; +*/ + +$var=! $var; +print ''; +print ''; +print ''; +print '\n"; +print ''; + +$var=!$var; +print ""; +print ''; +print ""; +print '\n"; +print ''; + +if ($conf->banque->enabled) +{ + $var=!$var; + print ''; +} +else +{ + $var=!$var; + print ''; +} + +print '
".$langs->trans("Parameter")."'.$langs->trans("Value")." 
'.$langs->trans("DefaultAskDurationValidity").''."global->ASKPRICESUPPLIER_VALIDITY_DURATION."\">
'; +print $langs->trans("UseCustomerContactAsPropalRecipientIfExist"); +print ''; +print $form->selectyesno("value",$conf->global->PROPALE_USE_CUSTOMER_CONTACT_AS_RECIPIENT,1); +print ''; +print ''; +print "
'; +print $langs->trans("FreeLegalTextOnAskPriceSupplier").' ('.$langs->trans("AddCRIfTooLong").')
'; +print ''; +print '
'; +print ''; +print "
'; +print $langs->trans("WatermarkOnDraftAskPriceSupplier").'
'; +print ''; +print '
'; +print ''; +print "
'; + print $langs->trans("BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER").' '; + if (! empty($conf->use_javascript_ajax)) + { + print ajax_constantonoff('BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER'); + } + else + { + if (empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER)) + { + print ''.img_picto($langs->trans("Disabled"),'switch_off').''; + } + else + { + print ''.img_picto($langs->trans("Enabled"),'switch_on').''; + } + } + print '
'; + print $langs->trans("BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPLLIER").' '.$langs->trans('NotAvailable').'
'; + + + +/* + * Directory + */ +print '
'; +print_titre($langs->trans("PathToDocuments")); + +print "\n"; +print "\n"; +print " \n"; +print " \n"; +print "\n"; +print "\n \n \n\n"; +print "
".$langs->trans("Name")."".$langs->trans("Value")."
".$langs->trans("PathDirectory")."".$conf->askpricesupplier->dir_output."
\n
"; + +$db->close(); + +llxFooter(); diff --git a/htdocs/comm/askpricesupplier.php b/htdocs/comm/askpricesupplier.php index ca34e84fb30..f1ea1cde9f0 100644 --- a/htdocs/comm/askpricesupplier.php +++ b/htdocs/comm/askpricesupplier.php @@ -1578,7 +1578,7 @@ if ($action == 'create') $soc = new Societe($db); $soc->fetch($object->socid); - $head = propal_prepare_head($object); + $head = askpricesupplier_prepare_head($object); dol_fiche_head($head, 'comm', $langs->trans('CommRequest'), 0, 'askpricesupplier'); $formconfirm = ''; diff --git a/htdocs/core/lib/askpricesupplier.lib.php b/htdocs/core/lib/askpricesupplier.lib.php index b0b9369f6ee..1c3835e78be 100644 --- a/htdocs/core/lib/askpricesupplier.lib.php +++ b/htdocs/core/lib/askpricesupplier.lib.php @@ -29,7 +29,7 @@ * @param object $object Object related to tabs * @return array Array of tabs to show */ -function propal_prepare_head($object) +function askpricesupplier_prepare_head($object) { global $langs, $conf, $user; $langs->load("askpricesupplier"); @@ -112,7 +112,7 @@ function propal_prepare_head($object) * * @return array head array with tabs */ -function propal_admin_prepare_head() +function askpricesupplier_admin_prepare_head() { global $langs, $conf, $user; diff --git a/htdocs/core/modules/askpricesupplier/doc/doc_generic_proposal_odt.modules.php b/htdocs/core/modules/askpricesupplier/doc/doc_generic_askpricesupplier_odt.modules.php similarity index 89% rename from htdocs/core/modules/askpricesupplier/doc/doc_generic_proposal_odt.modules.php rename to htdocs/core/modules/askpricesupplier/doc/doc_generic_askpricesupplier_odt.modules.php index 8f79094befc..80c1a0bd347 100644 --- a/htdocs/core/modules/askpricesupplier/doc/doc_generic_proposal_odt.modules.php +++ b/htdocs/core/modules/askpricesupplier/doc/doc_generic_askpricesupplier_odt.modules.php @@ -23,7 +23,7 @@ * \brief File of class to build ODT documents for third parties */ -require_once DOL_DOCUMENT_ROOT.'/core/modules/propale/modules_propale.php'; +require_once DOL_DOCUMENT_ROOT.'/core/modules/askpricesupplier/modules_askpricesupplier.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; @@ -34,7 +34,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/doc.lib.php'; /** * Class to build documents using ODF templates generator */ -class doc_generic_proposal_odt extends ModelePDFPropales +class doc_generic_askpricesupplier_odt extends ModelePDFAskPriceSupplier { var $emetteur; // Objet societe qui emet @@ -57,7 +57,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales $this->db = $db; $this->name = "ODT templates"; $this->description = $langs->trans("DocumentModelOdt"); - $this->scandir = 'PROPALE_ADDON_PDF_ODT_PATH'; // Name of constant that is used to save list of directories to scan + $this->scandir = 'ASKPRICESUPPLIER_ADDON_PDF_ODT_PATH'; // Name of constant that is used to save list of directories to scan // Dimension page pour format A4 $this->type = 'odt'; @@ -105,19 +105,19 @@ class doc_generic_proposal_odt extends ModelePDFPropales $texte.= '
'; $texte.= ''; $texte.= ''; - $texte.= ''; - if ($conf->global->MAIN_PROPAL_CHOOSE_ODT_DOCUMENT > 0) + $texte.= ''; + if ($conf->global->MAIN_ASKPRICESUPPLIER_CHOOSE_ODT_DOCUMENT > 0) { - $texte.= ''; - $texte.= ''; - $texte.= ''; + $texte.= ''; + $texte.= ''; + $texte.= ''; } $texte.= ''; // List of directories area $texte.= ''; } diff --git a/htdocs/comm/askpricesupplier/document.php b/htdocs/comm/askpricesupplier/document.php index 5dd239e1cfa..0644f932629 100644 --- a/htdocs/comm/askpricesupplier/document.php +++ b/htdocs/comm/askpricesupplier/document.php @@ -85,9 +85,9 @@ $form = new Form($db); if ($object->id > 0) { - $upload_dir = $conf->propal->dir_output.'/'.dol_sanitizeFileName($object->ref); + $upload_dir = $conf->askpricesupplier->dir_output.'/'.dol_sanitizeFileName($object->ref); - $head = propal_prepare_head($object); + $head = askpricesupplier_prepare_head($object); dol_fiche_head($head, 'document', $langs->trans('CommRequest'), 0, 'askpricesupplier'); // Construit liste des fichiers diff --git a/htdocs/comm/askpricesupplier/info.php b/htdocs/comm/askpricesupplier/info.php index caa9f21dd1e..a288a3490b3 100644 --- a/htdocs/comm/askpricesupplier/info.php +++ b/htdocs/comm/askpricesupplier/info.php @@ -49,7 +49,7 @@ $object = new AskPriceSupplier($db); $object->fetch($id); $object->fetch_thirdparty(); -$head = propal_prepare_head($object); +$head = askpricesupplier_prepare_head($object); dol_fiche_head($head, 'info', $langs->trans('CommRequest'), 0, 'askpricesupplier'); $object->info($object->id); diff --git a/htdocs/comm/askpricesupplier/note.php b/htdocs/comm/askpricesupplier/note.php index c7b430dff8e..e681121db05 100644 --- a/htdocs/comm/askpricesupplier/note.php +++ b/htdocs/comm/askpricesupplier/note.php @@ -41,7 +41,7 @@ $action=GETPOST('action','alpha'); if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'askpricesupplier', $id, 'askpricesupplier'); -$object = new Propal($db); +$object = new AskPriceSupplier($db); @@ -49,7 +49,7 @@ $object = new Propal($db); /* Actions */ /******************************************************************************/ -$permissionnote=$user->rights->propale->creer; // Used by the include of actions_setnotes.inc.php +$permissionnote=$user->rights->askpricesupplier->creer; // Used by the include of actions_setnotes.inc.php include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not includ_once @@ -74,7 +74,7 @@ if ($id > 0 || ! empty($ref)) $societe = new Societe($db); if ( $societe->fetch($object->socid) ) { - $head = propal_prepare_head($object); + $head = askpricesupplier_prepare_head($object); dol_fiche_head($head, 'note', $langs->trans('CommRequest'), 0, 'askpricesupplier'); print '
'; $texttitle=$langs->trans("ListOfDirectories"); - $listofdir=explode(',',preg_replace('/[\r\n]+/',',',trim($conf->global->PROPALE_ADDON_PDF_ODT_PATH))); + $listofdir=explode(',',preg_replace('/[\r\n]+/',',',trim($conf->global->ASKPRICESUPPLIER_ADDON_PDF_ODT_PATH))); $listoffiles=array(); foreach($listofdir as $key=>$tmpdir) { @@ -141,7 +141,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales $texte.= $form->textwithpicto($texttitle,$texthelp,1,'help','',1); $texte.= '
'; $texte.= ''; $texte.= '
'; $texte.= ''; @@ -152,27 +152,27 @@ class doc_generic_proposal_odt extends ModelePDFPropales { $texte.=$langs->trans("NumberOfModelFilesFound").': '.count($listoffiles).''; - if ($conf->global->MAIN_PROPAL_CHOOSE_ODT_DOCUMENT > 0) + if ($conf->global->MAIN_ASKPRICESUPPLIER_CHOOSE_ODT_DOCUMENT > 0) { // Model for creation - $liste=ModelePDFPropales::liste_modeles($this->db); + $liste=ModelePDFAskPriceSupplier::liste_modeles($this->db); $texte.= ''; $texte.= ''; - $texte.= ''; + $texte.= ''; $texte.= '"; $texte.= ''; - $texte.= ''; + $texte.= ''; $texte.= '"; $texte.= ''; - $texte.= ''; + $texte.= ''; $texte.= '"; $texte.= '
'.$langs->trans("DefaultModelPropalCreate").''.$langs->trans("DefaultModelAskPriceSupplierCreate").''; - $texte.= $form->selectarray('value2',$liste,$conf->global->PROPALE_ADDON_PDF_ODT_DEFAULT); + $texte.= $form->selectarray('value2',$liste,$conf->global->ASKPRICESUPPLIER_ADDON_PDF_ODT_DEFAULT); $texte.= "
'.$langs->trans("DefaultModelPropalToBill").''.$langs->trans("DefaultModelAskPriceSupplierToBill").''; - $texte.= $form->selectarray('value3',$liste,$conf->global->PROPALE_ADDON_PDF_ODT_TOBILL); + $texte.= $form->selectarray('value3',$liste,$conf->global->ASKPRICESUPPLIER_ADDON_PDF_ODT_TOBILL); $texte.= "
'.$langs->trans("DefaultModelPropalClosed").''.$langs->trans("DefaultModelAskPriceSupplierClosed").''; - $texte.= $form->selectarray('value4',$liste,$conf->global->PROPALE_ADDON_PDF_ODT_CLOSED); + $texte.= $form->selectarray('value4',$liste,$conf->global->ASKPRICESUPPLIER_ADDON_PDF_ODT_CLOSED); $texte.= "
'; } @@ -236,7 +236,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales if (! is_object($object)) { $id = $object; - $object = new Propale($this->db); + $object = new AskPriceSupplier($this->db); $result=$object->fetch($id); if ($result < 0) { @@ -285,7 +285,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales //print "file=".$file; //print "conf->propal->dir_temp=".$conf->propal->dir_temp; - dol_mkdir($conf->propal->dir_temp); + dol_mkdir($conf->askpricesupplier->dir_temp); // If BILLING contact defined on invoice, we use it @@ -324,7 +324,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales // Line of free text $newfreetext=''; - $paramfreetext='PROPALE_FREE_TEXT'; + $paramfreetext='ASKPRICESUPPLIER_FREE_TEXT'; if (! empty($conf->global->$paramfreetext)) { $newfreetext=make_substitutions($conf->global->$paramfreetext,$substitutionarray); @@ -336,7 +336,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales $odfHandler = new odf( $srctemplatepath, array( - 'PATH_TO_TMP' => $conf->propal->dir_temp, + 'PATH_TO_TMP' => $conf->askpricesupplier->dir_temp, 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' diff --git a/htdocs/core/modules/askpricesupplier/doc/pdf_azur.modules.php b/htdocs/core/modules/askpricesupplier/doc/pdf_aurore.modules.php similarity index 98% rename from htdocs/core/modules/askpricesupplier/doc/pdf_azur.modules.php rename to htdocs/core/modules/askpricesupplier/doc/pdf_aurore.modules.php index 35953b8521f..347677ea1d9 100644 --- a/htdocs/core/modules/askpricesupplier/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/askpricesupplier/doc/pdf_aurore.modules.php @@ -25,7 +25,7 @@ * \ingroup propale * \brief Fichier de la classe permettant de generer les propales au modele Azur */ -require_once DOL_DOCUMENT_ROOT.'/core/modules/propale/modules_propale.php'; +require_once DOL_DOCUMENT_ROOT.'/core/modules/askpricesupplier/modules_askpricesupplier.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; @@ -35,7 +35,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; /** * Class to generate PDF proposal Azur */ -class pdf_azur extends ModelePDFPropales +class pdf_aurore extends ModelePDFAskPriceSupplier { var $db; var $name; @@ -69,8 +69,8 @@ class pdf_azur extends ModelePDFPropales $langs->load("bills"); $this->db = $db; - $this->name = "azur"; - $this->description = $langs->trans('DocModelAzurDescription'); + $this->name = "aurore"; + $this->description = $langs->trans('DocModelAuroreDescription'); // Dimension page pour format A4 $this->type = 'pdf'; @@ -149,14 +149,14 @@ class pdf_azur extends ModelePDFPropales $outputlangs->load("dict"); $outputlangs->load("companies"); $outputlangs->load("bills"); - $outputlangs->load("propal"); + $outputlangs->load("askpricesupplier"); $outputlangs->load("products"); $nblignes = count($object->lines); // Loop on each lines to detect if there is at least one image to show $realpatharray=array(); - if (! empty($conf->global->MAIN_GENERATE_PROPOSALS_WITH_PICTURE)) + if (! empty($conf->global->MAIN_GENERATE_ASKPRICESUPPLIER_WITH_PICTURE)) { for ($i = 0 ; $i < $nblignes ; $i++) { @@ -182,7 +182,7 @@ class pdf_azur extends ModelePDFPropales } if (count($realpatharray) == 0) $this->posxpicture=$this->posxtva; - if ($conf->propal->dir_output) + if ($conf->askpricesupplier->dir_output) { $object->fetch_thirdparty(); @@ -191,13 +191,13 @@ class pdf_azur extends ModelePDFPropales // Definition of $dir and $file if ($object->specimen) { - $dir = $conf->propal->dir_output; + $dir = $conf->askpricesupplier->dir_output; $file = $dir . "/SPECIMEN.pdf"; } else { $objectref = dol_sanitizeFileName($object->ref); - $dir = $conf->propal->dir_output . "/" . $objectref; + $dir = $conf->askpricesupplier->dir_output . "/" . $objectref; $file = $dir . "/" . $objectref . ".pdf"; } @@ -249,10 +249,10 @@ class pdf_azur extends ModelePDFPropales $pdf->SetDrawColor(128,128,128); $pdf->SetTitle($outputlangs->convToOutputCharset($object->ref)); - $pdf->SetSubject($outputlangs->transnoentities("CommercialProposal")); + $pdf->SetSubject($outputlangs->transnoentities("CommercialAsk")); $pdf->SetCreator("Dolibarr ".DOL_VERSION); $pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs))); - $pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("CommercialProposal")); + $pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("CommercialAsk")); if (! empty($conf->global->MAIN_DISABLE_PDF_COMPRESSION)) $pdf->SetCompression(false); $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right diff --git a/htdocs/core/modules/askpricesupplier/mod_askpricesupplier_marbre.php b/htdocs/core/modules/askpricesupplier/mod_askpricesupplier_marbre.php index ec5164b679c..096c5a3cec5 100644 --- a/htdocs/core/modules/askpricesupplier/mod_askpricesupplier_marbre.php +++ b/htdocs/core/modules/askpricesupplier/mod_askpricesupplier_marbre.php @@ -23,7 +23,7 @@ * \brief File of class to manage commercial proposal numbering rules Marbre */ -require_once DOL_DOCUMENT_ROOT .'/core/modules/propale/modules_propale.php'; +require_once DOL_DOCUMENT_ROOT .'/core/modules/askpricesupplier/modules_askpricesupplier.php'; /** diff --git a/htdocs/core/modules/modAskPriceSupplier.class.php b/htdocs/core/modules/modAskPriceSupplier.class.php index 593ac749b1a..53a1552445d 100644 --- a/htdocs/core/modules/modAskPriceSupplier.class.php +++ b/htdocs/core/modules/modAskPriceSupplier.class.php @@ -75,7 +75,7 @@ class modAskPriceSupplier extends DolibarrModules $this->const[$r][0] = "ASKPRICESUPPLIER_ADDON_PDF"; $this->const[$r][1] = "chaine"; - $this->const[$r][2] = "azur"; + $this->const[$r][2] = "aurore"; $this->const[$r][3] = 'Nom du gestionnaire de generation des demandes de prix fournisseurs en PDF'; $this->const[$r][4] = 0; $r++; diff --git a/htdocs/langs/fr_FR/askpricesupplier.lang b/htdocs/langs/fr_FR/askpricesupplier.lang index 863d3749dca..7234366b0e6 100644 --- a/htdocs/langs/fr_FR/askpricesupplier.lang +++ b/htdocs/langs/fr_FR/askpricesupplier.lang @@ -13,8 +13,6 @@ ProposalsDraft=Propositions commerciales brouillons ProposalDraft=Proposition commerciale brouillon ProposalsOpened=Propositions commerciales ouvertes Prop=Propositions commerciales -CommercialProposal=Proposition commerciale -CommercialProposals=Propositions commerciales ProposalCard=Fiche proposition NewProp=Nouvelle proposition commerciale NewProposal=Nouvelle proposition commerciale @@ -88,6 +86,15 @@ TypeContact_askpricesupplier_external_BILLING=Contact client facturation demande TypeContact_askpricesupplier_external_CUSTOMER=Contact client suivi demande ActionsOnAskPriceSupplier=Événements sur la demande +DefaultModelAskPriceSupplierCreate=Modèle par défaut à la création +DefaultModelAskPriceSupplierToBill=Modèle par défaut lors de la clôture d'une proposition commerciale (à facturer) +DefaultModelAskPriceSupplierClosed=Modèle par défaut lors de la clôture d'une proposition commerciale (non facturée) +DefaultAskDurationValidity=Délai de validité par défaut (en jours) + +DocModelAuroreDescription=Modèle de demande de prix fournisseur complet (logo…) + +CommercialAsk=Demande commerciale +CommercialAsks=Demandes commerciales # # @@ -107,7 +114,6 @@ EstimateShort=Devis OtherPropals=Autres propositions AddToDraftProposals=Ajouter à proposition brouillon NoDraftProposals=Pas de propositions brouillons -DefaultProposalDurationValidity=Délai de validité par défaut (en jours) UseCustomerContactAsPropalRecipientIfExist=Utiliser l'adresse de contact suivi client si définie plutôt que l'adresse du tiers comme destinataire des propositions ProposalsAndProposalsLines=Propositions commerciales clients et lignes de propositions @@ -122,8 +128,4 @@ AvailabilityTypeAV_2W=2 semaines AvailabilityTypeAV_3W=3 semaines AvailabilityTypeAV_1M=1 mois # Document models -DocModelAzurDescription=Modèle de proposition commerciale complet (logo…) DocModelJauneDescription=Modèle de proposition Jaune -DefaultModelPropalCreate=Modèle par défaut à la création -DefaultModelPropalToBill=Modèle par défaut lors de la clôture d'une proposition commerciale (à facturer) -DefaultModelPropalClosed=Modèle par défaut lors de la clôture d'une proposition commerciale (non facturée) From 5da4d0262e2eda2f5def95195854ee52ae60a3c1 Mon Sep 17 00:00:00 2001 From: phf Date: Wed, 28 Jan 2015 17:28:44 +0100 Subject: [PATCH 032/429] =?UTF-8?q?[CORE]=20ajouts=20des=20conditions=20n?= =?UTF-8?q?=C3=A9cessaire=20pour=20l'int=C3=A9gration=20du=20module=20(#ne?= =?UTF-8?q?w=5Fask=5Fprice).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/core/class/html.formfile.class.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 274fa19a417..ef6f3fe225d 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -273,7 +273,7 @@ class FormFile } $printer=0; - if (in_array($modulepart,array('facture','propal','proposal','order','commande','expedition'))) // This feature is implemented only for such elements + if (in_array($modulepart,array('facture', 'askpricesupplier','propal','proposal','order','commande','expedition'))) // This feature is implemented only for such elements { $printer = (!empty($user->rights->printing->read) && !empty($conf->printing->enabled))?true:false; } @@ -316,6 +316,15 @@ class FormFile include_once DOL_DOCUMENT_ROOT.'/core/modules/propale/modules_propale.php'; $modellist=ModelePDFPropales::liste_modeles($this->db); } + } + else if ($modulepart == 'askpricesupplier') + { + if (is_array($genallowed)) $modellist=$genallowed; + else + { + include_once DOL_DOCUMENT_ROOT.'/core/modules/askpricesupplier/modules_askpricesupplier.php'; + $modellist=ModelePDFAskPriceSupplier::liste_modeles($this->db); + } } else if ($modulepart == 'commande') { @@ -923,6 +932,11 @@ class FormFile include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; $object_instance=new Propal($this->db); } + else if ($modulepart == 'askpricesupplier') + { + include_once DOL_DOCUMENT_ROOT.'/comm/askpricesupplier/class/askpricesupplier.class.php'; + $object_instance=new AskPriceSupplier($this->db); + } else if ($modulepart == 'order') { include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; @@ -984,6 +998,7 @@ class FormFile if ($modulepart == 'invoice') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); } if ($modulepart == 'invoice_supplier') { preg_match('/([^\/]+)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); if (is_numeric($ref)) { $id=$ref; $ref=''; } } // $ref may be also id with old supplier invoices if ($modulepart == 'propal') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); } + if ($modulepart == 'askpricesupplier') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); } if ($modulepart == 'order') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); } if ($modulepart == 'order_supplier') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); } if ($modulepart == 'contract') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=(isset($reg[1])?$reg[1]:''); } From b3b9527e32d0bbd7c250fa4d911b88509e503d6b Mon Sep 17 00:00:00 2001 From: phf Date: Wed, 28 Jan 2015 17:29:14 +0100 Subject: [PATCH 033/429] [CORE] ajouts de traductions pour le module (#new_ask_price). --- htdocs/langs/fr_FR/admin.lang | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index e8c8f6dd1a2..49e6a6a22ec 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -1151,6 +1151,13 @@ UseOptionLineIfNoQuantity=Une ligne de produit/service ayant une quantité nulle FreeLegalTextOnProposal=Mention complémentaire sur les propositions commerciales WatermarkOnDraftProposal=Filigrane sur les brouillons de propositions commerciales (aucun si vide) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Saisir le compte bancaire cible lors de la proposition commerciale +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Configuration du module Demandes de Prix Fournisseurs +AskPriceSupplierNumberingModules=Modèles de numérotation des demandes de prix fournisseurs +AskPriceSupplierPDFModules=Modèles de documents de demandes de prix fournisseurs +AskPriceSupplierPDFModules=Modèles de documents de demandes de prix fournisseurs +FreeLegalTextOnAskPriceSupplier=Mention complémentaire sur les demandes de prix fournisseurs +WatermarkOnDraftAskPriceSupplier=Filigrane sur les brouillons de demandes de prix (aucun si vide) ##### Orders ##### OrdersSetup=Configuration du module Commandes OrdersNumberingModules=Modèles de numérotation des commandes From fc7f2f2303fecd350ad2590efedb11379a53a375 Mon Sep 17 00:00:00 2001 From: Drosis Nikos Date: Wed, 28 Jan 2015 23:12:46 +0200 Subject: [PATCH 034/429] translate UpdateServerOffline --- htdocs/admin/tools/update.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/tools/update.php b/htdocs/admin/tools/update.php index cdf93a221e7..e12ef58cebf 100644 --- a/htdocs/admin/tools/update.php +++ b/htdocs/admin/tools/update.php @@ -127,7 +127,7 @@ function word_limiter( $text, $limit = 30, $chars = '0123456789.' ) { $str = $title; print $langs->trans("LastStableVersion").' : '. word_limiter( $str ).'
'; } else { - print $langs->trans("LastStableVersion").' : ' .('Update Server Off-Line').'
'; + print $langs->trans("LastStableVersion").' : ' .$langs->trans("UpdateServerOffline").'
'; } print '
'; From a58899d354cd7ebf1471b0ec7a5dab9eb3c61633 Mon Sep 17 00:00:00 2001 From: phf Date: Thu, 29 Jan 2015 10:41:08 +0100 Subject: [PATCH 035/429] [CORE] ajout d'une condition pour le fonctionnement du module (#new_ask_price). --- htdocs/core/tpl/contacts.tpl.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/tpl/contacts.tpl.php b/htdocs/core/tpl/contacts.tpl.php index 6aaf0f5f28d..b8b124b731a 100644 --- a/htdocs/core/tpl/contacts.tpl.php +++ b/htdocs/core/tpl/contacts.tpl.php @@ -27,6 +27,7 @@ $module = $object->element; // Special cases if ($module == 'propal') { $permission=$user->rights->propale->creer; } +elseif ($module == 'askpricesupplier') { $permission=$user->rights->askpricesupplier->creer; } elseif ($module == 'fichinter') { $permission=$user->rights->ficheinter->creer; } elseif ($module == 'invoice_supplier') { $permission=$user->rights->fournisseur->facture->creer; } elseif ($module == 'order_supplier') { $permission=$user->rights->fournisseur->commande->creer; } From 77e4619fe2da1aa9d9a3e8db54db92a27d443bfe Mon Sep 17 00:00:00 2001 From: phf Date: Thu, 29 Jan 2015 10:41:46 +0100 Subject: [PATCH 036/429] [CORE] correction de nom de fonction pour un appel correct (#new_ask_price). --- htdocs/comm/askpricesupplier/contact.php | 4 ++-- htdocs/comm/askpricesupplier/document.php | 4 ++-- htdocs/comm/askpricesupplier/info.php | 2 +- htdocs/comm/askpricesupplier/note.php | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/htdocs/comm/askpricesupplier/contact.php b/htdocs/comm/askpricesupplier/contact.php index 7ebb852d9bb..fbaf02ba7d8 100644 --- a/htdocs/comm/askpricesupplier/contact.php +++ b/htdocs/comm/askpricesupplier/contact.php @@ -149,7 +149,7 @@ $formother = new FormOther($db); if ($object->id > 0) { - $head = propal_prepare_head($object); + $head = askpricesupplier_prepare_head($object); dol_fiche_head($head, 'contact', $langs->trans("CommRequest"), 0, 'askpricesupplier'); /* @@ -198,7 +198,7 @@ if ($object->id > 0) } else { - $formother->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$object->socid,'none','propal',$object->id); + $formother->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$object->socid,'none','askpricesupplier',$object->id); } print '
'; @@ -126,7 +126,7 @@ if ($id > 0 || ! empty($ref)) if ($object->fin_validite) { print dol_print_date($object->fin_validite,'daytext'); - if ($object->statut == 1 && $object->fin_validite < ($now - $conf->propal->cloture->warning_delay)) print img_warning($langs->trans("Late")); + if ($object->statut == 1 && $object->fin_validite < ($now - $conf->askpricesupplier->cloture->warning_delay)) print img_warning($langs->trans("Late")); } else { From 87398c7d43bafe7dff78b3dc22b97b5768d72c75 Mon Sep 17 00:00:00 2001 From: phf Date: Thu, 29 Jan 2015 10:42:53 +0100 Subject: [PATCH 037/429] =?UTF-8?q?[CORE]=20renomage=20de=20variables=20po?= =?UTF-8?q?ur=20=C3=AAtre=20en=20rapport=20avec=20le=20module=20(#new=5Fas?= =?UTF-8?q?k=5Fprice).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/admin/askpricesupplier.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/admin/askpricesupplier.php b/htdocs/admin/askpricesupplier.php index 819aa64c471..ae3f78ca3ce 100644 --- a/htdocs/admin/askpricesupplier.php +++ b/htdocs/admin/askpricesupplier.php @@ -31,11 +31,11 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/comm/askpricesupplier/class/askpricesupplier.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/askpricesupplier.lib.php'; $langs->load("admin"); $langs->load("errors"); $langs->load('other'); -$langs->load('propal'); +$langs->load('askpricesupplier'); if (! $user->admin) accessforbidden(); @@ -324,7 +324,7 @@ foreach ($dirmodels as $reldir) print ''."\n"; print '' . "\n"; // Contacts (ask contact only if thirdparty already defined). TODO do this also into order and invoice. + /* PHFAVRE retrait en temporaire if ($socid > 0) { print "'; } - + */ // Date print ''; // Validaty duration + /* PHFAVRE retrait en temporaire print ''; - + */ + // Terms of payment print '"; // Project + /* PHFAVRE retrait en temporaire if (! empty($conf->projet->enabled) && $socid > 0) { $formproject = new FormProjets($db); @@ -1408,7 +1412,8 @@ if ($action == 'create') print ''; print ''; } - + */ + // Other attributes $parameters = array('colspan' => ' colspan="3"'); $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified From 733d2be39c1d45acfc7bbf3b7e3ffe81e05e7310 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Mon, 2 Feb 2015 11:13:11 +0100 Subject: [PATCH 056/429] readd index.html file --- htdocs/contrat/class/index.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 htdocs/contrat/class/index.html diff --git a/htdocs/contrat/class/index.html b/htdocs/contrat/class/index.html new file mode 100644 index 00000000000..e69de29bb2d From a3c29f2e9ca89be6a3b8dc01e549e376995a1dd9 Mon Sep 17 00:00:00 2001 From: phf Date: Mon, 2 Feb 2015 15:41:14 +0100 Subject: [PATCH 057/429] =?UTF-8?q?[CORE]=20Avancement=20du=20fonctionneme?= =?UTF-8?q?nt=20du=20module,=20correction=20bug=20et=20=C3=A9puration=20de?= =?UTF-8?q?=20l'affichage=20(#new=5Fask=5Fprice).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/comm/askpricesupplier.php | 73 ++++++++++----- .../class/askpricesupplier.class.php | 92 +++++++++++++++---- .../mod_askpricesupplier_marbre.php | 6 +- .../mod_askpricesupplier_saphir.php | 6 +- .../modules/modAskPriceSupplier.class.php | 14 --- htdocs/langs/fr_FR/askpricesupplier.lang | 4 +- 6 files changed, 135 insertions(+), 60 deletions(-) diff --git a/htdocs/comm/askpricesupplier.php b/htdocs/comm/askpricesupplier.php index 46533a84210..cf296ef9417 100644 --- a/htdocs/comm/askpricesupplier.php +++ b/htdocs/comm/askpricesupplier.php @@ -249,18 +249,12 @@ if (empty($reshook)) $datep = dol_mktime(12, 0, 0, GETPOST('remonth'), GETPOST('reday'), GETPOST('reyear')); $date_delivery = dol_mktime(12, 0, 0, GETPOST('liv_month'), GETPOST('liv_day'), GETPOST('liv_year')); - $duration = GETPOST('duree_validite'); if (empty($datep)) { setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), 'errors'); $action = 'create'; $error ++; } - if (empty($duration)) { - setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("ValidityDuration")), 'errors'); - $action = 'create'; - $error ++; - } if ($socid < 1) { setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Customer")), 'errors'); @@ -969,7 +963,7 @@ if (empty($reshook)) } } - else if ($action == 'updateligne' && $user->rights->propal->creer && GETPOST('cancel') == $langs->trans('Cancel')) { + else if ($action == 'updateligne' && $user->rights->askpricesupplier->creer && GETPOST('cancel') == $langs->trans('Cancel')) { header('Location: ' . $_SERVER['PHP_SELF'] . '?id=' . $object->id); // Pour reaffichage de la fiche en cours d'edition exit(); } @@ -1664,6 +1658,7 @@ if ($action == 'create') print ''; // Ref customer + /* PHFAVRE retrait en temporaire print ''; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"s.rowid","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Person"),$_SERVER["PHP_SELF"],"u.rowid","",$param,"",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("CurrentSalary"),$_SERVER["PHP_SELF"],"u.salary","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"s.label","",$param,'align="left"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DatePayment"),$_SERVER["PHP_SELF"],"s.datev","",$param,'align="left"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Type"),$_SERVER["PHP_SELF"],"type","",$param,'align="left"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("PaymentMode"),$_SERVER["PHP_SELF"],"type","",$param,'align="left"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("PayedByThisPayment"),$_SERVER["PHP_SELF"],"s.amount","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre(""); print "\n"; @@ -136,6 +138,9 @@ if ($result) print ''; + // People + print ''; + // Current salary print ''; // Label print ''; @@ -161,8 +166,13 @@ if ($result) $userstatic->firstname=$obj->firstname; $salstatic->id=$obj->rowid; $salstatic->ref=$obj->rowid; - print "\n"; + // Ref + print "\n"; + // User name print "\n"; + // Current salary + print "\n"; + // Label payment print "\n"; print '\n"; // Type @@ -176,7 +186,7 @@ if ($result) $i++; } - print ''; + print ''; print '"; print ""; diff --git a/htdocs/langs/en_US/salaries.lang b/htdocs/langs/en_US/salaries.lang index 0087cbe83e6..0f5f636a3f3 100644 --- a/htdocs/langs/en_US/salaries.lang +++ b/htdocs/langs/en_US/salaries.lang @@ -10,3 +10,4 @@ SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment THM=Average hourly price TJM=Average daily price +CurrentSalary=Current salary \ No newline at end of file From a065b8a9b4f732015b9a188b93361e160e08dc36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Votruba?= Date: Tue, 10 Mar 2015 09:57:40 +0100 Subject: [PATCH 212/429] travis: PHP 7.0 nightly added --- .travis.yml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 031226251c1..e3348e97b67 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,10 +18,15 @@ services: language: php php: # - "5.2" is not supported because pyrus to install PHP_Codesniffer is not available - - "5.3" - - "5.4" - - "5.5" - - "5.6" + - 5.3 + - 5.4 + - 5.5 + - 5.6 + - 7.0 + +matrix: + allow_failures: + - php: 7.0 env: - DB=mysql From dc300922906d939c2a5aea5d02618c61d93fb28c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Mar 2015 10:11:51 +0100 Subject: [PATCH 213/429] Add column to store salary ref when doing payment. --- htdocs/compta/charges/index.php | 15 ++++++++------- htdocs/compta/salaries/card.php | 9 +++++++-- .../compta/salaries/class/paymentsalary.class.php | 4 +++- htdocs/compta/salaries/index.php | 9 +++++++-- htdocs/install/mysql/migration/3.7.0-3.8.0.sql | 2 ++ .../install/mysql/tables/llx_payment_salary.sql | 1 + 6 files changed, 28 insertions(+), 12 deletions(-) diff --git a/htdocs/compta/charges/index.php b/htdocs/compta/charges/index.php index ca03e11bcba..eb10fce7768 100644 --- a/htdocs/compta/charges/index.php +++ b/htdocs/compta/charges/index.php @@ -93,9 +93,10 @@ if ($conf->salaries->enabled) print_fiche_titre($langs->trans("SalariesPayments").($year?' ('.$langs->trans("Year").' '.$year.')':''), '', ''); - $sql = "SELECT s.rowid, s.amount, s.label, s.datev as dm"; - $sql.= " FROM ".MAIN_DB_PREFIX."payment_salary as s"; - $sql.= " WHERE s.entity = ".$conf->entity; + $sql = "SELECT s.rowid, s.amount, s.label, s.datev as dm, s.salary, u.salary as current_salary"; + $sql.= " FROM ".MAIN_DB_PREFIX."payment_salary as s, ".MAIN_DB_PREFIX."user as u"; + $sql.= " WHERE s.entity IN (".getEntity('user',1).")"; + $sql.= " AND u.rowid = s.fk_user"; if ($year > 0) { // Si period renseignee on l'utilise comme critere de date, sinon on prend date echeance, @@ -132,11 +133,11 @@ if ($conf->salaries->enabled) print "\n"; - print '"; + print '"; // Ref payment - $sal_static->id=$obj->rowid; - $sal_static->ref=$obj->rowid; + $sal_static->id=$obj->rowid; + $sal_static->ref=$obj->rowid; print '\n"; print '\n"; @@ -146,7 +147,7 @@ if ($conf->salaries->enabled) $i++; } print ''; - print '"; + print '"; print ''; print ''; print '"; diff --git a/htdocs/compta/salaries/card.php b/htdocs/compta/salaries/card.php index 49c3192fa7f..3bd93659b5e 100644 --- a/htdocs/compta/salaries/card.php +++ b/htdocs/compta/salaries/card.php @@ -67,8 +67,8 @@ if ($action == 'add' && $_POST["cancel"] <> $langs->trans("Cancel")) $datesp=dol_mktime(12,0,0, $_POST["datespmonth"], $_POST["datespday"], $_POST["datespyear"]); $dateep=dol_mktime(12,0,0, $_POST["dateepmonth"], $_POST["dateepday"], $_POST["dateepyear"]); - $sal->accountid=GETPOST("accountid"); - $sal->fk_user=GETPOST("fk_user"); + $sal->accountid=GETPOST("accountid","int"); + $sal->fk_user=GETPOST("fk_user","int"); $sal->datev=$datev; $sal->datep=$datep; $sal->amount=price2num(GETPOST("amount")); @@ -80,6 +80,11 @@ if ($action == 'add' && $_POST["cancel"] <> $langs->trans("Cancel")) $sal->num_payment=GETPOST("num_payment"); $sal->fk_user_creat=$user->id; + // Set user current salary as ref salaray for the payment + $fuser=new User($db); + $fuser->fetch(GETPOST("fk_user","int")); + $sal->salary=$fuser->salary; + if (empty($datep) || empty($datev) || empty($datesp) || empty($dateep)) { setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Date")),'errors'); diff --git a/htdocs/compta/salaries/class/paymentsalary.class.php b/htdocs/compta/salaries/class/paymentsalary.class.php index 83a1c937545..f566123809c 100644 --- a/htdocs/compta/salaries/class/paymentsalary.class.php +++ b/htdocs/compta/salaries/class/paymentsalary.class.php @@ -324,6 +324,7 @@ class PaymentSalary extends CommonObject $sql.= ", datep"; $sql.= ", datev"; $sql.= ", amount"; + $sql.= ", salary"; $sql.= ", fk_typepayment"; $sql.= ", num_payment"; if ($this->note) $sql.= ", note"; @@ -338,7 +339,8 @@ class PaymentSalary extends CommonObject $sql.= "'".$this->fk_user."'"; $sql.= ", '".$this->db->idate($this->datep)."'"; $sql.= ", '".$this->db->idate($this->datev)."'"; - $sql.= ", '".$this->amount."'"; + $sql.= ", ".$this->amount; + $sql.= ", ".($this->salary > 0 ? $this->salary : "null"); $sql.= ", '".$this->type_payment."'"; $sql.= ", '".$this->num_payment."'"; if ($this->note) $sql.= ", '".$this->db->escape($this->note)."'"; diff --git a/htdocs/compta/salaries/index.php b/htdocs/compta/salaries/index.php index 79d139255c2..484010c9f03 100644 --- a/htdocs/compta/salaries/index.php +++ b/htdocs/compta/salaries/index.php @@ -83,7 +83,8 @@ $form = new Form($db); $salstatic = new PaymentSalary($db); $userstatic = new User($db); -$sql = "SELECT u.rowid as uid, u.lastname, u.firstname, u.salary, s.rowid, s.fk_user, s.amount, s.label, s.datev as dm, s.fk_typepayment as type, s.num_payment,"; +$sql = "SELECT u.rowid as uid, u.lastname, u.firstname, u.login, u.email, u.admin, u.salary as current_salary, u.fk_societe as fk_soc,"; +$sql.= " s.rowid, s.fk_user, s.amount, s.salary, s.label, s.datev as dm, s.fk_typepayment as type, s.num_payment,"; $sql.= " pst.code as payment_code"; $sql.= " FROM ".MAIN_DB_PREFIX."payment_salary as s"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as pst ON s.fk_typepayment = pst.id,"; @@ -125,7 +126,7 @@ if ($result) print ''; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"s.rowid","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Person"),$_SERVER["PHP_SELF"],"u.rowid","",$param,"",$sortfield,$sortorder); - print_liste_field_titre($langs->trans("CurrentSalary"),$_SERVER["PHP_SELF"],"u.salary","",$param,"",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("ExpectedToPay"),$_SERVER["PHP_SELF"],"s.salary","",$param,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"s.label","",$param,'align="left"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DatePayment"),$_SERVER["PHP_SELF"],"s.datev","",$param,'align="left"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("PaymentMode"),$_SERVER["PHP_SELF"],"type","",$param,'align="left"',$sortfield,$sortorder); @@ -164,6 +165,10 @@ if ($result) $userstatic->id=$obj->uid; $userstatic->lastname=$obj->lastname; $userstatic->firstname=$obj->firstname; + $userstatic->admin=$obj->admin; + $userstatic->login=$obj->login; + $userstatic->email=$obj->email; + $userstatic->societe_id=$obj->fk_soc; $salstatic->id=$obj->rowid; $salstatic->ref=$obj->rowid; // Ref diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index 2a36ef78737..2de1556ed3e 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -19,6 +19,8 @@ -- -- VMYSQL4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup); +ALTER TABLE llx_payment_salary ADD COLUMN salary real after datev; + UPDATE llx_projet_task_time SET task_datehour = task_date where task_datehour IS NULL; ALTER TABLE llx_projet_task_time ADD COLUMN task_date_withhour integer DEFAULT 0 after task_datehour; diff --git a/htdocs/install/mysql/tables/llx_payment_salary.sql b/htdocs/install/mysql/tables/llx_payment_salary.sql index b82ff66ecc1..2498c771ba6 100644 --- a/htdocs/install/mysql/tables/llx_payment_salary.sql +++ b/htdocs/install/mysql/tables/llx_payment_salary.sql @@ -23,6 +23,7 @@ create table llx_payment_salary fk_user integer NOT NULL, datep date, -- date de paiement datev date, -- date de valeur + salary real, -- salary of user when payment was done amount real NOT NULL DEFAULT 0, fk_typepayment integer NOT NULL, num_payment varchar(50), From 35dfaf4dd14e0575bef702073e8b84bcbbfbe5ce Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Mar 2015 10:14:24 +0100 Subject: [PATCH 214/429] Natural search on numeric works also with several space after operator --- htdocs/core/lib/functions.lib.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 509f237b0d6..d7fc398e082 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4949,7 +4949,7 @@ function dol_getmypid() * Generate natural SQL search string * * @param string|string[] $fields String or array of strings, filled with the name of fields in the SQL query - * @param string $value The value to look for. + * @param string $value The value to look for. * If param $numeric is 0, can contains several keywords separated with a space, like "keyword1 keyword2" = We want record field like keyword1 and field like keyword2 * If param $numeric is 1, can contains an operator <>= like "<10" or ">=100.5 < 1000" * @param string $number 0=value is list of keywords, 1=value is a numeric test @@ -4958,10 +4958,10 @@ function dol_getmypid() function natural_search($fields, $value, $numeric=0) { global $db,$langs; - + if ($numeric) { - $value=preg_replace('/([<>=]+)\s([0-9'.preg_quote($langs->trans("DecimalSeparator"),'/').'\-])/','\1\2',$value); // Clean string '< 10' into '<10' so we can the explode on space to get all tests to do + $value=preg_replace('/([<>=]+)\s+([0-9'.preg_quote($langs->trans("DecimalSeparator"),'/').'\-])/','\1\2',$value); // Clean string '< 10' into '<10' so we can the explode on space to get all tests to do } $crits = explode(' ', $value); $res = ''; @@ -4970,19 +4970,19 @@ function natural_search($fields, $value, $numeric=0) $nboffields = count($fields); $end2 = count($crits); $j = 0; - foreach ($crits as $crit) + foreach ($crits as $crit) { $i = 0; $i2 = 0; $newres = ''; - foreach ($fields as $field) + foreach ($fields as $field) { - if ($numeric) + if ($numeric) { $operator='='; $newcrit = preg_replace('/([<>=]+)/','',trim($crit)); - + preg_match('/([<>=]+)/',trim($crit), $reg); - if ($reg[1]) + if ($reg[1]) { $operator = $reg[1]; } @@ -4992,7 +4992,7 @@ function natural_search($fields, $value, $numeric=0) $i2++; // a criteria was added to string } } - else + else { $newres .= ($i2 > 0 ? ' OR ' : '') . $field . " LIKE '%" . $db->escape(trim($crit)) . "%'"; $i2++; // a criteria was added to string From d847f9581e2c1057bd09275b221797b3d4cb8f44 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Mar 2015 11:31:23 +0100 Subject: [PATCH 215/429] Fix generation of RUM number. Show it on card to help debug. --- .../class/bonprelevement.class.php | 25 +++++++++++++++---- .../class/companybankaccount.class.php | 8 +++++- htdocs/societe/rib.php | 16 ++++++++++-- 3 files changed, 41 insertions(+), 8 deletions(-) diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index 2c07baba5a0..eb0344d7010 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -1300,7 +1300,7 @@ class BonPrelevement extends CommonObject while ($i < $num) { $obj = $this->db->fetch_object($resql); - $fileDebiteurSection .= $this->EnregDestinataireSEPA($obj->code, $obj->nom, $obj->address, $obj->zip, $obj->town, $obj->country_code, $obj->cb, $obj->cg, $obj->cc, $obj->somme, $ListOfFactures, $obj->idfac, $obj->iban, $obj->bic, $obj->datec, $obj->drum); + $fileDebiteurSection .= $this->EnregDestinataireSEPA($obj->code, $obj->nom, $obj->address, $obj->zip, $obj->town, $obj->country_code, $obj->cb, $obj->cg, $obj->cc, $obj->somme, $ListOfFactures, $obj->idfac, $obj->iban, $obj->bic, $this->db->jdate($obj->datec), $obj->drum); $this->total = $this->total + $obj->somme; $i++; } @@ -1502,6 +1502,20 @@ class BonPrelevement extends CommonObject } + /** + * Build RUM number for a customer bank account + * + * @param string $row_code_client Customer code (soc.code_client) + * @param int $row_datec Creation date of bank account (rib.datec) + * @param string $row_drum Id of customer bank account (rib.rowid) + * @return string RUM number + */ + static function buildRumNumber($row_code_client, $row_datec, $row_drum) + { + $pre = ($row_datec > 1359673200) ? 'Rum' : '++R'; + return $pre.$row_code_client.'-'.$row_drum.'-'.date('U', $row_datec); + } + /** * Write recipient of request (customer) * @@ -1520,7 +1534,7 @@ class BonPrelevement extends CommonObject * @param string $row_iban rib.iban_prefix AS iban, * @param string $row_bic rib.bic AS bic, * @param string $row_datec rib.datec, - * @param string $row_drum rib.rowid AS drum + * @param string $row_drum rib.rowid used to generate rum * @return string Return string with SEPA part DrctDbtTxInf */ function EnregDestinataireSEPA($row_code_client, $row_nom, $row_address, $row_zip, $row_town, $row_country_code, $row_cb, $row_cg, $row_cc, $row_somme, $row_facnumber, $row_idfac, $row_iban, $row_bic, $row_datec, $row_drum) @@ -1530,10 +1544,11 @@ class BonPrelevement extends CommonObject // Define value for RUM // Example: RUMCustomerCode-CustomerBankAccountId-01424448606 (note: Date is date of creation of CustomerBankAccountId) - $Date_Rum = strtotime($row_datec); + $Rum = $this->buildRumNumber($row_code_client, $row_datec, $row_drum); + + // Define date of RUM signature $DtOfSgntr = dol_print_date($row_datec, '%Y-%m-%d'); - $pre = ($date_Rum > 1359673200) ? 'Rum' : '++R'; - $Rum = $pre.$row_code_client.$row_drum.'-0'.date('U', $Date_Rum); + $XML_DEBITOR =''; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; diff --git a/htdocs/societe/class/companybankaccount.class.php b/htdocs/societe/class/companybankaccount.class.php index 37e646d6b88..255ab6a05a6 100644 --- a/htdocs/societe/class/companybankaccount.class.php +++ b/htdocs/societe/class/companybankaccount.class.php @@ -49,6 +49,10 @@ class CompanyBankAccount extends Account var $owner_address; var $default_rib; + var $datec; + var $datem; + + /** * Constructor * @@ -174,7 +178,7 @@ class CompanyBankAccount extends Account { if (empty($id) && empty($socid)) return -1; - $sql = "SELECT rowid, fk_soc, bank, number, code_banque, code_guichet, cle_rib, bic, iban_prefix as iban, domiciliation, proprio, owner_address, default_rib, label"; + $sql = "SELECT rowid, fk_soc, bank, number, code_banque, code_guichet, cle_rib, bic, iban_prefix as iban, domiciliation, proprio, owner_address, default_rib, label, datec, tms as datem"; $sql.= " FROM ".MAIN_DB_PREFIX."societe_rib"; if ($id) $sql.= " WHERE rowid = ".$id; if ($socid) $sql.= " WHERE fk_soc = ".$socid." AND default_rib = 1"; @@ -200,6 +204,8 @@ class CompanyBankAccount extends Account $this->owner_address = $obj->owner_address; $this->label = $obj->label; $this->default_rib = $obj->default_rib; + $this->datec = $this->db->jdate($obj->datec); + $this->datem = $this->db->jdate($obj->datem); } $this->db->free($resql); diff --git a/htdocs/societe/rib.php b/htdocs/societe/rib.php index ab14d757f6f..5af9d2a7df2 100644 --- a/htdocs/societe/rib.php +++ b/htdocs/societe/rib.php @@ -29,6 +29,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php'; require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/bonprelevement.class.php'; $langs->load("companies"); $langs->load("commercial"); @@ -191,6 +192,7 @@ if ($action == 'confirm_delete' && $_GET['confirm'] == 'yes') */ $form = new Form($db); +$prelevement = new BonPrelevement($db); llxHeader(); @@ -320,11 +322,11 @@ if ($socid && $action != 'edit' && $action != "create") print "
"; - + /* * List of bank accounts */ - + print_titre($langs->trans("AllRIB")); $rib_list = $soc->get_all_rib(); @@ -339,6 +341,10 @@ if ($socid && $action != 'edit' && $action != "create") print_liste_field_titre($langs->trans("RIB")); print_liste_field_titre($langs->trans("IBAN")); print_liste_field_titre($langs->trans("BIC")); + if (! empty($conf->prelevement->enabled)) + { + print '
'; + } print_liste_field_titre($langs->trans("DefaultRIB"), '', '', '', '', 'align="center"'); print ''; print ''; @@ -356,6 +362,12 @@ if ($socid && $action != 'edit' && $action != "create") print ''; // BIC print ''; + + if (! empty($conf->prelevement->enabled)) + { + print ''; + } + // Default print '
'; - if ($conf->global->PROPALE_ADDON == "$file") + if ($conf->global->ASKPRICESUPPLIER_ADDON == "$file") { print img_picto($langs->trans("Activated"),'switch_on'); } From 770ce6b4ccbb22da54398ac8a524b07fdddd8c1d Mon Sep 17 00:00:00 2001 From: phf Date: Thu, 29 Jan 2015 10:43:46 +0100 Subject: [PATCH 038/429] =?UTF-8?q?[CORE]=20renomage=20d=20evariables=20po?= =?UTF-8?q?ur=20=C3=AAtre=20en=20rapport=20avec=20le=20module=20(#new=5Fas?= =?UTF-8?q?k=5Fprice).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/comm/askpricesupplier.php | 4 ++-- htdocs/comm/askpricesupplier/class/askpricesupplier.class.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/comm/askpricesupplier.php b/htdocs/comm/askpricesupplier.php index f1ea1cde9f0..da35edf54a9 100644 --- a/htdocs/comm/askpricesupplier.php +++ b/htdocs/comm/askpricesupplier.php @@ -2028,7 +2028,7 @@ if ($action == 'create') $ret = $object->printObjectLines($action, $mysoc, $soc, $lineid, 1); // Form to add new line - if ($object->statut == 0 && $user->rights->propal->creer) + if ($object->statut == 0 && $user->rights->askpricesupplier->creer) { if ($action != 'editline') { @@ -2117,7 +2117,7 @@ if ($action == 'create') // Send if ($object->statut == 1 || $object->statut == 2) { - if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->askpricesupplier->propal_advance->send) { + if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->askpricesupplier->send) { print ''; } else print ''; diff --git a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php index 2deb897a192..49af98252e4 100644 --- a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php +++ b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php @@ -1335,7 +1335,7 @@ class AskPriceSupplier extends CommonObject $now=dol_now(); if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->askpricesupplier->creer)) - || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->askpricesupplier->propal_advance->validate))) + || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->askpricesupplier->validate))) { $this->db->begin(); From c9e74fbceaf211953b43358ad969d4ee4ba3b6a6 Mon Sep 17 00:00:00 2001 From: phf Date: Thu, 29 Jan 2015 10:44:03 +0100 Subject: [PATCH 039/429] [CORE] ajout d'une trad (#new_ask_price). --- htdocs/langs/fr_FR/askpricesupplier.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/fr_FR/askpricesupplier.lang b/htdocs/langs/fr_FR/askpricesupplier.lang index 7234366b0e6..e05a66dad10 100644 --- a/htdocs/langs/fr_FR/askpricesupplier.lang +++ b/htdocs/langs/fr_FR/askpricesupplier.lang @@ -19,7 +19,6 @@ NewProposal=Nouvelle proposition commerciale NewPropal=Nouvelle proposition Prospect=Prospect ProspectList=Liste des prospects -ConfirmDeleteProp=Êtes-vous sûr de vouloir effacer cette proposition commerciale ? LastPropals=Les %s dernières propales LastClosedProposals=Les %s dernières propositions commerciales fermées @@ -78,6 +77,7 @@ ConfirmReOpenAsk=Êtes-vous sûr de vouloir réouvrir la demande de prix %s Date: Thu, 29 Jan 2015 10:44:23 +0100 Subject: [PATCH 040/429] [CORE] maj mineur (#new_ask_price). --- htdocs/core/modules/modAskPriceSupplier.class.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/modAskPriceSupplier.class.php b/htdocs/core/modules/modAskPriceSupplier.class.php index 53a1552445d..66861061981 100644 --- a/htdocs/core/modules/modAskPriceSupplier.class.php +++ b/htdocs/core/modules/modAskPriceSupplier.class.php @@ -48,13 +48,13 @@ class modAskPriceSupplier extends DolibarrModules $this->db = $db; $this->numero = 999999; - $this->family = "crm"; + $this->family = "products"; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); $this->description = "askpricesupplierDESC"; // Possible values for version are: 'development', 'experimental', 'dolibarr' or version - $this->version = '0.1'; + $this->version = 'dolibarr'; $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); $this->special = 0; @@ -140,6 +140,12 @@ class modAskPriceSupplier extends DolibarrModules $this->rights[$r][1] = 'Supprimer les demandes fournisseurs'; // libelle de la permission $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut $this->rights[$r][4] = 'supprimer'; + + $r++; + $this->rights[$r][0] = $this->numero + $r; // id de la permission + $this->rights[$r][1] = 'Cloturer les demandes de prix fournisseurs'; // libelle de la permission + $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut + $this->rights[$r][4] = 'cloturer'; // Exports //-------- From ffb533a4e462724788dc5b61a152321b2f5ce6b3 Mon Sep 17 00:00:00 2001 From: phf Date: Thu, 29 Jan 2015 12:11:14 +0100 Subject: [PATCH 041/429] =?UTF-8?q?[CORE]=20gestion=20du=20prix=20lors=20d?= =?UTF-8?q?e=20l'ajout=20d'un=20produit=20d=C3=A9j=C3=A0=20existant=20(#ne?= =?UTF-8?q?w=5Fask=5Fprice).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/comm/askpricesupplier.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/askpricesupplier.php b/htdocs/comm/askpricesupplier.php index da35edf54a9..fdace17d19b 100644 --- a/htdocs/comm/askpricesupplier.php +++ b/htdocs/comm/askpricesupplier.php @@ -696,8 +696,13 @@ if (empty($reshook)) // If prices fields are update $tva_tx = get_default_tva($mysoc, $object->thirdparty, $prod->id); $tva_npr = get_default_npr($mysoc, $object->thirdparty, $prod->id); - $pu_ht = $prod->price; - $pu_ttc = $prod->price_ttc; + + //On garde le prix indiqué dans l'input pour la demande de prix fournisseur + //$pu_ht = $prod->price; + $pu_ht = price2num($price_ht, 'MU'); + //$pu_ttc = $prod->price_ttc; + $pu_ttc = price2num($pu_ht * (1 + ($tva_tx / 100)), 'MU'); + $price_min = $prod->price_min; $price_base_type = $prod->price_base_type; From 2f8ceea587a91751c7548b9ee155c8428350252c Mon Sep 17 00:00:00 2001 From: phf Date: Thu, 29 Jan 2015 12:12:22 +0100 Subject: [PATCH 042/429] [CORE] renomage de variables pour le module + modification de traductions (#new_ask_price). --- htdocs/comm/askpricesupplier/apercu.php | 2 +- htdocs/core/lib/askpricesupplier.lib.php | 4 ++-- .../doc/doc_generic_askpricesupplier_odt.modules.php | 4 ++-- htdocs/langs/fr_FR/askpricesupplier.lang | 5 ++--- htdocs/langs/fr_FR/main.lang | 1 + 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/comm/askpricesupplier/apercu.php b/htdocs/comm/askpricesupplier/apercu.php index a434bca9354..2486091f184 100644 --- a/htdocs/comm/askpricesupplier/apercu.php +++ b/htdocs/comm/askpricesupplier/apercu.php @@ -133,7 +133,7 @@ if ($id > 0 || ! empty($ref)) print ''; print ''; - print ''; + print ''; print ''; diff --git a/htdocs/core/lib/askpricesupplier.lib.php b/htdocs/core/lib/askpricesupplier.lib.php index 1c3835e78be..0cdf15a09a0 100644 --- a/htdocs/core/lib/askpricesupplier.lib.php +++ b/htdocs/core/lib/askpricesupplier.lib.php @@ -39,7 +39,7 @@ function askpricesupplier_prepare_head($object) $head = array(); $head[$h][0] = DOL_URL_ROOT.'/comm/askpricesupplier.php?id='.$object->id; - $head[$h][1] = $langs->trans('ProposalCard'); + $head[$h][1] = $langs->trans('AskPriceSupplierCard'); $head[$h][2] = 'comm'; $h++; @@ -89,7 +89,7 @@ function askpricesupplier_prepare_head($object) } require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - $upload_dir = $conf->propal->dir_output . "/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->askpricesupplier->dir_output . "/" . dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$')); $head[$h][0] = DOL_URL_ROOT.'/comm/askpricesupplier/document.php?id='.$object->id; $head[$h][1] = $langs->trans('Documents'); diff --git a/htdocs/core/modules/askpricesupplier/doc/doc_generic_askpricesupplier_odt.modules.php b/htdocs/core/modules/askpricesupplier/doc/doc_generic_askpricesupplier_odt.modules.php index 80c1a0bd347..ddc995cc69a 100644 --- a/htdocs/core/modules/askpricesupplier/doc/doc_generic_askpricesupplier_odt.modules.php +++ b/htdocs/core/modules/askpricesupplier/doc/doc_generic_askpricesupplier_odt.modules.php @@ -230,7 +230,7 @@ class doc_generic_askpricesupplier_odt extends ModelePDFAskPriceSupplier $outputlangs->load("companies"); $outputlangs->load("bills"); - if ($conf->propal->dir_output) + if ($conf->askpricesupplier->dir_output) { // If $object is id instead of object if (! is_object($object)) @@ -245,7 +245,7 @@ class doc_generic_askpricesupplier_odt extends ModelePDFAskPriceSupplier } } - $dir = $conf->propal->dir_output; + $dir = $conf->askpricesupplier->dir_output; $objectref = dol_sanitizeFileName($object->ref); if (! preg_match('/specimen/i',$objectref)) $dir.= "/" . $objectref; $file = $dir . "/" . $objectref . ".odt"; diff --git a/htdocs/langs/fr_FR/askpricesupplier.lang b/htdocs/langs/fr_FR/askpricesupplier.lang index e05a66dad10..a945774f836 100644 --- a/htdocs/langs/fr_FR/askpricesupplier.lang +++ b/htdocs/langs/fr_FR/askpricesupplier.lang @@ -13,7 +13,6 @@ ProposalsDraft=Propositions commerciales brouillons ProposalDraft=Proposition commerciale brouillon ProposalsOpened=Propositions commerciales ouvertes Prop=Propositions commerciales -ProposalCard=Fiche proposition NewProp=Nouvelle proposition commerciale NewProposal=Nouvelle proposition commerciale NewPropal=Nouvelle proposition @@ -77,6 +76,7 @@ ConfirmReOpenAsk=Êtes-vous sûr de vouloir réouvrir la demande de prix %s Date: Thu, 29 Jan 2015 12:13:06 +0100 Subject: [PATCH 043/429] [CORE] ajouts des conditions pour le fonctionnement avec le module (#new_ask_price). --- htdocs/core/tpl/objectline_create.tpl.php | 17 +++++++++++------ htdocs/core/tpl/objectline_edit.tpl.php | 4 ++-- htdocs/core/tpl/objectline_view.tpl.php | 2 +- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 0c345aee5ac..136c751a87c 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -31,7 +31,7 @@ $usemargins=0; -if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal','commande'))) $usemargins=1; +if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal', 'askpricesupplier','commande'))) $usemargins=1; global $forceall, $senderissupplier, $inputalsopricewithtax; if (empty($dateSelector)) $dateSelector=0; @@ -43,7 +43,7 @@ if (empty($inputalsopricewithtax)) $inputalsopricewithtax=0; // Define colspan for button Add $colspan = 3; // Col total ht + col edit + col delete if (! empty($inputalsopricewithtax)) $colspan++; // We add 1 if col total ttc -if (in_array($object->element,array('propal','facture','invoice','commande','order'))) $colspan++; // With this, there is a column move button +if (in_array($object->element,array('propal', 'askpricesupplier','facture','invoice','commande','order'))) $colspan++; // With this, there is a column move button ?> @@ -211,7 +211,7 @@ else { @@ -270,6 +270,9 @@ else { elseif ($this->table_element_line=='propaldet') { $newline = new PropaleLigne($this->db); } + elseif ($this->table_element_line=='askpricesupplierdet') { + $newline = new AskPriceSupplierLigne($this->db); + } elseif ($this->table_element_line=='facturedet') { $newline = new FactureLigne($this->db); } @@ -287,7 +290,7 @@ if (! empty($conf->service->enabled) && $dateSelector && GETPOST('type') != '0') else $colspan = 9; if($this->situation_cycle_ref) $colspan++; if (! empty($inputalsopricewithtax)) $colspan++; // We add 1 if col total ttc - if (in_array($object->element,array('propal','facture','invoice','commande','order'))) $colspan++; // With this, there is a column move button + if (in_array($object->element,array('propal', 'askpricesupplier','facture','invoice','commande','order'))) $colspan++; // With this, there is a column move button if (! empty($usemargins)) { @@ -562,12 +565,14 @@ function setforpredef() { jQuery("#select_type").val(-1); jQuery("#prod_entry_mode_free").attr('checked',false); jQuery("#prod_entry_mode_predef").attr('checked',true); - jQuery("#price_ht").hide(); + element != 'askpricesupplier') { ?> + jQuery("#price_ht").hide(); + jQuery("#title_up_ht").hide(); + jQuery("#price_ttc").hide(); // May no exists jQuery("#tva_tx").hide(); jQuery("#buying_price").show(); jQuery("#title_vat").hide(); - jQuery("#title_up_ht").hide(); jQuery("#title_up_ttc").hide(); jQuery("#np_marginRate").hide(); // May no exists jQuery("#np_markRate").hide(); // May no exists diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php index fd2e3e0d469..fa4dcdc5a4a 100644 --- a/htdocs/core/tpl/objectline_edit.tpl.php +++ b/htdocs/core/tpl/objectline_edit.tpl.php @@ -31,7 +31,7 @@ $usemargins=0; -if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal','commande'))) $usemargins=1; +if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal', 'askpricesupplier','commande'))) $usemargins=1; global $forceall, $senderissupplier, $inputalsopricewithtax; if (empty($dateSelector)) $dateSelector=0; @@ -43,7 +43,7 @@ if (empty($inputalsopricewithtax)) $inputalsopricewithtax=0; // Define colspan for button Add $colspan = 3; // Col total ht + col edit + col delete if (! empty($inputalsopricewithtax)) $colspan++; // We add 1 if col total ttc -if (in_array($object->element,array('propal','facture','invoice','commande','order'))) $colspan++; // With this, there is a column move button +if (in_array($object->element,array('propal', 'askpricesupplier','facture','invoice','commande','order'))) $colspan++; // With this, there is a column move button ?> diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index 2e1cc0f3678..f484b013ba2 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -32,7 +32,7 @@ */ $usemargins=0; -if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal','commande'))) $usemargins=1; +if (! empty($conf->margin->enabled) && ! empty($object->element) && in_array($object->element,array('facture','propal', 'askpricesupplier','commande'))) $usemargins=1; global $forceall, $senderissupplier, $inputalsopricewithtax; if (empty($dateSelector)) $dateSelector=0; From aba3ec06120cbdebc770801004ecbc7ac63e4800 Mon Sep 17 00:00:00 2001 From: phf Date: Thu, 29 Jan 2015 12:26:50 +0100 Subject: [PATCH 044/429] [CORE] modification de l'affiche du PDF (#new_ask_price). --- .../doc/pdf_aurore.modules.php | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/htdocs/core/modules/askpricesupplier/doc/pdf_aurore.modules.php b/htdocs/core/modules/askpricesupplier/doc/pdf_aurore.modules.php index 347677ea1d9..ed486d4f076 100644 --- a/htdocs/core/modules/askpricesupplier/doc/pdf_aurore.modules.php +++ b/htdocs/core/modules/askpricesupplier/doc/pdf_aurore.modules.php @@ -102,8 +102,8 @@ class pdf_aurore extends ModelePDFAskPriceSupplier // Define position of columns $this->posxdesc=$this->marge_gauche+1; - $this->posxtva=112; - $this->posxup=126; + $this->posxtva=102; + $this->posxup=116; $this->posxqty=145; $this->posxdiscount=162; $this->postotalht=174; @@ -425,7 +425,7 @@ class pdf_aurore extends ModelePDFAskPriceSupplier { $vat_rate = pdf_getlinevatrate($object, $i, $outputlangs, $hidedetails); $pdf->SetXY($this->posxtva, $curY); - $pdf->MultiCell($this->posxup-$this->posxtva-0.8, 3, $vat_rate, 0, 'R'); + $pdf->MultiCell($this->posxup-$this->posxtva-3, 3, $vat_rate, 0, 'R'); } // Unit price before discount @@ -1124,19 +1124,20 @@ class pdf_aurore extends ModelePDFAskPriceSupplier if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) { - $pdf->line($this->posxtva-1, $tab_top, $this->posxtva-1, $tab_top + $tab_height); + //$pdf->line($this->posxtva-1, $tab_top, $this->posxtva-1, $tab_top + $tab_height); + $pdf->line($this->posxtva-2, $tab_top, $this->posxtva-2, $tab_top + $tab_height); if (empty($hidetop)) { - $pdf->SetXY($this->posxtva-3, $tab_top+1); + $pdf->SetXY($this->posxtva-5, $tab_top+1); $pdf->MultiCell($this->posxup-$this->posxtva+3,2, $outputlangs->transnoentities("VAT"),'','C'); } } - $pdf->line($this->posxup-1, $tab_top, $this->posxup-1, $tab_top + $tab_height); + $pdf->line($this->posxup-3, $tab_top, $this->posxup-3, $tab_top + $tab_height); if (empty($hidetop)) { $pdf->SetXY($this->posxup-1, $tab_top+1); - $pdf->MultiCell($this->posxqty-$this->posxup-1,2, $outputlangs->transnoentities("PriceUHT"),'','C'); + $pdf->MultiCell($this->posxqty-$this->posxup-1,2, $outputlangs->transnoentities("AskPriceSupplierUHT"),'','C'); } $pdf->line($this->posxqty-1, $tab_top, $this->posxqty-1, $tab_top + $tab_height); @@ -1181,7 +1182,7 @@ class pdf_aurore extends ModelePDFAskPriceSupplier $outputlangs->load("main"); $outputlangs->load("bills"); - $outputlangs->load("propal"); + $outputlangs->load("askpricesupplier"); $outputlangs->load("companies"); $default_font_size = pdf_getPDFFontSize($outputlangs); @@ -1228,7 +1229,7 @@ class pdf_aurore extends ModelePDFAskPriceSupplier $pdf->SetFont('','B',$default_font_size + 3); $pdf->SetXY($posx,$posy); $pdf->SetTextColor(0,0,60); - $title=$outputlangs->transnoentities("CommercialProposal"); + $title=$outputlangs->transnoentities("CommercialAsk"); $pdf->MultiCell(100, 4, $title, '', 'R'); $pdf->SetFont('','B',$default_font_size); From 3b0fd5ec98a3f96870131da0b1ab2417ce3f7cf0 Mon Sep 17 00:00:00 2001 From: phf Date: Thu, 29 Jan 2015 17:36:12 +0100 Subject: [PATCH 045/429] =?UTF-8?q?[CORE]=20modification=20l=C3=A9g=C3=A8r?= =?UTF-8?q?e,=20d=C3=A9but=20de=20redirection=20pour=20cr=C3=A9er=20une=20?= =?UTF-8?q?commande=20fournisseur=20si=20la=20demande=20est=20acc=C3=A9pt?= =?UTF-8?q?=C3=A9=20(#new=5Fask=5Fprice).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/comm/askpricesupplier.php | 2 +- htdocs/fourn/commande/card.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/comm/askpricesupplier.php b/htdocs/comm/askpricesupplier.php index fdace17d19b..cf40e62643e 100644 --- a/htdocs/comm/askpricesupplier.php +++ b/htdocs/comm/askpricesupplier.php @@ -2131,7 +2131,7 @@ if ($action == 'create') // Create an order if (! empty($conf->commande->enabled) && $object->statut == 2) { if ($user->rights->commande->creer) { - print ''; + print ''; } } diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 15fdbc70722..e6104d866aa 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -52,6 +52,7 @@ $langs->load('sendings'); $langs->load('companies'); $langs->load('bills'); $langs->load('propal'); +$langs->load('askpricesupplier'); $langs->load('deliveries'); $langs->load('products'); $langs->load('stocks'); From 9a289537be97cd69b89cd85d390045f1475fc0e9 Mon Sep 17 00:00:00 2001 From: phf Date: Fri, 30 Jan 2015 16:50:46 +0100 Subject: [PATCH 046/429] [CORE] maj du code + ajout d'une fonction pour le module (#new_ask_price). --- htdocs/comm/askpricesupplier.php | 29 ++++++++---------- .../class/askpricesupplier.class.php | 30 +++++++++++++++++++ htdocs/comm/askpricesupplier/index.php | 8 ++--- htdocs/comm/askpricesupplier/list.php | 4 +-- 4 files changed, 48 insertions(+), 23 deletions(-) diff --git a/htdocs/comm/askpricesupplier.php b/htdocs/comm/askpricesupplier.php index cf40e62643e..dc0abc68642 100644 --- a/htdocs/comm/askpricesupplier.php +++ b/htdocs/comm/askpricesupplier.php @@ -177,7 +177,7 @@ if (empty($reshook)) ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->askpricesupplier->creer)) || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->askpricesupplier->validate))) ) - { + { $result = $object->valid($user); if ($result >= 0) { @@ -543,19 +543,6 @@ if (empty($reshook)) } } - // Close proposal - else if ($action == 'setstatut' && $user->rights->askpricesupplier->cloturer && ! GETPOST('cancel')) { - if (! GETPOST('statut')) { - setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentities("CloseAs")), 'errors'); - $action = 'statut'; - } else { - // prevent browser refresh from closing proposal several times - if ($object->statut == 1) { - $object->cloture($user, GETPOST('statut'), GETPOST('note')); - } - } - } - // Classify billed else if ($action == 'classifybilled' && $user->rights->askpricesupplier->cloturer) { $object->cloture($user, 4, ''); @@ -1284,9 +1271,11 @@ if ($action == 'create') print ''; // Ref customer + /* PHFAVRE retrait en temporaire print ''; print ''; + */ // Third party print ''; @@ -1355,15 +1344,19 @@ if ($action == 'create') } // What trigger creation + /* PHFAVRE retrait en temporaire print ''; - + */ + // Delivery delay + /* PHFAVRE retrait en temporaire print ''; - + */ + // Shipping Method if (! empty($conf->expedition->enabled)) { print ''; print ''; - + */ + // Model print ''; print ''; diff --git a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php index 49af98252e4..8ac09582339 100644 --- a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php +++ b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php @@ -31,6 +31,7 @@ * \brief File of class to manage proposals */ +require_once DOL_DOCUMENT_ROOT .'/fourn/class/fournisseur.product.class.php'; require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php'; require_once DOL_DOCUMENT_ROOT .'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT .'/contact/class/contact.class.php'; @@ -1784,6 +1785,10 @@ class AskPriceSupplier extends CommonObject $this->db->rollback(); return -2; } + else + { + $this->updatePriceFournisseur(); + } } if ($statut == 4) { @@ -1828,6 +1833,31 @@ class AskPriceSupplier extends CommonObject } } + function updatePriceFournisseur() + { + $productsupplier = new ProductFournisseur($this->db); + + dol_syslog(get_class($this)."::updatePriceFournisseur", LOG_DEBUG); + foreach ($this->lines as $product) { + $idProductFourn = $productsupplier->find_min_price_product_fournisseur($product->fk_product, $product->qty); + $res = $productsupplier->fetch($idProductFourn); + + $price=price2num($product->subprice*$product->qty,'MU'); + //$qty=price2num($product->qty); + $unitPrice = price2num($product->subprice,'MU'); + + //$sql = 'UPDATE '.MAIN_DB_PREFIX.'product_fournisseur_price SET price ='.$price.', quantity ='.$qty.', unitprice ='.$unitPrice.' WHERE rowid = '.$productsupplier->product_fourn_price_id; + $sql = 'UPDATE '.MAIN_DB_PREFIX.'product_fournisseur_price SET price ='.$price.', unitprice ='.$unitPrice.' WHERE rowid = '.$productsupplier->product_fourn_price_id; + + $resql=$this->db->query($sql); + if (!resql) { + $this->error=$this->db->error(); + $this->db->rollback(); + return -1; + } + } + } + /** * Class invoiced the Propal * diff --git a/htdocs/comm/askpricesupplier/index.php b/htdocs/comm/askpricesupplier/index.php index ef9a37f145c..7684664c56b 100644 --- a/htdocs/comm/askpricesupplier/index.php +++ b/htdocs/comm/askpricesupplier/index.php @@ -152,7 +152,7 @@ else /* * Draft proposals */ -if (! empty($conf->propal->enabled)) +if (! empty($conf->askpricesupplier->enabled)) { $sql = "SELECT c.rowid, c.ref, s.nom as socname, s.rowid as socid, s.canvas, s.client"; $sql.= " FROM ".MAIN_DB_PREFIX."askpricesupplier as c"; @@ -258,7 +258,7 @@ if ($resql) print '
'.$langs->trans("Documents").'
'.$langs->trans("Proposal").' PDF
'.$langs->trans("CommRequest").' PDF'.$object->ref.'.pdf - + element == 'askpricesupplier' || GETPOST('prod_entry_mode') != 'predef') { ?> ">
' . $langs->trans('Ref') . '' . $langs->trans("Draft") . '
' . $langs->trans('RefCustomer') . ''; print '
' . $langs->trans('Source') . ''; $form->selectInputReason('', 'demand_reason_id', "SRC_PROP", 1); print '
' . $langs->trans('AvailabilityPeriod') . ''; $form->selectAvailabilityDelay('', 'availability_id', '', 1); print '
' . $langs->trans('SendingMethod') . ''; @@ -1372,6 +1365,7 @@ if ($action == 'create') } // Delivery date (or manufacturing) + /* PHFAVRE retrait en temporaire print '
' . $langs->trans("DeliveryDate") . ''; if ($conf->global->DATE_LIVRAISON_WEEK_DELAY != "") { @@ -1384,7 +1378,8 @@ if ($action == 'create') $form->select_date(-1, 'liv_', '', '', '', "addask", 1, 1); } print '
' . $langs->trans("DefaultModel") . ''; $filename=dol_sanitizeFileName($obj->ref); - $filedir=$conf->propal->dir_output . '/' . dol_sanitizeFileName($obj->ref); + $filedir=$conf->askpricesupplier->dir_output . '/' . dol_sanitizeFileName($obj->ref); $urlsource=$_SERVER['PHP_SELF'].'?id='.$obj->rowid; print $formfile->getDocumentsLink($askpricesupplierstatic->element, $filename, $filedir); print '
'; @@ -291,7 +291,7 @@ if (! empty($conf->askpricesupplier->enabled) && $user->rights->askpricesupplier $now=dol_now(); - $sql = "SELECT s.nom as socname, s.rowid as socid, s.canvas, s.client, p.rowid as propalid, p.total as total_ttc, p.total_ht, p.ref, p.fk_statut, p.datep as dp, p.fin_validite as dfv"; + $sql = "SELECT s.nom as socname, s.rowid as socid, s.canvas, s.client, p.rowid as askpricesupplierid, p.total as total_ttc, p.total_ht, p.ref, p.fk_statut, p.datep as dp, p.fin_validite as dfv"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql.= ", ".MAIN_DB_PREFIX."askpricesupplier as p"; if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; @@ -325,7 +325,7 @@ if (! empty($conf->askpricesupplier->enabled) && $user->rights->askpricesupplier // Ref print '
'; - $askpricesupplierstatic->id=$obj->propalid; + $askpricesupplierstatic->id=$obj->askpricesupplierid; $askpricesupplierstatic->ref=$obj->ref; print ''; diff --git a/htdocs/comm/askpricesupplier/list.php b/htdocs/comm/askpricesupplier/list.php index 47eb078d401..148156f4da2 100644 --- a/htdocs/comm/askpricesupplier/list.php +++ b/htdocs/comm/askpricesupplier/list.php @@ -357,7 +357,7 @@ if ($result) if (! empty($objp->note_private)) { print ' '; - print ''.img_picto($langs->trans("ViewPrivateNote"),'object_generic').''; + print ''.img_picto($langs->trans("ViewPrivateNote"),'object_generic').''; print ''; } print ''; @@ -365,7 +365,7 @@ if ($result) // Ref print '
'; $filename=dol_sanitizeFileName($objp->ref); - $filedir=$conf->propal->dir_output . '/' . dol_sanitizeFileName($objp->ref); + $filedir=$conf->askpricesupplier->dir_output . '/' . dol_sanitizeFileName($objp->ref); $urlsource=$_SERVER['PHP_SELF'].'?id='.$objp->askpricesupplierid; print $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir); print '
'; From d2cd78884e22c229e081213611543eb67bd68e9c Mon Sep 17 00:00:00 2001 From: phf Date: Fri, 30 Jan 2015 16:52:14 +0100 Subject: [PATCH 047/429] =?UTF-8?q?[CORE]=20ajout=20de=20code=20n=C3=A9ces?= =?UTF-8?q?saire=20pour=20le=20fonctionnement=20du=20module=20pour=20cr?= =?UTF-8?q?=C3=A9er=20une=20code=20fournisseur=20depuis=20une=20demande=20?= =?UTF-8?q?valid=C3=A9=20et=20acc=C3=A9pt=C3=A9=20(#new=5Fask=5Fprice).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/fourn/commande/card.php | 301 ++++++++++++++++++++++++++++++--- 1 file changed, 275 insertions(+), 26 deletions(-) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index e6104d866aa..5073d5433cb 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -65,6 +65,10 @@ $comclientid = GETPOST('comid','int'); $socid = GETPOST('socid','int'); $projectid = GETPOST('projectid','int'); +$lineid = GETPOST('lineid', 'int'); +$origin = GETPOST('origin', 'alpha'); +$originid = (GETPOST('originid', 'int') ? GETPOST('originid', 'int') : GETPOST('origin_id', 'int')); // For backward compatibility + //PDF $hidedetails = (GETPOST('hidedetails','int') ? GETPOST('hidedetails','int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 1 : 0)); $hidedesc = (GETPOST('hidedesc','int') ? GETPOST('hidedesc','int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 1 : 0)); @@ -846,29 +850,180 @@ else if ($action == 'add' && $user->rights->fournisseur->commande->creer) $object->note_private = GETPOST('note_private'); $object->note_public = GETPOST('note_public'); - // Fill array 'array_options' with data from add form - $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + // If creation from another object of another module (Example: origin=propal, originid=1) + if (! empty($origin) && ! empty($originid)) { + // Parse element/subelement (ex: project_task) + $element = $subelement = $origin; + if (preg_match('/^([^_]+)_([^_]+)/i', $origin, $regs)) { + $element = $regs [1]; + $subelement = $regs [2]; + } - $id = $object->create($user); - if ($id < 0) - { - $error++; + $element = 'comm/askpricesupplier'; + $subelement = 'askpricesupplier'; + + $object->origin = $origin; + $object->origin_id = $originid; + + // Possibility to add external linked objects with hooks + $object->linked_objects [$object->origin] = $object->origin_id; + $other_linked_objects = GETPOST('other_linked_objects', 'array'); + if (! empty($other_linked_objects)) { + $object->linked_objects = array_merge($object->linked_objects, $other_linked_objects); + } + + // Fill array 'array_options' with data from add form + $ret = $extrafields->setOptionalsFromPost($extralabels, $object); + if ($ret < 0) + $error ++; + + if (! $error) + { + $object_id = $object->create($user); + + if ($object_id > 0) + { + dol_include_once('/' . $element . '/class/' . $subelement . '.class.php'); + + $classname = ucfirst($subelement); + $srcobject = new $classname($db); + + dol_syslog("Try to find source object origin=" . $object->origin . " originid=" . $object->origin_id . " to add lines"); + $result = $srcobject->fetch($object->origin_id); + if ($result > 0) + { + $lines = $srcobject->lines; + if (empty($lines) && method_exists($srcobject, 'fetch_lines')) + { + $srcobject->fetch_lines(); + $lines = $srcobject->lines; + } + + $fk_parent_line = 0; + $num = count($lines); + + $productsupplier = new ProductFournisseur($db); + + for($i = 0; $i < $num; $i ++) + { + $label = (! empty($lines [$i]->label) ? $lines [$i]->label : ''); + $desc = (! empty($lines [$i]->desc) ? $lines [$i]->desc : $lines [$i]->libelle); + $product_type = (! empty($lines [$i]->product_type) ? $lines [$i]->product_type : 0); + + // Dates + // TODO mutualiser + $date_start = $lines [$i]->date_debut_prevue; + if ($lines [$i]->date_debut_reel) + $date_start = $lines [$i]->date_debut_reel; + if ($lines [$i]->date_start) + $date_start = $lines [$i]->date_start; + $date_end = $lines [$i]->date_fin_prevue; + if ($lines [$i]->date_fin_reel) + $date_end = $lines [$i]->date_fin_reel; + if ($lines [$i]->date_end) + $date_end = $lines [$i]->date_end; + + // Reset fk_parent_line for no child products and special product + if (($lines [$i]->product_type != 9 && empty($lines [$i]->fk_parent_line)) || $lines [$i]->product_type == 9) { + $fk_parent_line = 0; + } + + // Extrafields + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && method_exists($lines [$i], 'fetch_optionals')) // For avoid conflicts if + // trigger used + { + $lines [$i]->fetch_optionals($lines [$i]->rowid); + $array_option = $lines [$i]->array_options; + } +/* + $idprod=$productsupplier->get_buyprice($lines [$i]->fk_fournprice, $qty); + $res = $productsupplier->fetch($idprod); + */ + + $idprod = $productsupplier->find_min_price_product_fournisseur($lines [$i]->fk_product, $qty); + $res = $productsupplier->fetch($idProductFourn); + + $result = $object->addline( + $desc, + $lines [$i]->subprice, + $lines [$i]->qty, + $lines [$i]->tva_tx, + $lines [$i]->localtax1_tx, + $lines [$i]->localtax2_tx, + $productsupplier->id, + $lines [$i]->fk_product, + $productsupplier->ref_fourn, + $lines [$i]->remise_percent, + 'HT', + 0, + $lines [$i]->product_type, + '', + '', + $date_start, + $date_end + ); + + if ($result < 0) { + $error ++; + break; + } + + // Defined the new fk_parent_line + if ($result > 0 && $lines [$i]->product_type == 9) { + $fk_parent_line = $result; + } + } + + // Hooks + $parameters = array('objFrom' => $srcobject); + $reshook = $hookmanager->executeHooks('createFrom', $parameters, $object, $action); // Note that $action and $object may have been + // modified by hook + if ($reshook < 0) + $error ++; + } else { + setEventMessage($srcobject->error, 'errors'); + $error ++; + } + } else { + setEventMessage($object->error, 'errors'); + $error ++; + } + } else { + // Required extrafield left blank, error message already defined by setOptionalsFromPost() + $action = 'create'; + } + } else { + // Fill array 'array_options' with data from add form + $ret = $extrafields->setOptionalsFromPost($extralabels, $object); + if ($ret < 0) + $error ++; + + if (! $error) { + $object_id = $object->create($user); + + // If some invoice's lines already known + $NBLINES = 8; + for($i = 1; $i <= $NBLINES; $i ++) { + if ($_POST['idprod' . $i]) { + $xid = 'idprod' . $i; + $xqty = 'qty' . $i; + $xremise = 'remise_percent' . $i; + $object->add_product($_POST[$xid], $_POST[$xqty], $_POST[$xremise]); + } + } + } + } + + // End of object creation, we show it + if ($object_id > 0 && ! $error) { + $db->commit(); + header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $object_id); + exit(); + } else { + $db->rollback(); + $action = 'create'; + setEventMessage($object->error, 'errors'); } - - if ($error) - { - $langs->load("errors"); - $db->rollback(); - setEventMessage($langs->trans($object->error), 'errors'); - $action='create'; - $_GET['socid']=$_POST['socid']; - } - else - { - $db->commit(); - header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); - exit; - } } } @@ -1221,7 +1376,7 @@ $productstatic = new Product($db); /* *************************************************************************** */ $now=dol_now(); -if ($action=="create") +if ($action=='create') { print_fiche_titre($langs->trans('NewOrder')); @@ -1234,12 +1389,67 @@ if ($action=="create") $societe->fetch($socid); } - $cond_reglement_id = $societe->cond_reglement_supplier_id; - $mode_reglement_id = $societe->mode_reglement_supplier_id; + if (! empty($origin) && ! empty($originid)) { + // Parse element/subelement (ex: project_task) + $element = $subelement = $origin; + if (preg_match('/^([^_]+)_([^_]+)/i', $origin, $regs)) { + $element = $regs [1]; + $subelement = $regs [2]; + } + + $element = 'comm/askpricesupplier'; + $subelement = 'askpricesupplier'; + + dol_include_once('/' . $element . '/class/' . $subelement . '.class.php'); + $classname = ucfirst($subelement); + $objectsrc = new $classname($db); + $objectsrc->fetch($originid); + if (empty($objectsrc->lines) && method_exists($objectsrc, 'fetch_lines')) + $objectsrc->fetch_lines(); + $objectsrc->fetch_thirdparty(); + + // Replicate extrafields + $objectsrc->fetch_optionals($originid); + $object->array_options = $objectsrc->array_options; + + $projectid = (! empty($objectsrc->fk_project) ? $objectsrc->fk_project : ''); + $ref_client = (! empty($objectsrc->ref_client) ? $objectsrc->ref_client : ''); + + $soc = $objectsrc->client; + $cond_reglement_id = (!empty($objectsrc->cond_reglement_id)?$objectsrc->cond_reglement_id:(!empty($soc->cond_reglement_id)?$soc->cond_reglement_id:1)); + $mode_reglement_id = (!empty($objectsrc->mode_reglement_id)?$objectsrc->mode_reglement_id:(!empty($soc->mode_reglement_id)?$soc->mode_reglement_id:0)); + $fk_account = (! empty($objectsrc->fk_account)?$objectsrc->fk_account:(! empty($soc->fk_account)?$soc->fk_account:0)); + $availability_id = (!empty($objectsrc->availability_id)?$objectsrc->availability_id:(!empty($soc->availability_id)?$soc->availability_id:0)); + $shipping_method_id = (! empty($objectsrc->shipping_method_id)?$objectsrc->shipping_method_id:(! empty($soc->shipping_method_id)?$soc->shipping_method_id:0)); + $demand_reason_id = (!empty($objectsrc->demand_reason_id)?$objectsrc->demand_reason_id:(!empty($soc->demand_reason_id)?$soc->demand_reason_id:0)); + $remise_percent = (!empty($objectsrc->remise_percent)?$objectsrc->remise_percent:(!empty($soc->remise_percent)?$soc->remise_percent:0)); + $remise_absolue = (!empty($objectsrc->remise_absolue)?$objectsrc->remise_absolue:(!empty($soc->remise_absolue)?$soc->remise_absolue:0)); + $dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE)?-1:''; + + $datedelivery = (! empty($objectsrc->date_livraison) ? $objectsrc->date_livraison : ''); + + $note_private = (! empty($objectsrc->note_private) ? $objectsrc->note_private : (! empty($objectsrc->note_private) ? $objectsrc->note_private : '')); + $note_public = (! empty($objectsrc->note_public) ? $objectsrc->note_public : ''); + + // Object source contacts list + $srccontactslist = $objectsrc->liste_contact(- 1, 'external', 1); + + } + else + { + $cond_reglement_id = $societe->cond_reglement_supplier_id; + $mode_reglement_id = $societe->mode_reglement_supplier_id; + } + print ''; print ''; print ''; + print '' . "\n"; + print ''; + print ''; + print ''; + print ''; // Ref @@ -1287,7 +1497,7 @@ if ($action=="create") print ''; print ''; //print ''; @@ -1295,13 +1505,40 @@ if ($action=="create") print ''; print ''; //print ''; print ''; + if (! empty($origin) && ! empty($originid) && is_object($objectsrc)) { + print "\n"; + print "\n"; + print '' . "\n"; + print '' . "\n"; + print '' . "\n"; + print ''; + print ''; + + $newclassname = $classname; + if ($newclassname == 'AskPriceSupplier') + $newclassname = 'CommercialAskPriceSupplier'; + print ''; + print ''; + print '"; + if ($mysoc->localtax1_assuj == "1" || $objectsrc->total_localtax1 != 0) // Localtax1 RE + { + print '"; + } + + if ($mysoc->localtax2_assuj == "1" || $objectsrc->total_localtax2 != 0) // Localtax2 IRPF + { + print '"; + } + + print '"; + } // Other options $parameters=array(); @@ -1318,6 +1555,18 @@ if ($action=="create") print '
'; print "\n"; + + // Show origin lines + if (! empty($origin) && ! empty($originid) && is_object($objectsrc)) { + $title = $langs->trans('ProductsAndServices'); + print_titre($title); + + print '
'.$langs->trans('NotePublic').''; - $doleditor = new DolEditor('note_public', GETPOST('note_public'), '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70); + $doleditor = new DolEditor('note_public', isset($note_public) ? $note_public : GETPOST('note_public'), '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70); print $doleditor->Create(1); print '
'.$langs->trans('NotePrivate').''; - $doleditor = new DolEditor('note_private', GETPOST('note_private'), '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70); + $doleditor = new DolEditor('note_private', isset($note_private) ? $note_private : GETPOST('note_private'), '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70); print $doleditor->Create(1); print '
' . $langs->trans($newclassname) . '' . $objectsrc->getNomUrl(1) . '
' . $langs->trans('TotalHT') . '' . price($objectsrc->total_ht) . '
' . $langs->trans('TotalVAT') . '' . price($objectsrc->total_tva) . "
' . $langs->transcountry("AmountLT1", $mysoc->country_code) . '' . price($objectsrc->total_localtax1) . "
' . $langs->transcountry("AmountLT2", $mysoc->country_code) . '' . price($objectsrc->total_localtax2) . "
' . $langs->trans('TotalTTC') . '' . price($objectsrc->total_ttc) . "
'; + + $objectsrc->printOriginLinesList(); + + print '
'; + } } elseif (! empty($object->id)) { From f60ed2b1538ed248ee23f0457f6a31a95c5c01c2 Mon Sep 17 00:00:00 2001 From: phf Date: Fri, 30 Jan 2015 16:53:31 +0100 Subject: [PATCH 048/429] [CORE] ajout de traductions pour le module (#new_ask_price). --- htdocs/langs/fr_FR/askpricesupplier.lang | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/langs/fr_FR/askpricesupplier.lang b/htdocs/langs/fr_FR/askpricesupplier.lang index a945774f836..146a0db9938 100644 --- a/htdocs/langs/fr_FR/askpricesupplier.lang +++ b/htdocs/langs/fr_FR/askpricesupplier.lang @@ -39,8 +39,10 @@ DraftRequests=Demandes brouillons LastModifiedRequests=Les %s dernières demandes de prix modifiées RequestsOpened=Demandes de prix ouvertes AskPriceSupplierArea=Espace des demandes de prix fournisseurs +Askpricesupplier=Demande de prix fournisseur NewAskPrice=Nouvelle demande de prix NewAsk=Nouvelle demande +ShowAskpricesupplier=Afficher la demande de prix # # Modifié ConfirmValidateAsk=Êtes-vous sûr de vouloir valider cette demande de prix sous la référence %s ? DateAsk=Date de demande From 18cb313348d6382f4cbf5b3e16055075e53d290a Mon Sep 17 00:00:00 2001 From: phf Date: Fri, 30 Jan 2015 16:54:50 +0100 Subject: [PATCH 049/429] [CORE] ajout du nom du module dans $childtables pour le bon fonctionnement du module (#new_ask_price). --- htdocs/product/class/product.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index a889136de01..5c75ba4dbf6 100755 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -42,7 +42,7 @@ class Product extends CommonObject public $element='product'; public $table_element='product'; public $fk_element='fk_product'; - protected $childtables=array('propaldet','commandedet','facturedet','contratdet','facture_fourn_det','commande_fournisseurdet'); // To test if we can delete object + protected $childtables=array('askpricesupplierdet', 'propaldet','commandedet','facturedet','contratdet','facture_fourn_det','commande_fournisseurdet'); // To test if we can delete object protected $isnolinkedbythird = 1; // No field fk_soc protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe From d39439437e49cb75354be441b701e749d618b18d Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Sat, 31 Jan 2015 13:50:18 +0100 Subject: [PATCH 050/429] Add fetch optionnals extrafield on contract lines --- htdocs/contrat/class/contrat.class.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index 9619ae462f4..d5d0d3309dc 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -641,6 +641,11 @@ class Contrat extends CommonObject $now=dol_now(); + require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; + $extrafieldsline=new ExtraFields($this->db); + $line = new ContratLigne($this->db); + $extralabelsline=$extrafieldsline->fetch_name_optionals_label($line->table_element,true); + $this->lines=array(); // Selectionne les lignes contrats liees a un produit @@ -719,6 +724,11 @@ class Contrat extends CommonObject $line->date_fin_prevue = $this->db->jdate($objp->date_fin_validite); $line->date_fin_reel = $this->db->jdate($objp->date_cloture); + // Retreive all extrafield for propal + // fetch optionals attributes and labels + + $line->fetch_optionals($line->id,$extralabelsline); + $this->lines[] = $line; //dol_syslog("1 ".$line->desc); @@ -814,6 +824,13 @@ class Contrat extends CommonObject if ($line->statut == 4 && (! empty($line->date_fin_prevue) && $line->date_fin_prevue < $now)) $this->nbofservicesexpired++; if ($line->statut == 5) $this->nbofservicesclosed++; + + // Retreive all extrafield for propal + // fetch optionals attributes and labels + + $line->fetch_optionals($line->id,$extralabelsline); + + $this->lines[] = $line; $total_ttc+=$objp->total_ttc; From 1eb73d0e495b4067454b2ead144f0c07ecb7f54e Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Sat, 31 Jan 2015 13:52:23 +0100 Subject: [PATCH 051/429] fetch optional extrafeild lines on propal fetch --- htdocs/comm/propal/class/propal.class.php | 16 +++++++++------- htdocs/contrat/class/contrat.class.php | 1 - 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index f68a1f4f708..be945c7027e 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -1196,6 +1196,11 @@ class Propal extends CommonObject $result = $this->db->query($sql); if ($result) { + require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; + $extrafieldsline=new ExtraFields($this->db); + $line = new PropaleLigne($this->db); + $extralabelsline=$extrafieldsline->fetch_name_optionals_label($line->table_element,true); + $num = $this->db->num_rows($result); $i = 0; @@ -1205,7 +1210,8 @@ class Propal extends CommonObject $line = new PropaleLigne($this->db); - $line->rowid = $objp->rowid; + $line->rowid = $objp->rowid; //Deprecated + $line->id = $objp->rowid; $line->fk_propal = $objp->fk_propal; $line->fk_parent_line = $objp->fk_parent_line; $line->product_type = $objp->product_type; @@ -1246,6 +1252,8 @@ class Propal extends CommonObject $line->date_start = $objp->date_start; $line->date_end = $objp->date_end; + $line->fetch_optionals($line->id,$extralabelsline); + $this->lines[$i] = $line; //dol_syslog("1 ".$line->fk_product); //print "xx $i ".$this->lines[$i]->fk_product; @@ -1259,12 +1267,6 @@ class Propal extends CommonObject return -1; } - // Retreive all extrafield for propal - // fetch optionals attributes and labels - require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; - $extrafields=new ExtraFields($this->db); - $extralabels=$extrafields->fetch_name_optionals_label($this->table_element,true); - $this->fetch_optionals($this->id,$extralabels); return 1; } diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index d5d0d3309dc..21430ecca5b 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -726,7 +726,6 @@ class Contrat extends CommonObject // Retreive all extrafield for propal // fetch optionals attributes and labels - $line->fetch_optionals($line->id,$extralabelsline); $this->lines[] = $line; From 85a4df4ce25766652002cf514ac7cf8b7d186d40 Mon Sep 17 00:00:00 2001 From: phf Date: Mon, 2 Feb 2015 10:06:36 +0100 Subject: [PATCH 052/429] [CORE] maj du pdf, champs PU HT et Total HT vide (#new_ask_price). --- .../core/modules/askpricesupplier/doc/pdf_aurore.modules.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/askpricesupplier/doc/pdf_aurore.modules.php b/htdocs/core/modules/askpricesupplier/doc/pdf_aurore.modules.php index ed486d4f076..a1c613339a3 100644 --- a/htdocs/core/modules/askpricesupplier/doc/pdf_aurore.modules.php +++ b/htdocs/core/modules/askpricesupplier/doc/pdf_aurore.modules.php @@ -431,7 +431,7 @@ class pdf_aurore extends ModelePDFAskPriceSupplier // Unit price before discount $up_excl_tax = pdf_getlineupexcltax($object, $i, $outputlangs, $hidedetails); $pdf->SetXY($this->posxup, $curY); - $pdf->MultiCell($this->posxqty-$this->posxup-0.8, 3, $up_excl_tax, 0, 'R', 0); + //$pdf->MultiCell($this->posxqty-$this->posxup-0.8, 3, $up_excl_tax, 0, 'R', 0); // Quantity $qty = pdf_getlineqty($object, $i, $outputlangs, $hidedetails); @@ -449,7 +449,7 @@ class pdf_aurore extends ModelePDFAskPriceSupplier // Total HT line $total_excl_tax = pdf_getlinetotalexcltax($object, $i, $outputlangs, $hidedetails); $pdf->SetXY($this->postotalht, $curY); - $pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->postotalht, 3, $total_excl_tax, 0, 'R', 0); + //$pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->postotalht, 3, $total_excl_tax, 0, 'R', 0); // Collecte des totaux par valeur de tva dans $this->tva["taux"]=total_tva $tvaligne=$object->lines[$i]->total_tva; From 0f7af613f11b41f13bfc27aad02990332cd470c0 Mon Sep 17 00:00:00 2001 From: phf Date: Mon, 2 Feb 2015 10:24:42 +0100 Subject: [PATCH 053/429] =?UTF-8?q?[CORE]=20ajout=20du=20bouton=20"cr?= =?UTF-8?q?=C3=A9er=20une=20demande=20de=20prix"=20sur=20la=20fiche=20four?= =?UTF-8?q?nisseur=20(#new=5Fask=5Fprice).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/fourn/card.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index 0fefa8d4555..8cb1a36d09e 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -490,6 +490,11 @@ if ($object->id > 0) $langs->load("bills"); print ''.$langs->trans("AddBill").''; } + + if ($conf->askpricesupplier->enabled && $user->rights->askpricesupplier->creer) { + $langs->load("askpricesupplier"); + print ''.$langs->trans("AddAskPriceSupplier").''; + } if ($user->rights->fournisseur->facture->creer) { From fedf4769876e5a35e0f09e3dc88c28ef6643a521 Mon Sep 17 00:00:00 2001 From: phf Date: Mon, 2 Feb 2015 10:25:27 +0100 Subject: [PATCH 054/429] =?UTF-8?q?[CORE]=20ajout=20d'une=20traduction=20p?= =?UTF-8?q?our=20le=20bouton=20cr=C3=A9er=20demande=20de=20prix=20sur=20la?= =?UTF-8?q?=20fiche=20fournisseur=20(#new=5Fask=5Fprice).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/langs/fr_FR/askpricesupplier.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/fr_FR/askpricesupplier.lang b/htdocs/langs/fr_FR/askpricesupplier.lang index 146a0db9938..0f0e39b7c43 100644 --- a/htdocs/langs/fr_FR/askpricesupplier.lang +++ b/htdocs/langs/fr_FR/askpricesupplier.lang @@ -43,6 +43,7 @@ Askpricesupplier=Demande de prix fournisseur NewAskPrice=Nouvelle demande de prix NewAsk=Nouvelle demande ShowAskpricesupplier=Afficher la demande de prix +AddAskPriceSupplier=Créer une demande de prix # # Modifié ConfirmValidateAsk=Êtes-vous sûr de vouloir valider cette demande de prix sous la référence %s ? DateAsk=Date de demande From 5573c6a2504a73cdde0d903b3956b0ef7d93efa8 Mon Sep 17 00:00:00 2001 From: phf Date: Mon, 2 Feb 2015 10:26:04 +0100 Subject: [PATCH 055/429] =?UTF-8?q?[CORE]=20mise=20en=20commentaire=20des?= =?UTF-8?q?=20champs=20inutile=20lors=20de=20la=201ere=20=C3=A9tape=20de?= =?UTF-8?q?=20cr=C3=A9er=20de=20demande=20de=20prix=20(#new=5Fask=5Fprice)?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/comm/askpricesupplier.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/htdocs/comm/askpricesupplier.php b/htdocs/comm/askpricesupplier.php index dc0abc68642..46533a84210 100644 --- a/htdocs/comm/askpricesupplier.php +++ b/htdocs/comm/askpricesupplier.php @@ -1293,6 +1293,7 @@ if ($action == 'create') print '
" . $langs->trans("DefaultContact") . ''; @@ -1317,15 +1318,17 @@ if ($action == 'create') print '.'; print '
' . $langs->trans('Date') . ''; $form->select_date('', '', '', '', '', "addask", 1, 1); print '
' . $langs->trans("ValidityDuration") . ' ' . $langs->trans("days") . '
' . $langs->trans('PaymentConditionsShort') . ''; $form->select_conditions_paiements($soc->cond_reglement_id, 'cond_reglement_id'); @@ -1389,6 +1392,7 @@ if ($action == 'create') print "
'; print ''; @@ -1684,12 +1679,14 @@ if ($action == 'create') } print ''; print ''; - + */ + // Company - print ''; + print ''; print ''; // Ligne info remises tiers + /* PHFAVRE retrait en temporaire print ''; - + */ + // Date of proposal print ''; print ''; // Date end proposal + /* PHFAVRE retrait en temporaire print ''; print ''; - print ''; - print ''; - print ''; - print ''."\n"; - } - } + if ($caneditperms && (empty($objMod->rights_admin_allowed) || empty($fuser->admin))) + { + // On affiche ligne pour modifier droits + print ''; + print ''; + print ''; + print ''; + print ''."\n"; + } + } - print ''; + print ''; - // Picto and label of permission - print ''; + // Picto and label of permission + print ''; - // Permission and tick - if (! empty($fuser->admin) && ! empty($objMod->rights_admin_allowed)) // Permission own because admin - { - if ($caneditperms) - { - print ''; - } - print ''; - } - else if (in_array($obj->id, $permsuser)) // Permission own by user - { - if ($caneditperms) - { - print ''; - } - print ''; - } + // Permission and tick + if (! empty($fuser->admin) && ! empty($objMod->rights_admin_allowed)) // Permission own because admin + { + if ($caneditperms) + { + print ''; + } + print ''; + } + else if (in_array($obj->id, $permsuser)) // Permission own by user + { + if ($caneditperms) + { + print ''; + } + print ''; + } - else if (is_array($permsgroupbyentity[$entity])) - { - if (in_array($obj->id, $permsgroupbyentity[$entity])) // Permission own by group - { - if ($caneditperms) - { - print ''; - } - print ''; - } - else - { - // Do not own permission - if ($caneditperms) - { - print ''; - } - print ''; - } - } - else - { - // Do not own permission - if ($caneditperms) - { - print ''; - } - print ''; - } + else if (is_array($permsgroupbyentity[$entity])) + { + if (in_array($obj->id, $permsgroupbyentity[$entity])) // Permission own by group + { + if ($caneditperms) + { + print ''; + } + print ''; + } + else + { + // Do not own permission + if ($caneditperms) + { + print ''; + } + print ''; + } + } + else + { + // Do not own permission + if ($caneditperms) + { + print ''; + } + print ''; + } - $perm_libelle=($conf->global->MAIN_USE_ADVANCED_PERMS && ($langs->trans("PermissionAdvanced".$obj->id)!=("PermissionAdvanced".$obj->id))?$langs->trans("PermissionAdvanced".$obj->id):(($langs->trans("Permission".$obj->id)!=("Permission".$obj->id))?$langs->trans("Permission".$obj->id):$obj->libelle)); - print ''; + $perm_libelle=($conf->global->MAIN_USE_ADVANCED_PERMS && ($langs->trans("PermissionAdvanced".$obj->id)!=("PermissionAdvanced".$obj->id))?$langs->trans("PermissionAdvanced".$obj->id):(($langs->trans("Permission".$obj->id)!=("Permission".$obj->id))?$langs->trans("Permission".$obj->id):$obj->libelle)); + print ''; - print ''."\n"; + print ''."\n"; - $i++; - } + $i++; + } } else dol_print_error($db); print '
'; print $langs->trans('RefCustomer') . '
' . $langs->trans('Company') . '' . $soc->getNomUrl(1) . '
' . $langs->trans('Supplier') . '' . $soc->getNomUrl(1) . '
' . $langs->trans('Discounts') . ''; if ($soc->remise_percent) print $langs->trans("CompanyHasRelativeDiscount", $soc->remise_percent); @@ -1716,7 +1713,8 @@ if ($action == 'create') if (! $absolute_discount && ! $absolute_creditnote) print $langs->trans("CompanyHasNoAbsoluteDiscount") . '.'; print '
'; @@ -1744,6 +1742,7 @@ if ($action == 'create') print '
'; print ''; print ''; - + */ + // Payment term print ''; print ''; print "\n"; -//$listoftype=$tripandexpense_static->listOfTypes(); -$listoftype=$label; +$listoftype=$tripandexpense_static->listOfTypes(); foreach ($listoftype as $code => $label) { $dataseries[]=array('label'=>$label,'data'=>(isset($somme[$code])?(int) $somme[$code]:0)); From 6db3f1b30ed294d0054d35830b64d64c3977745f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 7 Mar 2015 19:06:56 +0100 Subject: [PATCH 196/429] Add mdule askpricesupplier into MAIN__MODULES_FOR_EXTERNAL --- htdocs/core/class/conf.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 67b5b8147d5..b6cc390ca33 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -452,7 +452,7 @@ class Conf $this->maxfilesize = (empty($this->global->MAIN_UPLOAD_DOC) ? 0 : $this->global->MAIN_UPLOAD_DOC * 1024); // Define list of limited modules - if (! isset($this->global->MAIN_MODULES_FOR_EXTERNAL)) $this->global->MAIN_MODULES_FOR_EXTERNAL='user,facture,categorie,commande,fournisseur,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda,adherent'; // '' means 'all'. Note that contact is added here as it should be a module later. + if (! isset($this->global->MAIN_MODULES_FOR_EXTERNAL)) $this->global->MAIN_MODULES_FOR_EXTERNAL='user,askpricesupplier,facture,categorie,commande,fournisseur,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda,adherent'; // '' means 'all'. Note that contact is added here as it should be a module later. // Enable select2 if (empty($conf->global->MAIN_USE_JQUERY_MULTISELECT)) $conf->global->MAIN_USE_JQUERY_MULTISELECT='select2'; From 56b5bfd25b63041cb8d0298b939da4721e5509a7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 8 Mar 2015 02:08:26 +0100 Subject: [PATCH 197/429] NEW: Implement option SUPPLIER_ORDER_USE_DISPATCH_STATUS to add a status into each dispathing line of supplier order to "verify" a reception is ok. Status of order can be set to "total/done" only if line is verified. --- htdocs/core/class/commonobject.class.php | 3 +- htdocs/core/class/html.formorder.class.php | 6 +- .../class/fournisseur.commande.class.php | 82 +++++++++++-- .../fournisseur.commande.dispatch.class.php | 18 +-- htdocs/fourn/commande/card.php | 25 ++-- htdocs/fourn/commande/dispatch.php | 113 +++++++++++++----- htdocs/fourn/commande/list.php | 10 +- htdocs/langs/en_US/errors.lang | 1 + htdocs/langs/en_US/main.lang | 2 + htdocs/langs/en_US/orders.lang | 1 + htdocs/theme/eldy/style.css.php | 9 ++ 11 files changed, 200 insertions(+), 70 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 8ad8ecd2331..02ccd13b97c 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2141,7 +2141,8 @@ abstract class CommonObject $fieldstatus="fk_statut"; if ($elementTable == 'user') $fieldstatus="statut"; if ($elementTable == 'expensereport') $fieldstatus="fk_c_expensereport_statuts"; - + if ($elementTable == 'commande_fournisseur_dispatch') $fieldstatus="status"; + $sql = "UPDATE ".MAIN_DB_PREFIX.$elementTable; $sql.= " SET ".$fieldstatus." = ".$status; // If status = 1 = validated, update also fk_user_valid diff --git a/htdocs/core/class/html.formorder.class.php b/htdocs/core/class/html.formorder.class.php index 5ea5b33c1f4..2abc0c38485 100644 --- a/htdocs/core/class/html.formorder.class.php +++ b/htdocs/core/class/html.formorder.class.php @@ -57,11 +57,11 @@ class FormOrder { print ''; print ''; print ''; - if (! empty($conf->global->SUPPLIER_ORDER_USE_DISPATCH_STATUS)) print ''; + if (! empty($conf->global->SUPPLIER_ORDER_USE_DISPATCH_STATUS)) print ''; print "\n"; $var=false; @@ -553,6 +591,7 @@ if ($id > 0 || ! empty($ref)) while ($i < $num) { $objp = $db->fetch_object($resql); + print ""; print ''; - } + // Add button to check/uncheck disaptching + print ''; + } + print "\n"; $i++; diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 6926997f0f1..7e525a9d080 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -45,7 +45,7 @@ $search_user=GETPOST('search_user'); $search_ht=GETPOST('search_ht'); $search_ttc=GETPOST('search_ttc'); $sall=GETPOST('search_all'); -$search_status=(GETPOST('search_status','int')!=''?GETPOST('search_status','int'):GETPOST('statut','int')); +$search_status=(GETPOST('search_status','alpha')!=''?GETPOST('search_status','alpha'):GETPOST('statut','alpha')); // alpha and not intbecause it can be '6,7' $page = GETPOST('page','int'); $socid = GETPOST('socid','int'); @@ -153,9 +153,9 @@ if ($search_refsupp) { $sql.= " AND (cf.ref_supplier LIKE '%".$db->escape($search_refsupp)."%')"; } -if ($search_status >= 0) +if ($search_status != '' && $search_status >= 0) { - if ($search_status == 6 || $search_status == 7) $sql.=" AND cf.fk_statut IN (6,7)"; + if (strstr($search_status, ',')) $sql.=" AND cf.fk_statut IN (".$db->escape($search_status).")"; else $sql.=" AND cf.fk_statut = ".$search_status; } @@ -205,9 +205,9 @@ if ($resql) print ''; - print ''; + print ''; if (empty($conf->global->SUPPLIER_ORDER_HIDE_REF_SUPPLIER)) print ''; - print ''; + print ''; if (! empty($conf->global->PROJECT_SHOW_REF_INTO_LISTS)) { print ''; - print ''; + print ''; print ''; - print ''; + print ''; print "\n"; $i++; From 7c08f33fe184fbebcff5c87e74f5858f2849f051 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 8 Mar 2015 02:26:41 +0100 Subject: [PATCH 199/429] Missing style buttonRefused --- htdocs/theme/amarok/style.css.php | 18 ++++++++++++++++++ htdocs/theme/auguria/style.css.php | 17 +++++++++++++++++ htdocs/theme/bureau2crea/style.css.php | 17 +++++++++++++++++ htdocs/theme/cameleo/style.css.php | 17 +++++++++++++++++ 4 files changed, 69 insertions(+) diff --git a/htdocs/theme/amarok/style.css.php b/htdocs/theme/amarok/style.css.php index bd41d0735a5..c7f3d27dcfb 100644 --- a/htdocs/theme/amarok/style.css.php +++ b/htdocs/theme/amarok/style.css.php @@ -1125,6 +1125,24 @@ td.formdocbutton {padding-top:6px;} ); color:white; } +.button:disabled { + opacity: 0.4; + filter: alpha(opacity=40); /* For IE8 and earlier */ + box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + cursor: auto; +} +.buttonRefused { + pointer-events: none; + cursor: default; + opacity: 0.4; + filter: alpha(opacity=40); /* For IE8 and earlier */ + box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; +} + /* ============================================================================== */ /* Tables */ diff --git a/htdocs/theme/auguria/style.css.php b/htdocs/theme/auguria/style.css.php index 35e0cdd36c9..7278521e092 100644 --- a/htdocs/theme/auguria/style.css.php +++ b/htdocs/theme/auguria/style.css.php @@ -184,6 +184,23 @@ legend { margin-bottom: 8px; } padding: 0px 2px 0px 2px; margin: 0px 0px 0px 0px; } +.button:disabled { + opacity: 0.4; + filter: alpha(opacity=40); /* For IE8 and earlier */ + box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + cursor: auto; +} +.buttonRefused { + pointer-events: none; + cursor: default; + opacity: 0.4; + filter: alpha(opacity=40); /* For IE8 and earlier */ + box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; +} form { padding: 0em 0em 0em 0em; margin: 0em 0em 0em 0em; diff --git a/htdocs/theme/bureau2crea/style.css.php b/htdocs/theme/bureau2crea/style.css.php index b720bd4a802..31071f0b10c 100644 --- a/htdocs/theme/bureau2crea/style.css.php +++ b/htdocs/theme/bureau2crea/style.css.php @@ -209,6 +209,23 @@ legend { margin-bottom: 8px; } padding: 0px 2px 0px 2px; margin: 0px 0px 0px 0px; } +.button:disabled { + opacity: 0.4; + filter: alpha(opacity=40); /* For IE8 and earlier */ + box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + cursor: auto; +} +.buttonRefused { + pointer-events: none; + cursor: default; + opacity: 0.4; + filter: alpha(opacity=40); /* For IE8 and earlier */ + box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; +} form { padding: 0em 0em 0em 0em; margin: 0em 0em 0em 0em; diff --git a/htdocs/theme/cameleo/style.css.php b/htdocs/theme/cameleo/style.css.php index a49ad6daaec..d09cb844b88 100644 --- a/htdocs/theme/cameleo/style.css.php +++ b/htdocs/theme/cameleo/style.css.php @@ -185,6 +185,23 @@ legend { margin-bottom: 8px; } padding: 0px 2px 0px 2px; margin: 0px 0px 0px 0px; } +.button:disabled { + opacity: 0.4; + filter: alpha(opacity=40); /* For IE8 and earlier */ + box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + cursor: auto; +} +.buttonRefused { + pointer-events: none; + cursor: default; + opacity: 0.4; + filter: alpha(opacity=40); /* For IE8 and earlier */ + box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; +} form { padding: 0em 0em 0em 0em; margin: 0em 0em 0em 0em; From 3894a48ffdaba5acfff20e1c34e71b0c190f9289 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 8 Mar 2015 02:37:25 +0100 Subject: [PATCH 200/429] Fix: bad CSS --- htdocs/compta/bank/index.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/bank/index.php b/htdocs/compta/bank/index.php index 050db37fefc..9c9f0574c31 100644 --- a/htdocs/compta/bank/index.php +++ b/htdocs/compta/bank/index.php @@ -174,7 +174,11 @@ foreach ($accounts as $key=>$type) $total[$acc->currency_code] += $solde; } } -if (! $found) print ''; +if (! $found) +{ + $var = !$var; + print ''; +} // Total foreach ($total as $key=>$solde) { From f3258d59c6f97e192256815dd5cb002c3f78749b Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 8 Mar 2015 07:21:07 +0100 Subject: [PATCH 201/429] Uniformize status & add price() --- htdocs/compta/hrm.php | 8 +-- htdocs/expensereport/card.php | 44 +++++++-------- .../class/expensereport.class.php | 54 +++++++++---------- .../class/expensereportstats.class.php | 2 +- htdocs/expensereport/index.php | 6 +-- htdocs/expensereport/list.php | 4 +- htdocs/expensereport/synchro_compta.php | 4 +- .../install/mysql/migration/3.7.0-3.8.0.sql | 2 +- .../mysql/tables/llx_expensereport.sql | 2 +- 9 files changed, 63 insertions(+), 63 deletions(-) diff --git a/htdocs/compta/hrm.php b/htdocs/compta/hrm.php index 866399ef1cc..59389f41d51 100644 --- a/htdocs/compta/hrm.php +++ b/htdocs/compta/hrm.php @@ -196,7 +196,7 @@ if (! empty($conf->deplacement->enabled) && $user->rights->deplacement->lire) if (! empty($conf->expensereport->enabled) && $user->rights->expensereport->lire) { - $sql = "SELECT u.rowid as uid, u.lastname, u.firstname, x.rowid, x.date_debut as date, x.tms as dm, x.total_ttc"; + $sql = "SELECT u.rowid as uid, u.lastname, u.firstname, x.rowid, x.date_debut as date, x.tms as dm, x.total_ttc, x.fk_statut as status"; $sql.= " FROM ".MAIN_DB_PREFIX."expensereport as x, ".MAIN_DB_PREFIX."user as u"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE u.rowid = x.fk_user_author"; @@ -218,7 +218,7 @@ if (! empty($conf->expensereport->enabled) && $user->rights->expensereport->lire print '
'; @@ -1771,7 +1770,8 @@ if ($action == 'create') } print '
'; print ''; // Delivery date + /* PHFAVRE retrait en temporaire $langs->load('deliveries'); print '\n"; // Planned Workload @@ -714,10 +716,12 @@ function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$t for ($k = 0 ; $k < $level ; $k++) print "   "; $taskstatic->id=$lines[$i]->id; $taskstatic->ref=$lines[$i]->label; + $taskstatic->date_start=$lines[$i]->date_start; + $taskstatic->date_end=$lines[$i]->date_end; print $taskstatic->getNomUrl(0); - print "
"; - for ($k = 0 ; $k < $level ; $k++) print "   "; - print get_date_range($lines[$i]->date_start,$lines[$i]->date_end,'',$langs,0); + //print "
"; + //for ($k = 0 ; $k < $level ; $k++) print "   "; + //print get_date_range($lines[$i]->date_start,$lines[$i]->date_end,'',$langs,0); print "\n"; // Planned Workload diff --git a/htdocs/projet/activity/perday.php b/htdocs/projet/activity/perday.php index 9ca8f95ac45..abec2e8cf7c 100644 --- a/htdocs/projet/activity/perday.php +++ b/htdocs/projet/activity/perday.php @@ -108,10 +108,45 @@ llxHeader("",$title,"",'','','',array('/core/js/timesheet.js')); print_barre_liste($title, $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, "", $num); -print ''; +$startdayarray=dol_get_first_day_week($day, $month, $year); + +$prev = $startdayarray; +$prev_year = $prev['prev_year']; +$prev_month = $prev['prev_month']; +$prev_day = $prev['prev_day']; +$first_day = $prev['first_day']; +$first_month= $prev['first_month']; +$first_year = $prev['first_year']; +$week = $prev['week']; + +$day = (int) $day; +$next = dol_get_next_week($first_day, $week, $first_month, $first_year); +$next_year = $next['year']; +$next_month = $next['month']; +$next_day = $next['day']; + +// Define firstdaytoshow and lastdaytoshow (warning: lastdaytoshow is last second to show + 1) +$firstdaytoshow=dol_mktime(0,0,0,$first_month,$first_day,$first_year); +$lastdaytoshow=dol_time_plus_duree($firstdaytoshow, 7, 'd'); + +$tmpday = $first_day; + +// Show navigation bar +$nav ="".img_previous($langs->trans("Previous"))."\n"; +$nav.=" ".dol_print_date(dol_mktime(0,0,0,$first_month,$first_day,$first_year),"%Y").", ".$langs->trans("Week")." ".$week; +$nav.=" \n"; +$nav.="".img_next($langs->trans("Next"))."\n"; +$nav.="   (".$langs->trans("Today").")"; +$picto='calendarweek'; + + +print ''; print ''; print ''; print ''; +print ''; +print ''; +print ''; $head=project_timesheet_prepare_head($mode); dol_fiche_head($head, 'inputperday', '', 0, 'task'); @@ -146,36 +181,6 @@ print "\n"; */ -$startdayarray=dol_get_first_day_week($day, $month, $year); - -$prev = $startdayarray; -$prev_year = $prev['prev_year']; -$prev_month = $prev['prev_month']; -$prev_day = $prev['prev_day']; -$first_day = $prev['first_day']; -$first_month= $prev['first_month']; -$first_year = $prev['first_year']; -$week = $prev['week']; - -$day = (int) $day; -$next = dol_get_next_week($first_day, $week, $first_month, $first_year); -$next_year = $next['year']; -$next_month = $next['month']; -$next_day = $next['day']; - -// Define firstdaytoshow and lastdaytoshow (warning: lastdaytoshow is last second to show + 1) -$firstdaytoshow=dol_mktime(0,0,0,$first_month,$first_day,$first_year); -$lastdaytoshow=dol_time_plus_duree($firstdaytoshow, 7, 'd'); - -$tmpday = $first_day; - -// Show navigation bar -$nav ="".img_previous($langs->trans("Previous"))."\n"; -$nav.=" ".dol_print_date(dol_mktime(0,0,0,$first_month,$first_day,$first_year),"%Y").", ".$langs->trans("Week")." ".$week; -$nav.=" \n"; -$nav.="".img_next($langs->trans("Next"))."\n"; -$nav.="   (".$langs->trans("Today").")"; -$picto='calendarweek'; print '
'.$nav.'
'; @@ -230,7 +235,7 @@ print ''; -print ''; +print ''; print ''; print ''."\n\n"; diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index f9e07ab6e9d..c322e0be3cc 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -506,9 +506,18 @@ class Task extends CommonObject global $langs; $result=''; - $label=$langs->trans("ShowTask").': '.$this->ref.($this->label?' - '.$this->label:''); + $label = '' . $langs->trans("ShowTask") . ''; + if (! empty($this->ref)) + $label .= '
' . $langs->trans('Ref') . ': ' . $this->ref; + if (! empty($this->title)) + $label .= '
' . $langs->trans('LabelTask') . ': ' . $this->label; + if ($this->date_start || $this->date_end) + { + $label .= "
".get_date_range($this->date_start,$this->date_end,'',$langs,0); + } + $linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; - $lien = ''; + $lien = ' 46f56dc7dfff82250816df2bd2db313c 67798229e915f5841274ee70487feec4 -8d61cfa815ca3bb981582bcc7db0a6bd +e9fb1ad286fe67ee78fa8ce60a7be71c d41d8cd98f00b204e9800998ecf8427e @@ -19,7 +19,7 @@ 91885edae345ea489237442ebe3c8304 -706b9f915c400211b1c85c6ca6c11060 +6734d43389eded6e6ec04df0d0ac6a0c 4f72962320b42bab18deef783febd12b 6fe0eb8de0e5c45c09845bb8242fcb1c dacb01d46e370bb3bcc9574cd082f464 @@ -95,18 +95,18 @@ 68f0a32904f0ff877cb2c2820b38dc9b -083d2c1c63007a5a3487ec43bdd926d1 +00b0eb68f7ef07e9d614ae942f84e9a8 08194ccdf2c8801e9ce4acd3fc6a8829 -66a88729f0af41a466b40b1430f229f7 +422a9396b9040de1212afd253cc738aa 772b9a692d9998d6e7d8fd6e28ccb042 1f2562ebcb87267a49e9c8ec11f92d90 1e47fc4e62453875065109ef46259108 e8f85ee5f1ce535b1a6933f18ed09ba0 e047fd0ab0886550203c49269e7ad1ca 5f6244d1e0c7f706ccaed8c71240fc35 -4f7695bf300da817cbee7feffaa21508 +0b882db2159085006ffd37c772f7d8bf 10b05107d83798c17e2de027dfa923e6 fb72e6073af1b2f0763f9edfb4394d6c 942423fa65f36d20685e565e76434771 @@ -135,6 +135,7 @@ 90662aecd9eb51bf87b91f76d452381e 35b24d3c1592ad0e60c99c81a94be6b9 773f9a324037de24ba20edfa4f69099d +b791736af07760c81845b8fa160c6e39 858f4d351d6a865bccffef7fa262d99b 42b9d3d703feb637b4babe11190adb52 7f6bef974f62fb589b0c2d193750d714 @@ -142,7 +143,7 @@ 1ea47e3f2a830596d139ec65f559a508 2067170df6bc861d12d11a277986747a c1be7df4483ccc0e3b2ee08f977d911b -5f00bbdd645ef9bbf53ea25feeeac3f3 +15c0b5e011ee5e983f3f5c96db67d760 4489937620fe0ce4998a18b327a79cfa b447c8a39fa7d8217dfa5519af90e911 967aa7e79415181dfb2963777a90720d @@ -154,15 +155,15 @@ 41afb11aefb73a16398bd906a0201864 ef51c84433eab6197f43d0559f22fd4b -01cacadfbda4293ab21e779e06146085 +b2ee036efc506d6afd50dd7ac7ccc811 e79892f863bfba42a2658e43a2e8546b 978cfbff83d963db5c848161fc3ab286 69a64091740dccdfd8bd2f61df53fba3 dcce80148d3ea055836f7f38ab71f0c1 89a36b8dd5d33e53b92b491bc3edddfe 8b3806e68b169d4cd2c1320a5ab6fe8f -5abcc5736ddd1748f943313023e76de6 -937159f009bc845bd67dda6fc8c86b77 +3d6c42d646e2503f6a71b3618358f697 +46395deac9909d4a668bba6b94ee4c8a a08eb617d4122bc3972c2c04da32cb70 bf729609f42e090aed2a970401930e6d 2a6afbab650385179de02fe9205455d7 @@ -174,8 +175,8 @@ 2cf90126aba2b06f593f838a592ed66a 69be8c3d12533054535cbebb7d7efd07 0c89a620fdc2487c3cf242fa34acbfd6 -77a59143907052032b136e6883a0e1c2 -381ef356a676703edf225c3a56071002 +b3d4f333045789b87703c3c385194b0a +a5605b39b6125fc36ea7a6b083e30578 19e39ed2f2ac92ccec072d8d3d741104 0b3730d08a8d573f9195b07f58ccf09f 448ed84f8c692dae865030fdadfabb3e @@ -183,10 +184,10 @@ edcd9c936456f8945c9e05797b68a0c3 6ff462498bec936a81e4762d3fdbf31f 849d81f9f23ca9b07ea52367b4a666f5 -e549c764f41502093e349cd471306f3c +9af36af76afed9fe2efe0337be9ddf71 80f1b4396367b316403e0a81ae68c9ac cbafb5e0cfab93c9964b37d5c90b049c -f075b322db82ca5a1082e18033cea0f6 +c535a4a7b059b3963f5a5ddff9056faf a1ce81dd3436a5f87396dbc8213500d7 7b09d4f614806db46728a2fcf577f388 5343a79284c9127377a8827395d5b204 @@ -199,11 +200,11 @@ 0987559b12f37ae2490c1a5f5dd83076 32769f39902632408013c5860b088804 b3bf4266b0325db6ed8d9cd310cd2ef6 -a377699a88d8e920c8860ebb24aeacf2 -e62424215546778bde995edfa9692ca0 +4acbc9a5abb1a5d5afb9eaac8e18d34d +7e14eae5d5e6edcad2751240257a81f4 4bdf86d2111c1a361549dbb6523edb65 -105fea1b3cecab53fca1d10fde1a8823 -2887d01ae3349dff6c04d5902a5d6e5e +bc0db72496553e902eec64ef13a66b08 +8d97de9a3fac4e667f273bb41f920d93 6a605a7186f129ee54393898a6d9f4b0 5813003639fb8751dc574567dbf90989 114d8997f2920c105be850fc6ca8cdc1 @@ -253,7 +254,7 @@ 22cb27adf9a761ca0cb76e0e54b71890 3d9cc4ec66df38298e16365e009dfe66 26c66f78f5db62e9af07cb11280afc24 -368d57ca80f31c58192581ec7ca7f649 +9bba5c89e5dd034e4d6ddd1b19a8abd7 5c25310c78417e37fd75c8769e3c172f @@ -5349,64 +5350,108 @@ 3a316818411b5a80ef878dc5c8483950 -f4d6dda9a7e9a13fae9a0b5666a1af85 -26adcdd9610a48fcda8eddfd22fab072 -27f0f0c023d8775a7d970a0550caa3ef +3c06688411baa451d053f64eeccb1834 +bcb93bbeb8cf2831e49ff5541d277a1f +d306e9ad7b8b67464493c3281417afdc 6bb88a8a3d69511d1bf9e7af12ab5f47 -443543014f50021a6aab6e3dc45ed587 -a8231d248b1a221019ad16fdd605a9fd +2652ce7b4dcf00a1b07d8b1debedf867 +a1775d6ba3d8b76629dcdc2c1006048b +a874a391c41c223a007297af0fc82d71 0f6007361d5e4c8f34a2e83d402567b1 -b49ce165ab6bb7d90fd020bb3958ff1f -8ee3baf3211d960fc39e28c4e2a793c8 +a75033315ee90464410b47cc27ce9ff0 +bc1d75d2d4988d2ad9cac651bc44b8b3 +36cc4107f0d39d89b8031042c4159468 +8fd8e9a11cca513a4da0f25ff1a24149 +5af577705b43ce01285f2721a4850ac4 +2937220203e5a52762f5c9a4527e1988 +baadbf936466cfc106ae73e5f15dba89 +4fd59032d7c3a59fd45028bafa245721 191b3c2e856e750c06c0ba7987f902fb eb85dc872664c0769e9fab1b7540b4d5 -cc2cb448f60c5ecf61f6879aec325801 -d4836ebb5fa4e49eb36ba797c9f117e2 +17dfe118f580bc2a08e21e8104ef68eb +ad485022027867116de0bf6c25b1854a +5aeb1084e3a6ae5ef7ecc2bfc7a15592 +8702f5d6fbad08bf74378506ef376f83 +7596c070ac1bc839022e0a7aba2156ef +bcc98729a04598aecb86c451b91433ea +368af9ad30db4935e51b2109b9d4e9ca e0a7f23376f50de631db93814aff2e35 7ad3c70ef87d3657f918d3ee3649f31f -b2664e1ae97756c12114cb3371848ba2 +52b7639c5c4e35f33bb3c69cbfa0588d +a2a228f499608ddddeb2ba54834a5b7f c940b153fb6c5b3498efa181881b5b6c -fcc615d2a469180dd6a29ee6c04e866f -5a3660e46c91205c9203901c6b47cf8e +f9f9da534cce6a9124cc6b919329944b +287cb7bb6e6966708534cb9ed48d48ac +4775a411c20fe8fb13e9fb3a46629dc3 +9b2ce8f93949146d63dfef4d4784ad4c +18638db567f8b6fd7b1c6641ebf2c958 +463334491415afc3e56661e87196b4f8 +016527b52b6af2d6784fffeb23a2349b 2a315fa2593161154c319788f0ef2127 -544195d15ad41278307f99c79129ed72 -f163ef4cda9bb39f8abfcfcf2b683e0d +8b75ae7921f26b4f4b11d18ed921248e +7db990cc030127f1b64a4d3492f8f3e2 +afdcd64e0d7d78942401354d7f5f180d +51f6fe162641de3714866950d5eff4e8 +0a9d5e42c711a284436fa6f267e8ab85 +2c5e8a67d1a805aae9842bbad59a873f c22fdc8941f2956e0930b20105870468 +1f2386bedbebd633223278c1fd25109a +e0d060c7f70126e74c443b72ae560791 +20e28c8b386ddbb38ead777f717d7c44 96c6b586a6afb6d72dc8b93b30f844d5 -768d12956504372d4dcffea0f0bc2865 -39b329017c9d46eeb7f89f11e8540c96 -a01d7dccbd0a43d02a87035b60b5ca8c -8745faaac931fd3990eaad40b663a00d -82f254a1bc551aee1583bd6461b62cfe +351ce642d2008500c8780cce574acdb2 +fc1cb0e9030ce6b891319ce46dd8c434 +95bf00532c504c237041c4e3f04936a1 +bdf5ae55ea4d553beb785266dd0f9ffa +2894170c52a47ac02bf094bf047f1984 +fa8aa7a5c2077676637614809bc0ea0c +b8f1f393d7a247fdfe7668acf776e9d2 +35b71c6a8e678cdaa9d484ebab42c2ca +8f55434707b160cf1a8331d27e37e7e4 +4711cc4662b9136a881497c27b596135 +950310a6c12362b084a68b0cfa7f3373 +6ac17b4d7485fe73dd2d754ce2a0e2d9 +96fe7b1e5cd48c7332cf17b789f7af66 +02aac38356af65808e08e21f1ddd225d +bccc18d3b8c2b941ef7ef6602aab6c69 +de96058dc4fedbe4ccca03f9966ff743 3daad3713df02c15beebd09ceecacacd -0583253d3e49f14e3b6306fa788a6f66 -d0a111306e668d146a52e2299597888e -a722bf1cb509c0218c9b0d41386fdbbe +b8b582e30d3f3bd8867221dcc3dbf365 +75c68bb955477a99fc98600f5e1f40a3 +bf1c8fcdd3706774086cd133a6e04d45 +eee692f442eaec2b8291419a2017e50b +f9389202889738a0935be0d96f3aa609 +9b187fb3a908fb75b7b2a8573a4d13c4 c458a95a74915bb3e01102060bf3d27c -66a08a1e2a2405c7ad5affeca0f81b2f -4674617014723f062743145bd2952df7 +78fdf805f1cea6cd01912192821ec734 +34b9ef2cadf050ad58f391a7990c6975 +c0f60dd955a2bd3e6bace66eb362c9a5 +a5f3fbbef1831fe0bcd060edb6e5010b +c49883919b7912057b1ffad674a9c7c2 +99d8349acae8fcd95094364adf24dae2 +72b2fd6a41260897ef758436603d33a2 cacdbe68a428ae36151a3d1152b2b77b -1aa821a18b07bc7cba92552a372b8f9d -42f2f6e2122319a302b2769011897b2a -205fd4b7bc978688de8420087c161bcb +86c5b7ba9581a58bf6e465aea7d52e46 +3c4338d70de8c99a86b3ee15924172a1 +fb794db6e06fa3cf7479fc889894caf3 -0d24de61581243b069fb508efbc78a67 -561027d7adbd2358225866cba60568d2 +3abe66ba8da6b6bf9cf1c6b0e907d51d +9a29da1e201fb23de4f499adbb9f6a71 edd56d70cac390ef63feeef7e9d71b3f -75837274a0d67e19ee975aaef9e283ee +5f4ae32bd59400b8f788ac644b693ed2 8f83bbc144d70505672f82679546c72d -5c546b7f37191a754b6743a640c6a0cd +809d819fe86dc60509c0b39997fc0d4f 17bfd10e3232de9145f5b74a6ef6afac -bd2d14a110664154fc509e3d3f9421dd +67b77209f88a051d1a7dd39e6584212b b162a10416c2cba0be1ba5d979e19145 @@ -5756,8 +5801,13 @@ 93d0209adac1b1a2b4e3cf2173cf995a 20e95e9c16378e6ac4df49011220f904 + +778ee87bf2f490b2737b2575d6a8367d +36e0aff3d3354e60d6470d44c07d1760 +c6f393b8430b95f521554b427d675a68 + -4ad543978a9d6664dccfe0e58b428c5f +d2a5b87e5832c708a67b8718e6cb89bd 6bff9cf68d35e1f83c670731e270c91c f6b62af680035531c943bb9fe3f416a1 725a7d1d35aaa7deb29d8d7b68d5a7f9 @@ -5802,7 +5852,7 @@ 758456bd92e4f81e1fdff423d4f914ab -f80e903b3aef314dc7e173ba95324c56 +fc8213a4a5a98ee458ddacc6bdd363c4 edc900f68ee6af819ace6dc30b968d80 @@ -5814,7 +5864,7 @@ 69caa949b7e0f3137c6ce7482f38e0f8 -c234c6e7b71d97e977d881538fab1d5e +a040ae2fc7273f1761c0b6294465db86 a0fa0788291ee95ccb306b8aded3fce3 @@ -5837,7 +5887,7 @@ ac2861b424e2b7e30a532f37b33d6889 97bfaff0b5c453d074f05fef1fc4c3df 35433c33dbc3525adc99ba89816d3733 -45b742c58510d055adee01e93aa33ff3 +4aad58f34304117925aeb72dde0e16ec d41d8cd98f00b204e9800998ecf8427e @@ -5931,32 +5981,34 @@ af876c926d49c59376d8b6d642ce9f66 -b30fb8f9811c1fa4d96fb35456366a8d +2ba22b10ce887c66563fb062cab1d79c 5fa21d6616fd146640d8cb59d52fd6d2 -0425a56b168d7f707d31028ad6122c26 +62e1ab1273d5a8dba9003cf14e678f94 9f9e7fb20c0cfc32dd7879ea99bcb3a0 -fedfac2139ca74edbddaba770b52995e +9b6ecbb4d4ec11fe513ec2a724749201 d41d8cd98f00b204e9800998ecf8427e 5c09b3d75fcba736c3353468236e5338 688c47e56752db341e110657c4f6f4de -d6d72917df770c5f42763d5bafd71857 +6f0972a6d7681bb65406b323efa8c202 0a81d81144952f49baecb31cfc610fee -453d482e2c6217d080e4ba4ac382aff7 +85a44971ad662216ae35ee13cc448517 +3cfe3654b3fc16954d91d3968fe71e24 d41d8cd98f00b204e9800998ecf8427e -46ff31a1787666ae78665dcea6351800 +e4a89a0342afbc8771e9178a78677517 +0e38e1224840ed30469ccfc96cae5407 2e7c67c1f808b58e33a5d256c282f02f d41d8cd98f00b204e9800998ecf8427e -33d557efbd941e679c386377e63d949b +17cd44fc331db26f8a7eb438b6f83cd3 e122c4a3c7fd8e1814f52d447e2d1a87 @@ -5965,8 +6017,8 @@ 0ea32bda75dc7855fd061f23d129c35c -de6be0f3faeef94e762c4e1ea1def02d -f38b902b5ce63c83e6dc6ffe2f9cf0bb +c5afccdb1da5846e310db9f174201302 +ad942ced24fef3b0b541041a3ce20205 25b3ce6e2f12f227c4a1ac8db9fab357 @@ -5986,6 +6038,24 @@ d25255649d1fb417a7e7041ed86dc8c9 23a9fe711137f3cb4f06dd011d38c23b + +d41d8cd98f00b204e9800998ecf8427e +93f6a40587eabe04d03bd3e910a780c3 + + +9b2c6de73503cceb102e875a364f6626 +6c5d484bdf6d9ef4529adc17eb829766 +65e54e9e6458c353a92eeaafdb0d0022 + + +d41d8cd98f00b204e9800998ecf8427e +cff8400cdba7775f87330b11ec9a4a65 + + +8a6845f5a3f6180df651c1be45e24878 +bebba22e7a5fdb20a52dfcf1b64772a1 +477b247136b3b54b251d5257ed61ee19 + d41d8cd98f00b204e9800998ecf8427e 0ac7cc84f48f255d71c0be34442038c1 @@ -6000,7 +6070,7 @@ d41d8cd98f00b204e9800998ecf8427e 7d845e5c3c1ac2c7b1c49de0d7e1c7e9 -8d01e83c7ea6584ed8244fe84628bd7b +241877437e8750febbd662602dd0efcd abefa8f7d035ae87eb5b45b0c43843be @@ -6014,16 +6084,16 @@ a7a90ee73e8f7f25267dc0ed66b3d8aa -a7f47e13476c054174040b29f993c271 +c541711e1f2070a1cc8528e9991d7fed -3cf2e98145b2f736130d75ebce1998f2 +fb4334120f1d5c30e64da6c12d2c777f d41d8cd98f00b204e9800998ecf8427e 1d09e4bcc7c8b15b8870ee521b50f1f6 f94fa580d25989d4f7a0729699c794f4 -dcd7588470066bf274c070ea79bf0b3c +bdb60ef8622cea7e270534ffb78c9714 d41d8cd98f00b204e9800998ecf8427e @@ -6037,7 +6107,7 @@ d41d8cd98f00b204e9800998ecf8427e -c5b4ae74b2b2e938d18d6f91ae094157 +4cc2f72a3e23dd082248e7e1582b9cb1 502547de717912a19aca06ddd223995c 4c457d8c88e79b1bab6c830a9162e718 2395be35cede1fb715ef9a4e497300a0 @@ -6075,12 +6145,12 @@ d41d8cd98f00b204e9800998ecf8427e -8c73a6f5b6e511bc183fcf2b5c1f8783 +ff07e29c887a25d0261857b7bc9e1deb d41d8cd98f00b204e9800998ecf8427e 63a86b61d1158210eedd7055b3bfd935 -d9f10175f29b8f142255f95be2d07965 +dd4877a4d2778561d4ccdbdba4b8b76d 648275f02e4c1be714897110a9aae56c @@ -6097,9 +6167,9 @@ 2a452e950585fb39d94e41a414471df5 -4703a36c950de669ee918e763e014fe1 +4dfd0119f671aa86ba1405c9814b08b0 977109b651acad563d27a9f05efa820a -f0bd1599b002694c6ec351d6606921f4 +3fa0561c00883f627c54f080237ca03d d41d8cd98f00b204e9800998ecf8427e @@ -6112,9 +6182,9 @@ d41d8cd98f00b204e9800998ecf8427e 3e8b72640f3dd0117bde24b366b7a8f5 6a1a6da93f9c2d77d68c8edb90139899 -3285c87826c9621ebf4352cf2a3ee2a0 -8a1c4f997f37fb274bc58c905649c0e0 -2211e75d50ae16f94e147f2f05a85d91 +6f6227ce98c203851dcddd1f027a86d5 +4ae815a0b31e0c4b8b900b7da88ab8c1 +1806b43471d2254c540ce3ab52353877 d6e07b8cab924d1b1b4e7b467aad3e67 80c65c798aad65e52c21289ba4fc8db2 @@ -6152,29 +6222,29 @@ 926bd78111e0f27f638bb0705f92439b -8e16469fd236e9975f6a14a9e59c147c +7a998e3b11f1086c7953293442f3530a 37d695c0d624c79d4d5fa14dd131876e -040fcead42553050d648d53d01d642b6 +01ec301f4005d3565727c01ea5b63eb5 58e190fe5c72ba2cd4db99fd17aac7ac -212fcab202e934b30e6fcc7c5128ed3d -6a692cc606a48741b08fef765bdaec4c +a0668dc98834af718fd96f310c7f6003 +56db30e1de65b6fb81931cd4469be39b d41d8cd98f00b204e9800998ecf8427e 3d18b6afcda65c40d3e5b1565e0ae3f1 -0cde765c7d578d103c71dfc4197438c8 +091c302f41e52a36598a19df1860971f 4bac12077505462bd962adb666852966 -3ce4735205d14eef357f1fc90d655ece +22a2ab52185732bcafd64fbd4a68eea8 cc7d7a963ee9ef58ede0680241f53de1 ebb2e597917e22900853dfa300de88da d41d8cd98f00b204e9800998ecf8427e -5b69636b3ce9773a65a8750f65d31ee9 +2c6f884e37b89f861f19faba99009ecb 32df7d91f327cfdcd67d831f6e7535eb @@ -6297,10 +6367,11 @@ 1fce4641b42b1c6680093428f2ccada5 -f4306fe54c33047d10182d177f39b89f +255c511cf57d5c863564fd3ec0bae654 d41d8cd98f00b204e9800998ecf8427e 957b9030b18c319e7c1529a4ffc72b85 6b6851714ab5e4f9491c2500a26c8ceb +29dbab62db9356e1b3574520bf3fa8b6 6dee88d0cf667f9b940d2696690f6744 @@ -6314,24 +6385,27 @@ 5ef3117292cb272cb72190d67bda189d -25d6c35728da1df381db408e61137d98 +9e42ef4e51c3d0795c44215d8264acc4 ff890ffae74d79a90ade34016ffd241d 1e1d68cabdaa8e946ad786f083a114a1 080945adaf8304688ce778f8acc821fe a2546e7613e0c76e1c26692507f66836 8cc4b11d20b0e01eb7e7b7401c2f12c8 -190087a51700f34c1b861261d838a6cf +10740fb22bfc2ac1b339e9d784cb9c23 6cea8bdd89a385b695dda1279e3021fa -e48ba3cc3d7d8641f31fb4d1e1cce67a -fbe31176a2ece8671e34270b56ed9224 -cf7fe720eedb6cef5c6cb67feb5a31ea +c41cd25f077b172e0acff8f4e6830847 +ae990e59fea5de5b4483ff48d541723f +bd68e17f01cde910409d40075ec640bf 4aeaafb21fcc66d532de0612676423e5 b7c3b27785924f5b023754855bbe3177 -526b1578733967a53e9c7ea0d3687334 +537bb9602db6a018f9e12b2286bd26e6 9e2d3bb695cfcdfebe705c171aa299ec -d7f98378b22bf02d1e96caa8c354a518 +02e18a866ed73982a37672572da83321 60d139c55b1533b31a8fcd4150ac35ed -d02f3b80bd620e44b248b763a745c555 +cd235b4afb8a95d5975434d7526fd7d3 + + +a4a1f69d36f0c22e9eb2767ea3f0adbd d41d8cd98f00b204e9800998ecf8427e @@ -6341,11 +6415,11 @@ 6534c21938d98c00bad6449081c65979 42a382d9a7146ddbf4c31c3aa55d6623 7a69303716cb7dff3ae011d2202de8f8 -8c209ae5445bf45531c133034a243439 +9b9fe5839d3b4cdf2bd5bd8faae1206b b4987de205c69745a11bb3ca910cf99f -b9ef591e526bb7585e2e9e7224d9ce66 +61d3ec9976c54d1a116baee6582b4d8c 3beda9cd6565bab822fd85e21efcf733 @@ -6378,21 +6452,21 @@ 6648383dfcecce0fa8010ee26e19c029 10d80a81dab8b4b36bc477b7d06b2c89 d41d8cd98f00b204e9800998ecf8427e -bd966e5b800b4d63bc3884eb6c4dc944 +4c2e051a6a49ecd0ff1f82fe3c63118c f0e5ef9a4d74a8c802f1b67415f319a1 d67feaff91ea41dbdb614dce38ba542f 6a42f85c4852916c71548c179234aeef 0db78f95e23062feab46593d28704532 639d7ee6567e210b36ecae473c5ce5fd -14dcc1c1453ec2180a3bdc0cc53fc18d +f772672fe0aeee71dd5c6bfd8d14808e 2de8820df5ad2c53044c62ff4ad718b9 454ff3948173d81e3f0c7ac1b77fc91a 98b51504f52bc57c9d900d0fc1bdb4ab -84fca517a57320901e6f4d09aee570e5 -47fdbddb0716950e3754211aa67c8c43 +620414a7322b7ecf17e2644a9a3f80cb +9a92997f7f8d84b6ef1685765babe1e5 f01a62497c9a085386bdc7c1defae763 ea8f7edcca4e35f95a3f2b7eed940d90 -66809106d19298be518b4f947dc0f323 +7f6a63a8afc26cee7c61918fd7559f77 a14866ebe77e5755d7b9772210696e42 b28954162df69981caec0998d15b77cc 447cb865dedd025c82a0402a41d2253e @@ -6400,29 +6474,30 @@ 7b53b4073832d6097d69bdf50ccf5ba2 1b0a44d142ae00530558bf5a6562492d 6cbfa567b0f4153bbc7f74adfe6bb4d2 -b6f90f0325529e3a39ebe651d0f910e7 +efa61e935b3bddded6bf488f1c27109f 88379d7c5cf4379d141f0e277fc2d499 3c36fca38f15327101e2cc37493e60fa c3d1e1b3f31c8bc2c6ac7582205a85ab 2c4b8a901ebd2581714ea5b7db8ffd1b daff44759e4f9c193a667ed427ba5444 -29b823646e763c2e7a64098be3ba5130 +dd505607a04547e95b76e3821ae75568 +666a30d3eb073d969dae5b1f73fa7d2e f4d35924864fb87b787ab9a9925fb091 2cf0c82aa4ed8fa0e22c393b7f5ecee4 2cb5c8f2cf03c6df6d3b70394b454d1e c65c84d23e2a8ad950ca58a1a2ca90db 73aae48b832026e3d24c305f58743806 e7df06c253dee16873fac26b32670722 -d4ce19166b58327ea8fe72de57a8dd85 +0bb1fb4ad3250cc312d571055323db79 507d7fd927984729187a4891f616f37c ed773b5b64093d6017aecdf1ca79fef5 4b15299e9a1c837d8e32aafe9abb00d7 b418b86d6c9003364c5a060946082ccb 16f583734d76081ef1a4b44d1e0657a6 -4dd69e598e667405299c866a9277af26 -e07da2dad2151513bd8dcbfe29d43e3c +dcff719e866b3af9fd9555b5a5867d64 +e72a74aa70d48feb14c3a5fde6089fcc a239faf6b54526481abaffe15d1f594d -4b9010ae3ecbf6e792d3bfb687ea2ab7 +e28bd469ef1c049843bc41dbe0f84d66 fe33e132e503f32398fb9809fe51da85 4b85147a9ebfcb923038a17487822286 e639d0ea5fc52734d43abbba8262dbb0 @@ -6436,7 +6511,7 @@ d41d8cd98f00b204e9800998ecf8427e 80f54c48fa46d0aaa977e404035aadf5 febda7bf2f326668d1f627ea9f2230b1 -4e6602a9b00bab8fd936f4800a1014ec +4f695f9327d6b2361640731a09e99a33 fe8c6f4acebea37d34b626a537db0e29 90ffdb58422df4e942a1a90cf5225c11 f1a8c3f9d6af74c305810725f125691f @@ -6460,8 +6535,8 @@ 38da2f7fcc1f2fe80b87db53e8767282 51e003dd68580f4f37558726f8452b53 748938e5e5aadef1aef9a8b79362b1bc -e4a93615651fab4af7d9288cdcecc86e -6d73868eae09dc15710f4c71ea25d7a0 +0de6fae1b00ab6cd538ffeef40f045be +00de18319f0abfb4c50f76b60f3fa2e7 6b58f5c0cad8d233b94b0874a41e4c7d 9596a02e5898fe117ac4d2f080a1b3bf afee7ccb55d1420cc8e36da4657825d1 @@ -6469,7 +6544,7 @@ d2b5ecf5e328a75e984f342ec80a60e2 07e043e1c42a0fe90d2226eaacb013e2 4cd01a2e1b1d02f7bfaff7792fb45da9 -f12d4e2a7b8866e08c4635b6776c1b02 +81a2f4c5a6b5946b088aabf7f5e9404e ce24eb153015acfdeca2e5559cc41583 a969dd13ed2ab6f921564ecd22121515 c2ced639d9b476d69e952e110169346b @@ -6477,22 +6552,23 @@ 3e30f76aaabd46ad9759658b706af3f8 4d7e3a9cca8144dca5f184f23e63953a 60c540c4dfb653ef65e67a628645f590 -abb811eb8d79dbeb78f5e67711905618 -1653a3d486b7113e331b01813407091a +3c3312f639641a1e2f7d5eab79209b7f +604bdd7909398dc5d136d47f9fc4bf39 98ca2d412c720690b46b8bf566cf4fb5 a9d45ffd6281800146fcfb2e3ab90ab6 66b21a3ea2de0ae271e470c339c40d07 9bfcd5451fd684e35ed69b3912791a6c b416db3eacff1ad448692d14aadff327 -b37a46d1de1e9b957b33881225da36dd +c8f2877e5e9d05fde24a7c7059c145ed b0bd3479b483ba56d613a91242e0efdb 0bbc469b628cbc940ebdd59f2e218b6c e1ed3c24b7fa01be0254d5e6393237e5 0e5a8ff24a2f4bb98d5c6c732e57619a 811dbf5341b537fccdf98ff790cda72c d868ca6c92ed42be6d193a71b5ae5a7d -11709bdc16ba921e8fe3774a1c7aba5f +d3361d904c96677405ad3081d4bbfc4f 503104f81619bf8296bdd1893079765f +595325924223d40b0ea97c9df4ebfde4 aa7ebaddf8d815b3dfd1b3281f26de84 59519c8b2bd240bdfc50476ea344cf8a f68235c447fde10de92e0732d17258bd @@ -6502,7 +6578,7 @@ 3cfbb9ef9c493bf739d501114cbe798c 0d3a43a7afc190f34f52855f28a34e4f 48f9b2c134655de1b0f5f7d50f01b765 -b3c941e7ae9574a1330c98ce07aade9f +03f439fdc6137b29736006bd4bee8ec5 70c6fc7d08f3c562322c9f53273f1393 @@ -6547,7 +6623,7 @@ 8c78f30a301fd7c5092ed59d95f2f688 -db4b88a7cb7f2e983e9349a0564aa877 +841ebb62c8967f82132d6c19e372bdff f8bfc1daca01458dceb9aebc7ffb5ddf @@ -6578,10 +6654,12 @@ 79a20f938fb5d3f145447ae44db05477 f2a1930d9be82084b365ccc8819d8484 d41d8cd98f00b204e9800998ecf8427e +5468ba4d16d0e057cf45f0984a79ac2e 1de24508893015db0757ec63e74a8086 2ae8b7de36d0e4c3630977569bf93bd6 -7af81ecb2106b1ca78c310332a02c604 +050cbe3b9406a05a76f6a8d1c2fed6e6 2b19c3592fbed5e4bd96730f87af438c +69bb08052b60d7d59cbe0e6ff0e45089 de943e7a2b8a603c3ebc34507309a46d @@ -6603,7 +6681,7 @@ d41d8cd98f00b204e9800998ecf8427e 4553664f3a8bd058468c8fe3a6622db9 -86a595136563ba16d9b4fbb1cb97415c +7ffccecde85645232cd150f4ceb54f8d f0e4f84ac2849eef8c8da252f2a875fd fdc9f14617e70aba304986ff7e32811e @@ -6692,7 +6770,7 @@ 347df504c0b23da0ae91c9b5a344c1a2 d41d8cd98f00b204e9800998ecf8427e 9b301131818ad7072d10624d9fce65b8 -215929b6545fc8cfacbb7386e4cbedca +fd0799a717f127a9c48bcb11d33a4d72 d41d8cd98f00b204e9800998ecf8427e @@ -6717,7 +6795,7 @@ 80af429597316aca3852de474a686ff4 -391c970a033d0593a16fb904119818d7 +5a89df7d532fb5730ba5fa40e3fb4037 d41d8cd98f00b204e9800998ecf8427e @@ -6728,12 +6806,12 @@ 35063f32bb86ee8cd1460cc9b50460ba cc44ae6151419f24f801a399a8da8e9a -577a5a6dd151bcd7cf6d8fcbd70677e8 +1a4b02d31eef47e71fb394b5688cd663 d41d8cd98f00b204e9800998ecf8427e 6b8b8ce50599e40cb74603a883f5d49b -b6e05cae93872a350f3ca2352f15f6ea +2cce9a1d8bf4c822dda113e210bc4f6b d41d8cd98f00b204e9800998ecf8427e @@ -6764,11 +6842,11 @@ d41d8cd98f00b204e9800998ecf8427e -70b0380559e50123f150a6f30a4d6699 +be907e7e9b0ac5a24a34af01ec1c21a6 d41d8cd98f00b204e9800998ecf8427e -04876764536d2c0ff37e0f1c9035c639 +a64def4ba4a8a55272108f79d0667e39 3621a212806836a2b3ca23f601c1b670 b3f46a3f7cc553bcda255db88fd2309a @@ -6777,6 +6855,19 @@ 6bb3fb472a3ff31f31945a68bb806cde 29977b078710f6ebe992f5b534b7d897 e1efd5d8bc348da70c325a08fc8c37a8 + + +d175d0af5c450eb501bca361a275c309 +d41d8cd98f00b204e9800998ecf8427e +13e7a0e137341f5a38764ea645b425f8 + + +d41d8cd98f00b204e9800998ecf8427e +e4239be8b90a077f8afc116e683151c9 +751806f248816fea7429cc7c4132539b +ebf0a4412227a0b61ae52df0105d46fe + + 610022638254b2075ec4bba535c5fe37 @@ -6819,10 +6910,10 @@ d41d8cd98f00b204e9800998ecf8427e -6a04d0a55d694688b7a8e43c72f63891 +9f8ec55a2df1f58b2ebd299fae8a1c6d -5ba605e1b76e515803012ab67abe2e4a +bcc3831429d49ff3a32c645c64be2e0e 0276bf6040d05e80ab5f6c6910f6ddfc @@ -6837,10 +6928,10 @@ bea23817aaf13e638fc0e6d274b0a63f d41d8cd98f00b204e9800998ecf8427e 2f133b07231a558b4551cfe813b6dd92 -c304ed5cba54aec736b4550b472a1337 +ccba00148532ae0e30f6f1d082817c10 -36473125e09319a9870285bf7302b83e +83bd77075a70f4b3a661fb57a0f0212f d41d8cd98f00b204e9800998ecf8427e db3734d67e45bf4a5140fbb38effa947 @@ -6861,28 +6952,28 @@ d41d8cd98f00b204e9800998ecf8427e -bd77bec5b425c9fbc1a4830a3ccccaa6 +6be749cfe859aafce02b030d57362ad7 -60d1a2024e5d8c9d6cdc0c295a243652 +898b153724a1748b8ea360e0b94aba77 d41d8cd98f00b204e9800998ecf8427e d07b23771a6639fd5f6216da796ff343 -290e1eed5e28283e741bea66c30ec042 +b1328a661909e538f58d43197eac2a40 5cba7b9316b591829c756097ae0485cb d41d8cd98f00b204e9800998ecf8427e 1f669f066fd46b6c9ca05177e177ed23 -bef21989e641a45d0f362fcb97281341 +3c270b13f4a5b576799d30edf1b7061c 00b8f993b58e8278a8115fb82ba7db57 32cfbcb58d6ae71455e0c58f951f2849 -bbdf49461b8f7bfda4446af93641d362 +69db05aac79ae05729e3797abcc2f1d1 710958b3055ce271a53ebd4e6325eee4 @@ -6893,13 +6984,13 @@ d41d8cd98f00b204e9800998ecf8427e 4dfcdf4d3cb3af826834c1fbb852f513 -9ee40eca1f3111186855090e11978198 +08bd77ccf4ecfd2cccf23e9925909375 d787be1614e93a5b0dff651c2d1962b8 d41d8cd98f00b204e9800998ecf8427e fc2cd8f1b832bcd093d8f65cf48d6be1 -94d4a670a65a20356db9e332884b5b3e +eea69eebcbf32860db846f30a803b9e5 05afeb97327056d436d21d891b041057 @@ -6937,6 +7028,7 @@ e1e875671e566acb90ca03d16b7e63ed be1a34c1c77c5431dfcee9caaabcfd88 f71705be8958fd18f828eb64eb254202 +3be7925340a260d3ffccc912ede415b5 36602e78494c46c4704cc578d4fb90cd d0889baa672fc0c803bf11ba7f57f6b1 @@ -6956,7 +7048,7 @@ 1a47a847fe417086b3f0b8d467d35d1b b69b43bab30c28687680635f91a53017 311aab84570c363ed4ff7e5069f5d949 -fa7542a63fa8d175b25c6db3d460d8a2 +3f0df7430bd8ed69801318a62221f4b6 6ce7b2cb223fead83bb4294741e580e2 @@ -7001,8 +7093,8 @@ 6a4676f26cc4774608c53cd47ae76efa -5cdd42491af381a414bea885fb5c234a -8df084360e41bb5dcce4719ba16c4804 +3273ff24d482f29e015604a5a5190712 +6b13618c39c1ae78d6be5a9580a25daf a90e349b1dfda275772af8b109e8be6f @@ -7024,7 +7116,7 @@ d41d8cd98f00b204e9800998ecf8427e 86b05756ec73691d2b88e25bbce1e86a b123826d90b2ffa257bd9880c090a6ac -f454a5cbdd36bfd22d6240b85e503e3d +30a766af9cb25ef9be5c36d4823109f3 59d8e23aebde2396d3440271828f4e20 @@ -7068,7 +7160,7 @@ 1921a40ef2e203a9c7e33e33d8481630 -84c13b91d89d2ca2851e10c25a0cd166 +3bd4ca8f6d546fed7f45d59930fab106 3afe82801f5cd602354186397efe9210 @@ -7080,14 +7172,14 @@ 7d040a1858a6f1e8b3d8e7fc68b1b008 -2d1bc07a8c28954534f37204c02c33f5 +4515ffcb074f47a2d9a4af2766b074cb a267dd6d9a787dbaa95ee81e9812a81a d41d8cd98f00b204e9800998ecf8427e 90bc49dfe52d6be339781906352ddbdb b3586b44a75323dbf02f85aea44e25db -e4d79c5376e95d08abe328aefaee064f +d5cde2d518971a3d6bd1e682b7c42092 1699071ff4bb09210ac267d430c05352 @@ -7095,6 +7187,42 @@ 202fffca61e528efe134dd32a3a44c64 9db7bfe5fec55a085d9f0dec8717479c + +83e824012a7c92746e71afc022ecb636 + + +18df2d1590e825952abeb40304a9597a + + +596d7781222e476b027a59499fa2d92a +ffae59f2cf83f882b269e06e420602c3 +7dd46b8a806a7567c0a88a13fa4f905b + + +9b9b0157749548ed0fa38782aca9b1e1 +296f4be076bb584ea5779e3059648a53 + + +1b2ed3db48be32e106a6dd6351f324be +b1688c8a3bd5948865884f0eaf3a0251 + + +99bd91055f47d5a74f9c395d74fbab6c + + +74d1739c0d14cabc655cde37e2fb25a8 + + +81d6b2b51a9b495e2512ab0952fb3afa + + +3542838ab2e1d4ec2cdd98db328a247d +3645cf8b754a2925eb02025881aa3ffb + + +fd8e048c8923d556fd7ae7c5234ad474 +b9dce9a8342b0e0d203581e86770d28d + d9cb53a9d7329a35ccba6560d05ca39c @@ -7118,8 +7246,8 @@ 3b3a6cb8fed3de208bc9a97209fed209 -c4b52ea2075814429b8a00a486f74baf -3229eae002e5525f9b545644256aede8 +a42209411960f30b6b6e5e38bc560af4 +7855abdb54739fae3eb0ae1d5a18ecb2 583594a72118966d0ce436acbf5ab344 @@ -7132,10 +7260,10 @@ 1aaa761fff1db6880a873b2f7aba4769 -73b7987dbc53760d356ad398d8f31a6b +96ee353361cdd805d62109efa227f63d ffcd5053589c705062adeade31ce92f6 68dc3ea2cd9c6508a925df50fa011221 -95444b95d6bfbb4cc05bddb1fd2d430b +694616680b479a5a29cc4bcf08d2b0a9 deac83a4c0eda829eedb0f9136a1fae5 @@ -7204,9 +7332,8 @@ bda3f6f14b6ef2f298a116a9e5e4de47 d41d8cd98f00b204e9800998ecf8427e -14cf870bc89190b003d4b67d08399a82 9b4cf41fd9e3065e1849aff895a0999d -b9866ad3e2a12514c3062cf74a711f6e +b34de60c5a1ca8b6e1e0d1c614022e80 3b29a33fb5f50c27d39d0645b1d1d96b @@ -7221,50 +7348,51 @@ d41d8cd98f00b204e9800998ecf8427e -87a15a164f064663c4d567a67b877a14 +282d8a4bd07329456966b4a7a359ddc5 d41d8cd98f00b204e9800998ecf8427e -51b4e94e74766a82470e5ff6c5753cea +c0b5fb2dce5b0a621a8653d6db38785c 3d863d079d9ebd0a4d6450acbed047f3 -68ef70376e6452b0db41d188de3e7309 +2ff2dde238be1c2c76ff373412a78e9e d41d8cd98f00b204e9800998ecf8427e -583e353c57d884970f1753605d7ab749 +ec17764560eab22337e40b09dab7fa84 bc584ec274c28d5fd6bc06909523cb8d -447dafbb6d90617a37c7f8e9038d2d45 -5d709c9a142b17a1cd1439197ac62ff2 +db597412bbafac95b4df7c52007804d3 +0950ed07fcf3abc1d21340fcc9d51be9 +138f3da6669669416a9600e7bcf485ec -e01dc79eab31ca899f8bd155d989482e -9946885ee4e9044e9a3fab8e6bf4f0c1 -8574e2c0ea7292d815892d241b029a73 +bdabc11685cbe7bcd760143cc3431e3f +4b52f2ecd9144b4fc8cf9484c23157af +b0599b42b4a17c1d140801a1b2dbfcc1 0529ddc77e8c681c33c47b9b7687e810 faa2eda13c5607ace72e34e9c0966a0c b704dae630c7215138b1f90caf77b450 -285e61a9ffd5231adede10df1871ab5d -714867efd7c071524ee3b0b4667a3ddd -9477e6a93b94cf81c26b5cbcd7f7fd67 +5da52c371983bff1e44d50c00565aa5c +dc5cd8b4ba8b06cf2c836d35f5117a5a +4fb1cb61faf463c209fddd1bb0b3ff81 d41d8cd98f00b204e9800998ecf8427e -d2d4f3c4b03e226a2ae751d35adc84c7 -f60aa8f7e04400f4af3bab2ea21f3383 +b03a23d99ff8934ba5a850184a0b0d0c +c86ea16e4f10b94df31701289c00b4ab -9ad62e69014ff23f232dcc43859b6018 -c741e135218d1dbfbcc03a6a4e0271a9 -1960bfd361ca2e7b2582c1633c35b0a3 +0896aa5a8e5444e0bb03ae80c097e82d +dd5996e0d69cf32275d6870b55b56bfa +c7e4e70e698600098ac2c42e411db419 07fe07a999542e322404d77a30264169 -18296a04b5d36082d8afca4e449f1ee6 -87f5b2af13b175d47eca8a33bcc68005 +86aac7d09e8e3ac69c3279b861b80968 +93cad33fd939e06b959b63c019777d91 43cc87a6b84afe612af178e9c0945279 @@ -7321,7 +7449,7 @@ d41d8cd98f00b204e9800998ecf8427e 7bd2acd718a001933d1b9723411d4371 6288df74fb85f7c954c18bf614aafcd3 -845e63a81a5b8edfa079c2fec094d6e1 +aed3cd0e313e75338a46d0dc30bb718c 55cc97fa2026cc42b4771d975b45fedb @@ -7345,7 +7473,7 @@ d41d8cd98f00b204e9800998ecf8427e cbf93873197cf6bdd0e36cd66d2a87c8 -86da383df93404580615782f4265bcb8 +009c4b4f2f9ed03cb27e8a74b3839136 2758f3882de560e1d11d208959c0627e @@ -7364,27 +7492,26 @@ ab88360e0141e3ddb3c8be3ee745008b -099c61f85742fec38c0e6fedff80d7eb -f15cbc07a79882808b31c59831725260 -2f76a335578ef4412e9b3b4a222ccb08 +f81a579ee5ec1adcd1a1de6fce3cb5c8 +5aad4002fc93b2b92d994edbbf95c50b 6fe5e34cc37004b4342377afa27fe78e 65306d3a5faf1ede100f0b433e707aa9 d41d8cd98f00b204e9800998ecf8427e -5baae840658acdb066b3294b07d6ed63 -e2e322bda8e0a19f571796b5ca46a266 +d6814238960c3d3ae89a8748af2cd846 +1dc3d6a1dd909a8a58fe8eca47ead5ac 87ab6c05827eaa2db8236ca2c0262ead -04e84d93b6851156225d86b33bc68056 +1d878883bffeb35ff573a04d207a7938 748fa3c47dca5861db4a736455d0f981 -762d623e34cb8c1d8b575801543027c8 -e99a525c7011b5cc748b27040716cfd1 +b3cf8bd9552d63ecc9746ca05452bf2f +674268c96f941fc5a6cd52da5fb0fd43 abcdf41603da0d617bee025c713adb41 c7c981cbe885fadb6853ac3250aab799 b9a967a29731ccf78b3693d680e3790a -848ba012f7bb08ead96269cac742157a +4a04cfbfb8d5f124746c3e2cd8007186 ccf2ea9b4262741181a0cff7c620146c @@ -7409,7 +7536,7 @@ 76e6aec3a1262b7b199fd88ae651d049 -1d00dfe3dd378ed263a943b10148ffb6 +a3148c5d3f8b6a38cf976cc250985d9f 479aca46b8b848649e96c290319deff5 @@ -7432,9 +7559,9 @@ 4c3fefbce8919598e7f04618a3e54ea2 -03f893c7c0667770a66ed0fd11f1a710 +a63bc90ab57ab5555e882b8db7130b63 d41d8cd98f00b204e9800998ecf8427e -0d39677613072296fbda7f35c0ed9d70 +60a4cd8e106aecadb8d082876de57a25 d60fa512ab394825284751728195161c @@ -7444,10 +7571,10 @@ cf7beba0674c611eca3eb40103a9d56d -c61793fa62504e540c4c08fc387776f1 +be4909eb830f52517bb34572822210b6 d41d8cd98f00b204e9800998ecf8427e cf3df8807edf32bdf31d3d0d148cba77 -d93f9826f6e8ef4bc66e8a92ae30020e +1f61fc5521e5a125d27fce95bd4ae5dc 6d0f156645b7ce84c269ff3adb915803 @@ -7469,7 +7596,7 @@ 831e6575098342dfa342551494097a24 -062c91c56e9a1aacf0045ba9ef2d295c +c425f95f5b0e994be961e09520cde9b3 d6d047f9389cde6f11b9175ffda432ac @@ -7509,7 +7636,7 @@ af528677086b2c26806ac47af95d9d9d -fa82bbcd66e5d31ac2f43c52caaa4acc +43b599b8900f31fcd51d013ccac558b2 d41d8cd98f00b204e9800998ecf8427e @@ -7542,7 +7669,7 @@ fde1dac27ff95323136138883a8cb086 -020e671dfeaf92176c35766720c2b8ec +64e3aebc902234add5ddbc3714b778fc d41d8cd98f00b204e9800998ecf8427e @@ -7559,9 +7686,9 @@ b3c7a210b2be2599c7fe2af126eeb062 994337d7c14c76b4537aa2e748b48729 b77816831ef40cf1b79779e1ada51d8e -1b526413dd24dc7b5d6910cf07f3aa1a -319b65909579d3ec171265423a48e35e -d6a0e0fc84f08a62d144e63ccd0f798d +5446b7733bcb58774c487c717831a8f4 +dd0fa2140f5450e0f05d6555af374289 +ca4c5271c26dc0bd0f7537f2d4fe8d75 fe62c00b682dd677dbca4764d5f0fe97 @@ -7576,8 +7703,8 @@ 21055e6d625cd5dc3e805ededd1f350a -bcc15386db16f0050d01b4d80fe68dbd -d77e4af5d17f15fdfd920ec8fda7fc45 +aec47b386df0e0df628a1e31f109e998 +0f079eeaf763fe056f582fd3d821b216 95559609c47c88b112952073fb77410e b79674bb1410c34f6428a0e392318740 ee9a71add932db04def7fb3a6d8af20f @@ -7597,10 +7724,10 @@ ea1a3bd45013d291cafdce135ebbd13c -c78c359e1ac036fa9a991e635efbfac5 +5b0073ef255ade9c14c4d56a735c5684 221d0b581479c434f039e58da4718a8d a6f5b10b14e766e788351b506b6f6024 -48ac89c72e2794fbcbb1078e0fe7d9ba +f94ccfe8360d382460cf8aca0492b9a0 9423e6de63cf281df2bcda0892da0a88 c8506bcf84839f36e61a555912e7c31c 2e5082f8e6d7976945c0e8e951d5f261 @@ -7633,7 +7760,7 @@ bef639ba5d15fbe93aa7df26bf6c3a70 -32160cab79f75fc38ed26bb590037169 +70bd9741b82ec97e1e005663b8ee8671 d00dcd6a42cd0d91cbd5639c56a4b6a7 008656d6620cb1ef43935edc30fd2994 @@ -7641,15 +7768,15 @@ 7ab5486f4cec78b1c4d93a1df0d83b51 -8b9453a22ca4ec5cd5f504b0f3338238 +73644c7a9c7312b638a8de811c0f71b8 d41d8cd98f00b204e9800998ecf8427e -0e3fff0ddbce47ecce252c82a6e02fa7 +770001d8b9e70249a27cfc567e770219 f47f735ec8627b7b3e9ce6a5e1643d4c fff5ddf9542281c2d2568153781b4c73 16e1a29a5b79d4a3668b3a71ca3d86df -992dde85a7ee2f81661fd7a54abf7f89 +5aa861a485746b0cce73cee39a4eebc6 78a3befa9a3a9bdb40420e432352250b a42439ac674abe10958f58d747f7cde0 @@ -8029,19 +8156,19 @@ f1f34d8c0f864daa5e8ab56801027430 -b7454525aa100e079c56a92ef4866283 +831fe459f7d3606afc5482fbfbe85278 c3e50ad0d4c93692a2810e136ada70d7 ab274a62d5a3a8ab5f1e745725b83dfc c4e9cd5c18af616969894e4dceb95f97 462f3f2edf24c9118a0a6df7f00765fa -a7f112322d606a3807c6e4eff9bf9b1f +5b2e22d569f45024f23cd0f6c213ea86 90a76b121fb7fe4b51daad580591cc8c ef12ff29adae2685e120e58aa04e23bc bc8b10dd8cc1f841662dfdd87868197c 311cb7d4bf06cb181cfffb6e44ed5826 e1161971bb06488cabe9066c8e827741 -90086ae0090269082c6221cdaff54d9c -4573107d98f6599ed40b01012378fa81 +f7b4e392e8e49b03c37439ecd4210e83 +7528006b9faf6605713f4b2f19f19f17 3222e8667905ffdb07a756fa25a26bd9 c710e46b08ef99b41b5167db96309c81 f28164a5a95f0a8408bfa00f4a40680d @@ -8060,7 +8187,7 @@ 75fb4c310c4f0554d3ac9859d0c5b646 e337dc8e080a86ce2e187cf3a38d0b10 de30767cf0a5d454269ab9986fce13c0 -b84cc0bb32567be3d521af1a1d2b4cce +1c3f72b75a408faa2fd8b60944cc2533 34be9245428cb84ae31c992eb21f33d3 9eea13d3889d78fdbc614dea77011565 6f3b6f771da549d8e22263e795ddecaf @@ -8070,14 +8197,15 @@ fb5913e34a812d5fdf9e25b8ca8c9fb2 3c801db51ff672838b9306c63df460e0 51a8ed92619d4857e0eaddd369a14b38 -a4fcafdd9412d243c46e1b55d7911f2c +3687aa1cf5d5f099a8b746660efe601c 5f5e1f71ef91392a3edee6cdf5e03408 8cc192424d2a8a3a8439cf6c9e9c866d 228b0316d26bdd36e56a9158eea64ef6 59b195fcff4d3877045fee21c364d524 324f3b1c1afefe3296f76db472cbc9f6 -8d2578f24429a8c9863f267bd792fb16 -6ec9a9a11b06059192bcf4a71a34dd22 +4897fa688236216c771946add0f2564c +d01fdb1e6043fb26b049108da5e4df60 +d091b8b83cd5b9dfb948872eb9b9e4dc a171ba167ab22bbfd25e570f28bd8483 f0d89af2ab05f3af36e1a4edec69c7db 1a6980f79392b14b3a7e00db58f915ff @@ -9748,24 +9876,24 @@ be05aa1b12e3b558de747e470b5731c8 -c2f72a6d3ee9b7e45506ead106bc8f86 +65db64d894cf8b776148fc4324d16986 3262db34410c13ae4d777e263d779217 -d11569807aab1e77f9bcd96fe375bde9 +97af3c06de8fcf9955b0d09d7d2c7397 c08f79985fa33fe026ef475f840f87b1 -e61deb16dd6421608631ed5c1f671c6a -f71ca57649aece8045b66345a612e20a -48451fe44b83835898ec108b9d9bf866 +1a6a7ea85a76cb09bc7568856b7f9a28 +4a00c2ddb39f4e28db51f6d0f3283859 +385be3b28799de9f80d0ef46508efbdc 98fec0976eec22385c2b735cb80d7448 b7c27239e68ce6f51296820da50bfffa 60d670dc85d029ed1c3f63693d0d4288 186dbbf4b11a9684557157006bf2a232 -8e42376332e36c72edf33421d3f12bf8 -cb73d7bfbdae912945ec4d98c0d1ec9b +78663365fd9c3f521c456712bf1aaf17 +45ac46e656485f54c2e642c00ece251c cfc96587347a77604730af23372d747f -6b1538d4b9683808221f30ddad0414d8 +398d48fad9f224e2c8a811b7e63cfb5b f5f165bb15c6391fc12ebac3e0a0f3e6 555145f760c70cf34b190b7214e3b5cc -dd62bf79621c56e565feabc0b84574d0 +c4db7841d9ac141c2e07f986344cf10e 7508982db7d5e9e5c7fec3f096de32b0 aa86f6cb23c2ae8294bcbd6f2315e8ed c56f3ea358f24bb4e820768e948b416b @@ -9776,11 +9904,11 @@ 2da0a1995db50d0752d2e509a3bca37f 78f2edd4512d3859d13e1c90618932ff 10c2dcc555137e38039193ccedfc0cd3 -b0d093ebda261c4ac0a6bb982cfa41f0 +f3cb3a7da6c4a8e947856ce9a7529a90 418334153f5b6a5543f6cb5a28f3c82b -bac99d873d638b05891fda9f7c62d562 -021de63f1074cc73a6d83a3e83a5ae55 -c7f8ee7a8d27fb0d86b5386b8cd9a6f7 +c760d45b0959664fe5ef8f18e31cd4ae +d01ee19b9b423b0378dfb48c8a20b021 +914772c1d09c8268418beaafaf36313d 199dcc4ae427c0d0e5fbde6c0d2d2f99 57da58850de2f4591fc18e23473ba8ad 08fc6ae338f02d76f77339c8537012ba @@ -9799,8 +9927,8 @@ 7dcd96797a60b5e466e25990e534f588 1818aababec2539efc6cee74006d4d0c 16202ce23ad23f4f86fcbd0c5d16dea2 -83a5a0b9fdc95c8f1647075e8c63c00a -d95dd0afca51ee1616ffe9550cfc1f93 +2086b1a692e4c3cc5dbe6edbc87976d4 +8dcd21c1d37a27cc9a9f227a2b283388 87eae3bfbea127d8e90970cf3fe8a9a1 @@ -10153,8 +10281,9 @@ 9ff187bdce93767cf2f24dbb5b0a34c5 c04364a46b55ae75b65db731f040dbee 5437aca264069f35e46a3fc46f04c2d9 -438c872ca8fdb808934df640ad361350 +b00df950231dc8222d5a74855b0708b5 9d95d44e6045f242b1ad717ed35f195b +5f1f15ee0a4ecc70e93427b814af9489 cf750bc5baeb59198423a8ba9039fccf b50591f99fa324afaba5e4e1d15829f3 349416524f35254fa72144bc7e08f9a6 @@ -10188,15 +10317,16 @@ 1008cbc1e61ed90dfd79c57cd620c92b 46f6b55d98da9ef1ffec9b1d1a6125bd e4e03fc7d82d2da0126d8445f09f61c2 -7a0cedeb2e3c160aa33e736ebba6059e +03cdf6ba23e31c14abc2bb3a79b7472c fab14e1ece001f18e03308c4abd5d7b6 2bac51be88c59c5ee21511836859e221 0889424a15f7ae4d5147e680d379e3c0 b8357efaf2331cd36af04b80256e3181 5a0de7d0f34fd6f63ae32d20e0a32b9d a1fe9c904ea0bd6d6ea490b977432ffc -d98e38cacdacd9d7c74df773358d6e6f +f424ed5d8ad204b2ccfd39045ab44d3b 3bb797554b6eedd86f67a0c36e9918ec +89b6756ccb0d05b4191b704aafaf5803 9afb68804040e5f7d92d7c308b79f770 d7d2fd96c741b616945e848ade9f9539 7767ff394313f1229871b8ee58c26a99 @@ -10429,7 +10559,7 @@ 52517073ee32fd105af7fccfde018e29 -2fb346f0383dd975a301eca9a423c12a +ca1f6c3cde7a72fc33fa826f580ca872 d41d8cd98f00b204e9800998ecf8427e @@ -10440,17 +10570,17 @@ d41d8cd98f00b204e9800998ecf8427e -1ba9555290fac6190106a623ece3376f -3a9bf22080b7d3c4d3a154affe9d6095 +e4a286e635b8486ef952cd5e7c063272 +daa87eb4e5a5dec7a491a6313f9335c9 bdd80120aa3357c1ac276e8b2ffb81a6 -7cb5f8fa9f76dae5e107abfbc0e35d82 +720ce5f162f6879e42bd51a2e677966c 8326aa93734dd8035a04c12062e68ce4 d41d8cd98f00b204e9800998ecf8427e -a6eb7d29b6a4649096f384711efdf232 +529b00d17c929c47878ebeb1cf313267 099f9b1f56cae48a1b679ed282e3766d @@ -12286,6 +12416,7 @@ 2e0eb0e3d978cfc35b462a199aeded78 9e36c55b53a1b080066d9947a92d2ce3 9e36c55b53a1b080066d9947a92d2ce3 +8f120e35f8b6608fb34e38edf9a2687c a9e38adb81052e1178a2486de8a87c28 7389cc51b77b11b297ccce79048a1c7f 0474bee65715fc6918a92b668178be6c @@ -12350,7 +12481,7 @@ d41d8cd98f00b204e9800998ecf8427e -be5e2576e65fca0640a3e943edb7b4a2 +b7ac1e65cfb2226f71c4c585b87ef36d fd6a54cb5cf80f075d7687ad66dd2cb9 @@ -12368,20 +12499,20 @@ 11689e5722e4204b9d01e5e4483b92ef -cc97395704f8c817d0c92e81b4626429 +ba1182650ae38ce16735a2f783046f85 a20a84fb09238e216ab80d91674426b1 d41d8cd98f00b204e9800998ecf8427e 4b94e9ad89c520b4cc4ab986a1cfb5f8 -348ac1d0cc575dcee2a8bd3fe3da6096 +62867ac6e7f63524ba1bbd195e5504ef 96a92bc03a6ca67f39d363c36031dee7 db802ba04a77501799a7073600802c80 0e4f03114e8298dfc23bb94d0df5d390 5e1aea18f899b4a763a0291dcf1f2b90 -c6798747955c37d2da47a6753d831cf4 +f34e17319f0c0f4b26c44fed42091c3b eed35a94809263558ac663233eaa2f38 @@ -12390,44 +12521,153 @@ d41d8cd98f00b204e9800998ecf8427e -74d19c16439bec3b2eeabde4bb8b6b1d -15faab5d58a32bd40d3f163cfaf951b6 +2174cc25f7e4e713034396fa94be1c93 +8334218ca0707e5c27f28b6897c673e6 a1838ba6f718aeec0172bc6e9d90f4b6 -eb474eb2e1039037169aaacb91443c3e +1d1dd963b8dfb47170403042c4c86431 7770e9e8e3fb4b98bc149059c5bc9633 -7aece8343f1f3c70f617733955c2bce6 +b0fd3b28285996794ea374e10881da03 7b7cde9c324feeed6e94f50e1655ba40 3c77ad60389c5eaaa410ac4a176b3ab6 bdb99f4a1594eaf4923129f21035a88d 966129fc8b4d82883741779cf87ea57a -9c258004b01196601cc918cc09857b0a +a2252f5482460d20d054a1f7d36f4dbe + + +3064b1ab98d9562f84c353c586a36765 +4d843333d740ee7e132b9aba3ca84c79 + + +352318e7e91b1ea9e37097409c9907a4 + + +48e867f61a945a10e84ccc6b297b530d + + +decda684aa41b7e3d4c9cbd82c57bf16 + + +e85c36b02b54ca8575353e41a035ef98 + + +a9edd5331230715886153f1ac2535d10 +a76cbf5801d8a007cdf2b8d82534e922 +a7f9c53e667b559a168e9c669751b9b4 + + +09fd73462e6973de1e5b4d5ea13015f3 + + +c030f0ca220a0377d27db496ed8b5318 + + +4fbee2586602efafa0764319b427939f + + +2acaf08f39c54745ac076d2e907273a8 + + +628ed9cddef9a2221251063053805324 +1fa2e700c74403c7941380638b09d82c +75f02406119800a1604d0b579ef3e61b +4f45d10b5ee1f09cb3fe944a95d6862b +f2a7ed553bd2288e8618c2c270a904df + + +8e3e6864c5fc86e81a2fa2ab2a39c6cf + + +dc14015d4641c2ace184a65f28bbe2a8 + + +eb6922c389258f0bcdee9efd22fb92ce + + +8aa3a2b726bc259ba9d57cb66d1ebeee + + +569784a8bbe92385bb2e32740788ad5c +b31ffb415b0662026fc6b92c0f87953c + + +839af79be6bad3e0880427117aa63e1f + + +ced84ab2bf5bd9391ea24b6bc30e987d + + +1f34e4ab0ec69431bd6661f39e138684 + + +19399c45ec6fb7cd97adf8455d766818 +aee69fb06398d6982ddbd7a4c8462a50 +6802f7660d7b71d1684e3a0ad0472ad8 +5ace6d4ad483742bc7d0679a934ed312 + + +593cc9cb911cbd7433bc198d2e0ea7f5 +93c7eed93f34e0951873519d5c60df2b + + +d6051e8e91e3b9275fb3315c5f10bd4d +e4552f8e8c2cb90661b4d9693e13ba52 + + +a2621ad34bd5b20864c8cf669c3d8a93 +469ce28873bd63023d33e9738b52d92e +b98d1eb79425c7db97a6837942aa64f7 + + +8a6217da856e75f4de79612f74f12e9e + + +660ce536dc1d691a14b4cede3f8c25cc +7abe92af6f134fc8ab7b414ddfa9fdc3 +8a8f3a86b7714c89caddbe4bdc73af8f + + +1bf6a453a4d929acc0c868e4cf6bc083 +144997b030c9e8c99a686d3c8d17ead6 + + +7e9686417f83eab48e7d19d61b6a5f7f + + +060b91056472c88d12426eaddd919c41 +4a313ea27e6c40565d7381b271199751 +a911dbae66b9f63328e9033182ae455a + + +a9d6e5bf4ae47e75eacbee49bce7d945 +15a61b5570ae5be9f79bfd79f6ee6faa +df00595a449a2aa6ebd8e79c8aad37ee 9382e7efb69651b29045f2421d618717 0b959ec99ed9ee63f065c7d40454b9ec -ce4ff827937faf5800380ff9867324b5 +a7387351fcf1eaf404d6f7f41b178ca4 -be24a0530d2ce043c5f6df3e85e309b1 +2c0d16fc13d82dcc90011730fb8c32aa -dc472d539640920357d694745d5c7f9d +c660c836df813f50dfdfe793821cbb94 1ebef0db96238c1bd7372bea81b9761d 4a3747f8978a90ab4ed41be95c2f5695 4f9ad2e49a960637c6f48ee7c228ee0f 0e96616ba6ef78c2874b6c9fb9c10c7a -857ef0aa17df0f205806791dcd65427c -986e2f39e85074de9facf0ea7973f315 +9da09c907dca9a53fd16ba8b261e4f62 +6df215e0c6cc349308be769a25c4ce74 d41d8cd98f00b204e9800998ecf8427e From 1660c1c05bd72a2e9a8187b01ddd1c10e479c2f0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 6 Mar 2015 01:30:46 +0100 Subject: [PATCH 175/429] Fix bug introduced with var_dump --- htdocs/core/db/mssql.class.php | 52 +++++++++++++++++----------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/htdocs/core/db/mssql.class.php b/htdocs/core/db/mssql.class.php index e2d938da710..3523e21bdf0 100644 --- a/htdocs/core/db/mssql.class.php +++ b/htdocs/core/db/mssql.class.php @@ -237,10 +237,10 @@ class DoliDBMssql extends DoliDB $res=mssql_query('select @@TRANCOUNT'); $this->transaction_opened=mssql_result($res, 0, 0); - + if ($this->transaction_opened == 0) { - //return 1; //There is a mess with auto_commit and 'SET IMPLICIT_TRANSACTIONS ON' generate also a mess + //return 1; //There is a mess with auto_commit and 'SET IMPLICIT_TRANSACTIONS ON' generate also a mess $ret=mssql_query("SET IMPLICIT_TRANSACTIONS OFF;BEGIN TRANSACTION;",$this->db); if ($ret) { @@ -264,7 +264,7 @@ class DoliDBMssql extends DoliDB { $res=mssql_query('select @@TRANCOUNT'); $this->transaction_opened=mssql_result($res, 0, 0); - + if ($this->transaction_opened == 1) { //return 1; //There is a mess with auto_commit and 'SET IMPLICIT_TRANSACTION ON' generate also a mess @@ -296,7 +296,7 @@ class DoliDBMssql extends DoliDB { $res=mssql_query('select @@TRANCOUNT'); $this->transaction_opened=mssql_result($res, 0, 0); - + if ($this->transaction_opened == 1) { $ret=mssql_query("ROLLBACK TRANSACTION",$this->db); @@ -322,7 +322,7 @@ class DoliDBMssql extends DoliDB function query($query,$usesavepoint=0,$type='auto') { $query = trim($query); - + if (preg_match('/^--/',$query)) return true; // Conversion syntaxe MySql vers MSDE. @@ -331,7 +331,7 @@ class DoliDBMssql extends DoliDB $query = str_ireplace(", tms = tms", "", $query); $query=preg_replace("/([. ,\t(])(percent|file|public)([. ,=\t)])/","$1[$2]$3",$query); - + if ($type=="auto" || $type='dml') { $query=preg_replace('/AUTO_INCREMENT/i','IDENTITY',$query); @@ -339,7 +339,7 @@ class DoliDBMssql extends DoliDB $query=preg_replace('/float\((.*)\)/','numeric($1)',$query); $query=preg_replace('/([ \t])unsigned|IF NOT EXISTS[ \t]/i','$1',$query); $query=preg_replace('/([ \t])(MEDIUM|TINY|LONG){0,1}TEXT([ \t,])/i',"$1VARCHAR(MAX)$3",$query); - + $matches=array(); $original_query=''; if (preg_match('/ALTER TABLE\h+(\w+?)\h+ADD\h+(?:(UNIQUE)|INDEX)\h+(?:INDEX)?\h*(\w+?)\h*\((.+)\)/is', $query,$matches)) @@ -360,7 +360,7 @@ class DoliDBMssql extends DoliDB if ($query_comp) $query.=" WHERE ".implode(" AND ",$query_comp); } - } + } else { if (preg_match('/ALTER TABLE\h+(\w+?)\h+ADD\h+PRIMARY\h+KEY\h+(\w+?)\h*\((.+)\)/is', $query, $matches)) @@ -369,7 +369,7 @@ class DoliDBMssql extends DoliDB $query="ALTER TABLE [".$matches[1]."] ADD CONSTRAINT [".$matches[2]."] PRIMARY KEY CLUSTERED (".$matches[3].")"; } } - + } if ($type=="auto" || $type='ddl') @@ -384,13 +384,13 @@ class DoliDBMssql extends DoliDB // Supprimer l'instruction MySql $query = str_ireplace(" limit ".$number, "", $query); } - + $itemfound = stripos($query, " week("); if ($itemfound !== false) { // Recreer une requete sans instruction Mysql $positionMySql = stripos($query, " week("); $newquery = substr($query, 0, $positionMySql); - + // Recuperer la date passee en parametre $extractvalue = stristr($query, " week("); $extractvalue = substr($extractvalue, 6); @@ -398,7 +398,7 @@ class DoliDBMssql extends DoliDB // Conserver la fin de la requete $endofquery = substr($extractvalue, $positionMySql); $extractvalue = substr($extractvalue, 0, $positionMySql); - + // Remplacer l'instruction MySql en Sql Server // Inserer la date en parametre et le reste de la requete $query = $newquery." DATEPART(week, ".$extractvalue.$endofquery; @@ -407,11 +407,11 @@ class DoliDBMssql extends DoliDB { //var_dump($query); //var_dump($matches); - if (stripos($query,'llx_c_departements') !== false) var_dump($query); + //if (stripos($query,'llx_c_departements') !== false) var_dump($query); $sql='SET IDENTITY_INSERT ['.trim($matches[1]).'] ON;'; @mssql_query($sql, $this->db); $post_query='SET IDENTITY_INSERT ['.trim($matches[1]).'] OFF;'; - + } } //print ""; @@ -427,7 +427,7 @@ class DoliDBMssql extends DoliDB { $ret = mssql_query($query, $this->db); } - + if (!empty($post_query)) { @mssql_query($post_query, $this->db); @@ -732,13 +732,13 @@ class DoliDBMssql extends DoliDB //TODO: Check if we need to force a charset //$sql.= ' DEFAULT CHARACTER SET '.$charset.' DEFAULT COLLATE '.$collation; $ret=$this->query($sql); - + $this->select_db($database); $sql="CREATE USER [$owner] FOR LOGIN [$owner]"; mssql_query($sql,$this->db); $sql="ALTER ROLE [db_owner] ADD MEMBER [$owner]"; mssql_query($sql,$this->db); - + $sql="ALTER DATABASE [$database] SET ANSI_NULL_DEFAULT ON;"; @mssql_query($sql,$this->db); $sql="ALTER DATABASE [$database] SET ANSI_NULL ON;"; @@ -976,12 +976,12 @@ class DoliDBMssql extends DoliDB } $sql="SELECT name from sys.databases where name='".$dolibarr_main_db_name."'"; $ressql=$this->query($sql); - if (! $ressql) + if (! $ressql) { dol_syslog(get_class($this)."::DDLCreateUser sql=".$sql, LOG_WARNING); return -1; - } - else + } + else { if ($num) { @@ -1106,7 +1106,7 @@ class DoliDBMssql extends DoliDB return array(); } - + /** * Escape a field name according to escape's syntax * @@ -1116,18 +1116,18 @@ class DoliDBMssql extends DoliDB function EscapeFieldName($fieldname) { return "[".$fieldname."]"; } - - + + /** * Get information on field - * + * * @param string $table Table name which contains fields * @param mixed $fields String for one field or array of string for multiple field * @return boolean|multitype:object */ function GetFieldInformation($table,$fields) { $sql="SELECT * from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='".$this->escape($table)."' AND COLUMN_NAME"; - if (is_array($fields)) + if (is_array($fields)) { $where=" IN ('".implode("','",$fields)."')"; } @@ -1144,7 +1144,7 @@ class DoliDBMssql extends DoliDB $result[]=$obj; } } - else + else return false; return $result; From 049174b76f02424cbbd7fa985a09ead6a788c2dd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 6 Mar 2015 01:53:02 +0100 Subject: [PATCH 176/429] Fix bugs reported by https://scrutinizer-ci.com/g/Dolibarr/dolibarr/ --- htdocs/admin/fichinter.php | 2 +- htdocs/admin/security_file.php | 2 +- htdocs/contrat/document.php | 2 +- htdocs/core/class/commonobject.class.php | 24 ++++++++++++------------ 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/htdocs/admin/fichinter.php b/htdocs/admin/fichinter.php index 8965b225cfb..8e06e946dee 100644 --- a/htdocs/admin/fichinter.php +++ b/htdocs/admin/fichinter.php @@ -221,7 +221,7 @@ else if ($action == 'set_FICHINTER_DRAFT_WATERMARK') elseif ($action == 'set_FICHINTER_PRINT_PRODUCTS') { $val = GETPOST('FICHINTER_PRINT_PRODUCTS','alpha'); - $res = dolibarr_set_const($db, "FICHINTER_PRINT_PRODUCTS",($val == 'on'),'bool',0,'',$conf->entity); + $res = dolibarr_set_const($db, "FICHINTER_PRINT_PRODUCTS",($val == 'on' ? 1 : 0),'bool',0,'',$conf->entity); if (! $res > 0) $error++; diff --git a/htdocs/admin/security_file.php b/htdocs/admin/security_file.php index 4c0dd435634..d99db6ed638 100644 --- a/htdocs/admin/security_file.php +++ b/htdocs/admin/security_file.php @@ -208,7 +208,7 @@ $formfile->form_attach_new_file($_SERVER['PHP_SELF'], $langs->trans("FormToTestF // List of document $filearray=dol_dir_list($upload_dir, "files", 0, '', '', 'name', SORT_ASC, 1); -$formfile->list_of_documents($filearray, '', 'admin_temp', ''); +$formfile->list_of_documents($filearray, null, 'admin_temp', ''); llxFooter(); $db->close(); diff --git a/htdocs/contrat/document.php b/htdocs/contrat/document.php index 6c520105c36..49466c7fcb0 100644 --- a/htdocs/contrat/document.php +++ b/htdocs/contrat/document.php @@ -91,7 +91,7 @@ llxHeader(); if ($object->id) { - $head=contract_prepare_head($object, $user); + $head=contract_prepare_head($object); dol_fiche_head($head, 'documents', $langs->trans("Contract"), 0, 'contract'); diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 3c5bb73d93e..8ad8ecd2331 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -888,7 +888,7 @@ abstract class CommonObject if (! $this->table_element) { - dol_print_error('',get_class($this)."::load_previous_next_ref was called on objet with property table_element not defined", LOG_ERR); + dol_print_error('',get_class($this)."::load_previous_next_ref was called on objet with property table_element not defined"); return -1; } @@ -2389,8 +2389,8 @@ abstract class CommonObject return 1; } } - - + + /** * Return incoterms informations * @@ -2409,13 +2409,13 @@ abstract class CommonObject $res = $this->db->fetch_object($result); $out .= $res->code; } - } - + } + $out .= ' - '.$this->location_incoterms; - + return $out; } - + /** * Return incoterms informations for pdf display * @@ -2430,12 +2430,12 @@ abstract class CommonObject $res = $this->db->fetch_object($resql); return 'Incoterm : '.$res->code.' - '.$this->location_incoterms; } - else + else { - return false; + return false; } } - + /** * Define incoterms values of current object * @@ -2457,14 +2457,14 @@ abstract class CommonObject { $this->fk_incoterms = $id_incoterm; $this->location_incoterms = $location; - + $sql = 'SELECT libelle FROM '.MAIN_DB_PREFIX.'c_incoterms WHERE rowid = '.(int) $this->fk_incoterms; $res = $this->db->query($sql); if ($res) { $obj = $this->db->fetch_object($res); $this->libelle_incoterms = $obj->libelle; - } + } return 1; } else From c7c7c393ee9db5dc52eadc5371c07b3f7067b59e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 6 Mar 2015 02:14:59 +0100 Subject: [PATCH 177/429] sql syntax errors --- htdocs/install/mysql/migration/3.7.0-3.8.0.sql | 2 +- .../mysql/tables/llx_askpricesupplierdet_extrafields.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index 3233022d3f9..2a36ef78737 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -316,7 +316,7 @@ CREATE TABLE llx_askpricesupplier_extrafields ( ) ENGINE=innodb; CREATE TABLE llx_askpricesupplierdet_extrafields ( - rowid integer AUTO_INCREMENT PRIMAR KEY, + rowid integer AUTO_INCREMENT PRIMARY KEY, tms timestamp, fk_object integer NOT NULL, import_key varchar(14) DEFAULT NULL diff --git a/htdocs/install/mysql/tables/llx_askpricesupplierdet_extrafields.sql b/htdocs/install/mysql/tables/llx_askpricesupplierdet_extrafields.sql index 6ecbcf83d2c..7bfab6e408c 100644 --- a/htdocs/install/mysql/tables/llx_askpricesupplierdet_extrafields.sql +++ b/htdocs/install/mysql/tables/llx_askpricesupplierdet_extrafields.sql @@ -16,7 +16,7 @@ -- ======================================================================== CREATE TABLE llx_askpricesupplierdet_extrafields ( - rowid integer AUTO_INCREMENT PRIMAR KEY, + rowid integer AUTO_INCREMENT PRIMARY KEY, tms timestamp, fk_object integer NOT NULL, import_key varchar(14) DEFAULT NULL From a0762a5113942f6b9a2f1dc39c915fec1022a78f Mon Sep 17 00:00:00 2001 From: Scrutinizer Auto-Fixer Date: Fri, 6 Mar 2015 01:31:49 +0000 Subject: [PATCH 178/429] Scrutinizer Auto-Fixes This commit consists of patches automatically generated for this project on https://scrutinizer-ci.com --- htdocs/admin/system/filecheck.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/system/filecheck.php b/htdocs/admin/system/filecheck.php index 278aae8ea5b..8eff6821224 100644 --- a/htdocs/admin/system/filecheck.php +++ b/htdocs/admin/system/filecheck.php @@ -108,7 +108,7 @@ $db->close(); /** * Function to get list of updated or modified files * - * @param object $dir SimpleXMLElement of files to test + * @param SimpleXMLElement $dir SimpleXMLElement of files to test * @param string $path Path of file * @return array Array of filenames */ From 27e99793a373a7348ccf1185d051999f618f8782 Mon Sep 17 00:00:00 2001 From: Scrutinizer Auto-Fixer Date: Fri, 6 Mar 2015 02:10:01 +0000 Subject: [PATCH 179/429] Scrutinizer Auto-Fixes This commit consists of patches automatically generated for this project on https://scrutinizer-ci.com --- htdocs/core/class/commondocgenerator.class.php | 4 ++-- htdocs/core/class/cookie.class.php | 2 +- htdocs/core/class/html.form.class.php | 12 ++++++------ htdocs/core/class/html.formbank.class.php | 2 +- htdocs/core/class/html.formcron.class.php | 4 ++-- htdocs/core/class/html.formmailing.class.php | 2 +- htdocs/core/class/html.formother.class.php | 8 ++++---- htdocs/core/class/menu.class.php | 4 ++-- htdocs/core/class/mobiledetect.class.php | 8 ++++---- htdocs/core/class/openid.class.php | 14 +++++++------- htdocs/core/class/translate.class.php | 8 ++++---- htdocs/core/datepicker.php | 2 +- htdocs/core/db/mysql.class.php | 4 ++-- htdocs/core/db/mysqli.class.php | 6 +++--- htdocs/core/db/pgsql.class.php | 10 +++++----- htdocs/core/lib/json.lib.php | 2 +- .../askpricesupplier/modules_askpricesupplier.php | 4 ++-- htdocs/core/modules/commande/modules_commande.php | 4 ++-- htdocs/core/modules/contract/modules_contract.php | 4 ++-- htdocs/core/modules/dons/modules_don.php | 2 +- .../core/modules/expedition/modules_expedition.php | 4 ++-- .../expensereport/modules_expensereport.php | 4 ++-- htdocs/core/modules/export/modules_export.php | 2 +- htdocs/core/modules/facture/modules_facture.php | 4 ++-- htdocs/expedition/class/expeditionbatch.class.php | 4 ++-- 25 files changed, 62 insertions(+), 62 deletions(-) diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php index b7f8e09677f..bf11c4fea13 100644 --- a/htdocs/core/class/commondocgenerator.class.php +++ b/htdocs/core/class/commondocgenerator.class.php @@ -206,7 +206,7 @@ abstract class CommonDocGenerator /** * Define array with couple subtitution key => subtitution value * - * @param Object $object contact + * @param Contact $object contact * @param Translate $outputlangs object for output * @param array_key $array_key Name of the key for return array * @return array of substitution key->code @@ -442,7 +442,7 @@ abstract class CommonDocGenerator /** * Define array with couple substitution key => substitution value * - * @param Object $object Main object to use as data source + * @param Expedition $object Main object to use as data source * @param Translate $outputlangs Lang object to use for output * @param array_key $array_key Name of the key for return array * @return array Array of substitution diff --git a/htdocs/core/class/cookie.class.php b/htdocs/core/class/cookie.class.php index bcca9fcfa73..150d52fae62 100644 --- a/htdocs/core/class/cookie.class.php +++ b/htdocs/core/class/cookie.class.php @@ -109,7 +109,7 @@ class DolCookie * * @param string $cookie Cookie name * @param string $value Cookie value - * @param string $expire Expiration + * @param integer $expire Expiration * @param string $path Path of cookie * @param string $domain Domain name * @param int $secure 0 or 1 diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index c5cdbc3f9e7..31fb095e3c8 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -480,7 +480,7 @@ class Form * @param string $selected Id or Code or Label of preselected country * @param string $htmlname Name of html select object * @param string $htmloption Options html on select object - * @param string $maxlength Max length for labels (0=no limit) + * @param integer $maxlength Max length for labels (0=no limit) * @return string HTML string with select */ function select_country($selected='',$htmlname='country_id',$htmloption='',$maxlength=0) @@ -658,7 +658,7 @@ class Form * @param string $htmlname Name of field in html form * @param int $showempty Add an empty field * @param int $hidetext Do not show label 'Type' before combo box (used only if there is at least 2 choices to select) - * @param string $forceall 1=Force to show products and services in combo list, whatever are activated modules, 0=No force, -1=Force none (and set hidden field to 'service') + * @param integer $forceall 1=Force to show products and services in combo list, whatever are activated modules, 0=No force, -1=Force none (and set hidden field to 'service') * @return void */ function select_type_of_lines($selected='',$htmlname='type',$showempty=0,$hidetext=0,$forceall=0) @@ -1072,9 +1072,9 @@ class Form * @param int $showempty 0=no empty value, 1=add an empty value * @param string $exclude List of contacts id to exclude * @param string $limitto Disable answers that are not id in this array list - * @param string $showfunction Add function into label + * @param integer $showfunction Add function into label * @param string $moreclass Add more class to class style - * @param string $showsoc Add company into label + * @param integer $showsoc Add company into label * @param int $forcecombo Force to use combo box * @param array $events Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled'))) * @param bool $options_only Return options only (for ajax treatment) @@ -1095,10 +1095,10 @@ class Form * @param int $showempty 0=no empty value, 1=add an empty value, 2=add line 'Internal' (used by user edit) * @param string $exclude List of contacts id to exclude * @param string $limitto Disable answers that are not id in this array list - * @param string $showfunction Add function into label + * @param integer $showfunction Add function into label * @param string $moreclass Add more class to class style * @param bool $options_only Return options only (for ajax treatment) - * @param string $showsoc Add company into label + * @param integer $showsoc Add company into label * @param int $forcecombo Force to use combo box * @param array $events Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled'))) * @return int <0 if KO, Nb of contact in list if OK diff --git a/htdocs/core/class/html.formbank.class.php b/htdocs/core/class/html.formbank.class.php index 12bff860a26..6335e25dd72 100644 --- a/htdocs/core/class/html.formbank.class.php +++ b/htdocs/core/class/html.formbank.class.php @@ -45,7 +45,7 @@ class FormBank /** * Retourne la liste des types de comptes financiers * - * @param string $selected Type pre-selectionne + * @param integer $selected Type pre-selectionne * @param string $htmlname Nom champ formulaire * @return void */ diff --git a/htdocs/core/class/html.formcron.class.php b/htdocs/core/class/html.formcron.class.php index 4de88a7bfc9..86c80413855 100644 --- a/htdocs/core/class/html.formcron.class.php +++ b/htdocs/core/class/html.formcron.class.php @@ -47,8 +47,8 @@ class FormCron extends Form * Display On Off selector * * @param string $htmlname Html control name - * @param string $selected selected value - * @param string $readonly Select is read only or not + * @param integer $selected selected value + * @param integer $readonly Select is read only or not * @return string HTML select field */ function select_typejob($htmlname,$selected=0,$readonly=0) diff --git a/htdocs/core/class/html.formmailing.class.php b/htdocs/core/class/html.formmailing.class.php index 98a76c84686..93fdac553a3 100644 --- a/htdocs/core/class/html.formmailing.class.php +++ b/htdocs/core/class/html.formmailing.class.php @@ -48,7 +48,7 @@ class FormMailing extends Form * * @param string $selectedid the selected id * @param string $htmlname name of controm - * @param number $show_empty show empty option + * @param integer $show_empty show empty option * @return string HTML select */ public function selectDestinariesStatus($selectedid='',$htmlname='dest_status', $show_empty=0) { diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index d418a32fd77..4ea60dbf2c1 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -157,7 +157,7 @@ class FormOther * * @param string $selected Preselected ecotaxes * @param string $htmlname Name of combo list - * @return void + * @return integer */ function select_ecotaxes($selected='',$htmlname='ecotaxe_id') { @@ -268,7 +268,7 @@ class FormOther /** * Return a HTML select list to select a percent * - * @param string $selected pourcentage pre-selectionne + * @param integer $selected pourcentage pre-selectionne * @param string $htmlname nom de la liste deroulante * @param int $disabled Disabled or not * @param int $increment increment value @@ -303,7 +303,7 @@ class FormOther * Return select list for categories (to use in form search selectors) * * @param int $type Type of categories (0=product, 1=suppliers, 2=customers, 3=members) - * @param string $selected Preselected value + * @param integer $selected Preselected value * @param string $htmlname Name of combo list * @param int $nocateg Show also an entry "Not categorized" * @return string Html combo list code @@ -834,7 +834,7 @@ class FormOther * @param int $offset Offset * @param int $invert Invert * @param string $option Option - * @return void + * @return string */ function selectyear($selected='',$htmlname='yearid',$useempty=0, $min_year=10, $max_year=5, $offset=0, $invert=0, $option='') { diff --git a/htdocs/core/class/menu.class.php b/htdocs/core/class/menu.class.php index 411158dea84..dff357d8f91 100644 --- a/htdocs/core/class/menu.class.php +++ b/htdocs/core/class/menu.class.php @@ -53,7 +53,7 @@ class Menu * * @param string $url Url to follow on click * @param string $titre Label of menu to add - * @param string $level Level of menu to add + * @param integer $level Level of menu to add * @param int $enabled Menu active or not (0=Not active, 1=Active, 2=Active but grey) * @param string $target Target lien * @param string $mainmenu Main menu ('home', 'companies', 'products', ...) @@ -71,7 +71,7 @@ class Menu * @param int $idafter Array key after which inserting new entry * @param string $url Url to follow on click * @param string $titre Label of menu to add - * @param string $level Level of menu to add + * @param integer $level Level of menu to add * @param int $enabled Menu active or not * @param string $target Target lien * @param string $mainmenu Main menu ('home', 'companies', 'products', ...) diff --git a/htdocs/core/class/mobiledetect.class.php b/htdocs/core/class/mobiledetect.class.php index 297058698aa..b04e0e98c91 100644 --- a/htdocs/core/class/mobiledetect.class.php +++ b/htdocs/core/class/mobiledetect.class.php @@ -687,7 +687,7 @@ class MobileDetect /** * Retrieve the User-Agent. * - * @return string|null The user agent if it's set. + * @return string The user agent if it's set. */ public function getUserAgent() { @@ -879,7 +879,7 @@ class MobileDetect * * @param string $name Name * @param array $arguments Arguments - * @return mixed + * @return null|boolean * * @throws BadMethodCallException when the method doesn't exist and doesn't start with 'is' * @method boolean is[...]() @@ -926,7 +926,7 @@ class MobileDetect * * @param string $key Key * @param string $userAgent deprecated - * @return mixed + * @return null|boolean */ protected function matchUAAgainstKey($key, $userAgent = null) { @@ -1009,7 +1009,7 @@ class MobileDetect * @param string $key key * @param string $userAgent deprecated * @param string $httpHeaders deprecated - * @return bool|int|null + * @return null|boolean * * @todo: The httpHeaders part is not yet used. */ diff --git a/htdocs/core/class/openid.class.php b/htdocs/core/class/openid.class.php index a5e01998ecd..d46481a0c60 100644 --- a/htdocs/core/class/openid.class.php +++ b/htdocs/core/class/openid.class.php @@ -150,7 +150,7 @@ class SimpleOpenID /** * GetIdentity * - * @return void + * @return string */ function GetIdentity() { // Get Identity @@ -187,7 +187,7 @@ class SimpleOpenID /** * IsError * - * @return void + * @return boolean */ function IsError() { @@ -225,7 +225,7 @@ class SimpleOpenID * OpenID_Standarize * * @param string $openid_identity Server - * @return void + * @return string */ function OpenID_Standarize($openid_identity = null) { @@ -251,7 +251,7 @@ class SimpleOpenID * array2url * * @param array $arr An array - * @return boolean|string false if KO, string of url if OK + * @return false|string false if KO, string of url if OK */ function array2url($arr) { // converts associated array to URL Query String @@ -303,7 +303,7 @@ class SimpleOpenID * @param string $url URL * @param string $method Method * @param string $params Params - * @return boolean|unknown + * @return string */ function CURL_Request($url, $method="GET", $params = "") { // Remember, SSL MUST BE SUPPORTED @@ -384,7 +384,7 @@ class SimpleOpenID /** * GetRedirectURL * - * @return void + * @return string */ function GetRedirectURL() { @@ -428,7 +428,7 @@ class SimpleOpenID /** * ValidateWithServer * - * @return void + * @return boolean */ function ValidateWithServer() { diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php index 7347b065a79..0e55da2769a 100644 --- a/htdocs/core/class/translate.class.php +++ b/htdocs/core/class/translate.class.php @@ -153,7 +153,7 @@ class Translate * If $domain is "file@module" instead of "file" then we look for module lang file * in htdocs/custom/modules/mymodule/langs/code_CODE/file.lang * then in htdocs/module/langs/code_CODE/file.lang instead of htdocs/langs/code_CODE/file.lang - * @param string $alt 0 (try xx_ZZ then 1), 1 (try xx_XX then 2), 2 (try en_US) + * @param integer $alt 0 (try xx_ZZ then 1), 1 (try xx_XX then 2), 2 (try en_US) * @param int $stopafterdirection Stop when the DIRECTION tag is found (optimize speed) * @param int $forcelangdir To force a different lang directory * @return int <0 if KO, 0 if already loaded or loading not required, >0 if OK @@ -548,7 +548,7 @@ class Translate * Return list of all available languages * * @param string $langdir Directory to scan - * @param string $maxlength Max length for each value in combo box (will be truncated) + * @param integer $maxlength Max length for each value in combo box (will be truncated) * @param int $usecode Show code instead of country name for language variant * @return array List of languages */ @@ -583,7 +583,7 @@ class Translate * Return if a filename $filename exists for current language (or alternate language) * * @param string $filename Language filename to search - * @param string $searchalt Search also alernate language file + * @param integer $searchalt Search also alernate language file * @return boolean true if exists and readable */ function file_exists($filename,$searchalt=0) @@ -720,7 +720,7 @@ class Translate * Return a currency code into its symbol * * @param string $currency_code Currency code - * @param string $forceloadall 1=Force to load all currencies into cache. We know we need to use all of them. By default read and cache only required currency. + * @param integer $forceloadall 1=Force to load all currencies into cache. We know we need to use all of them. By default read and cache only required currency. * @return string Currency symbol encoded into UTF8 */ function getCurrencySymbol($currency_code, $forceloadall=0) diff --git a/htdocs/core/datepicker.php b/htdocs/core/datepicker.php index c1918ed6247..eae723946f6 100644 --- a/htdocs/core/datepicker.php +++ b/htdocs/core/datepicker.php @@ -122,7 +122,7 @@ print ''."\n"; * Convert date to timestamp * * @param string $mysqldate Date YYYMMDD - * @return timestamp Timestamp + * @return integer Timestamp */ function xyzToUnixTimestamp($mysqldate) { diff --git a/htdocs/core/db/mysql.class.php b/htdocs/core/db/mysql.class.php index bd3e77f37d5..64efc837bcd 100644 --- a/htdocs/core/db/mysql.class.php +++ b/htdocs/core/db/mysql.class.php @@ -183,7 +183,7 @@ class DoliDBMysql extends DoliDB * @param string $login login * @param string $passwd password * @param string $name name of database (not used for mysql, used for pgsql) - * @param string $port Port of database server + * @param integer $port Port of database server * @return resource Database access handler * @see close */ @@ -314,7 +314,7 @@ class DoliDBMysql extends DoliDB /** * Return datas as an array * - * @param Resultset $resultset Resultset of request + * @param resource $resultset Resultset of request * @return array Array */ function fetch_row($resultset) diff --git a/htdocs/core/db/mysqli.class.php b/htdocs/core/db/mysqli.class.php index cd692db677c..1126f6c8a57 100644 --- a/htdocs/core/db/mysqli.class.php +++ b/htdocs/core/db/mysqli.class.php @@ -186,7 +186,7 @@ class DoliDBMysqli extends DoliDB * @param string $login login * @param string $passwd password * @param string $name name of database (not used for mysql, used for pgsql) - * @param string $port Port of database server + * @param integer $port Port of database server * @return resource Database access handler * @see close */ @@ -317,7 +317,7 @@ class DoliDBMysqli extends DoliDB /** * Return datas as an array * - * @param Resultset $resultset Resultset of request + * @param resource $resultset Resultset of request * @return array Array */ function fetch_row($resultset) @@ -716,7 +716,7 @@ class DoliDBMysqli extends DoliDB * * @param string $table Name of table * @param string $field Optionnel : Name of field if we want description of field - * @return resultset Resultset x (x->Field, x->Type, ...) + * @return resource Resultset x (x->Field, x->Type, ...) */ function DDLDescTable($table,$field="") { diff --git a/htdocs/core/db/pgsql.class.php b/htdocs/core/db/pgsql.class.php index 94a2e5fa975..285bdc2cdef 100644 --- a/htdocs/core/db/pgsql.class.php +++ b/htdocs/core/db/pgsql.class.php @@ -368,7 +368,7 @@ class DoliDBPgsql extends DoliDB * @param string $login Login * @param string $passwd Password * @param string $name Name of database (not used for mysql, used for pgsql) - * @param string $port Port of database server + * @param integer $port Port of database server * @return resource Database access handler * @see close */ @@ -546,7 +546,7 @@ class DoliDBPgsql extends DoliDB /** * Return datas as an array * - * @param Resultset $resultset Resultset of request + * @param resource $resultset Resultset of request * @return array Array */ function fetch_array($resultset) @@ -559,7 +559,7 @@ class DoliDBPgsql extends DoliDB /** * Return datas as an array * - * @param Resultset $resultset Resultset of request + * @param resource $resultset Resultset of request * @return array Array */ function fetch_row($resultset) @@ -771,7 +771,7 @@ class DoliDBPgsql extends DoliDB * * @param string $fieldorvalue Field name or value to encrypt * @param int $withQuotes Return string with quotes - * @return return XXX(field) or XXX('value') or field or 'value' + * @return string XXX(field) or XXX('value') or field or 'value' */ function encrypt($fieldorvalue, $withQuotes=0) { @@ -1010,7 +1010,7 @@ class DoliDBPgsql extends DoliDB * * @param string $table Name of table * @param string $field Optionnel : Name of field if we want description of field - * @return resultset Resultset x (x->attname) + * @return resource Resultset x (x->attname) */ function DDLDescTable($table,$field="") { diff --git a/htdocs/core/lib/json.lib.php b/htdocs/core/lib/json.lib.php index 0d92233e62a..121e719bb6f 100644 --- a/htdocs/core/lib/json.lib.php +++ b/htdocs/core/lib/json.lib.php @@ -269,7 +269,7 @@ function dol_json_decode($json, $assoc=false) /** * Return text according to type * - * @param mixed $val Value to decode + * @param string $val Value to decode * @return string Formated value */ function _unval($val) diff --git a/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php b/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php index 1b0095308c8..4014452d8c2 100644 --- a/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php +++ b/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php @@ -43,7 +43,7 @@ abstract class ModelePDFAskPriceSupplier extends CommonDocGenerator * Return list of active generation modules * * @param DoliDB $db Database handler - * @param string $maxfilenamelength Max length of value to show + * @param integer $maxfilenamelength Max length of value to show * @return array List of templates */ static function liste_modeles($db,$maxfilenamelength=0) @@ -149,7 +149,7 @@ abstract class ModeleNumRefAskPriceSupplier * Create a document onto disk according to template module. * * @param DoliDB $db Database handler - * @param object $object Object askpricesupplier + * @param AskPriceSupplier $object Object askpricesupplier * @param string $modele Force model to use ('' to not force) * @param Translate $outputlangs Object langs to use for output * @param int $hidedetails Hide details of lines diff --git a/htdocs/core/modules/commande/modules_commande.php b/htdocs/core/modules/commande/modules_commande.php index 2caf1f905e6..9253f4dc650 100644 --- a/htdocs/core/modules/commande/modules_commande.php +++ b/htdocs/core/modules/commande/modules_commande.php @@ -45,7 +45,7 @@ abstract class ModelePDFCommandes extends CommonDocGenerator * Return list of active generation modules * * @param DoliDB $db Database handler - * @param string $maxfilenamelength Max length of value to show + * @param integer $maxfilenamelength Max length of value to show * @return array List of templates */ static function liste_modeles($db,$maxfilenamelength=0) @@ -153,7 +153,7 @@ abstract class ModeleNumRefCommandes * Create a document onto disk accordign to template module. * * @param DoliDB $db Database handler - * @param Object $object Object order + * @param Commande $object Object order * @param string $modele Force le modele a utiliser ('' to not force) * @param Translate $outputlangs objet lang a utiliser pour traduction * @param int $hidedetails Hide details of lines diff --git a/htdocs/core/modules/contract/modules_contract.php b/htdocs/core/modules/contract/modules_contract.php index 9ffd5d93881..d4311bf3028 100644 --- a/htdocs/core/modules/contract/modules_contract.php +++ b/htdocs/core/modules/contract/modules_contract.php @@ -44,7 +44,7 @@ abstract class ModelePDFContract extends CommonDocGenerator * Return list of active generation modules * * @param DoliDB $db Database handler - * @param string $maxfilenamelength Max length of value to show + * @param integer $maxfilenamelength Max length of value to show * @return array List of templates */ static function liste_modeles($db,$maxfilenamelength=0) @@ -148,7 +148,7 @@ class ModelNumRefContracts * Create a contract document on disk using template defined into CONTRACT_ADDON_PDF * * @param DoliDB $db objet base de donnee - * @param Object $object Object contract + * @param Contrat $object Object contract * @param string $modele force le modele a utiliser ('' par defaut) * @param Translate $outputlangs objet lang a utiliser pour traduction * @param int $hidedetails Hide details of lines diff --git a/htdocs/core/modules/dons/modules_don.php b/htdocs/core/modules/dons/modules_don.php index d676d2c6f70..8c894e7fa1f 100644 --- a/htdocs/core/modules/dons/modules_don.php +++ b/htdocs/core/modules/dons/modules_don.php @@ -40,7 +40,7 @@ abstract class ModeleDon extends CommonDocGenerator * Return list of active generation modules * * @param DoliDB $db Database handler - * @param string $maxfilenamelength Max length of value to show + * @param integer $maxfilenamelength Max length of value to show * @return array List of templates */ static function liste_modeles($db,$maxfilenamelength=0) diff --git a/htdocs/core/modules/expedition/modules_expedition.php b/htdocs/core/modules/expedition/modules_expedition.php index 43292ae95c4..d9205503e11 100644 --- a/htdocs/core/modules/expedition/modules_expedition.php +++ b/htdocs/core/modules/expedition/modules_expedition.php @@ -43,7 +43,7 @@ abstract class ModelePdfExpedition extends CommonDocGenerator * Return list of active generation modules * * @param DoliDB $db Database handler - * @param string $maxfilenamelength Max length of value to show + * @param integer $maxfilenamelength Max length of value to show * @return array List of templates */ static function liste_modeles($db,$maxfilenamelength=0) @@ -146,7 +146,7 @@ abstract class ModelNumRefExpedition * Cree un bon d'expedition sur disque * * @param DoliDB $db Objet base de donnee - * @param Object $object Object expedition + * @param Expedition $object Object expedition * @param string $modele Force le modele a utiliser ('' to not force) * @param Translate $outputlangs Objet lang a utiliser pour traduction * @return int <=0 if KO, >0 if OK diff --git a/htdocs/core/modules/expensereport/modules_expensereport.php b/htdocs/core/modules/expensereport/modules_expensereport.php index 3fa32af0fdf..5a6dcf29a34 100755 --- a/htdocs/core/modules/expensereport/modules_expensereport.php +++ b/htdocs/core/modules/expensereport/modules_expensereport.php @@ -30,7 +30,7 @@ class ModeleExpenseReport extends CommonDocGenerator * Return list of active generation modules * * @param DoliDB $db Database handler - * @param string $maxfilenamelength Max length of value to show + * @param integer $maxfilenamelength Max length of value to show * @return array List of templates */ static function liste_modeles($db,$maxfilenamelength=0) @@ -52,7 +52,7 @@ class ModeleExpenseReport extends CommonDocGenerator * expensereport_pdf_create * * @param DoliDB $db Database handler - * @param Object $object Object order + * @param ExpenseReport $object Object order * @param string $message Message * @param string $modele Force le modele a utiliser ('' to not force) * @param Translate $outputlangs objet lang a utiliser pour traduction diff --git a/htdocs/core/modules/export/modules_export.php b/htdocs/core/modules/export/modules_export.php index 62599016b3d..113f35299ca 100644 --- a/htdocs/core/modules/export/modules_export.php +++ b/htdocs/core/modules/export/modules_export.php @@ -43,7 +43,7 @@ class ModeleExports extends CommonDocGenerator // This class can't be abstrac * Load into memory list of available export format * * @param DoliDB $db Database handler - * @param string $maxfilenamelength Max length of value to show + * @param integer $maxfilenamelength Max length of value to show * @return array List of templates (same content than array this->driverlabel) */ function liste_modeles($db,$maxfilenamelength=0) diff --git a/htdocs/core/modules/facture/modules_facture.php b/htdocs/core/modules/facture/modules_facture.php index bca513e3fd6..2bf03edf557 100644 --- a/htdocs/core/modules/facture/modules_facture.php +++ b/htdocs/core/modules/facture/modules_facture.php @@ -43,7 +43,7 @@ abstract class ModelePDFFactures extends CommonDocGenerator * Return list of active generation modules * * @param DoliDB $db Database handler - * @param string $maxfilenamelength Max length of value to show + * @param integer $maxfilenamelength Max length of value to show * @return array List of templates */ static function liste_modeles($db,$maxfilenamelength=0) @@ -148,7 +148,7 @@ abstract class ModeleNumRefFactures * Create a document onto disk according to template module. * * @param DoliDB $db Database handler - * @param Object $object Object invoice + * @param Facture $object Object invoice * @param string $modele Force template to use ('' to not force) * @param Translate $outputlangs objet lang a utiliser pour traduction * @param int $hidedetails Hide details of lines diff --git a/htdocs/expedition/class/expeditionbatch.class.php b/htdocs/expedition/class/expeditionbatch.class.php index cc5726ed0c8..38fe5078d9e 100644 --- a/htdocs/expedition/class/expeditionbatch.class.php +++ b/htdocs/expedition/class/expeditionbatch.class.php @@ -147,7 +147,7 @@ class ExpeditionLineBatch extends CommonObject /** * Delete batch record attach to a shipment * - * @param object $db Database object + * @param DoliDB $db Database object * @param int $id_expedition rowid of shipment * @return int -1 if KO, 1 if OK */ @@ -172,7 +172,7 @@ class ExpeditionLineBatch extends CommonObject /** * Retrieve all batch number details link to a shipment line * - * @param object $db Database object + * @param DoliDB $db Database object * @param int $id_line_expdet id of shipment line * @return variant -1 if KO, array of ExpeditionLineBatch if OK */ From 0d801be6a1563f1c6b39683ab901b2ea69dce3b0 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Fri, 6 Mar 2015 06:12:47 +0100 Subject: [PATCH 180/429] NEW: (Dev) DolGraph allow extended class to override $_stringtoshow --- htdocs/core/class/dolgraph.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/dolgraph.class.php b/htdocs/core/class/dolgraph.class.php index c400dc151d3..5451d7457ce 100644 --- a/htdocs/core/class/dolgraph.class.php +++ b/htdocs/core/class/dolgraph.class.php @@ -65,7 +65,7 @@ class DolGraph var $bgcolorgrid=array(255,255,255); // array(R,G,B) var $datacolor; // array(array(R,G,B),...) - private $_stringtoshow; // To store string to output graph into HTML page + protected $_stringtoshow; // To store string to output graph into HTML page /** From 9a7346f8895e54ef6e4727c87837b4726522b2bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garc=C3=ADa?= Date: Fri, 6 Mar 2015 12:09:23 +0100 Subject: [PATCH 181/429] Update ChangeLog --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index e861f04ae86..0664bda856d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -23,6 +23,7 @@ English Dolibarr ChangeLog - Fix: [ bug #1827 ] Tax reports gives incorrect amounts when using external modules that create lines with special codes - Fix: [ bug #1822 ] SQL error in clientfourn.php report with PostgreSQL - Fix: [ bug #1832 ] SQL error when adding a product with no price defined to an object +- Fix: [ bug #1833 ] user permissions in contact/note.php not working - Fix: [ bug #1826 ] Supplier payment types are not translated into fourn/facture/paiement.php - Fix: [ bug #1830 ] Salaries payment only allows checking accounts - Fix: [ bug #1825 ] External agenda: hide/show checkbox doesn't work From 77dd07c846e335869800b6e1e0f01ed6c7086e3c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 6 Mar 2015 13:12:33 +0100 Subject: [PATCH 182/429] Fix thumbs generation --- htdocs/categories/class/categorie.class.php | 16 +++++++++----- htdocs/product/class/product.class.php | 24 +++++++++++++-------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index f5828ecdea7..b9876bb8382 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -1330,17 +1330,23 @@ class Categorie extends CommonObject * Build thumb * * @param string $file Chemin du fichier d'origine - * @param int $maxWidth Largeur maximum que dois faire la miniature (160 par defaut) - * @param int $maxHeight Hauteur maximum que dois faire la miniature (120 par defaut) * @return void */ - function add_thumb($file, $maxWidth = 160, $maxHeight = 120) + function add_thumb($file) { - require_once DOL_DOCUMENT_ROOT .'/core/lib/images.lib.php'; + global $maxwidthsmall, $maxheightsmall, $maxwidthmini, $maxheightmini, $quality; + + require_once DOL_DOCUMENT_ROOT .'/core/lib/images.lib.php'; // This define also $maxwidthsmall, $quality, ... if (file_exists($file)) { - vignette($file,$maxWidth,$maxHeight); + // Create small thumbs for company (Ratio is near 16/9) + // Used on logon for example + $imgThumbSmall = vignette($file, $maxwidthsmall, $maxheightsmall, '_small', $quality); + + // Create mini thumbs for company (Ratio is near 16/9) + // Used on menu or for setup page for example + $imgThumbMini = vignette($file, $maxwidthmini, $maxheightmini, '_mini', $quality); } } diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index e26f9102544..653925701ad 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -3100,11 +3100,9 @@ class Product extends CommonObject * * @param string $sdir Target directory * @param string $file Array of file info of file to upload: array('name'=>..., 'tmp_name'=>...) - * @param int $maxWidth Largeur maximum que dois faire la miniature (160 by defaut) - * @param int $maxHeight Hauteur maximum que dois faire la miniature (120 by defaut) * @return int <0 if KO, >0 if OK */ - function add_photo($sdir, $file, $maxWidth = 160, $maxHeight = 120) + function add_photo($sdir, $file) { global $conf; @@ -3114,10 +3112,12 @@ class Product extends CommonObject $dir = $sdir; if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) $dir .= '/'. get_exdir($this->id,2) . $this->id ."/photos"; + else $dir .= '/'.dol_sanitizeFileName($this->ref); dol_mkdir($dir); $dir_osencoded=$dir; + if (is_dir($dir_osencoded)) { $originImage = $dir . '/' . $file['name']; @@ -3128,7 +3128,7 @@ class Product extends CommonObject if (file_exists(dol_osencode($originImage))) { // Cree fichier en taille vignette - $this->add_thumb($originImage,$maxWidth,$maxHeight); + $this->add_thumb($originImage); } } @@ -3140,18 +3140,24 @@ class Product extends CommonObject * Build thumb * * @param string $file Chemin du fichier d'origine - * @param int $maxWidth Largeur maximum que dois faire la miniature (160 par defaut) - * @param int $maxHeight Hauteur maximum que dois faire la miniature (120 par defaut) * @return void */ - function add_thumb($file, $maxWidth = 160, $maxHeight = 120) + function add_thumb($file) { - require_once DOL_DOCUMENT_ROOT .'/core/lib/images.lib.php'; + global $maxwidthsmall, $maxheightsmall, $maxwidthmini, $maxheightmini, $quality; + + require_once DOL_DOCUMENT_ROOT .'/core/lib/images.lib.php'; // This define also $maxwidthsmall, $quality, ... $file_osencoded=dol_osencode($file); if (file_exists($file_osencoded)) { - vignette($file,$maxWidth,$maxHeight); + // Create small thumbs for company (Ratio is near 16/9) + // Used on logon for example + $imgThumbSmall = vignette($file, $maxwidthsmall, $maxheightsmall, '_small', $quality); + + // Create mini thumbs for company (Ratio is near 16/9) + // Used on menu or for setup page for example + $imgThumbMini = vignette($file, $maxwidthmini, $maxheightmini, '_mini', $quality); } } From a169b3348ee2d5249baccc0fadc8adeffd747c75 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 6 Mar 2015 14:36:22 +0100 Subject: [PATCH 183/429] Fix show alays date fields for contract module. Fix select of product were lost. --- htdocs/commande/card.php | 32 +++++++++++------------ htdocs/core/tpl/objectline_create.tpl.php | 22 +++++++--------- htdocs/fourn/commande/card.php | 6 ++--- htdocs/product/class/product.class.php | 4 +-- 4 files changed, 31 insertions(+), 33 deletions(-) diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 12150f9a61e..27c333eec21 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -207,13 +207,13 @@ if (empty($reshook)) if ($datecommande == '') { setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentities('Date')), 'errors'); $action = 'create'; - $error ++; + $error++; } if ($socid < 1) { setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Customer")), 'errors'); $action = 'create'; - $error ++; + $error++; } if (! $error) { @@ -334,7 +334,7 @@ if (empty($reshook)) $result = $object->addline($desc, $lines [$i]->subprice, $lines [$i]->qty, $lines [$i]->tva_tx, $lines [$i]->localtax1_tx, $lines [$i]->localtax2_tx, $lines [$i]->fk_product, $lines [$i]->remise_percent, $lines [$i]->info_bits, $lines [$i]->fk_remise_except, 'HT', 0, $date_start, $date_end, $product_type, $lines [$i]->rang, $lines [$i]->special_code, $fk_parent_line, $lines [$i]->fk_fournprice, $lines [$i]->pa_ht, $label, $array_option); if ($result < 0) { - $error ++; + $error++; break; } @@ -349,14 +349,14 @@ if (empty($reshook)) $reshook = $hookmanager->executeHooks('createFrom', $parameters, $object, $action); // Note that $action and $object may have been // modified by hook if ($reshook < 0) - $error ++; + $error++; } else { setEventMessage($srcobject->error, 'errors'); - $error ++; + $error++; } } else { setEventMessage($object->error, 'errors'); - $error ++; + $error++; } } else { // Required extrafield left blank, error message already defined by setOptionalsFromPost() @@ -390,7 +390,7 @@ if (empty($reshook)) $result = $object->add_contact(GETPOST('contactid'), 'CUSTOMER', 'external'); if ($result < 0) { setEventMessage($langs->trans("ErrorFailedToAddContact"), 'errors'); - $error ++; + $error++; } } @@ -554,24 +554,24 @@ if (empty($reshook)) if (empty($idprod) && ($price_ht < 0) && ($qty < 0)) { setEventMessage($langs->trans('ErrorBothFieldCantBeNegative', $langs->transnoentitiesnoconv('UnitPriceHT'), $langs->transnoentitiesnoconv('Qty')), 'errors'); - $error ++; + $error++; } if (GETPOST('prod_entry_mode') == 'free' && empty($idprod) && GETPOST('type') < 0) { setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), 'errors'); - $error ++; + $error++; } if (GETPOST('prod_entry_mode') == 'free' && empty($idprod) && (! ($price_ht >= 0) || $price_ht == '')) // Unit price can be 0 but not '' { setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UnitPriceHT")), 'errors'); - $error ++; + $error++; } if ($qty == '') { setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Qty')), 'errors'); - $error ++; + $error++; } if (GETPOST('prod_entry_mode') == 'free' && empty($idprod) && empty($product_desc)) { setEventMessage($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Description')), 'errors'); - $error ++; + $error++; } if (! $error && ($qty >= 0) && (! empty($product_desc) || ! empty($idprod))) { @@ -826,7 +826,7 @@ if (empty($reshook)) if ($price_min && (price2num($pu_ht) * (1 - price2num(GETPOST('remise_percent')) / 100) < price2num($price_min))) { setEventMessage($langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)), 'errors'); - $error ++; + $error++; } } else { $type = GETPOST('type'); @@ -835,7 +835,7 @@ if (empty($reshook)) // Check parameters if (GETPOST('type') < 0) { setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type")), 'errors'); - $error ++; + $error++; } } @@ -1137,10 +1137,10 @@ if (empty($reshook)) if (empty($reshook)) { $result = $object->insertExtraFields(); if ($result < 0) { - $error ++; + $error++; } } else if ($reshook < 0) - $error ++; + $error++; } if ($error) diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 6037f6c77c9..e3f2431783f 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -153,12 +153,12 @@ else { if (empty($senderissupplier)) { - $form->select_produits('', 'idprod', $filtertype, $conf->product->limit_size, $buyer->price_level, 1, 2, '', 1, array(),$buyer->id); + $form->select_produits(GETPOST('idprod'), 'idprod', $filtertype, $conf->product->limit_size, $buyer->price_level, 1, 2, '', 1, array(),$buyer->id); } else { $ajaxoptions=array( - 'update' => array('qty'=>'qty','remise_percent' => 'discount'), // html id tag will be edited with which ajax json response key + 'update' => array('qty'=>'qty','remise_percent' => 'discount'), // html id tags that will be edited with which ajax json response key 'option_disabled' => 'addPredefinedProductButton', // html id to disable once select is done 'warning' => $langs->trans("NoPriceDefinedForThisSupplier") // translation of an error saved into var 'error' ); @@ -192,23 +192,16 @@ else { service->enabled) && $dateSelector && GETPOST('type') != '0') +if ((! empty($conf->service->enabled) || ($object->element == 'contrat')) && $dateSelector && GETPOST('type') != '0') // We show date field if required { if(! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) $colspan = 10; else $colspan = 9; @@ -493,6 +486,11 @@ jQuery(document).ready(function() { if (jQuery('#idprod').val() > 0) jQuery('#dp_desc').focus(); if (jQuery('#idprodfournprice').val() > 0) jQuery('#dp_desc').focus(); }); + + + setforpredef(); + + }); /* Function to set fields from choice */ diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 7750250b00b..eefd5c961e2 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -251,7 +251,7 @@ if ($action == 'addline' && $user->rights->fournisseur->commande->creer) $idprod=0; $productsupplier = new ProductFournisseur($db); - if (GETPOST('idprodfournprice') == -1 || GETPOST('idprodfournprice') == '') $idprod=-2; // Same behaviour than with combolist. When not select idprodfournprice is now -2 (to avoid conflict with next action that may return -1) + if (GETPOST('idprodfournprice') == -1 || GETPOST('idprodfournprice') == '') $idprod=-99; // Same behaviour than with combolist. When not select idprodfournprice is now -99 (to avoid conflict with next action that may return -1, -2, ...) if (GETPOST('idprodfournprice') > 0) { @@ -294,12 +294,12 @@ if ($action == 'addline' && $user->rights->fournisseur->commande->creer) $date_end ); } - if ($idprod == -2 || $idprod == 0) + if ($idprod == 0 || $idprod == -99) { // Product not selected $error++; $langs->load("errors"); - setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("ProductOrService")), 'errors'); + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("ProductOrService")).' '.$langs->trans("or").' '.$langs->trans("NoPriceDefinedForThisSupplier"), 'errors'); } if ($idprod == -1) { diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 653925701ad..ac3d8e967a2 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -1229,14 +1229,14 @@ class Product extends CommonObject } else { - $this->error=$this->db->error(); + $this->error=$this->db->lasterror(); return -3; } } } else { - $this->error=$this->db->error(); + $this->error=$this->db->lasterror(); return -2; } } From e55a983c0373da451c4f4b07280afa82a0ecf0fa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 6 Mar 2015 16:13:09 +0100 Subject: [PATCH 184/429] Fix td balance --- htdocs/fourn/commande/dispatch.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/commande/dispatch.php b/htdocs/fourn/commande/dispatch.php index a68f11f0f69..81c9e410c28 100644 --- a/htdocs/fourn/commande/dispatch.php +++ b/htdocs/fourn/commande/dispatch.php @@ -393,7 +393,7 @@ if ($id > 0 || ! empty($ref)) } else { - print '"; } From dd3f569ede8ee53737d0643a515dfd3a2084e934 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 6 Mar 2015 20:34:00 +0100 Subject: [PATCH 185/429] NEW: Enhance the natural_search function so we can use it to search numeric fields with criteria with operator <>= inside (< 100, >= 1000) --- htdocs/core/lib/functions.lib.php | 62 +++++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 16 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 438f0ee22ca..c5d8d509b08 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4946,34 +4946,64 @@ function dol_getmypid() /** - * Natural search + * Generate natural SQL search string * - * @param mixed $fields String or array of strings filled with the fields names in the SQL query - * @param string $value The value to look for (example: "keyword1 keyword2") - * @return string $res The statement to append to the SQL query + * @param string|string[] $fields String or array of strings, filled with the name of fields in the SQL query + * @param string $value The value to look for. + * If param $numeric is 0, can contains several keywords separated with a space, like "keyword1 keyword2" = We want record field like keyword1 and field like keyword2 + * If param $numeric is 1, can contains an operator <>= like "<10" or ">=100.5 < 1000" + * @param string $number 0=value is list of keywords, 1=value is a numeric test + * @return string $res The statement to append to the SQL query */ -function natural_search($fields, $value) +function natural_search($fields, $value, $numeric=0) { - global $db; + global $db,$langs; + + if ($numeric) + { + $value=preg_replace('/([<>=]+)\s([0-9'.preg_quote($langs->trans("DecimalSeparator"),'/').'])/','\1\2',$value); // Clean string '< 10' into '<10' so we can the explode on space to get all tests to do + } $crits = explode(' ', $value); $res = ''; if (! is_array($fields)) $fields = array($fields); - $end = count($fields); + $nboffields = count($fields); $end2 = count($crits); $j = 0; - foreach ($crits as $crit) { - $i = 0; - foreach ($fields as $field) { - if ( $i > 0 && $i < $end) $res .= " OR "; - $res .= $field . " LIKE '%" . $db->escape(trim($crit)) . "%'"; + foreach ($crits as $crit) + { + $i = 0; $i2 = 0; + $newres = ''; + foreach ($fields as $field) + { + if ($numeric) + { + $operator='='; + $newcrit = preg_replace('/([<>=]+)/','',trim($crit)); + + preg_match('/([<>=]+)/',trim($crit), $reg); + if ($reg[1]) + { + $operator = $reg[1]; + } + if ($newcrit != '') + { + $newres .= ($i2 > 0 ? ' OR ' : '') . $field . ' '.$operator.' '.price2num($newcrit); + $i2++; // a criteria was added to string + } + } + else + { + $newres .= ($i2 > 0 ? ' OR ' : '') . $field . " LIKE '%" . $db->escape(trim($crit)) . "%'"; + $i2++; // a criteria was added to string + } $i++; } - if ($end > 1) $res .= ')'; - if ($j < $end2 - 1) $res .= " AND "; - if ($end > 1 && $j < $end2 - 1) $res .= '('; + if ($newres) $res = $res . ($res ? ' AND ' : '') . ($i2 > 1 ? '(' : '') .$newres . ($i2 > 1 ? ')' : ''); $j++; } - return " AND " . ($end > 1? '(' : '') . $res; + $res = " AND (" . $res . ")"; + //print 'xx'.$res.'yy'; + return $res; } From 9e4e9a54111ae543692a77d1eac08b58151bfac1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 6 Mar 2015 20:59:18 +0100 Subject: [PATCH 186/429] NEW: Can search on customer order amount into customer order list. --- htdocs/comm/card.php | 2 +- htdocs/comm/propal/list.php | 10 +++++----- htdocs/commande/list.php | 18 ++++++++++++++---- htdocs/compta/facture.php | 4 ++-- htdocs/compta/facture/list.php | 16 ++++++++-------- htdocs/core/lib/functions.lib.php | 2 +- htdocs/fourn/commande/list.php | 14 +++++++------- htdocs/fourn/facture/list.php | 14 +++++++------- 8 files changed, 45 insertions(+), 35 deletions(-) diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index ffc01a998d5..78b786d2366 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -400,7 +400,7 @@ if ($id > 0) // display amount and link to unpaid bill $outstandigBills = $object->get_OutstandingBill(); if ($outstandigBills != 0) - print " / ".price($outstandigBills).''; + print " (".$langs->trans("CurrentOutstandingBill")." ".price($outstandigBills, '', $langs, 0, 0, -1, $conf->currency).')'; print ''; print ''; } diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index a3ef72bb6ca..da6e56c9460 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -182,9 +182,9 @@ if ($search_author) { $sql.= " AND u.login LIKE '%".$db->escape(trim($search_author))."%'"; } -if ($search_montant_ht) +if ($search_montant_ht != '') { - $sql.= " AND p.total_ht='".$db->escape(price2num(trim($search_montant_ht)))."'"; + $sql.= natural_search("p.total_ht", $search_montant_ht, 1); } if ($sall) { $sql .= natural_search(array('s.nom', 'p.note_private', 'p.note_public', 'pd.description'), $sall); @@ -316,12 +316,12 @@ if ($result) print ''; print ''; // Amount - print ''; // Author print ''; print ''; - print ''; + print ''; print '\n"; @@ -328,7 +337,8 @@ if ($resql) $generic_commande = new Commande($db); $generic_product = new Product($db); - while ($i < min($num,$limit)) { + while ($i < min($num,$limit)) + { $objp = $db->fetch_object($resql); $var=!$var; print ''; diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 4cb696836bd..d38519bf6d5 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -1962,11 +1962,11 @@ if ($action == 'create') // Outstanding Bill $outstandigBills = $soc->get_OutstandingBill(); print ' (' . $langs->trans('CurrentOutstandingBill') . ': '; - print price($outstandigBills, '', $langs, 0, 0, - 1, $conf->currency); + print price($outstandigBills, '', $langs, 0, 0, -1, $conf->currency); if ($soc->outstanding_limit != '') { if ($outstandigBills > $soc->outstanding_limit) print img_warning($langs->trans("OutstandingBillReached")); - print ' / ' . price($soc->outstanding_limit); + print ' / ' . price($soc->outstanding_limit, '', $langs, 0, 0, -1, $conf->currency); } print ')'; print ''; diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 56bd57c725a..dc081424ace 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -187,13 +187,13 @@ if ($search_societe) { $sql .= natural_search('s.nom', $search_societe); } -if ($search_montant_ht) +if ($search_montant_ht != '') { - $sql.= ' AND f.total = \''.$db->escape(price2num(trim($search_montant_ht))).'\''; + $sql.= natural_search('f.total', $search_montant_ht, 1); } -if ($search_montant_ttc) +if ($search_montant_ttc != '') { - $sql.= ' AND f.total_ttc = \''.$db->escape(price2num(trim($search_montant_ttc))).'\''; + $sql.= natural_search('f.total_ttc', $search_montant_ttc, 1); } if ($search_status != '') { @@ -263,8 +263,8 @@ if ($resql) if ($search_societe) $param.='&search_societe=' .$search_societe; if ($search_sale > 0) $param.='&search_sale=' .$search_sale; if ($search_user > 0) $param.='&search_user=' .$search_user; - if ($search_montant_ht) $param.='&search_montant_ht='.$search_montant_ht; - if ($search_montant_ttc) $param.='&search_montant_ttc='.$search_montant_ttc; + if ($search_montant_ht != '') $param.='&search_montant_ht='.$search_montant_ht; + if ($search_montant_ttc != '') $param.='&search_montant_ttc='.$search_montant_ttc; print_barre_liste($langs->trans('BillsCustomers').' '.($socid?' '.$soc->name:''),$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords); $i = 0; @@ -323,9 +323,9 @@ if ($resql) print ''; print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; print ''; } print ''; - print ''; - print ''; + print ''; + print ''; print ''; print ''; print ''; } print ''; if (! empty($conf->stock->enabled)) { - print ''; + print ''; } else { From fc0be43f5f8e4d4ccb90077bddcd7501c6825220 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 6 Mar 2015 22:40:41 +0100 Subject: [PATCH 188/429] Fix: beautify search box --- htdocs/product/stats/commande.php | 8 +++++--- htdocs/product/stats/commande_fournisseur.php | 8 +++++--- htdocs/product/stats/facture.php | 4 +++- htdocs/product/stats/facture_fournisseur.php | 4 +++- htdocs/product/stats/propal.php | 4 +++- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/htdocs/product/stats/commande.php b/htdocs/product/stats/commande.php index 2ae1dcd1582..49a443938ab 100644 --- a/htdocs/product/stats/commande.php +++ b/htdocs/product/stats/commande.php @@ -141,9 +141,9 @@ if ($id > 0 || ! empty($ref)) $sql.= " AND d.fk_commande = c.rowid"; $sql.= " AND d.fk_product =".$product->id; if (! empty($search_month)) - $sql.= ' AND MONTH(f.datef) IN (' . $search_month . ')'; + $sql.= ' AND MONTH(c.date_commande) IN (' . $search_month . ')'; if (! empty($search_year)) - $sql.= ' AND YEAR(f.datef) IN (' . $search_year . ')'; + $sql.= ' AND YEAR(c.date_commande) IN (' . $search_year . ')'; if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; if ($socid) $sql.= " AND c.fk_soc = ".$socid; $sql.= " ORDER BY $sortfield $sortorder "; @@ -189,12 +189,14 @@ if ($id > 0 || ! empty($ref)) print_barre_liste($langs->trans("CustomersOrders"),$page,$_SERVER["PHP_SELF"],"&id=$product->id",$sortfield,$sortorder,'',$num,$totalrecords,''); print '
'; - print $langs->trans('Period').'('.$langs->trans("DateInvoice") .') '; + print $langs->trans('Period').' ('.$langs->trans("OrderDate") .') - '; print $langs->trans('Month') . ': '; print $langs->trans('Year') . ':' . $formother->selectyear($search_year ? $search_year : - 1, 'search_year', 1, 20, 5); + print '
'; print ''; print ''; print '
'; + print '
'; $i = 0; print '
'; @@ -1790,6 +1790,7 @@ if ($action == 'create') print '
'; print ''; print ''; - + */ + // Delivery delay + /* PHFAVRE retrait en temporaire print '\n"; print ''; - print ''; + print ''; // Other attributes $parameters=array('colspan' => 3); @@ -612,11 +612,11 @@ else print '
'; @@ -1811,8 +1812,10 @@ if ($action == 'create') } print '
'; print ''; print ''; - + */ + // Shipping Method + /* PHFAVRE retrait en temporaire if (! empty($conf->expedition->enabled)) { print ''; $form_close .= ''; foreach ($showextcals as $val) { - $htmlname = dol_string_nospecial($val['name']); + $htmlname = md5($val['name']); print ''; - print ''; + print ''; // Type print ''; @@ -299,15 +297,17 @@ if ($action == 'create') print $form->selectarray("clos",array(0=>$account->status[0],1=>$account->status[1]),(isset($_POST["clos"])?$_POST["clos"]:$account->clos)); print ''; - // Country - print ''; - print ''; + print ''; @@ -333,10 +333,10 @@ if ($action == 'create') print ''; - + // Other attributes $parameters=array('colspan' => 3); $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$account,$action); // Note that $action and $object may have been modified by hook @@ -353,7 +353,7 @@ if ($action == 'create') // Sold print ''; - print ''; + print ''; print ''; print ''; + print ''; print ''; - print ''; + print ''; print ''; print '
'; print $langs->trans('AvailabilityPeriod'); @@ -1831,8 +1834,10 @@ if ($action == 'create') print '
'; print ''; print ''; } - + */ + // Origin of demand + /* PHFAVRE retrait en temporaire print '
'; @@ -1850,8 +1855,10 @@ if ($action == 'create') print '
'; print ''; print ''; - + */ + // Payment mode print ''; print ''; // Project + /* if (! empty($conf->projet->enabled)) { $langs->load("projects"); print ''; } - + */ + if ($soc->outstanding_limit) { // Outstanding Bill @@ -1938,7 +1948,7 @@ if ($action == 'create') print '
'; print $langs->trans('Source'); @@ -1867,7 +1874,8 @@ if ($action == 'create') } print '
'; @@ -1886,6 +1894,7 @@ if ($action == 'create') print '
'; @@ -1918,7 +1927,8 @@ if ($action == 'create') } print '
'; - if ($action != 'editbankaccount' && $user->rights->propal->creer) + if ($action != 'editbankaccount' && $user->rights->askpricesupplier->creer) print ''; print '
'; print $langs->trans('BankAccount'); print 'id.'">'.img_edit($langs->trans('SetBankAccount'),1).'
'; print '
'; @@ -2033,6 +2043,7 @@ if ($action == 'create') $ret = $object->printObjectLines($action, $mysoc, $soc, $lineid, 1); // Form to add new line + /* PHFAVRE retrait en temporaire*/ if ($object->statut == 0 && $user->rights->askpricesupplier->creer) { if ($action != 'editline') @@ -2046,7 +2057,25 @@ if ($action == 'create') $reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook } } + + + /* + // Form to add new line + if ($object->statut == 0 && $user->rights->askpricesupplier->creer) + { + // Add free products/services form + global $forceall, $senderissupplier, $dateSelector; + $forceall=1; $senderissupplier=1; $dateSelector=0; + $var = true; + + // Add free products/services + $object->formAddObjectLine(1, $mysoc, $object); + + $parameters = array(); + $reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + } +*/ print '
'; print "\n"; @@ -2065,8 +2094,8 @@ if ($action == 'create') $form_close .= ''; $form_close .= ''; $form_close .= '
' . $langs->trans('Note') . ''; - if ($this->tool == 'ckeditor') { if (! defined('REQUIRE_CKEDITOR')) define('REQUIRE_CKEDITOR','1'); //$skin='kama'; $skin='moono'; // default with cdeditor 4 - + $htmlencode_force=preg_match('/_encoded$/',$this->toolbarname)?'true':'false'; - $out.= ''."\n"; + print "\n".''."\n"; - - print "\n".''; print ' ' . $langs->trans("LocalAgenda") . '
'; print ' ' . $val ['name']; From 5335a6affae5fd2d5421a26ba8e3b79bb7c63311 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 4 Mar 2015 16:28:29 +0100 Subject: [PATCH 150/429] NEW: Add close date and user for projects. --- htdocs/install/mysql/migration/3.7.0-3.8.0.sql | 5 +++++ htdocs/install/mysql/tables/llx_projet.sql | 2 ++ htdocs/projet/class/project.class.php | 14 +++++++++++--- test/phpunit/ProjectTest.php | 8 ++++++-- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index 84990967856..fd9006fa303 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -227,3 +227,8 @@ ALTER TABLE llx_commande_fournisseurdet ADD COLUMN special_code integer DEFAULT ALTER TABLE llx_commande_fournisseurdet ADD COLUMN rang integer DEFAULT 0; ALTER TABLE llx_commande_fournisseurdet ADD COLUMN fk_parent_line integer NULL after fk_commande; +ALTER TABLE llx_projet ADD COLUMN date_close datetime DEFAULT NULL; +ALTER TABLE llx_projet ADD COLUMN fk_user_close integer DEFAULT NULL; + + + \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_projet.sql b/htdocs/install/mysql/tables/llx_projet.sql index 0bfde5c026b..d9192c191ba 100644 --- a/htdocs/install/mysql/tables/llx_projet.sql +++ b/htdocs/install/mysql/tables/llx_projet.sql @@ -32,6 +32,8 @@ create table llx_projet fk_user_creat integer NOT NULL, -- createur du projet public integer, -- project is public or not fk_statut smallint DEFAULT 0 NOT NULL, + date_close datetime DEFAULT NULL, + fk_user_close integer DEFAULT NULL, note_private text, note_public text, --budget_days real, -- budget in days is sum of field planned_workload of tasks diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 1d5daf2110a..eb15f80ff6d 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -49,8 +49,10 @@ class Project extends CommonObject var $title; var $date_start; var $date_end; + var $date_close; var $socid; var $user_author_id; //!< Id of project creator. Not defined if shared project. + var $user_close_id; var $public; //!< Tell if this is a public or private project var $note_private; var $note_public; @@ -212,6 +214,8 @@ class Project extends CommonObject $sql.= ", datec=" . ($this->date_c != '' ? "'".$this->db->idate($this->date_c)."'" : 'null'); $sql.= ", dateo=" . ($this->date_start != '' ? "'".$this->db->idate($this->date_start)."'" : 'null'); $sql.= ", datee=" . ($this->date_end != '' ? "'".$this->db->idate($this->date_end)."'" : 'null'); + $sql.= ", date_close=" . ($this->date_close != '' ? "'".$this->db->idate($this->date_close)."'" : 'null'); + $sql.= ", fk_user_close=" . ($this->fk_user_close > 0 ? $this->fk_user_close : "null"); $sql.= ", budget_amount = " . ($this->budget_amount > 0 ? $this->budget_amount : "null"); $sql.= " WHERE rowid = " . $this->id; @@ -299,7 +303,7 @@ class Project extends CommonObject if (empty($id) && empty($ref)) return -1; $sql = "SELECT rowid, ref, title, description, public, datec, budget_amount,"; - $sql.= " tms, dateo, datee, fk_soc, fk_user_creat, fk_statut, note_private, note_public,model_pdf"; + $sql.= " tms, dateo, datee, date_close, fk_soc, fk_user_creat, fk_user_close, fk_statut, note_private, note_public,model_pdf"; $sql.= " FROM " . MAIN_DB_PREFIX . "projet"; if (! empty($id)) { @@ -330,10 +334,12 @@ class Project extends CommonObject $this->datem = $this->db->jdate($obj->tms); // TODO deprecated $this->date_start = $this->db->jdate($obj->dateo); $this->date_end = $this->db->jdate($obj->datee); + $this->date_close = $this->db->jdate($obj->date_close); $this->note_private = $obj->note_private; $this->note_public = $obj->note_public; $this->socid = $obj->fk_soc; $this->user_author_id = $obj->fk_user_creat; + $this->user_close_id = $obj->fk_user_close; $this->public = $obj->public; $this->statut = $obj->fk_statut; $this->budget_amount = $obj->budget_amount; @@ -682,13 +688,15 @@ class Project extends CommonObject /** * Close a project * - * @param User $user User that validate + * @param User $user User that close project * @return int <0 if KO, >0 if OK */ function setClose($user) { global $langs, $conf; + $now = dol_now(); + $error=0; if ($this->statut != 2) @@ -696,7 +704,7 @@ class Project extends CommonObject $this->db->begin(); $sql = "UPDATE " . MAIN_DB_PREFIX . "projet"; - $sql.= " SET fk_statut = 2"; + $sql.= " SET fk_statut = 2, fk_user_close = ".$user->id.", date_close = '".$this->db->idate($now)."'"; $sql.= " WHERE rowid = " . $this->id; $sql.= " AND entity = " . $conf->entity; $sql.= " AND fk_statut = 1"; diff --git a/test/phpunit/ProjectTest.php b/test/phpunit/ProjectTest.php index e27cd1e0223..c2f5d5b8161 100644 --- a/test/phpunit/ProjectTest.php +++ b/test/phpunit/ProjectTest.php @@ -189,7 +189,7 @@ class ProjectTest extends PHPUnit_Framework_TestCase } /** - * testProjectOther + * testProjectClose * * @param Project $localobject Project * @return int @@ -205,6 +205,10 @@ class ProjectTest extends PHPUnit_Framework_TestCase $langs=$this->savlangs; $db=$this->savdb; + $result=$localobject->setClose($user); + + print __METHOD__." id=".$localobject->id." result=".$result."\n"; + $this->assertLessThan($result, 0); return $localobject->id; } @@ -214,7 +218,7 @@ class ProjectTest extends PHPUnit_Framework_TestCase * @param int $id Id of project * @return void * - * @depends testProjectOther + * @depends testProjectClose * The depends says test is run only if previous is ok */ public function testProjectDelete($id) From d1c44d549840c9f4fb0a6d02cc98790f04d08998 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 4 Mar 2015 16:30:38 +0100 Subject: [PATCH 151/429] Update doc --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e2282654fc9..ef6dd3a834a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -47,8 +47,8 @@ Long description (Can span accross multiple lines). Where KEYWORD is one of: -- "FIXED:" for bug fixes (May be followed by the bug number i.e: #456) -- "NEW:" for new features (May be followed by the task number i.e: #123) +- "FIXED:" for bug fixes. In upper case to appear into ChangeLog. (May be followed by the bug number i.e: #456) +- "NEW:" for new features. In upper case to appear into ChangeLog. (May be followed by the task number i.e: #123) - void, don't put a keyword if the commit is not introducing feature or closing a bug. ### Resources From 1a02f6aa806b811129edb58f2e5d10cad0f5590b Mon Sep 17 00:00:00 2001 From: fmarcet Date: Wed, 4 Mar 2015 18:18:55 +0100 Subject: [PATCH 152/429] Fix: Masks works with thirdparty type --- htdocs/contrat/card.php | 2 +- htdocs/core/modules/commande/mod_commande_saphir.php | 2 +- htdocs/core/modules/contract/mod_contract_magre.php | 2 +- htdocs/core/modules/fichinter/mod_arctic.php | 2 +- htdocs/core/modules/livraison/mod_livraison_saphir.php | 2 +- htdocs/core/modules/propale/mod_propale_saphir.php | 2 +- .../modules/supplier_invoice/mod_facture_fournisseur_tulip.php | 2 +- .../supplier_order/mod_commande_fournisseur_orchidee.php | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 6d10442caf7..edb20d91d35 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -1097,7 +1097,7 @@ else $ref = substr($object->ref, 1, 4); if ($ref == 'PROV' && !empty($modCodeContract->code_auto)) { - $numref = $object->getNextNumRef($soc); + $numref = $object->getNextNumRef($object->thirdparty); } else { diff --git a/htdocs/core/modules/commande/mod_commande_saphir.php b/htdocs/core/modules/commande/mod_commande_saphir.php index 87ba0d57c98..1996717e506 100644 --- a/htdocs/core/modules/commande/mod_commande_saphir.php +++ b/htdocs/core/modules/commande/mod_commande_saphir.php @@ -121,7 +121,7 @@ class mod_commande_saphir extends ModeleNumRefCommandes return 0; } - $numFinal=get_next_value($db,$mask,'commande','ref','',$objsoc->code_client,$object->date); + $numFinal=get_next_value($db,$mask,'commande','ref','',$objsoc,$object->date); return $numFinal; } diff --git a/htdocs/core/modules/contract/mod_contract_magre.php b/htdocs/core/modules/contract/mod_contract_magre.php index 289b474de5e..54da8fc55c4 100644 --- a/htdocs/core/modules/contract/mod_contract_magre.php +++ b/htdocs/core/modules/contract/mod_contract_magre.php @@ -112,7 +112,7 @@ class mod_contract_magre extends ModelNumRefContracts return 0; } - $numFinal=get_next_value($db,$mask,'contrat','ref','',$objsoc->code_client,$contract->date_contrat); + $numFinal=get_next_value($db,$mask,'contrat','ref','',$objsoc,$contract->date_contrat); return $numFinal; } diff --git a/htdocs/core/modules/fichinter/mod_arctic.php b/htdocs/core/modules/fichinter/mod_arctic.php index ab06d1417e6..278e20ae7de 100644 --- a/htdocs/core/modules/fichinter/mod_arctic.php +++ b/htdocs/core/modules/fichinter/mod_arctic.php @@ -120,7 +120,7 @@ class mod_arctic extends ModeleNumRefFicheinter return 0; } - $numFinal=get_next_value($db,$mask,'fichinter','ref','',$objsoc->code_client,$object->datec); + $numFinal=get_next_value($db,$mask,'fichinter','ref','',$objsoc,$object->datec); return $numFinal; } diff --git a/htdocs/core/modules/livraison/mod_livraison_saphir.php b/htdocs/core/modules/livraison/mod_livraison_saphir.php index 5f8a6b93686..1192656bf8d 100644 --- a/htdocs/core/modules/livraison/mod_livraison_saphir.php +++ b/htdocs/core/modules/livraison/mod_livraison_saphir.php @@ -120,7 +120,7 @@ class mod_livraison_saphir extends ModeleNumRefDeliveryOrder return 0; } - $numFinal=get_next_value($db,$mask,'livraison','ref','',$objsoc->code_client,$object->date_livraison); + $numFinal=get_next_value($db,$mask,'livraison','ref','',$objsoc,$object->date_livraison); return $numFinal; } diff --git a/htdocs/core/modules/propale/mod_propale_saphir.php b/htdocs/core/modules/propale/mod_propale_saphir.php index 503d8754684..25ccecb253c 100644 --- a/htdocs/core/modules/propale/mod_propale_saphir.php +++ b/htdocs/core/modules/propale/mod_propale_saphir.php @@ -123,7 +123,7 @@ class mod_propale_saphir extends ModeleNumRefPropales $date=$propal->datep; $customercode=$objsoc->code_client; - $numFinal=get_next_value($db,$mask,'propal','ref','',$customercode,$date); + $numFinal=get_next_value($db,$mask,'propal','ref','',$objsoc,$date); return $numFinal; } diff --git a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php index 15bef66bf8f..ba31d979864 100644 --- a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php +++ b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php @@ -126,7 +126,7 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices } //Supplier invoices take invoice date instead of creation date for the mask - $numFinal=get_next_value($db,$mask,'facture_fourn','ref','',$objsoc->code_fournisseur,$object->date); + $numFinal=get_next_value($db,$mask,'facture_fourn','ref','',$objsoc,$object->date); return $numFinal; } diff --git a/htdocs/core/modules/supplier_order/mod_commande_fournisseur_orchidee.php b/htdocs/core/modules/supplier_order/mod_commande_fournisseur_orchidee.php index 7f74ce095c0..37b8adab22e 100644 --- a/htdocs/core/modules/supplier_order/mod_commande_fournisseur_orchidee.php +++ b/htdocs/core/modules/supplier_order/mod_commande_fournisseur_orchidee.php @@ -121,7 +121,7 @@ class mod_commande_fournisseur_orchidee extends ModeleNumRefSuppliersOrders return 0; } - $numFinal=get_next_value($db,$mask,'commande_fournisseur','ref','',$objsoc->code_fournisseur,$object->date_commande); + $numFinal=get_next_value($db,$mask,'commande_fournisseur','ref','',$objsoc,$object->date_commande); return $numFinal; } From cf3190a4ef6bdca7286d6f465bf3575396860d39 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 4 Mar 2015 18:56:57 +0100 Subject: [PATCH 153/429] Bad error management --- htdocs/projet/card.php | 40 +++++++++------------------ htdocs/projet/class/project.class.php | 2 +- 2 files changed, 14 insertions(+), 28 deletions(-) diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 541d9271ade..cd19f25a97c 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -38,6 +38,7 @@ $id=GETPOST('id','int'); $ref=GETPOST('ref','alpha'); $action=GETPOST('action','alpha'); $backtopage=GETPOST('backtopage','alpha'); +$cancel=GETPOST('cancel','alpha'); if ($id == '' && $ref == '' && ($action != "create" && $action != "add" && $action != "update" && ! $_POST["cancel"])) accessforbidden(); @@ -51,13 +52,10 @@ $object = new Project($db); $extrafields = new ExtraFields($db); if ($id > 0 || ! empty($ref)) { - $ret = $object->fetch($id,$ref); + $ret = $object->fetch($id,$ref); // If we create project, ref may be defined into POST but record does not yet exists into database if ($ret > 0) { $object->fetch_thirdparty(); $id=$object->id; - } else { - setEventMessage($object->error, 'errors'); - $action=''; } } @@ -83,9 +81,8 @@ if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'e if (empty($reshook)) { - // Cancel - if (GETPOST("cancel") && ! empty($backtopage)) + if ($cancel) { if (GETPOST("comefromclone")==1) { @@ -101,26 +98,15 @@ if (empty($reshook)) setEventMessage($langs->trans("CantRemoveProject"), 'errors'); } } - header("Location: ".$backtopage); - exit; + if ($backtopage) + { + header("Location: ".$backtopage); + exit; + } + + $action = ''; } - - //if cancel and come from clone then delete the cloned project - if (GETPOST("cancel") && (GETPOST("comefromclone")==1)) - { - $result=$object->delete($user); - if ($result > 0) - { - header("Location: index.php"); - exit; - } - else - { - dol_syslog($object->error,LOG_DEBUG); - setEventMessage($langs->trans("CantRemoveProject"), 'errors'); - } - } - + if ($action == 'add' && $user->rights->projet->creer) { $error=0; @@ -134,7 +120,7 @@ if (empty($reshook)) setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Label")), 'errors'); $error++; } - + if (! $error) { $error=0; @@ -156,7 +142,7 @@ if (empty($reshook)) if ($ret < 0) $error++; $result = $object->create($user); - if ($result > 0) + if (! $error && $result > 0) { // Add myself as project leader $result = $object->add_contact($user->id, 'PROJECTLEADER', 'internal'); diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 1d5daf2110a..7d5cece4707 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -299,7 +299,7 @@ class Project extends CommonObject if (empty($id) && empty($ref)) return -1; $sql = "SELECT rowid, ref, title, description, public, datec, budget_amount,"; - $sql.= " tms, dateo, datee, fk_soc, fk_user_creat, fk_statut, note_private, note_public,model_pdf"; + $sql.= " tms, dateo, datee, fk_soc, fk_user_creat, fk_statut, note_private, note_public, model_pdf"; $sql.= " FROM " . MAIN_DB_PREFIX . "projet"; if (! empty($id)) { From 20d56244403b13574679d49486c2b63f976da3cc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 4 Mar 2015 20:34:41 +0100 Subject: [PATCH 154/429] Closed #2414 --- htdocs/webservices/server_contact.php | 96 ++++++++++++--------------- 1 file changed, 42 insertions(+), 54 deletions(-) diff --git a/htdocs/webservices/server_contact.php b/htdocs/webservices/server_contact.php index ec652e80074..066c9f38b6c 100644 --- a/htdocs/webservices/server_contact.php +++ b/htdocs/webservices/server_contact.php @@ -114,8 +114,7 @@ $contact_fields = array( 'user_id' => array('name'=>'user_id','type'=>'xsd:string'), 'user_login' => array('name'=>'user_login','type'=>'xsd:string'), 'civility_id' => array('name'=>'civility_id','type'=>'xsd:string'), - 'poste' => array('name'=>'poste','type'=>'xsd:string'), - 'statut' => array('name'=>'statut','type'=>'xsd:string') + 'poste' => array('name'=>'poste','type'=>'xsd:string') //... ); //Retreive all extrafield for contact @@ -286,7 +285,7 @@ function getContact($authentication,$id,$ref_ext) 'country_code' => $contact->country_code, 'country' => $contact->country, 'socid' => $contact->socid, - 'status' => $contact->status, + 'status' => $contact->statut, 'phone_pro' => $contact->phone_pro, 'fax' => $contact->fax, 'phone_perso' => $contact->phone_perso, @@ -304,8 +303,7 @@ function getContact($authentication,$id,$ref_ext) 'user_id' => $contact->user_id, 'user_login' => $contact->user_login, 'civility_id' => $contact->civility_id, - 'poste' => $contact->poste, - 'statut' => $contact->statut + 'poste' => $contact->poste ); //Retreive all extrafield for thirdsparty @@ -353,7 +351,7 @@ function getContact($authentication,$id,$ref_ext) * Create Contact * * @param array $authentication Array of authentication information - * @param Contact $contact $contact + * @param Contact $contact $contact * @return array Array result */ function createContact($authentication,$contact) @@ -398,7 +396,7 @@ function createContact($authentication,$contact) $newobject->country_code=$contact['country_code']; $newobject->country=$contact['country']; $newobject->socid=$contact['socid']; - $newobject->status=$contact['status']; + $newobject->statut=$contact['status']; $newobject->phone_pro=$contact['phone_pro']; $newobject->fax=$contact['fax']; $newobject->phone_perso=$contact['phone_perso']; @@ -416,7 +414,6 @@ function createContact($authentication,$contact) $newobject->user_id=$contact['user_id']; $newobject->user_login=$contact['user_login']; $newobject->poste=$contact['poste']; - $newobject->statut=$contact['statut']; //Retreive all extrafield for thirdsparty // fetch optionals attributes and labels @@ -493,7 +490,7 @@ function getContactsForThirdParty($authentication,$idthirdparty) { $linesinvoice=array(); - $sql = "SELECT c.rowid, c.fk_soc, c.civility as civility_id, c.lastname, c.firstname, c.statut,"; + $sql = "SELECT c.rowid, c.fk_soc, c.civility as civility_id, c.lastname, c.firstname, c.statut as status,"; $sql.= " c.address, c.zip, c.town,"; $sql.= " c.fk_pays as country_id,"; $sql.= " c.fk_departement,"; @@ -511,7 +508,6 @@ function getContactsForThirdParty($authentication,$idthirdparty) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON c.fk_soc = s.rowid"; $sql.= " WHERE c.fk_soc=$idthirdparty"; - $resql=$db->query($sql); if ($resql) { @@ -525,58 +521,50 @@ function getContactsForThirdParty($authentication,$idthirdparty) $contact=new Contact($db); $contact->fetch($obj->rowid); - // Now define invoice $linescontact[]=array( - 'id' => $contact->id, - 'ref' => $contact->ref, - 'civility_id' => $contact->civility_id?$contact->civility_id:'', - 'lastname' => $contact->lastname?$contact->lastname:'', - 'firstname' => $contact->firstname?$contact->firstname:'', - 'address' => $contact->address?$contact->address:'', - 'zip' => $contact->zip?$contact->zip:'', - 'town' => $contact->town?$contact->town:'', + 'id' => $contact->id, + 'ref' => $contact->ref, + 'civility_id' => $contact->civility_id?$contact->civility_id:'', + 'lastname' => $contact->lastname?$contact->lastname:'', + 'firstname' => $contact->firstname?$contact->firstname:'', + 'address' => $contact->address?$contact->address:'', + 'zip' => $contact->zip?$contact->zip:'', + 'town' => $contact->town?$contact->town:'', - 'state_id' => $contact->state_id?$contact->state_id:'', - 'state_code' => $contact->state_code?$contact->state_code:'', - 'state' => $contact->state?$contact->state:'', - - 'country_id' => $contact->country_id?$contact->country_id:'', - 'country_code' => $contact->country_code?$contact->country_code:'', - 'country' => $contact->country?$contact->country:'', - - 'socid' => $contact->socid?$contact->socid:'', - 'socname' => $contact->socname?$contact->socname:'', - 'poste' => $contact->poste?$contact->poste:'', - - - - 'phone_pro' => $contact->phone_pro?$contact->phone_pro:'', - 'fax' => $contact->fax?$contact->fax:'', - 'phone_perso' => $contact->phone_perso?$contact->phone_perso:'', - 'phone_mobile' => $contact->phone_mobile?$contact->phone_mobile:'', - - 'email' => $contact->email?$contact->email:'', - 'jabberid' => $contact->jabberid?$contact->jabberid:'', - 'priv' => $contact->priv?$contact->priv:'', - 'mail' => $contact->mail?$contact->mail:'', - - 'birthday' => $contact->birthday?$contact->birthday:'', - 'default_lang' => $contact->default_lang?$contact->default_lang:'', - 'note' => $contact->note?$contact->note:'', - 'no_email' => $contact->no_email?$contact->no_email:'', - 'ref_facturation' => $contact->ref_facturation?$contact->ref_facturation:'', - 'ref_contrat' => $contact->ref_contrat?$contact->ref_contrat:'', - 'ref_commande' => $contact->ref_commande?$contact->ref_commande:'', - 'ref_propal' => $contact->ref_propal?$contact->ref_propal:'', - 'user_id' => $contact->user_id?$contact->user_id:'', - 'user_login' => $contact->user_login?$contact->user_login:'', - 'statut' => $contact->statut?$contact->statut:'' + 'state_id' => $contact->state_id?$contact->state_id:'', + 'state_code' => $contact->state_code?$contact->state_code:'', + 'state' => $contact->state?$contact->state:'', + 'country_id' => $contact->country_id?$contact->country_id:'', + 'country_code' => $contact->country_code?$contact->country_code:'', + 'country' => $contact->country?$contact->country:'', + 'socid' => $contact->socid?$contact->socid:'', + 'socname' => $contact->socname?$contact->socname:'', + 'poste' => $contact->poste?$contact->poste:'', + 'phone_pro' => $contact->phone_pro?$contact->phone_pro:'', + 'fax' => $contact->fax?$contact->fax:'', + 'phone_perso' => $contact->phone_perso?$contact->phone_perso:'', + 'phone_mobile' => $contact->phone_mobile?$contact->phone_mobile:'', + 'email' => $contact->email?$contact->email:'', + 'jabberid' => $contact->jabberid?$contact->jabberid:'', + 'priv' => $contact->priv?$contact->priv:'', + 'mail' => $contact->mail?$contact->mail:'', + 'birthday' => $contact->birthday?$contact->birthday:'', + 'default_lang' => $contact->default_lang?$contact->default_lang:'', + 'note' => $contact->note?$contact->note:'', + 'no_email' => $contact->no_email?$contact->no_email:'', + 'ref_facturation' => $contact->ref_facturation?$contact->ref_facturation:'', + 'ref_contrat' => $contact->ref_contrat?$contact->ref_contrat:'', + 'ref_commande' => $contact->ref_commande?$contact->ref_commande:'', + 'ref_propal' => $contact->ref_propal?$contact->ref_propal:'', + 'user_id' => $contact->user_id?$contact->user_id:'', + 'user_login' => $contact->user_login?$contact->user_login:'', + 'status' => $contact->statut?$contact->statut:'' ); $i++; From f570cd6b429c6f4724067f907e76e0e23e1604d3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 4 Mar 2015 20:35:08 +0100 Subject: [PATCH 155/429] Forgot to commit tables --- .../mysql/tables/llx_askpricesupplier.sql | 55 +++++++++++++++++++ .../llx_askpricesupplier_extrafields.sql | 23 ++++++++ .../mysql/tables/llx_askpricesupplierdet.sql | 48 ++++++++++++++++ .../llx_askpricesupplierdet_extrafields.sql | 24 ++++++++ 4 files changed, 150 insertions(+) create mode 100644 htdocs/install/mysql/tables/llx_askpricesupplier.sql create mode 100644 htdocs/install/mysql/tables/llx_askpricesupplier_extrafields.sql create mode 100644 htdocs/install/mysql/tables/llx_askpricesupplierdet.sql create mode 100644 htdocs/install/mysql/tables/llx_askpricesupplierdet_extrafields.sql diff --git a/htdocs/install/mysql/tables/llx_askpricesupplier.sql b/htdocs/install/mysql/tables/llx_askpricesupplier.sql new file mode 100644 index 00000000000..ff62595bd0b --- /dev/null +++ b/htdocs/install/mysql/tables/llx_askpricesupplier.sql @@ -0,0 +1,55 @@ +-- ======================================================================== +-- Copyright (C) 2015 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 . +-- ======================================================================== + +CREATE TABLE llx_askpricesupplier ( + rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY, + ref varchar(30) NOT NULL, + entity integer NOT NULL DEFAULT '1', + ref_ext varchar(255) DEFAULT NULL, + ref_int varchar(255) DEFAULT NULL, + fk_soc integer DEFAULT NULL, + fk_projet integer DEFAULT NULL, + tms timestamp, + datec datetime DEFAULT NULL, + date_valid datetime DEFAULT NULL, + date_cloture datetime DEFAULT NULL, + fk_user_author integer DEFAULT NULL, + fk_user_modif integer DEFAULT NULL, + fk_user_valid integer DEFAULT NULL, + fk_user_cloture integer DEFAULT NULL, + fk_statut smallint NOT NULL DEFAULT '0', + price double DEFAULT '0', + remise_percent double DEFAULT '0', + remise_absolue double DEFAULT '0', + remise double DEFAULT '0', + total_ht double(24,8) DEFAULT 0, + tva double(24,8) DEFAULT 0, + localtax1 double(24,8) DEFAULT 0, + localtax2 double(24,8) DEFAULT 0, + total double(24,8) DEFAULT 0, + fk_account integer DEFAULT NULL, + fk_currency varchar(3) DEFAULT NULL, + fk_cond_reglement integer DEFAULT NULL, + fk_mode_reglement integer DEFAULT NULL, + note_private text, + note_public text, + model_pdf varchar(255) DEFAULT NULL, + date_livraison date DEFAULT NULL, + fk_shipping_method integer DEFAULT NULL, + import_key varchar(14) DEFAULT NULL, + extraparams varchar(255) DEFAULT NULL +) ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_askpricesupplier_extrafields.sql b/htdocs/install/mysql/tables/llx_askpricesupplier_extrafields.sql new file mode 100644 index 00000000000..4552b4d0079 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_askpricesupplier_extrafields.sql @@ -0,0 +1,23 @@ +-- ======================================================================== +-- Copyright (C) 2015 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 . +-- ======================================================================== + +CREATE TABLE llx_askpricesupplier_extrafields ( + rowid integer AUTO_INCREMENT PRIMARY KEY, + tms timestamp, + fk_object integer NOT NULL, + import_key varchar(14) DEFAULT NULL +) ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_askpricesupplierdet.sql b/htdocs/install/mysql/tables/llx_askpricesupplierdet.sql new file mode 100644 index 00000000000..5755fdcb83f --- /dev/null +++ b/htdocs/install/mysql/tables/llx_askpricesupplierdet.sql @@ -0,0 +1,48 @@ +-- ======================================================================== +-- Copyright (C) 2015 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 . +-- ======================================================================== + +CREATE TABLE llx_askpricesupplierdet ( + rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY, + fk_askpricesupplier integer NOT NULL, + fk_parent_line integer DEFAULT NULL, + fk_product integer DEFAULT NULL, + label varchar(255) DEFAULT NULL, + description text, + fk_remise_except integer DEFAULT NULL, + tva_tx double(6,3) DEFAULT 0, + localtax1_tx double(6,3) DEFAULT 0, + localtax1_type varchar(10) DEFAULT NULL, + localtax2_tx double(6,3) DEFAULT 0, + localtax2_type varchar(10) DEFAULT NULL, + qty double DEFAULT NULL, + remise_percent double DEFAULT '0', + remise double DEFAULT '0', + price double DEFAULT NULL, + subprice double(24,8) DEFAULT 0, + total_ht double(24,8) DEFAULT 0, + total_tva double(24,8) DEFAULT 0, + total_localtax1 double(24,8) DEFAULT 0, + total_localtax2 double(24,8) DEFAULT 0, + total_ttc double(24,8) DEFAULT 0, + product_type integer DEFAULT 0, + info_bits integer DEFAULT 0, + buy_price_ht double(24,8) DEFAULT 0, + fk_product_fournisseur_price integer DEFAULT NULL, + special_code integer DEFAULT 0, + rang integer DEFAULT 0, + ref_fourn varchar(30) DEFAULT NULL +) ENGINE=innodb; \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_askpricesupplierdet_extrafields.sql b/htdocs/install/mysql/tables/llx_askpricesupplierdet_extrafields.sql new file mode 100644 index 00000000000..6ecbcf83d2c --- /dev/null +++ b/htdocs/install/mysql/tables/llx_askpricesupplierdet_extrafields.sql @@ -0,0 +1,24 @@ +-- ======================================================================== +-- Copyright (C) 2015 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 . +-- ======================================================================== + +CREATE TABLE llx_askpricesupplierdet_extrafields ( + rowid integer AUTO_INCREMENT PRIMAR KEY, + tms timestamp, + fk_object integer NOT NULL, + import_key varchar(14) DEFAULT NULL +) ENGINE=innodb; + From 56e77382f3a1b4087f69c5713bca94a1df2baa1a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 4 Mar 2015 20:43:54 +0100 Subject: [PATCH 156/429] Merge --- dev/fixdosfiles.sh | 1 + htdocs/includes/tcpdi/fpdf_tpl.php | 920 ++++++++++++++--------------- 2 files changed, 461 insertions(+), 460 deletions(-) diff --git a/dev/fixdosfiles.sh b/dev/fixdosfiles.sh index 30d47e7b0c4..5efd4b58543 100755 --- a/dev/fixdosfiles.sh +++ b/dev/fixdosfiles.sh @@ -10,6 +10,7 @@ # Syntax if [ "x$1" != "xlist" -a "x$1" != "xfix" ] then + echo "This script clean files with CR+LF into files with LF only. All source files are included, also files into includes." echo "Usage: fixdosfiles.sh [list|fix]" fi diff --git a/htdocs/includes/tcpdi/fpdf_tpl.php b/htdocs/includes/tcpdi/fpdf_tpl.php index 86e38b71641..8482ba336ed 100644 --- a/htdocs/includes/tcpdi/fpdf_tpl.php +++ b/htdocs/includes/tcpdi/fpdf_tpl.php @@ -1,460 +1,460 @@ -Error('This method is only usable with FPDF. Use TCPDF methods startTemplate() instead.'); - return; - } - - if ($this->page <= 0) - $this->error("You have to add a page to fpdf first!"); - - if ($x == null) - $x = 0; - if ($y == null) - $y = 0; - if ($w == null) - $w = $this->w; - if ($h == null) - $h = $this->h; - - // Save settings - $this->tpl++; - $tpl =& $this->tpls[$this->tpl]; - $tpl = array( - 'o_x' => $this->x, - 'o_y' => $this->y, - 'o_AutoPageBreak' => $this->AutoPageBreak, - 'o_bMargin' => $this->bMargin, - 'o_tMargin' => $this->tMargin, - 'o_lMargin' => $this->lMargin, - 'o_rMargin' => $this->rMargin, - 'o_h' => $this->h, - 'o_w' => $this->w, - 'o_FontFamily' => $this->FontFamily, - 'o_FontStyle' => $this->FontStyle, - 'o_FontSizePt' => $this->FontSizePt, - 'o_FontSize' => $this->FontSize, - 'buffer' => '', - 'x' => $x, - 'y' => $y, - 'w' => $w, - 'h' => $h - ); - - $this->SetAutoPageBreak(false); - - // Define own high and width to calculate possitions correct - $this->h = $h; - $this->w = $w; - - $this->_intpl = true; - $this->SetXY($x + $this->lMargin, $y + $this->tMargin); - $this->SetRightMargin($this->w - $w + $this->rMargin); - - if ($this->CurrentFont) { - $fontkey = $this->FontFamily . $this->FontStyle; - $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; - - $this->_out(sprintf('BT /F%d %.2f Tf ET', $this->CurrentFont['i'], $this->FontSizePt)); - } - - return $this->tpl; - } - - /** - * End Template - * - * This method ends a template and reset initiated variables on beginTemplate. - * - * @return mixed If a template is opened, the ID is returned. If not a false is returned. - */ - function endTemplate() { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::endTemplate'), $args); - } - - if ($this->_intpl) { - $this->_intpl = false; - $tpl =& $this->tpls[$this->tpl]; - $this->SetXY($tpl['o_x'], $tpl['o_y']); - $this->tMargin = $tpl['o_tMargin']; - $this->lMargin = $tpl['o_lMargin']; - $this->rMargin = $tpl['o_rMargin']; - $this->h = $tpl['o_h']; - $this->w = $tpl['o_w']; - $this->SetAutoPageBreak($tpl['o_AutoPageBreak'], $tpl['o_bMargin']); - - $this->FontFamily = $tpl['o_FontFamily']; - $this->FontStyle = $tpl['o_FontStyle']; - $this->FontSizePt = $tpl['o_FontSizePt']; - $this->FontSize = $tpl['o_FontSize']; - - $fontkey = $this->FontFamily . $this->FontStyle; - if ($fontkey) - $this->CurrentFont =& $this->fonts[$fontkey]; - - return $this->tpl; - } else { - return false; - } - } - - /** - * Use a Template in current Page or other Template - * - * You can use a template in a page or in another template. - * You can give the used template a new size like you use the Image()-method. - * All parameters are optional. The width or height is calculated automaticaly - * if one is given. If no parameter is given the origin size as defined in - * beginTemplate() is used. - * The calculated or used width and height are returned as an array. - * - * @param int $tplidx A valid template-Id - * @param int $_x The x-position - * @param int $_y The y-position - * @param int $_w The new width of the template - * @param int $_h The new height of the template - * @retrun array The height and width of the template - */ - function useTemplate($tplidx, $_x = null, $_y = null, $_w = 0, $_h = 0) { - if ($this->page <= 0) - $this->error('You have to add a page first!'); - - if (!isset($this->tpls[$tplidx])) - $this->error('Template does not exist!'); - - if ($this->_intpl) { - $this->_res['tpl'][$this->tpl]['tpls'][$tplidx] =& $this->tpls[$tplidx]; - } - - $tpl =& $this->tpls[$tplidx]; - $w = $tpl['w']; - $h = $tpl['h']; - - if ($_x == null) - $_x = 0; - if ($_y == null) - $_y = 0; - - $_x += $tpl['x']; - $_y += $tpl['y']; - - $wh = $this->getTemplateSize($tplidx, $_w, $_h); - $_w = $wh['w']; - $_h = $wh['h']; - - $tData = array( - 'x' => $this->x, - 'y' => $this->y, - 'w' => $_w, - 'h' => $_h, - 'scaleX' => ($_w / $w), - 'scaleY' => ($_h / $h), - 'tx' => $_x, - 'ty' => ($this->h - $_y - $_h), - 'lty' => ($this->h - $_y - $_h) - ($this->h - $h) * ($_h / $h) - ); - - $this->_out(sprintf('q %.4F 0 0 %.4F %.4F %.4F cm', $tData['scaleX'], $tData['scaleY'], $tData['tx'] * $this->k, $tData['ty'] * $this->k)); // Translate - $this->_out(sprintf('%s%d Do Q', $this->tplprefix, $tplidx)); - - $this->lastUsedTemplateData = $tData; - - return array('w' => $_w, 'h' => $_h); - } - - /** - * Get The calculated Size of a Template - * - * If one size is given, this method calculates the other one. - * - * @param int $tplidx A valid template-Id - * @param int $_w The width of the template - * @param int $_h The height of the template - * @return array The height and width of the template - */ - function getTemplateSize($tplidx, $_w = 0, $_h = 0) { - if (!isset($this->tpls[$tplidx])) - return false; - - $tpl =& $this->tpls[$tplidx]; - $w = $tpl['w']; - $h = $tpl['h']; - - if ($_w == 0 and $_h == 0) { - $_w = $w; - $_h = $h; - } - - if($_w == 0) - $_w = $_h * $w / $h; - if($_h == 0) - $_h = $_w * $h / $w; - - return array("w" => $_w, "h" => $_h); - } - - /** - * See FPDF/TCPDF-Documentation ;-) - */ - public function SetFont($family, $style = '', $size = 0) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::SetFont'), $args); - } - - parent::SetFont($family, $style, $size); - - $fontkey = $this->FontFamily . $this->FontStyle; - - if ($this->_intpl) { - $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; - } else { - $this->_res['page'][$this->page]['fonts'][$fontkey] =& $this->fonts[$fontkey]; - } - } - - /** - * See FPDF/TCPDF-Documentation ;-) - */ - function Image( - $file, $x = '', $y = '', $w = 0, $h = 0, $type = '', $link = '', $align = '', $resize = false, - $dpi = 300, $palign = '', $ismask = false, $imgmask = false, $border = 0, $fitbox = false, - $hidden = false, $fitonpage = false, $alt = false, $altimgs = array() - ) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::Image'), $args); - } - - $ret = parent::Image($file, $x, $y, $w, $h, $type, $link); - if ($this->_intpl) { - $this->_res['tpl'][$this->tpl]['images'][$file] =& $this->images[$file]; - } else { - $this->_res['page'][$this->page]['images'][$file] =& $this->images[$file]; - } - - return $ret; - } - - /** - * See FPDF-Documentation ;-) - * - * AddPage is not available when you're "in" a template. - */ - function AddPage($orientation = '', $format = '', $keepmargins = false, $tocpage = false) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::AddPage'), $args); - } - - if ($this->_intpl) - $this->Error('Adding pages in templates isn\'t possible!'); - - parent::AddPage($orientation, $format); - } - - /** - * Preserve adding Links in Templates ...won't work - */ - function Link($x, $y, $w, $h, $link, $spaces = 0) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::Link'), $args); - } - - if ($this->_intpl) - $this->Error('Using links in templates aren\'t possible!'); - - parent::Link($x, $y, $w, $h, $link); - } - - function AddLink() { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::AddLink'), $args); - } - - if ($this->_intpl) - $this->Error('Adding links in templates aren\'t possible!'); - return parent::AddLink(); - } - - function SetLink($link, $y = 0, $page = -1) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::SetLink'), $args); - } - - if ($this->_intpl) - $this->Error('Setting links in templates aren\'t possible!'); - parent::SetLink($link, $y, $page); - } - - /** - * Private Method that writes the form xobjects - */ - function _putformxobjects() { - $filter=($this->compress) ? '/Filter /FlateDecode ' : ''; - reset($this->tpls); - foreach($this->tpls AS $tplidx => $tpl) { - - $p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer']; - $this->_newobj(); - $this->tpls[$tplidx]['n'] = $this->n; - $this->_out('<<'.$filter.'/Type /XObject'); - $this->_out('/Subtype /Form'); - $this->_out('/FormType 1'); - $this->_out(sprintf('/BBox [%.2F %.2F %.2F %.2F]', - // llx - $tpl['x'] * $this->k, - // lly - -$tpl['y'] * $this->k, - // urx - ($tpl['w'] + $tpl['x']) * $this->k, - // ury - ($tpl['h'] - $tpl['y']) * $this->k - )); - - if ($tpl['x'] != 0 || $tpl['y'] != 0) { - $this->_out(sprintf('/Matrix [1 0 0 1 %.5F %.5F]', - -$tpl['x'] * $this->k * 2, $tpl['y'] * $this->k * 2 - )); - } - - $this->_out('/Resources '); - - $this->_out('<_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) { - $this->_out('/Font <<'); - foreach($this->_res['tpl'][$tplidx]['fonts'] as $font) - $this->_out('/F' . $font['i'] . ' ' . $font['n'] . ' 0 R'); - $this->_out('>>'); - } - if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) || - isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) - { - $this->_out('/XObject <<'); - if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) { - foreach($this->_res['tpl'][$tplidx]['images'] as $image) - $this->_out('/I' . $image['i'] . ' ' . $image['n'] . ' 0 R'); - } - if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) { - foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $tpl) - $this->_out($this->tplprefix . $i . ' ' . $tpl['n'] . ' 0 R'); - } - $this->_out('>>'); - } - $this->_out('>>'); - - $this->_out('/Length ' . strlen($p) . ' >>'); - $this->_putstream($p); - $this->_out('endobj'); - } - } - - /** - * Overwritten to add _putformxobjects() after _putimages() - * - */ - function _putimages() { - parent::_putimages(); - $this->_putformxobjects(); - } - - function _putxobjectdict() { - parent::_putxobjectdict(); - - if (count($this->tpls)) { - foreach($this->tpls as $tplidx => $tpl) { - $this->_out(sprintf('%s%d %d 0 R', $this->tplprefix, $tplidx, $tpl['n'])); - } - } - } - - /** - * Private Method - */ - function _out($s) { - if ($this->state == 2 && $this->_intpl) { - $this->tpls[$this->tpl]['buffer'] .= $s . "\n"; - } else { - parent::_out($s); - } - } -} +Error('This method is only usable with FPDF. Use TCPDF methods startTemplate() instead.'); + return; + } + + if ($this->page <= 0) + $this->error("You have to add a page to fpdf first!"); + + if ($x == null) + $x = 0; + if ($y == null) + $y = 0; + if ($w == null) + $w = $this->w; + if ($h == null) + $h = $this->h; + + // Save settings + $this->tpl++; + $tpl =& $this->tpls[$this->tpl]; + $tpl = array( + 'o_x' => $this->x, + 'o_y' => $this->y, + 'o_AutoPageBreak' => $this->AutoPageBreak, + 'o_bMargin' => $this->bMargin, + 'o_tMargin' => $this->tMargin, + 'o_lMargin' => $this->lMargin, + 'o_rMargin' => $this->rMargin, + 'o_h' => $this->h, + 'o_w' => $this->w, + 'o_FontFamily' => $this->FontFamily, + 'o_FontStyle' => $this->FontStyle, + 'o_FontSizePt' => $this->FontSizePt, + 'o_FontSize' => $this->FontSize, + 'buffer' => '', + 'x' => $x, + 'y' => $y, + 'w' => $w, + 'h' => $h + ); + + $this->SetAutoPageBreak(false); + + // Define own high and width to calculate possitions correct + $this->h = $h; + $this->w = $w; + + $this->_intpl = true; + $this->SetXY($x + $this->lMargin, $y + $this->tMargin); + $this->SetRightMargin($this->w - $w + $this->rMargin); + + if ($this->CurrentFont) { + $fontkey = $this->FontFamily . $this->FontStyle; + $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; + + $this->_out(sprintf('BT /F%d %.2f Tf ET', $this->CurrentFont['i'], $this->FontSizePt)); + } + + return $this->tpl; + } + + /** + * End Template + * + * This method ends a template and reset initiated variables on beginTemplate. + * + * @return mixed If a template is opened, the ID is returned. If not a false is returned. + */ + function endTemplate() { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::endTemplate'), $args); + } + + if ($this->_intpl) { + $this->_intpl = false; + $tpl =& $this->tpls[$this->tpl]; + $this->SetXY($tpl['o_x'], $tpl['o_y']); + $this->tMargin = $tpl['o_tMargin']; + $this->lMargin = $tpl['o_lMargin']; + $this->rMargin = $tpl['o_rMargin']; + $this->h = $tpl['o_h']; + $this->w = $tpl['o_w']; + $this->SetAutoPageBreak($tpl['o_AutoPageBreak'], $tpl['o_bMargin']); + + $this->FontFamily = $tpl['o_FontFamily']; + $this->FontStyle = $tpl['o_FontStyle']; + $this->FontSizePt = $tpl['o_FontSizePt']; + $this->FontSize = $tpl['o_FontSize']; + + $fontkey = $this->FontFamily . $this->FontStyle; + if ($fontkey) + $this->CurrentFont =& $this->fonts[$fontkey]; + + return $this->tpl; + } else { + return false; + } + } + + /** + * Use a Template in current Page or other Template + * + * You can use a template in a page or in another template. + * You can give the used template a new size like you use the Image()-method. + * All parameters are optional. The width or height is calculated automaticaly + * if one is given. If no parameter is given the origin size as defined in + * beginTemplate() is used. + * The calculated or used width and height are returned as an array. + * + * @param int $tplidx A valid template-Id + * @param int $_x The x-position + * @param int $_y The y-position + * @param int $_w The new width of the template + * @param int $_h The new height of the template + * @retrun array The height and width of the template + */ + function useTemplate($tplidx, $_x = null, $_y = null, $_w = 0, $_h = 0) { + if ($this->page <= 0) + $this->error('You have to add a page first!'); + + if (!isset($this->tpls[$tplidx])) + $this->error('Template does not exist!'); + + if ($this->_intpl) { + $this->_res['tpl'][$this->tpl]['tpls'][$tplidx] =& $this->tpls[$tplidx]; + } + + $tpl =& $this->tpls[$tplidx]; + $w = $tpl['w']; + $h = $tpl['h']; + + if ($_x == null) + $_x = 0; + if ($_y == null) + $_y = 0; + + $_x += $tpl['x']; + $_y += $tpl['y']; + + $wh = $this->getTemplateSize($tplidx, $_w, $_h); + $_w = $wh['w']; + $_h = $wh['h']; + + $tData = array( + 'x' => $this->x, + 'y' => $this->y, + 'w' => $_w, + 'h' => $_h, + 'scaleX' => ($_w / $w), + 'scaleY' => ($_h / $h), + 'tx' => $_x, + 'ty' => ($this->h - $_y - $_h), + 'lty' => ($this->h - $_y - $_h) - ($this->h - $h) * ($_h / $h) + ); + + $this->_out(sprintf('q %.4F 0 0 %.4F %.4F %.4F cm', $tData['scaleX'], $tData['scaleY'], $tData['tx'] * $this->k, $tData['ty'] * $this->k)); // Translate + $this->_out(sprintf('%s%d Do Q', $this->tplprefix, $tplidx)); + + $this->lastUsedTemplateData = $tData; + + return array('w' => $_w, 'h' => $_h); + } + + /** + * Get The calculated Size of a Template + * + * If one size is given, this method calculates the other one. + * + * @param int $tplidx A valid template-Id + * @param int $_w The width of the template + * @param int $_h The height of the template + * @return array The height and width of the template + */ + function getTemplateSize($tplidx, $_w = 0, $_h = 0) { + if (!isset($this->tpls[$tplidx])) + return false; + + $tpl =& $this->tpls[$tplidx]; + $w = $tpl['w']; + $h = $tpl['h']; + + if ($_w == 0 and $_h == 0) { + $_w = $w; + $_h = $h; + } + + if($_w == 0) + $_w = $_h * $w / $h; + if($_h == 0) + $_h = $_w * $h / $w; + + return array("w" => $_w, "h" => $_h); + } + + /** + * See FPDF/TCPDF-Documentation ;-) + */ + public function SetFont($family, $style = '', $size = 0) { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::SetFont'), $args); + } + + parent::SetFont($family, $style, $size); + + $fontkey = $this->FontFamily . $this->FontStyle; + + if ($this->_intpl) { + $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; + } else { + $this->_res['page'][$this->page]['fonts'][$fontkey] =& $this->fonts[$fontkey]; + } + } + + /** + * See FPDF/TCPDF-Documentation ;-) + */ + function Image( + $file, $x = '', $y = '', $w = 0, $h = 0, $type = '', $link = '', $align = '', $resize = false, + $dpi = 300, $palign = '', $ismask = false, $imgmask = false, $border = 0, $fitbox = false, + $hidden = false, $fitonpage = false, $alt = false, $altimgs = array() + ) { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::Image'), $args); + } + + $ret = parent::Image($file, $x, $y, $w, $h, $type, $link); + if ($this->_intpl) { + $this->_res['tpl'][$this->tpl]['images'][$file] =& $this->images[$file]; + } else { + $this->_res['page'][$this->page]['images'][$file] =& $this->images[$file]; + } + + return $ret; + } + + /** + * See FPDF-Documentation ;-) + * + * AddPage is not available when you're "in" a template. + */ + function AddPage($orientation = '', $format = '', $keepmargins = false, $tocpage = false) { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::AddPage'), $args); + } + + if ($this->_intpl) + $this->Error('Adding pages in templates isn\'t possible!'); + + parent::AddPage($orientation, $format); + } + + /** + * Preserve adding Links in Templates ...won't work + */ + function Link($x, $y, $w, $h, $link, $spaces = 0) { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::Link'), $args); + } + + if ($this->_intpl) + $this->Error('Using links in templates aren\'t possible!'); + + parent::Link($x, $y, $w, $h, $link); + } + + function AddLink() { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::AddLink'), $args); + } + + if ($this->_intpl) + $this->Error('Adding links in templates aren\'t possible!'); + return parent::AddLink(); + } + + function SetLink($link, $y = 0, $page = -1) { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::SetLink'), $args); + } + + if ($this->_intpl) + $this->Error('Setting links in templates aren\'t possible!'); + parent::SetLink($link, $y, $page); + } + + /** + * Private Method that writes the form xobjects + */ + function _putformxobjects() { + $filter=($this->compress) ? '/Filter /FlateDecode ' : ''; + reset($this->tpls); + foreach($this->tpls AS $tplidx => $tpl) { + + $p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer']; + $this->_newobj(); + $this->tpls[$tplidx]['n'] = $this->n; + $this->_out('<<'.$filter.'/Type /XObject'); + $this->_out('/Subtype /Form'); + $this->_out('/FormType 1'); + $this->_out(sprintf('/BBox [%.2F %.2F %.2F %.2F]', + // llx + $tpl['x'] * $this->k, + // lly + -$tpl['y'] * $this->k, + // urx + ($tpl['w'] + $tpl['x']) * $this->k, + // ury + ($tpl['h'] - $tpl['y']) * $this->k + )); + + if ($tpl['x'] != 0 || $tpl['y'] != 0) { + $this->_out(sprintf('/Matrix [1 0 0 1 %.5F %.5F]', + -$tpl['x'] * $this->k * 2, $tpl['y'] * $this->k * 2 + )); + } + + $this->_out('/Resources '); + + $this->_out('<_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) { + $this->_out('/Font <<'); + foreach($this->_res['tpl'][$tplidx]['fonts'] as $font) + $this->_out('/F' . $font['i'] . ' ' . $font['n'] . ' 0 R'); + $this->_out('>>'); + } + if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) || + isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) + { + $this->_out('/XObject <<'); + if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) { + foreach($this->_res['tpl'][$tplidx]['images'] as $image) + $this->_out('/I' . $image['i'] . ' ' . $image['n'] . ' 0 R'); + } + if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) { + foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $tpl) + $this->_out($this->tplprefix . $i . ' ' . $tpl['n'] . ' 0 R'); + } + $this->_out('>>'); + } + $this->_out('>>'); + + $this->_out('/Length ' . strlen($p) . ' >>'); + $this->_putstream($p); + $this->_out('endobj'); + } + } + + /** + * Overwritten to add _putformxobjects() after _putimages() + * + */ + function _putimages() { + parent::_putimages(); + $this->_putformxobjects(); + } + + function _putxobjectdict() { + parent::_putxobjectdict(); + + if (count($this->tpls)) { + foreach($this->tpls as $tplidx => $tpl) { + $this->_out(sprintf('%s%d %d 0 R', $this->tplprefix, $tplidx, $tpl['n'])); + } + } + } + + /** + * Private Method + */ + function _out($s) { + if ($this->state == 2 && $this->_intpl) { + $this->tpls[$this->tpl]['buffer'] .= $s . "\n"; + } else { + parent::_out($s); + } + } +} From 7a9de0fecab5ee881873d343c4b79bb5067f3eaf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 4 Mar 2015 20:45:33 +0100 Subject: [PATCH 157/429] CRLF --- htdocs/includes/tcpdi/fpdf_tpl.php | 920 ++++++++++++++--------------- 1 file changed, 460 insertions(+), 460 deletions(-) diff --git a/htdocs/includes/tcpdi/fpdf_tpl.php b/htdocs/includes/tcpdi/fpdf_tpl.php index 86e38b71641..8482ba336ed 100644 --- a/htdocs/includes/tcpdi/fpdf_tpl.php +++ b/htdocs/includes/tcpdi/fpdf_tpl.php @@ -1,460 +1,460 @@ -Error('This method is only usable with FPDF. Use TCPDF methods startTemplate() instead.'); - return; - } - - if ($this->page <= 0) - $this->error("You have to add a page to fpdf first!"); - - if ($x == null) - $x = 0; - if ($y == null) - $y = 0; - if ($w == null) - $w = $this->w; - if ($h == null) - $h = $this->h; - - // Save settings - $this->tpl++; - $tpl =& $this->tpls[$this->tpl]; - $tpl = array( - 'o_x' => $this->x, - 'o_y' => $this->y, - 'o_AutoPageBreak' => $this->AutoPageBreak, - 'o_bMargin' => $this->bMargin, - 'o_tMargin' => $this->tMargin, - 'o_lMargin' => $this->lMargin, - 'o_rMargin' => $this->rMargin, - 'o_h' => $this->h, - 'o_w' => $this->w, - 'o_FontFamily' => $this->FontFamily, - 'o_FontStyle' => $this->FontStyle, - 'o_FontSizePt' => $this->FontSizePt, - 'o_FontSize' => $this->FontSize, - 'buffer' => '', - 'x' => $x, - 'y' => $y, - 'w' => $w, - 'h' => $h - ); - - $this->SetAutoPageBreak(false); - - // Define own high and width to calculate possitions correct - $this->h = $h; - $this->w = $w; - - $this->_intpl = true; - $this->SetXY($x + $this->lMargin, $y + $this->tMargin); - $this->SetRightMargin($this->w - $w + $this->rMargin); - - if ($this->CurrentFont) { - $fontkey = $this->FontFamily . $this->FontStyle; - $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; - - $this->_out(sprintf('BT /F%d %.2f Tf ET', $this->CurrentFont['i'], $this->FontSizePt)); - } - - return $this->tpl; - } - - /** - * End Template - * - * This method ends a template and reset initiated variables on beginTemplate. - * - * @return mixed If a template is opened, the ID is returned. If not a false is returned. - */ - function endTemplate() { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::endTemplate'), $args); - } - - if ($this->_intpl) { - $this->_intpl = false; - $tpl =& $this->tpls[$this->tpl]; - $this->SetXY($tpl['o_x'], $tpl['o_y']); - $this->tMargin = $tpl['o_tMargin']; - $this->lMargin = $tpl['o_lMargin']; - $this->rMargin = $tpl['o_rMargin']; - $this->h = $tpl['o_h']; - $this->w = $tpl['o_w']; - $this->SetAutoPageBreak($tpl['o_AutoPageBreak'], $tpl['o_bMargin']); - - $this->FontFamily = $tpl['o_FontFamily']; - $this->FontStyle = $tpl['o_FontStyle']; - $this->FontSizePt = $tpl['o_FontSizePt']; - $this->FontSize = $tpl['o_FontSize']; - - $fontkey = $this->FontFamily . $this->FontStyle; - if ($fontkey) - $this->CurrentFont =& $this->fonts[$fontkey]; - - return $this->tpl; - } else { - return false; - } - } - - /** - * Use a Template in current Page or other Template - * - * You can use a template in a page or in another template. - * You can give the used template a new size like you use the Image()-method. - * All parameters are optional. The width or height is calculated automaticaly - * if one is given. If no parameter is given the origin size as defined in - * beginTemplate() is used. - * The calculated or used width and height are returned as an array. - * - * @param int $tplidx A valid template-Id - * @param int $_x The x-position - * @param int $_y The y-position - * @param int $_w The new width of the template - * @param int $_h The new height of the template - * @retrun array The height and width of the template - */ - function useTemplate($tplidx, $_x = null, $_y = null, $_w = 0, $_h = 0) { - if ($this->page <= 0) - $this->error('You have to add a page first!'); - - if (!isset($this->tpls[$tplidx])) - $this->error('Template does not exist!'); - - if ($this->_intpl) { - $this->_res['tpl'][$this->tpl]['tpls'][$tplidx] =& $this->tpls[$tplidx]; - } - - $tpl =& $this->tpls[$tplidx]; - $w = $tpl['w']; - $h = $tpl['h']; - - if ($_x == null) - $_x = 0; - if ($_y == null) - $_y = 0; - - $_x += $tpl['x']; - $_y += $tpl['y']; - - $wh = $this->getTemplateSize($tplidx, $_w, $_h); - $_w = $wh['w']; - $_h = $wh['h']; - - $tData = array( - 'x' => $this->x, - 'y' => $this->y, - 'w' => $_w, - 'h' => $_h, - 'scaleX' => ($_w / $w), - 'scaleY' => ($_h / $h), - 'tx' => $_x, - 'ty' => ($this->h - $_y - $_h), - 'lty' => ($this->h - $_y - $_h) - ($this->h - $h) * ($_h / $h) - ); - - $this->_out(sprintf('q %.4F 0 0 %.4F %.4F %.4F cm', $tData['scaleX'], $tData['scaleY'], $tData['tx'] * $this->k, $tData['ty'] * $this->k)); // Translate - $this->_out(sprintf('%s%d Do Q', $this->tplprefix, $tplidx)); - - $this->lastUsedTemplateData = $tData; - - return array('w' => $_w, 'h' => $_h); - } - - /** - * Get The calculated Size of a Template - * - * If one size is given, this method calculates the other one. - * - * @param int $tplidx A valid template-Id - * @param int $_w The width of the template - * @param int $_h The height of the template - * @return array The height and width of the template - */ - function getTemplateSize($tplidx, $_w = 0, $_h = 0) { - if (!isset($this->tpls[$tplidx])) - return false; - - $tpl =& $this->tpls[$tplidx]; - $w = $tpl['w']; - $h = $tpl['h']; - - if ($_w == 0 and $_h == 0) { - $_w = $w; - $_h = $h; - } - - if($_w == 0) - $_w = $_h * $w / $h; - if($_h == 0) - $_h = $_w * $h / $w; - - return array("w" => $_w, "h" => $_h); - } - - /** - * See FPDF/TCPDF-Documentation ;-) - */ - public function SetFont($family, $style = '', $size = 0) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::SetFont'), $args); - } - - parent::SetFont($family, $style, $size); - - $fontkey = $this->FontFamily . $this->FontStyle; - - if ($this->_intpl) { - $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; - } else { - $this->_res['page'][$this->page]['fonts'][$fontkey] =& $this->fonts[$fontkey]; - } - } - - /** - * See FPDF/TCPDF-Documentation ;-) - */ - function Image( - $file, $x = '', $y = '', $w = 0, $h = 0, $type = '', $link = '', $align = '', $resize = false, - $dpi = 300, $palign = '', $ismask = false, $imgmask = false, $border = 0, $fitbox = false, - $hidden = false, $fitonpage = false, $alt = false, $altimgs = array() - ) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::Image'), $args); - } - - $ret = parent::Image($file, $x, $y, $w, $h, $type, $link); - if ($this->_intpl) { - $this->_res['tpl'][$this->tpl]['images'][$file] =& $this->images[$file]; - } else { - $this->_res['page'][$this->page]['images'][$file] =& $this->images[$file]; - } - - return $ret; - } - - /** - * See FPDF-Documentation ;-) - * - * AddPage is not available when you're "in" a template. - */ - function AddPage($orientation = '', $format = '', $keepmargins = false, $tocpage = false) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::AddPage'), $args); - } - - if ($this->_intpl) - $this->Error('Adding pages in templates isn\'t possible!'); - - parent::AddPage($orientation, $format); - } - - /** - * Preserve adding Links in Templates ...won't work - */ - function Link($x, $y, $w, $h, $link, $spaces = 0) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::Link'), $args); - } - - if ($this->_intpl) - $this->Error('Using links in templates aren\'t possible!'); - - parent::Link($x, $y, $w, $h, $link); - } - - function AddLink() { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::AddLink'), $args); - } - - if ($this->_intpl) - $this->Error('Adding links in templates aren\'t possible!'); - return parent::AddLink(); - } - - function SetLink($link, $y = 0, $page = -1) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::SetLink'), $args); - } - - if ($this->_intpl) - $this->Error('Setting links in templates aren\'t possible!'); - parent::SetLink($link, $y, $page); - } - - /** - * Private Method that writes the form xobjects - */ - function _putformxobjects() { - $filter=($this->compress) ? '/Filter /FlateDecode ' : ''; - reset($this->tpls); - foreach($this->tpls AS $tplidx => $tpl) { - - $p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer']; - $this->_newobj(); - $this->tpls[$tplidx]['n'] = $this->n; - $this->_out('<<'.$filter.'/Type /XObject'); - $this->_out('/Subtype /Form'); - $this->_out('/FormType 1'); - $this->_out(sprintf('/BBox [%.2F %.2F %.2F %.2F]', - // llx - $tpl['x'] * $this->k, - // lly - -$tpl['y'] * $this->k, - // urx - ($tpl['w'] + $tpl['x']) * $this->k, - // ury - ($tpl['h'] - $tpl['y']) * $this->k - )); - - if ($tpl['x'] != 0 || $tpl['y'] != 0) { - $this->_out(sprintf('/Matrix [1 0 0 1 %.5F %.5F]', - -$tpl['x'] * $this->k * 2, $tpl['y'] * $this->k * 2 - )); - } - - $this->_out('/Resources '); - - $this->_out('<_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) { - $this->_out('/Font <<'); - foreach($this->_res['tpl'][$tplidx]['fonts'] as $font) - $this->_out('/F' . $font['i'] . ' ' . $font['n'] . ' 0 R'); - $this->_out('>>'); - } - if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) || - isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) - { - $this->_out('/XObject <<'); - if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) { - foreach($this->_res['tpl'][$tplidx]['images'] as $image) - $this->_out('/I' . $image['i'] . ' ' . $image['n'] . ' 0 R'); - } - if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) { - foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $tpl) - $this->_out($this->tplprefix . $i . ' ' . $tpl['n'] . ' 0 R'); - } - $this->_out('>>'); - } - $this->_out('>>'); - - $this->_out('/Length ' . strlen($p) . ' >>'); - $this->_putstream($p); - $this->_out('endobj'); - } - } - - /** - * Overwritten to add _putformxobjects() after _putimages() - * - */ - function _putimages() { - parent::_putimages(); - $this->_putformxobjects(); - } - - function _putxobjectdict() { - parent::_putxobjectdict(); - - if (count($this->tpls)) { - foreach($this->tpls as $tplidx => $tpl) { - $this->_out(sprintf('%s%d %d 0 R', $this->tplprefix, $tplidx, $tpl['n'])); - } - } - } - - /** - * Private Method - */ - function _out($s) { - if ($this->state == 2 && $this->_intpl) { - $this->tpls[$this->tpl]['buffer'] .= $s . "\n"; - } else { - parent::_out($s); - } - } -} +Error('This method is only usable with FPDF. Use TCPDF methods startTemplate() instead.'); + return; + } + + if ($this->page <= 0) + $this->error("You have to add a page to fpdf first!"); + + if ($x == null) + $x = 0; + if ($y == null) + $y = 0; + if ($w == null) + $w = $this->w; + if ($h == null) + $h = $this->h; + + // Save settings + $this->tpl++; + $tpl =& $this->tpls[$this->tpl]; + $tpl = array( + 'o_x' => $this->x, + 'o_y' => $this->y, + 'o_AutoPageBreak' => $this->AutoPageBreak, + 'o_bMargin' => $this->bMargin, + 'o_tMargin' => $this->tMargin, + 'o_lMargin' => $this->lMargin, + 'o_rMargin' => $this->rMargin, + 'o_h' => $this->h, + 'o_w' => $this->w, + 'o_FontFamily' => $this->FontFamily, + 'o_FontStyle' => $this->FontStyle, + 'o_FontSizePt' => $this->FontSizePt, + 'o_FontSize' => $this->FontSize, + 'buffer' => '', + 'x' => $x, + 'y' => $y, + 'w' => $w, + 'h' => $h + ); + + $this->SetAutoPageBreak(false); + + // Define own high and width to calculate possitions correct + $this->h = $h; + $this->w = $w; + + $this->_intpl = true; + $this->SetXY($x + $this->lMargin, $y + $this->tMargin); + $this->SetRightMargin($this->w - $w + $this->rMargin); + + if ($this->CurrentFont) { + $fontkey = $this->FontFamily . $this->FontStyle; + $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; + + $this->_out(sprintf('BT /F%d %.2f Tf ET', $this->CurrentFont['i'], $this->FontSizePt)); + } + + return $this->tpl; + } + + /** + * End Template + * + * This method ends a template and reset initiated variables on beginTemplate. + * + * @return mixed If a template is opened, the ID is returned. If not a false is returned. + */ + function endTemplate() { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::endTemplate'), $args); + } + + if ($this->_intpl) { + $this->_intpl = false; + $tpl =& $this->tpls[$this->tpl]; + $this->SetXY($tpl['o_x'], $tpl['o_y']); + $this->tMargin = $tpl['o_tMargin']; + $this->lMargin = $tpl['o_lMargin']; + $this->rMargin = $tpl['o_rMargin']; + $this->h = $tpl['o_h']; + $this->w = $tpl['o_w']; + $this->SetAutoPageBreak($tpl['o_AutoPageBreak'], $tpl['o_bMargin']); + + $this->FontFamily = $tpl['o_FontFamily']; + $this->FontStyle = $tpl['o_FontStyle']; + $this->FontSizePt = $tpl['o_FontSizePt']; + $this->FontSize = $tpl['o_FontSize']; + + $fontkey = $this->FontFamily . $this->FontStyle; + if ($fontkey) + $this->CurrentFont =& $this->fonts[$fontkey]; + + return $this->tpl; + } else { + return false; + } + } + + /** + * Use a Template in current Page or other Template + * + * You can use a template in a page or in another template. + * You can give the used template a new size like you use the Image()-method. + * All parameters are optional. The width or height is calculated automaticaly + * if one is given. If no parameter is given the origin size as defined in + * beginTemplate() is used. + * The calculated or used width and height are returned as an array. + * + * @param int $tplidx A valid template-Id + * @param int $_x The x-position + * @param int $_y The y-position + * @param int $_w The new width of the template + * @param int $_h The new height of the template + * @retrun array The height and width of the template + */ + function useTemplate($tplidx, $_x = null, $_y = null, $_w = 0, $_h = 0) { + if ($this->page <= 0) + $this->error('You have to add a page first!'); + + if (!isset($this->tpls[$tplidx])) + $this->error('Template does not exist!'); + + if ($this->_intpl) { + $this->_res['tpl'][$this->tpl]['tpls'][$tplidx] =& $this->tpls[$tplidx]; + } + + $tpl =& $this->tpls[$tplidx]; + $w = $tpl['w']; + $h = $tpl['h']; + + if ($_x == null) + $_x = 0; + if ($_y == null) + $_y = 0; + + $_x += $tpl['x']; + $_y += $tpl['y']; + + $wh = $this->getTemplateSize($tplidx, $_w, $_h); + $_w = $wh['w']; + $_h = $wh['h']; + + $tData = array( + 'x' => $this->x, + 'y' => $this->y, + 'w' => $_w, + 'h' => $_h, + 'scaleX' => ($_w / $w), + 'scaleY' => ($_h / $h), + 'tx' => $_x, + 'ty' => ($this->h - $_y - $_h), + 'lty' => ($this->h - $_y - $_h) - ($this->h - $h) * ($_h / $h) + ); + + $this->_out(sprintf('q %.4F 0 0 %.4F %.4F %.4F cm', $tData['scaleX'], $tData['scaleY'], $tData['tx'] * $this->k, $tData['ty'] * $this->k)); // Translate + $this->_out(sprintf('%s%d Do Q', $this->tplprefix, $tplidx)); + + $this->lastUsedTemplateData = $tData; + + return array('w' => $_w, 'h' => $_h); + } + + /** + * Get The calculated Size of a Template + * + * If one size is given, this method calculates the other one. + * + * @param int $tplidx A valid template-Id + * @param int $_w The width of the template + * @param int $_h The height of the template + * @return array The height and width of the template + */ + function getTemplateSize($tplidx, $_w = 0, $_h = 0) { + if (!isset($this->tpls[$tplidx])) + return false; + + $tpl =& $this->tpls[$tplidx]; + $w = $tpl['w']; + $h = $tpl['h']; + + if ($_w == 0 and $_h == 0) { + $_w = $w; + $_h = $h; + } + + if($_w == 0) + $_w = $_h * $w / $h; + if($_h == 0) + $_h = $_w * $h / $w; + + return array("w" => $_w, "h" => $_h); + } + + /** + * See FPDF/TCPDF-Documentation ;-) + */ + public function SetFont($family, $style = '', $size = 0) { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::SetFont'), $args); + } + + parent::SetFont($family, $style, $size); + + $fontkey = $this->FontFamily . $this->FontStyle; + + if ($this->_intpl) { + $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; + } else { + $this->_res['page'][$this->page]['fonts'][$fontkey] =& $this->fonts[$fontkey]; + } + } + + /** + * See FPDF/TCPDF-Documentation ;-) + */ + function Image( + $file, $x = '', $y = '', $w = 0, $h = 0, $type = '', $link = '', $align = '', $resize = false, + $dpi = 300, $palign = '', $ismask = false, $imgmask = false, $border = 0, $fitbox = false, + $hidden = false, $fitonpage = false, $alt = false, $altimgs = array() + ) { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::Image'), $args); + } + + $ret = parent::Image($file, $x, $y, $w, $h, $type, $link); + if ($this->_intpl) { + $this->_res['tpl'][$this->tpl]['images'][$file] =& $this->images[$file]; + } else { + $this->_res['page'][$this->page]['images'][$file] =& $this->images[$file]; + } + + return $ret; + } + + /** + * See FPDF-Documentation ;-) + * + * AddPage is not available when you're "in" a template. + */ + function AddPage($orientation = '', $format = '', $keepmargins = false, $tocpage = false) { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::AddPage'), $args); + } + + if ($this->_intpl) + $this->Error('Adding pages in templates isn\'t possible!'); + + parent::AddPage($orientation, $format); + } + + /** + * Preserve adding Links in Templates ...won't work + */ + function Link($x, $y, $w, $h, $link, $spaces = 0) { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::Link'), $args); + } + + if ($this->_intpl) + $this->Error('Using links in templates aren\'t possible!'); + + parent::Link($x, $y, $w, $h, $link); + } + + function AddLink() { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::AddLink'), $args); + } + + if ($this->_intpl) + $this->Error('Adding links in templates aren\'t possible!'); + return parent::AddLink(); + } + + function SetLink($link, $y = 0, $page = -1) { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::SetLink'), $args); + } + + if ($this->_intpl) + $this->Error('Setting links in templates aren\'t possible!'); + parent::SetLink($link, $y, $page); + } + + /** + * Private Method that writes the form xobjects + */ + function _putformxobjects() { + $filter=($this->compress) ? '/Filter /FlateDecode ' : ''; + reset($this->tpls); + foreach($this->tpls AS $tplidx => $tpl) { + + $p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer']; + $this->_newobj(); + $this->tpls[$tplidx]['n'] = $this->n; + $this->_out('<<'.$filter.'/Type /XObject'); + $this->_out('/Subtype /Form'); + $this->_out('/FormType 1'); + $this->_out(sprintf('/BBox [%.2F %.2F %.2F %.2F]', + // llx + $tpl['x'] * $this->k, + // lly + -$tpl['y'] * $this->k, + // urx + ($tpl['w'] + $tpl['x']) * $this->k, + // ury + ($tpl['h'] - $tpl['y']) * $this->k + )); + + if ($tpl['x'] != 0 || $tpl['y'] != 0) { + $this->_out(sprintf('/Matrix [1 0 0 1 %.5F %.5F]', + -$tpl['x'] * $this->k * 2, $tpl['y'] * $this->k * 2 + )); + } + + $this->_out('/Resources '); + + $this->_out('<_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) { + $this->_out('/Font <<'); + foreach($this->_res['tpl'][$tplidx]['fonts'] as $font) + $this->_out('/F' . $font['i'] . ' ' . $font['n'] . ' 0 R'); + $this->_out('>>'); + } + if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) || + isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) + { + $this->_out('/XObject <<'); + if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) { + foreach($this->_res['tpl'][$tplidx]['images'] as $image) + $this->_out('/I' . $image['i'] . ' ' . $image['n'] . ' 0 R'); + } + if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) { + foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $tpl) + $this->_out($this->tplprefix . $i . ' ' . $tpl['n'] . ' 0 R'); + } + $this->_out('>>'); + } + $this->_out('>>'); + + $this->_out('/Length ' . strlen($p) . ' >>'); + $this->_putstream($p); + $this->_out('endobj'); + } + } + + /** + * Overwritten to add _putformxobjects() after _putimages() + * + */ + function _putimages() { + parent::_putimages(); + $this->_putformxobjects(); + } + + function _putxobjectdict() { + parent::_putxobjectdict(); + + if (count($this->tpls)) { + foreach($this->tpls as $tplidx => $tpl) { + $this->_out(sprintf('%s%d %d 0 R', $this->tplprefix, $tplidx, $tpl['n'])); + } + } + } + + /** + * Private Method + */ + function _out($s) { + if ($this->state == 2 && $this->_intpl) { + $this->tpls[$this->tpl]['buffer'] .= $s . "\n"; + } else { + parent::_out($s); + } + } +} From 8e29dcdb79866858a9970d3d9bbd33c270ead8bf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 4 Mar 2015 21:59:03 +0100 Subject: [PATCH 158/429] Some fix after merging bank account number form --- htdocs/compta/bank/card.php | 60 +++++++++++----------- htdocs/compta/bank/class/account.class.php | 28 +++++----- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/htdocs/compta/bank/card.php b/htdocs/compta/bank/card.php index 0b4307f8a98..c84e7f47482 100644 --- a/htdocs/compta/bank/card.php +++ b/htdocs/compta/bank/card.php @@ -34,6 +34,7 @@ require_once DOL_DOCUMENT_ROOT . '/compta/bank/class/account.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/extrafields.class.php'; $langs->load("banks"); +$langs->load("bills"); $langs->load("categories"); $langs->load("companies"); $langs->load("compta"); @@ -70,7 +71,7 @@ if ($_POST["action"] == 'add') $account->clos = $_POST["clos"]; $account->rappro = (isset($_POST["norappro"]) && $_POST["norappro"])?0:1; $account->url = $_POST["url"]; - + $account->bank = trim($_POST["bank"]); $account->code_banque = trim($_POST["code_banque"]); $account->code_guichet = trim($_POST["code_guichet"]); @@ -94,8 +95,8 @@ if ($_POST["action"] == 'add') $account->state_id = $_POST["account_state_id"]; $account->country_id = $_POST["account_country_id"]; - $account->min_allowed = $_POST["account_min_allowed"]; - $account->min_desired = $_POST["account_min_desired"]; + $account->min_allowed = GETPOST("account_min_allowed",'int'); + $account->min_desired = GETPOST("account_min_desired",'int'); $account->comment = trim($_POST["account_comment"]); if ($conf->global->MAIN_BANK_ACCOUNTANCY_CODE_ALWAYS_REQUIRED && empty($account->account_number)) @@ -169,8 +170,8 @@ if ($_POST["action"] == 'update' && ! $_POST["cancel"]) $account->state_id = $_POST["account_state_id"]; $account->country_id = $_POST["account_country_id"]; - $account->min_allowed = $_POST["account_min_allowed"]; - $account->min_desired = $_POST["account_min_desired"]; + $account->min_allowed = GETPOST("account_min_allowed",'int'); + $account->min_desired = GETPOST("account_min_desired",'int'); $account->comment = trim($_POST["account_comment"]); if ($conf->global->MAIN_BANK_ACCOUNTANCY_CODE_ALWAYS_REQUIRED && empty($account->account_number)) @@ -251,9 +252,6 @@ if ($action == 'create') document.formsoc.action.value="create"; document.formsoc.submit(); }); - })'."\n"; - - print 'jQuery(document).ready(function () { jQuery("#selectaccount_country_id").change(function() { document.formsoc.action.value="create"; document.formsoc.submit(); @@ -275,7 +273,7 @@ if ($action == 'create') // Label print '
'.$langs->trans("LabelBankCashAccount").'
'.$langs->trans("AccountType").'
'.$langs->trans("BankAccountCountry").''; + // Country $selectedcode=''; if (isset($_POST["account_country_id"])) { $selectedcode=$_POST["account_country_id"]?$_POST["account_country_id"]:$account->country_code; } else if (empty($selectedcode)) $selectedcode=$mysoc->country_code; + $account->country_code = getCountry($selectedcode, 2); // Force country code on account to have following field on bank fields matching country rules + + print '
'.$langs->trans("BankAccountCountry").''; print $form->select_country($selectedcode,'account_country_id'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '
'; // Editor wysiwyg require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - $doleditor=new DolEditor('account_comment',$account->comment,'',200,'dolibarr_notes','',false,true,$conf->global->FCKEDITOR_ENABLE_SOCIETE,10,70); + $doleditor=new DolEditor('account_comment',(GETPOST("account_comment")?GETPOST("account_comment"):$account->comment),'',90,'dolibarr_notes','',false,true,$conf->global->FCKEDITOR_ENABLE_SOCIETE,4,70); $doleditor->Create(); print '
'.$langs->trans("InitialBankBalance").'solde)).'">
solde)).'">
'.$langs->trans("Date").''; @@ -445,10 +445,10 @@ if ($action == 'create') if ($account->getCountryCode() == 'IN') $bickey="SWIFT"; // IBAN - print '
'.$langs->trans($ibankey).'
'.$langs->trans($ibankey).'
'.$langs->trans($bickey).'
'.$langs->trans($bickey).'
'.$langs->trans("BankAccountDomiciliation").''; @@ -468,25 +468,25 @@ if ($action == 'create') print '
'; print '
'; } - + print ''; // Accountancy code if (! empty($conf->global->MAIN_BANK_ACCOUNTANCY_CODE_ALWAYS_REQUIRED)) { print ''; - print ''; + print ''; } else { print ''; - print ''; + print ''; } // Accountancy journal if (! empty($conf->accounting->enabled)) { print ''; - print ''; + print ''; } print '
'.$langs->trans("AccountancyCode").'
account_number).'">
'.$langs->trans("AccountancyCode").'
account_number).'">
'.$langs->trans("AccountancyJournal").'
accountancy_journal).'">
'; @@ -599,7 +599,7 @@ else print "
'.$langs->trans("Comment").''.$account->comment.'
'.dol_htmlentitiesbr($account->comment).'
'; print '
'; - + if ($account->type == 0 || $account->type == 1) { print ''; - + print ''; print ''; @@ -783,7 +783,7 @@ else document.formsoc.submit(); }); })'."\n"; - + print 'jQuery(document).ready(function () { jQuery("#selectaccount_country_id").change(function() { document.formsoc.action.value="edit"; @@ -834,11 +834,13 @@ else // Country $account->country_id=$account->country_id?$account->country_id:$mysoc->country_id; - print ''; - print ''; + print ''; @@ -881,7 +883,7 @@ else print ''; @@ -898,7 +900,7 @@ else if ($_POST["type"] == 0 || $_POST["type"] == 1) { print '
'.$langs->trans("BankName").''.$account->bank.'
'.$langs->trans("Country").''; $selectedcode=$account->country_code; if (isset($_POST["account_country_id"])) $selectedcode=$_POST["account_country_id"]; else if (empty($selectedcode)) $selectedcode=$mysoc->country_code; + $account->country_code = getCountry($selectedcode, 2); // Force country code on account to have following field on bank fields matching country rules + + print '
'.$langs->trans("Country").''; print $form->select_country($selectedcode,'account_country_id'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '
'; // Editor wysiwyg require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - $doleditor=new DolEditor('account_comment',(isset($_POST["account_comment"])?$_POST["account_comment"]:$account->comment),'',200,'dolibarr_notes','',false,true,$conf->global->FCKEDITOR_ENABLE_SOCIETE,10,70); + $doleditor=new DolEditor('account_comment',(GETPOST("account_comment")?GETPOST("account_comment"):$account->comment),'',90,'dolibarr_notes','',false,true,$conf->global->FCKEDITOR_ENABLE_SOCIETE,4,70); $doleditor->Create(); print '
'; - + // If bank account print ''; print ''; diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index 98ef24e177d..cfbda320fb7 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -468,7 +468,7 @@ class Account extends CommonObject $this->error=$this->db->lasterror(); return -3; } - + // Actions on extra fields (by external module or standard code) $hookmanager->initHooks(array('bankdao')); $parameters=array('id'=>$this->id); @@ -513,8 +513,6 @@ class Account extends CommonObject global $langs,$conf, $hookmanager; // Clean parameters - if (! $this->min_allowed) $this->min_allowed=0; - if (! $this->min_desired) $this->min_desired=0; $this->state_id = ($this->state_id?$this->state_id:$this->state_id); $this->country_id = ($this->country_id?$this->country_id:$this->country_id); @@ -544,7 +542,7 @@ class Account extends CommonObject $sql.= ",url = ".($this->url?"'".$this->url."'":"null"); $sql.= ",account_number = '".$this->account_number."'"; $sql.= ",accountancy_journal = '".$this->accountancy_journal."'"; - + $sql.= ",bank = '".$this->db->escape($this->bank)."'"; $sql.= ",code_banque='".$this->code_banque."'"; $sql.= ",code_guichet='".$this->code_guichet."'"; @@ -558,8 +556,8 @@ class Account extends CommonObject $sql.= ",currency_code = '".$this->currency_code."'"; - $sql.= ",min_allowed = '".price2num($this->min_allowed)."'"; - $sql.= ",min_desired = '".price2num($this->min_desired)."'"; + $sql.= ",min_allowed = ".($this->min_allowed != '' ? price2num($this->min_allowed) : "null"); + $sql.= ",min_desired = ".($this->min_desired != '' ? price2num($this->min_desired) : "null"); $sql.= ",comment = '".$this->db->escape($this->comment)."'"; $sql.= ",state_id = ".($this->state_id>0?"'".$this->state_id."'":"null"); @@ -572,7 +570,7 @@ class Account extends CommonObject $result = $this->db->query($sql); if ($result) { - + // Actions on extra fields (by external module or standard code) $hookmanager->initHooks(array('bankdao')); $parameters=array('id'=>$this->id); @@ -589,8 +587,8 @@ class Account extends CommonObject } } else if ($reshook < 0) return -1; - - + + return 1; } else @@ -736,15 +734,15 @@ class Account extends CommonObject $this->min_allowed = $obj->min_allowed; $this->min_desired = $obj->min_desired; $this->comment = $obj->comment; - + // Retreive all extrafield for thirdparty // fetch optionals attributes and labels require_once(DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'); $extrafields=new ExtraFields($this->db); $extralabels=$extrafields->fetch_name_optionals_label($this->table_element,true); $this->fetch_optionals($this->id,$extralabels); - - + + return 1; } else @@ -776,7 +774,7 @@ class Account extends CommonObject dol_syslog(get_class($this)."::delete", LOG_DEBUG); $result = $this->db->query($sql); if ($result) { - + // Remove extrafields if ((empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used { @@ -787,7 +785,7 @@ class Account extends CommonObject dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR); } } - + return 1; } else { @@ -1076,7 +1074,7 @@ class Account extends CommonObject * * @return int 0=No bank code need + Account number is enough * 1=Need 2 fields for bank code: Bank, Desk (France, Spain, ...) + Account number and key - * 2=Neek 1 field for bank code: Bank only (Sort code for Great Britain, BSB for Australia) + Account number + * 2=Need 1 field for bank code: Bank only (Sort code for Great Britain, BSB for Australia) + Account number */ function useDetailedBBAN() { From 5c36db06f60483772b7568b0c0182225d7728dce Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 4 Mar 2015 23:04:37 +0100 Subject: [PATCH 159/429] Add missing files --- htdocs/install/mysql/data/llx_c_incoterms.sql | 41 +++++++++++++++++++ .../mysql/tables/llx_c_incoterms.key.sql | 19 +++++++++ .../install/mysql/tables/llx_c_incoterms.sql | 25 +++++++++++ 3 files changed, 85 insertions(+) create mode 100644 htdocs/install/mysql/data/llx_c_incoterms.sql create mode 100644 htdocs/install/mysql/tables/llx_c_incoterms.key.sql create mode 100644 htdocs/install/mysql/tables/llx_c_incoterms.sql diff --git a/htdocs/install/mysql/data/llx_c_incoterms.sql b/htdocs/install/mysql/data/llx_c_incoterms.sql new file mode 100644 index 00000000000..ad9b09f09fc --- /dev/null +++ b/htdocs/install/mysql/data/llx_c_incoterms.sql @@ -0,0 +1,41 @@ +-- Copyright (C) 2001-2004 Rodolphe Quiedeville +-- Copyright (C) 2003 Jean-Louis Bergamo +-- Copyright (C) 2004-2009 Laurent Destailleur +-- Copyright (C) 2004 Benoit Mortier +-- Copyright (C) 2004 Guillaume Delecourt +-- Copyright (C) 2005-2009 Regis Houssin +-- Copyright (C) 2007 Patrick Raguin +-- +-- 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 . +-- +-- + +-- +-- Ne pas placer de commentaire en fin de ligne, ce fichier est parsé lors +-- de l'install et tous les sigles '--' sont supprimés. +-- + + +INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('EXW', 'Ex Works, au départ non chargé, non dédouané sortie d''usine (uniquement adapté aux flux domestiques, nationaux)', 1); +INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('FCA', 'Free Carrier, marchandises dédouanées et chargées dans le pays de départ, chez le vendeur ou chez le commissionnaire de transport de l''acheteur', 1); +INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('FAS', 'Free Alongside Ship, sur le quai du port de départ', 1); +INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('FOB', 'Free On Board, chargé sur le bateau, les frais de chargement dans celui-ci étant fonction du liner term indiqué par la compagnie maritime (à la charge du vendeur)', 1); +INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('CFR', 'Cost and Freight, chargé dans le bateau, livraison au port de départ, frais payés jusqu''au port d''arrivée, sans assurance pour le transport, non déchargé du navire à destination (les frais de déchargement sont inclus ou non au port d''arrivée)', 1); +INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('CIF', 'Cost, Insurance and Freight, chargé sur le bateau, frais jusqu''au port d''arrivée, avec l''assurance marchandise transportée souscrite par le vendeur pour le compte de l''acheteur', 1); +INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('CPT', 'Carriage Paid To, livraison au premier transporteur, frais jusqu''au déchargement du mode de transport, sans assurance pour le transport', 1); +INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('CIP', 'Carriage and Insurance Paid to, idem CPT, avec assurance marchandise transportée souscrite par le vendeur pour le compte de l''acheteur', 1); +INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('DAT', 'Delivered At Terminal, marchandises (déchargées) livrées sur quai, dans un terminal maritime, fluvial, aérien, routier ou ferroviaire désigné (dédouanement import, et post-acheminement payés par l''acheteur)', 1); +INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('DAP', 'Delivered At Place, marchandises (non déchargées) mises à disposition de l''acheteur dans le pays d''importation au lieu précisé dans le contrat (déchargement, dédouanement import payé par l''acheteur)', 1); +INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('DDP', 'Delivered Duty Paid, marchandises (non déchargées) livrées à destination finale, dédouanement import et taxes à la charge du vendeur ; l''acheteur prend en charge uniquement le déchargement (si exclusion des taxes type TVA, le préciser clairement)', 1); + diff --git a/htdocs/install/mysql/tables/llx_c_incoterms.key.sql b/htdocs/install/mysql/tables/llx_c_incoterms.key.sql new file mode 100644 index 00000000000..65614a90c4d --- /dev/null +++ b/htdocs/install/mysql/tables/llx_c_incoterms.key.sql @@ -0,0 +1,19 @@ +-- ======================================================================== +-- Copyright (C) 2009 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_c_incoterms ADD UNIQUE INDEX uk_c_incoterms (code); diff --git a/htdocs/install/mysql/tables/llx_c_incoterms.sql b/htdocs/install/mysql/tables/llx_c_incoterms.sql new file mode 100644 index 00000000000..c960f0fab2f --- /dev/null +++ b/htdocs/install/mysql/tables/llx_c_incoterms.sql @@ -0,0 +1,25 @@ +-- ======================================================================== +-- Copyright (C) 2015 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 . +-- +-- ======================================================================== + +CREATE TABLE llx_c_incoterms ( + rowid integer AUTO_INCREMENT PRIMARY KEY, + code varchar(3) NOT NULL, + libelle varchar(255) NOT NULL, + active tinyint DEFAULT 1 NOT NULL +) ENGINE=innodb; + From 703a6c1b5489546469643abb5ce022c78651db11 Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Thu, 5 Mar 2015 00:38:54 +0100 Subject: [PATCH 160/429] Update modFacture.class.php add fk_bank on bill export, this fields is needed to link with external accounting --- htdocs/core/modules/modFacture.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/modules/modFacture.class.php b/htdocs/core/modules/modFacture.class.php index 86762fbb87c..7b070ae6340 100644 --- a/htdocs/core/modules/modFacture.class.php +++ b/htdocs/core/modules/modFacture.class.php @@ -235,10 +235,10 @@ class modFacture extends DolibarrModules $this->export_label[$r]='CustomersInvoicesAndPayments'; // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_icon[$r]='bill'; $this->export_permission[$r]=array(array("facture","facture","export")); - $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.facnumber'=>"InvoiceRef",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.date_lim_reglement'=>"DateDue",'f.total'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_private'=>"NotePrivate",'f.note_public'=>"NotePublic",'f.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','f.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin','p.rowid'=>'PaymentId','pf.amount'=>'AmountPayment','p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber'); - //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Number",'f.total_ttc'=>"Number",'f.tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Number','p.datep'=>'Date','p.num_paiement'=>'Number'); - $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Number",'f.total_ttc'=>"Number",'f.tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Number','p.datep'=>'Date','p.num_paiement'=>'Number'); - $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice",'p.rowid'=>'payment','pf.amount'=>'payment','p.datep'=>'payment','p.num_paiement'=>'payment','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user'); + $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.facnumber'=>"InvoiceRef",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.date_lim_reglement'=>"DateDue",'f.total'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_private'=>"NotePrivate",'f.note_public'=>"NotePublic",'f.fk_user_author'=>'CreatedById','uc.login'=>'CreatedByLogin','f.fk_user_valid'=>'ValidatedById','uv.login'=>'ValidatedByLogin','p.rowid'=>'PaymentId','pf.amount'=>'AmountPayment','p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber','p.fk_bank'=>'IdTransaction'); + //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Number",'f.total_ttc'=>"Number",'f.tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Number','p.datep'=>'Date','p.num_paiement'=>'Number','p.fk_bank'=>'Number'); + $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text','f.rowid'=>"List:facture:facnumber",'f.facnumber'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.date_lim_reglement'=>"Date",'f.total'=>"Number",'f.total_ttc'=>"Number",'f.tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_private'=>"Text",'f.note_public'=>"Text",'pf.amount'=>'Number','p.datep'=>'Date','p.num_paiement'=>'Number','p.fk_bank'=>'Number'); + $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.facnumber'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.date_lim_reglement'=>"invoice",'f.total'=>"invoice",'f.total_ttc'=>"invoice",'f.tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_private'=>"invoice",'f.note_public'=>"invoice",'p.rowid'=>'payment','pf.amount'=>'payment','p.datep'=>'payment','p.num_paiement'=>'payment','p.fk_bank'=>'payment','f.fk_user_author'=>'user','uc.login'=>'user','f.fk_user_valid'=>'user','uv.login'=>'user'); $this->export_dependencies_array[$r]=array('payment'=>'p.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them // Add extra fields $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture'"; From d549030078b76e2b4589f925be161f1c7161ac4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Thu, 5 Mar 2015 10:20:32 +0100 Subject: [PATCH 161/429] Fixed bug with hide/show checkboxes reported by Ruben Almeida (aruben) --- htdocs/comm/action/index.php | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index 6baa03ba87e..a5b83217c80 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -5,6 +5,7 @@ * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2011 Juanjo Menent * Copyright (C) 2014 Cedric GROSS + * Copyright (C) 2015 Marcos García * * 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 @@ -361,19 +362,23 @@ if (! empty($conf->use_javascript_ajax)) $s.='
' . $langs->trans("LocalAgenda").'  
'; if (is_array($showextcals) && count($showextcals) > 0) { + $s.='' . "\n"; + foreach ($showextcals as $val) { - $htmlname = dol_string_nospecial($val['name']); - $htmlname = dol_string_nospecial($htmlname,'_',array("\.","#")); - $s.='' . "\n"; - $s.='
' . $val ['name'] . '  
'; + $htmlname = md5($val['name']); + + $s.='
' . $val ['name'] . '  
'; } } $s.='
'.$langs->trans("AgendaShowBirthdayEvents").'  
'; @@ -1174,7 +1179,7 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa $numicals[dol_string_nospecial($event->icalname)]++; } $color=$event->icalcolor; - $cssclass=(! empty($event->icalname)?'family_'.dol_string_nospecial($event->icalname):'family_other unmovable'); + $cssclass=(! empty($event->icalname)?'family_ext'.md5($event->icalname):'family_other unmovable'); } else if ($event->type_code == 'BIRTHDAY') { From c9b3cab22b23b2765043d99afc7b766b69778427 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Thu, 5 Mar 2015 10:22:22 +0100 Subject: [PATCH 162/429] Mytasks is not clickable --- htdocs/comm/action/index.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index a5b83217c80..5ba3a4d9b0b 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -348,7 +348,6 @@ if (! empty($conf->use_javascript_ajax)) $s=''; $s.='' . "\n"; From 0ef46b06f400487e7350e94fe8d6346ccbdf0df2 Mon Sep 17 00:00:00 2001 From: guillaume Date: Thu, 5 Mar 2015 10:52:37 +0100 Subject: [PATCH 163/429] Sqlite3-PDO restoration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FR: - Restauration de la version PDO dans sqlite.class.php et désactivation. - Ajout de la classe de base de données Sqlite3 dans sqlite3.class.php EN: - revert of the PDO version of sqlite.class.php and deactivation. - add database class Sqlite3 into sqlite3.class.php. --- htdocs/admin/system/database-tables.php | 3 +- htdocs/core/db/sqlite.class.php | 378 +---- htdocs/core/db/sqlite3.class.php | 1478 +++++++++++++++++ htdocs/install/etape2.php | 4 +- htdocs/install/fileconf.php | 7 +- .../functions/functions.sql | 0 htdocs/install/{sqlite => sqlite3}/index.html | 0 7 files changed, 1540 insertions(+), 330 deletions(-) create mode 100644 htdocs/core/db/sqlite3.class.php rename htdocs/install/{sqlite => sqlite3}/functions/functions.sql (100%) rename htdocs/install/{sqlite => sqlite3}/index.html (100%) diff --git a/htdocs/admin/system/database-tables.php b/htdocs/admin/system/database-tables.php index 3af715a09b8..5ac7292042e 100644 --- a/htdocs/admin/system/database-tables.php +++ b/htdocs/admin/system/database-tables.php @@ -66,7 +66,7 @@ else if ($conf->db->type == 'mssql') //$sqls[0] = ""; //$base=3; } -else if ($conf->db->type == 'sqlite') { +else if ($conf->db->type == 'sqlite3') { //$sql = "SELECT name, type FROM sqlite_master"; $base = 4; } @@ -176,6 +176,7 @@ else if ($base == 4) { + // Sqlite3 print '
'.$langs->trans("BankName").'
'; print ''; print ''; diff --git a/htdocs/core/db/sqlite.class.php b/htdocs/core/db/sqlite.class.php index 77e9dcdba54..786bf435fcf 100644 --- a/htdocs/core/db/sqlite.class.php +++ b/htdocs/core/db/sqlite.class.php @@ -34,16 +34,17 @@ class DoliDBSqlite extends DoliDB //! Database type public $type='sqlite'; //! Database label - const LABEL='Sqlite3'; + const LABEL='PDO Sqlite'; //! Version min database const VERSIONMIN='3.0.0'; //! Resultset of last query private $_results; - const WEEK_MONDAY_FIRST=1; - const WEEK_YEAR = 2; - const WEEK_FIRST_WEEKDAY=4; - + /** + * Indique que les fonctions personnalisées sont définies + * @var boolean + */ + private static $customFunctionsDefined = false; /** * Constructor. @@ -101,15 +102,7 @@ class DoliDBSqlite extends DoliDB $this->database_selected = 1; $this->database_name = $name; - $this->addCustomFunction('IF'); - $this->addCustomFunction('MONTH'); - $this->addCustomFunction('CURTIME'); - $this->addCustomFunction('CURDATE'); - $this->addCustomFunction('WEEK', 1); - $this->addCustomFunction('WEEK', 2); - $this->addCustomFunction('WEEKDAY'); - $this->addCustomFunction('date_format'); - //$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } else { @@ -329,16 +322,14 @@ class DoliDBSqlite extends DoliDB if (empty($dir)) $dir=DOL_DATA_ROOT; // With sqlite, port must be in connect parameters //if (! $newport) $newport=3306; - $database_name = $dir.'/database_'.$name.'.sdb'; try { /*** connect to SQLite database ***/ - //$this->db = new PDO("sqlite:".$dir.'/database_'.$name.'.sdb'); - $this->db = new SQLite3($database_name); - //$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $this->db = new PDO("sqlite:".$dir.'/database_'.$name.'.sdb'); + $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } - catch(Exception $e) + catch(PDOException $e) { - $this->error= self::LABEL.' '.$e->getMessage().' current dir='.$database_name; + $this->error='PDO SQLITE '.$e->getMessage().' current dir='.$dir.'/database_'.$name.'.sdb'; return ''; } @@ -354,7 +345,9 @@ class DoliDBSqlite extends DoliDB */ function getVersion() { - return $this->db->version()['versionString']; + $resql=$this->query('SELECT sqlite_version() as sqliteversion'); + $row=$this->fetch_row($resql); + return $row[0]; } /** @@ -383,7 +376,6 @@ class DoliDBSqlite extends DoliDB { if ($this->transaction_opened > 0) dol_syslog(get_class($this)."::close Closing a connection with an opened transaction depth=".$this->transaction_opened,LOG_ERR); $this->connected=0; - $this->db->close(); $this->db=null; // Clean this->db return true; } @@ -419,10 +411,13 @@ class DoliDBSqlite extends DoliDB $constraintname=trim($reg[2]); $tablename=trim($reg[1]); - $descTable = $this->db->querySingle("SELECT sql FROM sqlite_master WHERE name='" . $tablename . "'"); + $res = $this->db->query("SELECT sql FROM sqlite_master WHERE name='" . $tablename . "'"); + $descTable = $res->fetchColumn(); + $res->closeCursor(); // 1- Renommer la table avec un nom temporaire - $this->query('ALTER TABLE ' . $tablename . ' RENAME TO tmp_' . $tablename); + $res = $this->query('ALTER TABLE ' . $tablename . ' RENAME TO tmp_' . $tablename); + $res->closeCursor(); // 2- Recréer la table avec la contrainte ajoutée @@ -434,13 +429,17 @@ class DoliDBSqlite extends DoliDB $descTable .= ')'; // Création proprement dite de la table - $this->query($descTable); + $res = $this->query($descTable); + $res->closeCursor(); // 3- Transférer les données - $this->query('INSERT INTO ' . $tablename . ' SELECT * FROM tmp_' . $tablename); + $res = $this->query('INSERT INTO ' . $tablename . ' SELECT * FROM tmp_' . $tablename); + $res->closeCursor(); + // 4- Supprimer la table temporaire - $this->query('DROP TABLE tmp_' . $tablename); + $res = $this->query('DROP TABLE tmp_' . $tablename); + $res->closeCursor(); // dummy statement $query="SELECT 0"; @@ -456,13 +455,10 @@ class DoliDBSqlite extends DoliDB try { //$ret = $this->db->exec($query); $ret = $this->db->query($query); // $ret is a PDO object - if ($ret) { - $ret->queryString = $query; - } } - catch(Exception $e) + catch(PDOException $e) { - $this->error=$this->db->lastErrorMsg(); + $this->error=$e->getMessage(); } if (! preg_match("/^COMMIT/i",$query) && ! preg_match("/^ROLLBACK/i",$query)) @@ -501,11 +497,7 @@ class DoliDBSqlite extends DoliDB { // Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion if (! is_object($resultset)) { $resultset=$this->_results; } - //return $resultset->fetch(PDO::FETCH_OBJ); - $ret = $resultset->fetchArray(SQLITE3_ASSOC); - if ($ret) { - return (object)$ret; - } + return $resultset->fetch(PDO::FETCH_OBJ); } @@ -519,11 +511,7 @@ class DoliDBSqlite extends DoliDB { // If resultset not provided, we take the last used by connexion if (! is_object($resultset)) { $resultset=$this->_results; } - //return $resultset->fetch(PDO::FETCH_ASSOC); - $ret = $resultset->fetchArray(SQLITE3_ASSOC); - if ($ret) { - return (array)$ret; - } + return $resultset->fetch(PDO::FETCH_ASSOC); } /** @@ -538,7 +526,7 @@ class DoliDBSqlite extends DoliDB if (! is_bool($resultset)) { if (! is_object($resultset)) { $resultset=$this->_results; } - return $resultset->fetchArray(SQLITE3_NUM); + return $resultset->fetch(PDO::FETCH_NUM); } else { @@ -559,9 +547,10 @@ class DoliDBSqlite extends DoliDB // If resultset not provided, we take the last used by connexion if (! is_object($resultset)) { $resultset=$this->_results; } if (preg_match("/^SELECT/i", $resultset->queryString)) { - return $this->db->querySingle("SELECT count(*) FROM (" . $resultset->queryString . ") q"); + $res = $this->db->query("SELECT count(*) FROM (" . $resultset->queryString . ") q"); + return $res->fetchColumn(); } - return 0; + return $resultset->rowCount(); } /** @@ -575,12 +564,9 @@ class DoliDBSqlite extends DoliDB { // If resultset not provided, we take the last used by connexion if (! is_object($resultset)) { $resultset=$this->_results; } - if (preg_match("/^SELECT/i", $resultset->queryString)) { - return $this->num_rows($resultset); - } // mysql necessite un link de base pour cette fonction contrairement // a pqsql qui prend un resultset - return $this->db->changes(); + return $resultset->rowCount(); } @@ -595,7 +581,7 @@ class DoliDBSqlite extends DoliDB // If resultset not provided, we take the last used by connexion if (! is_object($resultset)) { $resultset=$this->_results; } // Si resultset en est un, on libere la memoire - if ($resultset && is_object($resultset)) $resultset->finalize(); + if (is_object($resultset)) $resultset->closeCursor(); } /** @@ -606,7 +592,12 @@ class DoliDBSqlite extends DoliDB */ function escape($stringtoencode) { - return Sqlite3::escapeString($stringtoencode); + $ret = $this->db->quote($stringtoencode); + $l = strlen($ret); + if ($l >= 2) { + return substr($ret, 1, $l -2); + } + return ''; } /** @@ -654,8 +645,8 @@ class DoliDBSqlite extends DoliDB { return $errorcode_map[$this->db->errorCode()]; }*/ - $errno=$this->db->lastErrorCode(); - if ($errno=='HY000' || $errno == 0) + $errno=$this->db->errorCode(); + if ($errno=='HY000') { if (preg_match('/table.*already exists/i',$this->error)) return 'DB_ERROR_TABLE_ALREADY_EXISTS'; elseif (preg_match('/index.*already exists/i',$this->error)) return 'DB_ERROR_KEY_NAME_ALREADY_EXISTS'; @@ -666,9 +657,6 @@ class DoliDBSqlite extends DoliDB if (preg_match('/column.* not unique/i',$this->error)) return 'DB_ERROR_RECORD_ALREADY_EXISTS'; elseif (preg_match('/PRIMARY KEY must be unique/i',$this->error)) return 'DB_ERROR_RECORD_ALREADY_EXISTS'; } - if ($errno > 1) { - // TODO Voir la liste des messages d'erreur - } return ($errno?'DB_ERROR_'.$errno:'0'); } @@ -699,7 +687,7 @@ class DoliDBSqlite extends DoliDB */ function last_insert_id($tab,$fieldid='rowid') { - return $this->db->lastInsertRowId(); + return $this->db->lastInsertId(); } /** @@ -1183,39 +1171,15 @@ class DoliDBSqlite extends DoliDB function getServerParametersValues($filter='') { $result=array(); - static $pragmas; - if (! isset($pragmas)) { - // Définition de la liste des pragmas utilisés qui ne retournent qu'une seule valeur - // indépendante de la base de données. - // cf. http://www.sqlite.org/pragma.html - $pragmas = array( - 'application_id', 'auto_vacuum', 'automatic_index', 'busy_timeout', 'cache_size', - 'cache_spill', 'case_sensitive_like', 'checkpoint_fullsync', 'collation_list', - 'compile_options', 'data_version', /*'database_list',*/ - 'defer_foreign_keys', 'encoding', 'foreign_key_check', 'freelist_count', - 'full_column_names', 'fullsync', 'ingore_check_constraints', 'integrity_check', - 'journal_mode', 'journal_size_limit', 'legacy_file_format', 'locking_mode', - 'max_page_count', 'page_count', 'page_size', 'parser_trace', - 'query_only', 'quick_check', 'read_uncommitted', 'recursive_triggers', - 'reverse_unordered_selects', 'schema_version', 'user_version', - 'secure_delete', 'short_column_names', 'shrink_memory', 'soft_heap_limit', - 'synchronous', 'temp_store', /*'temp_store_directory',*/ 'threads', - 'vdbe_addoptrace', 'vdbe_debug', 'vdbe_listing', 'vdbe_trace', - 'wal_autocheckpoint', - ); - } - // TODO prendre en compte le filtre - foreach($pragmas as $var) { - $sql = "PRAGMA $var"; - $resql=$this->query($sql); - if ($resql) - { - $obj = $this->fetch_row($resql); - //dol_syslog(get_class($this)."::select_db getServerParametersValues $var=". print_r($obj, true), LOG_DEBUG); - $result[$var] = $obj[0]; - } - } + $sql='SHOW VARIABLES'; + if ($filter) $sql.=" LIKE '".$this->escape($filter)."'"; + $resql=$this->query($sql); + if ($resql) + { + while ($obj=$this->fetch_object($resql)) $result[$obj->Variable_name]=$obj->Value; + } + return $result; } @@ -1228,7 +1192,7 @@ class DoliDBSqlite extends DoliDB function getServerStatusValues($filter='') { $result=array(); - /* + $sql='SHOW STATUS'; if ($filter) $sql.=" LIKE '".$this->escape($filter)."'"; $resql=$this->query($sql); @@ -1236,243 +1200,9 @@ class DoliDBSqlite extends DoliDB { while ($obj=$this->fetch_object($resql)) $result[$obj->Variable_name]=$obj->Value; } - */ return $result; } - /** - * Permet le chargement d'une fonction personnalisee dans le moteur de base de donnees. - * Note: le nom de la fonction personnalisee est prefixee par 'db_'. La fonction doit être - * statique et publique. Le nombre de parametres est determine automatiquement. - * @param string $name Le nom de la fonction a definir dans Sqlite - */ - private function addCustomFunction($name, $arg_count = -1) { - if ($this->db) { - $localname = __CLASS__ . '::' . 'db_' . $name; - $reflectClass = new ReflectionClass(__CLASS__); - $reflectFunction = $reflectClass->getMethod('db_' . $name); - if ($arg_count < 0) { - $arg_count = $reflectFunction->getNumberOfParameters(); - } - if (!$this->db->createFunction($name, $localname , $arg_count)) { - $this->error = "unable to create custom function '$name'"; - } - } - } - - /** - * Cette fonction est l'equivalent de la fonction MONTH de MySql. - * @param string $date - * @return integer - */ - public static function db_MONTH($date) { - return date('n', strtotime($date)); - } - - /** - * calcule du numéro de semaine - * - * @param string date - * @param int mode - */ - public static function db_WEEK($date, $mode = 0) { - $arr = date_parse($date); - $calc_year = 0; - return self::calc_week($arr['year'], $arr['month'], $arr['day'], self::week_mode($mode), $calc_year); - } - - public static function db_CURDATE() { - return date('Y-m-d'); - } - - public static function db_CURTIME() { - return date('H:i:s'); - } - - public static function db_WEEKDAY($date) { - $arr = date_parse($date); - return self::calc_weekday(self::calc_daynr($arr['year'], $arr['month'], $arr['day']), 0); - - } - - /** - * Cette fonction est l'equivelent de la fonction date_format de MySQL. - * @staticvar string $mysql_replacement Les symboles formatage a remplacer - * @param string $date la date dans un format ISO - * @param string $format la chaine de formatage - * @return string La date formatee. - */ - public static function db_date_format($date, $format) { - static $mysql_replacement; - if (! isset($mysql_replacement)) { - $mysql_replacement = array( - '%' => '%', - 'a' => 'D', - 'b' => 'M', - 'c' => 'n', - 'D' => 'jS', - 'd' => 'd', - 'e' => 'j', - 'f' => 'u', - 'H' => 'H', - 'h' => 'h', - 'I' => 'h', - 'i' => 'i', - 'k' => 'H', - 'l' => 'g', - 'M' => 'F', - 'm' => 'm', - 'p' => 'A', - 'r' => 'h:i:s A', - 'S' => 's', - 's' => 's', - 'T' => 'H:i:s', - 'W' => 'l', - 'w' => 'w', - 'Y' => 'Y', - 'y' => 'y', - ); - } - - $fmt = ''; - $lg = strlen($format); - $state = 0; - $timestamp = strtotime($date); - $yday = date('z', $timestamp); - $month = (integer)date("n", $timestamp); - $year = (integer)date("Y", $timestamp); - $day = (integer)date("d", $timestamp); - for($idx = 0; $idx < $lg; ++$idx) { - $char = $format[$idx]; - if ($state == 0) { - if ($char == '%') { - $state = 1; - } else { - $fmt .= $char; - } - } - elseif ($state == 1) { - if (array_key_exists($char, $mysql_replacement)) { - $fmt .= $mysql_replacement[$char]; - } else { - $calc_year = 0; - switch ($char) { - case 'j': // day of the year 001 - $char = sprintf("%03d", $yday+1); - break; - case 'U': // mode 0: semaine 0 = premiere semaine complète qui commence un dimanche - $char = sprintf("%02d", self::calc_week($year, $month, $day, 4, $calc_year)); - break; - case 'u': // mode 1: semaine 0 = première semaine de 4 jours. Début le dimanche - $char = sprintf("%02d", self::calc_week($year, $month, $day, 1, $calc_year)); - break; - case 'V': // mode 2: semaine 1 = premiere semaine complète qui commence un dimanche - $char = sprintf("%02d", self::calc_week($year, $month, $day, 6, $calc_year)); - break; - case 'v': // mode 3: semaine 1 = premiere semaine de 4 jours. Début le lundi - $char = sprintf("%02d", self::calc_week($year, $month, $day, 3, $calc_year)); - break; - case 'X': - self::calc_week($year, $month, $day, 6, $calc_year); - $char = sprintf("%04d", $calc_year); - break; - case 'x': - self::calc_week($year, $month, $day, 3, $calc_year); - $char = sprintf("%04d", $calc_year); - break; - } - $fmt .= $char; - } - $state = 0; - } - } - return date($fmt, strtotime($date)); - } - - /** - * Equivalent de la fonction MySQL IF - * @param boolean $test Le resultat du test - * @param mixed $true_part Partie a retourner si vrai - * @param mixed $false_part Partie a retourner si faux - * @return mixed Partie selectionnee en fonction du test - */ - public static function db_IF($test, $true_part, $false_part) { - return ( $test ) ? $true_part : $false_part; - } - - // Adapté de mytime.c des sources de mariadb - // fonction calc_daynr - private static function calc_daynr($year, $month, $day) { - $y = $year; - if ($y == 0 && $month == 0) return 0; - $num = (365* $y + 31 * ($month - 1) + $day); - if ($month <= 2) { - $y--; } - else { - $num -= floor(($month * 4 + 23) / 10); - } - $temp = floor(($y / 100 + 1) * 3 / 4); - return $num + floor($y / 4) - $temp; - } - - private static function calc_weekday($daynr, $sunday_first_day_of_week) { - $ret = floor(($daynr + 5 + ($sunday_first_day_of_week ? 1 : 0)) % 7); - return $ret; - } - - private static function calc_days_in_year($year) - { - return (($year & 3) == 0 && ($year%100 || ($year%400 == 0 && $year)) ? 366 : 365); - } - - private static function week_mode($mode) { - $week_format= ($mode & 7); - if (!($week_format & self::WEEK_MONDAY_FIRST)) { - $week_format^= self::WEEK_FIRST_WEEKDAY; - } - return $week_format; - } - - - private static function calc_week($year, $month, $day, $week_behaviour, &$calc_year) { - $daynr=self::calc_daynr($year,$month,$day); - $first_daynr=self::calc_daynr($year,1,1); - $monday_first= ($week_behaviour & self::WEEK_MONDAY_FIRST) ? 1 : 0; - $week_year= ($week_behaviour & self::WEEK_YEAR) ? 1 : 0; - $first_weekday= ($week_behaviour & self::WEEK_FIRST_WEEKDAY) ? 1 : 0; - - $weekday=self::calc_weekday($first_daynr, !$monday_first); - $calc_year=$year; - - if ($month == 1 && $day <= 7-$weekday) - { - if (!$week_year && (($first_weekday && $weekday != 0) || (!$first_weekday && $weekday >= 4))) - return 0; - $week_year= 1; - $calc_year--; - $first_daynr-= ($days=self::calc_days_in_year($calc_year)); - $weekday= ($weekday + 53*7- $days) % 7; - } - - if (($first_weekday && $weekday != 0) || (!$first_weekday && $weekday >= 4)) { - $days= $daynr - ($first_daynr+ (7-$weekday)); - } - else { - $days= $daynr - ($first_daynr - $weekday); - } - - if ($week_year && $days >= 52*7) - { - $weekday= ($weekday + self::calc_days_in_year($calc_year)) % 7; - if ((!$first_weekday && $weekday < 4) || ($first_weekday && $weekday == 0)) - { - $calc_year++; - return 1; - } - } - return floor($days/7+1); - } - } diff --git a/htdocs/core/db/sqlite3.class.php b/htdocs/core/db/sqlite3.class.php new file mode 100644 index 00000000000..f232acb199e --- /dev/null +++ b/htdocs/core/db/sqlite3.class.php @@ -0,0 +1,1478 @@ + + * Copyright (C) 2002-2005 Rodolphe Quiedeville + * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2006 Andre Cianfarani + * Copyright (C) 2005-2009 Regis Houssin + * + * 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/core/db/sqlite.class.php + * \brief Class file to manage Dolibarr database access for a Sqlite database + */ + +require_once DOL_DOCUMENT_ROOT .'/core/db/DoliDB.class.php'; + +/** + * Class to manage Dolibarr database access for a Sqlite database + */ +class DoliDBSqlite3 extends DoliDB +{ + //! Database type + public $type='sqlite3'; + //! Database label + const LABEL='Sqlite3'; + //! Version min database + const VERSIONMIN='3.0.0'; + //! Resultset of last query + private $_results; + + const WEEK_MONDAY_FIRST=1; + const WEEK_YEAR = 2; + const WEEK_FIRST_WEEKDAY=4; + + + /** + * Constructor. + * This create an opened connexion to a database server and eventually to a database + * + * @param string $type Type of database (mysql, pgsql...) + * @param string $host Address of database server + * @param string $user Nom de l'utilisateur autorise + * @param string $pass Mot de passe + * @param string $name Nom de la database + * @param int $port Port of database server + */ + function __construct($type, $host, $user, $pass, $name='', $port=0) + { + global $conf,$langs; + + // Note that having "static" property for "$forcecharset" and "$forcecollate" will make error here in strict mode, so they are not static + if (! empty($conf->db->character_set)) $this->forcecharset=$conf->db->character_set; + if (! empty($conf->db->dolibarr_main_db_collation)) $this->forcecollate=$conf->db->dolibarr_main_db_collation; + + $this->database_user=$user; + $this->database_host=$host; + $this->database_port=$port; + + $this->transaction_opened=0; + + //print "Name DB: $host,$user,$pass,$name
"; + + /*if (! function_exists("sqlite_query")) + { + $this->connected = 0; + $this->ok = 0; + $this->error="Sqlite PHP functions for using Sqlite driver are not available in this version of PHP. Try to use another driver."; + dol_syslog(get_class($this)."::DoliDBSqlite3 : Sqlite PHP functions for using Sqlite driver are not available in this version of PHP. Try to use another driver.",LOG_ERR); + return $this->ok; + }*/ + + /*if (! $host) + { + $this->connected = 0; + $this->ok = 0; + $this->error=$langs->trans("ErrorWrongHostParameter"); + dol_syslog(get_class($this)."::DoliDBSqlite3 : Erreur Connect, wrong host parameters",LOG_ERR); + return $this->ok; + }*/ + + // Essai connexion serveur + // We do not try to connect to database, only to server. Connect to database is done later in constrcutor + $this->db = $this->connect($host, $user, $pass, $name, $port); + + if ($this->db) + { + $this->connected = 1; + $this->ok = 1; + $this->database_selected = 1; + $this->database_name = $name; + + $this->addCustomFunction('IF'); + $this->addCustomFunction('MONTH'); + $this->addCustomFunction('CURTIME'); + $this->addCustomFunction('CURDATE'); + $this->addCustomFunction('WEEK', 1); + $this->addCustomFunction('WEEK', 2); + $this->addCustomFunction('WEEKDAY'); + $this->addCustomFunction('date_format'); + //$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + } + else + { + // host, login ou password incorrect + $this->connected = 0; + $this->ok = 0; + $this->database_selected = 0; + $this->database_name = ''; + //$this->error=sqlite_connect_error(); + dol_syslog(get_class($this)."::DoliDBSqlite3 : Error Connect ".$this->error,LOG_ERR); + } + + return $this->ok; + } + + + /** + * Convert a SQL request in Mysql syntax to native syntax + * + * @param string $line SQL request line to convert + * @param string $type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...) + * @return string SQL request line converted + */ + static function convertSQLFromMysql($line,$type='ddl') + { + // Removed empty line if this is a comment line for SVN tagging + if (preg_match('/^--\s\$Id/i',$line)) { + return ''; + } + // Return line if this is a comment + if (preg_match('/^#/i',$line) || preg_match('/^$/i',$line) || preg_match('/^--/i',$line)) + { + return $line; + } + if ($line != "") + { + if ($type == 'auto') + { + if (preg_match('/ALTER TABLE/i',$line)) $type='dml'; + else if (preg_match('/CREATE TABLE/i',$line)) $type='dml'; + else if (preg_match('/DROP TABLE/i',$line)) $type='dml'; + } + + if ($type == 'dml') + { + $line=preg_replace('/\s/',' ',$line); // Replace tabulation with space + + // we are inside create table statement so lets process datatypes + if (preg_match('/(ISAM|innodb)/i',$line)) { // end of create table sequence + $line=preg_replace('/\)[\s\t]*type[\s\t]*=[\s\t]*(MyISAM|innodb);/i',');',$line); + $line=preg_replace('/\)[\s\t]*engine[\s\t]*=[\s\t]*(MyISAM|innodb);/i',');',$line); + $line=preg_replace('/,$/','',$line); + } + + // Process case: "CREATE TABLE llx_mytable(rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY,code..." + if (preg_match('/[\s\t\(]*(\w*)[\s\t]+int.*auto_increment/i',$line,$reg)) { + $newline=preg_replace('/([\s\t\(]*)([a-zA-Z_0-9]*)[\s\t]+int.*auto_increment[^,]*/i','\\1 \\2 integer PRIMARY KEY AUTOINCREMENT',$line); + //$line = "-- ".$line." replaced by --\n".$newline; + $line=$newline; + } + + // tinyint type conversion + $line=str_replace('tinyint','smallint',$line); + + // nuke unsigned + $line=preg_replace('/(int\w+|smallint)\s+unsigned/i','\\1',$line); + + // blob -> text + $line=preg_replace('/\w*blob/i','text',$line); + + // tinytext/mediumtext -> text + $line=preg_replace('/tinytext/i','text',$line); + $line=preg_replace('/mediumtext/i','text',$line); + + // change not null datetime field to null valid ones + // (to support remapping of "zero time" to null + $line=preg_replace('/datetime not null/i','datetime',$line); + $line=preg_replace('/datetime/i','timestamp',$line); + + // double -> numeric + $line=preg_replace('/^double/i','numeric',$line); + $line=preg_replace('/(\s*)double/i','\\1numeric',$line); + // float -> numeric + $line=preg_replace('/^float/i','numeric',$line); + $line=preg_replace('/(\s*)float/i','\\1numeric',$line); + + // unique index(field1,field2) + if (preg_match('/unique index\s*\((\w+\s*,\s*\w+)\)/i',$line)) + { + $line=preg_replace('/unique index\s*\((\w+\s*,\s*\w+)\)/i','UNIQUE\(\\1\)',$line); + } + + // We remove end of requests "AFTER fieldxxx" + $line=preg_replace('/AFTER [a-z0-9_]+/i','',$line); + + // We remove start of requests "ALTER TABLE tablexxx" if this is a DROP INDEX + $line=preg_replace('/ALTER TABLE [a-z0-9_]+ DROP INDEX/i','DROP INDEX',$line); + + // Translate order to rename fields + if (preg_match('/ALTER TABLE ([a-z0-9_]+) CHANGE(?: COLUMN)? ([a-z0-9_]+) ([a-z0-9_]+)(.*)$/i',$line,$reg)) + { + $line = "-- ".$line." replaced by --\n"; + $line.= "ALTER TABLE ".$reg[1]." RENAME COLUMN ".$reg[2]." TO ".$reg[3]; + } + + // Translate order to modify field format + if (preg_match('/ALTER TABLE ([a-z0-9_]+) MODIFY(?: COLUMN)? ([a-z0-9_]+) (.*)$/i',$line,$reg)) + { + $line = "-- ".$line." replaced by --\n"; + $newreg3=$reg[3]; + $newreg3=preg_replace('/ DEFAULT NULL/i','',$newreg3); + $newreg3=preg_replace('/ NOT NULL/i','',$newreg3); + $newreg3=preg_replace('/ NULL/i','',$newreg3); + $newreg3=preg_replace('/ DEFAULT 0/i','',$newreg3); + $newreg3=preg_replace('/ DEFAULT \'[0-9a-zA-Z_@]*\'/i','',$newreg3); + $line.= "ALTER TABLE ".$reg[1]." ALTER COLUMN ".$reg[2]." TYPE ".$newreg3; + // TODO Add alter to set default value or null/not null if there is this in $reg[3] + } + + // alter table add primary key (field1, field2 ...) -> We create a unique index instead as dynamic creation of primary key is not supported + // ALTER TABLE llx_dolibarr_modules ADD PRIMARY KEY pk_dolibarr_modules (numero, entity); + if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+PRIMARY\s+KEY\s*(.*)\s*\((.*)$/i',$line,$reg)) + { + $line = "-- ".$line." replaced by --\n"; + $line.= "CREATE UNIQUE INDEX ".$reg[2]." ON ".$reg[1]."(".$reg[3]; + } + + // Translate order to drop foreign keys + // ALTER TABLE llx_dolibarr_modules DROP FOREIGN KEY fk_xxx; + if (preg_match('/ALTER\s+TABLE\s*(.*)\s*DROP\s+FOREIGN\s+KEY\s*(.*)$/i',$line,$reg)) + { + $line = "-- ".$line." replaced by --\n"; + $line.= "ALTER TABLE ".$reg[1]." DROP CONSTRAINT ".$reg[2]; + } + + // alter table add [unique] [index] (field1, field2 ...) + // ALTER TABLE llx_accountingaccount ADD INDEX idx_accountingaccount_fk_pcg_version (fk_pcg_version) + if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+(UNIQUE INDEX|INDEX|UNIQUE)\s+(.*)\s*\(([\w,\s]+)\)/i',$line,$reg)) + { + $fieldlist=$reg[4]; + $idxname=$reg[3]; + $tablename=$reg[1]; + $line = "-- ".$line." replaced by --\n"; + $line.= "CREATE ".(preg_match('/UNIQUE/',$reg[2])?'UNIQUE ':'')."INDEX ".$idxname." ON ".$tablename." (".$fieldlist.")"; + } + if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+CONSTRAINT\s+(.*)\s*FOREIGN\s+KEY\s*\(([\w,\s]+)\)\s*REFERENCES\s+(\w+)\s*\(([\w,\s]+)\)/i',$line, $reg)) { + // Pour l'instant les contraintes ne sont pas créées + dol_syslog(get_class().'::query line emptied'); + $line = 'SELECT 0;'; + + } + + //if (preg_match('/rowid\s+.*\s+PRIMARY\s+KEY,/i', $line)) { + //preg_replace('/(rowid\s+.*\s+PRIMARY\s+KEY\s*,)/i', '/* \\1 */', $line); + //} + } + + // Delete using criteria on other table must not declare twice the deleted table + // DELETE FROM tabletodelete USING tabletodelete, othertable -> DELETE FROM tabletodelete USING othertable + if (preg_match('/DELETE FROM ([a-z_]+) USING ([a-z_]+), ([a-z_]+)/i',$line,$reg)) + { + if ($reg[1] == $reg[2]) // If same table, we remove second one + { + $line=preg_replace('/DELETE FROM ([a-z_]+) USING ([a-z_]+), ([a-z_]+)/i','DELETE FROM \\1 USING \\3', $line); + } + } + + // Remove () in the tables in FROM if one table + $line=preg_replace('/FROM\s*\((([a-z_]+)\s+as\s+([a-z_]+)\s*)\)/i','FROM \\1',$line); + //print $line."\n"; + + // Remove () in the tables in FROM if two table + $line=preg_replace('/FROM\s*\(([a-z_]+\s+as\s+[a-z_]+)\s*,\s*([a-z_]+\s+as\s+[a-z_]+\s*)\)/i','FROM \\1, \\2',$line); + //print $line."\n"; + + // Remove () in the tables in FROM if two table + $line=preg_replace('/FROM\s*\(([a-z_]+\s+as\s+[a-z_]+)\s*,\s*([a-z_]+\s+as\s+[a-z_]+\s*),\s*([a-z_]+\s+as\s+[a-z_]+\s*)\)/i','FROM \\1, \\2, \\3',$line); + //print $line."\n"; + + //print "type=".$type." newline=".$line."
\n"; + } + + return $line; + } + + /** + * Select a database + * + * @param string $database Name of database + * @return boolean true if OK, false if KO + */ + function select_db($database) + { + dol_syslog(get_class($this)."::select_db database=".$database, LOG_DEBUG); + return sqlite_select_db($this->db,$database); + } + + + /** + * Connexion to server + * + * @param string $host database server host + * @param string $login login + * @param string $passwd password + * @param string $name name of database (not used for mysql, used for pgsql) + * @param string $port Port of database server + * @return resource Database access handler + * @see close + */ + function connect($host, $login, $passwd, $name, $port=0) + { + global $conf,$main_data_dir; + + dol_syslog(get_class($this)."::connect name=".$name,LOG_DEBUG); + + $dir=$main_data_dir; + if (empty($dir)) $dir=DOL_DATA_ROOT; + // With sqlite, port must be in connect parameters + //if (! $newport) $newport=3306; + $database_name = $dir.'/database_'.$name.'.sdb'; + try { + /*** connect to SQLite database ***/ + //$this->db = new PDO("sqlite:".$dir.'/database_'.$name.'.sdb'); + $this->db = new SQLite3($database_name); + //$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + } + catch(Exception $e) + { + $this->error= self::LABEL.' '.$e->getMessage().' current dir='.$database_name; + return ''; + } + + //print "Resultat fonction connect: ".$this->db; + return $this->db; + } + + + /** + * Return version of database server + * + * @return string Version string + */ + function getVersion() + { + return $this->db->version()['versionString']; + } + + /** + * Return version of database client driver + * + * @return string Version string + */ + function getDriverInfo() + { + // FIXME: Dummy method + // TODO: Implement + + return ''; + } + + + /** + * Close database connexion + * + * @return boolean True if disconnect successfull, false otherwise + * @see connect + */ + function close() + { + if ($this->db) + { + if ($this->transaction_opened > 0) dol_syslog(get_class($this)."::close Closing a connection with an opened transaction depth=".$this->transaction_opened,LOG_ERR); + $this->connected=0; + $this->db->close(); + $this->db=null; // Clean this->db + return true; + } + return false; + } + + /** + * Execute a SQL request and return the resultset + * + * @param string $query SQL query string + * @param int $usesavepoint 0=Default mode, 1=Run a savepoint before and a rollbock to savepoint if error (this allow to have some request with errors inside global transactions). + * Note that with Mysql, this parameter is not used as Myssql can already commit a transaction even if one request is in error, without using savepoints. + * @param string $type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...) + * @return resource Resultset of answer + */ + function query($query,$usesavepoint=0,$type='auto') + { + $errmsg=''; + + $ret=''; + $query = trim($query); + $this->error = 0; + + // Convert MySQL syntax to SQLite syntax + if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+CONSTRAINT\s+(.*)\s*FOREIGN\s+KEY\s*\(([\w,\s]+)\)\s*REFERENCES\s+(\w+)\s*\(([\w,\s]+)\)/i',$query, $reg)) { + // Ajout d'une clef étrangère à la table + // procédure de remplacement de la table pour ajouter la contrainte + // Exemple : ALTER TABLE llx_adherent ADD CONSTRAINT adherent_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (rowid) + // -> CREATE TABLE ( ... ,CONSTRAINT adherent_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (rowid)) + $foreignFields = $reg[5]; + $foreignTable = $reg[4]; + $localfields = $reg[3]; + $constraintname=trim($reg[2]); + $tablename=trim($reg[1]); + + $descTable = $this->db->querySingle("SELECT sql FROM sqlite_master WHERE name='" . $tablename . "'"); + + // 1- Renommer la table avec un nom temporaire + $this->query('ALTER TABLE ' . $tablename . ' RENAME TO tmp_' . $tablename); + + // 2- Recréer la table avec la contrainte ajoutée + + // on bricole la requete pour ajouter la contrainte + $descTable = substr($descTable, 0, strlen($descTable) - 1); + $descTable .= ", CONSTRAINT " . $constraintname . " FOREIGN KEY (" . $localfields . ") REFERENCES " .$foreignTable . "(" . $foreignFields . ")"; + + // fermeture de l'instruction + $descTable .= ')'; + + // Création proprement dite de la table + $this->query($descTable); + + // 3- Transférer les données + $this->query('INSERT INTO ' . $tablename . ' SELECT * FROM tmp_' . $tablename); + + // 4- Supprimer la table temporaire + $this->query('DROP TABLE tmp_' . $tablename); + + // dummy statement + $query="SELECT 0"; + + } else { + $query=$this->convertSQLFromMysql($query,$type); + } + //print "After convertSQLFromMysql:\n".$query."
\n"; + + dol_syslog('sql='.$query, LOG_DEBUG); + + // Ordre SQL ne necessitant pas de connexion a une base (exemple: CREATE DATABASE) + try { + //$ret = $this->db->exec($query); + $ret = $this->db->query($query); // $ret is a PDO object + if ($ret) { + $ret->queryString = $query; + } + } + catch(Exception $e) + { + $this->error=$this->db->lastErrorMsg(); + } + + if (! preg_match("/^COMMIT/i",$query) && ! preg_match("/^ROLLBACK/i",$query)) + { + // Si requete utilisateur, on la sauvegarde ainsi que son resultset + if (! is_object($ret) || $this->error) + { + $this->lastqueryerror = $query; + $this->lasterror = $this->error(); + $this->lasterrno = $this->errno(); + + dol_syslog(get_class($this)."::query SQL Error query: ".$query, LOG_ERR); + + $errormsg = get_class($this)."::query SQL Error message: ".$this->lasterror; + + if (preg_match('/[0-9]/',$this->lasterrno)) { + $errormsg .= ' ('.$this->lasterrno.')'; + } + + dol_syslog($errormsg, LOG_ERR); + } + $this->lastquery=$query; + $this->_results = $ret; + } + + return $ret; + } + + /** + * Renvoie la ligne courante (comme un objet) pour le curseur resultset + * + * @param Resultset $resultset Curseur de la requete voulue + * @return Object Object result line or false if KO or end of cursor + */ + function fetch_object($resultset) + { + // Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion + if (! is_object($resultset)) { $resultset=$this->_results; } + //return $resultset->fetch(PDO::FETCH_OBJ); + $ret = $resultset->fetchArray(SQLITE3_ASSOC); + if ($ret) { + return (object)$ret; + } + } + + + /** + * Return datas as an array + * + * @param Resultset $resultset Resultset of request + * @return array Array + */ + function fetch_array($resultset) + { + // If resultset not provided, we take the last used by connexion + if (! is_object($resultset)) { $resultset=$this->_results; } + //return $resultset->fetch(PDO::FETCH_ASSOC); + $ret = $resultset->fetchArray(SQLITE3_ASSOC); + if ($ret) { + return (array)$ret; + } + } + + /** + * Return datas as an array + * + * @param Resultset $resultset Resultset of request + * @return array Array + */ + function fetch_row($resultset) + { + // If resultset not provided, we take the last used by connexion + if (! is_bool($resultset)) + { + if (! is_object($resultset)) { $resultset=$this->_results; } + return $resultset->fetchArray(SQLITE3_NUM); + } + else + { + // si le curseur est un booleen on retourne la valeur 0 + return 0; + } + } + + /** + * Return number of lines for result of a SELECT + * + * @param Resultset $resultset Resulset of requests + * @return int Nb of lines + * @see affected_rows + */ + function num_rows($resultset) + { + // If resultset not provided, we take the last used by connexion + if (! is_object($resultset)) { $resultset=$this->_results; } + if (preg_match("/^SELECT/i", $resultset->queryString)) { + return $this->db->querySingle("SELECT count(*) FROM (" . $resultset->queryString . ") q"); + } + return 0; + } + + /** + * Return number of lines for result of a SELECT + * + * @param Resultset $resultset Resulset of requests + * @return int Nb of lines + * @see affected_rows + */ + function affected_rows($resultset) + { + // If resultset not provided, we take the last used by connexion + if (! is_object($resultset)) { $resultset=$this->_results; } + if (preg_match("/^SELECT/i", $resultset->queryString)) { + return $this->num_rows($resultset); + } + // mysql necessite un link de base pour cette fonction contrairement + // a pqsql qui prend un resultset + return $this->db->changes(); + } + + + /** + * Free last resultset used. + * + * @param resultset $resultset Curseur de la requete voulue + * @return void + */ + function free($resultset=0) + { + // If resultset not provided, we take the last used by connexion + if (! is_object($resultset)) { $resultset=$this->_results; } + // Si resultset en est un, on libere la memoire + if ($resultset && is_object($resultset)) $resultset->finalize(); + } + + /** + * Escape a string to insert data + * + * @param string $stringtoencode String to escape + * @return string String escaped + */ + function escape($stringtoencode) + { + return Sqlite3::escapeString($stringtoencode); + } + + /** + * Renvoie le code erreur generique de l'operation precedente. + * + * @return string Error code (Exemples: DB_ERROR_TABLE_ALREADY_EXISTS, DB_ERROR_RECORD_ALREADY_EXISTS...) + */ + function errno() + { + if (! $this->connected) { + // Si il y a eu echec de connexion, $this->db n'est pas valide. + return 'DB_ERROR_FAILED_TO_CONNECT'; + } + else { + // Constants to convert error code to a generic Dolibarr error code + /*$errorcode_map = array( + 1004 => 'DB_ERROR_CANNOT_CREATE', + 1005 => 'DB_ERROR_CANNOT_CREATE', + 1006 => 'DB_ERROR_CANNOT_CREATE', + 1007 => 'DB_ERROR_ALREADY_EXISTS', + 1008 => 'DB_ERROR_CANNOT_DROP', + 1025 => 'DB_ERROR_NO_FOREIGN_KEY_TO_DROP', + 1044 => 'DB_ERROR_ACCESSDENIED', + 1046 => 'DB_ERROR_NODBSELECTED', + 1048 => 'DB_ERROR_CONSTRAINT', + 'HY000' => 'DB_ERROR_TABLE_ALREADY_EXISTS', + 1051 => 'DB_ERROR_NOSUCHTABLE', + 1054 => 'DB_ERROR_NOSUCHFIELD', + 1060 => 'DB_ERROR_COLUMN_ALREADY_EXISTS', + 1061 => 'DB_ERROR_KEY_NAME_ALREADY_EXISTS', + 1062 => 'DB_ERROR_RECORD_ALREADY_EXISTS', + 1064 => 'DB_ERROR_SYNTAX', + 1068 => 'DB_ERROR_PRIMARY_KEY_ALREADY_EXISTS', + 1075 => 'DB_ERROR_CANT_DROP_PRIMARY_KEY', + 1091 => 'DB_ERROR_NOSUCHFIELD', + 1100 => 'DB_ERROR_NOT_LOCKED', + 1136 => 'DB_ERROR_VALUE_COUNT_ON_ROW', + 1146 => 'DB_ERROR_NOSUCHTABLE', + 1216 => 'DB_ERROR_NO_PARENT', + 1217 => 'DB_ERROR_CHILD_EXISTS', + 1451 => 'DB_ERROR_CHILD_EXISTS' + ); + + if (isset($errorcode_map[$this->db->errorCode()])) + { + return $errorcode_map[$this->db->errorCode()]; + }*/ + $errno=$this->db->lastErrorCode(); + if ($errno=='HY000' || $errno == 0) + { + if (preg_match('/table.*already exists/i',$this->error)) return 'DB_ERROR_TABLE_ALREADY_EXISTS'; + elseif (preg_match('/index.*already exists/i',$this->error)) return 'DB_ERROR_KEY_NAME_ALREADY_EXISTS'; + elseif (preg_match('/syntax error/i',$this->error)) return 'DB_ERROR_SYNTAX'; + } + if ($errno=='23000') + { + if (preg_match('/column.* not unique/i',$this->error)) return 'DB_ERROR_RECORD_ALREADY_EXISTS'; + elseif (preg_match('/PRIMARY KEY must be unique/i',$this->error)) return 'DB_ERROR_RECORD_ALREADY_EXISTS'; + } + if ($errno > 1) { + // TODO Voir la liste des messages d'erreur + } + + return ($errno?'DB_ERROR_'.$errno:'0'); + } + } + + /** + * Renvoie le texte de l'erreur mysql de l'operation precedente. + * + * @return string Error text + */ + function error() + { + if (! $this->connected) { + // Si il y a eu echec de connexion, $this->db n'est pas valide pour sqlite_error. + return 'Not connected. Check setup parameters in conf/conf.php file and your sqlite version'; + } + else { + return $this->error; + } + } + + /** + * Get last ID after an insert INSERT + * + * @param string $tab Table name concerned by insert. Ne sert pas sous MySql mais requis pour compatibilite avec Postgresql + * @param string $fieldid Field name + * @return int Id of row + */ + function last_insert_id($tab,$fieldid='rowid') + { + return $this->db->lastInsertRowId(); + } + + /** + * Encrypt sensitive data in database + * Warning: This function includes the escape, so it must use direct value + * + * @param string $fieldorvalue Field name or value to encrypt + * @param int $withQuotes Return string with quotes + * @return return XXX(field) or XXX('value') or field or 'value' + */ + function encrypt($fieldorvalue, $withQuotes=0) + { + global $conf; + + // Type of encryption (2: AES (recommended), 1: DES , 0: no encryption) + $cryptType = ($conf->db->dolibarr_main_db_encryption?$conf->db->dolibarr_main_db_encryption:0); + + //Encryption key + $cryptKey = (!empty($conf->db->dolibarr_main_db_cryptkey)?$conf->db->dolibarr_main_db_cryptkey:''); + + $return = ($withQuotes?"'":"").$this->escape($fieldorvalue).($withQuotes?"'":""); + + if ($cryptType && !empty($cryptKey)) + { + if ($cryptType == 2) + { + $return = 'AES_ENCRYPT('.$return.',\''.$cryptKey.'\')'; + } + else if ($cryptType == 1) + { + $return = 'DES_ENCRYPT('.$return.',\''.$cryptKey.'\')'; + } + } + + return $return; + } + + /** + * Decrypt sensitive data in database + * + * @param string $value Value to decrypt + * @return string Decrypted value if used + */ + function decrypt($value) + { + global $conf; + + // Type of encryption (2: AES (recommended), 1: DES , 0: no encryption) + $cryptType = ($conf->db->dolibarr_main_db_encryption?$conf->db->dolibarr_main_db_encryption:0); + + //Encryption key + $cryptKey = (!empty($conf->db->dolibarr_main_db_cryptkey)?$conf->db->dolibarr_main_db_cryptkey:''); + + $return = $value; + + if ($cryptType && !empty($cryptKey)) + { + if ($cryptType == 2) + { + $return = 'AES_DECRYPT('.$value.',\''.$cryptKey.'\')'; + } + else if ($cryptType == 1) + { + $return = 'DES_DECRYPT('.$value.',\''.$cryptKey.'\')'; + } + } + + return $return; + } + + + /** + * Return connexion ID + * + * @return string Id connexion + */ + function DDLGetConnectId() + { + return '?'; + } + + + /** + * Create a new database + * Do not use function xxx_create_db (xxx=mysql, ...) as they are deprecated + * We force to create database with charset this->forcecharset and collate this->forcecollate + * + * @param string $database Database name to create + * @param string $charset Charset used to store data + * @param string $collation Charset used to sort data + * @param string $owner Username of database owner + * @return resource resource defined if OK, null if KO + */ + function DDLCreateDb($database,$charset='',$collation='',$owner='') + { + if (empty($charset)) $charset=$this->forcecharset; + if (empty($collation)) $collation=$this->forcecollate; + + // ALTER DATABASE dolibarr_db DEFAULT CHARACTER SET latin DEFAULT COLLATE latin1_swedish_ci + $sql = 'CREATE DATABASE '.$database; + $sql.= ' DEFAULT CHARACTER SET '.$charset.' DEFAULT COLLATE '.$collation; + + dol_syslog($sql,LOG_DEBUG); + $ret=$this->query($sql); + if (! $ret) + { + // We try again for compatibility with Mysql < 4.1.1 + $sql = 'CREATE DATABASE '.$database; + $ret=$this->query($sql); + dol_syslog($sql,LOG_DEBUG); + } + return $ret; + } + + /** + * List tables into a database + * + * @param string $database Name of database + * @param string $table Name of table filter ('xxx%') + * @return array List of tables in an array + */ + function DDLListTables($database, $table='') + { + $listtables=array(); + + $like = ''; + if ($table) $like = "LIKE '".$table."'"; + $sql="SHOW TABLES FROM ".$database." ".$like.";"; + //print $sql; + $result = $this->query($sql); + while($row = $this->fetch_row($result)) + { + $listtables[] = $row[0]; + } + return $listtables; + } + + /** + * List information of columns into a table. + * + * @param string $table Name of table + * @return array Tableau des informations des champs de la table + * TODO modify for sqlite + */ + function DDLInfoTable($table) + { + $infotables=array(); + + $sql="SHOW FULL COLUMNS FROM ".$table.";"; + + dol_syslog($sql,LOG_DEBUG); + $result = $this->query($sql); + while($row = $this->fetch_row($result)) + { + $infotables[] = $row; + } + return $infotables; + } + + /** + * Create a table into database + * + * @param string $table Nom de la table + * @param array $fields Tableau associatif [nom champ][tableau des descriptions] + * @param string $primary_key Nom du champ qui sera la clef primaire + * @param string $type Type de la table + * @param array $unique_keys Tableau associatifs Nom de champs qui seront clef unique => valeur + * @param array $fulltext_keys Tableau des Nom de champs qui seront indexes en fulltext + * @param string $keys Tableau des champs cles noms => valeur + * @return int <0 if KO, >=0 if OK + */ + function DDLCreateTable($table,$fields,$primary_key,$type,$unique_keys="",$fulltext_keys="",$keys="") + { + // cles recherchees dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra + // ex. : $fields['rowid'] = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment'); + $sql = "create table ".$table."("; + $i=0; + foreach($fields as $field_name => $field_desc) + { + $sqlfields[$i] = $field_name." "; + $sqlfields[$i] .= $field_desc['type']; + if( preg_match("/^[^\s]/i",$field_desc['value'])) + $sqlfields[$i] .= "(".$field_desc['value'].")"; + else if( preg_match("/^[^\s]/i",$field_desc['attribute'])) + $sqlfields[$i] .= " ".$field_desc['attribute']; + else if( preg_match("/^[^\s]/i",$field_desc['default'])) + { + if(preg_match("/null/i",$field_desc['default'])) + $sqlfields[$i] .= " default ".$field_desc['default']; + else + $sqlfields[$i] .= " default '".$field_desc['default']."'"; + } + else if( preg_match("/^[^\s]/i",$field_desc['null'])) + $sqlfields[$i] .= " ".$field_desc['null']; + + else if( preg_match("/^[^\s]/i",$field_desc['extra'])) + $sqlfields[$i] .= " ".$field_desc['extra']; + $i++; + } + if($primary_key != "") + $pk = "primary key(".$primary_key.")"; + + if($unique_keys != "") + { + $i = 0; + foreach($unique_keys as $key => $value) + { + $sqluq[$i] = "UNIQUE KEY '".$key."' ('".$value."')"; + $i++; + } + } + if($keys != "") + { + $i = 0; + foreach($keys as $key => $value) + { + $sqlk[$i] = "KEY ".$key." (".$value.")"; + $i++; + } + } + $sql .= implode(',',$sqlfields); + if($primary_key != "") + $sql .= ",".$pk; + if($unique_keys != "") + $sql .= ",".implode(',',$sqluq); + if($keys != "") + $sql .= ",".implode(',',$sqlk); + $sql .=") type=".$type; + + dol_syslog($sql,LOG_DEBUG); + if(! $this -> query($sql)) + return -1; + else + return 1; + } + + /** + * Return a pointer of line with description of a table or field + * + * @param string $table Name of table + * @param string $field Optionnel : Name of field if we want description of field + * @return resource Resource + */ + function DDLDescTable($table,$field="") + { + $sql="DESC ".$table." ".$field; + + dol_syslog(get_class($this)."::DDLDescTable ".$sql,LOG_DEBUG); + $this->_results = $this->query($sql); + return $this->_results; + } + + /** + * Create a new field into table + * + * @param string $table Name of table + * @param string $field_name Name of field to add + * @param string $field_desc Tableau associatif de description du champ a inserer[nom du parametre][valeur du parametre] + * @param string $field_position Optionnel ex.: "after champtruc" + * @return int <0 if KO, >0 if OK + */ + function DDLAddField($table,$field_name,$field_desc,$field_position="") + { + // cles recherchees dans le tableau des descriptions (field_desc) : type,value,attribute,null,default,extra + // ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment'); + $sql= "ALTER TABLE ".$table." ADD ".$field_name." "; + $sql.= $field_desc['type']; + if(preg_match("/^[^\s]/i",$field_desc['value'])) + if (! in_array($field_desc['type'],array('date','datetime'))) + { + $sql.= "(".$field_desc['value'].")"; + } + if(preg_match("/^[^\s]/i",$field_desc['attribute'])) + $sql.= " ".$field_desc['attribute']; + if(preg_match("/^[^\s]/i",$field_desc['null'])) + $sql.= " ".$field_desc['null']; + if(preg_match("/^[^\s]/i",$field_desc['default'])) + { + if(preg_match("/null/i",$field_desc['default'])) + $sql.= " default ".$field_desc['default']; + else + $sql.= " default '".$field_desc['default']."'"; + } + if(preg_match("/^[^\s]/i",$field_desc['extra'])) + $sql.= " ".$field_desc['extra']; + $sql.= " ".$field_position; + + dol_syslog(get_class($this)."::DDLAddField ".$sql,LOG_DEBUG); + if(! $this->query($sql)) + { + return -1; + } + else + { + return 1; + } + } + + /** + * Update format of a field into a table + * + * @param string $table Name of table + * @param string $field_name Name of field to modify + * @param string $field_desc Array with description of field format + * @return int <0 if KO, >0 if OK + */ + function DDLUpdateField($table,$field_name,$field_desc) + { + $sql = "ALTER TABLE ".$table; + $sql .= " MODIFY COLUMN ".$field_name." ".$field_desc['type']; + if ($field_desc['type'] == 'tinyint' || $field_desc['type'] == 'int' || $field_desc['type'] == 'varchar') { + $sql.="(".$field_desc['value'].")"; + } + + dol_syslog(get_class($this)."::DDLUpdateField ".$sql,LOG_DEBUG); + if (! $this->query($sql)) + return -1; + else + return 1; + } + + /** + * Drop a field from table + * + * @param string $table Name of table + * @param string $field_name Name of field to drop + * @return int <0 if KO, >0 if OK + */ + function DDLDropField($table,$field_name) + { + $sql= "ALTER TABLE ".$table." DROP COLUMN `".$field_name."`"; + dol_syslog(get_class($this)."::DDLDropField ".$sql,LOG_DEBUG); + if (! $this->query($sql)) + { + $this->error=$this->lasterror(); + return -1; + } + else return 1; + } + + + /** + * Create a user and privileges to connect to database (even if database does not exists yet) + * + * @param string $dolibarr_main_db_host Ip serveur + * @param string $dolibarr_main_db_user Nom user a creer + * @param string $dolibarr_main_db_pass Mot de passe user a creer + * @param string $dolibarr_main_db_name Database name where user must be granted + * @return int <0 if KO, >=0 if OK + */ + function DDLCreateUser($dolibarr_main_db_host,$dolibarr_main_db_user,$dolibarr_main_db_pass,$dolibarr_main_db_name) + { + $sql = "INSERT INTO user "; + $sql.= "(Host,User,password,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Index_Priv,Alter_priv,Lock_tables_priv)"; + $sql.= " VALUES ('".$this->escape($dolibarr_main_db_host)."','".$this->escape($dolibarr_main_db_user)."',password('".addslashes($dolibarr_main_db_pass)."')"; + $sql.= ",'Y','Y','Y','Y','Y','Y','Y','Y','Y')"; + + dol_syslog(get_class($this)."::DDLCreateUser", LOG_DEBUG); // No sql to avoid password in log + $resql=$this->query($sql); + if (! $resql) + { + return -1; + } + + $sql = "INSERT INTO db "; + $sql.= "(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Index_Priv,Alter_priv,Lock_tables_priv)"; + $sql.= " VALUES ('".$this->escape($dolibarr_main_db_host)."','".$this->escape($dolibarr_main_db_name)."','".addslashes($dolibarr_main_db_user)."'"; + $sql.= ",'Y','Y','Y','Y','Y','Y','Y','Y','Y')"; + + dol_syslog(get_class($this)."::DDLCreateUser", LOG_DEBUG); + $resql=$this->query($sql); + if (! $resql) + { + return -1; + } + + $sql="FLUSH Privileges"; + + dol_syslog(get_class($this)."::DDLCreateUser", LOG_DEBUG); + $resql=$this->query($sql); + if (! $resql) + { + return -1; + } + + return 1; + } + + /** + * Return charset used to store data in database + * + * @return string Charset + */ + function getDefaultCharacterSetDatabase() + { + return 'UTF-8'; + } + + /** + * Return list of available charset that can be used to store data in database + * + * @return array List of Charset + */ + function getListOfCharacterSet() + { + $liste = array(); + $i=0; + $liste[$i]['charset'] = 'UTF-8'; + $liste[$i]['description'] = 'UTF-8'; + return $liste; + } + + /** + * Return collation used in database + * + * @return string Collation value + */ + function getDefaultCollationDatabase() + { + return 'UTF-8'; + } + + /** + * Return list of available collation that can be used for database + * + * @return array List of Collation + */ + function getListOfCollation() + { + $liste = array(); + $i=0; + $liste[$i]['charset'] = 'UTF-8'; + $liste[$i]['description'] = 'UTF-8'; + return $liste; + } + + /** + * Return full path of dump program + * + * @return string Full path of dump program + */ + function getPathOfDump() + { + $fullpathofdump='/pathtomysqldump/mysqldump'; + + $resql=$this->query('SHOW VARIABLES LIKE \'basedir\''); + if ($resql) + { + $liste=$this->fetch_array($resql); + $basedir=$liste['Value']; + $fullpathofdump=$basedir.(preg_match('/\/$/',$basedir)?'':'/').'bin/mysqldump'; + } + return $fullpathofdump; + } + + /** + * Return full path of restore program + * + * @return string Full path of restore program + */ + function getPathOfRestore() + { + $fullpathofimport='/pathtomysql/mysql'; + + $resql=$this->query('SHOW VARIABLES LIKE \'basedir\''); + if ($resql) + { + $liste=$this->fetch_array($resql); + $basedir=$liste['Value']; + $fullpathofimport=$basedir.(preg_match('/\/$/',$basedir)?'':'/').'bin/mysql'; + } + return $fullpathofimport; + } + + /** + * Return value of server parameters + * + * @param string $filter Filter list on a particular value + * @return array Array of key-values (key=>value) + */ + function getServerParametersValues($filter='') + { + $result=array(); + static $pragmas; + if (! isset($pragmas)) { + // Définition de la liste des pragmas utilisés qui ne retournent qu'une seule valeur + // indépendante de la base de données. + // cf. http://www.sqlite.org/pragma.html + $pragmas = array( + 'application_id', 'auto_vacuum', 'automatic_index', 'busy_timeout', 'cache_size', + 'cache_spill', 'case_sensitive_like', 'checkpoint_fullsync', 'collation_list', + 'compile_options', 'data_version', /*'database_list',*/ + 'defer_foreign_keys', 'encoding', 'foreign_key_check', 'freelist_count', + 'full_column_names', 'fullsync', 'ingore_check_constraints', 'integrity_check', + 'journal_mode', 'journal_size_limit', 'legacy_file_format', 'locking_mode', + 'max_page_count', 'page_count', 'page_size', 'parser_trace', + 'query_only', 'quick_check', 'read_uncommitted', 'recursive_triggers', + 'reverse_unordered_selects', 'schema_version', 'user_version', + 'secure_delete', 'short_column_names', 'shrink_memory', 'soft_heap_limit', + 'synchronous', 'temp_store', /*'temp_store_directory',*/ 'threads', + 'vdbe_addoptrace', 'vdbe_debug', 'vdbe_listing', 'vdbe_trace', + 'wal_autocheckpoint', + ); + } + + // TODO prendre en compte le filtre + foreach($pragmas as $var) { + $sql = "PRAGMA $var"; + $resql=$this->query($sql); + if ($resql) + { + $obj = $this->fetch_row($resql); + //dol_syslog(get_class($this)."::select_db getServerParametersValues $var=". print_r($obj, true), LOG_DEBUG); + $result[$var] = $obj[0]; + } + } + return $result; + } + + /** + * Return value of server status + * + * @param string $filter Filter list on a particular value + * @return array Array of key-values (key=>value) + */ + function getServerStatusValues($filter='') + { + $result=array(); + /* + $sql='SHOW STATUS'; + if ($filter) $sql.=" LIKE '".$this->escape($filter)."'"; + $resql=$this->query($sql); + if ($resql) + { + while ($obj=$this->fetch_object($resql)) $result[$obj->Variable_name]=$obj->Value; + } + */ + + return $result; + } + + /** + * Permet le chargement d'une fonction personnalisee dans le moteur de base de donnees. + * Note: le nom de la fonction personnalisee est prefixee par 'db_'. La fonction doit être + * statique et publique. Le nombre de parametres est determine automatiquement. + * @param string $name Le nom de la fonction a definir dans Sqlite + */ + private function addCustomFunction($name, $arg_count = -1) { + if ($this->db) { + $localname = __CLASS__ . '::' . 'db_' . $name; + $reflectClass = new ReflectionClass(__CLASS__); + $reflectFunction = $reflectClass->getMethod('db_' . $name); + if ($arg_count < 0) { + $arg_count = $reflectFunction->getNumberOfParameters(); + } + if (!$this->db->createFunction($name, $localname , $arg_count)) { + $this->error = "unable to create custom function '$name'"; + } + } + } + + /** + * Cette fonction est l'equivalent de la fonction MONTH de MySql. + * @param string $date + * @return integer + */ + public static function db_MONTH($date) { + return date('n', strtotime($date)); + } + + /** + * calcule du numéro de semaine + * + * @param string date + * @param int mode + */ + public static function db_WEEK($date, $mode = 0) { + $arr = date_parse($date); + $calc_year = 0; + return self::calc_week($arr['year'], $arr['month'], $arr['day'], self::week_mode($mode), $calc_year); + } + + public static function db_CURDATE() { + return date('Y-m-d'); + } + + public static function db_CURTIME() { + return date('H:i:s'); + } + + public static function db_WEEKDAY($date) { + $arr = date_parse($date); + return self::calc_weekday(self::calc_daynr($arr['year'], $arr['month'], $arr['day']), 0); + + } + + /** + * Cette fonction est l'equivelent de la fonction date_format de MySQL. + * @staticvar string $mysql_replacement Les symboles formatage a remplacer + * @param string $date la date dans un format ISO + * @param string $format la chaine de formatage + * @return string La date formatee. + */ + public static function db_date_format($date, $format) { + static $mysql_replacement; + if (! isset($mysql_replacement)) { + $mysql_replacement = array( + '%' => '%', + 'a' => 'D', + 'b' => 'M', + 'c' => 'n', + 'D' => 'jS', + 'd' => 'd', + 'e' => 'j', + 'f' => 'u', + 'H' => 'H', + 'h' => 'h', + 'I' => 'h', + 'i' => 'i', + 'k' => 'H', + 'l' => 'g', + 'M' => 'F', + 'm' => 'm', + 'p' => 'A', + 'r' => 'h:i:s A', + 'S' => 's', + 's' => 's', + 'T' => 'H:i:s', + 'W' => 'l', + 'w' => 'w', + 'Y' => 'Y', + 'y' => 'y', + ); + } + + $fmt = ''; + $lg = strlen($format); + $state = 0; + $timestamp = strtotime($date); + $yday = date('z', $timestamp); + $month = (integer)date("n", $timestamp); + $year = (integer)date("Y", $timestamp); + $day = (integer)date("d", $timestamp); + for($idx = 0; $idx < $lg; ++$idx) { + $char = $format[$idx]; + if ($state == 0) { + if ($char == '%') { + $state = 1; + } else { + $fmt .= $char; + } + } + elseif ($state == 1) { + if (array_key_exists($char, $mysql_replacement)) { + $fmt .= $mysql_replacement[$char]; + } else { + $calc_year = 0; + switch ($char) { + case 'j': // day of the year 001 + $char = sprintf("%03d", $yday+1); + break; + case 'U': // mode 0: semaine 0 = premiere semaine complète qui commence un dimanche + $char = sprintf("%02d", self::calc_week($year, $month, $day, 4, $calc_year)); + break; + case 'u': // mode 1: semaine 0 = première semaine de 4 jours. Début le dimanche + $char = sprintf("%02d", self::calc_week($year, $month, $day, 1, $calc_year)); + break; + case 'V': // mode 2: semaine 1 = premiere semaine complète qui commence un dimanche + $char = sprintf("%02d", self::calc_week($year, $month, $day, 6, $calc_year)); + break; + case 'v': // mode 3: semaine 1 = premiere semaine de 4 jours. Début le lundi + $char = sprintf("%02d", self::calc_week($year, $month, $day, 3, $calc_year)); + break; + case 'X': + self::calc_week($year, $month, $day, 6, $calc_year); + $char = sprintf("%04d", $calc_year); + break; + case 'x': + self::calc_week($year, $month, $day, 3, $calc_year); + $char = sprintf("%04d", $calc_year); + break; + } + $fmt .= $char; + } + $state = 0; + } + } + return date($fmt, strtotime($date)); + } + + /** + * Equivalent de la fonction MySQL IF + * @param boolean $test Le resultat du test + * @param mixed $true_part Partie a retourner si vrai + * @param mixed $false_part Partie a retourner si faux + * @return mixed Partie selectionnee en fonction du test + */ + public static function db_IF($test, $true_part, $false_part) { + return ( $test ) ? $true_part : $false_part; + } + + // Adapté de mytime.c des sources de mariadb + // fonction calc_daynr + private static function calc_daynr($year, $month, $day) { + $y = $year; + if ($y == 0 && $month == 0) return 0; + $num = (365* $y + 31 * ($month - 1) + $day); + if ($month <= 2) { + $y--; } + else { + $num -= floor(($month * 4 + 23) / 10); + } + $temp = floor(($y / 100 + 1) * 3 / 4); + return $num + floor($y / 4) - $temp; + } + + private static function calc_weekday($daynr, $sunday_first_day_of_week) { + $ret = floor(($daynr + 5 + ($sunday_first_day_of_week ? 1 : 0)) % 7); + return $ret; + } + + private static function calc_days_in_year($year) + { + return (($year & 3) == 0 && ($year%100 || ($year%400 == 0 && $year)) ? 366 : 365); + } + + private static function week_mode($mode) { + $week_format= ($mode & 7); + if (!($week_format & self::WEEK_MONDAY_FIRST)) { + $week_format^= self::WEEK_FIRST_WEEKDAY; + } + return $week_format; + } + + + private static function calc_week($year, $month, $day, $week_behaviour, &$calc_year) { + $daynr=self::calc_daynr($year,$month,$day); + $first_daynr=self::calc_daynr($year,1,1); + $monday_first= ($week_behaviour & self::WEEK_MONDAY_FIRST) ? 1 : 0; + $week_year= ($week_behaviour & self::WEEK_YEAR) ? 1 : 0; + $first_weekday= ($week_behaviour & self::WEEK_FIRST_WEEKDAY) ? 1 : 0; + + $weekday=self::calc_weekday($first_daynr, !$monday_first); + $calc_year=$year; + + if ($month == 1 && $day <= 7-$weekday) + { + if (!$week_year && (($first_weekday && $weekday != 0) || (!$first_weekday && $weekday >= 4))) + return 0; + $week_year= 1; + $calc_year--; + $first_daynr-= ($days=self::calc_days_in_year($calc_year)); + $weekday= ($weekday + 53*7- $days) % 7; + } + + if (($first_weekday && $weekday != 0) || (!$first_weekday && $weekday >= 4)) { + $days= $daynr - ($first_daynr+ (7-$weekday)); + } + else { + $days= $daynr - ($first_daynr - $weekday); + } + + if ($week_year && $days >= 52*7) + { + $weekday= ($weekday + self::calc_days_in_year($calc_year)) % 7; + if ((!$first_weekday && $weekday < 4) || ($first_weekday && $weekday == 0)) + { + $calc_year++; + return 1; + } + } + return floor($days/7+1); + } + +} + diff --git a/htdocs/install/etape2.php b/htdocs/install/etape2.php index d934f79f0af..612c3c64148 100644 --- a/htdocs/install/etape2.php +++ b/htdocs/install/etape2.php @@ -51,7 +51,7 @@ if ($dolibarr_main_db_type == "mysql") $choix=1; if ($dolibarr_main_db_type == "mysqli") $choix=1; if ($dolibarr_main_db_type == "pgsql") $choix=2; if ($dolibarr_main_db_type == "mssql") $choix=3; -if ($dolibarr_main_db_type == "sqlite") $choix=4; +if ($dolibarr_main_db_type == "sqlite3") $choix=4; //if (empty($choix)) dol_print_error('','Database type '.$dolibarr_main_db_type.' not supported into etape2.php page'); @@ -413,7 +413,7 @@ if ($action == "set") if ($choix==1) $dir = "mysql/functions/"; elseif ($choix==2) $dir = "pgsql/functions/"; elseif ($choix==3) $dir = "mssql/functions/"; - elseif ($choix==4) { $dir = "sqlite/functions/"; } + elseif ($choix==4) { $dir = "sqlite3/functions/"; } // Creation donnees $file = "functions.sql"; diff --git a/htdocs/install/fileconf.php b/htdocs/install/fileconf.php index 49b80eb1b6b..ec3e208374b 100644 --- a/htdocs/install/fileconf.php +++ b/htdocs/install/fileconf.php @@ -306,7 +306,7 @@ if (! empty($force_install_message)) $class='DoliDB'.ucfirst($type); include_once $dir."/".$file; - //if ($type == 'sqlite') continue; // We hide sqlite because support can't be complete unti sqlit does not manage foreign key creation after table creation + if ($type == 'sqlite') continue; // We hide sqlite because support can't be complete unti sqlit does not manage foreign key creation after table creation // Version min of database $versionbasemin=explode('.',$class::VERSIONMIN); @@ -320,7 +320,7 @@ if (! empty($force_install_message)) if ($type=='mysqli') { $testfunction='mysqli_connect'; $testclass=''; } if ($type=='pgsql') { $testfunction='pg_connect'; $testclass=''; } if ($type=='mssql') { $testfunction='mssql_connect'; $testclass=''; } - if ($type=='sqlite') { $testfunction=''; $testclass='PDO'; } + if ($type=='sqlite3') { $testfunction=''; $testclass='SQLite3'; } $option.=''; @@ -479,7 +480,7 @@ if (! empty($force_install_message)) jQuery(document).ready(function() { jQuery("#db_type").change(function() { - if (jQuery("#db_type").val()=='sqlite') { jQuery(".hidesqlite").hide(); } + if (jQuery("#db_type").val()=='sqlite' || jQuery("#db_type").val()=='sqlite3') { jQuery(".hidesqlite").hide(); } else { jQuery(".hidesqlite").show(); } }); diff --git a/htdocs/install/sqlite/functions/functions.sql b/htdocs/install/sqlite3/functions/functions.sql similarity index 100% rename from htdocs/install/sqlite/functions/functions.sql rename to htdocs/install/sqlite3/functions/functions.sql diff --git a/htdocs/install/sqlite/index.html b/htdocs/install/sqlite3/index.html similarity index 100% rename from htdocs/install/sqlite/index.html rename to htdocs/install/sqlite3/index.html From 39a7271f910b8de71003b8eee910069fd06f012d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 5 Mar 2015 10:57:17 +0100 Subject: [PATCH 164/429] Fix bad merge --- htdocs/includes/tcpdi/fpdf_tpl.php | 271 ++--------------------------- 1 file changed, 10 insertions(+), 261 deletions(-) diff --git a/htdocs/includes/tcpdi/fpdf_tpl.php b/htdocs/includes/tcpdi/fpdf_tpl.php index 0c60a6ed6f3..be03a39b5d3 100644 --- a/htdocs/includes/tcpdi/fpdf_tpl.php +++ b/htdocs/includes/tcpdi/fpdf_tpl.php @@ -29,21 +29,13 @@ class FPDF_TPL extends FPDF { * @var int */ var $tpl = 0; -<<<<<<< HEAD - -======= ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 /** * "In Template"-Flag * @var boolean */ var $_intpl = false; -<<<<<<< HEAD - -======= ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 /** * Nameprefix of Templates used in Resources-Dictonary * @var string A String defining the Prefix used as Template-Object-Names. Have to beginn with an / @@ -55,22 +47,14 @@ class FPDF_TPL extends FPDF { * @var array */ var $_res = array(); -<<<<<<< HEAD - -======= ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 /** * Last used Template data * * @var array */ var $lastUsedTemplateData = array(); -<<<<<<< HEAD - -======= ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 /** * Start a Template * @@ -90,19 +74,11 @@ class FPDF_TPL extends FPDF { * @return int The ID of new created Template */ function beginTemplate($x = null, $y = null, $w = null, $h = null) { -<<<<<<< HEAD if (is_subclass_of($this, 'TCPDF')) { $this->Error('This method is only usable with FPDF. Use TCPDF methods startTemplate() instead.'); return; } - -======= - if (is_subclass_of($this, 'TCPDF')) { - $this->Error('This method is only usable with FPDF. Use TCPDF methods startTemplate() instead.'); - return; - } ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 if ($this->page <= 0) $this->error("You have to add a page to fpdf first!"); @@ -140,11 +116,7 @@ class FPDF_TPL extends FPDF { ); $this->SetAutoPageBreak(false); -<<<<<<< HEAD - -======= ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 // Define own high and width to calculate possitions correct $this->h = $h; $this->w = $w; @@ -155,25 +127,14 @@ class FPDF_TPL extends FPDF { if ($this->CurrentFont) { $fontkey = $this->FontFamily . $this->FontStyle; -<<<<<<< HEAD $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; - + $this->_out(sprintf('BT /F%d %.2f Tf ET', $this->CurrentFont['i'], $this->FontSizePt)); } - - return $this->tpl; - } - -======= - $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; - - $this->_out(sprintf('BT /F%d %.2f Tf ET', $this->CurrentFont['i'], $this->FontSizePt)); - } return $this->tpl; } ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 /** * End Template * @@ -182,23 +143,13 @@ class FPDF_TPL extends FPDF { * @return mixed If a template is opened, the ID is returned. If not a false is returned. */ function endTemplate() { -<<<<<<< HEAD if (is_subclass_of($this, 'TCPDF')) { $args = func_get_args(); return call_user_func_array(array($this, 'TCPDF::endTemplate'), $args); } - - if ($this->_intpl) { - $this->_intpl = false; -======= - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::endTemplate'), $args); - } if ($this->_intpl) { $this->_intpl = false; ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 $tpl =& $this->tpls[$this->tpl]; $this->SetXY($tpl['o_x'], $tpl['o_y']); $this->tMargin = $tpl['o_tMargin']; @@ -207,39 +158,22 @@ class FPDF_TPL extends FPDF { $this->h = $tpl['o_h']; $this->w = $tpl['o_w']; $this->SetAutoPageBreak($tpl['o_AutoPageBreak'], $tpl['o_bMargin']); -<<<<<<< HEAD - + $this->FontFamily = $tpl['o_FontFamily']; $this->FontStyle = $tpl['o_FontStyle']; $this->FontSizePt = $tpl['o_FontSizePt']; $this->FontSize = $tpl['o_FontSize']; - + $fontkey = $this->FontFamily . $this->FontStyle; if ($fontkey) $this->CurrentFont =& $this->fonts[$fontkey]; - -======= - $this->FontFamily = $tpl['o_FontFamily']; - $this->FontStyle = $tpl['o_FontStyle']; - $this->FontSizePt = $tpl['o_FontSizePt']; - $this->FontSize = $tpl['o_FontSize']; - - $fontkey = $this->FontFamily . $this->FontStyle; - if ($fontkey) - $this->CurrentFont =& $this->fonts[$fontkey]; - ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 return $this->tpl; } else { return false; } } -<<<<<<< HEAD - -======= ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 /** * Use a Template in current Page or other Template * @@ -259,22 +193,7 @@ class FPDF_TPL extends FPDF { */ function useTemplate($tplidx, $_x = null, $_y = null, $_w = 0, $_h = 0) { if ($this->page <= 0) -<<<<<<< HEAD $this->error('You have to add a page first!'); - - if (!isset($this->tpls[$tplidx])) - $this->error('Template does not exist!'); - - if ($this->_intpl) { - $this->_res['tpl'][$this->tpl]['tpls'][$tplidx] =& $this->tpls[$tplidx]; - } - - $tpl =& $this->tpls[$tplidx]; - $w = $tpl['w']; - $h = $tpl['h']; - -======= - $this->error('You have to add a page first!'); if (!isset($this->tpls[$tplidx])) $this->error('Template does not exist!'); @@ -287,21 +206,10 @@ class FPDF_TPL extends FPDF { $w = $tpl['w']; $h = $tpl['h']; ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 if ($_x == null) $_x = 0; if ($_y == null) $_y = 0; -<<<<<<< HEAD - - $_x += $tpl['x']; - $_y += $tpl['y']; - - $wh = $this->getTemplateSize($tplidx, $_w, $_h); - $_w = $wh['w']; - $_h = $wh['h']; - -======= $_x += $tpl['x']; $_y += $tpl['y']; @@ -310,7 +218,6 @@ class FPDF_TPL extends FPDF { $_w = $wh['w']; $_h = $wh['h']; ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 $tData = array( 'x' => $this->x, 'y' => $this->y, @@ -322,17 +229,6 @@ class FPDF_TPL extends FPDF { 'ty' => ($this->h - $_y - $_h), 'lty' => ($this->h - $_y - $_h) - ($this->h - $h) * ($_h / $h) ); -<<<<<<< HEAD - - $this->_out(sprintf('q %.4F 0 0 %.4F %.4F %.4F cm', $tData['scaleX'], $tData['scaleY'], $tData['tx'] * $this->k, $tData['ty'] * $this->k)); // Translate - $this->_out(sprintf('%s%d Do Q', $this->tplprefix, $tplidx)); - - $this->lastUsedTemplateData = $tData; - - return array('w' => $_w, 'h' => $_h); - } - -======= $this->_out(sprintf('q %.4F 0 0 %.4F %.4F %.4F cm', $tData['scaleX'], $tData['scaleY'], $tData['tx'] * $this->k, $tData['ty'] * $this->k)); // Translate $this->_out(sprintf('%s%d Do Q', $this->tplprefix, $tplidx)); @@ -342,7 +238,6 @@ class FPDF_TPL extends FPDF { return array('w' => $_w, 'h' => $_h); } ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 /** * Get The calculated Size of a Template * @@ -360,75 +255,44 @@ class FPDF_TPL extends FPDF { $tpl =& $this->tpls[$tplidx]; $w = $tpl['w']; $h = $tpl['h']; -<<<<<<< HEAD - -======= ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 if ($_w == 0 and $_h == 0) { $_w = $w; $_h = $h; } -<<<<<<< HEAD if($_w == 0) $_w = $_h * $w / $h; if($_h == 0) $_h = $_w * $h / $w; - - return array("w" => $_w, "h" => $_h); - } - -======= - if($_w == 0) - $_w = $_h * $w / $h; - if($_h == 0) - $_h = $_w * $h / $w; return array("w" => $_w, "h" => $_h); } ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 /** * See FPDF/TCPDF-Documentation ;-) */ public function SetFont($family, $style = '', $size = 0) { if (is_subclass_of($this, 'TCPDF')) { -<<<<<<< HEAD $args = func_get_args(); return call_user_func_array(array($this, 'TCPDF::SetFont'), $args); } - - parent::SetFont($family, $style, $size); - - $fontkey = $this->FontFamily . $this->FontStyle; - -======= - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::SetFont'), $args); - } parent::SetFont($family, $style, $size); $fontkey = $this->FontFamily . $this->FontStyle; ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 if ($this->_intpl) { $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; } else { $this->_res['page'][$this->page]['fonts'][$fontkey] =& $this->fonts[$fontkey]; } } -<<<<<<< HEAD - -======= ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 /** * See FPDF/TCPDF-Documentation ;-) */ function Image( -<<<<<<< HEAD $file, $x = '', $y = '', $w = 0, $h = 0, $type = '', $link = '', $align = '', $resize = false, $dpi = 300, $palign = '', $ismask = false, $imgmask = false, $border = 0, $fitbox = false, $hidden = false, $fitonpage = false, $alt = false, $altimgs = array() @@ -437,60 +301,31 @@ class FPDF_TPL extends FPDF { $args = func_get_args(); return call_user_func_array(array($this, 'TCPDF::Image'), $args); } - -======= - $file, $x = '', $y = '', $w = 0, $h = 0, $type = '', $link = '', $align = '', $resize = false, - $dpi = 300, $palign = '', $ismask = false, $imgmask = false, $border = 0, $fitbox = false, - $hidden = false, $fitonpage = false, $alt = false, $altimgs = array() - ) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::Image'), $args); - } ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 $ret = parent::Image($file, $x, $y, $w, $h, $type, $link); if ($this->_intpl) { $this->_res['tpl'][$this->tpl]['images'][$file] =& $this->images[$file]; } else { $this->_res['page'][$this->page]['images'][$file] =& $this->images[$file]; } -<<<<<<< HEAD - - return $ret; - } - -======= return $ret; } ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 /** * See FPDF-Documentation ;-) * * AddPage is not available when you're "in" a template. */ function AddPage($orientation = '', $format = '', $keepmargins = false, $tocpage = false) { -<<<<<<< HEAD if (is_subclass_of($this, 'TCPDF')) { $args = func_get_args(); return call_user_func_array(array($this, 'TCPDF::AddPage'), $args); } - - if ($this->_intpl) - $this->Error('Adding pages in templates isn\'t possible!'); - -======= - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::AddPage'), $args); - } if ($this->_intpl) $this->Error('Adding pages in templates isn\'t possible!'); ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 parent::AddPage($orientation, $format); } @@ -499,77 +334,43 @@ class FPDF_TPL extends FPDF { */ function Link($x, $y, $w, $h, $link, $spaces = 0) { if (is_subclass_of($this, 'TCPDF')) { -<<<<<<< HEAD $args = func_get_args(); return call_user_func_array(array($this, 'TCPDF::Link'), $args); } - + if ($this->_intpl) $this->Error('Using links in templates aren\'t possible!'); - + parent::Link($x, $y, $w, $h, $link); } - + function AddLink() { if (is_subclass_of($this, 'TCPDF')) { $args = func_get_args(); return call_user_func_array(array($this, 'TCPDF::AddLink'), $args); } - -======= - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::Link'), $args); - } - if ($this->_intpl) - $this->Error('Using links in templates aren\'t possible!'); - - parent::Link($x, $y, $w, $h, $link); - } - - function AddLink() { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::AddLink'), $args); - } - ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 if ($this->_intpl) $this->Error('Adding links in templates aren\'t possible!'); return parent::AddLink(); } -<<<<<<< HEAD - + function SetLink($link, $y = 0, $page = -1) { if (is_subclass_of($this, 'TCPDF')) { $args = func_get_args(); return call_user_func_array(array($this, 'TCPDF::SetLink'), $args); } - -======= - function SetLink($link, $y = 0, $page = -1) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::SetLink'), $args); - } - ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 if ($this->_intpl) $this->Error('Setting links in templates aren\'t possible!'); parent::SetLink($link, $y, $page); } -<<<<<<< HEAD - -======= ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 /** * Private Method that writes the form xobjects */ function _putformxobjects() { $filter=($this->compress) ? '/Filter /FlateDecode ' : ''; -<<<<<<< HEAD reset($this->tpls); foreach($this->tpls AS $tplidx => $tpl) { @@ -577,15 +378,6 @@ class FPDF_TPL extends FPDF { $this->_newobj(); $this->tpls[$tplidx]['n'] = $this->n; $this->_out('<<'.$filter.'/Type /XObject'); -======= - reset($this->tpls); - foreach($this->tpls AS $tplidx => $tpl) { - - $p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer']; - $this->_newobj(); - $this->tpls[$tplidx]['n'] = $this->n; - $this->_out('<<'.$filter.'/Type /XObject'); ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 $this->_out('/Subtype /Form'); $this->_out('/FormType 1'); $this->_out(sprintf('/BBox [%.2F %.2F %.2F %.2F]', @@ -598,18 +390,13 @@ class FPDF_TPL extends FPDF { // ury ($tpl['h'] - $tpl['y']) * $this->k )); -<<<<<<< HEAD - -======= ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 if ($tpl['x'] != 0 || $tpl['y'] != 0) { $this->_out(sprintf('/Matrix [1 0 0 1 %.5F %.5F]', -$tpl['x'] * $this->k * 2, $tpl['y'] * $this->k * 2 )); } -<<<<<<< HEAD - + $this->_out('/Resources '); $this->_out('<_out('/F' . $font['i'] . ' ' . $font['n'] . ' 0 R'); $this->_out('>>'); } - if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) || + if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) || isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) { $this->_out('/XObject <<'); if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) { foreach($this->_res['tpl'][$tplidx]['images'] as $image) $this->_out('/I' . $image['i'] . ' ' . $image['n'] . ' 0 R'); -======= - - $this->_out('/Resources '); - - $this->_out('<_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) { - $this->_out('/Font <<'); - foreach($this->_res['tpl'][$tplidx]['fonts'] as $font) - $this->_out('/F' . $font['i'] . ' ' . $font['n'] . ' 0 R'); - $this->_out('>>'); - } - if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) || - isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) - { - $this->_out('/XObject <<'); - if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) { - foreach($this->_res['tpl'][$tplidx]['images'] as $image) - $this->_out('/I' . $image['i'] . ' ' . $image['n'] . ' 0 R'); ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 } if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) { foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $tpl) $this->_out($this->tplprefix . $i . ' ' . $tpl['n'] . ' 0 R'); } $this->_out('>>'); -<<<<<<< HEAD } $this->_out('>>'); - + $this->_out('/Length ' . strlen($p) . ' >>'); $this->_putstream($p); $this->_out('endobj'); } } - -======= - } - $this->_out('>>'); - $this->_out('/Length ' . strlen($p) . ' >>'); - $this->_putstream($p); - $this->_out('endobj'); - } - } - ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 /** * Overwritten to add _putformxobjects() after _putimages() * @@ -680,17 +436,10 @@ class FPDF_TPL extends FPDF { parent::_putimages(); $this->_putformxobjects(); } -<<<<<<< HEAD - - function _putxobjectdict() { - parent::_putxobjectdict(); - -======= function _putxobjectdict() { parent::_putxobjectdict(); ->>>>>>> 4af26c119faa512590faad44e296b64b6c9e1978 if (count($this->tpls)) { foreach($this->tpls as $tplidx => $tpl) { $this->_out(sprintf('%s%d %d 0 R', $this->tplprefix, $tplidx, $tpl['n'])); From c36f92396b03890be7367a1398c48dc06ccda990 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 5 Mar 2015 11:13:44 +0100 Subject: [PATCH 165/429] Add navigation into the new timesheet week page. Fix bad merge --- htdocs/core/lib/project.lib.php | 37 ++++++++++++----------- htdocs/langs/en_US/projects.lang | 3 +- htdocs/main.inc.php | 4 +-- htdocs/projet/activity/perday.php | 50 +++++++++++++++++++++++++++++-- 4 files changed, 69 insertions(+), 25 deletions(-) diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index eb7617b5c7e..e4015812e62 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -234,10 +234,10 @@ function project_admin_prepare_head() /** * Show task lines with a particular parent * - * @param string $inc Counter that count number of lines legitimate to show (for return) - * @param int $parent Id of parent task to start - * @param array $lines Array of all tasks - * @param int $level Level of task + * @param string $inc Line number (start to 0, then increased by recursive call) + * @param string $parent Id of parent project to show (0 to show all) + * @param Task[] $lines Array of lines + * @param int $level Level (start to 0, then increased/decrease by recursive call) * @param string $var Color * @param int $showproject Show project columns * @param int $taskrole Array of roles of user for each tasks @@ -482,12 +482,12 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t /** * Output a task line into a pertime intput mode * - * @param string $inc ? - * @param string $parent ? - * @param Task[] $lines ? - * @param int $level ? - * @param string $projectsrole ? - * @param string $tasksrole ? + * @param string $inc Line number (start to 0, then increased by recursive call) + * @param string $parent Id of parent project to show (0 to show all) + * @param Task[] $lines Array of lines + * @param int $level Level (start to 0, then increased/decrease by recursive call) + * @param string $projectsrole Array of roles user has on project + * @param string $tasksrole Array of roles user has on task * @param string $mine Show only task lines I am assigned to * @param int $restricteditformytask 0=No restriction, 1=Enable add time only if task is a task i am affected to * @return $inc @@ -628,12 +628,12 @@ function projectLinesPerTime(&$inc, $parent, $lines, &$level, &$projectsrole, &$ /** * Output a task line into a perday intput mode * - * @param string $inc ? - * @param string $parent ? - * @param Task[] $lines ? - * @param int $level ? - * @param string $projectsrole ? - * @param string $tasksrole ? + * @param string $inc Line number (start to 0, then increased by recursive call) + * @param string $parent Id of parent project to show (0 to show all) + * @param Task[] $lines Array of lines + * @param int $level Level (start to 0, then increased/decrease by recursive call) + * @param string $projectsrole Array of roles user has on project + * @param string $tasksrole Array of roles user has on task * @param string $mine Show only task lines I am assigned to * @param int $restricteditformytask 0=No restriction, 1=Enable add time only if task is a task i am affected to * @return $inc @@ -750,7 +750,7 @@ function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$t { $dayWorkLoad = 0; $tableCell ='
'.$langs->trans("TableName").''; - $tableCell.='+'; + $tableCell.='+'; $tableCell.=''; @@ -927,7 +927,8 @@ function print_projecttasks_array($db, $socid, $projectsListId, $mytasks=0, $sta print "
"; - if (!empty($conf->global->PROJECT_LIMIT_YEAR_RANGE)) { + if (!empty($conf->global->PROJECT_LIMIT_YEAR_RANGE)) + { //Add the year filter input print ''; print ''; diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index dc25c1f33b7..936e86ad692 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -136,4 +136,5 @@ ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time InputPerTime=Input per time -InputPerDay=Input per day \ No newline at end of file +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s \ No newline at end of file diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 4818b2d38f1..36e246c42f2 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1376,9 +1376,7 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a // Wrapper to show tooltips print "\n".''; } diff --git a/htdocs/projet/activity/perday.php b/htdocs/projet/activity/perday.php index f7b37ca1ca0..692267d6965 100644 --- a/htdocs/projet/activity/perday.php +++ b/htdocs/projet/activity/perday.php @@ -50,6 +50,11 @@ $result = restrictedArea($user, 'projet', $projectid); $now=dol_now(); +$year=GETPOST("year","int")?GETPOST("year","int"):date("Y"); +$month=GETPOST("month","int")?GETPOST("month","int"):date("m"); +$week=GETPOST("week","int")?GETPOST("week","int"):date("W"); +$day=GETPOST("day","int")?GETPOST("day","int"):date("d"); + /* * Actions @@ -138,6 +143,40 @@ print "\n"; dol_fiche_end(); */ + +$startdayarray=dol_get_first_day_week($day, $month, $year); + +$prev = $startdayarray; +$prev_year = $prev['prev_year']; +$prev_month = $prev['prev_month']; +$prev_day = $prev['prev_day']; +$first_day = $prev['first_day']; +$first_month= $prev['first_month']; +$first_year = $prev['first_year']; +$week = $prev['week']; + +$day = (int) $day; +$next = dol_get_next_week($first_day, $week, $first_month, $first_year); +$next_year = $next['year']; +$next_month = $next['month']; +$next_day = $next['day']; + +// Define firstdaytoshow and lastdaytoshow (warning: lastdaytoshow is last second to show + 1) +$firstdaytoshow=dol_mktime(0,0,0,$first_month,$first_day,$first_year); +$lastdaytoshow=dol_time_plus_duree($firstdaytoshow, 7, 'd'); + +$tmpday = $first_day; + +// Show navigation bar +$nav ="".img_previous($langs->trans("Previous"))."\n"; +$nav.=" ".dol_print_date(dol_mktime(0,0,0,$first_month,$first_day,$first_year),"%Y").", ".$langs->trans("Week")." ".$week; +$nav.=" \n"; +$nav.="".img_next($langs->trans("Next"))."\n"; +$nav.="   (".$langs->trans("Today").")"; +$picto='calendarweek'; +print '
'.$nav.'
'; + + print '
'; print ''; print ''; @@ -147,8 +186,6 @@ print ''; print ''; //print ''; -$tmp=dol_getdate($now); -$startdayarray=dol_get_first_day_week($tmp['mday'], $tmp['mon'], $tmp['year']); $startday=dol_mktime(12, 0, 0, $startdayarray['first_month'], $startdayarray['first_day'], $startdayarray['first_year']); for($i=0;$i<7;$i++) @@ -192,7 +229,14 @@ print '
'; print ''; print '
'; -print ''; +print ''."\n\n"; + + +print ''; llxFooter(); From dc15eee533b85c5856d9508ad6ffb7f13c348198 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 5 Mar 2015 11:21:58 +0100 Subject: [PATCH 166/429] Fix: missing dependcy on project to check before deleting --- htdocs/societe/class/societe.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 510e184e521..a18aedfcc1b 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2014 Laurent Destailleur + * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2004 Eric Seigne * Copyright (C) 2003 Brian Fraval * Copyright (C) 2006 Andre Cianfarani @@ -42,7 +42,7 @@ class Societe extends CommonObject public $element='societe'; public $table_element = 'societe'; public $fk_element='fk_soc'; - protected $childtables=array("propal","commande","facture","contrat","facture_fourn","commande_fournisseur"); // To test if we can delete object + protected $childtables=array("propal","commande","facture","contrat","facture_fourn","commande_fournisseur","projet"); // To test if we can delete object /** * 0=No test on entity, 1=Test with field entity, 2=Test with link by societe From 9c12c325dbf60a450c6b23b8f57424f3999a2b57 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 5 Mar 2015 11:46:03 +0100 Subject: [PATCH 167/429] Fix regression into enable/disable external calendars --- htdocs/comm/action/index.php | 9 ++++----- htdocs/comm/action/peruser.php | 8 ++++---- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index 1565bf79cac..f2e945cf83d 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -363,17 +363,16 @@ if (! empty($conf->use_javascript_ajax)) { foreach ($showextcals as $val) { - $htmlname = dol_string_nospecial($val['name']); - $htmlname = dol_string_nospecial($htmlname,'_',array("\.","#")); + $htmlname = md5($val['name']); $s.='' . "\n"; - $s.='
' . $val ['name'] . '  
'; + $s.='
' . $val ['name'] . '  
'; } } $s.='
'.$langs->trans("AgendaShowBirthdayEvents").'  
'; diff --git a/htdocs/comm/action/peruser.php b/htdocs/comm/action/peruser.php index 599bc32ceba..0f281a91af4 100644 --- a/htdocs/comm/action/peruser.php +++ b/htdocs/comm/action/peruser.php @@ -305,16 +305,16 @@ if ($conf->use_javascript_ajax) { foreach ($showextcals as $val) { - $htmlname = dol_string_nospecial($val['name']); + $htmlname = md5($val['name']); $s.='' . "\n"; - $s.='
' . $val ['name'] . '  
'; + $s.='
' . $val ['name'] . '  
'; } } } From 8b5dd4910f22ea37718fe7bedd9b390e554a40ec Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 5 Mar 2015 13:02:37 +0100 Subject: [PATCH 168/429] Fix bad update of denormalized field --- htdocs/projet/class/task.class.php | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index a9ecdd7bbc6..4c3e3995b03 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -586,7 +586,7 @@ class Task extends CommonObject if ($filteronprojstatus > -1) $sql.= " AND p.fk_statut = ".$filteronprojstatus; $sql.= " ORDER BY p.ref, t.rang, t.dateo"; - //print $sql; + //print $sql;exit; dol_syslog(get_class($this)."::getTasksArray", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) @@ -759,6 +759,8 @@ class Task extends CommonObject { global $conf,$langs; + dol_syslog(get_class($this)."::addTimeSpent", LOG_DEBUG); + $ret = 0; // Check parameters @@ -790,8 +792,8 @@ class Task extends CommonObject $sql.= ", ".(isset($this->timespent_note)?"'".$this->db->escape($this->timespent_note)."'":"null"); $sql.= ")"; - dol_syslog(get_class($this)."::addTimeSpent", LOG_DEBUG); - if ($this->db->query($sql) ) + $resql=$this->db->query($sql); + if ($resql) { $tasktime_id = $this->db->last_insert_id(MAIN_DB_PREFIX."projet_task_time"); $ret = $tasktime_id; @@ -800,21 +802,22 @@ class Task extends CommonObject { // Call trigger $result=$this->call_trigger('TASK_TIMESPENT_CREATE',$user); - if ($result < 0) { $this->db->rollback(); $ret=-1; } + if ($result < 0) { $ret=-1; } // End call triggers } } else { $this->error=$this->db->lasterror(); - $this->db->rollback(); $ret = -1; } if ($ret >= 0) { + // Recalculate amount of time spent for task and update denormalized field $sql = "UPDATE ".MAIN_DB_PREFIX."projet_task"; - $sql.= " SET duration_effective = duration_effective + '".price2num($this->timespent_duration)."'"; + //$sql.= " SET duration_effective = (".$this->db->ifsql('duration_effective IS NULL', 0, 'duration_effective').") + ".price2num($this->timespent_duration); + $sql.= " SET duration_effective = (SELECT SUM(task_duration) FROM ".MAIN_DB_PREFIX."projet_task_time as ptt where ptt.fk_task = ".$this->id.")"; if (isset($this->progress)) $sql.= ", progress = " . $this->progress; // Do not overwrite value if not provided $sql.= " WHERE rowid = ".$this->id; @@ -822,7 +825,6 @@ class Task extends CommonObject if (! $this->db->query($sql) ) { $this->error=$this->db->lasterror(); - $this->db->rollback(); $ret = -2; } @@ -834,12 +836,18 @@ class Task extends CommonObject if (! $this->db->query($sql) ) { $this->error=$this->db->lasterror(); - $this->db->rollback(); $ret = -2; } } - if ($ret >=0) $this->db->commit(); + if ($ret >=0) + { + $this->db->commit(); + } + else + { + $this->db->rollback(); + } return $ret; } From d7ab3f112c163f6cf17c1dc6e9e697e710a0ea5d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 5 Mar 2015 13:48:57 +0100 Subject: [PATCH 169/429] NEW: Show difference between timespent by everybody and time spent by user making timesheet into timesheet pages. NEW: Can enter start hours of task when creating timesheet --- htdocs/core/lib/project.lib.php | 66 +++++++++++++------ .../install/mysql/migration/3.7.0-3.8.0.sql | 4 ++ .../mysql/tables/llx_projet_task_time.sql | 5 +- htdocs/langs/en_US/main.lang | 1 + htdocs/langs/en_US/projects.lang | 2 + htdocs/projet/activity/perday.php | 14 ++-- htdocs/projet/activity/pertime.php | 48 ++++++++++---- htdocs/projet/class/task.class.php | 13 +++- htdocs/projet/tasks/time.php | 41 +++++++++--- 9 files changed, 140 insertions(+), 54 deletions(-) diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index e4015812e62..e028c3cbbd8 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -177,15 +177,21 @@ function project_timesheet_prepare_head($mode) $h = 0; - $head[$h][0] = DOL_URL_ROOT."/projet/activity/perday.php".($mode?'?mode='.$mode:''); - $head[$h][1] = $langs->trans("InputPerDay"); - $head[$h][2] = 'inputperday'; - $h++; + if (empty($conf->global->PROJECT_DISABLE_TIMESHEET_PERDAY)) + { + $head[$h][0] = DOL_URL_ROOT."/projet/activity/perday.php".($mode?'?mode='.$mode:''); + $head[$h][1] = $langs->trans("InputPerDay"); + $head[$h][2] = 'inputperday'; + $h++; + } - $head[$h][0] = DOL_URL_ROOT."/projet/activity/pertime.php".($mode?'?mode='.$mode:''); - $head[$h][1] = $langs->trans("InputPerTime"); - $head[$h][2] = 'inputpertime'; - $h++; + if (empty($conf->global->PROJECT_DISABLE_TIMESHEET_PERTIME)) + { + $head[$h][0] = DOL_URL_ROOT."/projet/activity/pertime.php".($mode?'?mode='.$mode:''); + $head[$h][1] = $langs->trans("InputPerTime"); + $head[$h][2] = 'inputpertime'; + $h++; + } complete_head_from_modules($conf,$langs,null,$head,$h,'project_timesheet'); @@ -524,20 +530,22 @@ function projectLinesPerTime(&$inc, $parent, $lines, &$level, &$projectsrole, &$ // If we want all or we have a role on task, we show it if (empty($mine) || ! empty($tasksrole[$lines[$i]->id])) { - print "
\n"; - - // Project - print "\n"; + + // Project + print ""; // Ref print ''; @@ -564,8 +572,9 @@ function projectLinesPerTime(&$inc, $parent, $lines, &$level, &$projectsrole, &$ print $formother->select_percent($lines[$i]->progress, $lines[$i]->id . 'progress'); print ''; - // Time spent + // Time spent by everybody print '\n"; + // Time spent by user + print '\n"; + $disabledproject=1;$disabledtask=1; //print "x".$lines[$i]->fk_project; //var_dump($lines[$i]); @@ -592,11 +608,13 @@ function projectLinesPerTime(&$inc, $parent, $lines, &$level, &$projectsrole, &$ } // Form to add new time - print ''; @@ -713,9 +731,9 @@ function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$t print $formother->select_percent($lines[$i]->progress, $lines[$i]->id . 'progress'); print ''; - // Time spent - /* + // Time spent by everybody print '\n"; - */ + + // Time spent by user + print '\n"; $disabledproject=1;$disabledtask=1; //print "x".$lines[$i]->fk_project; diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index 4f3c802a9da..3233022d3f9 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -19,6 +19,10 @@ -- -- VMYSQL4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup); +UPDATE llx_projet_task_time SET task_datehour = task_date where task_datehour IS NULL; +ALTER TABLE llx_projet_task_time ADD COLUMN task_date_withhour integer DEFAULT 0 after task_datehour; + + ALTER TABLE llx_commande_fournisseur MODIFY COLUMN date_livraison datetime; -- Add id commandefourndet in llx_commande_fournisseur_dispatch to correct /fourn/commande/dispatch.php display when several times same product in supplier order diff --git a/htdocs/install/mysql/tables/llx_projet_task_time.sql b/htdocs/install/mysql/tables/llx_projet_task_time.sql index d5d89812b4a..d58b35146a7 100644 --- a/htdocs/install/mysql/tables/llx_projet_task_time.sql +++ b/htdocs/install/mysql/tables/llx_projet_task_time.sql @@ -20,8 +20,9 @@ create table llx_projet_task_time ( rowid integer AUTO_INCREMENT PRIMARY KEY, fk_task integer NOT NULL, - task_date date, -- only the day - task_datehour datetime, -- day + hour + task_date date, -- only the day + task_datehour datetime, -- day + hour + task_date_withhour integer DEFAULT 0; -- 0 by default, 1 if date was entered with start hour task_duration double, fk_user integer, thm double(24,8), diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index ba7353b015d..be893d52569 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -220,6 +220,7 @@ Cards=Cards Card=Card Now=Now Date=Date +DateAndHour=Date and hour DateStart=Date start DateEnd=Date end DateCreation=Creation date diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 936e86ad692..53e7140be08 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -31,6 +31,8 @@ NoProject=No project defined or owned NbOpenTasks=Nb of opened tasks NbOfProjects=Nb of projects TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Time spent RefTask=Ref. task LabelTask=Label task diff --git a/htdocs/projet/activity/perday.php b/htdocs/projet/activity/perday.php index 692267d6965..9ca8f95ac45 100644 --- a/htdocs/projet/activity/perday.php +++ b/htdocs/projet/activity/perday.php @@ -83,8 +83,10 @@ $taskstatic = new Task($db); $title=$langs->trans("TimeSpent"); if ($mine) $title=$langs->trans("MyTimeSpent"); +$usertoprocess=$user; + //$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1); -$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,1); // Return all project i have permission on. I want my tasks and some of my task may be on a public projet that is not my project +$projectsListId = $projectstatic->getProjectsAuthorizedForUser($usertoprocess,0,1); // Return all project i have permission on. I want my tasks and some of my task may be on a public projet that is not my project if ($id) { @@ -94,8 +96,8 @@ if ($id) $onlyopened=1; // or -1 $tasksarray=$taskstatic->getTasksArray(0,0,($project->id?$project->id:$projectsListId),$socid,0,'',$onlyopened); // We want to see all task of opened project i am allowed to see, not only mine. Later only mine will be editable later. -$projectsrole=$taskstatic->getUserRolesForProjectsOrTasks($user,0,($project->id?$project->id:$projectsListId),0); -$tasksrole=$taskstatic->getUserRolesForProjectsOrTasks(0,$user,($project->id?$project->id:$projectsListId),0); +$projectsrole=$taskstatic->getUserRolesForProjectsOrTasks($usertoprocess,0,($project->id?$project->id:$projectsListId),0); +$tasksrole=$taskstatic->getUserRolesForProjectsOrTasks(0,$usertoprocess,($project->id?$project->id:$projectsListId),0); //var_dump($tasksarray); //var_dump($projectsrole); //var_dump($taskrole); @@ -184,7 +186,9 @@ print ''; print ''; print ''; print ''; -//print ''; +print ''; +if ($usertoprocess->id == $user->id) print ''; +else print ''; $startday=dol_mktime(12, 0, 0, $startdayarray['first_month'], $startdayarray['first_day'], $startdayarray['first_year']); @@ -204,7 +208,7 @@ if (count($tasksarray) > 0) projectLinesPerDay($j, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); print ' - + diff --git a/htdocs/projet/activity/pertime.php b/htdocs/projet/activity/pertime.php index 9d277251772..9f2dc3e99ca 100644 --- a/htdocs/projet/activity/pertime.php +++ b/htdocs/projet/activity/pertime.php @@ -62,8 +62,8 @@ if ($action == 'addtime' && $user->rights->projet->creer) { if (intval($time) > 0) { - // Hours or minutes - if (preg_match("/([0-9]+)(hour|min)/",$key,$matches)) + // Hours or minutes of duration + if (preg_match("/([0-9]+)duration(hour|min)/",$key,$matches)) { $id = $matches[1]; if ($id > 0) @@ -86,15 +86,33 @@ if ($action == 'addtime' && $user->rights->projet->creer) $task->progress = GETPOST($key . 'progress', 'int'); $task->timespent_duration = $val; $task->timespent_fk_user = $user->id; - $task->timespent_date = dol_mktime(12,0,0,$_POST["{$key}month"],$_POST["{$key}day"],$_POST["{$key}year"]); - $task->addTimeSpent($user); + if (GETPOST($key."hour") != '' && GETPOST($key."hour") >= 0) // If hour was entered + { + $task->timespent_date = dol_mktime(GETPOST($key."hour"),GETPOST($key."min"),0,GETPOST($key."month"),GETPOST($key."day"),GETPOST($key."year")); + $task->timespent_withhour = 1; + } + else + { + $task->timespent_date = dol_mktime(12,0,0,GETPOST($key."month"),GETPOST($key."day"),GETPOST($key."year")); + } + + $result=$task->addTimeSpent($user); + if ($result < 0) + { + setEventMessages($task->error, $task->errors, 'errors'); + $error++; + break; + } } - setEventMessage($langs->trans("RecordSaved")); + if (! $error) + { + setEventMessage($langs->trans("RecordSaved")); - // Redirect to avoid submit twice on back - header('Location: '.$_SERVER["PHP_SELF"].'?id='.$projectid.($mode?'&mode='.$mode:'')); - exit; + // Redirect to avoid submit twice on back + header('Location: '.$_SERVER["PHP_SELF"].($projectid?'?id='.$projectid:'?').($mode?'&mode='.$mode:'')); + exit; + } } else { @@ -116,8 +134,9 @@ $taskstatic = new Task($db); $title=$langs->trans("TimeSpent"); if ($mine) $title=$langs->trans("MyTimeSpent"); -//$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1); -$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,1); // Return all project i have permission on. I want my tasks and some of my task may be on a public projet that is not my project +$usertoprocess = $user; + +$projectsListId = $projectstatic->getProjectsAuthorizedForUser($usertoprocess,0,1); // Return all project i have permission on. I want my tasks and some of my task may be on a public projet that is not my project if ($id) { @@ -127,8 +146,8 @@ if ($id) $onlyopened=1; // or -1 $tasksarray=$taskstatic->getTasksArray(0,0,($project->id?$project->id:$projectsListId),$socid,0,'',$onlyopened); // We want to see all task of opened project i am allowed to see, not only mine. Later only mine will be editable later. -$projectsrole=$taskstatic->getUserRolesForProjectsOrTasks($user,0,($project->id?$project->id:$projectsListId),0); -$tasksrole=$taskstatic->getUserRolesForProjectsOrTasks(0,$user,($project->id?$project->id:$projectsListId),0); +$projectsrole=$taskstatic->getUserRolesForProjectsOrTasks($usertoprocess,0,($project->id?$project->id:$projectsListId),0); +$tasksrole=$taskstatic->getUserRolesForProjectsOrTasks(0,$usertoprocess,($project->id?$project->id:$projectsListId),0); //var_dump($tasksarray); //var_dump($projectsrole); //var_dump($taskrole); @@ -184,7 +203,10 @@ print ''; print ''; print ''; print ''; -print ''; +if ($usertoprocess->id == $user->id) print ''; +else print ''; +print ''; +print ''; print "\n"; // By default, we can edit only tasks we are assigned to diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 4c3e3995b03..f9e07ab6e9d 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -61,6 +61,7 @@ class Task extends CommonObject var $timespent_old_duration; var $timespent_date; var $timespent_datehour; // More accurate start date (same than timespent_date but includes hours, minutes and seconds) + var $timespent_withhour; // 1 = we entered also start hours for timesheet line var $timespent_fk_user; var $timespent_note; @@ -780,6 +781,7 @@ class Task extends CommonObject $sql.= "fk_task"; $sql.= ", task_date"; $sql.= ", task_datehour"; + $sql.= ", task_date_withhour"; $sql.= ", task_duration"; $sql.= ", fk_user"; $sql.= ", note"; @@ -787,6 +789,7 @@ class Task extends CommonObject $sql.= $this->id; $sql.= ", '".$this->db->idate($this->timespent_date)."'"; $sql.= ", '".$this->db->idate($this->timespent_datehour)."'"; + $sql.= ", ".(empty($this->timespent_withhour)?0:1); $sql.= ", ".$this->timespent_duration; $sql.= ", ".$this->timespent_fk_user; $sql.= ", ".(isset($this->timespent_note)?"'".$this->db->escape($this->timespent_note)."'":"null"); @@ -816,7 +819,6 @@ class Task extends CommonObject { // Recalculate amount of time spent for task and update denormalized field $sql = "UPDATE ".MAIN_DB_PREFIX."projet_task"; - //$sql.= " SET duration_effective = (".$this->db->ifsql('duration_effective IS NULL', 0, 'duration_effective').") + ".price2num($this->timespent_duration); $sql.= " SET duration_effective = (SELECT SUM(task_duration) FROM ".MAIN_DB_PREFIX."projet_task_time as ptt where ptt.fk_task = ".$this->id.")"; if (isset($this->progress)) $sql.= ", progress = " . $this->progress; // Do not overwrite value if not provided $sql.= " WHERE rowid = ".$this->id; @@ -906,6 +908,8 @@ class Task extends CommonObject $sql.= " t.rowid,"; $sql.= " t.fk_task,"; $sql.= " t.task_date,"; + $sql.= " t.task_datehour,"; + $sql.= " t.task_date_withhour,"; $sql.= " t.task_duration,"; $sql.= " t.fk_user,"; $sql.= " t.note"; @@ -922,7 +926,9 @@ class Task extends CommonObject $this->timespent_id = $obj->rowid; $this->id = $obj->fk_task; - $this->timespent_date = $obj->task_date; + $this->timespent_date = $this->db->jdate($obj->task_date); + $this->timespent_datehour = $this->db->jdate($obj->task_datehour); + $this->timespent_withhour = $obj->task_date_withhour; $this->timespent_duration = $obj->task_duration; $this->timespent_fk_user = $obj->fk_user; $this->timespent_note = $obj->note; @@ -961,6 +967,7 @@ class Task extends CommonObject $sql = "UPDATE ".MAIN_DB_PREFIX."projet_task_time SET"; $sql.= " task_date = '".$this->db->idate($this->timespent_date)."',"; $sql.= " task_datehour = '".$this->db->idate($this->timespent_datehour)."',"; + $sql.= " task_date_withhour = ".(empty($this->timespent_withhour)?0:1); $sql.= " task_duration = ".$this->timespent_duration.","; $sql.= " fk_user = ".$this->timespent_fk_user.","; $sql.= " note = ".(isset($this->timespent_note)?"'".$this->db->escape($this->timespent_note)."'":"null"); @@ -995,7 +1002,7 @@ class Task extends CommonObject $newDuration = $this->timespent_duration - $this->timespent_old_duration; $sql = "UPDATE ".MAIN_DB_PREFIX."projet_task"; - $sql.= " SET duration_effective = duration_effective + '".$newDuration."'"; + $sql.= " SET duration_effective = (SELECT SUM(task_duration) FROM ".MAIN_DB_PREFIX."projet_task_time as ptt where ptt.fk_task = ".$this->id.")"; $sql.= " WHERE rowid = ".$this->id; dol_syslog(get_class($this)."::updateTimeSpent", LOG_DEBUG); diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index 9951902ec5b..20ef1714164 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -87,7 +87,15 @@ if ($action == 'addtimespent' && $user->rights->projet->creer) $object->progress = GETPOST('progress', 'int'); $object->timespent_duration = $_POST["timespent_durationhour"]*60*60; // We store duration in seconds $object->timespent_duration+= $_POST["timespent_durationmin"]*60; // We store duration in seconds - $object->timespent_date = dol_mktime(12,0,0,$_POST["timemonth"],$_POST["timeday"],$_POST["timeyear"]); + if (GETPOST("timehour") != '' && GETPOST("timehour") >= 0) // If hour was entered + { + $object->timespent_date = dol_mktime(GETPOST("timehour"),GETPOST("timemin"),0,GETPOST("timemonth"),GETPOST("timeday"),GETPOST("timeyear")); + $object->timespent_withhour = 1; + } + else + { + $object->timespent_date = dol_mktime(12,0,0,GETPOST("timemonth"),GETPOST("timeday"),GETPOST("timeyear")); + } $object->timespent_fk_user = $_POST["userid"]; $result=$object->addTimeSpent($user); if ($result >= 0) @@ -126,7 +134,15 @@ if ($action == 'updateline' && ! $_POST["cancel"] && $user->rights->projet->cree $object->timespent_old_duration = $_POST["old_duration"]; $object->timespent_duration = $_POST["new_durationhour"]*60*60; // We store duration in seconds $object->timespent_duration+= $_POST["new_durationmin"]*60; // We store duration in seconds - $object->timespent_date = dol_mktime(12,0,0,$_POST["timelinemonth"],$_POST["timelineday"],$_POST["timelineyear"]); + if (GETPOST("timelinehour") != '' && GETPOST("timelinehour") >= 0) // If hour was entered + { + $object->timespent_date = dol_mktime(GETPOST("timelinehour"),GETPOST("timelinemin"),0,GETPOST("timelinemonth"),GETPOST("timelineday"),GETPOST("timelineyear")); + $object->timespent_withhour = 1; + } + else + { + $object->timespent_date = dol_mktime(12,0,0,GETPOST("timelinemonth"),GETPOST("timelineday"),GETPOST("timelineyear")); + } $object->timespent_fk_user = $_POST["userid_line"]; $result=$object->updateTimeSpent($user); @@ -341,7 +357,7 @@ if ($id > 0 || ! empty($ref)) /* - * Add time spent + * Form to add time spent */ if ($user->rights->projet->creer) { @@ -367,8 +383,9 @@ if ($id > 0 || ! empty($ref)) // Date print ''; // Contributor @@ -410,13 +427,13 @@ if ($id > 0 || ! empty($ref)) /* * List of time spent */ - $sql = "SELECT t.rowid, t.task_date, t.task_duration, t.fk_user, t.note"; + $sql = "SELECT t.rowid, t.task_date, t.task_datehour, t.task_date_withhour, t.task_duration, t.fk_user, t.note"; $sql.= ", u.lastname, u.firstname"; $sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t"; $sql .= " , ".MAIN_DB_PREFIX."user as u"; $sql .= " WHERE t.fk_task =".$object->id; $sql .= " AND t.fk_user = u.rowid"; - $sql .= " ORDER BY t.task_date DESC"; + $sql .= " ORDER BY t.task_date DESC, t.task_datehour DESC, t.rowid DESC"; $var=true; $resql = $db->query($sql); @@ -459,15 +476,18 @@ if ($id > 0 || ! empty($ref)) $var=!$var; print ""; + $date1=$db->jdate($task_time->task_date); + $date2=$db->jdate($task_time->task_datehour); + // Date - print ''; @@ -480,6 +500,7 @@ if ($id > 0 || ! empty($ref)) $contactsoftask[]=$task_time->fk_user; } if (count($contactsoftask)>0) { + print img_object('','user','class="hideonsmartphone"'); print $form->select_dolusers($task_time->fk_user,'userid_line',0,'',0,'',$contactsoftask); }else { print img_error($langs->trans('FirstAddRessourceToAllocateTime')).$langs->trans('FirstAddRessourceToAllocateTime'); From 22045603b744134fa4c75066b97ff1adca623d37 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 5 Mar 2015 13:51:29 +0100 Subject: [PATCH 170/429] Fix bad update of denormalized field --- htdocs/projet/class/task.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 017e2b782ec..b01a9644cb1 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -807,7 +807,7 @@ class Task extends CommonObject if ($ret >= 0) { $sql = "UPDATE ".MAIN_DB_PREFIX."projet_task"; - $sql.= " SET duration_effective = duration_effective + '".price2num($this->timespent_duration)."'"; + $sql.= " SET duration_effective = (SELECT SUM(task_duration) FROM ".MAIN_DB_PREFIX."projet_task_time as ptt where ptt.fk_task = ".$this->id.")"; if (isset($this->progress)) $sql.= ", progress = " . $this->progress; // Do not overwrite value if not provided $sql.= " WHERE rowid = ".$this->id; @@ -980,7 +980,7 @@ class Task extends CommonObject $newDuration = $this->timespent_duration - $this->timespent_old_duration; $sql = "UPDATE ".MAIN_DB_PREFIX."projet_task"; - $sql.= " SET duration_effective = duration_effective + '".$newDuration."'"; + $sql.= " SET duration_effective = (SELECT SUM(task_duration) FROM ".MAIN_DB_PREFIX."projet_task_time as ptt where ptt.fk_task = ".$this->id.")"; $sql.= " WHERE rowid = ".$this->id; dol_syslog(get_class($this)."::updateTimeSpent", LOG_DEBUG); From dd2594692e9d6cab9ce6c3c329e606abf1ad43fb Mon Sep 17 00:00:00 2001 From: Guillaume de Lestanville Date: Thu, 5 Mar 2015 17:35:37 +0100 Subject: [PATCH 171/429] Updating compatibility with Sqlite3 - Replace USING syntax by IN SELECT syntax - Fix error on database creation - Removing test on username parameter when installing. --- htdocs/admin/system/database-tables.php | 2 +- htdocs/core/db/sqlite3.class.php | 974 +++++++++--------- htdocs/core/modules/DolibarrModules.class.php | 587 +++++------ htdocs/install/etape1.php | 7 +- index.php | 2 - 5 files changed, 794 insertions(+), 778 deletions(-) delete mode 100644 index.php diff --git a/htdocs/admin/system/database-tables.php b/htdocs/admin/system/database-tables.php index 5ac7292042e..e75cec3f513 100644 --- a/htdocs/admin/system/database-tables.php +++ b/htdocs/admin/system/database-tables.php @@ -180,7 +180,7 @@ else print '
'.$langs->trans("Project").''.$langs->trans("PlannedWorkload").''.$langs->trans("ProgressDeclared").''.$langs->trans("TimeSpent").'
"; $projectstatic->id=$lines[$i]->fk_project; $projectstatic->ref=$lines[$i]->projectref; $projectstatic->public=$lines[$i]->public; $projectstatic->label=$langs->transnoentitiesnoconv("YourRole").': '.$projectsrole[$lines[$i]->fk_project]; + + $taskstatic->id=$lines[$i]->id; + + print "
"; print $projectstatic->getNomUrl(1); print "'; - $taskstatic->id=$lines[$i]->id; $taskstatic->ref=($lines[$i]->ref?$lines[$i]->ref:$lines[$i]->id); print $taskstatic->getNomUrl(1); print ''; + // $lines[$i]->duration is a denormalised field = summ of time spent by everybody for task. What we need is time consummed by user if ($lines[$i]->duration) { print ''; @@ -575,6 +584,13 @@ function projectLinesPerTime(&$inc, $parent, $lines, &$level, &$projectsrole, &$ else print '--:--'; print "'; + $tmptimespent=$taskstatic->getSummaryOfTimeSpent(); + if ($tmptimespent['total_duration']) print convertSecondToTime($tmptimespent['total_duration'],'allhourmin'); + else print '--:--'; + print "'; + print ''; $s=''; - $s.=$form->select_date('',$lines[$i]->id,0,0,2,"addtime",1,0,1,$disabledtask); - $s.='   '; - $s.=$form->select_duration($lines[$i]->id,'',$disabledtask,'text',0,1); + $s.=$form->select_date('',$lines[$i]->id,1,1,2,"addtime",1,0,1,$disabledtask); + print $s; + print ''; + //$s.='   '; + $s=$form->select_duration($lines[$i]->id.'duration','',$disabledtask,'text',0,1); $s.=' '; print $s; print ''; + // $lines[$i]->duration is a denormalised field = summ of time spent by everybody for task. What we need is time consummed by user if ($lines[$i]->duration) { print ''; @@ -724,7 +742,13 @@ function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$t } else print '--:--'; print "'; + $tmptimespent=$taskstatic->getSummaryOfTimeSpent(); + if ($tmptimespent['total_duration']) print convertSecondToTime($tmptimespent['total_duration'],'allhourmin'); + else print '--:--'; + print "'.$langs->trans("RefTask").''.$langs->trans("LabelTask").''.$langs->trans("PlannedWorkload").''.$langs->trans("ProgressDeclared").''.$langs->trans("TimeSpent").''.$langs->trans("TimeSpent").''.$langs->trans("TimeSpentByYou").''.$langs->trans("TimeSpentByUser").'
'.$langs->trans("Total").''.$langs->trans("Total").'
 
 
 
'.$langs->trans("LabelTask").''.$langs->trans("PlannedWorkload").''.$langs->trans("ProgressDeclared").''.$langs->trans("TimeSpent").''.$langs->trans("NewTimeSpent").''.$langs->trans("TimeSpentByYou").''.$langs->trans("TimeSpentByUser").''.$langs->trans("DateAndHour").''.$langs->trans("Duration").'
'; - $newdate=dol_mktime(12,0,0,$_POST["timemonth"],$_POST["timeday"],$_POST["timeyear"]); - print $form->select_date($newdate,'time','','','',"timespent_date"); + //$newdate=dol_mktime(12,0,0,$_POST["timemonth"],$_POST["timeday"],$_POST["timeyear"]); + $newdate=''; + print $form->select_date($newdate,'time',1,1,2,"timespent_date"); print '
'; + print ''; if ($_GET['action'] == 'editline' && $_GET['lineid'] == $task_time->rowid) { - print $form->select_date($db->jdate($task_time->task_date),'timeline','','','',"timespent_date"); + print $form->select_date($db->jdate($date2?$date2:$date1),'timeline',1,1,2,"timespent_date"); } else { - print dol_print_date($db->jdate($task_time->task_date),'day'); + print dol_print_date($date2?$date2:$date1,($task_time->task_date_withhour?'dayhour':'day')); } print '
'; print ''; print ''; - print ''; + print ''; print "\n"; $sql = "SELECT name, type FROM sqlite_master where type='table' and name not like 'sqlite%' ORDER BY name"; diff --git a/htdocs/core/db/sqlite3.class.php b/htdocs/core/db/sqlite3.class.php index f232acb199e..c52578fa579 100644 --- a/htdocs/core/db/sqlite3.class.php +++ b/htdocs/core/db/sqlite3.class.php @@ -37,18 +37,18 @@ class DoliDBSqlite3 extends DoliDB const LABEL='Sqlite3'; //! Version min database const VERSIONMIN='3.0.0'; - //! Resultset of last query - private $_results; + //! Resultset of last query + private $_results; - const WEEK_MONDAY_FIRST=1; - const WEEK_YEAR = 2; - const WEEK_FIRST_WEEKDAY=4; + const WEEK_MONDAY_FIRST=1; + const WEEK_YEAR = 2; + const WEEK_FIRST_WEEKDAY=4; /** * Constructor. * This create an opened connexion to a database server and eventually to a database - * + * * @param string $type Type of database (mysql, pgsql...) * @param string $host Address of database server * @param string $user Nom de l'utilisateur autorise @@ -101,14 +101,14 @@ class DoliDBSqlite3 extends DoliDB $this->database_selected = 1; $this->database_name = $name; - $this->addCustomFunction('IF'); - $this->addCustomFunction('MONTH'); - $this->addCustomFunction('CURTIME'); - $this->addCustomFunction('CURDATE'); - $this->addCustomFunction('WEEK', 1); - $this->addCustomFunction('WEEK', 2); - $this->addCustomFunction('WEEKDAY'); - $this->addCustomFunction('date_format'); + $this->addCustomFunction('IF'); + $this->addCustomFunction('MONTH'); + $this->addCustomFunction('CURTIME'); + $this->addCustomFunction('CURDATE'); + $this->addCustomFunction('WEEK', 1); + $this->addCustomFunction('WEEK', 2); + $this->addCustomFunction('WEEKDAY'); + $this->addCustomFunction('date_format'); //$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } else @@ -135,83 +135,83 @@ class DoliDBSqlite3 extends DoliDB */ static function convertSQLFromMysql($line,$type='ddl') { - // Removed empty line if this is a comment line for SVN tagging - if (preg_match('/^--\s\$Id/i',$line)) { - return ''; - } - // Return line if this is a comment - if (preg_match('/^#/i',$line) || preg_match('/^$/i',$line) || preg_match('/^--/i',$line)) - { - return $line; - } - if ($line != "") - { - if ($type == 'auto') - { + // Removed empty line if this is a comment line for SVN tagging + if (preg_match('/^--\s\$Id/i',$line)) { + return ''; + } + // Return line if this is a comment + if (preg_match('/^#/i',$line) || preg_match('/^$/i',$line) || preg_match('/^--/i',$line)) + { + return $line; + } + if ($line != "") + { + if ($type == 'auto') + { if (preg_match('/ALTER TABLE/i',$line)) $type='dml'; else if (preg_match('/CREATE TABLE/i',$line)) $type='dml'; else if (preg_match('/DROP TABLE/i',$line)) $type='dml'; - } + } - if ($type == 'dml') - { + if ($type == 'dml') + { $line=preg_replace('/\s/',' ',$line); // Replace tabulation with space - // we are inside create table statement so lets process datatypes - if (preg_match('/(ISAM|innodb)/i',$line)) { // end of create table sequence - $line=preg_replace('/\)[\s\t]*type[\s\t]*=[\s\t]*(MyISAM|innodb);/i',');',$line); - $line=preg_replace('/\)[\s\t]*engine[\s\t]*=[\s\t]*(MyISAM|innodb);/i',');',$line); - $line=preg_replace('/,$/','',$line); - } + // we are inside create table statement so lets process datatypes + if (preg_match('/(ISAM|innodb)/i',$line)) { // end of create table sequence + $line=preg_replace('/\)[\s\t]*type[\s\t]*=[\s\t]*(MyISAM|innodb);/i',');',$line); + $line=preg_replace('/\)[\s\t]*engine[\s\t]*=[\s\t]*(MyISAM|innodb);/i',');',$line); + $line=preg_replace('/,$/','',$line); + } - // Process case: "CREATE TABLE llx_mytable(rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY,code..." - if (preg_match('/[\s\t\(]*(\w*)[\s\t]+int.*auto_increment/i',$line,$reg)) { - $newline=preg_replace('/([\s\t\(]*)([a-zA-Z_0-9]*)[\s\t]+int.*auto_increment[^,]*/i','\\1 \\2 integer PRIMARY KEY AUTOINCREMENT',$line); + // Process case: "CREATE TABLE llx_mytable(rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY,code..." + if (preg_match('/[\s\t\(]*(\w*)[\s\t]+int.*auto_increment/i',$line,$reg)) { + $newline=preg_replace('/([\s\t\(]*)([a-zA-Z_0-9]*)[\s\t]+int.*auto_increment[^,]*/i','\\1 \\2 integer PRIMARY KEY AUTOINCREMENT',$line); //$line = "-- ".$line." replaced by --\n".$newline; $line=$newline; - } + } - // tinyint type conversion - $line=str_replace('tinyint','smallint',$line); + // tinyint type conversion + $line=str_replace('tinyint','smallint',$line); - // nuke unsigned - $line=preg_replace('/(int\w+|smallint)\s+unsigned/i','\\1',$line); + // nuke unsigned + $line=preg_replace('/(int\w+|smallint)\s+unsigned/i','\\1',$line); - // blob -> text - $line=preg_replace('/\w*blob/i','text',$line); + // blob -> text + $line=preg_replace('/\w*blob/i','text',$line); - // tinytext/mediumtext -> text - $line=preg_replace('/tinytext/i','text',$line); - $line=preg_replace('/mediumtext/i','text',$line); + // tinytext/mediumtext -> text + $line=preg_replace('/tinytext/i','text',$line); + $line=preg_replace('/mediumtext/i','text',$line); - // change not null datetime field to null valid ones - // (to support remapping of "zero time" to null - $line=preg_replace('/datetime not null/i','datetime',$line); - $line=preg_replace('/datetime/i','timestamp',$line); + // change not null datetime field to null valid ones + // (to support remapping of "zero time" to null + $line=preg_replace('/datetime not null/i','datetime',$line); + $line=preg_replace('/datetime/i','timestamp',$line); - // double -> numeric - $line=preg_replace('/^double/i','numeric',$line); - $line=preg_replace('/(\s*)double/i','\\1numeric',$line); - // float -> numeric - $line=preg_replace('/^float/i','numeric',$line); - $line=preg_replace('/(\s*)float/i','\\1numeric',$line); + // double -> numeric + $line=preg_replace('/^double/i','numeric',$line); + $line=preg_replace('/(\s*)double/i','\\1numeric',$line); + // float -> numeric + $line=preg_replace('/^float/i','numeric',$line); + $line=preg_replace('/(\s*)float/i','\\1numeric',$line); - // unique index(field1,field2) - if (preg_match('/unique index\s*\((\w+\s*,\s*\w+)\)/i',$line)) - { - $line=preg_replace('/unique index\s*\((\w+\s*,\s*\w+)\)/i','UNIQUE\(\\1\)',$line); - } + // unique index(field1,field2) + if (preg_match('/unique index\s*\((\w+\s*,\s*\w+)\)/i',$line)) + { + $line=preg_replace('/unique index\s*\((\w+\s*,\s*\w+)\)/i','UNIQUE\(\\1\)',$line); + } - // We remove end of requests "AFTER fieldxxx" - $line=preg_replace('/AFTER [a-z0-9_]+/i','',$line); + // We remove end of requests "AFTER fieldxxx" + $line=preg_replace('/AFTER [a-z0-9_]+/i','',$line); - // We remove start of requests "ALTER TABLE tablexxx" if this is a DROP INDEX - $line=preg_replace('/ALTER TABLE [a-z0-9_]+ DROP INDEX/i','DROP INDEX',$line); + // We remove start of requests "ALTER TABLE tablexxx" if this is a DROP INDEX + $line=preg_replace('/ALTER TABLE [a-z0-9_]+ DROP INDEX/i','DROP INDEX',$line); // Translate order to rename fields if (preg_match('/ALTER TABLE ([a-z0-9_]+) CHANGE(?: COLUMN)? ([a-z0-9_]+) ([a-z0-9_]+)(.*)$/i',$line,$reg)) { - $line = "-- ".$line." replaced by --\n"; + $line = "-- ".$line." replaced by --\n"; $line.= "ALTER TABLE ".$reg[1]." RENAME COLUMN ".$reg[2]." TO ".$reg[3]; } @@ -230,12 +230,12 @@ class DoliDBSqlite3 extends DoliDB } // alter table add primary key (field1, field2 ...) -> We create a unique index instead as dynamic creation of primary key is not supported - // ALTER TABLE llx_dolibarr_modules ADD PRIMARY KEY pk_dolibarr_modules (numero, entity); - if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+PRIMARY\s+KEY\s*(.*)\s*\((.*)$/i',$line,$reg)) - { - $line = "-- ".$line." replaced by --\n"; - $line.= "CREATE UNIQUE INDEX ".$reg[2]." ON ".$reg[1]."(".$reg[3]; - } + // ALTER TABLE llx_dolibarr_modules ADD PRIMARY KEY pk_dolibarr_modules (numero, entity); + if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+PRIMARY\s+KEY\s*(.*)\s*\((.*)$/i',$line,$reg)) + { + $line = "-- ".$line." replaced by --\n"; + $line.= "CREATE UNIQUE INDEX ".$reg[2]." ON ".$reg[1]."(".$reg[3]; + } // Translate order to drop foreign keys // ALTER TABLE llx_dolibarr_modules DROP FOREIGN KEY fk_xxx; @@ -245,62 +245,62 @@ class DoliDBSqlite3 extends DoliDB $line.= "ALTER TABLE ".$reg[1]." DROP CONSTRAINT ".$reg[2]; } - // alter table add [unique] [index] (field1, field2 ...) - // ALTER TABLE llx_accountingaccount ADD INDEX idx_accountingaccount_fk_pcg_version (fk_pcg_version) - if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+(UNIQUE INDEX|INDEX|UNIQUE)\s+(.*)\s*\(([\w,\s]+)\)/i',$line,$reg)) - { - $fieldlist=$reg[4]; - $idxname=$reg[3]; - $tablename=$reg[1]; - $line = "-- ".$line." replaced by --\n"; - $line.= "CREATE ".(preg_match('/UNIQUE/',$reg[2])?'UNIQUE ':'')."INDEX ".$idxname." ON ".$tablename." (".$fieldlist.")"; - } - if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+CONSTRAINT\s+(.*)\s*FOREIGN\s+KEY\s*\(([\w,\s]+)\)\s*REFERENCES\s+(\w+)\s*\(([\w,\s]+)\)/i',$line, $reg)) { - // Pour l'instant les contraintes ne sont pas créées - dol_syslog(get_class().'::query line emptied'); - $line = 'SELECT 0;'; + // alter table add [unique] [index] (field1, field2 ...) + // ALTER TABLE llx_accountingaccount ADD INDEX idx_accountingaccount_fk_pcg_version (fk_pcg_version) + if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+(UNIQUE INDEX|INDEX|UNIQUE)\s+(.*)\s*\(([\w,\s]+)\)/i',$line,$reg)) + { + $fieldlist=$reg[4]; + $idxname=$reg[3]; + $tablename=$reg[1]; + $line = "-- ".$line." replaced by --\n"; + $line.= "CREATE ".(preg_match('/UNIQUE/',$reg[2])?'UNIQUE ':'')."INDEX ".$idxname." ON ".$tablename." (".$fieldlist.")"; + } + if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+CONSTRAINT\s+(.*)\s*FOREIGN\s+KEY\s*\(([\w,\s]+)\)\s*REFERENCES\s+(\w+)\s*\(([\w,\s]+)\)/i',$line, $reg)) { + // Pour l'instant les contraintes ne sont pas créées + dol_syslog(get_class().'::query line emptied'); + $line = 'SELECT 0;'; - } + } - //if (preg_match('/rowid\s+.*\s+PRIMARY\s+KEY,/i', $line)) { - //preg_replace('/(rowid\s+.*\s+PRIMARY\s+KEY\s*,)/i', '/* \\1 */', $line); - //} + //if (preg_match('/rowid\s+.*\s+PRIMARY\s+KEY,/i', $line)) { + //preg_replace('/(rowid\s+.*\s+PRIMARY\s+KEY\s*,)/i', '/* \\1 */', $line); + //} } - // Delete using criteria on other table must not declare twice the deleted table - // DELETE FROM tabletodelete USING tabletodelete, othertable -> DELETE FROM tabletodelete USING othertable - if (preg_match('/DELETE FROM ([a-z_]+) USING ([a-z_]+), ([a-z_]+)/i',$line,$reg)) - { + // Delete using criteria on other table must not declare twice the deleted table + // DELETE FROM tabletodelete USING tabletodelete, othertable -> DELETE FROM tabletodelete USING othertable + if (preg_match('/DELETE FROM ([a-z_]+) USING ([a-z_]+), ([a-z_]+)/i',$line,$reg)) + { if ($reg[1] == $reg[2]) // If same table, we remove second one - { - $line=preg_replace('/DELETE FROM ([a-z_]+) USING ([a-z_]+), ([a-z_]+)/i','DELETE FROM \\1 USING \\3', $line); - } - } + { + $line=preg_replace('/DELETE FROM ([a-z_]+) USING ([a-z_]+), ([a-z_]+)/i','DELETE FROM \\1 USING \\3', $line); + } + } - // Remove () in the tables in FROM if one table - $line=preg_replace('/FROM\s*\((([a-z_]+)\s+as\s+([a-z_]+)\s*)\)/i','FROM \\1',$line); - //print $line."\n"; + // Remove () in the tables in FROM if one table + $line=preg_replace('/FROM\s*\((([a-z_]+)\s+as\s+([a-z_]+)\s*)\)/i','FROM \\1',$line); + //print $line."\n"; - // Remove () in the tables in FROM if two table - $line=preg_replace('/FROM\s*\(([a-z_]+\s+as\s+[a-z_]+)\s*,\s*([a-z_]+\s+as\s+[a-z_]+\s*)\)/i','FROM \\1, \\2',$line); - //print $line."\n"; + // Remove () in the tables in FROM if two table + $line=preg_replace('/FROM\s*\(([a-z_]+\s+as\s+[a-z_]+)\s*,\s*([a-z_]+\s+as\s+[a-z_]+\s*)\)/i','FROM \\1, \\2',$line); + //print $line."\n"; - // Remove () in the tables in FROM if two table - $line=preg_replace('/FROM\s*\(([a-z_]+\s+as\s+[a-z_]+)\s*,\s*([a-z_]+\s+as\s+[a-z_]+\s*),\s*([a-z_]+\s+as\s+[a-z_]+\s*)\)/i','FROM \\1, \\2, \\3',$line); - //print $line."\n"; + // Remove () in the tables in FROM if two table + $line=preg_replace('/FROM\s*\(([a-z_]+\s+as\s+[a-z_]+)\s*,\s*([a-z_]+\s+as\s+[a-z_]+\s*),\s*([a-z_]+\s+as\s+[a-z_]+\s*)\)/i','FROM \\1, \\2, \\3',$line); + //print $line."\n"; - //print "type=".$type." newline=".$line."
\n"; - } + //print "type=".$type." newline=".$line."
\n"; + } - return $line; + return $line; } - /** + /** * Select a database - * + * * @param string $database Name of database * @return boolean true if OK, false if KO - */ + */ function select_db($database) { dol_syslog(get_class($this)."::select_db database=".$database, LOG_DEBUG); @@ -310,7 +310,7 @@ class DoliDBSqlite3 extends DoliDB /** * Connexion to server - * + * * @param string $host database server host * @param string $login login * @param string $passwd password @@ -329,7 +329,7 @@ class DoliDBSqlite3 extends DoliDB if (empty($dir)) $dir=DOL_DATA_ROOT; // With sqlite, port must be in connect parameters //if (! $newport) $newport=3306; - $database_name = $dir.'/database_'.$name.'.sdb'; + $database_name = $dir.'/database_'.$name.'.sdb'; try { /*** connect to SQLite database ***/ //$this->db = new PDO("sqlite:".$dir.'/database_'.$name.'.sdb'); @@ -349,12 +349,12 @@ class DoliDBSqlite3 extends DoliDB /** * Return version of database server - * + * * @return string Version string */ function getVersion() { - return $this->db->version()['versionString']; + return $this->db->version()['versionString']; } /** @@ -364,10 +364,10 @@ class DoliDBSqlite3 extends DoliDB */ function getDriverInfo() { - // FIXME: Dummy method - // TODO: Implement + // FIXME: Dummy method + // TODO: Implement - return ''; + return ''; } @@ -381,9 +381,9 @@ class DoliDBSqlite3 extends DoliDB { if ($this->db) { - if ($this->transaction_opened > 0) dol_syslog(get_class($this)."::close Closing a connection with an opened transaction depth=".$this->transaction_opened,LOG_ERR); + if ($this->transaction_opened > 0) dol_syslog(get_class($this)."::close Closing a connection with an opened transaction depth=".$this->transaction_opened,LOG_ERR); $this->connected=0; - $this->db->close(); + $this->db->close(); $this->db=null; // Clean this->db return true; } @@ -391,7 +391,7 @@ class DoliDBSqlite3 extends DoliDB } /** - * Execute a SQL request and return the resultset + * Execute a SQL request and return the resultset * * @param string $query SQL query string * @param int $usesavepoint 0=Default mode, 1=Run a savepoint before and a rollbock to savepoint if error (this allow to have some request with errors inside global transactions). @@ -407,58 +407,58 @@ class DoliDBSqlite3 extends DoliDB $query = trim($query); $this->error = 0; - // Convert MySQL syntax to SQLite syntax - if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+CONSTRAINT\s+(.*)\s*FOREIGN\s+KEY\s*\(([\w,\s]+)\)\s*REFERENCES\s+(\w+)\s*\(([\w,\s]+)\)/i',$query, $reg)) { - // Ajout d'une clef étrangère à la table - // procédure de remplacement de la table pour ajouter la contrainte - // Exemple : ALTER TABLE llx_adherent ADD CONSTRAINT adherent_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (rowid) - // -> CREATE TABLE ( ... ,CONSTRAINT adherent_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (rowid)) - $foreignFields = $reg[5]; - $foreignTable = $reg[4]; - $localfields = $reg[3]; - $constraintname=trim($reg[2]); - $tablename=trim($reg[1]); + // Convert MySQL syntax to SQLite syntax + if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+CONSTRAINT\s+(.*)\s*FOREIGN\s+KEY\s*\(([\w,\s]+)\)\s*REFERENCES\s+(\w+)\s*\(([\w,\s]+)\)/i',$query, $reg)) { + // Ajout d'une clef étrangère à la table + // procédure de remplacement de la table pour ajouter la contrainte + // Exemple : ALTER TABLE llx_adherent ADD CONSTRAINT adherent_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (rowid) + // -> CREATE TABLE ( ... ,CONSTRAINT adherent_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (rowid)) + $foreignFields = $reg[5]; + $foreignTable = $reg[4]; + $localfields = $reg[3]; + $constraintname=trim($reg[2]); + $tablename=trim($reg[1]); - $descTable = $this->db->querySingle("SELECT sql FROM sqlite_master WHERE name='" . $tablename . "'"); + $descTable = $this->db->querySingle("SELECT sql FROM sqlite_master WHERE name='" . $tablename . "'"); - // 1- Renommer la table avec un nom temporaire - $this->query('ALTER TABLE ' . $tablename . ' RENAME TO tmp_' . $tablename); + // 1- Renommer la table avec un nom temporaire + $this->query('ALTER TABLE ' . $tablename . ' RENAME TO tmp_' . $tablename); - // 2- Recréer la table avec la contrainte ajoutée + // 2- Recréer la table avec la contrainte ajoutée - // on bricole la requete pour ajouter la contrainte - $descTable = substr($descTable, 0, strlen($descTable) - 1); - $descTable .= ", CONSTRAINT " . $constraintname . " FOREIGN KEY (" . $localfields . ") REFERENCES " .$foreignTable . "(" . $foreignFields . ")"; + // on bricole la requete pour ajouter la contrainte + $descTable = substr($descTable, 0, strlen($descTable) - 1); + $descTable .= ", CONSTRAINT " . $constraintname . " FOREIGN KEY (" . $localfields . ") REFERENCES " .$foreignTable . "(" . $foreignFields . ")"; - // fermeture de l'instruction - $descTable .= ')'; + // fermeture de l'instruction + $descTable .= ')'; - // Création proprement dite de la table - $this->query($descTable); + // Création proprement dite de la table + $this->query($descTable); - // 3- Transférer les données - $this->query('INSERT INTO ' . $tablename . ' SELECT * FROM tmp_' . $tablename); + // 3- Transférer les données + $this->query('INSERT INTO ' . $tablename . ' SELECT * FROM tmp_' . $tablename); - // 4- Supprimer la table temporaire - $this->query('DROP TABLE tmp_' . $tablename); + // 4- Supprimer la table temporaire + $this->query('DROP TABLE tmp_' . $tablename); - // dummy statement - $query="SELECT 0"; + // dummy statement + $query="SELECT 0"; - } else { - $query=$this->convertSQLFromMysql($query,$type); - } - //print "After convertSQLFromMysql:\n".$query."
\n"; + } else { + $query=$this->convertSQLFromMysql($query,$type); + } + //print "After convertSQLFromMysql:\n".$query."
\n"; - dol_syslog('sql='.$query, LOG_DEBUG); + dol_syslog('sql='.$query, LOG_DEBUG); - // Ordre SQL ne necessitant pas de connexion a une base (exemple: CREATE DATABASE) + // Ordre SQL ne necessitant pas de connexion a une base (exemple: CREATE DATABASE) try { //$ret = $this->db->exec($query); - $ret = $this->db->query($query); // $ret is a PDO object - if ($ret) { - $ret->queryString = $query; - } + $ret = $this->db->query($query); // $ret is a Sqlite3Result + if ($ret) { + $ret->queryString = $query; + } } catch(Exception $e) { @@ -474,15 +474,15 @@ class DoliDBSqlite3 extends DoliDB $this->lasterror = $this->error(); $this->lasterrno = $this->errno(); - dol_syslog(get_class($this)."::query SQL Error query: ".$query, LOG_ERR); + dol_syslog(get_class($this)."::query SQL Error query: ".$query, LOG_ERR); - $errormsg = get_class($this)."::query SQL Error message: ".$this->lasterror; + $errormsg = get_class($this)."::query SQL Error message: ".$this->lasterror; - if (preg_match('/[0-9]/',$this->lasterrno)) { + if (preg_match('/[0-9]/',$this->lasterrno)) { $errormsg .= ' ('.$this->lasterrno.')'; } - dol_syslog($errormsg, LOG_ERR); + dol_syslog($errormsg, LOG_ERR); } $this->lastquery=$query; $this->_results = $ret; @@ -502,10 +502,10 @@ class DoliDBSqlite3 extends DoliDB // Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion if (! is_object($resultset)) { $resultset=$this->_results; } //return $resultset->fetch(PDO::FETCH_OBJ); - $ret = $resultset->fetchArray(SQLITE3_ASSOC); - if ($ret) { - return (object)$ret; - } + $ret = $resultset->fetchArray(SQLITE3_ASSOC); + if ($ret) { + return (object)$ret; + } } @@ -520,10 +520,10 @@ class DoliDBSqlite3 extends DoliDB // If resultset not provided, we take the last used by connexion if (! is_object($resultset)) { $resultset=$this->_results; } //return $resultset->fetch(PDO::FETCH_ASSOC); - $ret = $resultset->fetchArray(SQLITE3_ASSOC); - if ($ret) { - return (array)$ret; - } + $ret = $resultset->fetchArray(SQLITE3_ASSOC); + if ($ret) { + return (array)$ret; + } } /** @@ -558,10 +558,10 @@ class DoliDBSqlite3 extends DoliDB { // If resultset not provided, we take the last used by connexion if (! is_object($resultset)) { $resultset=$this->_results; } - if (preg_match("/^SELECT/i", $resultset->queryString)) { - return $this->db->querySingle("SELECT count(*) FROM (" . $resultset->queryString . ") q"); - } - return 0; + if (preg_match("/^SELECT/i", $resultset->queryString)) { + return $this->db->querySingle("SELECT count(*) FROM (" . $resultset->queryString . ") q"); + } + return 0; } /** @@ -575,21 +575,21 @@ class DoliDBSqlite3 extends DoliDB { // If resultset not provided, we take the last used by connexion if (! is_object($resultset)) { $resultset=$this->_results; } - if (preg_match("/^SELECT/i", $resultset->queryString)) { - return $this->num_rows($resultset); - } + if (preg_match("/^SELECT/i", $resultset->queryString)) { + return $this->num_rows($resultset); + } // mysql necessite un link de base pour cette fonction contrairement // a pqsql qui prend un resultset return $this->db->changes(); } - /** + /** * Free last resultset used. - * + * * @param resultset $resultset Curseur de la requete voulue * @return void - */ + */ function free($resultset=0) { // If resultset not provided, we take the last used by connexion @@ -598,15 +598,15 @@ class DoliDBSqlite3 extends DoliDB if ($resultset && is_object($resultset)) $resultset->finalize(); } - /** + /** * Escape a string to insert data - * + * * @param string $stringtoencode String to escape * @return string String escaped - */ + */ function escape($stringtoencode) { - return Sqlite3::escapeString($stringtoencode); + return Sqlite3::escapeString($stringtoencode); } /** @@ -656,19 +656,19 @@ class DoliDBSqlite3 extends DoliDB }*/ $errno=$this->db->lastErrorCode(); if ($errno=='HY000' || $errno == 0) - { + { if (preg_match('/table.*already exists/i',$this->error)) return 'DB_ERROR_TABLE_ALREADY_EXISTS'; elseif (preg_match('/index.*already exists/i',$this->error)) return 'DB_ERROR_KEY_NAME_ALREADY_EXISTS'; elseif (preg_match('/syntax error/i',$this->error)) return 'DB_ERROR_SYNTAX'; - } - if ($errno=='23000') - { + } + if ($errno=='23000') + { if (preg_match('/column.* not unique/i',$this->error)) return 'DB_ERROR_RECORD_ALREADY_EXISTS'; elseif (preg_match('/PRIMARY KEY must be unique/i',$this->error)) return 'DB_ERROR_RECORD_ALREADY_EXISTS'; - } - if ($errno > 1) { - // TODO Voir la liste des messages d'erreur - } + } + if ($errno > 1) { + // TODO Voir la liste des messages d'erreur + } return ($errno?'DB_ERROR_'.$errno:'0'); } @@ -691,8 +691,8 @@ class DoliDBSqlite3 extends DoliDB } /** - * Get last ID after an insert INSERT - * + * Get last ID after an insert INSERT + * * @param string $tab Table name concerned by insert. Ne sert pas sous MySql mais requis pour compatibilite avec Postgresql * @param string $fieldid Field name * @return int Id of row @@ -772,13 +772,13 @@ class DoliDBSqlite3 extends DoliDB /** - * Return connexion ID - * + * Return connexion ID + * * @return string Id connexion */ function DDLGetConnectId() { - return '?'; + return '?'; } @@ -786,7 +786,7 @@ class DoliDBSqlite3 extends DoliDB * Create a new database * Do not use function xxx_create_db (xxx=mysql, ...) as they are deprecated * We force to create database with charset this->forcecharset and collate this->forcecollate - * + * * @param string $database Database name to create * @param string $charset Charset used to store data * @param string $collation Charset used to sort data @@ -815,8 +815,8 @@ class DoliDBSqlite3 extends DoliDB } /** - * List tables into a database - * + * List tables into a database + * * @param string $database Name of database * @param string $table Name of table filter ('xxx%') * @return array List of tables in an array @@ -839,7 +839,7 @@ class DoliDBSqlite3 extends DoliDB /** * List information of columns into a table. - * + * * @param string $table Name of table * @return array Tableau des informations des champs de la table * TODO modify for sqlite @@ -861,7 +861,7 @@ class DoliDBSqlite3 extends DoliDB /** * Create a table into database - * + * * @param string $table Nom de la table * @param array $fields Tableau associatif [nom champ][tableau des descriptions] * @param string $primary_key Nom du champ qui sera la clef primaire @@ -938,7 +938,7 @@ class DoliDBSqlite3 extends DoliDB /** * Return a pointer of line with description of a table or field - * + * * @param string $table Name of table * @param string $field Optionnel : Name of field if we want description of field * @return resource Resource @@ -954,7 +954,7 @@ class DoliDBSqlite3 extends DoliDB /** * Create a new field into table - * + * * @param string $table Name of table * @param string $field_name Name of field to add * @param string $field_desc Tableau associatif de description du champ a inserer[nom du parametre][valeur du parametre] @@ -1000,7 +1000,7 @@ class DoliDBSqlite3 extends DoliDB /** * Update format of a field into a table - * + * * @param string $table Name of table * @param string $field_name Name of field to modify * @param string $field_desc Array with description of field format @@ -1011,7 +1011,7 @@ class DoliDBSqlite3 extends DoliDB $sql = "ALTER TABLE ".$table; $sql .= " MODIFY COLUMN ".$field_name." ".$field_desc['type']; if ($field_desc['type'] == 'tinyint' || $field_desc['type'] == 'int' || $field_desc['type'] == 'varchar') { - $sql.="(".$field_desc['value'].")"; + $sql.="(".$field_desc['value'].")"; } dol_syslog(get_class($this)."::DDLUpdateField ".$sql,LOG_DEBUG); @@ -1023,7 +1023,7 @@ class DoliDBSqlite3 extends DoliDB /** * Drop a field from table - * + * * @param string $table Name of table * @param string $field_name Name of field to drop * @return int <0 if KO, >0 if OK @@ -1043,7 +1043,7 @@ class DoliDBSqlite3 extends DoliDB /** * Create a user and privileges to connect to database (even if database does not exists yet) - * + * * @param string $dolibarr_main_db_host Ip serveur * @param string $dolibarr_main_db_user Nom user a creer * @param string $dolibarr_main_db_pass Mot de passe user a creer @@ -1088,21 +1088,21 @@ class DoliDBSqlite3 extends DoliDB return 1; } - /** + /** * Return charset used to store data in database - * + * * @return string Charset - */ + */ function getDefaultCharacterSetDatabase() { return 'UTF-8'; } - /** + /** * Return list of available charset that can be used to store data in database - * + * * @return array List of Charset - */ + */ function getListOfCharacterSet() { $liste = array(); @@ -1112,21 +1112,21 @@ class DoliDBSqlite3 extends DoliDB return $liste; } - /** + /** * Return collation used in database - * + * * @return string Collation value - */ + */ function getDefaultCollationDatabase() { return 'UTF-8'; } - /** + /** * Return list of available collation that can be used for database - * + * * @return array List of Collation - */ + */ function getListOfCollation() { $liste = array(); @@ -1136,12 +1136,12 @@ class DoliDBSqlite3 extends DoliDB return $liste; } - /** + /** * Return full path of dump program - * + * * @return string Full path of dump program - */ - function getPathOfDump() + */ + function getPathOfDump() { $fullpathofdump='/pathtomysqldump/mysqldump'; @@ -1155,11 +1155,11 @@ class DoliDBSqlite3 extends DoliDB return $fullpathofdump; } - /** + /** * Return full path of restore program - * + * * @return string Full path of restore program - */ + */ function getPathOfRestore() { $fullpathofimport='/pathtomysql/mysql'; @@ -1174,61 +1174,65 @@ class DoliDBSqlite3 extends DoliDB return $fullpathofimport; } - /** - * Return value of server parameters - * + /** + * Return value of server parameters + * * @param string $filter Filter list on a particular value * @return array Array of key-values (key=>value) - */ + */ function getServerParametersValues($filter='') { $result=array(); - static $pragmas; - if (! isset($pragmas)) { - // Définition de la liste des pragmas utilisés qui ne retournent qu'une seule valeur - // indépendante de la base de données. - // cf. http://www.sqlite.org/pragma.html - $pragmas = array( - 'application_id', 'auto_vacuum', 'automatic_index', 'busy_timeout', 'cache_size', - 'cache_spill', 'case_sensitive_like', 'checkpoint_fullsync', 'collation_list', + static $pragmas; + if (! isset($pragmas)) { + // Définition de la liste des pragmas utilisés qui ne retournent qu'une seule valeur + // indépendante de la base de données. + // cf. http://www.sqlite.org/pragma.html + $pragmas = array( + 'application_id', 'auto_vacuum', 'automatic_index', 'busy_timeout', 'cache_size', + 'cache_spill', 'case_sensitive_like', 'checkpoint_fullsync', 'collation_list', 'compile_options', 'data_version', /*'database_list',*/ - 'defer_foreign_keys', 'encoding', 'foreign_key_check', 'freelist_count', - 'full_column_names', 'fullsync', 'ingore_check_constraints', 'integrity_check', - 'journal_mode', 'journal_size_limit', 'legacy_file_format', 'locking_mode', - 'max_page_count', 'page_count', 'page_size', 'parser_trace', - 'query_only', 'quick_check', 'read_uncommitted', 'recursive_triggers', - 'reverse_unordered_selects', 'schema_version', 'user_version', - 'secure_delete', 'short_column_names', 'shrink_memory', 'soft_heap_limit', - 'synchronous', 'temp_store', /*'temp_store_directory',*/ 'threads', - 'vdbe_addoptrace', 'vdbe_debug', 'vdbe_listing', 'vdbe_trace', - 'wal_autocheckpoint', - ); - } + 'defer_foreign_keys', 'encoding', 'foreign_key_check', 'freelist_count', + 'full_column_names', 'fullsync', 'ingore_check_constraints', 'integrity_check', + 'journal_mode', 'journal_size_limit', 'legacy_file_format', 'locking_mode', + 'max_page_count', 'page_count', 'page_size', 'parser_trace', + 'query_only', 'quick_check', 'read_uncommitted', 'recursive_triggers', + 'reverse_unordered_selects', 'schema_version', 'user_version', + 'secure_delete', 'short_column_names', 'shrink_memory', 'soft_heap_limit', + 'synchronous', 'temp_store', /*'temp_store_directory',*/ 'threads', + 'vdbe_addoptrace', 'vdbe_debug', 'vdbe_listing', 'vdbe_trace', + 'wal_autocheckpoint', + ); + } - // TODO prendre en compte le filtre - foreach($pragmas as $var) { - $sql = "PRAGMA $var"; - $resql=$this->query($sql); - if ($resql) - { - $obj = $this->fetch_row($resql); - //dol_syslog(get_class($this)."::select_db getServerParametersValues $var=". print_r($obj, true), LOG_DEBUG); - $result[$var] = $obj[0]; - } - } + // TODO prendre en compte le filtre + foreach($pragmas as $var) { + $sql = "PRAGMA $var"; + $resql=$this->query($sql); + if ($resql) + { + $obj = $this->fetch_row($resql); + //dol_syslog(get_class($this)."::select_db getServerParametersValues $var=". print_r($obj, true), LOG_DEBUG); + $result[$var] = $obj[0]; + } + else { + // TODO Récupérer le message + $result[$var] = 'FAIL'; + } + } return $result; } - /** - * Return value of server status - * + /** + * Return value of server status + * * @param string $filter Filter list on a particular value * @return array Array of key-values (key=>value) - */ + */ function getServerStatusValues($filter='') { $result=array(); - /* + /* $sql='SHOW STATUS'; if ($filter) $sql.=" LIKE '".$this->escape($filter)."'"; $resql=$this->query($sql); @@ -1236,243 +1240,243 @@ class DoliDBSqlite3 extends DoliDB { while ($obj=$this->fetch_object($resql)) $result[$obj->Variable_name]=$obj->Value; } - */ + */ return $result; } - /** - * Permet le chargement d'une fonction personnalisee dans le moteur de base de donnees. - * Note: le nom de la fonction personnalisee est prefixee par 'db_'. La fonction doit être - * statique et publique. Le nombre de parametres est determine automatiquement. - * @param string $name Le nom de la fonction a definir dans Sqlite - */ - private function addCustomFunction($name, $arg_count = -1) { - if ($this->db) { - $localname = __CLASS__ . '::' . 'db_' . $name; - $reflectClass = new ReflectionClass(__CLASS__); - $reflectFunction = $reflectClass->getMethod('db_' . $name); - if ($arg_count < 0) { - $arg_count = $reflectFunction->getNumberOfParameters(); - } - if (!$this->db->createFunction($name, $localname , $arg_count)) { - $this->error = "unable to create custom function '$name'"; - } - } - } + /** + * Permet le chargement d'une fonction personnalisee dans le moteur de base de donnees. + * Note: le nom de la fonction personnalisee est prefixee par 'db_'. La fonction doit être + * statique et publique. Le nombre de parametres est determine automatiquement. + * @param string $name Le nom de la fonction a definir dans Sqlite + */ + private function addCustomFunction($name, $arg_count = -1) { + if ($this->db) { + $localname = __CLASS__ . '::' . 'db_' . $name; + $reflectClass = new ReflectionClass(__CLASS__); + $reflectFunction = $reflectClass->getMethod('db_' . $name); + if ($arg_count < 0) { + $arg_count = $reflectFunction->getNumberOfParameters(); + } + if (!$this->db->createFunction($name, $localname , $arg_count)) { + $this->error = "unable to create custom function '$name'"; + } + } + } - /** - * Cette fonction est l'equivalent de la fonction MONTH de MySql. - * @param string $date - * @return integer - */ - public static function db_MONTH($date) { - return date('n', strtotime($date)); - } + /** + * Cette fonction est l'equivalent de la fonction MONTH de MySql. + * @param string $date + * @return integer + */ + public static function db_MONTH($date) { + return date('n', strtotime($date)); + } - /** - * calcule du numéro de semaine - * - * @param string date - * @param int mode - */ - public static function db_WEEK($date, $mode = 0) { - $arr = date_parse($date); - $calc_year = 0; - return self::calc_week($arr['year'], $arr['month'], $arr['day'], self::week_mode($mode), $calc_year); - } + /** + * calcule du numéro de semaine + * + * @param string date + * @param int mode + */ + public static function db_WEEK($date, $mode = 0) { + $arr = date_parse($date); + $calc_year = 0; + return self::calc_week($arr['year'], $arr['month'], $arr['day'], self::week_mode($mode), $calc_year); + } - public static function db_CURDATE() { - return date('Y-m-d'); - } + public static function db_CURDATE() { + return date('Y-m-d'); + } - public static function db_CURTIME() { - return date('H:i:s'); - } + public static function db_CURTIME() { + return date('H:i:s'); + } - public static function db_WEEKDAY($date) { - $arr = date_parse($date); - return self::calc_weekday(self::calc_daynr($arr['year'], $arr['month'], $arr['day']), 0); + public static function db_WEEKDAY($date) { + $arr = date_parse($date); + return self::calc_weekday(self::calc_daynr($arr['year'], $arr['month'], $arr['day']), 0); - } + } - /** - * Cette fonction est l'equivelent de la fonction date_format de MySQL. + /** + * Cette fonction est l'equivelent de la fonction date_format de MySQL. * @staticvar string $mysql_replacement Les symboles formatage a remplacer - * @param string $date la date dans un format ISO - * @param string $format la chaine de formatage - * @return string La date formatee. - */ - public static function db_date_format($date, $format) { - static $mysql_replacement; - if (! isset($mysql_replacement)) { - $mysql_replacement = array( - '%' => '%', - 'a' => 'D', - 'b' => 'M', - 'c' => 'n', - 'D' => 'jS', - 'd' => 'd', - 'e' => 'j', - 'f' => 'u', - 'H' => 'H', - 'h' => 'h', - 'I' => 'h', - 'i' => 'i', - 'k' => 'H', - 'l' => 'g', - 'M' => 'F', - 'm' => 'm', - 'p' => 'A', - 'r' => 'h:i:s A', - 'S' => 's', - 's' => 's', - 'T' => 'H:i:s', - 'W' => 'l', - 'w' => 'w', - 'Y' => 'Y', - 'y' => 'y', - ); - } + * @param string $date la date dans un format ISO + * @param string $format la chaine de formatage + * @return string La date formatee. + */ + public static function db_date_format($date, $format) { + static $mysql_replacement; + if (! isset($mysql_replacement)) { + $mysql_replacement = array( + '%' => '%', + 'a' => 'D', + 'b' => 'M', + 'c' => 'n', + 'D' => 'jS', + 'd' => 'd', + 'e' => 'j', + 'f' => 'u', + 'H' => 'H', + 'h' => 'h', + 'I' => 'h', + 'i' => 'i', + 'k' => 'H', + 'l' => 'g', + 'M' => 'F', + 'm' => 'm', + 'p' => 'A', + 'r' => 'h:i:s A', + 'S' => 's', + 's' => 's', + 'T' => 'H:i:s', + 'W' => 'l', + 'w' => 'w', + 'Y' => 'Y', + 'y' => 'y', + ); + } - $fmt = ''; - $lg = strlen($format); - $state = 0; - $timestamp = strtotime($date); - $yday = date('z', $timestamp); - $month = (integer)date("n", $timestamp); - $year = (integer)date("Y", $timestamp); - $day = (integer)date("d", $timestamp); - for($idx = 0; $idx < $lg; ++$idx) { - $char = $format[$idx]; - if ($state == 0) { - if ($char == '%') { - $state = 1; - } else { - $fmt .= $char; - } - } - elseif ($state == 1) { - if (array_key_exists($char, $mysql_replacement)) { - $fmt .= $mysql_replacement[$char]; - } else { - $calc_year = 0; - switch ($char) { + $fmt = ''; + $lg = strlen($format); + $state = 0; + $timestamp = strtotime($date); + $yday = date('z', $timestamp); + $month = (integer)date("n", $timestamp); + $year = (integer)date("Y", $timestamp); + $day = (integer)date("d", $timestamp); + for($idx = 0; $idx < $lg; ++$idx) { + $char = $format[$idx]; + if ($state == 0) { + if ($char == '%') { + $state = 1; + } else { + $fmt .= $char; + } + } + elseif ($state == 1) { + if (array_key_exists($char, $mysql_replacement)) { + $fmt .= $mysql_replacement[$char]; + } else { + $calc_year = 0; + switch ($char) { case 'j': // day of the year 001 - $char = sprintf("%03d", $yday+1); - break; - case 'U': // mode 0: semaine 0 = premiere semaine complète qui commence un dimanche - $char = sprintf("%02d", self::calc_week($year, $month, $day, 4, $calc_year)); - break; - case 'u': // mode 1: semaine 0 = première semaine de 4 jours. Début le dimanche - $char = sprintf("%02d", self::calc_week($year, $month, $day, 1, $calc_year)); - break; - case 'V': // mode 2: semaine 1 = premiere semaine complète qui commence un dimanche - $char = sprintf("%02d", self::calc_week($year, $month, $day, 6, $calc_year)); - break; - case 'v': // mode 3: semaine 1 = premiere semaine de 4 jours. Début le lundi - $char = sprintf("%02d", self::calc_week($year, $month, $day, 3, $calc_year)); - break; - case 'X': - self::calc_week($year, $month, $day, 6, $calc_year); - $char = sprintf("%04d", $calc_year); - break; - case 'x': - self::calc_week($year, $month, $day, 3, $calc_year); - $char = sprintf("%04d", $calc_year); - break; - } - $fmt .= $char; - } - $state = 0; - } - } - return date($fmt, strtotime($date)); - } + $char = sprintf("%03d", $yday+1); + break; + case 'U': // mode 0: semaine 0 = premiere semaine complète qui commence un dimanche + $char = sprintf("%02d", self::calc_week($year, $month, $day, 4, $calc_year)); + break; + case 'u': // mode 1: semaine 0 = première semaine de 4 jours. Début le dimanche + $char = sprintf("%02d", self::calc_week($year, $month, $day, 1, $calc_year)); + break; + case 'V': // mode 2: semaine 1 = premiere semaine complète qui commence un dimanche + $char = sprintf("%02d", self::calc_week($year, $month, $day, 6, $calc_year)); + break; + case 'v': // mode 3: semaine 1 = premiere semaine de 4 jours. Début le lundi + $char = sprintf("%02d", self::calc_week($year, $month, $day, 3, $calc_year)); + break; + case 'X': + self::calc_week($year, $month, $day, 6, $calc_year); + $char = sprintf("%04d", $calc_year); + break; + case 'x': + self::calc_week($year, $month, $day, 3, $calc_year); + $char = sprintf("%04d", $calc_year); + break; + } + $fmt .= $char; + } + $state = 0; + } + } + return date($fmt, strtotime($date)); + } - /** - * Equivalent de la fonction MySQL IF - * @param boolean $test Le resultat du test - * @param mixed $true_part Partie a retourner si vrai - * @param mixed $false_part Partie a retourner si faux - * @return mixed Partie selectionnee en fonction du test - */ - public static function db_IF($test, $true_part, $false_part) { - return ( $test ) ? $true_part : $false_part; - } + /** + * Equivalent de la fonction MySQL IF + * @param boolean $test Le resultat du test + * @param mixed $true_part Partie a retourner si vrai + * @param mixed $false_part Partie a retourner si faux + * @return mixed Partie selectionnee en fonction du test + */ + public static function db_IF($test, $true_part, $false_part) { + return ( $test ) ? $true_part : $false_part; + } - // Adapté de mytime.c des sources de mariadb - // fonction calc_daynr - private static function calc_daynr($year, $month, $day) { - $y = $year; - if ($y == 0 && $month == 0) return 0; - $num = (365* $y + 31 * ($month - 1) + $day); - if ($month <= 2) { - $y--; } - else { - $num -= floor(($month * 4 + 23) / 10); - } - $temp = floor(($y / 100 + 1) * 3 / 4); - return $num + floor($y / 4) - $temp; - } + // Adapté de mytime.c des sources de mariadb + // fonction calc_daynr + private static function calc_daynr($year, $month, $day) { + $y = $year; + if ($y == 0 && $month == 0) return 0; + $num = (365* $y + 31 * ($month - 1) + $day); + if ($month <= 2) { + $y--; } + else { + $num -= floor(($month * 4 + 23) / 10); + } + $temp = floor(($y / 100 + 1) * 3 / 4); + return $num + floor($y / 4) - $temp; + } - private static function calc_weekday($daynr, $sunday_first_day_of_week) { - $ret = floor(($daynr + 5 + ($sunday_first_day_of_week ? 1 : 0)) % 7); - return $ret; - } + private static function calc_weekday($daynr, $sunday_first_day_of_week) { + $ret = floor(($daynr + 5 + ($sunday_first_day_of_week ? 1 : 0)) % 7); + return $ret; + } - private static function calc_days_in_year($year) - { - return (($year & 3) == 0 && ($year%100 || ($year%400 == 0 && $year)) ? 366 : 365); - } + private static function calc_days_in_year($year) + { + return (($year & 3) == 0 && ($year%100 || ($year%400 == 0 && $year)) ? 366 : 365); + } - private static function week_mode($mode) { - $week_format= ($mode & 7); - if (!($week_format & self::WEEK_MONDAY_FIRST)) { - $week_format^= self::WEEK_FIRST_WEEKDAY; - } - return $week_format; - } + private static function week_mode($mode) { + $week_format= ($mode & 7); + if (!($week_format & self::WEEK_MONDAY_FIRST)) { + $week_format^= self::WEEK_FIRST_WEEKDAY; + } + return $week_format; + } - private static function calc_week($year, $month, $day, $week_behaviour, &$calc_year) { - $daynr=self::calc_daynr($year,$month,$day); - $first_daynr=self::calc_daynr($year,1,1); - $monday_first= ($week_behaviour & self::WEEK_MONDAY_FIRST) ? 1 : 0; - $week_year= ($week_behaviour & self::WEEK_YEAR) ? 1 : 0; - $first_weekday= ($week_behaviour & self::WEEK_FIRST_WEEKDAY) ? 1 : 0; + private static function calc_week($year, $month, $day, $week_behaviour, &$calc_year) { + $daynr=self::calc_daynr($year,$month,$day); + $first_daynr=self::calc_daynr($year,1,1); + $monday_first= ($week_behaviour & self::WEEK_MONDAY_FIRST) ? 1 : 0; + $week_year= ($week_behaviour & self::WEEK_YEAR) ? 1 : 0; + $first_weekday= ($week_behaviour & self::WEEK_FIRST_WEEKDAY) ? 1 : 0; - $weekday=self::calc_weekday($first_daynr, !$monday_first); - $calc_year=$year; + $weekday=self::calc_weekday($first_daynr, !$monday_first); + $calc_year=$year; - if ($month == 1 && $day <= 7-$weekday) - { - if (!$week_year && (($first_weekday && $weekday != 0) || (!$first_weekday && $weekday >= 4))) - return 0; - $week_year= 1; - $calc_year--; - $first_daynr-= ($days=self::calc_days_in_year($calc_year)); - $weekday= ($weekday + 53*7- $days) % 7; - } + if ($month == 1 && $day <= 7-$weekday) + { + if (!$week_year && (($first_weekday && $weekday != 0) || (!$first_weekday && $weekday >= 4))) + return 0; + $week_year= 1; + $calc_year--; + $first_daynr-= ($days=self::calc_days_in_year($calc_year)); + $weekday= ($weekday + 53*7- $days) % 7; + } - if (($first_weekday && $weekday != 0) || (!$first_weekday && $weekday >= 4)) { - $days= $daynr - ($first_daynr+ (7-$weekday)); - } - else { - $days= $daynr - ($first_daynr - $weekday); - } + if (($first_weekday && $weekday != 0) || (!$first_weekday && $weekday >= 4)) { + $days= $daynr - ($first_daynr+ (7-$weekday)); + } + else { + $days= $daynr - ($first_daynr - $weekday); + } - if ($week_year && $days >= 52*7) - { - $weekday= ($weekday + self::calc_days_in_year($calc_year)) % 7; - if ((!$first_weekday && $weekday < 4) || ($first_weekday && $weekday == 0)) - { - $calc_year++; - return 1; - } - } - return floor($days/7+1); - } + if ($week_year && $days >= 52*7) + { + $weekday= ($weekday + self::calc_days_in_year($calc_year)) % 7; + if ((!$first_weekday && $weekday < 4) || ($first_weekday && $weekday == 0)) + { + $calc_year++; + return 1; + } + } + return floor($days/7+1); + } } diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index 0b0ceb5460c..017d1eb8662 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -39,166 +39,166 @@ abstract class DolibarrModules */ public $db; - /** - * @var string Relative path to module style sheet - * @deprecated - */ - public $style_sheet = ''; + /** + * @var string Relative path to module style sheet + * @deprecated + */ + public $style_sheet = ''; - /** - * @var array Paths to create when module is activated - */ - public $dirs = array(); + /** + * @var array Paths to create when module is activated + */ + public $dirs = array(); - /** - * @var array Module boxes - */ - public $boxes = array(); + /** + * @var array Module boxes + */ + public $boxes = array(); - /** - * @var array Module constants - */ - public $const = array(); + /** + * @var array Module constants + */ + public $const = array(); - /** - * @var array Module access rights - */ - public $rights; + /** + * @var array Module access rights + */ + public $rights; - /** - * @var string Module access rights family - */ - public $rights_class; + /** + * @var string Module access rights family + */ + public $rights_class; - /** - * @var array Module menu entries - */ - public $menu = array(); + /** + * @var array Module menu entries + */ + public $menu = array(); - /** - * @var array Module parts - * array( - * // Set this to 1 if module has its own trigger directory (/mymodule/core/triggers) - * 'triggers' => 0, - * // Set this to 1 if module has its own login method directory (/mymodule/core/login) + /** + * @var array Module parts + * array( + * // Set this to 1 if module has its own trigger directory (/mymodule/core/triggers) + * 'triggers' => 0, + * // Set this to 1 if module has its own login method directory (/mymodule/core/login) * 'login' => 0, - * // Set this to 1 if module has its own substitution function file (/mymodule/core/substitutions) + * // Set this to 1 if module has its own substitution function file (/mymodule/core/substitutions) * 'substitutions' => 0, - * // Set this to 1 if module has its own menus handler directory (/mymodule/core/menus) + * // Set this to 1 if module has its own menus handler directory (/mymodule/core/menus) * 'menus' => 0, - * // Set this to 1 if module has its own theme directory (/mymodule/theme) + * // Set this to 1 if module has its own theme directory (/mymodule/theme) * 'theme' => 0, - * // Set this to 1 if module overwrite template dir (/mymodule/core/tpl) - * 'tpl' => 0, - * // Set this to 1 if module has its own barcode directory (/mymodule/core/modules/barcode) + * // Set this to 1 if module overwrite template dir (/mymodule/core/tpl) + * 'tpl' => 0, + * // Set this to 1 if module has its own barcode directory (/mymodule/core/modules/barcode) * 'barcode' => 0, - * // Set this to 1 if module has its own models directory (/mymodule/core/modules/xxx) + * // Set this to 1 if module has its own models directory (/mymodule/core/modules/xxx) * 'models' => 0, - * // Set this to relative path of css file if module has its own css file + * // Set this to relative path of css file if module has its own css file * 'css' => '/mymodule/css/mymodule.css.php', - * // Set this to relative path of js file if module must load a js on all pages + * // Set this to relative path of js file if module must load a js on all pages * 'js' => '/mymodule/js/mymodule.js', - * // Set here all hooks context managed by module + * // Set here all hooks context managed by module * 'hooks' => array('hookcontext1','hookcontext2'), - * // Set here all workflow context managed by module + * // Set here all workflow context managed by module * 'workflow' => array( - * 'WORKFLOW_MODULE1_YOURACTIONTYPE_MODULE2' = >array( - * 'enabled' => '! empty($conf->module1->enabled) && ! empty($conf->module2->enabled)', - * 'picto'=>'yourpicto@mymodule' - * ) - * ) - * ) - */ - public $module_parts = array(); + * 'WORKFLOW_MODULE1_YOURACTIONTYPE_MODULE2' = >array( + * 'enabled' => '! empty($conf->module1->enabled) && ! empty($conf->module2->enabled)', + * 'picto'=>'yourpicto@mymodule' + * ) + * ) + * ) + */ + public $module_parts = array(); - /** - * @var string Module documents ? - * @deprecated Seems unused anywhere - */ - public $docs; + /** + * @var string Module documents ? + * @deprecated Seems unused anywhere + */ + public $docs; - /** - * @var string ? - * @deprecated Seems unused anywhere - */ - public $dbversion = "-"; + /** + * @var string ? + * @deprecated Seems unused anywhere + */ + public $dbversion = "-"; - /** - * @var string Error message - */ - public $error; + /** + * @var string Error message + */ + public $error; - /** - * @var int Module unique ID - */ - public $numero; + /** + * @var int Module unique ID + */ + public $numero; - /** - * @var string Module name - */ - public $name; + /** + * @var string Module name + */ + public $name; - /** - * @var string Module version - */ - public $version; + /** + * @var string Module version + */ + public $version; - /** - * @var string Module description - */ - public $description; + /** + * @var string Module description + */ + public $description; - /** - * @var string[] Module language files - */ - public $langfiles; + /** + * @var string[] Module language files + */ + public $langfiles; - /** - * @var string Module export code - */ - public $export_code; + /** + * @var string Module export code + */ + public $export_code; - /** - * @var string Module export label - */ - public $export_label; + /** + * @var string Module export label + */ + public $export_label; - /** - * @var string Module import code - */ - public $import_code; + /** + * @var string Module import code + */ + public $import_code; - /** - * @var string Module import label - */ - public $import_label; + /** + * @var string Module import label + */ + public $import_label; - /** - * @var string Module constant name - */ - public $const_name; + /** + * @var string Module constant name + */ + public $const_name; - /** - * @var bool Module can't be disabled - */ - public $always_enabled; + /** + * @var bool Module can't be disabled + */ + public $always_enabled; - /** - * @var bool Module is enabled globally (Multicompany support) - */ - public $core_enabled; + /** + * @var bool Module is enabled globally (Multicompany support) + */ + public $core_enabled; - /** - * Enables a module. - * Inserts all informations into database - * + /** + * Enables a module. + * Inserts all informations into database + * * @param array $array_sql SQL requests to be executed when enabling module - * @param string $options String with options when disabling module: - * 'noboxes' = Do not insert boxes - * 'newboxdefonly' = For boxes, insert def of boxes only and not boxes activation - * - * @return int 1 if OK, 0 if KO - */ + * @param string $options String with options when disabling module: + * 'noboxes' = Do not insert boxes + * 'newboxdefonly' = For boxes, insert def of boxes only and not boxes activation + * + * @return int 1 if OK, 0 if KO + */ function _init($array_sql, $options='') { global $conf; @@ -232,12 +232,12 @@ abstract class DolibarrModules // Execute addons requests $num=count($array_sql); - for ($i = 0; $i < $num; $i++) + for ($i = 0; $i < $num; $i++) { if (! $err) { $val=$array_sql[$i]; - $sql=$val; + $sql=$val; $ignoreerror=0; if (is_array($val)) { @@ -367,12 +367,12 @@ abstract class DolibarrModules // If module name translation using it's unique id does not exists, we take use its name to find translation if (is_array($this->langfiles)) { - foreach($this->langfiles as $val) - { - if ($val) $langs->load($val); - } + foreach($this->langfiles as $val) + { + if ($val) $langs->load($val); + } } - return $langs->trans($this->name); + return $langs->trans($this->name); } } @@ -389,20 +389,20 @@ abstract class DolibarrModules if ($langs->trans("Module".$this->numero."Desc") != ("Module".$this->numero."Desc")) { - // If module description translation exists + // If module description translation exists return $langs->trans("Module".$this->numero."Desc"); } else - { + { // If module description translation using it's unique id does not exists, we take use its name to find translation if (is_array($this->langfiles)) { - foreach($this->langfiles as $val) - { - if ($val) $langs->load($val); - } + foreach($this->langfiles as $val) + { + if ($val) $langs->load($val); + } } - return $langs->trans($this->description); + return $langs->trans($this->description); } } @@ -429,7 +429,7 @@ abstract class DolibarrModules else $ret=$langs->trans("VersionUnknown"); if (preg_match('/_deprecated/',$this->version)) $ret.=' ('.$langs->trans("Deprecated").')'; - return $ret; + return $ret; } @@ -582,9 +582,9 @@ abstract class DolibarrModules global $conf; $error=0; - $dirfound=0; + $dirfound=0; - if (empty($reldir)) return 1; + if (empty($reldir)) return 1; include_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php'; @@ -599,10 +599,10 @@ abstract class DolibarrModules $handle=@opendir($dir); // Dir may not exists if (is_resource($handle)) { - $dirfound++; + $dirfound++; - // Run llx_mytable.sql files - while (($file = readdir($handle))!==false) + // Run llx_mytable.sql files + while (($file = readdir($handle))!==false) { if (preg_match('/\.sql$/i',$file) && ! preg_match('/\.key\.sql$/i',$file) && substr($file,0,4) == 'llx_' && substr($file,0,4) != 'data') { @@ -613,8 +613,8 @@ abstract class DolibarrModules rewinddir($handle); - // Run llx_mytable.key.sql files (Must be done after llx_mytable.sql) - while (($file = readdir($handle))!==false) + // Run llx_mytable.key.sql files (Must be done after llx_mytable.sql) + while (($file = readdir($handle))!==false) { if (preg_match('/\.key\.sql$/i',$file) && substr($file,0,4) == 'llx_' && substr($file,0,4) != 'data') { @@ -626,7 +626,7 @@ abstract class DolibarrModules rewinddir($handle); // Run data_xxx.sql files (Must be done after llx_mytable.key.sql) - while (($file = readdir($handle))!==false) + while (($file = readdir($handle))!==false) { if (preg_match('/\.sql$/i',$file) && ! preg_match('/\.key\.sql$/i',$file) && substr($file,0,4) == 'data') { @@ -638,7 +638,7 @@ abstract class DolibarrModules rewinddir($handle); // Run update_xxx.sql files - while (($file = readdir($handle))!==false) + while (($file = readdir($handle))!==false) { if (preg_match('/\.sql$/i',$file) && ! preg_match('/\.key\.sql$/i',$file) && substr($file,0,6) == 'update') { @@ -671,9 +671,9 @@ abstract class DolibarrModules */ function insert_boxes($option='') { - require_once DOL_DOCUMENT_ROOT . '/core/class/infobox.class.php'; + require_once DOL_DOCUMENT_ROOT . '/core/class/infobox.class.php'; - global $conf; + global $conf; $err=0; @@ -681,8 +681,8 @@ abstract class DolibarrModules { $pos_name = InfoBox::getListOfPagesForBoxes(); - foreach ($this->boxes as $key => $value) - { + foreach ($this->boxes as $key => $value) + { $file = isset($this->boxes[$key]['file'])?$this->boxes[$key]['file']:''; $note = isset($this->boxes[$key]['note'])?$this->boxes[$key]['note']:''; $enabledbydefaulton = isset($this->boxes[$key]['enabledbydefaulton'])?$this->boxes[$key]['enabledbydefaulton']:'Home'; @@ -724,15 +724,15 @@ abstract class DolibarrModules foreach ($pos_name as $key2 => $val2) { - //print 'key2='.$key2.'-val2='.$val2."
\n"; + //print 'key2='.$key2.'-val2='.$val2."
\n"; if ($enabledbydefaulton && $val2 != $enabledbydefaulton) continue; // Not enabled by default onto this page. - $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes (box_id,position,box_order,fk_user,entity)"; - $sql.= " VALUES (".$lastid.", ".$key2.", '0', 0, ".$conf->entity.")"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes (box_id,position,box_order,fk_user,entity)"; + $sql.= " VALUES (".$lastid.", ".$key2.", '0', 0, ".$conf->entity.")"; - dol_syslog(get_class($this)."::insert_boxes onto page ".$key2."=".$val2."", LOG_DEBUG); - $resql=$this->db->query($sql); - if (! $resql) $err++; + dol_syslog(get_class($this)."::insert_boxes onto page ".$key2."=".$val2."", LOG_DEBUG); + $resql=$this->db->query($sql); + if (! $resql) $err++; } } @@ -741,7 +741,7 @@ abstract class DolibarrModules $this->db->commit(); } else - { + { $this->error=$this->db->lasterror(); $this->db->rollback(); } @@ -781,11 +781,22 @@ abstract class DolibarrModules if (empty($file)) $file = isset($this->boxes[$key][1])?$this->boxes[$key][1]:''; // For backward compatibility - $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes"; - $sql.= " USING ".MAIN_DB_PREFIX."boxes, ".MAIN_DB_PREFIX."boxes_def"; - $sql.= " WHERE ".MAIN_DB_PREFIX."boxes.box_id = ".MAIN_DB_PREFIX."boxes_def.rowid"; - $sql.= " AND ".MAIN_DB_PREFIX."boxes_def.file = '".$this->db->escape($file)."'"; - $sql.= " AND ".MAIN_DB_PREFIX."boxes.entity = ".$conf->entity; + if ($this->db->type == 'sqlite3') { + // sqlite doesn't support "USING" syntax. + // TODO: remove this dependency. + $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes "; + $sql .= "WHERE ".MAIN_DB_PREFIX."boxes.box_id IN ("; + $sql .= "SELECT ".MAIN_DB_PREFIX."boxes_def.rowid "; + $sql .= "FROM ".MAIN_DB_PREFIX."boxes_def "; + $sql .= "WHERE ".MAIN_DB_PREFIX."boxes_def.file = '".$this->db->escape($file)."') "; + $sql .= "AND ".MAIN_DB_PREFIX."boxes.entity = ".$conf->entity; + } else { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes"; + $sql.= " USING ".MAIN_DB_PREFIX."boxes, ".MAIN_DB_PREFIX."boxes_def"; + $sql.= " WHERE ".MAIN_DB_PREFIX."boxes.box_id = ".MAIN_DB_PREFIX."boxes_def.rowid"; + $sql.= " AND ".MAIN_DB_PREFIX."boxes_def.file = '".$this->db->escape($file)."'"; + $sql.= " AND ".MAIN_DB_PREFIX."boxes.entity = ".$conf->entity; + } dol_syslog(get_class($this)."::delete_boxes", LOG_DEBUG); $resql=$this->db->query($sql); @@ -1027,54 +1038,54 @@ abstract class DolibarrModules if (empty($r_type)) $r_type='w'; - // Search if perm already present - $sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."rights_def"; - $sql.= " WHERE id = ".$r_id." AND entity = ".$entity; - $resqlselect=$this->db->query($sql); + // Search if perm already present + $sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."rights_def"; + $sql.= " WHERE id = ".$r_id." AND entity = ".$entity; + $resqlselect=$this->db->query($sql); - $obj = $this->db->fetch_object($resqlselect); + $obj = $this->db->fetch_object($resqlselect); if ($obj->nb == 0) { - if (dol_strlen($r_perms) ) - { - if (dol_strlen($r_subperms) ) - { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."rights_def"; - $sql.= " (id, entity, libelle, module, type, bydefault, perms, subperms)"; - $sql.= " VALUES "; - $sql.= "(".$r_id.",".$entity.",'".$this->db->escape($r_desc)."','".$r_modul."','".$r_type."',".$r_def.",'".$r_perms."','".$r_subperms."')"; - } - else - { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."rights_def"; - $sql.= " (id, entity, libelle, module, type, bydefault, perms)"; - $sql.= " VALUES "; - $sql.= "(".$r_id.",".$entity.",'".$this->db->escape($r_desc)."','".$r_modul."','".$r_type."',".$r_def.",'".$r_perms."')"; - } - } - else - { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."rights_def "; - $sql .= " (id, entity, libelle, module, type, bydefault)"; - $sql .= " VALUES "; - $sql .= "(".$r_id.",".$entity.",'".$this->db->escape($r_desc)."','".$r_modul."','".$r_type."',".$r_def.")"; - } + if (dol_strlen($r_perms) ) + { + if (dol_strlen($r_subperms) ) + { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."rights_def"; + $sql.= " (id, entity, libelle, module, type, bydefault, perms, subperms)"; + $sql.= " VALUES "; + $sql.= "(".$r_id.",".$entity.",'".$this->db->escape($r_desc)."','".$r_modul."','".$r_type."',".$r_def.",'".$r_perms."','".$r_subperms."')"; + } + else + { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."rights_def"; + $sql.= " (id, entity, libelle, module, type, bydefault, perms)"; + $sql.= " VALUES "; + $sql.= "(".$r_id.",".$entity.",'".$this->db->escape($r_desc)."','".$r_modul."','".$r_type."',".$r_def.",'".$r_perms."')"; + } + } + else + { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."rights_def "; + $sql .= " (id, entity, libelle, module, type, bydefault)"; + $sql .= " VALUES "; + $sql .= "(".$r_id.",".$entity.",'".$this->db->escape($r_desc)."','".$r_modul."','".$r_type."',".$r_def.")"; + } - $resqlinsert=$this->db->query($sql,1); + $resqlinsert=$this->db->query($sql,1); - if (! $resqlinsert) - { - if ($this->db->errno() != "DB_ERROR_RECORD_ALREADY_EXISTS") - { - $this->error=$this->db->lasterror(); - $err++; - break; - } - else dol_syslog(get_class($this)."::insert_permissions record already exists", LOG_INFO); + if (! $resqlinsert) + { + if ($this->db->errno() != "DB_ERROR_RECORD_ALREADY_EXISTS") + { + $this->error=$this->db->lasterror(); + $err++; + break; + } + else dol_syslog(get_class($this)."::insert_permissions record already exists", LOG_INFO); - } + } - $this->db->free($resqlinsert); + $this->db->free($resqlinsert); } $this->db->free($resqlselect); @@ -1082,9 +1093,9 @@ abstract class DolibarrModules // If we want to init permissions on admin users if ($reinitadminperms) { - if (! class_exists('User')) { - require DOL_DOCUMENT_ROOT . '/user/class/user.class.php'; - } + if (! class_exists('User')) { + require DOL_DOCUMENT_ROOT . '/user/class/user.class.php'; + } $sql="SELECT rowid FROM ".MAIN_DB_PREFIX."user WHERE admin = 1"; dol_syslog(get_class($this)."::insert_permissions Search all admin users", LOG_DEBUG); $resqlseladmin=$this->db->query($sql,1); @@ -1099,7 +1110,7 @@ abstract class DolibarrModules $tmpuser=new User($this->db); $tmpuser->fetch($obj2->rowid); if (!empty($tmpuser->id)) { - $tmpuser->addrights($r_id); + $tmpuser->addrights($r_id); } $i++; } @@ -1158,7 +1169,7 @@ abstract class DolibarrModules */ function insert_menus() { - global $user; + global $user; require_once DOL_DOCUMENT_ROOT . '/core/class/menubase.class.php'; @@ -1415,68 +1426,68 @@ abstract class DolibarrModules */ function insert_module_parts() { - global $conf; + global $conf; - $error=0; - $entity=$conf->entity; + $error=0; + $entity=$conf->entity; - if (is_array($this->module_parts) && ! empty($this->module_parts)) - { - foreach($this->module_parts as $key => $value) - { + if (is_array($this->module_parts) && ! empty($this->module_parts)) + { + foreach($this->module_parts as $key => $value) + { if (is_array($value) && count($value) == 0) continue; // Discard empty arrays - $newvalue = $value; + $newvalue = $value; - // Serialize array parameters - if (is_array($value)) - { - // Can defined other parameters - if (is_array($value['data']) && ! empty($value['data'])) - { - $newvalue = json_encode($value['data']); - if (isset($value['entity'])) $entity = $value['entity']; - } - else - { - $newvalue = json_encode($value); - } - } + // Serialize array parameters + if (is_array($value)) + { + // Can defined other parameters + if (is_array($value['data']) && ! empty($value['data'])) + { + $newvalue = json_encode($value['data']); + if (isset($value['entity'])) $entity = $value['entity']; + } + else + { + $newvalue = json_encode($value); + } + } - $sql = "INSERT INTO ".MAIN_DB_PREFIX."const ("; - $sql.= "name"; - $sql.= ", type"; - $sql.= ", value"; - $sql.= ", note"; - $sql.= ", visible"; - $sql.= ", entity"; - $sql.= ")"; - $sql.= " VALUES ("; - $sql.= $this->db->encrypt($this->const_name."_".strtoupper($key), 1); - $sql.= ", 'chaine'"; - $sql.= ", ".$this->db->encrypt($newvalue, 1); - $sql.= ", null"; - $sql.= ", '0'"; - $sql.= ", ".$entity; - $sql.= ")"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."const ("; + $sql.= "name"; + $sql.= ", type"; + $sql.= ", value"; + $sql.= ", note"; + $sql.= ", visible"; + $sql.= ", entity"; + $sql.= ")"; + $sql.= " VALUES ("; + $sql.= $this->db->encrypt($this->const_name."_".strtoupper($key), 1); + $sql.= ", 'chaine'"; + $sql.= ", ".$this->db->encrypt($newvalue, 1); + $sql.= ", null"; + $sql.= ", '0'"; + $sql.= ", ".$entity; + $sql.= ")"; - dol_syslog(get_class($this)."::insert_const_".$key."", LOG_DEBUG); - $resql=$this->db->query($sql,1); - if (! $resql) - { - if ($this->db->lasterrno() != 'DB_ERROR_RECORD_ALREADY_EXISTS') - { - $error++; - $this->error=$this->db->lasterror(); - } - else - { - dol_syslog(get_class($this)."::insert_const_".$key." Record already exists.", LOG_WARNING); - } - } - } - } - return $error; + dol_syslog(get_class($this)."::insert_const_".$key."", LOG_DEBUG); + $resql=$this->db->query($sql,1); + if (! $resql) + { + if ($this->db->lasterrno() != 'DB_ERROR_RECORD_ALREADY_EXISTS') + { + $error++; + $this->error=$this->db->lasterror(); + } + else + { + dol_syslog(get_class($this)."::insert_const_".$key." Record already exists.", LOG_WARNING); + } + } + } + } + return $error; } /** @@ -1486,31 +1497,31 @@ abstract class DolibarrModules */ function delete_module_parts() { - global $conf; + global $conf; - $err=0; - $entity=$conf->entity; + $err=0; + $entity=$conf->entity; - if (is_array($this->module_parts) && ! empty($this->module_parts)) - { - foreach($this->module_parts as $key => $value) - { - // If entity is defined - if (is_array($value) && isset($value['entity'])) $entity = $value['entity']; + if (is_array($this->module_parts) && ! empty($this->module_parts)) + { + foreach($this->module_parts as $key => $value) + { + // If entity is defined + if (is_array($value) && isset($value['entity'])) $entity = $value['entity']; - $sql = "DELETE FROM ".MAIN_DB_PREFIX."const"; - $sql.= " WHERE ".$this->db->decrypt('name')." LIKE '".$this->const_name."_".strtoupper($key)."'"; - $sql.= " AND entity = ".$entity; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."const"; + $sql.= " WHERE ".$this->db->decrypt('name')." LIKE '".$this->const_name."_".strtoupper($key)."'"; + $sql.= " AND entity = ".$entity; - dol_syslog(get_class($this)."::delete_const_".$key."", LOG_DEBUG); - if (! $this->db->query($sql)) - { - $this->error=$this->db->lasterror(); - $err++; - } - } - } - return $err; + dol_syslog(get_class($this)."::delete_const_".$key."", LOG_DEBUG); + if (! $this->db->query($sql)) + { + $this->error=$this->db->lasterror(); + $err++; + } + } + } + return $err; } } diff --git a/htdocs/install/etape1.php b/htdocs/install/etape1.php index 50d5ee27b55..7b39fa06cf7 100644 --- a/htdocs/install/etape1.php +++ b/htdocs/install/etape1.php @@ -86,12 +86,15 @@ if (! is_writable($conffile)) // Check parameters +$is_sqlite = false; if (empty($db_type)) { print '
'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("DatabaseType")).'
'; $error++; +} else { + $is_sqlite = ($db_type === 'sqlite' || $db_type === 'sqlite3' ); } -if (empty($db_host)) +if (empty($db_host) && ! $is_sqlite) { print '
'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("Server")).'
'; $error++; @@ -101,7 +104,7 @@ if (empty($db_name)) print '
'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("DatabaseName")).'
'; $error++; } -if (empty($db_user)) +if (empty($db_user) && ! $is_sqlite) { print '
'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("Login")).'
'; $error++; diff --git a/index.php b/index.php deleted file mode 100644 index e4341bb53ec..00000000000 --- a/index.php +++ /dev/null @@ -1,2 +0,0 @@ - Date: Thu, 5 Mar 2015 20:37:36 +0100 Subject: [PATCH 172/429] Debug of Frederic34. Thanks ! --- htdocs/compta/loan/calc.php | 43 ++++++++++++++++++++---------------- htdocs/langs/en_US/loan.lang | 1 + 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/htdocs/compta/loan/calc.php b/htdocs/compta/loan/calc.php index 5cc2c830094..009c61095c9 100644 --- a/htdocs/compta/loan/calc.php +++ b/htdocs/compta/loan/calc.php @@ -1,6 +1,7 @@ * Copyright (C) 2014 Alexandre Spangaro + * Copyright (C) 2015 Frederic 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 @@ -19,7 +20,7 @@ require '../../main.inc.php'; $langs->load("loan"); - + /* --------------------------------------------------- * * Set Form DEFAULT values * --------------------------------------------------- */ @@ -82,12 +83,17 @@ if ($form_complete) { $annual_interest_percent = preg_replace( "[^0-9.]", "", $annual_interest_percent); $year_term = preg_replace( "[^0-9.]", "", $year_term); $down_percent = preg_replace( "[^0-9.]", "", $down_percent); - - if (((float) $year_term <= 0) || ((float) $sale_price <= 0) || ((float) $annual_interest_percent <= 0)) { - $error = "You must enter a Sale Price of Home, Length of Motgage and Annual Interest Rate"; - } - if (!$error) { + if ((float) $year_term <= 0) { + $errors[] = "You must enter a Sale Price of Home"; + } + if ((float) $sale_price <= 0) { + $errors[] = "You must enter a Length of Mortgage"; + } + if ((float) $annual_interest_percent <= 0) { + $errors[] = "You must enter an Annual Interest Rate"; + } + if (!$errors) { $month_term = $year_term * 12; $down_payment = $sale_price * ($down_percent / 100); $annual_interest_rate = $annual_interest_percent / 100; @@ -104,8 +110,8 @@ if ($form_complete) { if (!$show_progress) { $show_progress = $default_show_progress; } } -if ($error) { - print("" . $error . "

\n"); +if (! empty($errors)) { + setEventMessages('', $errors, 'errors'); $form_complete = false; } @@ -123,17 +129,16 @@ echo "This mortgage calculator can be use print '
'; print ''; print '
'.$langs->trans("TableName").'Rows'.$langs->trans("NbOfRecord").'
'; -print ''; -print ''; -print ''; -print ''; +//print ''; +//print ''; +//print ''; +//print ''; print ''; print ''; print ''; print ''; print ''; -print ''; -print ''; +print '';print ''; print ''; print ''; print ''; @@ -289,7 +294,7 @@ if ($form_complete && $show_progress) { print '
Purchase & Financing Information
Sale Price of Home: '.$langs->trans("Currency".$conf->currency).'
'.$langs->trans("Currency".$conf->currency).'
Percentage Down:%'; print 'The montly payment is figured out using the following formula:
'; print 'Monthly Payment = ' . number_format($financing_price, "2", "", "") . ' * '; - print number_format($monthly_interest_rate, "4", "", "") . ' / '; + print $langs->trans('MonthlyPayment').' = ' . number_format($financing_price, "2", "", "") . ' * '; print '(1 - ((1 + ' . number_format($monthly_interest_rate, "4", "", "") . ')'; print '-(' . $month_term . '))))'; print '

'; @@ -311,7 +316,7 @@ if ($form_complete && $show_progress) { $denom = pow((1 + $monthly_interest_rate), $power); $monthly_payment = $principal * ($monthly_interest_rate / (1 - $denom)); - print("

Amortization For Monthly Payment: \$" . number_format($monthly_payment, "2", ".", ",") . " over " . $year_term . " years
\n"); + print "

Amortization For Monthly Payment: " . number_format($monthly_payment, "2", ".", ",") . " over " . $year_term . " years
\n"); print ''; @@ -323,8 +328,8 @@ if ($form_complete && $show_progress) { $legend.= ''; $legend.= ''; - echo $legend; - + print $legend; + // Loop through and get the current month's payments for // the length of the loan while ($current_month <= $month_term) @@ -377,7 +382,7 @@ if ($form_complete && $show_progress) { $principal = $remaining_balance; $current_month++; } - print("
' . $langs->trans("Position") . '
\n"); + print "
\n"; } llxFooter(); diff --git a/htdocs/langs/en_US/loan.lang b/htdocs/langs/en_US/loan.lang index e59fc7898b8..a035c8cf68c 100644 --- a/htdocs/langs/en_US/loan.lang +++ b/htdocs/langs/en_US/loan.lang @@ -19,6 +19,7 @@ ErrorLoanLength=Loan length has to be numeric and greater ErrorLoanInterest=Annual interest has to be numeric and greater than zero. # Calc Totalsforyear=Totals for year +MonthlyPayment=Monthly Payment # Admin ConfigLoan=Configuration of the module loan LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accountancy code capital by default From 97f36825df1c626c642d7edc05730e521d7a4f6c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 5 Mar 2015 21:47:50 +0100 Subject: [PATCH 173/429] Work on new timesheet page --- htdocs/core/lib/project.lib.php | 16 ++++--- htdocs/projet/activity/perday.php | 69 ++++++++++++++++-------------- htdocs/projet/class/task.class.php | 13 +++++- 3 files changed, 58 insertions(+), 40 deletions(-) diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index e028c3cbbd8..f744508d9bf 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -555,10 +555,12 @@ function projectLinesPerTime(&$inc, $parent, $lines, &$level, &$projectsrole, &$ for ($k = 0 ; $k < $level ; $k++) print "   "; $taskstatic->id=$lines[$i]->id; $taskstatic->ref=$lines[$i]->label; + $taskstatic->date_start=$lines[$i]->date_start; + $taskstatic->date_end=$lines[$i]->date_end; print $taskstatic->getNomUrl(0); - print "
"; - for ($k = 0 ; $k < $level ; $k++) print "   "; - print get_date_range($lines[$i]->date_start,$lines[$i]->date_end,'',$langs,0); + //print "
"; + //for ($k = 0 ; $k < $level ; $k++) print "   "; + //print get_date_range($lines[$i]->date_start,$lines[$i]->date_end,'',$langs,0); print "
tva_assuj == "0") echo '0'; - else echo $form->load_tva('tva_tx', (isset($_POST["tva_tx"])?$_POST["tva_tx"]:-1), $seller, $buyer); - } + if ($seller->tva_assuj == "0") echo '0'; + else echo $form->load_tva('tva_tx', (isset($_POST["tva_tx"])?$_POST["tva_tx"]:-1), $seller, $buyer); ?> - "> - - "> - "> @@ -273,7 +266,7 @@ else {
'; + print ''; print $linktoprod; print "
 '; - print ''; + print ''; + print ''; print ''; - print ''; + print ''; print ''; $formpropal->selectProposalStatus($viewstatut,1); diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 9d143d87eb2..c38b1a8e34f 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -51,6 +51,7 @@ $sall=GETPOST('sall'); $socid=GETPOST('socid','int'); $search_user=GETPOST('search_user','int'); $search_sale=GETPOST('search_sale','int'); +$search_total_ht=GETPOST('search_total_ht','alpha'); // Security check $id = (GETPOST('orderid')?GETPOST('orderid'):GETPOST('id','int')); @@ -79,6 +80,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both $search_ref=''; $search_ref_customer=''; $search_company=''; + $search_total_ht=''; $orderyear=''; $ordermonth=''; $deliverymonth=''; @@ -96,6 +98,7 @@ $parameters=array('socid'=>$socid); $reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hook if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + /* * View */ @@ -198,7 +201,10 @@ if ($search_user > 0) { $sql.= " AND ec.fk_c_type_contact = tc.rowid AND tc.element='commande' AND tc.source='internal' AND ec.element_id = c.rowid AND ec.fk_socpeople = ".$search_user; } - +if ($search_total_ht != '') +{ + $sql.= natural_search('c.total_ht', $search_total_ht, 1); +} $sql.= ' ORDER BY '.$sortfield.' '.$sortorder; $nbtotalofrecords = 0; @@ -252,7 +258,8 @@ if ($resql) if ($search_ref_customer) $param.='&search_ref_customer='.$search_ref_customer; if ($search_user > 0) $param.='&search_user='.$search_user; if ($search_sale > 0) $param.='&search_sale='.$search_sale; - + if ($search_total_ht != '') $param.='&search_total_ht='.$search_total_ht; + $num = $db->num_rows($resql); print_barre_liste($title, $page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords); $i = 0; @@ -316,7 +323,9 @@ if ($resql) print ''; $formother->select_year($deliveryyear?$deliveryyear:-1,'deliveryyear',1, 20, 5); print ' '; + print ''; + print ''; print ''; print "
   '; print ''; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index c5d8d509b08..509f237b0d6 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4961,7 +4961,7 @@ function natural_search($fields, $value, $numeric=0) if ($numeric) { - $value=preg_replace('/([<>=]+)\s([0-9'.preg_quote($langs->trans("DecimalSeparator"),'/').'])/','\1\2',$value); // Clean string '< 10' into '<10' so we can the explode on space to get all tests to do + $value=preg_replace('/([<>=]+)\s([0-9'.preg_quote($langs->trans("DecimalSeparator"),'/').'\-])/','\1\2',$value); // Clean string '< 10' into '<10' so we can the explode on space to get all tests to do } $crits = explode(' ', $value); $res = ''; diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 613eb463366..6926997f0f1 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -100,7 +100,7 @@ $offset = $conf->liste_limit * $page ; /* - * Mode Liste + * Mode list */ $sql = "SELECT s.rowid as socid, s.nom as name, cf.date_commande as dc,"; @@ -130,13 +130,13 @@ if ($search_user) { $sql.= " AND u.login LIKE '%".$db->escape($search_user)."%'"; } -if ($search_ht) +if ($search_ht != '') { - $sql .= " AND cf.total_ht = '".$db->escape(price2num($search_ht))."'"; + $sql .= natural_search("cf.total_ht",$search_ht, 1); } -if ($search_ttc) +if ($search_ttc != '') { - $sql .= " AND cf.total_ttc = '".$db->escape(price2num($search_ttc))."'"; + $sql .= natural_search("cf.total_ttc", $search_ttc, 1); } if ($sall) { @@ -214,8 +214,8 @@ if ($resql) print '  '; diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index d59870d8fc5..66ad20e4c05 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -153,7 +153,7 @@ if ($search_ref) if (is_numeric($search_ref)) $sql .= natural_search(array('fac.ref'), $search_ref); else $sql .= natural_search('fac.ref', $search_ref); } -if (search_ref_supplier) +if ($search_ref_supplier) { $sql .= natural_search('fac.ref_supplier', $search_ref_supplier); } @@ -178,14 +178,14 @@ if ($search_company) $sql .= natural_search('s.nom', $search_company); } -if ($search_amount_no_tax) +if ($search_amount_no_tax != '') { - $sql .= " AND fac.total_ht = '".$db->escape(price2num($search_amount_no_tax))."'"; + $sql .= natural_search('fac.total_ht', $search_amount_no_tax, 1); } -if ($search_amount_all_tax) +if ($search_amount_all_tax != '') { - $sql .= " AND fac.total_ttc = '".$db->escape(price2num($search_amount_all_tax))."'"; + $sql .= natural_search('fac.total_ttc', $search_amount_all_tax, 1); } $nbtotalofrecords = 0; @@ -270,9 +270,9 @@ if ($resql) print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; $liststatus=array('paye:0'=>$langs->trans("Unpaid"), 'paye:1'=>$langs->trans("Paid")); print $form->selectarray('filtre', $liststatus, $filter, 1); From c80007c6801840bc0cb2ba2179be92d922c19f08 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 6 Mar 2015 21:57:58 +0100 Subject: [PATCH 187/429] Fix: we must use stockreal of stockvirtual when we are speaking about stock ('stock' alone is not accurate enough) --- htdocs/expedition/shipment.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/expedition/shipment.php b/htdocs/expedition/shipment.php index d5d82f2baa3..973066971a3 100644 --- a/htdocs/expedition/shipment.php +++ b/htdocs/expedition/shipment.php @@ -402,7 +402,7 @@ if ($id > 0 || ! empty($ref)) print ''.$langs->trans("KeepToShip").''.$langs->trans("Stock").''.$langs->trans("RealStock").'
'; diff --git a/htdocs/product/stats/commande_fournisseur.php b/htdocs/product/stats/commande_fournisseur.php index 3141b3266e9..8cbdea41495 100644 --- a/htdocs/product/stats/commande_fournisseur.php +++ b/htdocs/product/stats/commande_fournisseur.php @@ -150,9 +150,9 @@ if ($id > 0 || ! empty($ref)) { $sql .= " AND d.fk_commande = c.rowid"; $sql .= " AND d.fk_product =" . $product->id; if (! empty($search_month)) - $sql .= ' AND MONTH(f.datef) IN (' . $search_month . ')'; + $sql .= ' AND MONTH(c.date_commande) IN (' . $search_month . ')'; if (! empty($search_year)) - $sql .= ' AND YEAR(f.datef) IN (' . $search_year . ')'; + $sql .= ' AND YEAR(c.date_commande) IN (' . $search_year . ')'; if (! $user->rights->societe->client->voir && ! $socid) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = " . $user->id; if ($socid) @@ -199,12 +199,14 @@ if ($id > 0 || ! empty($ref)) { print_barre_liste($langs->trans("SuppliersOrders"), $page, $_SERVER["PHP_SELF"], "&id=$product->id", $sortfield, $sortorder, '', $num, $totalrecords, ''); print '
'; - print $langs->trans('Period') . '(' . $langs->trans("DateInvoice") . ') '; + print $langs->trans('Period') . ' (' . $langs->trans("OrderDate") . ') - '; print $langs->trans('Month') . ': '; print $langs->trans('Year') . ':' . $formother->selectyear($search_year ? $search_year : - 1, 'search_year', 1, 20, 5); + print '
'; print ''; print ''; print '
'; + print '
'; $i = 0; print '
'; diff --git a/htdocs/product/stats/facture.php b/htdocs/product/stats/facture.php index b59bc008f17..2ae8164b0f9 100644 --- a/htdocs/product/stats/facture.php +++ b/htdocs/product/stats/facture.php @@ -190,12 +190,14 @@ if ($id > 0 || ! empty($ref)) print_barre_liste($langs->trans("CustomersInvoices"),$page,$_SERVER["PHP_SELF"],"&id=".$product->id,$sortfield,$sortorder,'',$num,$totalrecords,''); print '
'; - print $langs->trans('Period').'('.$langs->trans("DateInvoice") .') '; + print $langs->trans('Period').' ('.$langs->trans("DateInvoice") .') - '; print $langs->trans('Month') . ': '; print $langs->trans('Year') . ':' . $formother->selectyear($search_year ? $search_year : - 1, 'search_year', 1, 20, 5); + print '
'; print ''; print ''; print '
'; + print '
'; $i = 0; print '
'; diff --git a/htdocs/product/stats/facture_fournisseur.php b/htdocs/product/stats/facture_fournisseur.php index 0feb415cc43..2e8e84621ba 100644 --- a/htdocs/product/stats/facture_fournisseur.php +++ b/htdocs/product/stats/facture_fournisseur.php @@ -191,12 +191,14 @@ if ($id > 0 || ! empty($ref)) print_barre_liste($langs->trans("SuppliersInvoices"), $page, $_SERVER["PHP_SELF"], "&id=$product->id", $sortfield, $sortorder, '', $num, $totalrecords, ''); print '
'; - print $langs->trans('Period') . '(' . $langs->trans("DateInvoice") . ') '; + print $langs->trans('Period') . ' (' . $langs->trans("DateInvoice") . ') - '; print $langs->trans('Month') . ': '; print $langs->trans('Year') . ':' . $formother->selectyear($search_year ? $search_year : - 1, 'search_year', 1, 20, 5); + print '
'; print ''; print ''; print '
'; + print '
'; $i = 0; print '
'; diff --git a/htdocs/product/stats/propal.php b/htdocs/product/stats/propal.php index 50d7c952b6d..10fd8247204 100644 --- a/htdocs/product/stats/propal.php +++ b/htdocs/product/stats/propal.php @@ -192,12 +192,14 @@ if ($id > 0 || ! empty($ref)) print_barre_liste($langs->trans("Proposals"), $page, $_SERVER["PHP_SELF"], "&id=$product->id", $sortfield, $sortorder, '', $num, $totalrecords, ''); print '
'; - print $langs->trans('Period') . '(' . $langs->trans("DateInvoice") . ') '; + print $langs->trans('Period') . ' (' . $langs->trans("DatePropal") . ') - '; print $langs->trans('Month') . ': '; print $langs->trans('Year') . ':' . $formother->selectyear($search_year ? $search_year : - 1, 'search_year', 1, 20, 5); + print '
'; print ''; print ''; print '
'; + print '
'; $i = 0; print '
'; From df305bd31661351190d95fff91323b4bf840fb5b Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 7 Mar 2015 15:01:30 +0100 Subject: [PATCH 189/429] Deactivate conflict with Mod Deplacement - Need to access on old data --- htdocs/core/modules/modExpenseReport.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/modExpenseReport.class.php b/htdocs/core/modules/modExpenseReport.class.php index 5d826ae9a54..cf106fa4588 100755 --- a/htdocs/core/modules/modExpenseReport.class.php +++ b/htdocs/core/modules/modExpenseReport.class.php @@ -84,7 +84,7 @@ class modExpenseReport extends DolibarrModules // Dependencies $this->depends = array(); // List of modules id that must be enabled if this module is enabled - $this->conflictwith = array("modDeplacement"); + // $this->conflictwith = array("modDeplacement"); // Deactivate for access on old information $this->requiredby = array(); // List of modules id to disable if this one is disabled $this->phpmin = array(4,3); // Minimum version of PHP required by module $this->need_dolibarr_version = array(3,7); // Minimum version of Dolibarr required by module From 402e0c8ad5d90a33cc107b68cc597d9836f862d0 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 7 Mar 2015 15:06:45 +0100 Subject: [PATCH 190/429] Add condition to access on dictionary c_type_fees when the module is enabled --- htdocs/admin/dict.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 05402898ee6..8de52ef73c5 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -8,7 +8,7 @@ * Copyright (C) 2011 Remy Younes * Copyright (C) 2012-2013 Marcos García * Copyright (C) 2012 Christophe Battarel - * Copyright (C) 2011-2014 Alexandre Spangaro + * Copyright (C) 2011-2015 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -316,7 +316,7 @@ $tabcond[13]= (! empty($conf->commande->enabled) || ! empty($conf->propal->enabl $tabcond[14]= (! empty($conf->product->enabled) && ! empty($conf->ecotax->enabled)); $tabcond[15]= true; $tabcond[16]= (! empty($conf->societe->enabled) && empty($conf->global->SOCIETE_DISABLE_PROSPECTS)); -$tabcond[17]= ! empty($conf->deplacement->enabled); +$tabcond[17]= (! empty($conf->deplacement->enabled) || ! empty($conf->expensereport->enabled)); $tabcond[18]= ! empty($conf->expedition->enabled); $tabcond[19]= ! empty($conf->societe->enabled); $tabcond[20]= ! empty($conf->fournisseur->enabled); From f780e908f419cf49421177870283050765368eba Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 7 Mar 2015 15:14:51 +0100 Subject: [PATCH 191/429] Add index.html --- htdocs/expensereport/ajax/index.html | 0 htdocs/expensereport/class/index.html | 0 htdocs/expensereport/index.html | 0 htdocs/expensereport/stats/index.html | 0 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 htdocs/expensereport/ajax/index.html create mode 100644 htdocs/expensereport/class/index.html create mode 100644 htdocs/expensereport/index.html create mode 100644 htdocs/expensereport/stats/index.html diff --git a/htdocs/expensereport/ajax/index.html b/htdocs/expensereport/ajax/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/expensereport/class/index.html b/htdocs/expensereport/class/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/expensereport/index.html b/htdocs/expensereport/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/expensereport/stats/index.html b/htdocs/expensereport/stats/index.html new file mode 100644 index 00000000000..e69de29bb2d From 1baf71874ccf9a9e366a39db617f284f6e70e4cf Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 7 Mar 2015 15:31:23 +0100 Subject: [PATCH 192/429] Sql & $_SERVER["PHP_SELF"] --- htdocs/expensereport/card.php | 10 +++++----- .../class/expensereport.class.php | 20 +++++++++---------- htdocs/expensereport/list.php | 10 +++++----- htdocs/expensereport/synchro_compta.php | 18 ++++++++--------- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index 86c113c24da..345d983b2f6 100755 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -733,12 +733,12 @@ if ($action == "confirm_paid" && GETPOST('confirm')=="yes" && $id > 0 && $user-> $insertid = $acct->addline($dateop, $operation, $label, $amount, $num_chq, $cat1, $user); if ($insertid > 0): - $sql = " UPDATE ".MAIN_DB_PREFIX."expensereport d"; + $sql = " UPDATE ".MAIN_DB_PREFIX."expensereport as d"; $sql.= " SET integration_compta = 1, fk_bank_account = $idAccount"; $sql.= " WHERE rowid = $idTrip"; $resql=$db->query($sql); if($result): - Header("Location: ".$_SEVER["PHP_SELF"]."?id=".$id); + Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit; else: dol_print_error($db); @@ -1529,9 +1529,9 @@ else $sql.= ' fde.fk_c_tva as vatrate, fde.comments, fde.qty, fde.value_unit, fde.total_ht, fde.total_tva, fde.total_ttc,'; $sql.= ' ctf.code as type_fees_code, ctf.label as type_fees_libelle,'; $sql.= ' pjt.rowid as projet_id, pjt.title as projet_title, pjt.ref as projet_ref'; - $sql.= ' FROM '.MAIN_DB_PREFIX.'expensereport_det fde'; - $sql.= ' INNER JOIN '.MAIN_DB_PREFIX.'c_type_fees ctf ON fde.fk_c_type_fees=ctf.id'; - $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet pjt ON fde.fk_projet=pjt.rowid'; + $sql.= ' FROM '.MAIN_DB_PREFIX.'expensereport_det as fde'; + $sql.= ' INNER JOIN '.MAIN_DB_PREFIX.'c_type_fees as ctf ON fde.fk_c_type_fees=ctf.id'; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet as pjt ON fde.fk_projet=pjt.rowid'; $sql.= ' WHERE fde.fk_expensereport = '.$id; $resql = $db->query($sql); diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index b31329fae95..c34edc5ff79 100755 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -270,7 +270,7 @@ class ExpenseReport extends CommonObject $sql.= " d.fk_user_author, d.fk_user_validator, d.fk_c_expensereport_statuts as status, d.fk_c_paiement,"; $sql.= " d.fk_user_valid, d.fk_user_approve, d.fk_user_paid,"; $sql.= " dp.libelle as libelle_paiement, dp.code as code_paiement"; // INNER JOIN paiement - $sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." d LEFT JOIN ".MAIN_DB_PREFIX."c_paiement dp ON d.fk_c_paiement = dp.id"; + $sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." as d LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as dp ON d.fk_c_paiement = dp.id"; if ($ref) $sql.= " WHERE d.ref = '".$this->db->escape($ref)."'"; else $sql.= " WHERE d.rowid = ".$id; $sql.= $restrict; @@ -707,8 +707,8 @@ class ExpenseReport extends CommonObject $sql.= ' ctf.code as code_type_fees, ctf.label as libelle_type_fees,'; $sql.= ' p.ref as ref_projet, p.title as title_projet'; $sql.= ' FROM '.MAIN_DB_PREFIX.$this->table_element_line.' as de'; - $sql.= ' INNER JOIN '.MAIN_DB_PREFIX.'c_type_fees ctf ON de.fk_c_type_fees = ctf.id'; - $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet p ON de.fk_projet = p.rowid'; + $sql.= ' INNER JOIN '.MAIN_DB_PREFIX.'c_type_fees as ctf ON de.fk_c_type_fees = ctf.id'; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet as p ON de.fk_projet = p.rowid'; $sql.= ' WHERE de.'.$this->fk_element.' = '.$this->id; dol_syslog('ExpenseReport::fetch_lines sql='.$sql, LOG_DEBUG); @@ -1186,7 +1186,7 @@ class ExpenseReport extends CommonObject // Select du taux de tva par rapport au code $sql = "SELECT t.taux as taux_tva"; - $sql.= " FROM ".MAIN_DB_PREFIX."c_tva t"; + $sql.= " FROM ".MAIN_DB_PREFIX."c_tva as t"; $sql.= " WHERE t.rowid = ".$c_tva; $result = $this->db->query($sql); $objp_tva = $this->db->fetch_object($result); @@ -1222,7 +1222,7 @@ class ExpenseReport extends CommonObject // Select des infos sur le type fees $sql = "SELECT c.code as code_type_fees, c.label as libelle_type_fees"; - $sql.= " FROM ".MAIN_DB_PREFIX."c_type_fees c"; + $sql.= " FROM ".MAIN_DB_PREFIX."c_type_fees as c"; $sql.= " WHERE c.id = ".$type_fees_id; $result = $this->db->query($sql); $objp_fees = $this->db->fetch_object($result); @@ -1231,7 +1231,7 @@ class ExpenseReport extends CommonObject // Select des informations du projet $sql = "SELECT p.ref as ref_projet, p.title as title_projet"; - $sql.= " FROM ".MAIN_DB_PREFIX."projet p"; + $sql.= " FROM ".MAIN_DB_PREFIX."projet as p"; $sql.= " WHERE p.rowid = ".$projet_id; $result = $this->db->query($sql); $objp_projet = $this->db->fetch_object($result); @@ -1460,9 +1460,9 @@ class ExpenseReportLine $sql.= ' fde.fk_c_tva as tva_taux, fde.comments, fde.qty, fde.value_unit, fde.total_ht, fde.total_tva, fde.total_ttc,'; $sql.= ' ctf.code as type_fees_code, ctf.label as type_fees_libelle,'; $sql.= ' pjt.rowid as projet_id, pjt.title as projet_title, pjt.ref as projet_ref'; - $sql.= ' FROM '.MAIN_DB_PREFIX.'expensereport_det fde'; - $sql.= ' INNER JOIN '.MAIN_DB_PREFIX.'c_type_fees ctf ON fde.fk_c_type_fees=ctf.id'; - $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet pjt ON fde.fk_projet=pjt.rowid'; + $sql.= ' FROM '.MAIN_DB_PREFIX.'expensereport_det as fde'; + $sql.= ' INNER JOIN '.MAIN_DB_PREFIX.'c_type_fees as ctf ON fde.fk_c_type_fees=ctf.id'; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet as pjt ON fde.fk_projet=pjt.rowid'; $sql.= ' WHERE fde.rowid = '.$rowid; $result = $this->db->query($sql); @@ -1708,4 +1708,4 @@ function select_type_fees_id($selected='',$htmlname='type',$showempty=0) } } print ''; -} +} \ No newline at end of file diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index d6700ac26a2..76a72836e17 100755 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -88,16 +88,16 @@ $pagenext = $page + 1; $sql = "SELECT d.rowid, d.ref, d.total_ht, d.total_tva, d.total_ttc, d.fk_c_expensereport_statuts as status,"; $sql.= " d.date_debut, d.date_fin,"; $sql.= " u.rowid as id_user, u.firstname, u.lastname"; -$sql.= " FROM ".MAIN_DB_PREFIX."expensereport d\n"; -$sql.= " INNER JOIN ".MAIN_DB_PREFIX."user u ON d.fk_user_author = u.rowid\n"; +$sql.= " FROM ".MAIN_DB_PREFIX."expensereport as d"; +$sql.= " INNER JOIN ".MAIN_DB_PREFIX."user as u ON d.fk_user_author = u.rowid"; // WHERE if(!empty($search_ref)){ - $sql.= " WHERE d.ref LIKE '%".$db->escape($search_ref)."%'\n"; + $sql.= " WHERE d.ref LIKE '%".$db->escape($search_ref)."%'"; }else{ - $sql.= " WHERE 1 = 1\n"; + $sql.= " WHERE 1 = 1"; } // DATE START if ($month_start > 0) { @@ -156,7 +156,7 @@ if ($month_start > 0) { } } } -if (!empty($search_user) && $search_user > 0) $sql.= " AND d.fk_user_author = ".$search_user."\n"; +if (!empty($search_user) && $search_user > 0) $sql.= " AND d.fk_user_author = '".$search_user."'"; if($search_state != '') $sql.= " AND d.fk_c_expensereport_statuts = '$search_state'\n"; // RESTRICT RIGHTS diff --git a/htdocs/expensereport/synchro_compta.php b/htdocs/expensereport/synchro_compta.php index b8f7760e409..a436f92e682 100755 --- a/htdocs/expensereport/synchro_compta.php +++ b/htdocs/expensereport/synchro_compta.php @@ -49,12 +49,12 @@ if ($_GET["action"] == 'confirm_ndf_to_account' && $_GET["confirm"] == "yes"): $insertid = $acct->addline($dateop, $operation, $label, $amount, $num_chq, $cat1, $user); if ($insertid > 0): - $sql = " UPDATE ".MAIN_DB_PREFIX."expensereport d"; + $sql = " UPDATE ".MAIN_DB_PREFIX."expensereport as d"; $sql.= " SET integration_compta = 1, fk_bank_account = $idAccount"; $sql.= " WHERE rowid = $idTrip"; $resql=$db->query($sql); if($result): - Header("Location: synchro_compta.php?account=".$idAccount); + Header("Location: ".$_SERVER["PHP_SELF"]."?account=".$idAccount); exit; else: dol_print_error($db); @@ -75,12 +75,12 @@ if ($_GET["action"] == 'confirm_account_to_ndf' && $_GET["confirm"] == "yes"): $sql.= " WHERE label LIKE '%".$expensereport->ref."%'"; $resql=$db->query($sql); if ($resql > 0): - $sql = " UPDATE ".MAIN_DB_PREFIX."expensereport d"; + $sql = " UPDATE ".MAIN_DB_PREFIX."expensereport as d"; $sql.= " SET integration_compta = 0, fk_bank_account = 0"; $sql.= " WHERE rowid = $idTrip"; $resql=$db->query($sql); if($result): - Header("Location: synchro_compta.php?account=".$idAccount); + Header("Location: ".$_SERVER["PHP_SELF"]."?account=".$idAccount); exit; else: dol_print_error($db); @@ -110,13 +110,13 @@ dol_fiche_head(''); if ($_GET["action"] == 'ndfTOaccount'): $idTrip = $_GET['idTrip']; - $ret=$html->form_confirm("synchro_compta.php?idTrip=".$idTrip."&account=".$idAccount,$langs->trans("ndfToAccount"),$langs->trans("ConfirmNdfToAccount"),"confirm_ndf_to_account","","",1); + $ret=$html->form_confirm($_SERVER["PHP_SELF"]."?idTrip=".$idTrip."&account=".$idAccount,$langs->trans("ndfToAccount"),$langs->trans("ConfirmNdfToAccount"),"confirm_ndf_to_account","","",1); if ($ret == 'html') print '
'; endif; if ($_GET["action"] == 'accountTOndf'): $idTrip = $_GET['idTrip']; - $ret=$html->form_confirm("synchro_compta.php?idTrip=".$idTrip."&account=".$idAccount,$langs->trans("AccountToNdf"),$langs->trans("ConfirmAccountToNdf"),"confirm_account_to_ndf","","",1); + $ret=$html->form_confirm($_SERVER["PHP_SELF"]."?idTrip=".$idTrip."&account=".$idAccount,$langs->trans("AccountToNdf"),$langs->trans("ConfirmAccountToNdf"),"confirm_account_to_ndf","","",1); if ($ret == 'html') print '
'; endif; @@ -138,8 +138,8 @@ else: $sql = "SELECT d.fk_bank_account, d.ref, d.rowid, d.date_valid, d.fk_user_author, d.total_ttc, d.integration_compta, d.fk_c_expensereport_statuts"; $sql.= " ,CONCAT(u.firstname,' ',u.lastname) as declarant_NDF"; - $sql.= " FROM ".MAIN_DB_PREFIX."expensereport d"; - $sql.= " INNER JOIN ".MAIN_DB_PREFIX."user u ON d.fk_user_author = u.rowid"; + $sql.= " FROM ".MAIN_DB_PREFIX."expensereport as d"; + $sql.= " INNER JOIN ".MAIN_DB_PREFIX."user as u ON d.fk_user_author = u.rowid"; $sql.= " WHERE d.fk_c_expensereport_statuts = 6"; $sql.= " ORDER BY d.date_valid DESC"; @@ -200,7 +200,7 @@ else: print "
"; else: - print '
'.$langs->trans("AucuneTripToSynch").'
'; + print '
'.$langs->trans("NoTripToSync").'
'; endif; $db->free($resql); From 2c738df1970fd460bbd65e955573801dc2e186a0 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 7 Mar 2015 15:34:58 +0100 Subject: [PATCH 193/429] Add GPLV3 & Copyright --- .../class/expensereport.class.php | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index c34edc5ff79..e1ddbc6198b 100755 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -1,5 +1,22 @@ + * Copyright (C) 2015 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 . + */ + +require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php'; /** * Class to manage Trips and Expenses From 55db57d10c8fd8c0eeb5acc3186892bc3af25ef0 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 7 Mar 2015 15:41:30 +0100 Subject: [PATCH 194/429] Path --- htdocs/expensereport/class/expensereportstats.class.php | 4 ++-- htdocs/expensereport/export_csv.php | 4 ++-- htdocs/expensereport/index.php | 4 ++-- htdocs/expensereport/list.php | 4 ++-- htdocs/expensereport/synchro_compta.php | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/htdocs/expensereport/class/expensereportstats.class.php b/htdocs/expensereport/class/expensereportstats.class.php index 9536d59937d..5d71be15738 100644 --- a/htdocs/expensereport/class/expensereportstats.class.php +++ b/htdocs/expensereport/class/expensereportstats.class.php @@ -19,11 +19,11 @@ /** * \file htdocs/expensereport/class/expensereportstats.class.php - * \ingroup factures + * \ingroup ExpenseReport * \brief Fichier de la classe de gestion des stats des expensereport et notes de frais */ include_once DOL_DOCUMENT_ROOT . '/core/class/stats.class.php'; -dol_include_once('/expensereport/class/expensereport.class.php'); +include_once DOL_DOCUMENT_ROOT . '/expensereport/class/expensereport.class.php'; /** * Classe permettant la gestion des stats des expensereports et notes de frais diff --git a/htdocs/expensereport/export_csv.php b/htdocs/expensereport/export_csv.php index 05036deaf7c..8228eb68532 100755 --- a/htdocs/expensereport/export_csv.php +++ b/htdocs/expensereport/export_csv.php @@ -21,8 +21,8 @@ */ require '../main.inc.php'; -require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php"); -dol_include_once("/expensereport/class/expensereport.class.php"); +require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php'; +require_once DOL_DOCUMENT_ROOT . '/expensereport/class/expensereport.class.php'; $langs->load("users"); $langs->load("trips"); diff --git a/htdocs/expensereport/index.php b/htdocs/expensereport/index.php index 89469609e2a..b90e6416192 100644 --- a/htdocs/expensereport/index.php +++ b/htdocs/expensereport/index.php @@ -25,8 +25,8 @@ */ require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php'; -dol_include_once("/expensereport/class/expensereport.class.php"); +require_once DOL_DOCUMENT_ROOT . '/compta/tva/class/tva.class.php'; +require_once DOL_DOCUMENT_ROOT . '/expensereport/class/expensereport.class.php'; $langs->load("companies"); $langs->load("users"); diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index 76a72836e17..44f1426fd36 100755 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -25,8 +25,8 @@ */ require "../main.inc.php"; -dol_include_once("/expensereport/class/expensereport.class.php"); -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT . '/expensereport/class/expensereport.class.php'; +require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php'; $langs->load("companies"); $langs->load("users"); diff --git a/htdocs/expensereport/synchro_compta.php b/htdocs/expensereport/synchro_compta.php index a436f92e682..ec2703d059a 100755 --- a/htdocs/expensereport/synchro_compta.php +++ b/htdocs/expensereport/synchro_compta.php @@ -16,8 +16,8 @@ */ require '../main.inc.php'; -require_once(DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'); -dol_include_once("/expensereport/class/expensereport.class.php"); +require_once DOL_DOCUMENT_ROOT . '/compta/bank/class/account.class.php'; +require_once DOL_DOCUMENT_ROOT . '/expensereport/class/expensereport.class.php'; $langs->load("companies"); $langs->load("users"); From 26b1f6902548a7b86c66283bb863695718ba3d7c Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 7 Mar 2015 15:47:08 +0100 Subject: [PATCH 195/429] Add traduction on type label --- .../class/expensereport.class.php | 33 +++++++++++++++++++ htdocs/expensereport/index.php | 3 +- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index e1ddbc6198b..c14c7ff2be7 100755 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -1420,6 +1420,39 @@ class ExpenseReport extends CommonObject return $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref); } + + /** + * List of types + * + * @param int $active Active or not + * @return array + */ + function listOfTypes($active=1) + { + global $langs; + $ret=array(); + $sql = "SELECT id, code, label"; + $sql.= " FROM ".MAIN_DB_PREFIX."c_type_fees"; + $sql.= " WHERE active = ".$active; + dol_syslog(get_class($this)."::listOfTypes", LOG_DEBUG); + $result = $this->db->query($sql); + if ( $result ) + { + $num = $this->db->num_rows($result); + $i=0; + while ($i < $num) + { + $obj = $this->db->fetch_object($result); + $ret[$obj->code]=(($langs->trans($obj->code)!=$obj->code)?$langs->trans($obj->code):$obj->label); + $i++; + } + } + else + { + dol_print_error($this->db); + } + return $ret; + } } diff --git a/htdocs/expensereport/index.php b/htdocs/expensereport/index.php index b90e6416192..ec9ccba2c0b 100644 --- a/htdocs/expensereport/index.php +++ b/htdocs/expensereport/index.php @@ -111,8 +111,7 @@ print '
'.$langs->trans("Statistics").'
'.$langs->trans("Warehouse").''.$langs->trans("Comment").''.$langs->trans("Status").''.$langs->trans("Status").'
'; print ''.img_object($langs->trans("ShowProduct"),'product').' '.$objp->ref.''; @@ -588,8 +627,22 @@ if ($id > 0 || ! empty($ref)) //print $supplierorderdispatch->status; print $supplierorderdispatch->getLibStatut(5); print ''; + $disabled=''; + if ($commande->statut == 5) $disabled=1; + if (empty($objp->status)) + { + print 'dispatchlineid.'">'.$langs->trans("Check").''; + } + else + { + print 'dispatchlineid.'">'.$langs->trans("Uncheck").''; + } + print '
'; diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index be75e3a96a3..3d83901194b 100755 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index be893d52569..551807aad59 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -159,6 +159,7 @@ Search=Search SearchOf=Search Valid=Valid Approve=Approve +Disapprove=Disapprove ReOpen=Re-Open Upload=Send file ToLink=Link @@ -524,6 +525,7 @@ DateFromTo=From %s to %s DateFrom=From %s DateUntil=Until %s Check=Check +Uncheck=Uncheck Internal=Internal External=External Internals=Internal diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index 4f6e0b0dfb2..ea3659b90de 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Canceled StatusOrderDraft=Draft (needs to be validated) StatusOrderValidated=Validated StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Processed StatusOrderToBill=Delivered StatusOrderToBill2=To bill diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index ccf54a6f9b5..206b1df019e 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -361,6 +361,15 @@ fieldset { border: 1px solid #AAAAAA !important; box-shadow: 2px 2px 3px #DDD; } -moz-box-shadow: none; cursor: auto; } +.buttonRefused { + pointer-events: none; + cursor: default; + opacity: 0.4; + filter: alpha(opacity=40); /* For IE8 and earlier */ + box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; +} form { padding:0px; margin:0px; From 3e4845635962e323eb9d61ff53e54b1875dee8fc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 8 Mar 2015 02:13:47 +0100 Subject: [PATCH 198/429] Fix when no price defined, we must how nothing instead of 0 --- htdocs/fourn/product/list.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/fourn/product/list.php b/htdocs/fourn/product/list.php index afaf4c8e796..33e1ea46dd9 100644 --- a/htdocs/fourn/product/list.php +++ b/htdocs/fourn/product/list.php @@ -125,7 +125,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) $result = $db->query($sql); $nbtotalofrecords = $db->num_rows($result); } -$sql .= " ORDER BY ".$sortfield." ".$sortorder; +$sql .= $db->order($sortfield,$sortorder); $sql .= $db->plimit($limit + 1, $offset); dol_syslog("fourn/product/list.php:", LOG_DEBUG); @@ -225,11 +225,11 @@ if ($resql) if ($companystatic->id > 0) print $companystatic->getNomUrl(1,'supplier'); print ''.price($objp->price).''.(isset($objp->price) ? price($objp->price) : '').''.$objp->qty.''.price($objp->unitprice).''.(isset($objp->unitprice) ? price($objp->unitprice) : '').'
'.$langs->trans("None").'
'.$langs->trans("None").'
'; print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; @@ -239,9 +239,9 @@ if (! empty($conf->expensereport->enabled) && $user->rights->expensereport->lire print ''; print ''; print ''; - print ''; + print ''; print ''; - //print ''; + print ''; print ''; $var=!$var; $i++; diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index 345d983b2f6..02d899def0a 100755 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -109,7 +109,7 @@ if ($action == 'add' && $user->rights->expensereport->creer) $object->date_debut = $date_start; $object->date_fin = $date_end; - $object->fk_c_expensereport_statuts = 1; + $object->fk_statut = 1; $object->fk_c_paiement = GETPOST('fk_c_paiement','int'); $object->fk_user_validator = GETPOST('fk_user_validator','int'); $object->note_public = GETPOST('note_public'); @@ -151,7 +151,7 @@ if ($action == 'update' && $user->rights->expensereport->creer) $object->date_debut = $date_start; $object->date_fin = $date_end; - if($object->fk_c_expensereport_statuts < 3) + if($object->fk_statut < 3) { $object->fk_user_validator = GETPOST('fk_user_validator','int'); } @@ -1197,7 +1197,7 @@ else $head = expensereport_prepare_head($object); - if ($action == 'edit' && ($object->fk_c_expensereport_statuts < 3 || $object->fk_c_expensereport_statuts==99)) + if ($action == 'edit' && ($object->fk_statut < 3 || $object->fk_statut==99)) { print "\n"; print ''; @@ -1205,7 +1205,7 @@ else dol_fiche_head($head, 'card', $langs->trans("TripCard"), 0, 'trip'); - if($object->fk_c_expensereport_statuts==99) + if($object->fk_statut==99) { print ''; } @@ -1246,7 +1246,7 @@ else print ''; } - if($object->fk_c_expensereport_statuts<3) + if($object->fk_statut<3) { print ''; print ''; // Approbator @@ -1275,7 +1275,7 @@ else $userfee->fetch($object->fk_user_author); print $userfee->getNomUrl(1); print ''; - if ($object->fk_c_expensereport_statuts==6) + if ($object->fk_statut==6) { print ''; print ''; @@ -1437,7 +1437,7 @@ else print ''; print ''; print ''; - if($object->fk_c_expensereport_statuts==6) + if($object->fk_statut==6) { print ''; print ''; @@ -1452,7 +1452,7 @@ else print ''; } - if($object->fk_c_expensereport_statuts<3) // informed + if($object->fk_statut<3) // informed { print ''; print ''; @@ -1465,7 +1465,7 @@ else } print ''; } - elseif($object->fk_c_expensereport_statuts==4) + elseif($object->fk_statut==4) { print ''; print ''; @@ -1504,7 +1504,7 @@ else print ''; } - if($object->fk_c_expensereport_statuts==99 || !empty($object->detail_refuse)) + if($object->fk_statut==99 || !empty($object->detail_refuse)) { print ''; print ''; @@ -1566,7 +1566,7 @@ else print ''; } // Ajout des boutons de modification/suppression - if ($object->fk_c_expensereport_statuts < 2 || $object->fk_c_expensereport_statuts==99) + if ($object->fk_statut < 2 || $object->fk_statut==99) { print ''; } @@ -1609,7 +1609,7 @@ else } // Ajout des boutons de modification/suppression - if($object->fk_c_expensereport_statuts<2 OR $object->fk_c_expensereport_statuts==99) + if($object->fk_statut<2 OR $object->fk_statut==99) { print ''; print ''; print ''; - print ''; - print ''; + print ''; + print ''; print ''; print ''; - // Sélection date + // Select date print ''; - // Sélection projet + // Select project print ''; - // Sélection type + // Select type print ''; @@ -1732,7 +1732,7 @@ else print ''; print ''; - // Sélection TVA + // Select VAT print ''; - // Quantité + // Quantity print ''; diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 5d82aa1be4e..864c169c11c 100755 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -335,7 +335,7 @@ class ExpenseReport extends CommonObject if ($this->fk_user_validator > 0) $user_approver->fetch($this->fk_user_validator); $this->user_validator_infos = dolGetFirstLastname($user_approver->firstname, $user_approver->lastname); - $this->fk_statut = $obj->status; + $this->fk_statut = $obj->status; $this->status = $obj->status; $this->fk_c_paiement = $obj->fk_c_paiement; diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index f48a0111a46..6d82b86e4af 100755 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -21,12 +21,13 @@ /** * \file htdocs/expensereport/index.php - * \brief Page liste des expensereports + * \brief list of expense reports */ require "../main.inc.php"; require_once DOL_DOCUMENT_ROOT . '/expensereport/class/expensereport.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php'; $langs->load("companies"); $langs->load("users"); @@ -39,7 +40,7 @@ $result = restrictedArea($user, 'expensereport','',''); $search_ref = GETPOST('search_ref'); $search_user = GETPOST('search_user','int'); -$search_state = GETPOST('search_state','int'); +$search_status = GETPOST('search_status','int'); $month_start = GETPOST("month_start","int"); $year_start = GETPOST("year_start","int"); $month_end = GETPOST("month_end","int"); @@ -49,7 +50,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both { $search_ref=""; $search_user=""; - $search_state=""; + $search_status=""; $month_start=""; $year_start=""; $month_end=""; @@ -69,13 +70,12 @@ llxHeader('', $langs->trans("ListOfTrips")); $max_year = 5; $min_year = 5; -$sortorder = $_GET["sortorder"]; -$sortfield = $_GET["sortfield"]; -$page = $_GET["page"]; +$sortorder = GETPOST("sortorder"); +$sortfield = GETPOST("sortfield"); +$page = GETPOST("page"); if (!$sortorder) $sortorder="DESC"; if (!$sortfield) $sortfield="d.date_debut"; - if ($page == -1) { $page = 0 ; } @@ -91,73 +91,47 @@ $sql.= " u.rowid as id_user, u.firstname, u.lastname"; $sql.= " FROM ".MAIN_DB_PREFIX."expensereport as d"; $sql.= " INNER JOIN ".MAIN_DB_PREFIX."user as u ON d.fk_user_author = u.rowid"; - - -// WHERE +// Where if(!empty($search_ref)){ $sql.= " WHERE d.ref LIKE '%".$db->escape($search_ref)."%'"; }else{ $sql.= " WHERE 1 = 1"; } -// DATE START -if ($month_start > 0) { - if ($year_start > 0) { - if($month_end > 0) { - if($year_end > 0) { - $sql.= " AND date_format(d.date_debut, '%Y-%m') >= '$year_start-$month_start'"; - $sql.= " AND date_format(d.date_fin, '%Y-%m') <= '$year_end-$month_end'"; - } else { - $sql.= " AND date_format(d.date_debut, '%Y-%m') >= '$year_start-$month_start'"; - $sql.= " AND date_format(d.date_fin, '%m') <= '$month_end'"; - } - } else { - if($year_end > 0) { - $sql.= " AND date_format(d.date_debut, '%Y-%m') >= '$year_start-$month_start'"; - $sql.= " AND date_format(d.date_fin, '%Y') <= '$year_end'"; - } else { - $sql.= " AND date_format(d.date_debut, '%Y-%m') >= '$year_start-$month_start'"; - } - } - } else { - $sql.= " AND date_format(d.date_debut, '%m') >= '$month_start'"; - } -} else { - if ($year_start > 0) { - if($month_end > 0) { - if($year_end > 0) { - $sql.= " AND date_format(d.date_debut, '%Y') >= '$year_start'"; - $sql.= " AND date_format(d.date_fin, '%Y-%m') <= '$year_end-$month_end'"; - } else { - $sql.= " AND date_format(d.date_debut, '%Y') >= '$year_start'"; - $sql.= " AND date_format(d.date_fin, '%m') <= '$month_end'"; - } - } else { - if($year_end > 0) { - $sql.= " AND date_format(d.date_debut, '%Y') >= '$year_start'"; - $sql.= " AND date_format(d.date_fin, '%Y') <= '$year_end'"; - } else { - $sql.= " AND date_format(d.date_debut, '%Y') >= '$year_start'"; - } - } - } else { - if($month_end > 0) { - if($year_end > 0) { - $sql.= " AND date_format(d.date_debut, '%Y') >= '$year_start'"; - $sql.= " AND date_format(d.date_fin, '%Y-%m') <= '$year_end-$month_end'"; - } else { - $sql.= " AND date_format(d.date_debut, '%Y') >= '$year_start'"; - $sql.= " AND date_format(d.date_fin, '%m') <= '$month_end'"; - } - } else { - if($year_end > 0) { - $sql.= " AND date_format(d.date_debut, '%Y') >= '$year_start'"; - $sql.= " AND date_format(d.date_fin, '%Y') <= '$year_end'"; - } - } - } +// Date Start +if ($month_start > 0) +{ + if ($year_start > 0 && empty($day)) + $sql.= " AND d.date_debut BETWEEN '".$db->idate(dol_get_first_day($year_start,$month_start,false))."' AND '".$db->idate(dol_get_last_day($year_start,$month_start,false))."'"; + else if ($year_start > 0 && ! empty($day)) + $sql.= " AND d.date_debut BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month_start, $day, $year_start))."' AND '".$db->idate(dol_mktime(23, 59, 59, $month_start, $day, $year_start))."'"; + else + $sql.= " AND date_format(d.date_debut, '%m') = '".$month_start."'"; } -if (!empty($search_user) && $search_user > 0) $sql.= " AND d.fk_user_author = '".$search_user."'"; -if($search_state != '') $sql.= " AND d.fk_statut = '$search_state'\n"; +else if ($year_start > 0) +{ + $sql.= " AND d.date_debut BETWEEN '".$db->idate(dol_get_first_day($year_start,1,false))."' AND '".$db->idate(dol_get_last_day($year_start,12,false))."'"; +} +// Date Start +if ($month_end > 0) +{ + if ($year_end > 0 && empty($day)) + $sql.= " AND d.date_fin BETWEEN '".$db->idate(dol_get_first_day($year_end,$month_end,false))."' AND '".$db->idate(dol_get_last_day($year_end,$month_end,false))."'"; + else if ($year_end > 0 && ! empty($day)) + $sql.= " AND d.date_fin BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month_end, $day, $year_end))."' AND '".$db->idate(dol_mktime(23, 59, 59, $month_end, $day, $year_end))."'"; + else + $sql.= " AND date_format(d.date_fin, '%m') = '".$month_end."'"; +} +else if ($year_end > 0) +{ + $sql.= " AND d.date_fin BETWEEN '".$db->idate(dol_get_first_day($year_end,1,false))."' AND '".$db->idate(dol_get_last_day($year_end,12,false))."'"; +} +// User +if ($search_name) +{ + $sql .= natural_search('u.lastname', $search_name); +} +// Status +if($search_status != '') $sql.= " AND d.fk_statut = '".$search_status."'"; // RESTRICT RIGHTS if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous)) @@ -219,17 +193,13 @@ if ($resql) print ''; } - print ''; - print ''; - - print '"; + print ''; // Status print ''; print ''; print ''; print ''; - /*print ''; - print ''; - print ''; - */ print ''; print ''; print ''; @@ -281,11 +247,7 @@ if ($resql) print ''; print ''; - /* - print ''; - print ''; - print ''; - */ + print ''; print ''; print ''; From e6984bae9d260e33b856d05106420623340d11a8 Mon Sep 17 00:00:00 2001 From: delcroix Patrick Date: Sun, 8 Mar 2015 12:37:07 +0100 Subject: [PATCH 203/429] FIX: jdate returning -62169955200 on x64 machine on x64 machine jdate return -62169955200 instead of 0 when the input is 00-00-00 00:00:00 or equivalent same issue for mktime https://bugs.php.net/bug.php?id=53662 --- htdocs/core/db/DoliDB.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php index 67e3022d6e3..c689e49b85e 100644 --- a/htdocs/core/db/DoliDB.class.php +++ b/htdocs/core/db/DoliDB.class.php @@ -274,6 +274,8 @@ abstract class DoliDB implements Database */ function jdate($string, $gm=false) { + if($string==0 || $string=="0000-00-00 00:00:00") + return NULL; $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); From 9d320e4268132df3a3accadf196524699f649b3a Mon Sep 17 00:00:00 2001 From: "Estephe L." Date: Sun, 8 Mar 2015 23:29:09 +0100 Subject: [PATCH 204/429] Fix Anchor link for quick access when editing. This is a quick fix to make anchor link works well when editing a proposal, order or invoice ... --- htdocs/core/tpl/objectline_view.tpl.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index 948a61bae2c..c31d8da9277 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -27,7 +27,7 @@ global->MAIN_VIEW_LINE_NUMBER)) { ?> - '; } From 84695845bbd3c1e575efd958b07c9ea2de092829 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 Mar 2015 21:20:56 +0100 Subject: [PATCH 209/429] Some fixes into translation and permissions --- htdocs/admin/perms.php | 11 +- htdocs/commande/card.php | 6 +- .../modules/modAskPriceSupplier.class.php | 8 +- htdocs/core/modules/modCommande.class.php | 5 +- htdocs/core/modules/modFournisseur.class.php | 2 +- htdocs/langs/en_US/admin.lang | 2 + htdocs/user/perms.php | 354 +++++++++--------- 7 files changed, 197 insertions(+), 191 deletions(-) diff --git a/htdocs/admin/perms.php b/htdocs/admin/perms.php index 907ed389b38..3a7c47f3acf 100644 --- a/htdocs/admin/perms.php +++ b/htdocs/admin/perms.php @@ -67,7 +67,7 @@ llxHeader('',$langs->trans("DefaultRights")); print_fiche_titre($langs->trans("SecuritySetup"),'','setup'); print $langs->trans("DefaultRightsDesc"); -print " ".$langs->trans("OnlyActiveElementsAreShown")."
\n"; +print " ".$langs->trans("OnlyActiveElementsAreShown")."

\n"; $db->begin(); @@ -115,16 +115,15 @@ foreach ($modulesdir as $dir) $db->commit(); -// Show warning about external users -print info_admin(showModulesExludedForExternal($modules)).'
'."\n"; -print "
\n"; - - $head=security_prepare_head(); dol_fiche_head($head, 'default', $langs->trans("Security")); +// Show warning about external users +print info_admin(showModulesExludedForExternal($modules)).'
'."\n"; + + print '
'.$langs->trans("BoxTitleLastModifiedExpenses",min($max,$num)).''.$langs->trans("FeesAmount").''.$langs->trans("TotalTTC").''.$langs->trans("DateModificationShort").' 
'.$expensereportstatic->getNomUrl(1).''.$userstatic->getNomUrl(1).''.$obj->total_ttc.''.price($obj->total_ttc).''.dol_print_date($db->jdate($obj->dm),'day').''.$expensereportstatic->LibStatut($obj->fk_statut,3).''.$expensereportstatic->LibStatut($obj->status,3).'
'.$langs->trans("VALIDATOR").'
'.$langs->trans("AUTHORPAIEMENT").''.$langs->trans("DATE_SAVE").''.dol_print_date($object->date_create,'dayhour').'
'.$langs->trans("AUTHORPAIEMENT").'
'.$langs->trans("VALIDATOR").'
'.$langs->trans("CANCEL_USER").'
'.$langs->trans("REFUSEUR").''.$langs->trans('AmountTTC').''; print 'rowid.'#'.$objp->rowid.'">'; @@ -1689,7 +1689,7 @@ else //print ''; // Add a line - if (($object->fk_c_expensereport_statuts==0 || $object->fk_c_expensereport_statuts==99) && $action != 'editline') + if (($object->fk_statut==0 || $object->fk_statut==99) && $action != 'editline') { print_fiche_titre($langs->trans("AddLine"),'',''); @@ -1799,7 +1799,7 @@ if ($action != 'create' && $action != 'edit') * ET fk_user_author == user courant * Afficher : "Enregistrer" / "Modifier" / "Supprimer" */ - if ($user->rights->expensereport->creer && $object->fk_c_expensereport_statuts==0) + if ($user->rights->expensereport->creer && $object->fk_statut==0) { if ($object->fk_user_author == $user->id) { @@ -1825,7 +1825,7 @@ if ($action != 'create' && $action != 'edit') * ET fk_user_author == user courant * Afficher : "Enregistrer" / "Modifier" / "Supprimer" */ - if($user->rights->expensereport->creer && $object->fk_c_expensereport_statuts==99) + if($user->rights->expensereport->creer && $object->fk_statut==99) { if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid) { @@ -1845,7 +1845,7 @@ if ($action != 'create' && $action != 'edit') } } - if ($user->rights->expensereport->to_paid && $object->fk_c_expensereport_statuts==5) + if ($user->rights->expensereport->to_paid && $object->fk_statut==5) { if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid) { @@ -1859,7 +1859,7 @@ if ($action != 'create' && $action != 'edit') * ET fk_user_validator == user courant * Afficher : "Valider" / "Refuser" / "Supprimer" */ - if ($object->fk_c_expensereport_statuts == 2) + if ($object->fk_statut == 2) { if ($object->fk_user_author == $user->id) { @@ -1868,7 +1868,7 @@ if ($action != 'create' && $action != 'edit') } } - if ($user->rights->expensereport->approve && $object->fk_c_expensereport_statuts == 2) + if ($user->rights->expensereport->approve && $object->fk_statut == 2) { //if($object->fk_user_validator==$user->id) //{ @@ -1895,7 +1895,7 @@ if ($action != 'create' && $action != 'edit') * ET user à droit de "to_paid" * Afficher : "Annuler" / "Payer" / "Supprimer" */ - if ($user->rights->expensereport->to_paid && $object->fk_c_expensereport_statuts == 5) + if ($user->rights->expensereport->to_paid && $object->fk_statut == 5) { // Payer print ''.$langs->trans('TO_PAID').''; @@ -1918,7 +1918,7 @@ if ($action != 'create' && $action != 'edit') * ET user à droit "to_paid" * Afficher : "Annuler" */ - if ($user->rights->expensereport->approve && $user->rights->expensereport->to_paid && $object->fk_c_expensereport_statuts==6) + if ($user->rights->expensereport->approve && $user->rights->expensereport->to_paid && $object->fk_statut==6) { // Annuler print ''.$langs->trans('Cancel').''; @@ -1933,7 +1933,7 @@ if ($action != 'create' && $action != 'edit') * ET user à droit "supprimer" * Afficher : "Supprimer" */ - if ($user->rights->expensereport->supprimer && $object->fk_c_expensereport_statuts==4) + if ($user->rights->expensereport->supprimer && $object->fk_statut==4) { if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid) @@ -1959,7 +1959,7 @@ print '
'; /* * Documents generes */ -if($user->rights->expensereport->export && $object->fk_c_expensereport_statuts>0 && $action != 'edit') +if($user->rights->expensereport->export && $object->fk_statut>0 && $action != 'edit') { $filename = dol_sanitizeFileName($object->ref); $filedir = $conf->expensereport->dir_output . "/" . dol_sanitizeFileName($object->ref); diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index c14c7ff2be7..5d82aa1be4e 100755 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -43,7 +43,7 @@ class ExpenseReport extends CommonObject var $fk_user_validator; var $status; - var $fk_c_expensereport_statuts; // -- 1=draft, 2=validated (attente approb), 4=canceled, 5=approved, 6=payed, 99=denied + var $fk_statut; // -- 1=draft, 2=validated (attente approb), 4=canceled, 5=approved, 6=payed, 99=denied var $fk_c_paiement; var $user_author_infos; @@ -150,7 +150,7 @@ class ExpenseReport extends CommonObject $sql.= ",date_create"; $sql.= ",fk_user_author"; $sql.= ",fk_user_validator"; - $sql.= ",fk_c_expensereport_statuts"; + $sql.= ",fk_statut"; $sql.= ",fk_c_paiement"; $sql.= ",note_public"; $sql.= ",note_private"; @@ -164,7 +164,7 @@ class ExpenseReport extends CommonObject $sql.= ", '".$this->db->idate($now)."'"; $sql.= ", ".($user->id > 0 ? $user->id:"null"); $sql.= ", ".($this->fk_user_validator > 0 ? $this->fk_user_validator:"null"); - $sql.= ", ".($this->fk_c_expensereport_statuts > 1 ? $this->fk_c_expensereport_statuts:0); + $sql.= ", ".($this->fk_statut > 1 ? $this->fk_statut:0); $sql.= ", ".($this->fk_c_paiement > 0 ? $this->fk_c_paiement:"null"); $sql.= ", ".($this->note_public?"'".$this->db->escape($this->note_public)."'":"null"); $sql.= ", ".($this->note_private?"'".$this->db->escape($this->note_private)."'":"null"); @@ -248,7 +248,7 @@ class ExpenseReport extends CommonObject $sql.= " , fk_user_validator = ".($this->fk_user_validator > 0 ? $this->fk_user_validator:"null"); $sql.= " , fk_user_valid = ".($this->fk_user_valid > 0 ? $this->fk_user_valid:"null"); $sql.= " , fk_user_paid = ".($this->fk_user_paid > 0 ? $this->fk_user_paid:"null"); - $sql.= " , fk_c_expensereport_statuts = ".($this->fk_c_expensereport_statuts >= 0 ? $this->fk_c_expensereport_statuts:'0'); + $sql.= " , fk_statut = ".($this->fk_statut >= 0 ? $this->fk_statut:'0'); $sql.= " , fk_c_paiement = ".($this->fk_c_paiement > 0 ? $this->fk_c_paiement:"null"); $sql.= " , note_public = ".(!empty($this->note_public)?"'".$this->db->escape($this->note_public)."'":"''"); $sql.= " , note_private = ".(!empty($this->note_private)?"'".$this->db->escape($this->note_private)."'":"''"); @@ -284,7 +284,7 @@ class ExpenseReport extends CommonObject $sql.= " d.date_refuse, d.date_cancel,"; // ACTIONS $sql.= " d.total_ht, d.total_ttc, d.total_tva,"; // TOTAUX (int) $sql.= " d.date_debut, d.date_fin, d.date_create, d.date_valid, d.date_approve, d.date_paiement,"; // DATES (datetime) - $sql.= " d.fk_user_author, d.fk_user_validator, d.fk_c_expensereport_statuts as status, d.fk_c_paiement,"; + $sql.= " d.fk_user_author, d.fk_user_validator, d.fk_statut as status, d.fk_c_paiement,"; $sql.= " d.fk_user_valid, d.fk_user_approve, d.fk_user_paid,"; $sql.= " dp.libelle as libelle_paiement, dp.code as code_paiement"; // INNER JOIN paiement $sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." as d LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as dp ON d.fk_c_paiement = dp.id"; @@ -335,18 +335,18 @@ class ExpenseReport extends CommonObject if ($this->fk_user_validator > 0) $user_approver->fetch($this->fk_user_validator); $this->user_validator_infos = dolGetFirstLastname($user_approver->firstname, $user_approver->lastname); - $this->fk_c_expensereport_statuts = $obj->status; + $this->fk_statut = $obj->status; $this->status = $obj->status; $this->fk_c_paiement = $obj->fk_c_paiement; - if ($this->fk_c_expensereport_statuts==5 || $this->fk_c_expensereport_statuts==6) + if ($this->fk_statut==5 || $this->fk_statut==6) { $user_valid = new User($this->db); if ($this->fk_user_valid > 0) $user_valid->fetch($this->fk_user_valid); $this->user_valid_infos = dolGetFirstLastname($user_valid->firstname, $user_valid->lastname); } - if ($this->fk_c_expensereport_statuts==6) + if ($this->fk_statut==6) { $user_paid = new User($this->db); if ($this->fk_user_paid > 0) $user_paid->fetch($this->fk_user_paid); @@ -514,7 +514,7 @@ class ExpenseReport extends CommonObject $this->date_approve = $now; $this->status = 5; - $this->fk_c_expensereport_statuts = 5; + $this->fk_statut = 5; $this->fk_user_author = $user->id; $this->fk_user_valid = $user->id; @@ -584,7 +584,7 @@ class ExpenseReport extends CommonObject $objp = $db->fetch_object($result); - $sql2 = "SELECT d.rowid, d.fk_user_author, d.ref, d.fk_c_expensereport_statuts"; + $sql2 = "SELECT d.rowid, d.fk_user_author, d.ref, d.fk_statut"; $sql2.= " FROM ".MAIN_DB_PREFIX."expensereport as d"; $sql2.= " WHERE d.rowid = '".$objp->fk_expensereport."'"; @@ -593,7 +593,7 @@ class ExpenseReport extends CommonObject $objp->fk_user_author = $obj->fk_user_author; $objp->ref = $obj->ref; - $objp->fk_c_expensereport_status = $obj->fk_c_expensereport_statuts; + $objp->fk_c_expensereport_status = $obj->fk_statut; $objp->rowid = $obj->rowid; $total_HT = $total_HT + $objp->total_ht; @@ -848,10 +848,10 @@ class ExpenseReport extends CommonObject $this->ref = strtoupper($user->login).$expld_car.$prefix.$this->ref.$expld_car.dol_print_date($this->date_debut,'%y%m%d'); } - if ($this->fk_c_expensereport_statuts != 2) + if ($this->fk_statut != 2) { $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql.= " SET ref = '".$this->ref."', fk_c_expensereport_statuts = 2, fk_user_valid = ".$user->id.","; + $sql.= " SET ref = '".$this->ref."', fk_statut = 2, fk_user_valid = ".$user->id.","; $sql.= " ref_number_int = ".$ref_number_int; $sql.= ' WHERE rowid = '.$this->id; @@ -894,10 +894,10 @@ class ExpenseReport extends CommonObject $this->date_debut = $this->db->jdate($objp->date_debut); - if ($this->fk_c_expensereport_statuts != 2) + if ($this->fk_statut != 2) { $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql.= " SET fk_c_expensereport_statuts = 2"; + $sql.= " SET fk_statut = 2"; $sql.= ' WHERE rowid = '.$this->id; dol_syslog(get_class($this)."::set_save_from_refuse sql=".$sql, LOG_DEBUG); @@ -930,10 +930,10 @@ class ExpenseReport extends CommonObject // date approval $this->date_approve = $this->db->idate($now); - if ($this->fk_c_expensereport_statuts != 5) + if ($this->fk_statut != 5) { $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql.= " SET ref = '".$this->ref."', fk_c_expensereport_statuts = 5, fk_user_approve = ".$user->id.","; + $sql.= " SET ref = '".$this->ref."', fk_statut = 5, fk_user_approve = ".$user->id.","; $sql.= " date_approve='".$this->date_approve."'"; $sql.= ' WHERE rowid = '.$this->id; if ($this->db->query($sql)) @@ -963,17 +963,17 @@ class ExpenseReport extends CommonObject $now = dol_now(); // date de refus - if ($this->fk_c_expensereport_statuts != 99) + if ($this->fk_statut != 99) { $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql.= " SET ref = '".$this->ref."', fk_c_expensereport_statuts = 99, fk_user_refuse = ".$user->id.","; + $sql.= " SET ref = '".$this->ref."', fk_statut = 99, fk_user_refuse = ".$user->id.","; $sql.= " date_refuse='".$this->db->idate($now)."',"; $sql.= " detail_refuse='".$this->db->escape($details)."'"; $sql.= " fk_user_approve=NULL,"; $sql.= ' WHERE rowid = '.$this->id; if ($this->db->query($sql)) { - $this->fk_c_expensereport_statuts = 99; + $this->fk_statut = 99; $this->fk_user_refuse = $user->id; $this->detail_refuse = $details; $this->date_refuse = $now; @@ -1002,10 +1002,10 @@ class ExpenseReport extends CommonObject $now= dol_now(); $this->date_paiement = $this->db->idate($now); - if ($this->fk_c_expensereport_statuts != 6) + if ($this->fk_statut != 6) { $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql.= " SET fk_c_expensereport_statuts = 6, fk_user_paid = ".$user->id.","; + $sql.= " SET fk_statut = 6, fk_user_paid = ".$user->id.","; $sql.= " date_paiement='".$this->db->idate($this->date_paiement)."'"; $sql.= ' WHERE rowid = '.$this->id; @@ -1037,7 +1037,7 @@ class ExpenseReport extends CommonObject if ($this->fk_c_deplacement_statuts != 5) { $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql.= " SET fk_c_expensereport_statuts = 5"; + $sql.= " SET fk_statut = 5"; $sql.= ' WHERE rowid = '.$this->id; dol_syslog(get_class($this)."::set_unpaid sql=".$sql, LOG_DEBUG); @@ -1065,10 +1065,10 @@ class ExpenseReport extends CommonObject function set_cancel($user,$detail) { $this->date_cancel = $this->db->idate(gmmktime()); - if ($this->fk_c_expensereport_statuts != 4) + if ($this->fk_statut != 4) { $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql.= " SET fk_c_expensereport_statuts = 4, fk_user_cancel = ".$user->id; + $sql.= " SET fk_statut = 4, fk_user_cancel = ".$user->id; $sql.= ", date_cancel='".$this->date_cancel."'"; $sql.= " ,detail_cancel='".$this->db->escape($detail)."'"; $sql.= ' WHERE rowid = '.$this->id; @@ -1197,7 +1197,7 @@ class ExpenseReport extends CommonObject function updateline($rowid, $type_fees_id, $projet_id, $c_tva, $comments, $qty, $value_unit, $date, $expensereport_id) { - if ($this->fk_c_expensereport_statuts==0 || $this->fk_c_expensereport_statuts==99) + if ($this->fk_statut==0 || $this->fk_statut==99) { $this->db->begin(); @@ -1693,7 +1693,7 @@ class ExpenseReportLine * @param int $useempty 1=Add empty line * @return string HTML select with sattus */ -function select_expensereport_statut($selected='',$htmlname='fk_c_expensereport_statuts',$useempty=1) +function select_expensereport_statut($selected='',$htmlname='fk_statut',$useempty=1) { global $db; diff --git a/htdocs/expensereport/class/expensereportstats.class.php b/htdocs/expensereport/class/expensereportstats.class.php index 5d71be15738..140e492972e 100644 --- a/htdocs/expensereport/class/expensereportstats.class.php +++ b/htdocs/expensereport/class/expensereportstats.class.php @@ -59,7 +59,7 @@ class ExpenseReportStats extends Stats $this->from = MAIN_DB_PREFIX.$object->table_element; $this->field='total_ht'; - $this->where = " fk_c_expensereport_statuts > 0 and date_valid > '2000-01-01'"; + $this->where = " fk_statut > 0 and date_valid > '2000-01-01'"; //$this->where.= " AND entity = ".$conf->entity; if ($this->socid) { diff --git a/htdocs/expensereport/index.php b/htdocs/expensereport/index.php index ec9ccba2c0b..62f5cbe89fc 100644 --- a/htdocs/expensereport/index.php +++ b/htdocs/expensereport/index.php @@ -142,7 +142,7 @@ $max=10; $langs->load("boxes"); -$sql = "SELECT u.rowid as uid, u.lastname, u.firstname, d.rowid, d.date_debut as dated, d.date_fin as datef, d.date_create as dm, d.total_ht, d.total_ttc, d.fk_c_expensereport_statuts as fk_status"; +$sql = "SELECT u.rowid as uid, u.lastname, u.firstname, d.rowid, d.date_debut as dated, d.date_fin as datef, d.date_create as dm, d.total_ht, d.total_ttc, d.fk_statut as fk_status"; $sql.= " FROM ".MAIN_DB_PREFIX."expensereport as d, ".MAIN_DB_PREFIX."user as u"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE u.rowid = d.fk_user_author"; @@ -186,8 +186,8 @@ if ($result) print '
'.$expensereportstatic->getNomUrl(1).''.$userstatic->getNomUrl(1).''.$obj->total_ht.''.$obj->total_ttc.''.price($obj->total_ht).''.price($obj->total_ttc).''.dol_print_date($db->jdate($obj->dm),'day').''; //print $obj->libelle; diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index 44f1426fd36..f48a0111a46 100755 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -85,7 +85,7 @@ $offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -$sql = "SELECT d.rowid, d.ref, d.total_ht, d.total_tva, d.total_ttc, d.fk_c_expensereport_statuts as status,"; +$sql = "SELECT d.rowid, d.ref, d.total_ht, d.total_tva, d.total_ttc, d.fk_statut as status,"; $sql.= " d.date_debut, d.date_fin,"; $sql.= " u.rowid as id_user, u.firstname, u.lastname"; $sql.= " FROM ".MAIN_DB_PREFIX."expensereport as d"; @@ -157,7 +157,7 @@ if ($month_start > 0) { } } if (!empty($search_user) && $search_user > 0) $sql.= " AND d.fk_user_author = '".$search_user."'"; -if($search_state != '') $sql.= " AND d.fk_c_expensereport_statuts = '$search_state'\n"; +if($search_state != '') $sql.= " AND d.fk_statut = '$search_state'\n"; // RESTRICT RIGHTS if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous)) diff --git a/htdocs/expensereport/synchro_compta.php b/htdocs/expensereport/synchro_compta.php index ec2703d059a..58fcbaee301 100755 --- a/htdocs/expensereport/synchro_compta.php +++ b/htdocs/expensereport/synchro_compta.php @@ -136,11 +136,11 @@ else: print ' '; print ""; - $sql = "SELECT d.fk_bank_account, d.ref, d.rowid, d.date_valid, d.fk_user_author, d.total_ttc, d.integration_compta, d.fk_c_expensereport_statuts"; + $sql = "SELECT d.fk_bank_account, d.ref, d.rowid, d.date_valid, d.fk_user_author, d.total_ttc, d.integration_compta, d.fk_statut"; $sql.= " ,CONCAT(u.firstname,' ',u.lastname) as declarant_NDF"; $sql.= " FROM ".MAIN_DB_PREFIX."expensereport as d"; $sql.= " INNER JOIN ".MAIN_DB_PREFIX."user as u ON d.fk_user_author = u.rowid"; - $sql.= " WHERE d.fk_c_expensereport_statuts = 6"; + $sql.= " WHERE d.fk_statut = 6"; $sql.= " ORDER BY d.date_valid DESC"; $resql=$db->query($sql); diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index 2a36ef78737..aa0b0571bbb 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -157,7 +157,7 @@ CREATE TABLE llx_expensereport ( fk_user_refuse integer DEFAULT NULL, fk_user_cancel integer DEFAULT NULL, fk_user_paid integer DEFAULT NULL, - fk_c_expensereport_statuts integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé + fk_statut integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé fk_c_paiement integer DEFAULT NULL, note_public text, note_private text, diff --git a/htdocs/install/mysql/tables/llx_expensereport.sql b/htdocs/install/mysql/tables/llx_expensereport.sql index e60be7251a5..657d8f9e278 100755 --- a/htdocs/install/mysql/tables/llx_expensereport.sql +++ b/htdocs/install/mysql/tables/llx_expensereport.sql @@ -44,7 +44,7 @@ CREATE TABLE llx_expensereport ( fk_user_refuse integer DEFAULT NULL, fk_user_cancel integer DEFAULT NULL, fk_user_paid integer DEFAULT NULL, - fk_c_expensereport_statuts integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé + fk_statut integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé fk_c_paiement integer DEFAULT NULL, note_public text, note_private text, From 69dc3cdd6153cd6ccccdc5419c28af79096a9cd5 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 8 Mar 2015 08:21:49 +0100 Subject: [PATCH 202/429] Correct fk_statut & work en list --- htdocs/core/class/commonobject.class.php | 2 +- .../doc/pdf_standard.modules.php | 8 +- .../core/modules/modExpenseReport.class.php | 2 +- htdocs/expensereport/card.php | 10 +- .../class/expensereport.class.php | 2 +- htdocs/expensereport/list.php | 128 ++++++------------ 6 files changed, 57 insertions(+), 95 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 02ccd13b97c..114648fdf14 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2140,7 +2140,7 @@ abstract class CommonObject $fieldstatus="fk_statut"; if ($elementTable == 'user') $fieldstatus="statut"; - if ($elementTable == 'expensereport') $fieldstatus="fk_c_expensereport_statuts"; + if ($elementTable == 'expensereport') $fieldstatus="fk_statut"; if ($elementTable == 'commande_fournisseur_dispatch') $fieldstatus="status"; $sql = "UPDATE ".MAIN_DB_PREFIX.$elementTable; diff --git a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php index bdb19778c87..d2cdb71e429 100755 --- a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php @@ -508,7 +508,7 @@ class pdf_standard extends ModeleExpenseReport */ // Filligrane brouillon - if ($object->fk_c_expensereport_statuts==1 && ! empty($conf->global->EXPENSEREPORT_FREE_TEXT)) + if ($object->fk_statut==1 && ! empty($conf->global->EXPENSEREPORT_FREE_TEXT)) { pdf_watermark($pdf,$outputlangs,$this->page_hauteur,$this->page_largeur,'mm',$conf->global->EXPENSEREPORT_FREE_TEXT); } @@ -640,7 +640,7 @@ class pdf_standard extends ModeleExpenseReport $pdf->MultiCell(96,4,$outputlangs->transnoentities("DateCreation")." : ".dol_print_date($object->date_create,"day",false,$outpulangs),0,'L'); } - if ($object->fk_c_expensereport_statuts==99) + if ($object->fk_statut==99) { if ($object->fk_user_refuse > 0) { @@ -656,7 +656,7 @@ class pdf_standard extends ModeleExpenseReport $pdf->MultiCell(96,4,$outputlangs->transnoentities("DATE_REFUS")." : ".dol_print_date($object->date_refuse,"day",false,$outpulangs),0,'L'); } } - else if($object->fk_c_expensereport_statuts==4) + else if($object->fk_statut==4) { if ($object->fk_user_cancel > 0) { @@ -686,7 +686,7 @@ class pdf_standard extends ModeleExpenseReport } } - if($object->fk_c_expensereport_statuts==6) + if($object->fk_statut==6) { if ($object->fk_user_paid > 0) { diff --git a/htdocs/core/modules/modExpenseReport.class.php b/htdocs/core/modules/modExpenseReport.class.php index cf106fa4588..53289c512ff 100755 --- a/htdocs/core/modules/modExpenseReport.class.php +++ b/htdocs/core/modules/modExpenseReport.class.php @@ -270,7 +270,7 @@ class modExpenseReport extends DolibarrModules 'titre'=>'ListToApprove', 'mainmenu'=>'hrm', 'leftmenu'=>'expensereport_detaillist_approve', - 'url'=>'/expensereport/list.php?search_state=2', + 'url'=>'/expensereport/list.php?search_status=2', 'langs'=>'trips', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. 'position'=>100, 'enabled'=>'$conf->expensereport->enabled', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index 02d899def0a..c71705628b6 100755 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -1712,17 +1712,17 @@ else print '
'; $form->select_date($date?$date:-1,'date'); print ''; $formproject->select_projects(-1, GETPOST('fk_projet'), 'fk_projet', 0, 0, 1, 1); print ''; select_type_fees_id(GETPOST('fk_c_type_fees'),'fk_c_type_fees',1); print ''; $defaultvat=-1; if (! empty($conf->global->EXPENSEREPORT_NO_DEFAULT_VAT)) $conf->global->MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS = 'none'; @@ -1747,7 +1747,7 @@ else print ''; print ''; print ''; print '   '; - print " '; - select_expensereport_statut($search_state,'search_state'); + select_expensereport_statut($search_status,'search_status'); print ''; @@ -257,10 +227,6 @@ if ($resql) print ''.($objp->date_debut > 0 ? dol_print_date($objp->date_debut, 'day') : '').''.($objp->date_fin > 0 ? dol_print_date($objp->date_fin, 'day') : '').''.img_object($langs->trans("ShowUser"),"user").' '.dolGetFirstLastname($objp->firstname, $objp->lastname).''.price($objp->total_tva, '', $langs, 0, 'MT', 0, $conf->currency).''.price($objp->total_ht, '', $langs, 0, 'MT', 0, $conf->currency).''.price($objp->total_ttc, '', $langs, 0, 'MT', 0, $conf->currency).''.price($objp->total_ht).''.price($objp->total_tva).''.price($objp->total_ttc).'
'.$langs->trans("Total").''.price($total_total_tva, '', $langs, 0, 'MT', 0, $conf->currency).''.price($total_total_ht, '', $langs, 0, 'MT', 0, $conf->currency).''.price($total_total_ttc, '', $langs, 0, 'MT', 0, $conf->currency).''.$total_total_ht.''.$total_total_tva.''.$total_total_ttc.'
+
info_bits & 2) == 2) { ?> info_bits & 2) == 2) { ?> - id.'#'.$line->id; ?>"> + id.'#line_'.$line->id; ?>"> From f8dfa618595106bdc7b3a0bb0b185ee99735896b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= Date: Mon, 9 Mar 2015 16:20:51 +0100 Subject: [PATCH 205/429] FIXED #1901: Inverted supplier order/invoice buttons in project referring objects --- htdocs/projet/element.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index f0e5efa7254..5a499007fae 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -360,11 +360,11 @@ foreach ($listofreferent as $key => $value) { if ($key == 'order_supplier' && ! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->commande->creer) { - print ''.$langs->trans("AddSupplierInvoice").''; + print ''.$langs->trans("AddSupplierOrder").''; } if ($key == 'invoice_supplier' && ! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->creer) { - print ''.$langs->trans("AddSupplierOrder").''; + print ''.$langs->trans("AddSupplierInvoice").''; } } } From bd6f13e6ed2349c701dccc2c983509fa493c7119 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 Mar 2015 19:13:19 +0100 Subject: [PATCH 206/429] Can export extra fields of lines. --- .../modules/modAskPriceSupplier.class.php | 1 - htdocs/core/modules/modFournisseur.class.php | 92 ++++++++++++++++--- 2 files changed, 81 insertions(+), 12 deletions(-) diff --git a/htdocs/core/modules/modAskPriceSupplier.class.php b/htdocs/core/modules/modAskPriceSupplier.class.php index f64126e224e..d415d615756 100644 --- a/htdocs/core/modules/modAskPriceSupplier.class.php +++ b/htdocs/core/modules/modAskPriceSupplier.class.php @@ -110,7 +110,6 @@ class modAskPriceSupplier extends DolibarrModules $this->rights[$r][3] = 1; // La permission est-elle une permission par defaut $this->rights[$r][4] = 'creer'; - $r++; $this->rights[$r][0] = $this->numero + $r; // id de la permission $this->rights[$r][1] = 'Validate supplier proposals'; // libelle de la permission diff --git a/htdocs/core/modules/modFournisseur.class.php b/htdocs/core/modules/modFournisseur.class.php index 45cb61b04fd..9e26b0e8b81 100644 --- a/htdocs/core/modules/modFournisseur.class.php +++ b/htdocs/core/modules/modFournisseur.class.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2013 Laurent Destailleur + * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2012 Juanjo Menent * Copyright (C) 2013 Philippe Grand @@ -251,11 +251,11 @@ class modFournisseur extends DolibarrModules $this->export_icon[$r]='bill'; $this->export_permission[$r]=array(array("fournisseur","facture","export")); $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.ref'=>"InvoiceRef",'f.ref_supplier'=>"RefSupplier",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.total_ht'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.total_tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_public'=>"InvoiceNote",'fd.rowid'=>'LineId','fd.description'=>"LineDescription",'fd.tva_tx'=>"LineVATRate",'fd.qty'=>"LineQty",'fd.remise_percent'=>"Discount",'fd.total_ht'=>"LineTotalHT",'fd.total_ttc'=>"LineTotalTTC",'fd.tva'=>"LineTotalVAT",'fd.product_type'=>'TypeOfLineServiceOrProduct','fd.fk_product'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel','p.accountancy_code_buy'=>'ProductAccountancyBuyCode'); - //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:CompanyName",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Text",'fd.qty'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.tva'=>"Number",'fd.product_type'=>'Boolean','fd.fk_product'=>'List:Product:label','p.ref'=>'Text','p.label'=>'Text'); - $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Text",'fd.qty'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.tva'=>"Number",'fd.product_type'=>'Boolean','fd.fk_product'=>'List:Product:label','p.ref'=>'Text','p.label'=>'Text'); + //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:CompanyName",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Text",'fd.qty'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.tva'=>"Number",'fd.product_type'=>'Number','fd.fk_product'=>'List:Product:label','p.ref'=>'Text','p.label'=>'Text'); + $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Text",'fd.qty'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.tva'=>"Number",'fd.product_type'=>'Number','fd.fk_product'=>'List:Product:label','p.ref'=>'Text','p.label'=>'Text'); $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.ref'=>"invoice",'f.ref_supplier'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.total_ht'=>"invoice",'f.total_ttc'=>"invoice",'f.total_tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_public'=>"invoice",'fd.rowid'=>'invoice_line','fd.description'=>"invoice_line",'fd.tva_tx'=>"invoice_line",'fd.qty'=>"invoice_line",'fd.remise_percent'=>"invoice_line",'fd.total_ht'=>"invoice_line",'fd.total_ttc'=>"invoice_line",'fd.tva'=>"invoice_line",'fd.product_type'=>'invoice_line','fd.fk_product'=>'product','p.ref'=>'product','p.label'=>'product','p.accountancy_code_buy'=>'product'); $this->export_dependencies_array[$r]=array('invoice_line'=>'fd.rowid','product'=>'fd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them - // Add extra fields + // Add extra fields object $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture_fourn'"; $resql=$this->db->query($sql); if ($resql) // This can fail when class is used on old database (during migration for example) @@ -288,13 +288,48 @@ class modFournisseur extends DolibarrModules $this->export_entities_array[$r][$fieldname]='invoice'; } } - // End add axtra fields - $this->export_sql_start[$r]='SELECT DISTINCT '; + // End add extra fields + // Add extra fields line + $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture_fourn_det'"; + $resql=$this->db->query($sql); + if ($resql) // This can fail when class is used on old database (during migration for example) + { + while ($obj=$this->db->fetch_object($resql)) + { + $fieldname='extraline.'.$obj->name; + $fieldlabel=ucfirst($obj->label); + $typeFilter="Text"; + switch($obj->type) + { + case 'int': + case 'double': + case 'price': + $typeFilter="Numeric"; + break; + case 'date': + case 'datetime': + $typeFilter="Date"; + break; + case 'boolean': + $typeFilter="Boolean"; + break; + case 'sellist': + $typeFilter="List:".$obj->param; + break; + } + $this->export_fields_array[$r][$fieldname]=$fieldlabel; + $this->export_TypeFields_array[$r][$fieldname]=$typeFilter; + $this->export_entities_array[$r][$fieldname]='invoice_line'; + } + } + // End add extra fields line + $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid,'; $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'facture_fourn as f'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture_fourn_extrafields as extra ON f.rowid = extra.fk_object'; $this->export_sql_end[$r] .=' , '.MAIN_DB_PREFIX.'facture_fourn_det as fd'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture_fourn_det_extrafields as extraline ON fd.rowid = extraline.fk_object'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (fd.fk_product = p.rowid)'; $this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_facture_fourn'; $this->export_sql_end[$r] .=' AND f.entity IN ('.getEntity('supplier_invoice',1).')'; @@ -309,7 +344,7 @@ class modFournisseur extends DolibarrModules $this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'pf.amount'=>'Number','p.datep'=>'Date','p.num_paiement'=>'Number'); $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.ref'=>"invoice",'f.ref_supplier'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.total_ht'=>"invoice",'f.total_ttc'=>"invoice",'f.total_tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_public'=>"invoice",'p.rowid'=>'payment','pf.amount'=>'payment','p.datep'=>'payment','p.num_paiement'=>'payment'); $this->export_dependencies_array[$r]=array('payment'=>'p.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them - // Add extra fields + // Add extra fields object $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture_fourn'"; $resql=$this->db->query($sql); if ($resql) // This can fail when class is used on old database (during migration for example) @@ -342,7 +377,7 @@ class modFournisseur extends DolibarrModules $this->export_entities_array[$r][$fieldname]='invoice'; } } - // End add axtra fields + // End add extra fields object $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid,'; @@ -361,10 +396,10 @@ class modFournisseur extends DolibarrModules $this->export_icon[$r]='order'; $this->export_permission[$r]=array(array("fournisseur","commande","export")); $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','s.tva_intra'=>'VATIntra','f.rowid'=>"OrderId",'f.ref'=>"Ref",'f.ref_supplier'=>"RefSupplier",'f.date_creation'=>"DateCreation",'f.date_commande'=>"OrderDate",'f.total_ht'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.fk_statut'=>'Status','f.note_public'=>"NotePublic",'f.note_private'=>"NotePrivate",'fd.rowid'=>'LineId','fd.description'=>"LineDescription",'fd.tva_tx'=>"LineVATRate",'fd.qty'=>"LineQty",'fd.remise_percent'=>"Discount",'fd.total_ht'=>"LineTotalHT",'fd.total_ttc'=>"LineTotalTTC",'fd.total_tva'=>"LineTotalVAT",'fd.product_type'=>'TypeOfLineServiceOrProduct','fd.fk_product'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel'); - $this->export_TypeFields_array[$r]=array('s.rowid'=>"company",'s.nom'=>'Text','s.address'=>'Text','s.cp'=>'Text','s.ville'=>'Text','c.code'=>'Text','s.tel'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.idprof5'=>'Text','s.idprof6'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.date_creation'=>"Date",'f.date_commande'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.tva'=>"Number",'f.fk_statut'=>'Status','f.note_public'=>"Text",'f.note_private'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Number",'fd.qty'=>"Number",'fd.remise_percent'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.total_tva'=>"Number",'fd.product_type'=>'Boolean','fd.fk_product'=>'List:Product:label','p.ref'=>'Text','p.label'=>'Text'); + $this->export_TypeFields_array[$r]=array('s.rowid'=>"company",'s.nom'=>'Text','s.address'=>'Text','s.cp'=>'Text','s.ville'=>'Text','c.code'=>'Text','s.tel'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.idprof5'=>'Text','s.idprof6'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.date_creation'=>"Date",'f.date_commande'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.tva'=>"Number",'f.fk_statut'=>'Status','f.note_public'=>"Text",'f.note_private'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Number",'fd.qty'=>"Number",'fd.remise_percent'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.total_tva'=>"Number",'fd.product_type'=>'Number','fd.fk_product'=>'List:Product:label','p.ref'=>'Text','p.label'=>'Text'); $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company','f.rowid'=>"order",'f.ref'=>"order",'f.ref_supplier'=>"order",'f.date_creation'=>"order",'f.date_commande'=>"order",'f.total_ht'=>"order",'f.total_ttc'=>"order",'f.tva'=>"order",'f.fk_statut'=>'order','f.note_public'=>"order",'f.note_private'=>"order",'fd.rowid'=>'order_line','fd.description'=>"order_line",'fd.tva_tx'=>"order_line",'fd.qty'=>"order_line",'fd.remise_percent'=>"order_line",'fd.total_ht'=>"order_line",'fd.total_ttc'=>"order_line",'fd.total_tva'=>"order_line",'fd.product_type'=>'order_line','fd.fk_product'=>'product','p.ref'=>'product','p.label'=>'product'); $this->export_dependencies_array[$r]=array('order_line'=>'fd.rowid','product'=>'fd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them - // Add extra fields + // Add extra fields object $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'commande_fournisseur'"; $resql=$this->db->query($sql); if ($resql) // This can fail when class is used on old database (during migration for example) @@ -397,13 +432,48 @@ class modFournisseur extends DolibarrModules $this->export_entities_array[$r][$fieldname]='order'; } } - // End add axtra fields + // End add extra fields object + // Add extra fields line + $sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'commande_fournisseurdet'"; + $resql=$this->db->query($sql); + if ($resql) // This can fail when class is used on old database (during migration for example) + { + while ($obj=$this->db->fetch_object($resql)) + { + $fieldname='extraline.'.$obj->name; + $fieldlabel=ucfirst($obj->label); + $typeFilter="Text"; + switch($obj->type) + { + case 'int': + case 'double': + case 'price': + $typeFilter="Numeric"; + break; + case 'date': + case 'datetime': + $typeFilter="Date"; + break; + case 'boolean': + $typeFilter="Boolean"; + break; + case 'sellist': + $typeFilter="List:".$obj->param; + break; + } + $this->export_fields_array[$r][$fieldname]=$fieldlabel; + $this->export_TypeFields_array[$r][$fieldname]=$typeFilter; + $this->export_entities_array[$r][$fieldname]='order_line'; + } + } + // End add extra fields line $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid,'; $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'commande_fournisseur as f'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'commande_fournisseur_extrafields as extra ON f.rowid = extra.fk_object,'; $this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'commande_fournisseurdet as fd'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'commande_fournisseurdet_extrafields as extraline ON fd.rowid = extraline.fk_object'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product as p on (fd.fk_product = p.rowid)'; $this->export_sql_end[$r] .=' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_commande'; $this->export_sql_end[$r] .=' AND f.entity IN ('.getEntity('supplier_order',1).')'; From bd81dec1a3b6a7e33359e85222201d80f70fa502 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 Mar 2015 19:28:38 +0100 Subject: [PATCH 207/429] Fix missing translation --- htdocs/core/modules/modContrat.class.php | 6 ++++-- htdocs/langs/en_US/contracts.lang | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/modContrat.class.php b/htdocs/core/modules/modContrat.class.php index dc97964fa45..27299e0f291 100644 --- a/htdocs/core/modules/modContrat.class.php +++ b/htdocs/core/modules/modContrat.class.php @@ -41,7 +41,7 @@ class modContrat extends DolibarrModules */ function __construct($db) { - global $conf; + global $conf, $langs; $this->db = $db; $this->numero = 54; @@ -118,10 +118,12 @@ class modContrat extends DolibarrModules // Exports //-------- + $langs->load("contracts"); + $r=1; $this->export_code[$r]=$this->rights_class.'_'.$r; - $this->export_label[$r]='ContractAndServices'; // Translation key (used only if key ExportDataset_xxx_z not found) + $this->export_label[$r]=$langs->trans('ContractsAndLine'); // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_icon[$r]='contract'; $this->export_permission[$r]=array(array("contrat","export")); $this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode', diff --git a/htdocs/langs/en_US/contracts.lang b/htdocs/langs/en_US/contracts.lang index 57ba3bb15d8..d1be0e6513f 100644 --- a/htdocs/langs/en_US/contracts.lang +++ b/htdocs/langs/en_US/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expired ServiceStatusClosed=Closed ServicesLegend=Services legend Contracts=Contracts +ContractsAndLine=Contracts and line of contracts Contract=Contract NoContracts=No contracts MenuServices=Services From 88a29b7c9cffe98e92a6b756d557759e3122f88d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 Mar 2015 20:26:56 +0100 Subject: [PATCH 208/429] Add an advance permission to check/uncheck reception --- htdocs/core/modules/modFournisseur.class.php | 8 +++++ htdocs/fourn/commande/dispatch.php | 38 +++++++++++++++----- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/htdocs/core/modules/modFournisseur.class.php b/htdocs/core/modules/modFournisseur.class.php index 9e26b0e8b81..84e6385694d 100644 --- a/htdocs/core/modules/modFournisseur.class.php +++ b/htdocs/core/modules/modFournisseur.class.php @@ -177,6 +177,14 @@ class modFournisseur extends DolibarrModules $this->rights[$r][4] = 'commande'; $this->rights[$r][5] = 'receptionner'; + $r++; + $this->rights[$r][0] = 1189; + $this->rights[$r][1] = 'Check/Uncheck a supplier order reception'; + $this->rights[$r][2] = 'd'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'commande_advance'; + $this->rights[$r][5] = 'check'; + $r++; $this->rights[$r][0] = 1188; $this->rights[$r][1] = 'Supprimer une commande fournisseur'; diff --git a/htdocs/fourn/commande/dispatch.php b/htdocs/fourn/commande/dispatch.php index 2610111023a..f2dd3518868 100644 --- a/htdocs/fourn/commande/dispatch.php +++ b/htdocs/fourn/commande/dispatch.php @@ -67,7 +67,10 @@ $mesg=''; * Actions */ -if ($action == 'checkdispatchline') +if ($action == 'checkdispatchline' && + ! ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->fournisseur->commande->receptionner)) + || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->fournisseur->commande_advance->check))) +) { $supplierorderdispatch = new CommandeFournisseurDispatch($db); $result=$supplierorderdispatch->fetch($lineid); @@ -81,7 +84,10 @@ if ($action == 'checkdispatchline') } } -if ($action == 'uncheckdispatchline') +if ($action == 'uncheckdispatchline' && + ! ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->fournisseur->commande->receptionner)) + || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->fournisseur->commande_advance->check))) +) { $supplierorderdispatch = new CommandeFournisseurDispatch($db); $result=$supplierorderdispatch->fetch($lineid); @@ -630,15 +636,31 @@ if ($id > 0 || ! empty($ref)) // Add button to check/uncheck disaptching print '
'; - $disabled=''; - if ($commande->statut == 5) $disabled=1; - if (empty($objp->status)) + if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->fournisseur->commande->receptionner)) + || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->fournisseur->commande_advance->check)) + ) { - print 'dispatchlineid.'">'.$langs->trans("Check").''; + if (empty($objp->status)) + { + print ''.$langs->trans("Check").''; + } + else + { + print ''.$langs->trans("Uncheck").''; + } } - else + else { - print 'dispatchlineid.'">'.$langs->trans("Uncheck").''; + $disabled=''; + if ($commande->statut == 5) $disabled=1; + if (empty($objp->status)) + { + print 'dispatchlineid.'">'.$langs->trans("Check").''; + } + else + { + print 'dispatchlineid.'">'.$langs->trans("Uncheck").''; + } } print '
'; // Affiche lignes des permissions diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 5f6c085831f..bef752f5954 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -2243,7 +2243,11 @@ if ($action == 'create' && $user->rights->commande->creer) } // Cancel order - if ($object->statut == 1 && $user->rights->commande->annuler) { + if ($object->statut == 1 && + ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->cloturer)) + || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->order_advance->annuler))) + ) + { print ''; } diff --git a/htdocs/core/modules/modAskPriceSupplier.class.php b/htdocs/core/modules/modAskPriceSupplier.class.php index d415d615756..4614b0b819d 100644 --- a/htdocs/core/modules/modAskPriceSupplier.class.php +++ b/htdocs/core/modules/modAskPriceSupplier.class.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2010 Laurent Destailleur + * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2004 Sebastien Di Cintio * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2005-2012 Regis Houssin @@ -21,11 +21,11 @@ */ /** - * \defgroup askpricesupplier Module de demandes de prix fournisseurs - * \brief Module pour gerer la tenue des demandes fournisseurs + * \defgroup askpricesupplier Module to request supplier price proposals + * \brief Module to request supplier price proposals * \file htdocs/core/modules/modAskPriceSupplier.class.php * \ingroup askpricesupplier - * \brief Fichier de description et activation du module AskPriceSupplier + * \brief File to describe and activate module AskPriceSupplier */ include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; diff --git a/htdocs/core/modules/modCommande.class.php b/htdocs/core/modules/modCommande.class.php index c7fb5cfa587..53584e419eb 100644 --- a/htdocs/core/modules/modCommande.class.php +++ b/htdocs/core/modules/modCommande.class.php @@ -151,8 +151,9 @@ class modCommande extends DolibarrModules $this->rights[$r][1] = 'Annuler les commandes clients'; $this->rights[$r][2] = 'd'; $this->rights[$r][3] = 0; - $this->rights[$r][4] = 'annuler'; - + $this->rights[$r][4] = 'order_advance'; + $this->rights[$r][5] = 'annuler'; + $r++; $this->rights[$r][0] = 89; $this->rights[$r][1] = 'Supprimer les commandes clients'; diff --git a/htdocs/core/modules/modFournisseur.class.php b/htdocs/core/modules/modFournisseur.class.php index 84e6385694d..98986a045da 100644 --- a/htdocs/core/modules/modFournisseur.class.php +++ b/htdocs/core/modules/modFournisseur.class.php @@ -180,7 +180,7 @@ class modFournisseur extends DolibarrModules $r++; $this->rights[$r][0] = 1189; $this->rights[$r][1] = 'Check/Uncheck a supplier order reception'; - $this->rights[$r][2] = 'd'; + $this->rights[$r][2] = 'w'; $this->rights[$r][3] = 0; $this->rights[$r][4] = 'commande_advance'; $this->rights[$r][5] = 'check'; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index e701db32106..b8590a1fc38 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -500,6 +500,8 @@ Module700Name=Donations Module700Desc=Donation management Module770Name=Expense Report Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1400Name=Accounting diff --git a/htdocs/user/perms.php b/htdocs/user/perms.php index b63b3e65ffc..a01b5ffa7ab 100644 --- a/htdocs/user/perms.php +++ b/htdocs/user/perms.php @@ -1,24 +1,24 @@ * Copyright (C) 2002-2003 Jean-Louis Bergamo - * Copyright (C) 2004-2012 Laurent Destailleur - * Copyright (C) 2004 Eric Seigne - * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2012 Juanjo Menent - * - * 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 . - */ +* Copyright (C) 2004-2012 Laurent Destailleur +* Copyright (C) 2004 Eric Seigne +* Copyright (C) 2005-2012 Regis Houssin +* Copyright (C) 2012 Juanjo Menent +* +* 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/user/perms.php @@ -74,10 +74,10 @@ if ($user->id <> $id && ! $canreaduser) accessforbidden(); if ($action == 'addrights' && $caneditperms) { - $edituser = new User($db); + $edituser = new User($db); $edituser->fetch($id); - //$edituser->addrights($rights, $module, '', $entity); // TODO unused for the moment - $edituser->addrights($rights, $module); + //$edituser->addrights($rights, $module, '', $entity); // TODO unused for the moment + $edituser->addrights($rights, $module); // Si on a touche a ses propres droits, on recharge if ($id == $user->id) @@ -90,10 +90,10 @@ if ($action == 'addrights' && $caneditperms) if ($action == 'delrights' && $caneditperms) { - $edituser = new User($db); + $edituser = new User($db); $edituser->fetch($id); - //$edituser->delrights($rights, $module, '', $entity); // TODO unused for the moment - $edituser->delrights($rights, $module); + //$edituser->delrights($rights, $module, '', $entity); // TODO unused for the moment + $edituser->delrights($rights, $module); // Si on a touche a ses propres droits, on recharge if ($id == $user->id) @@ -133,39 +133,39 @@ $modulesdir = dolGetModulesDirs(); foreach($modulesdir as $dir) { $handle=@opendir(dol_osencode($dir)); - if (is_resource($handle)) - { - while (($file = readdir($handle))!==false) - { - if (is_readable($dir.$file) && substr($file, 0, 3) == 'mod' && substr($file, dol_strlen($file) - 10) == '.class.php') - { - $modName = substr($file, 0, dol_strlen($file) - 10); + if (is_resource($handle)) + { + while (($file = readdir($handle))!==false) + { + if (is_readable($dir.$file) && substr($file, 0, 3) == 'mod' && substr($file, dol_strlen($file) - 10) == '.class.php') + { + $modName = substr($file, 0, dol_strlen($file) - 10); - if ($modName) - { - include_once $dir.$file; - $objMod = new $modName($db); + if ($modName) + { + include_once $dir.$file; + $objMod = new $modName($db); - // Load all lang files of module - if (isset($objMod->langfiles) && is_array($objMod->langfiles)) - { - foreach($objMod->langfiles as $domain) - { - $langs->load($domain); - } - } - // Load all permissions - if ($objMod->rights_class) - { - $forceEntity=((! empty($conf->multicompany->enabled) && ! empty($fuser->entity)) ? $fuser->entity : null); - $ret=$objMod->insert_permissions(0, $forceEntity); - $modules[$objMod->rights_class]=$objMod; - //print "modules[".$objMod->rights_class."]=$objMod;"; - } - } - } - } - } + // Load all lang files of module + if (isset($objMod->langfiles) && is_array($objMod->langfiles)) + { + foreach($objMod->langfiles as $domain) + { + $langs->load($domain); + } + } + // Load all permissions + if ($objMod->rights_class) + { + $forceEntity=((! empty($conf->multicompany->enabled) && ! empty($fuser->entity)) ? $fuser->entity : null); + $ret=$objMod->insert_permissions(0, $forceEntity); + $modules[$objMod->rights_class]=$objMod; + //print "modules[".$objMod->rights_class."]=$objMod;"; + } + } + } + } + } } $db->commit(); @@ -195,19 +195,19 @@ dol_syslog("get user perms", LOG_DEBUG); $result=$db->query($sql); if ($result) { - $num = $db->num_rows($result); - $i = 0; - while ($i < $num) - { - $obj = $db->fetch_object($result); - array_push($permsuser,$obj->id); - $i++; - } - $db->free($result); + $num = $db->num_rows($result); + $i = 0; + while ($i < $num) + { + $obj = $db->fetch_object($result); + array_push($permsuser,$obj->id); + $i++; + } + $db->free($result); } else { - dol_print_error($db); + dol_print_error($db); } // Lecture des droits groupes @@ -231,27 +231,27 @@ dol_syslog("get user perms", LOG_DEBUG); $result=$db->query($sql); if ($result) { - $num = $db->num_rows($result); - $i = 0; - while ($i < $num) - { - $obj = $db->fetch_object($result); - if (! isset($permsgroupbyentity[$obj->entity])) - $permsgroupbyentity[$obj->entity] = array(); - array_push($permsgroupbyentity[$obj->entity], $obj->id); - $i++; - } - $db->free($result); + $num = $db->num_rows($result); + $i = 0; + while ($i < $num) + { + $obj = $db->fetch_object($result); + if (! isset($permsgroupbyentity[$obj->entity])) + $permsgroupbyentity[$obj->entity] = array(); + array_push($permsgroupbyentity[$obj->entity], $obj->id); + $i++; + } + $db->free($result); } else { - dol_print_error($db); + dol_print_error($db); } /* * Ecran ajout/suppression permission - */ +*/ print '
'; @@ -274,9 +274,9 @@ print ''."\n"; print '

'; -if ($user->admin) print info_admin($langs->trans("WarningOnlyPermissionOfActivatedModules"), 0, 1).'
'; +if ($user->admin) print info_admin($langs->trans("WarningOnlyPermissionOfActivatedModules")); // Show warning about external users -if (empty($user->societe_id)) print info_admin(showModulesExludedForExternal($modules)).'

'."\n"; +if (empty($user->societe_id)) print info_admin(showModulesExludedForExternal($modules))."\n"; // For multicompany transversal mode // TODO Place a hook here @@ -310,115 +310,115 @@ $sql.= " ORDER BY r.module, r.id"; $result=$db->query($sql); if ($result) { - $num = $db->num_rows($result); - $i = 0; - $var = True; - $oldmod=''; + $num = $db->num_rows($result); + $i = 0; + $var = True; + $oldmod=''; - while ($i < $num) - { - $obj = $db->fetch_object($result); + while ($i < $num) + { + $obj = $db->fetch_object($result); - // Si la ligne correspond a un module qui n'existe plus (absent de includes/module), on l'ignore - if (empty($modules[$obj->module])) - { - $i++; - continue; - } + // Si la ligne correspond a un module qui n'existe plus (absent de includes/module), on l'ignore + if (empty($modules[$obj->module])) + { + $i++; + continue; + } - if (isset($obj->module) && ($oldmod <> $obj->module)) - { - $oldmod = $obj->module; - $var = !$var; + if (isset($obj->module) && ($oldmod <> $obj->module)) + { + $oldmod = $obj->module; + $var = !$var; - // Rupture detectee, on recupere objMod - $objMod=$modules[$obj->module]; - $picto=($objMod->picto?$objMod->picto:'generic'); + // Rupture detectee, on recupere objMod + $objMod=$modules[$obj->module]; + $picto=($objMod->picto?$objMod->picto:'generic'); - if ($caneditperms && (empty($objMod->rights_admin_allowed) || empty($fuser->admin))) - { - // On affiche ligne pour modifier droits - print '
'.img_object('',$picto).' '.$objMod->getName(); - print ' '; - print ''.$langs->trans("All").""; - print '/'; - print ''.$langs->trans("None").""; - print ' 
'.img_object('',$picto).' '.$objMod->getName(); + print ' '; + print ''.$langs->trans("All").""; + print '/'; + print ''.$langs->trans("None").""; + print ' 
'.img_object('',$picto).' '.$objMod->getName().''.img_object('',$picto).' '.$objMod->getName().''.img_picto($langs->trans("Administrator"),'star').''; - print img_picto($langs->trans("Active"),'tick'); - print ''.img_edit_remove($langs->trans("Remove")).''; - print img_picto($langs->trans("Active"),'tick'); - print ''.img_picto($langs->trans("Administrator"),'star').''; + print img_picto($langs->trans("Active"),'tick'); + print ''.img_edit_remove($langs->trans("Remove")).''; + print img_picto($langs->trans("Active"),'tick'); + print ''; - print $form->textwithtooltip($langs->trans("Inherited"),$langs->trans("PermissionInheritedFromAGroup")); - print ''; - print img_picto($langs->trans("Active"),'tick'); - print ''.img_edit_add($langs->trans("Add")).' '.img_edit_add($langs->trans("Add")).' '; + print $form->textwithtooltip($langs->trans("Inherited"),$langs->trans("PermissionInheritedFromAGroup")); + print ''; + print img_picto($langs->trans("Active"),'tick'); + print ''.img_edit_add($langs->trans("Add")).' '.img_edit_add($langs->trans("Add")).' '.$perm_libelle. ''.$perm_libelle. '
'; From 94acbeaa221f8233250ca216a97bf9c824615b16 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 9 Mar 2015 21:40:24 +0100 Subject: [PATCH 210/429] Prepare perms on extrafields --- htdocs/core/class/extrafields.class.php | 37 +++++++++++++------ .../install/mysql/migration/3.7.0-3.8.0.sql | 2 + .../install/mysql/tables/llx_extrafields.sql | 1 + 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index f1ad5d6687f..e7cc87efef5 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -48,11 +48,13 @@ class ExtraFields var $attribute_required; // Array to store parameters of attribute (used in select type) var $attribute_param; - // Int to store position of attribute + // Array to store position of attribute var $attribute_pos; - // Int to store if attribute is editable regardless of the document status + // Array to store if attribute is editable regardless of the document status var $attribute_alwayseditable; - + // Array to store permission to check + var $attribute_perms; + var $error; var $errno; @@ -90,6 +92,7 @@ class ExtraFields $this->attribute_elementtype = array(); $this->attribute_unique = array(); $this->attribute_required = array(); + $this->attribute_perms = array(); } /** @@ -106,9 +109,10 @@ class ExtraFields * @param string $default_value Defaulted value * @param array $param Params for field * @param int $alwayseditable Is attribute always editable regardless of the document status + * @param string $perms Permission to check * @return int <=0 if KO, >0 if OK */ - function addExtraField($attrname, $label, $type, $pos, $size, $elementtype, $unique=0, $required=0, $default_value='', $param=0, $alwayseditable=0) + function addExtraField($attrname, $label, $type, $pos, $size, $elementtype, $unique=0, $required=0, $default_value='', $param=0, $alwayseditable=0, $perms='') { if (empty($attrname)) return -1; if (empty($label)) return -1; @@ -124,7 +128,7 @@ class ExtraFields if ($result > 0 || $err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' || $type == 'separate') { // Add declaration of field into table - $result2=$this->create_label($attrname,$label,$type,$pos,$size,$elementtype, $unique, $required, $param, $alwayseditable); + $result2=$this->create_label($attrname,$label,$type,$pos,$size,$elementtype, $unique, $required, $param, $alwayseditable, $perms); $err2=$this->errno; if ($result2 > 0 || ($err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' && $err2 == 'DB_ERROR_RECORD_ALREADY_EXISTS')) { @@ -225,9 +229,10 @@ class ExtraFields * @param int $required Is field required or not * @param array||string $param Params for field (ex for select list : array('options' => array(value'=>'label of option')) ) * @param int $alwayseditable Is attribute always editable regardless of the document status + * @param string $perms Permission to check * @return int <=0 if KO, >0 if OK */ - private function create_label($attrname, $label='', $type='', $pos=0, $size=0, $elementtype='member', $unique=0, $required=0, $param='', $alwayseditable=0) + private function create_label($attrname, $label='', $type='', $pos=0, $size=0, $elementtype='member', $unique=0, $required=0, $param='', $alwayseditable=0, $perms='') { global $conf; @@ -251,7 +256,7 @@ class ExtraFields $params=''; } - $sql = "INSERT INTO ".MAIN_DB_PREFIX."extrafields(name, label, type, pos, size, entity, elementtype, fieldunique, fieldrequired, param, alwayseditable)"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."extrafields(name, label, type, pos, size, entity, elementtype, fieldunique, fieldrequired, param, alwayseditable, perms)"; $sql.= " VALUES('".$attrname."',"; $sql.= " '".$this->db->escape($label)."',"; $sql.= " '".$type."',"; @@ -263,6 +268,7 @@ class ExtraFields $sql.= " '".$required."',"; $sql.= " '".$params."',"; $sql.= " '".$alwayseditable."'"; + $sql.= " ".($perms?"'".$this->db->escape($perms)."'":"null"); $sql.=')'; dol_syslog(get_class($this)."::create_label", LOG_DEBUG); @@ -363,9 +369,10 @@ class ExtraFields * @param int $pos Position of attribute * @param array $param Params for field (ex for select list : array('options' => array(value'=>'label of option')) ) * @param int $alwayseditable Is attribute always editable regardless of the document status + * @param string $perms Permission to check * @return int >0 if OK, <=0 if KO */ - function update($attrname,$label,$type,$length,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0) + function update($attrname,$label,$type,$length,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0, $perms='') { if ($elementtype == 'thirdparty') $elementtype='societe'; @@ -402,7 +409,7 @@ class ExtraFields { if ($label) { - $result=$this->update_label($attrname,$label,$type,$length,$elementtype,$unique,$required,$pos,$param,$alwayseditable); + $result=$this->update_label($attrname,$label,$type,$length,$elementtype,$unique,$required,$pos,$param,$alwayseditable,$perms); } if ($result > 0) { @@ -451,12 +458,13 @@ class ExtraFields * @param int $pos Position of attribute * @param array $param Params for field (ex for select list : array('options' => array(value'=>'label of option')) ) * @param int $alwayseditable Is attribute always editable regardless of the document status + * @param string $perms Permission to check * @return int <=0 if KO, >0 if OK */ - private function update_label($attrname,$label,$type,$size,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0) + private function update_label($attrname,$label,$type,$size,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0,$perms='') { global $conf; - dol_syslog(get_class($this)."::update_label ".$attrname.", ".$label.", ".$type.", ".$size.", ".$elementtype.", ".$unique.", ".$required); + dol_syslog(get_class($this)."::update_label ".$attrname.", ".$label.", ".$type.", ".$size.", ".$elementtype.", ".$unique.", ".$required.", ".$pos.", ".$alwayseditable.", ".$perms); if ($elementtype == 'thirdparty') $elementtype='societe'; @@ -485,6 +493,7 @@ class ExtraFields $sql.= " elementtype,"; $sql.= " fieldunique,"; $sql.= " fieldrequired,"; + $sql.= " perms,"; $sql.= " pos,"; $sql.= " alwayseditable,"; $sql.= " param"; @@ -497,6 +506,7 @@ class ExtraFields $sql.= " '".$elementtype."',"; $sql.= " '".$unique."',"; $sql.= " '".$required."',"; + $sql.= " ".($perms?"'".$this->db->escape($perms)."'":"null"); $sql.= " '".$pos."',"; $sql.= " '".$alwayseditable."',"; $sql.= " '".$param."'"; @@ -542,7 +552,7 @@ class ExtraFields // For avoid conflicts with external modules if (!$forceload && !empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) return $array_name_label; - $sql = "SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired,param,pos,alwayseditable"; + $sql = "SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired,param,pos,alwayseditable,perms"; $sql.= " FROM ".MAIN_DB_PREFIX."extrafields"; $sql.= " WHERE entity IN (0,".$conf->entity.")"; if ($elementtype) $sql.= " AND elementtype = '".$elementtype."'"; @@ -571,6 +581,7 @@ class ExtraFields $this->attribute_param[$tab->name]=unserialize($tab->param); $this->attribute_pos[$tab->name]=$tab->pos; $this->attribute_alwayseditable[$tab->name]=$tab->alwayseditable; + $this->attribute_perms[$tab->name]=$tab->perms; } } } @@ -603,6 +614,7 @@ class ExtraFields $unique=$this->attribute_unique[$key]; $required=$this->attribute_required[$key]; $param=$this->attribute_param[$key]; + $perms=$this->attribute_perms[$key]; if ($type == 'date') { $showsize=10; @@ -1040,6 +1052,7 @@ class ExtraFields $unique=$this->attribute_unique[$key]; $required=$this->attribute_required[$key]; $params=$this->attribute_param[$key]; + $perms=$this->attribute_perms[$key]; if ($type == 'date') { $showsize=10; diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index 2a36ef78737..22890a149ce 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -19,6 +19,8 @@ -- -- VMYSQL4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup); +ALTER TABLE llx_extrafields ADD COLUMN perms varchar(255) after fieldrequired; + UPDATE llx_projet_task_time SET task_datehour = task_date where task_datehour IS NULL; ALTER TABLE llx_projet_task_time ADD COLUMN task_date_withhour integer DEFAULT 0 after task_datehour; diff --git a/htdocs/install/mysql/tables/llx_extrafields.sql b/htdocs/install/mysql/tables/llx_extrafields.sql index f91d21fedb1..11271125508 100644 --- a/htdocs/install/mysql/tables/llx_extrafields.sql +++ b/htdocs/install/mysql/tables/llx_extrafields.sql @@ -29,6 +29,7 @@ create table llx_extrafields size varchar(8) DEFAULT NULL, fieldunique integer DEFAULT 0, fieldrequired integer DEFAULT 0, + perms varchar(255), pos integer DEFAULT 0, alwayseditable integer DEFAULT 0, param text From 90abe5cdf97afcc9124fc02019e8eac75eb2e546 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Mar 2015 09:29:24 +0100 Subject: [PATCH 211/429] NEW: Add current salary on list of payment --- htdocs/compta/salaries/index.php | 22 ++++++++++++++++------ htdocs/langs/en_US/salaries.lang | 1 + 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/htdocs/compta/salaries/index.php b/htdocs/compta/salaries/index.php index 678b3bfaa2e..79d139255c2 100644 --- a/htdocs/compta/salaries/index.php +++ b/htdocs/compta/salaries/index.php @@ -1,5 +1,6 @@ +/* Copyright (C) 2011-2014 Alexandre Spangaro + * Copyright (C) 2015 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 @@ -82,7 +83,7 @@ $form = new Form($db); $salstatic = new PaymentSalary($db); $userstatic = new User($db); -$sql = "SELECT u.rowid as uid, u.lastname, u.firstname, s.rowid, s.fk_user, s.amount, s.label, s.datev as dm, s.fk_typepayment as type, s.num_payment,"; +$sql = "SELECT u.rowid as uid, u.lastname, u.firstname, u.salary, s.rowid, s.fk_user, s.amount, s.label, s.datev as dm, s.fk_typepayment as type, s.num_payment,"; $sql.= " pst.code as payment_code"; $sql.= " FROM ".MAIN_DB_PREFIX."payment_salary as s"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as pst ON s.fk_typepayment = pst.id,"; @@ -93,7 +94,7 @@ $sql.= " AND s.entity = ".$conf->entity; // Search criteria if ($search_ref) $sql.=" AND s.rowid=".$search_ref; if ($search_label) $sql.=" AND s.label LIKE '%".$db->escape($search_label)."%'"; -if ($search_amount) $sql.=" AND s.amount='".$db->escape(price2num(trim($search_amount)))."'"; +if ($search_amount) $sql.=natural_search("s.amount", $search_amount, 1); if ($filtre) { $filtre=str_replace(":","=",$filtre); $sql .= " AND ".$filtre; @@ -124,9 +125,10 @@ if ($result) print '
'; print ''; print '  ".$salstatic->getNomUrl(1)."".$salstatic->getNomUrl(1)."".$userstatic->getNomUrl(1)."".($obj->salary?price($obj->salary):'')."".dol_trunc($obj->label,40)."'.dol_print_date($db->jdate($obj->dm),'day')."
'.$langs->trans("Total").'
'.$langs->trans("Total").''.price($total,0,$outputlangs,1,-1,-1,$conf->currency)." 
".$obj->label."'.price($obj->amount)."'.($obj->salary?price($obj->salary):'')."'.$sal_static->getNomUrl(1)."'.dol_print_date($db->jdate($obj->dm),'day')."
'.$langs->trans("Total").''.price($total)."'."  '.price($total)."
RUM
'.$rib->iban.''.$rib->bic.''.$prelevement->buildRumNumber($soc->code_client, $rib->datec, $rib->id).''; if (!$rib->default_rib) { From 194260fc5b45128d851c74660a989edc4f08065c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Mar 2015 13:25:25 +0100 Subject: [PATCH 216/429] NEW: Add search box for supplier order search. --- htdocs/comm/index.php | 15 +++++++++++++++ htdocs/fourn/commande/list.php | 2 +- htdocs/langs/en_US/orders.lang | 1 + 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/htdocs/comm/index.php b/htdocs/comm/index.php index ea0494866a1..cb5a07c32d3 100644 --- a/htdocs/comm/index.php +++ b/htdocs/comm/index.php @@ -103,6 +103,21 @@ if (! empty($conf->commande->enabled) && $user->rights->commande->lire) print "

\n"; } +// Search supplier order +if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->commande->lire) +{ + $var=false; + print '
'; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "
'.$langs->trans("SearchASupplierOrder").'
'; + print ':
:

\n"; +} + // Search contract if (! empty($conf->contrat->enabled) && $user->rights->contrat->lire) { diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 7e525a9d080..386caad8134 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -140,7 +140,7 @@ if ($search_ttc != '') } if ($sall) { - $sql .= natural_search(array('cf.ref', 'cf.note_public', 'cf.note_private'), $sall); + $sql .= natural_search(array('cf.ref', 'cf.ref_supplier', 'cf.note_public', 'cf.note_private'), $sall); } if ($socid) $sql.= " AND s.rowid = ".$socid; diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index ea3659b90de..602bd1bda59 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -59,6 +59,7 @@ MenuOrdersToBill=Orders delivered MenuOrdersToBill2=Billable orders SearchOrder=Search order SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Ship product Discount=Discount CreateOrder=Create Order From 12be50d4baa4eaa6c693275e38436098fb021bb9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Mar 2015 13:50:05 +0100 Subject: [PATCH 217/429] Doxygen --- htdocs/core/lib/functions.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index d7fc398e082..601908bc412 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4952,7 +4952,7 @@ function dol_getmypid() * @param string $value The value to look for. * If param $numeric is 0, can contains several keywords separated with a space, like "keyword1 keyword2" = We want record field like keyword1 and field like keyword2 * If param $numeric is 1, can contains an operator <>= like "<10" or ">=100.5 < 1000" - * @param string $number 0=value is list of keywords, 1=value is a numeric test + * @param string $numeric 0=value is list of keywords, 1=value is a numeric test * @return string $res The statement to append to the SQL query */ function natural_search($fields, $value, $numeric=0) From 9a3e5d7fc593e985c453a5c58ec9c447b477665f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Mar 2015 13:58:26 +0100 Subject: [PATCH 218/429] Fix code unreachable --- .../core/modules/askpricesupplier/doc/pdf_aurore.modules.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/htdocs/core/modules/askpricesupplier/doc/pdf_aurore.modules.php b/htdocs/core/modules/askpricesupplier/doc/pdf_aurore.modules.php index 2c817314ecb..753c9ad9237 100644 --- a/htdocs/core/modules/askpricesupplier/doc/pdf_aurore.modules.php +++ b/htdocs/core/modules/askpricesupplier/doc/pdf_aurore.modules.php @@ -591,12 +591,9 @@ class pdf_aurore extends ModelePDFAskPriceSupplier } else { - $this->error=$langs->trans("ErrorConstantNotDefined","PROP_OUTPUTDIR"); + $this->error=$langs->trans("ErrorConstantNotDefined","ASKSUPPLIERPICE_OUTPUTDIR"); return 0; } - - $this->error=$langs->trans("ErrorUnknown"); - return 0; // Erreur par defaut } /** From b564b754fcfd67d97a27ec82cb91e95a3bb57358 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Mar 2015 14:09:29 +0100 Subject: [PATCH 219/429] Doxygen --- htdocs/core/db/DoliDB.class.php | 3 ++- htdocs/core/lib/functions.lib.php | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php index 67e3022d6e3..94f1568c5a2 100644 --- a/htdocs/core/db/DoliDB.class.php +++ b/htdocs/core/db/DoliDB.class.php @@ -1,6 +1,7 @@ + * Copyright (C) 2014-2015 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 @@ -270,7 +271,7 @@ abstract class DoliDB implements Database * * @param string $string Date in a string (YYYYMMDDHHMMSS, YYYYMMDD, YYYY-MM-DD HH:MM:SS) * @param int $gm 1=Input informations are GMT values, otherwise local to server TZ - * @return timestamp|string Date TMS + * @return int|string Date TMS */ function jdate($string, $gm=false) { diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 601908bc412..63c0f6ce433 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1157,7 +1157,7 @@ function dol_getdate($timestamp,$fast=false) * @param int $year Year * @param mixed $gm True or 1 or 'gmt'=Input informations are GMT values, False or 0 or 'server' = local to server TZ, 'user' = local to user TZ * @param int $check 0=No check on parameters (Can use day 32, etc...) - * @return timestamp|string Date as a timestamp, '' or false if error + * @return int|string Date as a timestamp, '' or false if error * @see dol_print_date, dol_stringtotime, dol_getdate */ function dol_mktime($hour,$minute,$second,$month,$day,$year,$gm=false,$check=1) From 209f8946d051a558fd8aa37df7a07aaf0c4702b6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Mar 2015 14:17:58 +0100 Subject: [PATCH 220/429] All files must be lowercase --- htdocs/adherents/class/adherent.class.php | 4 ++-- htdocs/compta/bank/class/account.class.php | 4 ++-- ...orkboardResponse.class.php => workboardresponse.class.php} | 4 ++-- htdocs/index.php | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) rename htdocs/core/class/{WorkboardResponse.class.php => workboardresponse.class.php} (94%) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 6b9a8768495..78195bfa868 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -1721,8 +1721,8 @@ class Adherent extends CommonObject /** * Load indicators for dashboard (this->nbtodo and this->nbtodolate) * - * @param User $user Objet user - * @return WorkboardResponse|int <0 if KO, WorkboardResponse if OK + * @param User $user Objet user + * @return WorkboardResponse|int <0 if KO, WorkboardResponse if OK */ function load_board($user) { diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index cfbda320fb7..80262babbbf 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -917,7 +917,7 @@ class Account extends CommonObject * * @param User $user Objet user * @param int $filteraccountid To get info for a particular account id - * @return WorkboardResponse|int <0 if KO, WorkboardResponse if OK + * @return WorkboardResponse|int <0 if KO, WorkboardResponse if OK */ function load_board($user,$filteraccountid=0) { @@ -940,7 +940,7 @@ class Account extends CommonObject $langs->load("banks"); $now=dol_now(); - require_once DOL_DOCUMENT_ROOT.'/core/class/WorkboardResponse.class.php'; + require_once DOL_DOCUMENT_ROOT.'/core/class/workboardresponse.class.php'; $response = new WorkboardResponse(); $response->warning_delay=$conf->bank->rappro->warning_delay/60/60/24; diff --git a/htdocs/core/class/WorkboardResponse.class.php b/htdocs/core/class/workboardresponse.class.php similarity index 94% rename from htdocs/core/class/WorkboardResponse.class.php rename to htdocs/core/class/workboardresponse.class.php index c36b50b421e..13de74281ff 100644 --- a/htdocs/core/class/WorkboardResponse.class.php +++ b/htdocs/core/class/workboardresponse.class.php @@ -49,8 +49,8 @@ class WorkboardResponse public $url_late; /** - * Delay time to mark an item as late - * @var int + * Delay time to mark an item as late. In number of days. + * @var double */ public $warning_delay; diff --git a/htdocs/index.php b/htdocs/index.php index c13c15d80eb..15967013e8a 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -311,7 +311,7 @@ print '
'.$langs->trans("AmountTTC").''.price($object->amount,0,$outputlangs,1,-1,-1,$conf->currency).'
'.$langs->trans("AmountTTC").""; + print ''; + print "
'.$langs->trans("AmountTTC").''.price($object->amount,0,$outputlangs,1,-1,-1,$conf->currency).'
'.$langs->trans("Status").''.$object->getLibStatut(4, $totalpaye).'
'; - print dol_print_date($db->jdate($obj->dp), 'day'); + print dol_print_date($db->jdate($objp->dp), 'day'); print "
' . $langs->trans('AmountHT') . '' . price($object->total_ht, '', $langs, 0, - 1, - 1, $conf->currency) . '' . price($object->total_ht, '', $langs, 0, - 1, - 1, $conf->currency) . '
' . $langs->trans('AmountVAT') . '' . price($object->total_tva, '', $langs, 0, - 1, - 1, $conf->currency) . '
' . price($object->total_tva, '', $langs, 0, - 1, - 1, $conf->currency) . '
' . $langs->transcountry("AmountLT1", $mysoc->country_code) . '' . price($object->total_localtax1, '', $langs, 0, - 1, - 1, $conf->currency) . '' . price($object->total_localtax1, '', $langs, 0, - 1, - 1, $conf->currency) . '
' . $langs->transcountry("AmountLT2", $mysoc->country_code) . '' . price($object->total_localtax2, '', $langs, 0, - 1, - 1, $conf->currency) . '
' . price($object->total_localtax2, '', $langs, 0, - 1, - 1, $conf->currency) . '
' . $langs->trans('AmountTTC') . '' . price($object->total_ttc, '', $langs, 0, - 1, - 1, $conf->currency) . '
' . price($object->total_ttc, '', $langs, 0, - 1, - 1, $conf->currency) . '
' . $langs->trans('Status') . '' . $object->getLibStatut(4) . '
' . img_edit().'
'; - print '
'; + print ''; // Convert date into timestamp format if (in_array($extrafields->attribute_type[$key], array('date','datetime'))) { diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 6101aa7e17d..41d06bebf43 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1947,28 +1947,28 @@ elseif (! empty($object->id)) // Ligne de 3 colonnes print '
'.$langs->trans("AmountHT").''.price($object->total_ht).''.$langs->trans("Currency".$conf->currency).'
'.price($object->total_ht,'',$langs,1,-1,-1,$conf->currency).'
'.$langs->trans("AmountVAT").''.price($object->total_tva).''.$langs->trans("Currency".$conf->currency).'
'.$langs->trans("AmountVAT").''.price($object->total_tva,'',$langs,1,-1,-1,$conf->currency).'
'.$langs->transcountry("AmountLT1",$mysoc->country_code).''.price($object->total_localtax1).''.$langs->trans("Currency".$conf->currency).'
'.price($object->total_localtax1,'',$langs,1,-1,-1,$conf->currency).'
'.$langs->transcountry("AmountLT2",$mysoc->country_code).''.price($object->total_localtax2).''.$langs->trans("Currency".$conf->currency).'
'.price($object->total_localtax2,'',$langs,1,-1,-1,$conf->currency).'
'.$langs->trans("AmountTTC").''.price($object->total_ttc).''.$langs->trans("Currency".$conf->currency).'
'.$langs->trans("AmountTTC").''.price($object->total_ttc,'',$langs,1,-1,-1,$conf->currency).'

"; @@ -2610,7 +2610,7 @@ elseif (! empty($object->id)) print '
'.$langs->trans("ReOpen").''; } } - + // Create bill if (! empty($conf->fournisseur->enabled) && $object->statut >= 2) // 2 means accepted { From bf86693dcb05f0e41c819c67df6399c71ec7f3f0 Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Tue, 10 Mar 2015 21:47:39 +0100 Subject: [PATCH 233/429] Update sellsjournal.php --- htdocs/accountancy/journal/sellsjournal.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php index b3ca7ceae98..c0251291964 100644 --- a/htdocs/accountancy/journal/sellsjournal.php +++ b/htdocs/accountancy/journal/sellsjournal.php @@ -271,7 +271,11 @@ if ($action == 'export_csv') $sell_journal = $conf->global->ACCOUNTING_SELL_JOURNAL; header('Content-Type: text/csv'); - header('Content-Disposition: attachment;filename=journal_ventes.csv'); + if ($conf->global->EXPORT_PREFIX) + $filename=$conf->global->EXPORT_PREFIX_SPEC."_"."journal_ventes.csv"; + else + $filename="journal_ventes.csv"; + header('Content-Disposition: attachment;filename='.$filename); $companystatic = new Client($db); From f91127c92a335b9b281f86b8ed2753239ec616fc Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Tue, 10 Mar 2015 21:48:47 +0100 Subject: [PATCH 234/429] Update purchasesjournal.php --- htdocs/accountancy/journal/purchasesjournal.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php index 905296358f0..521a1c6a74c 100644 --- a/htdocs/accountancy/journal/purchasesjournal.php +++ b/htdocs/accountancy/journal/purchasesjournal.php @@ -249,7 +249,11 @@ if ($action == 'export_csv') $purchase_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL; header('Content-Type: text/csv'); - header('Content-Disposition: attachment;filename=journal_achats.csv'); + if ($conf->global->EXPORT_PREFIX) + $filename=$conf->global->EXPORT_PREFIX_SPEC."_"."journal_achats.csv"; + else + $filename="journal_achats.csv"; + header('Content-Disposition: attachment;filename='.$filename); if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) // Model Cegid Expert Export { From c27125745282002d91b08f82b25229d37d5db17b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 10 Mar 2015 22:27:16 +0100 Subject: [PATCH 235/429] Prepare extrafield for option by default into lists --- htdocs/core/class/extrafields.class.php | 46 +++++++++++++------ .../install/mysql/migration/3.7.0-3.8.0.sql | 1 + .../install/mysql/tables/llx_extrafields.sql | 3 +- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 5a79c5ccf97..24d8c40f5b3 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -54,6 +54,8 @@ class ExtraFields var $attribute_alwayseditable; // Array to store permission to check var $attribute_perms; + // Array to store permission to check + var $attribute_list; var $error; var $errno; @@ -93,6 +95,7 @@ class ExtraFields $this->attribute_unique = array(); $this->attribute_required = array(); $this->attribute_perms = array(); + $this->attribute_list = array(); } /** @@ -110,9 +113,10 @@ class ExtraFields * @param array $param Params for field * @param int $alwayseditable Is attribute always editable regardless of the document status * @param string $perms Permission to check + * @param int $list Into list view by default * @return int <=0 if KO, >0 if OK */ - function addExtraField($attrname, $label, $type, $pos, $size, $elementtype, $unique=0, $required=0, $default_value='', $param=0, $alwayseditable=0, $perms='') + function addExtraField($attrname, $label, $type, $pos, $size, $elementtype, $unique=0, $required=0, $default_value='', $param=0, $alwayseditable=0, $perms='', $list=0) { if (empty($attrname)) return -1; if (empty($label)) return -1; @@ -122,13 +126,13 @@ class ExtraFields // Create field into database except for separator type which is not stored in database if ($type != 'separate') { - $result=$this->create($attrname,$type,$size,$elementtype, $unique, $required, $default_value,$param); + $result=$this->create($attrname,$type,$size,$elementtype, $unique, $required, $default_value, $param, $perms, $list); } $err1=$this->errno; if ($result > 0 || $err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' || $type == 'separate') { // Add declaration of field into table - $result2=$this->create_label($attrname,$label,$type,$pos,$size,$elementtype, $unique, $required, $param, $alwayseditable, $perms); + $result2=$this->create_label($attrname,$label,$type,$pos,$size,$elementtype, $unique, $required, $param, $alwayseditable, $perms, $list); $err2=$this->errno; if ($result2 > 0 || ($err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' && $err2 == 'DB_ERROR_RECORD_ALREADY_EXISTS')) { @@ -156,10 +160,11 @@ class ExtraFields * @param int $required Is field required or not * @param string $default_value Default value for field * @param array $param Params for field (ex for select list : array('options'=>array('value'=>'label of option')) - * + * @param string $perms Permission + * @param int $list Into list view by default * @return int <=0 if KO, >0 if OK */ - private function create($attrname, $type='varchar', $length=255, $elementtype='member', $unique=0, $required=0, $default_value='',$param='') + private function create($attrname, $type='varchar', $length=255, $elementtype='member', $unique=0, $required=0, $default_value='',$param='', $perms='', $list=0) { if ($elementtype == 'thirdparty') $elementtype='societe'; @@ -230,9 +235,10 @@ class ExtraFields * @param array||string $param Params for field (ex for select list : array('options' => array(value'=>'label of option')) ) * @param int $alwayseditable Is attribute always editable regardless of the document status * @param string $perms Permission to check + * @param int $list Into list view by default * @return int <=0 if KO, >0 if OK */ - private function create_label($attrname, $label='', $type='', $pos=0, $size=0, $elementtype='member', $unique=0, $required=0, $param='', $alwayseditable=0, $perms='') + private function create_label($attrname, $label='', $type='', $pos=0, $size=0, $elementtype='member', $unique=0, $required=0, $param='', $alwayseditable=0, $perms='', $list=0) { global $conf; @@ -240,6 +246,7 @@ class ExtraFields // Clean parameters if (empty($pos)) $pos=0; + if (empty($list)) $list=0; if (! empty($attrname) && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname) && ! is_numeric($attrname)) { @@ -256,7 +263,7 @@ class ExtraFields $params=''; } - $sql = "INSERT INTO ".MAIN_DB_PREFIX."extrafields(name, label, type, pos, size, entity, elementtype, fieldunique, fieldrequired, param, alwayseditable, perms)"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."extrafields(name, label, type, pos, size, entity, elementtype, fieldunique, fieldrequired, param, alwayseditable, perms, list)"; $sql.= " VALUES('".$attrname."',"; $sql.= " '".$this->db->escape($label)."',"; $sql.= " '".$type."',"; @@ -268,7 +275,8 @@ class ExtraFields $sql.= " '".$required."',"; $sql.= " '".$params."',"; $sql.= " '".$alwayseditable."',"; - $sql.= " ".($perms?"'".$this->db->escape($perms)."'":"null"); + $sql.= " ".($perms?"'".$this->db->escape($perms)."'":"null").","; + $sql.= " ".$list; $sql.=')'; dol_syslog(get_class($this)."::create_label", LOG_DEBUG); @@ -370,9 +378,10 @@ class ExtraFields * @param array $param Params for field (ex for select list : array('options' => array(value'=>'label of option')) ) * @param int $alwayseditable Is attribute always editable regardless of the document status * @param string $perms Permission to check + * @param int $list Into list view by default * @return int >0 if OK, <=0 if KO */ - function update($attrname,$label,$type,$length,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0, $perms='') + function update($attrname,$label,$type,$length,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0, $perms='',$list='') { if ($elementtype == 'thirdparty') $elementtype='societe'; @@ -409,7 +418,7 @@ class ExtraFields { if ($label) { - $result=$this->update_label($attrname,$label,$type,$length,$elementtype,$unique,$required,$pos,$param,$alwayseditable,$perms); + $result=$this->update_label($attrname,$label,$type,$length,$elementtype,$unique,$required,$pos,$param,$alwayseditable,$perms,$list); } if ($result > 0) { @@ -459,14 +468,17 @@ class ExtraFields * @param array $param Params for field (ex for select list : array('options' => array(value'=>'label of option')) ) * @param int $alwayseditable Is attribute always editable regardless of the document status * @param string $perms Permission to check + * @param int $list Into list view by default * @return int <=0 if KO, >0 if OK */ - private function update_label($attrname,$label,$type,$size,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0,$perms='') + private function update_label($attrname,$label,$type,$size,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0,$perms='',$list=0) { global $conf; - dol_syslog(get_class($this)."::update_label ".$attrname.", ".$label.", ".$type.", ".$size.", ".$elementtype.", ".$unique.", ".$required.", ".$pos.", ".$alwayseditable.", ".$perms); + dol_syslog(get_class($this)."::update_label ".$attrname.", ".$label.", ".$type.", ".$size.", ".$elementtype.", ".$unique.", ".$required.", ".$pos.", ".$alwayseditable.", ".$perms.", ".$list); + // Clean parameters if ($elementtype == 'thirdparty') $elementtype='societe'; + if (empty($list)) $list=0; if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname)) { @@ -496,7 +508,8 @@ class ExtraFields $sql.= " perms,"; $sql.= " pos,"; $sql.= " alwayseditable,"; - $sql.= " param"; + $sql.= " param,"; + $sql.= " list"; $sql.= ") VALUES ("; $sql.= "'".$attrname."',"; $sql.= " ".$conf->entity.","; @@ -510,6 +523,7 @@ class ExtraFields $sql.= " '".$pos."',"; $sql.= " '".$alwayseditable."',"; $sql.= " '".$param."'"; + $sql.= " ".$list; $sql.= ")"; dol_syslog(get_class($this)."::update_label", LOG_DEBUG); $resql2=$this->db->query($sql); @@ -552,7 +566,7 @@ class ExtraFields // For avoid conflicts with external modules if (!$forceload && !empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) return $array_name_label; - $sql = "SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired,param,pos,alwayseditable,perms"; + $sql = "SELECT rowid,name,label,type,size,elementtype,fieldunique,fieldrequired,param,pos,alwayseditable,perms,list"; $sql.= " FROM ".MAIN_DB_PREFIX."extrafields"; $sql.= " WHERE entity IN (0,".$conf->entity.")"; if ($elementtype) $sql.= " AND elementtype = '".$elementtype."'"; @@ -582,6 +596,7 @@ class ExtraFields $this->attribute_pos[$tab->name]=$tab->pos; $this->attribute_alwayseditable[$tab->name]=$tab->alwayseditable; $this->attribute_perms[$tab->name]=$tab->perms; + $this->attribute_perms[$tab->name]=$tab->list; } } } @@ -615,6 +630,7 @@ class ExtraFields $required=$this->attribute_required[$key]; $param=$this->attribute_param[$key]; $perms=$this->attribute_perms[$key]; + $list=$this->attribute_list[$key]; if ($type == 'date') { @@ -1054,6 +1070,8 @@ class ExtraFields $required=$this->attribute_required[$key]; $params=$this->attribute_param[$key]; $perms=$this->attribute_perms[$key]; + $list=$this->attribute_list[$key]; + if ($type == 'date') { $showsize=10; diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index 03736b088fc..6d767e20d45 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -20,6 +20,7 @@ ALTER TABLE llx_extrafields ADD COLUMN perms varchar(255) after fieldrequired; +ALTER TABLE llx_extrafields ADD COLUMN list integer DEFAULT 0 after perms; ALTER TABLE llx_payment_salary ADD COLUMN salary real after datev; diff --git a/htdocs/install/mysql/tables/llx_extrafields.sql b/htdocs/install/mysql/tables/llx_extrafields.sql index 11271125508..21610d07c0e 100644 --- a/htdocs/install/mysql/tables/llx_extrafields.sql +++ b/htdocs/install/mysql/tables/llx_extrafields.sql @@ -32,5 +32,6 @@ create table llx_extrafields perms varchar(255), pos integer DEFAULT 0, alwayseditable integer DEFAULT 0, - param text + param text, + list integer DEFAULT 0 )ENGINE=innodb; From ec322e2e2974d52f767d4132bb1878e6685ded55 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 11 Mar 2015 03:03:17 +0100 Subject: [PATCH 236/429] Revert was not complete --- htdocs/admin/system/database-tables.php | 5 +- htdocs/core/db/sqlite.class.php | 84 +++---------------------- htdocs/core/db/sqlite3.class.php | 3 +- htdocs/install/etape2.php | 3 +- htdocs/install/fileconf.php | 3 +- 5 files changed, 17 insertions(+), 81 deletions(-) diff --git a/htdocs/admin/system/database-tables.php b/htdocs/admin/system/database-tables.php index e75cec3f513..39b3dd4cad5 100644 --- a/htdocs/admin/system/database-tables.php +++ b/htdocs/admin/system/database-tables.php @@ -66,7 +66,8 @@ else if ($conf->db->type == 'mssql') //$sqls[0] = ""; //$base=3; } -else if ($conf->db->type == 'sqlite3') { +else if ($conf->db->type == 'sqlite' || $conf->db->type == 'sqlite3') +{ //$sql = "SELECT name, type FROM sqlite_master"; $base = 4; } @@ -176,7 +177,7 @@ else if ($base == 4) { - // Sqlite3 + // Sqlite by PDO or by Sqlite3 print ''; print ''; print ''; diff --git a/htdocs/core/db/sqlite.class.php b/htdocs/core/db/sqlite.class.php index 786bf435fcf..88efde86394 100644 --- a/htdocs/core/db/sqlite.class.php +++ b/htdocs/core/db/sqlite.class.php @@ -40,12 +40,6 @@ class DoliDBSqlite extends DoliDB //! Resultset of last query private $_results; - /** - * Indique que les fonctions personnalisées sont définies - * @var boolean - */ - private static $customFunctionsDefined = false; - /** * Constructor. * This create an opened connexion to a database server and eventually to a database @@ -56,6 +50,7 @@ class DoliDBSqlite extends DoliDB * @param string $pass Mot de passe * @param string $name Nom de la database * @param int $port Port of database server + * @return int 1 if OK, 0 if not */ function __construct($type, $host, $user, $pass, $name='', $port=0) { @@ -159,7 +154,7 @@ class DoliDBSqlite extends DoliDB // Process case: "CREATE TABLE llx_mytable(rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY,code..." if (preg_match('/[\s\t\(]*(\w*)[\s\t]+int.*auto_increment/i',$line,$reg)) { - $newline=preg_replace('/([\s\t\(]*)([a-zA-Z_0-9]*)[\s\t]+int.*auto_increment[^,]*/i','\\1 \\2 integer PRIMARY KEY AUTOINCREMENT',$line); + $newline=preg_replace('/([\s\t\(]*)([a-zA-Z_0-9]*)[\s\t]+int.*auto_increment[^,]*/i','\\1 \\2 SERIAL PRIMARY KEY',$line); //$line = "-- ".$line." replaced by --\n".$newline; $line=$newline; } @@ -248,18 +243,11 @@ class DoliDBSqlite extends DoliDB $line = "-- ".$line." replaced by --\n"; $line.= "CREATE ".(preg_match('/UNIQUE/',$reg[2])?'UNIQUE ':'')."INDEX ".$idxname." ON ".$tablename." (".$fieldlist.")"; } - if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+CONSTRAINT\s+(.*)\s*FOREIGN\s+KEY\s*\(([\w,\s]+)\)\s*REFERENCES\s+(\w+)\s*\(([\w,\s]+)\)/i',$line, $reg)) { - // Pour l'instant les contraintes ne sont pas créées - dol_syslog(get_class().'::query line emptied'); - $line = 'SELECT 0;'; - - } - - //if (preg_match('/rowid\s+.*\s+PRIMARY\s+KEY,/i', $line)) { - //preg_replace('/(rowid\s+.*\s+PRIMARY\s+KEY\s*,)/i', '/* \\1 */', $line); - //} } + // To have postgresql case sensitive + $line=str_replace(' LIKE \'',' ILIKE \'',$line); + // Delete using criteria on other table must not declare twice the deleted table // DELETE FROM tabletodelete USING tabletodelete, othertable -> DELETE FROM tabletodelete USING othertable if (preg_match('/DELETE FROM ([a-z_]+) USING ([a-z_]+), ([a-z_]+)/i',$line,$reg)) @@ -400,53 +388,7 @@ class DoliDBSqlite extends DoliDB $this->error = 0; // Convert MySQL syntax to SQLite syntax - if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+CONSTRAINT\s+(.*)\s*FOREIGN\s+KEY\s*\(([\w,\s]+)\)\s*REFERENCES\s+(\w+)\s*\(([\w,\s]+)\)/i',$query, $reg)) { - // Ajout d'une clef étrangère à la table - // procédure de remplacement de la table pour ajouter la contrainte - // Exemple : ALTER TABLE llx_adherent ADD CONSTRAINT adherent_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (rowid) - // -> CREATE TABLE ( ... ,CONSTRAINT adherent_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (rowid)) - $foreignFields = $reg[5]; - $foreignTable = $reg[4]; - $localfields = $reg[3]; - $constraintname=trim($reg[2]); - $tablename=trim($reg[1]); - - $res = $this->db->query("SELECT sql FROM sqlite_master WHERE name='" . $tablename . "'"); - $descTable = $res->fetchColumn(); - $res->closeCursor(); - - // 1- Renommer la table avec un nom temporaire - $res = $this->query('ALTER TABLE ' . $tablename . ' RENAME TO tmp_' . $tablename); - $res->closeCursor(); - - // 2- Recréer la table avec la contrainte ajoutée - - // on bricole la requete pour ajouter la contrainte - $descTable = substr($descTable, 0, strlen($descTable) - 1); - $descTable .= ", CONSTRAINT " . $constraintname . " FOREIGN KEY (" . $localfields . ") REFERENCES " .$foreignTable . "(" . $foreignFields . ")"; - - // fermeture de l'instruction - $descTable .= ')'; - - // Création proprement dite de la table - $res = $this->query($descTable); - $res->closeCursor(); - - // 3- Transférer les données - $res = $this->query('INSERT INTO ' . $tablename . ' SELECT * FROM tmp_' . $tablename); - $res->closeCursor(); - - - // 4- Supprimer la table temporaire - $res = $this->query('DROP TABLE tmp_' . $tablename); - $res->closeCursor(); - - // dummy statement - $query="SELECT 0"; - - } else { - $query=$this->convertSQLFromMysql($query,$type); - } + $query=$this->convertSQLFromMysql($query,$type); //print "After convertSQLFromMysql:\n".$query."
\n"; dol_syslog('sql='.$query, LOG_DEBUG); @@ -546,11 +488,7 @@ class DoliDBSqlite extends DoliDB { // If resultset not provided, we take the last used by connexion if (! is_object($resultset)) { $resultset=$this->_results; } - if (preg_match("/^SELECT/i", $resultset->queryString)) { - $res = $this->db->query("SELECT count(*) FROM (" . $resultset->queryString . ") q"); - return $res->fetchColumn(); - } - return $resultset->rowCount(); + return $resultset->rowCount(); } /** @@ -592,12 +530,7 @@ class DoliDBSqlite extends DoliDB */ function escape($stringtoencode) { - $ret = $this->db->quote($stringtoencode); - $l = strlen($ret); - if ($l >= 2) { - return substr($ret, 1, $l -2); - } - return ''; + return $this->db->quote($stringtoencode); } /** @@ -1203,6 +1136,5 @@ class DoliDBSqlite extends DoliDB return $result; } - } diff --git a/htdocs/core/db/sqlite3.class.php b/htdocs/core/db/sqlite3.class.php index c52578fa579..ce3762202e4 100644 --- a/htdocs/core/db/sqlite3.class.php +++ b/htdocs/core/db/sqlite3.class.php @@ -354,7 +354,8 @@ class DoliDBSqlite3 extends DoliDB */ function getVersion() { - return $this->db->version()['versionString']; + $tmp=$this->db->version(); + return $tmp['versionString']; } /** diff --git a/htdocs/install/etape2.php b/htdocs/install/etape2.php index 612c3c64148..8c0e3f8ab5c 100644 --- a/htdocs/install/etape2.php +++ b/htdocs/install/etape2.php @@ -51,7 +51,8 @@ if ($dolibarr_main_db_type == "mysql") $choix=1; if ($dolibarr_main_db_type == "mysqli") $choix=1; if ($dolibarr_main_db_type == "pgsql") $choix=2; if ($dolibarr_main_db_type == "mssql") $choix=3; -if ($dolibarr_main_db_type == "sqlite3") $choix=4; +if ($dolibarr_main_db_type == "sqlite") $choix=4; +if ($dolibarr_main_db_type == "sqlite3") $choix=5; //if (empty($choix)) dol_print_error('','Database type '.$dolibarr_main_db_type.' not supported into etape2.php page'); diff --git a/htdocs/install/fileconf.php b/htdocs/install/fileconf.php index ec3e208374b..5dce328d04c 100644 --- a/htdocs/install/fileconf.php +++ b/htdocs/install/fileconf.php @@ -306,7 +306,7 @@ if (! empty($force_install_message)) $class='DoliDB'.ucfirst($type); include_once $dir."/".$file; - if ($type == 'sqlite') continue; // We hide sqlite because support can't be complete unti sqlit does not manage foreign key creation after table creation + if ($type == 'sqlite') continue; // We hide sqlite because support can't be complete until sqlite does not manage foreign key creation after table creation // Version min of database $versionbasemin=explode('.',$class::VERSIONMIN); @@ -320,6 +320,7 @@ if (! empty($force_install_message)) if ($type=='mysqli') { $testfunction='mysqli_connect'; $testclass=''; } if ($type=='pgsql') { $testfunction='pg_connect'; $testclass=''; } if ($type=='mssql') { $testfunction='mssql_connect'; $testclass=''; } + if ($type=='sqlite') { $testfunction=''; $testclass='PDO'; } if ($type=='sqlite3') { $testfunction=''; $testclass='SQLite3'; } $option.=''; // Stock + /* if ($object->isproduct() && ! empty($conf->stock->enabled)) { print "".'"; $nblignes=6; - if ($product->isproduct() && ! empty($conf->stock->enabled)) $nblignes++; - if ($product->isservice()) $nblignes++; + if ($object->isproduct() && ! empty($conf->stock->enabled)) $nblignes++; + if ($object->isservice()) $nblignes++; // Reference print ''; print ''; // Label - print ''; + print ''; print ''; + // Nature + if($object->type!=1) + { + print ''; + } + if (empty($conf->global->PRODUIT_MULTIPRICES)) { // Price @@ -232,28 +241,57 @@ if ($id > 0 || ! empty($ref)) print ''; } + print '
'.$langs->trans("TableName").'
'.$langs->trans("StockLimit").''; @@ -1189,7 +1190,7 @@ else { print ''; print ''; - } + }*/ // Nature if($object->type!=1) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 56e721b67ac..910f5b316cd 100755 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -2656,13 +2656,13 @@ class Product extends CommonObject * @param int $level Init level * @return void */ - function fetch_prod_arbo($prod, $compl_path="", $multiply=1, $level=1) + function fetch_prod_arbo($prod, $compl_path="", $multiply=1, $level=1, $id_parent=0) { global $conf,$langs; $product = new Product($this->db); //var_dump($prod); - foreach($prod as $id_product => $desc_pere) // $id_product is 0 (there is no mode sub_product) or an id of a sub_product + foreach($prod as $id_product => $desc_pere) // $id_product is 0 (first call starting with root top) or an id of a sub_product { if (is_array($desc_pere)) // If desc_pere is an array, this means it's a child { @@ -2679,6 +2679,7 @@ class Product extends CommonObject $this->load_stock(); // Load stock $this->res[]= array( 'id'=>$id, // Id product + 'id_parent'=>$id_parent, 'ref'=>$this->ref, // Ref product 'nb'=>$nb, // Nb of units that compose parent product 'nb_total'=>$nb*$multiply, // Nb of units for all nb of product @@ -2696,7 +2697,7 @@ class Product extends CommonObject if (is_array($desc_pere['childs'])) { //print 'YYY We go down for '.$desc_pere[3]." -> \n"; - $this ->fetch_prod_arbo($desc_pere['childs'], $compl_path.$desc_pere[3]." -> ", $desc_pere[1]*$multiply, $level+1); + $this->fetch_prod_arbo($desc_pere['childs'], $compl_path.$desc_pere[3]." -> ", $desc_pere[1]*$multiply, $level+1, $id); } } } @@ -2718,7 +2719,7 @@ class Product extends CommonObject $this->res[]= array($desc_pere[1],$desc_pere[0]); if(count($desc_pere) >1) { - $this ->fetch_prods($desc_pere); + $this->fetch_prods($desc_pere); } } } @@ -2736,7 +2737,7 @@ class Product extends CommonObject { foreach($this->sousprods as $prod_name => $desc_product) { - if (is_array($desc_product)) $this->fetch_prod_arbo($desc_product,"",$multiply); + if (is_array($desc_product)) $this->fetch_prod_arbo($desc_product,"",$multiply,1,$this->id); } } //var_dump($this->res); @@ -2751,13 +2752,11 @@ class Product extends CommonObject function get_each_prod() { $this->res = array(); - if(is_array($this -> sousprods)) + if (is_array($this->sousprods)) { - foreach($this -> sousprods as $nom_pere => $desc_pere) + foreach($this->sousprods as $nom_pere => $desc_pere) { - if(count($desc_pere) >1) - $this ->fetch_prods($desc_pere); - + if (count($desc_pere) >1) $this->fetch_prods($desc_pere); } sort($this->res); } @@ -2769,10 +2768,10 @@ class Product extends CommonObject * Return all Father products fo current product * * @return array prod + * @see getParent */ function getFather() { - $sql = "SELECT p.label as label,p.rowid,pa.fk_product_pere as id,p.fk_product_type"; $sql.= " FROM ".MAIN_DB_PREFIX."product_association as pa,"; $sql.= " ".MAIN_DB_PREFIX."product as p"; @@ -2803,10 +2802,10 @@ class Product extends CommonObject * Return all direct parent products fo current product * * @return array prod + * @see getFather */ function getParent() { - $sql = "SELECT p.label as label,p.rowid,pa.fk_product_pere as id,p.fk_product_type"; $sql.= " FROM ".MAIN_DB_PREFIX."product_association as pa,"; $sql.= " ".MAIN_DB_PREFIX."product as p"; @@ -2833,10 +2832,11 @@ class Product extends CommonObject /** * Return childs of product $id * - * @param int $id Id of product to search childs of - * @return array Prod + * @param int $id Id of product to search childs of + * @param int $firstlevelonly Return only direct child + * @return array Prod */ - function getChildsArbo($id) + function getChildsArbo($id, $firstlevelonly=0) { $sql = "SELECT p.rowid, p.label as label, pa.qty as qty, pa.fk_product_fils as id, p.fk_product_type, pa.incdec"; $sql.= " FROM ".MAIN_DB_PREFIX."product as p"; @@ -2861,10 +2861,13 @@ class Product extends CommonObject ); //$prods[$this->db->escape($rec['label'])]= array(0=>$rec['id'],1=>$rec['qty'],2=>$rec['fk_product_type']); //$prods[$this->db->escape($rec['label'])]= array(0=>$rec['id'],1=>$rec['qty']); - $listofchilds=$this->getChildsArbo($rec['id']); - foreach($listofchilds as $keyChild => $valueChild) + if (empty($firstlevelonly)) { - $prods[$rec['rowid']]['childs'][$keyChild] = $valueChild; + $listofchilds=$this->getChildsArbo($rec['id']); + foreach($listofchilds as $keyChild => $valueChild) + { + $prods[$rec['rowid']]['childs'][$keyChild] = $valueChild; + } } } @@ -2910,6 +2913,7 @@ class Product extends CommonObject function getNomUrl($withpicto=0,$option='',$maxlength=0) { global $conf, $langs; + include_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php'; $result=''; $newref=$this->ref; @@ -2920,6 +2924,14 @@ class Product extends CommonObject $label .= '
' . $langs->trans('ProductRef') . ': ' . $this->ref; if (! empty($this->label)) $label .= '
' . $langs->trans('ProductLabel') . ': ' . $this->label; + + $tmptext=''; + if ($this->weight) $tmptext.="
".$langs->trans("Weight").': '.$this->weight.' '.measuring_units_string($this->weight_units,"weight"); + if ($this->length) $tmptext.="
".$langs->trans("Length").': '.$this->length.' '.measuring_units_string($this->length_units,'length'); + if ($this->surface) $tmptext.="
".$langs->trans("Surface").': '.$this->surface.' '.measuring_units_string($this->surface_units,'surface'); + if ($this->volume) $tmptext.="
".$langs->trans("Volume").': '.$this->volume.' '.measuring_units_string($this->volume_units,'volume'); + if ($tmptext) $label .= $tmptext; + if (! empty($this->entity)) $label .= '
' . $this->show_photos($conf->product->multidir_output[$this->entity],1,1,0,0,0,80); diff --git a/htdocs/product/composition/card.php b/htdocs/product/composition/card.php index af339c8270c..53f79266c25 100644 --- a/htdocs/product/composition/card.php +++ b/htdocs/product/composition/card.php @@ -50,13 +50,13 @@ $fieldvalue = (! empty($id) ? $id : (! empty($ref) ? $ref : '')); $fieldtype = (! empty($ref) ? 'ref' : 'rowid'); $result=restrictedArea($user,'produit|service',$fieldvalue,'product&product','','',$fieldtype); -$product = new Product($db); -$productid=0; +$object = new Product($db); +$objectid=0; if ($id > 0 || ! empty($ref)) { - $result = $product->fetch($id,$ref); - $productid=$product->id; - $id=$product->id; + $result = $object->fetch($id,$ref); + $objectid=$object->id; + $id=$object->id; } @@ -74,7 +74,7 @@ if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->se { if ($_POST["prod_qty_".$i] > 0) { - if ($product->add_sousproduit($id, $_POST["prod_id_".$i], $_POST["prod_qty_".$i], $_POST["prod_incdec_".$i]) > 0) + if ($object->add_sousproduit($id, $_POST["prod_id_".$i], $_POST["prod_qty_".$i], $_POST["prod_incdec_".$i]) > 0) { //var_dump($id.' - '.$_POST["prod_id_".$i].' - '.$_POST["prod_qty_".$i]);exit; $action = 'edit'; @@ -83,16 +83,16 @@ if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->se { $error++; $action = 're-edit'; - if ($product->error == "isFatherOfThis") { + if ($object->error == "isFatherOfThis") { setEventMessage($langs->trans("ErrorAssociationIsFatherOfThis"), 'errors'); } else { - setEventMessage($product->error, 'errors'); + setEventMessage($object->error, 'errors'); } } } else { - if ($product->del_sousproduit($id, $_POST["prod_id_".$i]) > 0) + if ($object->del_sousproduit($id, $_POST["prod_id_".$i]) > 0) { $action = 'edit'; } @@ -100,13 +100,13 @@ if ($action == 'add_prod' && ($user->rights->produit->creer || $user->rights->se { $error++; $action = 're-edit'; - setEventMessage($product->error, 'errors'); + setEventMessage($object->error, 'errors'); } } } if (! $error) { - header("Location: ".$_SERVER["PHP_SELF"].'?id='.$product->id); + header("Location: ".$_SERVER["PHP_SELF"].'?id='.$object->id); exit; } } @@ -117,7 +117,8 @@ else if($action==='save_composed_product') { foreach ($TProduct as $id_product => $row) { - $product->update_sousproduit($id, $id_product,$row['qty'], isset($row['incdec']) ? 1 : 0 ); + if ($row['qty'] > 0) $object->update_sousproduit($id, $id_product, $row['qty'], isset($row['incdec']) ? 1 : 0 ); + else $object->del_sousproduit($id, $id_product); } } $action=''; @@ -171,11 +172,11 @@ if ($action == 'search') //print $sql; -llxHeader("","",$langs->trans("CardProduct".$product->type)); +llxHeader("","",$langs->trans("CardProduct".$object->type)); -$head=product_prepare_head($product, $user); -$titre=$langs->trans("CardProduct".$product->type); -$picto=($product->type==1?'service':'product'); +$head=product_prepare_head($object, $user); +$titre=$langs->trans("CardProduct".$object->type); +$picto=($object->type==1?'service':'product'); dol_fiche_head($head, 'subproduct', $titre, 0, $picto); @@ -191,20 +192,28 @@ if ($id > 0 || ! empty($ref)) print "
'.$langs->trans("Ref").''; - print $form->showrefnav($product,'ref','',1,'ref'); + print $form->showrefnav($object,'ref','',1,'ref'); print '
'.$langs->trans("Label").''.$product->libelle.'
'.$langs->trans("Label").''.$object->libelle.'
'.$langs->trans("Nature").''; + print $object->getLibFinished(); + print '
'; + + dol_fiche_end(); + + + $prodsfather = $object->getFather(); // Parent Products + $object->get_sousproduits_arbo(); // Load $object->sousprod + $prods_arbo=$object->get_arbo_each_prod(); + $nbofsubsubproducts=count($prods_arbo); // This include sub sub product into nb + $prodschild = $object->getChildsArbo($id,1); + $nbofsubproducts=count($prodschild); // This include only first level of childs + + + // Number of parent virtual products + print $form->textwithpicto($langs->trans("ParentProductsNumber").': '.count($prodsfather), $langs->trans('IfZeroItIsNotUsedByVirtualProduct')); + + if (count($prodsfather) > 0) + { + print $langs->trans("ProductParentList").'
'; + print ''; + foreach($prodsfather as $value) + { + $idprod= $value["id"]; + $productstatic->id=$idprod;// $value["id"]; + $productstatic->type=$value["fk_product_type"]; + $productstatic->ref=$value['label']; + print ''; + print '';; + print ''; + } + print '
'.$productstatic->getNomUrl(1,'composition').'
'; + } + + + print '
'."\n"; + + // Number of subproducts - $prodsfather = $product->getFather(); //Parent Products - $product->get_sousproduits_arbo(); // Defined $product->sousprod - $prods_arbo=$product->get_arbo_each_prod(); - $nbofsubproducts=count($prods_arbo); - print ''.$langs->trans("AssociatedProductsNumber").''; - print $form->textwithpicto($nbofsubproducts, $langs->trans('IfZeroItIsNotAVirtualProduct')); - print ''; - print ''; + print $form->textwithpicto($langs->trans("AssociatedProductsNumber").': '.(empty($conf->global->PRODUCT_SHOW_SUB_SUB_PRODUCTS)?$nbofsubproducts:$nbofsubsubproducts), $langs->trans('IfZeroItIsNotAVirtualProduct')); // List of subproducts if (count($prods_arbo) > 0) { $atleastonenotdefined=0; - print ''; print $langs->trans("ProductAssociationList").'
'; print '
'; print ''; print ''; - print ''; + print '
'; print ''; print ''; @@ -262,7 +300,7 @@ if ($id > 0 || ! empty($ref)) if (! empty($conf->stock->enabled)) print ''; print ''; print ''; - print ''; + print ''."\n"; foreach($prods_arbo as $value) { @@ -270,11 +308,11 @@ if ($id > 0 || ! empty($ref)) $productstatic->type=$value['type']; $productstatic->label=$value['label']; - $class=($class=='impair')?'pair':'impair'; - - print ''; if ($value['level'] <= 1) { + $class=($class=='impair')?'pair':'impair'; + print ''; + $notdefined=0; $productstatic->ref=$value['ref']; $nb_of_subproduct = $value['nb']; @@ -312,9 +350,17 @@ if ($id > 0 || ! empty($ref)) print ''; print ''; } + + print ''."\n"; } - else + else // By default, we do not show this. It makes screen very difficult to understand { + $hide=''; + if (empty($conf->global->PRODUCT_SHOW_SUB_SUB_PRODUCTS)) $hide=' hideobject'; + + $class=($class=='impair')?'pair':'impair'; + print ''; + //$productstatic->ref=$value['label']; $productstatic->ref=$value['ref']; print ''; // Real stock print ''; print ''; + + print ''."\n"; } - print ''; } print ''; print ''; @@ -348,19 +395,13 @@ if ($id > 0 || ! empty($ref)) // Stock if (! empty($conf->stock->enabled)) print ''; - print ''; - print ''; - print ''; + print ''."\n"; print '
'.$langs->trans('ComposedProduct').''.$langs->trans('Stock').''.$langs->trans('Qty').''.$langs->trans('ComposedProductIncDecStock').'
'.$nb_of_subproduct.''.($value['incdec']==1?'x':'' ).'
'; @@ -328,8 +374,9 @@ if ($id > 0 || ! empty($ref)) if (! empty($conf->stock->enabled)) print ''.$value['nb'].' 
 '; + print ''; if ($user->rights->produit->creer || $user->rights->service->creer) { print ''; } print ''; - if ($user->rights->produit->creer || $user->rights->service->creer) - { - print ''; - } - print '
'; /*if($user->rights->produit->creer || $user->rights->service->creer) { @@ -368,39 +409,8 @@ if ($id > 0 || ! empty($ref)) }*/ print '
'; - - print ''; } - // Number of parent virtual products - print ''.$langs->trans("ParentProductsNumber").''; - print $form->textwithpicto(count($prodsfather), $langs->trans('IfZeroItIsNotUsedByVirtualProduct')); - print ''; - - if (count($prodsfather) > 0) - { - print ''; - print $langs->trans("ProductParentList").'
'; - print ''; - foreach($prodsfather as $value) - { - $idprod= $value["id"]; - $productstatic->id=$idprod;// $value["id"]; - $productstatic->type=$value["fk_product_type"]; - $productstatic->ref=$value['label']; - print ''; - print '';; - print ''; - } - print '
'.$productstatic->getNomUrl(1,'composition').'
'; - print ''; - } - - print ''; - - dol_fiche_end(); - - // Form with product to add if ((empty($action) || $action == 'view' || $action == 'edit' || $action == 'search' || $action == 're-edit') && ($user->rights->produit->creer || $user->rights->service->creer)) { @@ -500,11 +510,11 @@ if ($id > 0 || ! empty($ref)) print ''.$labeltoshow.''; - if($product->is_sousproduit($id, $objp->rowid)) + if($object->is_sousproduit($id, $objp->rowid)) { //$addchecked = ' checked="checked"'; - $qty=$product->is_sousproduit_qty; - $incdec=$product->is_sousproduit_incdec; + $qty=$object->is_sousproduit_qty; + $incdec=$object->is_sousproduit_incdec; } else { From 59cbde042c8f919614c61a9863b304519eac58ba Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 12 Mar 2015 17:29:52 +0100 Subject: [PATCH 243/429] Generalize option MAIN_HTML_TITLE for all tabs of thirdparty. --- htdocs/categories/categorie.php | 4 +++- htdocs/societe/agenda.php | 5 ++++- htdocs/societe/consumption.php | 6 ++++-- htdocs/societe/document.php | 4 +++- htdocs/societe/info.php | 12 ++++++------ htdocs/societe/notify/card.php | 8 ++++++-- 6 files changed, 26 insertions(+), 13 deletions(-) diff --git a/htdocs/categories/categorie.php b/htdocs/categories/categorie.php index 0746475ecec..e116ac668ab 100644 --- a/htdocs/categories/categorie.php +++ b/htdocs/categories/categorie.php @@ -235,7 +235,9 @@ if ($socid) $soc = new Societe($db); $result = $soc->fetch($socid); - llxHeader("","",$langs->trans("Category")); + $title=$langs->trans("Category"); + if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$soc->name." - ".$title; + llxHeader("",$title); // Show tabs $head = societe_prepare_head($soc); diff --git a/htdocs/societe/agenda.php b/htdocs/societe/agenda.php index 19d943798ce..e3b273796fa 100644 --- a/htdocs/societe/agenda.php +++ b/htdocs/societe/agenda.php @@ -69,7 +69,10 @@ if ($socid) $object = new Societe($db); $result = $object->fetch($socid); - llxHeader("",$langs->trans("Agenda"),''); + + $title=$langs->trans("Agenda"); + if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->name." - ".$title; + llxHeader('',$title); if (! empty($conf->notification->enabled)) $langs->load("mails"); $head = societe_prepare_head($object); diff --git a/htdocs/societe/consumption.php b/htdocs/societe/consumption.php index d8aad10d054..e581b6b8c29 100644 --- a/htdocs/societe/consumption.php +++ b/htdocs/societe/consumption.php @@ -98,8 +98,10 @@ $form = new Form($db); $formother = new FormOther($db); $productstatic=new Product($db); -$titre = $langs->trans("Referer",$object->name); -llxHeader('',$titre,''); +$title = $langs->trans("Referer",$object->name); +if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->name." - ".$title; +$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas'; +llxHeader('',$title,$help_url); if (empty($socid)) { diff --git a/htdocs/societe/document.php b/htdocs/societe/document.php index c2ad751f196..f3c217d0a54 100644 --- a/htdocs/societe/document.php +++ b/htdocs/societe/document.php @@ -82,8 +82,10 @@ include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php $form = new Form($db); +$title=$langs->trans("ThirdParty").' - '.$langs->trans("Files"); +if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->name.' - '.$langs->trans("Files"); $help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas'; -llxHeader('',$langs->trans("ThirdParty").' - '.$langs->trans("Files"),$help_url); +llxHeader('',$title,$help_url); if ($object->id) { diff --git a/htdocs/societe/info.php b/htdocs/societe/info.php index 9d06d203d9c..b3586c4f327 100644 --- a/htdocs/societe/info.php +++ b/htdocs/societe/info.php @@ -56,16 +56,16 @@ if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'e * View */ -$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas'; -llxHeader('',$langs->trans("ThirdParty"),$help_url); - $object = new Societe($db); $object->fetch($socid); $object->info($socid); -/* - * Affichage onglets - */ +$title=$langs->trans("ThirdParty"); +if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->name.' - '.$langs->trans("Info"); +$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas'; +llxHeader('',$title,$help_url); + + $head = societe_prepare_head($object); dol_fiche_head($head, 'info', $langs->trans("ThirdParty"),0,'company'); diff --git a/htdocs/societe/notify/card.php b/htdocs/societe/notify/card.php index 1845669dcfc..e5de6a89d92 100644 --- a/htdocs/societe/notify/card.php +++ b/htdocs/societe/notify/card.php @@ -123,11 +123,15 @@ if ($action == 'delete') $form = new Form($db); -llxHeader(); - $object = new Societe($db); $result=$object->fetch($socid); +$title=$langs->trans("ThirdParty").' - '.$langs->trans("Notification"); +if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->name.' - '.$langs->trans("Notification"); +$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas'; +llxHeader('',$title,$help_url); + + if ($result > 0) { $langs->load("other"); From 9b4f65587f4a0b6fa76a4e21fc10a4362fff7247 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 13:27:24 +0100 Subject: [PATCH 244/429] Fix option MAIN_HTML_TITLE --- htdocs/fourn/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index df2f09cc3e3..f94664531dd 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -111,8 +111,8 @@ if ($id > 0 && empty($object->id)) if ($object->id > 0) { - $title=$langs->trans("SupplierCard"); - if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->name; + $title=$langs->trans("ThirdParty")." - ".$langs->trans('SupplierCard'); + if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->name." - ".$langs->trans('SupplierCard'); $help_url=''; llxHeader('',$title, $help_url); From 622d8ad9b04764e91aa6f7fe4281600bc4385514 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 13:51:35 +0100 Subject: [PATCH 245/429] Remove duplicate entry --- htdocs/langs/en_US/suppliers.lang | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/langs/en_US/suppliers.lang b/htdocs/langs/en_US/suppliers.lang index fb7dbd26032..53b0618c7b1 100644 --- a/htdocs/langs/en_US/suppliers.lang +++ b/htdocs/langs/en_US/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Suppliers -Supplier=Supplier AddSupplier=Create a supplier SupplierRemoved=Supplier removed SuppliersInvoice=Suppliers invoice From dfe1ee7e7d26dbb5d73a8fff685d5d8223309a95 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 14:11:59 +0100 Subject: [PATCH 246/429] Fix: count of notification emails was wrong --- htdocs/langs/en_US/other.lang | 2 +- htdocs/societe/notify/card.php | 32 +++++++++++++++++++++++--------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index f5b39b3f704..1e3a7f038ff 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -54,7 +54,7 @@ MaxSize=Maximum size AttachANewFile=Attach a new file/document LinkedObject=Linked object Miscellaneous=Miscellaneous -NbOfActiveNotifications=Number of notifications +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/societe/notify/card.php b/htdocs/societe/notify/card.php index 1845669dcfc..388a271cd8c 100644 --- a/htdocs/societe/notify/card.php +++ b/htdocs/societe/notify/card.php @@ -169,6 +169,8 @@ if ($result > 0) print ''.$langs->trans("NbOfActiveNotifications").''; print ''; + $nb=0; + // List of per contact notifications $sql = "SELECT COUNT(n.rowid) as nb"; $sql.= " FROM ".MAIN_DB_PREFIX."notify_def as n"; $sql.= " WHERE fk_soc = ".$object->id; @@ -187,6 +189,13 @@ if ($result > 0) else { dol_print_error($db); } + // List of notifications enabled for fixed email + foreach($conf->global as $key => $val) + { + if (! preg_match('/^NOTIFICATION_FIXEDEMAIL_(.*)/', $key, $reg)) continue; + $listtmp=explode(',',$val); + $nb+=count($listtmp); + } print $nb; print ''; print ''; @@ -273,16 +282,21 @@ if ($result > 0) foreach($conf->global as $key => $val) { if (! preg_match('/^NOTIFICATION_FIXEDEMAIL_(.*)/', $key, $reg)) continue; - //print $key.' - '.$val.' - '.$reg[1].'
'; - print ''.$val; - if (isValidEmail($val)) + print ''; + $listtmp=explode(',',$val); + foreach($listtmp as $keyemail => $valemail) { - print ' <'.$val.'>'; - } - else - { - $langs->load("errors"); - print '   '.img_warning().' '.$langs->trans("ErrorBadEMail",$val); + $valemail=trim($valemail); + //print $keyemail.' - '.$valemail.' - '.$reg[1].'
'; + if (isValidEmail($valemail)) + { + print ' <'.$valemail.'>'; + } + else + { + $langs->load("errors"); + print '   '.img_warning().' '.$langs->trans("ErrorBadEMail",$valemail); + } } print ''; print ''; From 279e16a8112cafabc29e911828bdc2eeebddd5ed Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 14:24:32 +0100 Subject: [PATCH 247/429] grey disabled --- htdocs/theme/eldy/style.css.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 206b1df019e..e6dbf78d6a0 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -363,7 +363,7 @@ fieldset { border: 1px solid #AAAAAA !important; box-shadow: 2px 2px 3px #DDD; } } .buttonRefused { pointer-events: none; - cursor: default; + cursor: default; opacity: 0.4; filter: alpha(opacity=40); /* For IE8 and earlier */ box-shadow: none; @@ -2949,7 +2949,10 @@ div.dolEventError h1, div.dolEventError h2 { { border: 1px solid #aaa; } - +.select2-disabled +{ + color: #888; +} .select2-drop-active { border: 1px solid #aaa; From 895b2c6e9c79dec5377c335b0843f974992a6392 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 14:37:27 +0100 Subject: [PATCH 248/429] Fix bad merge --- htdocs/comm/action/peruser.php | 2 +- htdocs/core/lib/agenda.lib.php | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/htdocs/comm/action/peruser.php b/htdocs/comm/action/peruser.php index 0f281a91af4..15915b758e0 100644 --- a/htdocs/comm/action/peruser.php +++ b/htdocs/comm/action/peruser.php @@ -614,7 +614,7 @@ else if ($usergroup > 0) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ug ON u.rowid = ug.fk_user"; $sql.= " WHERE u.entity IN (".getEntity('user',1).")"; if ($usergroup > 0) $sql.= " AND ug.fk_usergroup = ".$usergroup; - if (GETPOST("usertodo","int",3) > 0) $sql.=" AND u.rowid = ".GETPOST("usertodo","int",3); + //if (GETPOST("usertodo","int",3) > 0) $sql.=" AND u.rowid = ".GETPOST("usertodo","int",3); //print $sql; $resql=$db->query($sql); if ($resql) diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index d277511785c..174b1c79092 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -140,10 +140,6 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh if (empty($conf->dol_use_jmobile)) print ' - '; print ''; print ''; - - print ''.$langs->trans("AgendaShowBirthdayEvents").' '; - print ''; - print ''; } // Hooks From a452823e1ed420c94091351390e340a558dd5476 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 15:20:08 +0100 Subject: [PATCH 249/429] Include option FCKEDITOR_ENABLE_DETAILS_FULL to restore compatibility with 3.6 --- htdocs/core/tpl/objectline_create.tpl.php | 4 +++- htdocs/core/tpl/objectline_edit.tpl.php | 4 +++- htdocs/theme/eldy/ckeditor/config.js | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index e3f2431783f..7cb2cc7cdf3 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -186,7 +186,9 @@ else { $nbrows=ROWS_2; $enabled=(! empty($conf->global->FCKEDITOR_ENABLE_DETAILS)?$conf->global->FCKEDITOR_ENABLE_DETAILS:0); if (! empty($conf->global->MAIN_INPUT_DESC_HEIGHT)) $nbrows=$conf->global->MAIN_INPUT_DESC_HEIGHT; - $doleditor=new DolEditor('dp_desc',GETPOST('dp_desc'),'',100,'dolibarr_details','',false,true,$enabled,$nbrows,'98%'); + $toolbarname='dolibarr_details'; + if (! empty($conf->global->FCKEDITOR_ENABLE_DETAILS_FULL)) $toolbarname='dolibarr_notes'; + $doleditor=new DolEditor('dp_desc',GETPOST('dp_desc'),'',100,$toolbarname,'',false,true,$enabled,$nbrows,'98%'); $doleditor->Create(); ?> diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php index 69550d546d5..c43b8be9e20 100644 --- a/htdocs/core/tpl/objectline_edit.tpl.php +++ b/htdocs/core/tpl/objectline_edit.tpl.php @@ -88,7 +88,9 @@ $coldisplay=-1; // We remove first td $nbrows=ROWS_2; if (! empty($conf->global->MAIN_INPUT_DESC_HEIGHT)) $nbrows=$conf->global->MAIN_INPUT_DESC_HEIGHT; $enable=(isset($conf->global->FCKEDITOR_ENABLE_DETAILS)?$conf->global->FCKEDITOR_ENABLE_DETAILS:0); - $doleditor=new DolEditor('product_desc',$line->description,'',164,'dolibarr_details','',false,true,$enable,$nbrows,'98%'); + $toolbarname='dolibarr_details'; + if (! empty($conf->global->FCKEDITOR_ENABLE_DETAILS_FULL)) $toolbarname='dolibarr_notes'; + $doleditor=new DolEditor('product_desc',$line->description,'',164,$toolbarname,'',false,true,$enable,$nbrows,'98%'); $doleditor->Create(); ?> diff --git a/htdocs/theme/eldy/ckeditor/config.js b/htdocs/theme/eldy/ckeditor/config.js index 97f1c0a0b62..cffaadfba6e 100644 --- a/htdocs/theme/eldy/ckeditor/config.js +++ b/htdocs/theme/eldy/ckeditor/config.js @@ -76,7 +76,7 @@ CKEDITOR.editorConfig = function( config ) [ ['Source','Maximize'], ['Cut','Copy','Paste','-','SpellChecker'], - ['Font','FontSize'], + ['Format','Font','FontSize'], ['Bold','Italic','Underline','Strike','Subscript','Superscript','-','TextColor','RemoveFormat'], ['NumberedList','BulletedList','Outdent','Indent'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], From b47e16fbe9ce92c7bc406791b20c8c93b0a36188 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 16:02:40 +0100 Subject: [PATCH 250/429] Update changelog --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index ae63471c9af..64cd43f7030 100644 --- a/ChangeLog +++ b/ChangeLog @@ -130,6 +130,7 @@ For translators: - New: When a translation is not available we always jump to en_US and only en_US. For developers: +- New: Syslog module can be set to use ChromePHP plugin to output log server into browser console. - New: Add a css style "cursorpointer". - New: Select list of users can return user into hierarchy. - New: getBrowserInfo can return type of layout of browser (classic/phone/tablet) From 5cc48c7c78b3d3cee1d84d1fc19de49d242824c5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 16:20:42 +0100 Subject: [PATCH 251/429] Prepare cleaning tools for release. --- dev/fixdosfiles.sh | 1 + dev/fixduplicatelangkey.sh | 1 + ...atefilelinesrecursively.sh => fixduplicatelines.sh} | 10 ++++++---- dev/fixperms.sh | 1 + dev/fixutf8bomfiles.sh | 1 + 5 files changed, 10 insertions(+), 4 deletions(-) rename dev/{deduplicatefilelinesrecursively.sh => fixduplicatelines.sh} (59%) diff --git a/dev/fixdosfiles.sh b/dev/fixdosfiles.sh index 30d47e7b0c4..e38e3d49d82 100755 --- a/dev/fixdosfiles.sh +++ b/dev/fixdosfiles.sh @@ -10,6 +10,7 @@ # Syntax if [ "x$1" != "xlist" -a "x$1" != "xfix" ] then + echo "Detect and fix files ending with bad ending chars (must be LF)" echo "Usage: fixdosfiles.sh [list|fix]" fi diff --git a/dev/fixduplicatelangkey.sh b/dev/fixduplicatelangkey.sh index 2d9cb7f7a85..ae0be750646 100755 --- a/dev/fixduplicatelangkey.sh +++ b/dev/fixduplicatelangkey.sh @@ -7,6 +7,7 @@ # Syntax if [ "x$1" != "xlist" -a "x$1" != "xfix" ] then + echo "Detect duplicate translation keys inside a file (there is no cross file check)." echo "Usage: detectduplicatelangkey.sh (list|fix)" fi diff --git a/dev/deduplicatefilelinesrecursively.sh b/dev/fixduplicatelines.sh similarity index 59% rename from dev/deduplicatefilelinesrecursively.sh rename to dev/fixduplicatelines.sh index a0eb14974f0..18f9707169e 100755 --- a/dev/deduplicatefilelinesrecursively.sh +++ b/dev/fixduplicatelines.sh @@ -9,17 +9,19 @@ # Syntax if [ "x$1" != "xlist" -a "x$1" != "xfix" ] then + echo "Find exact duplicated lines into file (not cross file checking)" echo "Usage: deduplicatefilelinesrecursively.sh [list|fix]" fi # To detect if [ "x$1" = "xlist" ] then - for file in `find . -type f -name *.lang` + for file in `find htdocs/langs/en_US -type f -name *.lang` do - if [ `sort "$file" | uniq -d | wc -l` -gt 0 ] + if [ `sort "$file" | grep -v '^$' | uniq -d | wc -l` -gt 0 ] then - echo "$file" + echo "***** $file" + sort "$file" | grep -v '^$' | uniq -d fi done fi @@ -27,7 +29,7 @@ fi # To fix if [ "x$1" = "xfix" ] then - for file in `find . -type f -name *.lang` + for file in `find htdocs/langs/en_US -type f -name *.lang` do awk -i inplace ' !x[$0]++' "$file" done; diff --git a/dev/fixperms.sh b/dev/fixperms.sh index 5844e8b2916..5b027ad1580 100755 --- a/dev/fixperms.sh +++ b/dev/fixperms.sh @@ -10,6 +10,7 @@ # Syntax if [ "x$1" != "xlist" -a "x$1" != "xfix" ] then + echo "Fix permissions of files" echo "Usage: fixperms.sh (list|fix)" fi diff --git a/dev/fixutf8bomfiles.sh b/dev/fixutf8bomfiles.sh index db34cdcdc1d..bda503d28ec 100755 --- a/dev/fixutf8bomfiles.sh +++ b/dev/fixutf8bomfiles.sh @@ -12,6 +12,7 @@ # Syntax if [ "x$1" != "xlist" -a "x$1" != "xfix" ] then + echo "Detect and fix bad UTF8 encoded files (UTF8 must not use BOM char)" echo "Usage: fixutf8bomfiles.sh (list|fix) [addincludes]" fi From 927925f4fdb50898d9bbef98f25aee229e98b61a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 17:42:50 +0100 Subject: [PATCH 252/429] Can also sync alternatives languages from transifex now. --- dev/fixaltlanguages.sh | 54 +++++++++++++++++++++++++ dev/translation/strip_language_file.php | 14 +++---- 2 files changed, 61 insertions(+), 7 deletions(-) create mode 100755 dev/fixaltlanguages.sh diff --git a/dev/fixaltlanguages.sh b/dev/fixaltlanguages.sh new file mode 100755 index 00000000000..d6d1946b7d1 --- /dev/null +++ b/dev/fixaltlanguages.sh @@ -0,0 +1,54 @@ +#!/bin/sh +# Recursively deduplicate file lines on a per file basis +# Useful to deduplicate language files +# +# Needs awk 4.0 for the inplace fixing command +# +# Raphaël Doursenaud - rdoursenaud@gpcsolutions.fr + +# Syntax +if [ "x$1" != "xlist" -a "x$1" != "xfix" ] +then + echo "Scan alternate language files and remove entries found into parent file" + echo "Usage: fixaltlanguages.sh (list|fix) (all|file.lang) [xx_XX]" + exit +fi +if [ "x$2" = "x" ] +then + echo "Scan alternate language files and remove entries found into parent file" + echo "Usage: fixaltlanguages.sh (list|fix) (all|file.lang) [xx_XX]" + exit +fi + +# To detect +if [ "x$1" = "xlist" ] +then + echo Feature not available +fi + +# To fix +if [ "x$1" = "xfix" ] +then + for dir in `find htdocs/langs/$3* -type d` + do + dirshort=`basename $dir` + #echo $dirshort + + export aa=`echo $dirshort | nawk -F"_" '{ print $1 }'` + export bb=`echo $dirshort | nawk -F"_" '{ print $2 }'` + aaupper=`echo $dirshort | nawk -F"_" '{ print toupper($1) }'` + bblower=`echo $dirshort | nawk -F"_" '{ print tolower($2) }'` + if [ "$aa" != "$bblower" ] + then + reflang="htdocs/langs/"$aa"_"$aaupper + if [ -d $reflang ] + then + echo "***** Process language "$aa"_"$bb" - Search original into "$reflang + echo $dirshort est une langue alternative de $reflang + echo ./dev/translation/strip_language_file.php $aa"_"$aaupper $aa"_"$bb $2 + ./dev/translation/strip_language_file.php $aa"_"$aaupper $aa"_"$bb $2 + for fic in `ls htdocs/langs/${aa}_${bb}/*.delta`; do f=`echo $fic | sed -e 's/\.delta//'`; echo $f; mv $f.delta $f; done + fi + fi + done; +fi diff --git a/dev/translation/strip_language_file.php b/dev/translation/strip_language_file.php index 42a70c8c1a6..e3c31b89b58 100755 --- a/dev/translation/strip_language_file.php +++ b/dev/translation/strip_language_file.php @@ -25,7 +25,7 @@ * * Usage: * cd htdocs/langs - * ../../dev/translation/strip_language_file.php [file.lang|all] + * ./dev/translation/strip_language_file.php [file.lang|all] * * To rename all .delta files, you can do * for fic in `ls *.delta`; do f=`echo $fic | sed -e 's/\.delta//'`; echo $f; mv $f.delta $f; done @@ -66,7 +66,7 @@ if (empty($lPrimary) || empty($lSecondary) || empty($filesToProcess)) { $rc = 1; $msg = '***** Script to clean language files *****'."\n"; - $msg.= 'Usage: ../../dev/translation/strip_language_file.php xx_XX xx_YY [file.lang|all]'."\n"; + $msg.= 'Usage: ./dev/translation/strip_language_file.php xx_XX xx_YY [file.lang|all]'."\n"; print $msg . "(rc=$rc).\n"; exit($rc); } @@ -77,7 +77,7 @@ $aSecondary = array(); // Define array $filesToProcess if ($filesToProcess == 'all') { - $dir = new DirectoryIterator($lPrimary); + $dir = new DirectoryIterator('htdocs/langs/'.$lPrimary); while($dir->valid()) { if(!$dir->isDot() && $dir->isFile() && ! preg_match('/^\./',$dir->getFilename())) { $files[] = $dir->getFilename(); @@ -94,8 +94,8 @@ else $filesToProcess=explode(',',$filesToProcess); // Loop on each file foreach($filesToProcess as $fileToProcess) { - $lPrimaryFile = $lPrimary.'/'.$fileToProcess; - $lSecondaryFile = $lSecondary.'/'.$fileToProcess; + $lPrimaryFile = 'htdocs/langs/'.$lPrimary.'/'.$fileToProcess; + $lSecondaryFile = 'htdocs/langs/'.$lSecondary.'/'.$fileToProcess; $output = $lSecondaryFile . '.delta'; print "---- Process language file ".$lSecondaryFile."\n"; @@ -270,8 +270,8 @@ foreach($filesToProcess as $fileToProcess) print "Output can be found at $output.\n"; - print "To rename all .delta files, you can do\n"; - print 'for fic in `ls *.delta`; do f=`echo $fic | sed -e \'s/\.delta//\'`; echo $f; mv $f.delta $f; done'."\n"; + print "To rename all .delta files, you can do:\n"; + print '> for fic in `ls htdocs/langs/'.$lSecondary.'/*.delta`; do f=`echo $fic | sed -e \'s/\.delta//\'`; echo $f; mv $f.delta $f; done'."\n"; } From f75749cc2b3232ab586d73e1cf04abe0f2fce4ed Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 17:43:04 +0100 Subject: [PATCH 253/429] Sync transifex --- htdocs/langs/de_AT/admin.lang | 2 -- htdocs/langs/es_AR/admin.lang | 2 +- htdocs/langs/es_CL/admin.lang | 6 ++---- htdocs/langs/es_DO/admin.lang | 4 +--- htdocs/langs/es_HN/admin.lang | 2 +- htdocs/langs/es_MX/admin.lang | 2 +- htdocs/langs/es_PE/admin.lang | 2 +- htdocs/langs/es_PR/admin.lang | 2 +- htdocs/langs/pt_BR/accountancy.lang | 9 ++++----- htdocs/langs/pt_BR/admin.lang | 4 ---- htdocs/langs/pt_BR/agenda.lang | 1 - htdocs/langs/pt_BR/banks.lang | 3 --- htdocs/langs/pt_BR/boxes.lang | 1 - htdocs/langs/pt_BR/categories.lang | 3 --- htdocs/langs/pt_BR/commercial.lang | 1 - htdocs/langs/pt_BR/companies.lang | 3 --- htdocs/langs/pt_BR/compta.lang | 4 ---- htdocs/langs/pt_BR/contracts.lang | 3 --- htdocs/langs/pt_BR/install.lang | 5 ----- htdocs/langs/pt_BR/languages.lang | 3 --- htdocs/langs/pt_BR/mails.lang | 2 -- htdocs/langs/pt_BR/main.lang | 16 +--------------- htdocs/langs/pt_BR/other.lang | 1 - htdocs/langs/pt_BR/products.lang | 1 - htdocs/langs/pt_BR/projects.lang | 8 -------- htdocs/langs/pt_BR/resource.lang | 9 --------- htdocs/langs/pt_BR/users.lang | 6 ------ 27 files changed, 13 insertions(+), 92 deletions(-) diff --git a/htdocs/langs/de_AT/admin.lang b/htdocs/langs/de_AT/admin.lang index 3e63292c41f..72053d81e4b 100644 --- a/htdocs/langs/de_AT/admin.lang +++ b/htdocs/langs/de_AT/admin.lang @@ -70,9 +70,7 @@ Permission2413=Maßnahmen (Termine oder Aufgaben) Anderer löschen Permission2501=Dokumente hochladen oder löschen DictionaryCompanyType=Art des Unternehmens DictionaryCompanyJuridicalType=Rechtsform -DictionaryProspectLevel=Geschäftsaussicht DictionaryCanton=Bundesland -DictionaryActions=Maßnahmen VATReceivedOnly=Nur Mehtwertsteuererhalt VATIsNotUsedDesc=Die vorgeschlagene MwSt. ist standardmäßig 0 für alle Fälle wie Stiftungen, Einzelpersonen oder Kleinunternehmen- VATIsUsedExampleFR=In France, it means companies or organisations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. diff --git a/htdocs/langs/es_AR/admin.lang b/htdocs/langs/es_AR/admin.lang index 6aa9664cdfb..39a4dac9a4e 100644 --- a/htdocs/langs/es_AR/admin.lang +++ b/htdocs/langs/es_AR/admin.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - es_AR - admin +# Dolibarr language file - Source file is en_US - admin Module30Name=Facturas y notas de crédito Module30Desc=Gestión de facturas y notas de crédito a clientes. Gestión facturas de proveedores BillsNumberingModule=Módulo de numeración de facturas y notas de crédito diff --git a/htdocs/langs/es_CL/admin.lang b/htdocs/langs/es_CL/admin.lang index 20f6fdfea33..a1849146e7f 100644 --- a/htdocs/langs/es_CL/admin.lang +++ b/htdocs/langs/es_CL/admin.lang @@ -1,3 +1,4 @@ +# Dolibarr language file - Source file is en_US - admin Module20Name=Cotizaciones Module20Desc=Gestión de cotizaciones/propuestas comerciales Permission21=Consultar cotizaciones @@ -7,10 +8,7 @@ Permission25=Enviar las cotizaciones Permission26=Cerrar cotizaciones Permission27=Eliminar cotizaciones Permission28=Exportar las cotizaciones -DictionnarySource=Orígenes de cotizaciones/pedidos VATIsUsedDesc=El tipo de IVA propuesto por defecto en las creaciones de cotizaciones, facturas, pedidos, etc. Responde a la siguiente regla:
Si el vendedor no está sujeto a IVA, IVA por defecto=0. Final de regla.
Si el país del vendedor= país del comprador entonces IVA por defecto=IVA del producto vendido. Final de regla.
Si vendedor y comprador residen en la Comunidad Europea y el bien vendido= nuevo medio de transportes (auto, barco, avión), IVA por defecto=0 (el IVA debe ser pagado por comprador a la hacienda pública de su país y no al vendedor). Final de regla
Si vendedor y comprador residen en la Comunidad Europea y comprador= particular o empresa sin NIF intracomunitario entonces IVA por defecto=IVA del producto vendido. Final de regla.
Si vendedor y comprador residen en la Comunidad Europea y comprador= empresa con NIF intracomunitario entonces IVA por defecto=0. Final de regla.
Si no, IVA propuesto por defecto=0. Final de regla.
-VATIsNotUsedDesc=El tipo de IVA propuesto por defecto es 0. Este es el caso de asociaciones, particulares o algunas pequeñas sociedades. -VATIsUsedExampleFR=En Francia, se trata de las sociedades u organismos que eligen un régimen fiscal general (General simplificado o General normal), régimen en el cual se declara el IVA. Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Tolerancia de retraso antes de la alerta (en días) sobre cotizaciones a cerrar Delays_MAIN_DELAY_PROPALS_TO_BILL=Tolerancia de retraso antes de la alerta (en días) sobre cotizaciones no facturadas WebCalAddEventOnStatusPropal=Añadir evento en el calendario en el cambio de estado de las cotizaciones @@ -20,4 +18,4 @@ ProposalsPDFModules=Modelos de documentos de cotizaciones HideTreadedPropal=Ocultar las cotizaciones procesados del listado FreeLegalTextOnProposal=Texto libre en cotizaciones WatermarkOnDraftProposal=Marca de agua en cotizaciones borrador (en caso de estar vacío) -FCKeditorForProductDetails=Creación/edición WYSIWIG de las líneas de detalle de los productos (en pedidos, cotizaciones, facturas, etc.) \ No newline at end of file +FCKeditorForProductDetails=Creación/edición WYSIWIG de las líneas de detalle de los productos (en pedidos, cotizaciones, facturas, etc.) diff --git a/htdocs/langs/es_DO/admin.lang b/htdocs/langs/es_DO/admin.lang index 8fcc2394a87..f4213f15cbc 100644 --- a/htdocs/langs/es_DO/admin.lang +++ b/htdocs/langs/es_DO/admin.lang @@ -13,12 +13,10 @@ VATIsUsedExampleFR=En Francia, se trata de las sociedades u organismos que elige VATIsNotUsedExampleFR=En Francia, se trata de asociaciones exentas de ITBIS o sociedades, organismos o profesiones liberales que han elegido el régimen fiscal de módulos (ITBIS en franquicia), pagando un ITBIS en franquicia sin hacer declaración de IVA. Esta elección hace aparecer la anotación "IVA no aplicable - art-293B del CGI" en las facturas. LocalTax1IsUsedDesc=Uso de un 2º tipo de impuesto (Distinto del ITBIS) LocalTax1IsNotUsedDesc=No usar un 2º tipo de impuesto (Distinto del ITBIS) -LocalTax2IsUsedDesc=Uso de un 3er. tipo de impuesto (Distinto del IVA) -LocalTax2IsNotUsedDesc=No usar un 3er. tipo de impuesto (Distinto del IVA) UnitPriceOfProduct=Precio unitario sin ITBIS de un producto ShowVATIntaInAddress=Ocultar el identificador ITBIS en las direcciones de los documentos OptionVatMode=Opción de carga de ITBIS OptionVatDefaultDesc=La carga del ITBIS es:
-en el envío de los bienes (en la práctica se usa la fecha de la factura)
-sobre el pago por los servicios OptionVatDebitOptionDesc=La carga del ITBIS es:
-en el envío de los bienes (en la práctica se usa la fecha de la factura)
-sobre la facturación de los servicios SummaryOfVatExigibilityUsedByDefault=Tiempo de exigibilidad de ITBIS por defecto según la opción eligida -YourCompanyDoesNotUseVAT=Su empresa está configurada como no sujeta al ITBIS (Inicio - Configuración - Empresa/Institución), por lo que no hay opción para la paremetrización del ITBIS. \ No newline at end of file +YourCompanyDoesNotUseVAT=Su empresa está configurada como no sujeta al ITBIS (Inicio - Configuración - Empresa/Institución), por lo que no hay opción para la paremetrización del ITBIS. diff --git a/htdocs/langs/es_HN/admin.lang b/htdocs/langs/es_HN/admin.lang index a823583bd50..1008ca5171d 100644 --- a/htdocs/langs/es_HN/admin.lang +++ b/htdocs/langs/es_HN/admin.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - es_HN - admin +# Dolibarr language file - Source file is en_US - admin Permission91=Consultar impuestos e ISV Permission92=Crear/modificar impuestos e ISV Permission93=Eliminar impuestos e ISV diff --git a/htdocs/langs/es_MX/admin.lang b/htdocs/langs/es_MX/admin.lang index b8c2794cf3c..39a4dac9a4e 100644 --- a/htdocs/langs/es_MX/admin.lang +++ b/htdocs/langs/es_MX/admin.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - es_MX - admin +# Dolibarr language file - Source file is en_US - admin Module30Name=Facturas y notas de crédito Module30Desc=Gestión de facturas y notas de crédito a clientes. Gestión facturas de proveedores BillsNumberingModule=Módulo de numeración de facturas y notas de crédito diff --git a/htdocs/langs/es_PE/admin.lang b/htdocs/langs/es_PE/admin.lang index 877beecd423..4e81dca9011 100644 --- a/htdocs/langs/es_PE/admin.lang +++ b/htdocs/langs/es_PE/admin.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - es_PU - admin +# Dolibarr language file - Source file is en_US - admin Permission91=Consultar impuestos e IGV Permission92=Crear/modificar impuestos e IGV Permission93=Eliminar impuestos e IGV diff --git a/htdocs/langs/es_PR/admin.lang b/htdocs/langs/es_PR/admin.lang index f5906e9e162..ac75565a66b 100644 --- a/htdocs/langs/es_PR/admin.lang +++ b/htdocs/langs/es_PR/admin.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - es_PR - admin +# Dolibarr language file - Source file is en_US - admin Permission91=Consultar impuestos e IVU Permission92=Crear/modificar impuestos e IVU Permission93=Eliminar impuestos e IVU diff --git a/htdocs/langs/pt_BR/accountancy.lang b/htdocs/langs/pt_BR/accountancy.lang index 26dd25027a2..c64e3933a2b 100644 --- a/htdocs/langs/pt_BR/accountancy.lang +++ b/htdocs/langs/pt_BR/accountancy.lang @@ -1,14 +1,11 @@ # Dolibarr language file - Source file is en_US - accountancy Accounting=Contabilidade Globalparameters=Parametros globais -Fiscalyear=Ano fiscal Menuaccount=Contas contábeis ConfigAccountingExpert=Configuração do módulo especialista em contabilidade Journaux=Jornais JournalFinancial=Jornais financeiros -Exports=Exportações Selectmodelcsv=Escolha um modelo de exportação -Modelcsv_normal=Exportação classica Modelcsv_CEGID=Export towards CEGID Expert BackToChartofaccounts=Return chart of accounts Back=Return @@ -58,6 +55,10 @@ ACCOUNTING_MISCELLANEOUS_JOURNAL=Miscellaneous journal ACCOUNTING_SOCIAL_JOURNAL=Social journal ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account of transfer ACCOUNTING_ACCOUNT_SUSPENSE=Account of wait +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Codigo contavel padrao para compra de produtos +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Codigo contavel padrao para venda de produtos +ACCOUNTING_SERVICE_BUY_ACCOUNT=Codigo contavel padrao para compra de servicos +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Codigo contavel padrao para venda de serviços Docref=Referência Code_tiers=Cliente/Fornecedor Labelcompte=Label account @@ -80,8 +81,6 @@ ListAccounts=List of the accounting accounts Pcgversion=Version of the plan Pcgtype=Class of account Pcgsubtype=Under class of account -Active=Statement -NewFiscalYear=New fiscal year DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers TotalVente=Total turnover HT TotalMarge=Total sales margin diff --git a/htdocs/langs/pt_BR/admin.lang b/htdocs/langs/pt_BR/admin.lang index 1211cf13d32..82d5c26f1bd 100644 --- a/htdocs/langs/pt_BR/admin.lang +++ b/htdocs/langs/pt_BR/admin.lang @@ -94,7 +94,6 @@ YouCanEditPHPTZ=Para definir um fuso horário diferente PHP (não obrigatório), OSEnv=OS Ambiente MaxNbOfLinesForBoxes=Numero de linhas máximo para as caixas PositionByDefault=Posição por padrao -Position=Posição MenusDesc=Os configuradores do menu definem o conteúdo das 2 barras de menus (a barra horizontal e a barra vertical). É possível atribuir configuradores diferentes segundo o usuário seja interno ou externo. MenusEditorDesc=O editor de menus permite definir entradas personalizadas nos menus. Deve utilizar com prudência sobe pena de colocar o ERP numa situação instável sendo necessário uma reinstalação para encontrar um menu coerente. MenuForUsers=menu para os usuarios @@ -103,7 +102,6 @@ SystemInfo=Informações de Sistema SystemTools=Ferramentas do Sistema SystemToolsArea=Área de ferramentas do sistema SystemToolsAreaDesc=Esta área oferece diferentes funções da administração. Use o menu para escolher a Funcionalidade que procura. -Purge=Limpar PurgeAreaDesc=Esta página permite eliminar todos os arquivos criados ou guardados pelo ERP (Arquivos temporários ou todos os arquivos da pasta %s). O uso desta função não é necessária. Proporciona-se para os Usuários que albergam o ERP não servidor que oferece as permissões de eliminação de arquivos salvaguardados pela servidor Web. PurgeDeleteLogFile=Excluir arquivo de log % s definido para o módulo Syslog (sem risco de perder dados) PurgeDeleteTemporaryFiles=Eliminar todos os arquivos temporários (sem perigo de perca de dados) @@ -487,7 +485,6 @@ Permission1237=Pedidos a fornecedores Export e seus detalhes Permission1251=Execute as importações em massa de dados externos para o banco de dados (carga de dados) Permission1321=Exportar faturas a clientes, atributos e cobranças Permission1421=Exportar faturas de clientes e atributos -Permission23001 =Ler tarefa agendada Permission23002 =Criar/atualizar tarefa agendada Permission23003 =Apagar tarefa agendada Permission2401=Ler ações (eventos ou tarefas) vinculadas na sua conta @@ -541,7 +538,6 @@ LocalTax1IsUsed=Utilize segundo imposto LocalTax1IsNotUsed=Não use o segundo imposto LocalTax1IsUsedDesc=Use um segundo tipo de impostos (excepto o IVA) LocalTax1IsNotUsedDesc=Não use outro tipo de impostos (excepto o IVA) -LocalTax1Management=Segundo tipo de imposto LocalTax2IsUsed=Use terceiro imposto LocalTax2IsNotUsed=Não use terceiro imposto LocalTax2IsUsedDesc=Use um terceiro tipo de impostos (excepto o VAT) diff --git a/htdocs/langs/pt_BR/agenda.lang b/htdocs/langs/pt_BR/agenda.lang index e6bf3c55b2a..07a485a30f7 100644 --- a/htdocs/langs/pt_BR/agenda.lang +++ b/htdocs/langs/pt_BR/agenda.lang @@ -2,7 +2,6 @@ IdAgenda=ID evento Actions=Eventos ActionsArea=Área de eventos (Atividades e Tarefas) -LocalAgenda=Calendário interno ActionsOwnedBy=Evento de propriedade do DoneBy=Concluído por Event=Evento diff --git a/htdocs/langs/pt_BR/banks.lang b/htdocs/langs/pt_BR/banks.lang index 90bb4e1584c..c111878d3d6 100644 --- a/htdocs/langs/pt_BR/banks.lang +++ b/htdocs/langs/pt_BR/banks.lang @@ -20,8 +20,6 @@ CurrentBalance=Saldo atual ShowAllTimeBalance=Mostrar Balanço Desde do Inicio AllTime=Do inicio RIB=Conta Bancaria -StandingOrders=Débitos Diretos -StandingOrder=Domicilio AccountStatement=Extrato da Conta AccountStatementShort=Extrato AccountStatements=Extratos das Contas @@ -112,7 +110,6 @@ ThenCheckLinesAndConciliate=Verificar as linhas presentes no relatorio do banco BankDashboard=Somario de contas bancarias DefaultRIB=BAN padrao AllRIB=Todos BAN -LabelRIB=Etiqueta BAN NoBANRecord=Nao tem registro BAN DeleteARib=Apagar registro BAN ConfirmDeleteRib=Voce tem certeza que quer apagar este registro BAN ? diff --git a/htdocs/langs/pt_BR/boxes.lang b/htdocs/langs/pt_BR/boxes.lang index c1e1dde6f55..1dfd31bd357 100644 --- a/htdocs/langs/pt_BR/boxes.lang +++ b/htdocs/langs/pt_BR/boxes.lang @@ -7,7 +7,6 @@ BoxOldestUnpaidSupplierBills=Primeira fatura pendentes do fornecedor BoxLastActions=Últimas ações BoxLastContracts=Últimos contratos BoxLastContacts=Últimos contatos/endereços -BoxFicheInter=Últimas intervenções BoxCurrentAccounts=Abrir saldo das contas BoxTotalUnpaidCustomerBills=Total de faturas pendentes de clientes BoxTotalUnpaidSuppliersBills=Total de faturas pendentes de fornecedores diff --git a/htdocs/langs/pt_BR/categories.lang b/htdocs/langs/pt_BR/categories.lang index 9ea64949849..539954acb35 100644 --- a/htdocs/langs/pt_BR/categories.lang +++ b/htdocs/langs/pt_BR/categories.lang @@ -43,11 +43,8 @@ CatCusLinks=Linkes entre clientes/prospetivas e categorias CatProdLinks=Linkes entre produtos/servicos e categorias CatMemberLinks=Linkes entre membros e categorias DeleteFromCat=Excluir da categoria -DeletePicture=Apagar foto -ConfirmDeletePicture=Confirmar eliminação de fotografias ExtraFieldsCategories=atributos complementares CategoriesSetup=Configuração de categorias CategorieRecursiv=Ligação com a categoria automaticamente CategorieRecursivHelp=Se ativado, o produto também será ligada a categoria original quando adicionando em uma subcategoria AddProductServiceIntoCategory=Adicione o seguinte produto / serviço -ShowCategory=Mostrar categoria diff --git a/htdocs/langs/pt_BR/commercial.lang b/htdocs/langs/pt_BR/commercial.lang index 68b7321fe1b..e714cacf5f4 100644 --- a/htdocs/langs/pt_BR/commercial.lang +++ b/htdocs/langs/pt_BR/commercial.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - commercial CommercialArea=Área Comercial -CommercialCard=Ficha Comercial DeleteAction=Eliminar um evento/tarefa NewAction=Novo evento/tarefa AddAction=Criar evento/tarefa diff --git a/htdocs/langs/pt_BR/companies.lang b/htdocs/langs/pt_BR/companies.lang index 7d3adf0d865..c730091cccb 100644 --- a/htdocs/langs/pt_BR/companies.lang +++ b/htdocs/langs/pt_BR/companies.lang @@ -22,7 +22,6 @@ Contacts=Contatos ThirdPartyContacts=Contatos de clientes/fornecedores ThirdPartyContact=Contato/Endereço de cliente/fornecedor StatusContactValidated=Estado do Contato -CompanyName=Razão Social CountryIsInEEC=País da Comunidadeee Económica Europeia ThirdPartyName=Nome do cliente/fornecedor ThirdParty=Cliente/Fornecedor @@ -56,7 +55,6 @@ LocalTax2IsUsedES=Sujeito a IRPF LocalTax2IsNotUsedES=Não sujeito a IRPF TypeLocaltax1ES=RE Tipo TypeLocaltax2ES=IRPF Tipo -TypeES=Tipo WrongCustomerCode=Código cliente incorreto WrongSupplierCode=Código do fornecedor incorreto ProfId5Short=Prof. id 5 @@ -108,7 +106,6 @@ ContactsAddresses=Contatos/Enderecos NoContactDefinedForThirdParty=Nenhum contato definido para este cliente/fornecedor NoContactDefined=Nenhum contato definido DefaultContact=Contato por Padrao -AddCompany=Criar empresa AddThirdParty=Criar cliente/fornecedor SupplierCode=Código do fornecedor SupplierAccount=Conta do fornecedor diff --git a/htdocs/langs/pt_BR/compta.lang b/htdocs/langs/pt_BR/compta.lang index c50fcd7173d..d59bdbfeb77 100644 --- a/htdocs/langs/pt_BR/compta.lang +++ b/htdocs/langs/pt_BR/compta.lang @@ -133,10 +133,6 @@ CalculationRuleDesc=Para calcular o total do VAT, há dois métodos:
Métod CalculationRuleDescSupplier=De acordo com o fornecedor, escolher o método adequado aplicar mesma regra de cálculo e obter mesmo resultado esperado pelo seu fornecedor. TurnoverPerProductInCommitmentAccountingNotRelevant=Relatório Volume de negócios por produto, quando se usa um modo de contabilidade de caixa não é relevante. Este relatório está disponível somente quando utilizar o modo de contabilidade engajamento (ver configuração do módulo de contabilidade). AccountancyJournal=Codigo do jornal fiscal -ACCOUNTING_PRODUCT_BUY_ACCOUNT=Codigo contavel padrao para compra de produtos -ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Codigo contavel padrao para venda de produtos -ACCOUNTING_SERVICE_BUY_ACCOUNT=Codigo contavel padrao para compra de servicos -ACCOUNTING_SERVICE_SOLD_ACCOUNT=Codigo contavel padrao para venda de serviços ACCOUNTING_VAT_ACCOUNT=Codigo contavel padrao para credito VAT ACCOUNTING_VAT_BUY_ACCOUNT=Codigo contavel padrao para pagamento do VAT ACCOUNTING_ACCOUNT_CUSTOMER=Codigo contavel padrao para clientes diff --git a/htdocs/langs/pt_BR/contracts.lang b/htdocs/langs/pt_BR/contracts.lang index 33c7bf3054f..1ef7f2f6dc0 100644 --- a/htdocs/langs/pt_BR/contracts.lang +++ b/htdocs/langs/pt_BR/contracts.lang @@ -3,10 +3,7 @@ ContractsArea=Área Contratos ListOfContracts=Lista de Contratos AllContracts=Todos os Contratos ContractCard=Ficha Contrato -ContractStatus=Estado do Contrato ContractStatusNotRunning=Fora de Serviço -ContractStatusRunning=Em Serviço -ContractStatusClosed=Encerrado ServiceStatusInitial=Inativo ServiceStatusRunning=Em Serviço ServiceStatusNotLate=Rodando, nao vencido diff --git a/htdocs/langs/pt_BR/install.lang b/htdocs/langs/pt_BR/install.lang index 0f356aad94d..c312f8dc18d 100644 --- a/htdocs/langs/pt_BR/install.lang +++ b/htdocs/langs/pt_BR/install.lang @@ -26,7 +26,6 @@ ErrorDatabaseAlreadyExists=Base de dados' %s' já existe. IfDatabaseNotExistsGoBackAndUncheckCreate=Se não existe base de dados, volte e verifique a opção "Criar uma base de dados". IfDatabaseExistsGoBackAndCheckCreate=Caso dados já existe, volte e desmarque "Criar uma base de dados" opção. WarningBrowserTooOld=Navegador antigo. Faça a atualizaçao do seu navegador para uma versao mais recente de Firefox, Chrome ou Opera, e altamente recomendado. -YouCanContinue=Pode continuar... License=A usar licença ConfigurationFile=Arquivo de configuração WebPagesDirectory=Directoria onde armazenar as páginas web @@ -34,13 +33,11 @@ DocumentsDirectory=Directoria onde armazenar documentos enviados e/ou gerados ForceHttps=Forcar conexoes seguras (https) CheckToForceHttps=Escolha esta opcao para forcar conexoes seguras (https).
Isto requere que o servidor web esta configurado para uso com certificado SSL. DolibarrDatabase=Base de dados Dolibarr -Server=Servidor DatabasePrefix=Prefixo tabela banco de dados AdminLogin=Login para o administrador da base de dados Dolibarr. Deixar em branco se a conexão é feita com anônimo PasswordAgain=Introduza a password uma segunda vez AdminPassword=Password para o administrador da base de dados Dolibarr. Deixar em branco se a conexão é feita com anônimo CreateDatabase=Criar uma base de dados -CreateUser=Criar usuário DatabaseSuperUserAccess=Base de dados - Acesso Superuser Experimental=(experimental, não operacional) KeepEmptyIfNoPassword=Deixar em branco se o usuário não tiver password @@ -69,7 +66,6 @@ WarningRemoveInstallDir=Atenção, por razões de segurança, uma vez que a inst ThisPHPDoesNotSupportTypeBase=PHP Este sistema não suporta qualquer tipo de interface para acesso de dados %s DatabaseMigration=Estrutura migração de dados FreshInstall=Fresh instalar -Upgrade=Upgrade UpgradeDesc=Use este modo se você tiver substituído Dolibarr antigos arquivos com arquivos de uma versão mais recente. Isto irá atualizar o seu banco de dados e dados. InstallNotAllowed=Instalação não permitidas pela conf.php permissões YouMustCreateWithPermission=Você deve criar o arquivo %s e definir permissões escrever sobre ele para instalar o servidor web durante o processo. @@ -92,7 +88,6 @@ NextStepMightLastALongTime=O passo seguinte pode demorar alguns minutos. Por fav MigrationCustomerOrderShipping=Migrar espedicao para pedidos de cliente de armazenamento MigrationShippingDelivery=Atualizar armazenamento de espediçoes MigrationShippingDelivery2=Atualizar armazenamento de espediçao 2 -MigrationFinished=Migração terminada LastStepDesc=Ultimo passo: Defina aqui o usuario e a senha que voce planeja usar para conectar-se ao software. Nao perca estas credenciais, pois sao da conta que administra todas as outras contas. ActivateModule=Ativar modulo %s ShowEditTechnicalParameters=Clique aqui para mostrar/editar parametros avançados (modo avançado) diff --git a/htdocs/langs/pt_BR/languages.lang b/htdocs/langs/pt_BR/languages.lang index b6de66e3bb3..c922daac4f7 100644 --- a/htdocs/langs/pt_BR/languages.lang +++ b/htdocs/langs/pt_BR/languages.lang @@ -15,8 +15,6 @@ Language_en_IN=Ingles (India) Language_en_NZ=Ingles (Nova Zelandia) Language_en_SA=Ingles (Arabia Saudita) Language_en_US=Ingles (Estados Unidos) -Language_es_DO=Espanhol (República Dominicana) -Language_es_CL=Espanhol (Chile) Language_es_MX=Espanhol (Mexico) Language_et_EE=Estone Language_fa_IR=Persio @@ -27,7 +25,6 @@ Language_fr_CH=Françes (Suiça) Language_fr_FR=Françes Language_he_IL=Ebreo Language_hu_HU=Ungeres -Language_id_ID=Indonésio Language_is_IS=Islandes Language_ja_JP=Japones Language_nb_NO=Norveges (Bokmal) diff --git a/htdocs/langs/pt_BR/mails.lang b/htdocs/langs/pt_BR/mails.lang index 71482c658bd..5dddd399559 100644 --- a/htdocs/langs/pt_BR/mails.lang +++ b/htdocs/langs/pt_BR/mails.lang @@ -12,8 +12,6 @@ Unsuscribe=Desenscrever MailingStatusNotContact=Nao contactar mais ErrorMailRecipientIsEmpty=A endereço do destinatário está vazia WarningNoEMailsAdded=nenhum Novo e-mail a Adicionar à lista destinatários. -ConfirmResetMailing=Confirma a limpeza do mailing? -NbOfRecipients=Número de destinatários NbOfUniqueEMails=N� de e-mails únicos NbOfEMails=N� de E-mails TotalNbOfDistinctRecipients=Número de destinatários únicos diff --git a/htdocs/langs/pt_BR/main.lang b/htdocs/langs/pt_BR/main.lang index be5e7c3b146..06cea34b38c 100644 --- a/htdocs/langs/pt_BR/main.lang +++ b/htdocs/langs/pt_BR/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=dd/MM/yyyy FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/mm/yy FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI FormatHourShort=%I:%M %p FormatHourShortDuration=%H:%M FormatDateTextShort=%b %d, %Y @@ -18,7 +19,6 @@ FormatDateHourShort=%d/%m/%Y %I:%M %p FormatDateHourSecShort=%d/%m/%Y %I:%M:%S %p FormatDateHourTextShort=%d %b, %Y, %I:%M %p FormatDateHourText=%d %B, %Y, %I:%M %p -DatabaseConnection=Login à Base de Dados NoRecordFound=Registro nao encontrado NoError=Sem erro ErrorFieldFormat=O campo '%s' tem um valor incorreto @@ -41,8 +41,6 @@ ErrorFailedToSaveFile=Erro, o registo do arquivo falhou. SelectDate=Selecionar uma data SeeAlso=Ver tambem %s BackgroundColorByDefault=Cor do fundo padrão -FileNotUploaded=O arquivo nao foi carregado -FileUploaded=O arquivo foi carregado com sucesso FileWasNotUploaded=O arquivo foi selecionado, mas nao foi ainda enviado. Clique no "Anexar arquivo" para proceder. NbOfEntries=Nr. de entradas GoToWikiHelpPage=Ler ajuda online ( necesita de acosso a internet) @@ -69,10 +67,8 @@ PageWiki=Pagina wiki PeriodEndDate=Data final periodo Activate=Ativar Activated=Ativado -Closed=Encerrado Closed2=Encerrado Enabled=Ativado -Deprecated=Obsoleto Disable=Desativar Disabled=Desativado AddActionToDo=Adicionar ação a realizar @@ -81,18 +77,14 @@ TestConnection=Teste a login ConfirmClone=Selecciones dados que deseja Cópiar. Go=Ir Run=Attivo -SearchOf=Procurar Upload=Enviar Arquivo -Select=Selecionar Resize=Modificar tamanho Recenter=Recolocar no centro User=Usuário Users=Usuário -Password=Senha PasswordRetype=Repetir Senha NoteSomeFeaturesAreDisabled=Antenção, só poucos módulos/funcionalidade foram ativados nesta demo CurrentValue=Valor atual -CurrentNote=Nota atual DefaultModel=Modelo Padrão Action=Ação NumberByMonth=Numero por mes @@ -113,7 +105,6 @@ days=Dias Morning=Manha Quadri=Trimistre UseLocalTax=Incluindo taxa -Tb=Tb Copy=Cópiar Default=Padrao DefaultValue=Valor por default @@ -149,7 +140,6 @@ HT=Sem ICMS TTC=ICMS Incluido VAT=ICMS VATRate=Taxa ICMS -FullList=Lista Completa OtherStatistics=Outras estatisticas Favorite=Favorito ShortInfo=Info. @@ -173,12 +163,10 @@ RequestAlreadyDone=Pedido ja registrado GeneratedOn=Gerado a %s Available=Disponivel NotYetAvailable=Ainda não disponível -NotAvailable=Não disponível to=para Drafts=Drafts ByUsers=Por usuário Preview=Preview -Login=Login CurrentLogin=Login atual JanuaryMin=Jan FebruaryMin=Fev @@ -249,7 +237,6 @@ CloneMainAttributes=Clonar o objeto com estes atributos PDFMerge=Fusão de PDF Merge=Fusão PrintContentArea=Mostrar pagina a se imprimir na area principal -MenuManager=Administração do menu NoMenu=Sem sub-menu WarningYouAreInMaintenanceMode=Atenção, voce esta no modo de manutenção, somente o login %s tem permissões para uso da aplicação no momento. CoreErrorMessage=Occoreu erro. Verifique os arquivos de log ou contate seu administrador de sistema. @@ -268,7 +255,6 @@ IM=Mensagems instantaneas AttributeCode=Codigo do atributo OptionalFieldsSetup=Configuração dos atributos extra URLPhoto=URL da photo/logo -SetLinkToThirdParty=Atalho para outro terceiro CreateDraft=Criar RascunhoCriar rascunho SetToDraft=Voltar para modo rascunho ObjectDeleted=Objeto %s apagado diff --git a/htdocs/langs/pt_BR/other.lang b/htdocs/langs/pt_BR/other.lang index dbbed148c06..3f9ba3156d5 100644 --- a/htdocs/langs/pt_BR/other.lang +++ b/htdocs/langs/pt_BR/other.lang @@ -116,7 +116,6 @@ ImageEditor=Editor de imagems YouReceiveMailBecauseOfNotification=Voce recebeu esta mensagem porque o seu endereco de e-mail foi adicionado a lista de alvos a ser informados de algums eventos no %s software de %s. YouReceiveMailBecauseOfNotification2=Este evento e o seguinte: ThisIsListOfModules=Esta e a lista de modulos pre-seleçionados pelo profilo demo escolhido (somente os modulos mais comums são visiveis nesta demo). Para uma demo mais pesoalizada editar aqui e presionar "Inicio". -ClickHere=Clickque aqui UseAdvancedPerms=Use as permissões avançadas de algums modulos FileFormat=Arquivo formato SelectAColor=Escolha a cor diff --git a/htdocs/langs/pt_BR/products.lang b/htdocs/langs/pt_BR/products.lang index a44226c4a38..d30c9cbbf8b 100644 --- a/htdocs/langs/pt_BR/products.lang +++ b/htdocs/langs/pt_BR/products.lang @@ -88,7 +88,6 @@ SuppliersPricesOfProductsOrServices=Preços (de produtos ou serviços) Fornecedo CustomCode=Codigo NCM CountryOrigin=Pais de origem HiddenIntoCombo=Escondido nas listas de seleções -Nature=Tipo de produto ProductCodeModel=Modelo de ref. de produto ServiceCodeModel=Modelo de ref. de serviço AddThisProductCard=Criar ficha produto diff --git a/htdocs/langs/pt_BR/projects.lang b/htdocs/langs/pt_BR/projects.lang index 9c4a65dbfba..8b8a231b494 100644 --- a/htdocs/langs/pt_BR/projects.lang +++ b/htdocs/langs/pt_BR/projects.lang @@ -8,7 +8,6 @@ ProjectsDesc=Exibi todos os projetos (sua permissão de usuário lhe permite ver MyTasksDesc=Esta exibição é limitado a projetos ou tarefas que você é um contato (seja qual for o tipo). TasksPublicDesc=Essa exibição apresenta todos os projetos e tarefas que você tem permissão para ler. TasksDesc=Essa exibição apresenta todos os projetos e tarefas (suas permissões de usuário concede-lhe ver tudo). -Myprojects=Os Meus Projetos AddProject=Criar projeto ConfirmDeleteAProject=Tem certeza que quer eliminar este projeto? ConfirmDeleteATask=Tem certeza que quer eliminar esta tarefa? @@ -25,13 +24,10 @@ TaskTimeUser=Usuário NewTimeSpent=Novo Tempo Dedicado MyTimeSpent=O Meu Tempo Dedicado MyTasks=As minhas Tarefas -TaskDateStart=Data de início da tarefa TaskDateEnd=Data final da tarefa AddTask=Criar tarefa AddDuration=Indicar Duração -MyActivity=A Minha Atividade MyActivities=Minhas Tarefas/Atividades -MyProjects=Os Meus Projetos ProgressDeclared=o progresso declarado ProgressCalculated=calculado do progresso ListOrdersAssociatedProject=Lista de Pedidos Associados ao Projeto @@ -74,12 +70,8 @@ TaskModifiedInDolibarr=Tarefa %s alterada TaskDeletedInDolibarr=Tarefa %s excluída TypeContact_project_internal_PROJECTLEADER=Chefe de projeto TypeContact_project_external_PROJECTLEADER=Chefe de projeto -TypeContact_project_internal_PROJECTCONTRIBUTOR=Colaborador -TypeContact_project_external_PROJECTCONTRIBUTOR=Colaborador TypeContact_project_task_internal_TASKEXECUTIVE=Tarefa executada TypeContact_project_task_external_TASKEXECUTIVE=Tarefa executada -TypeContact_project_task_internal_TASKCONTRIBUTOR=Colaborador -TypeContact_project_task_external_TASKCONTRIBUTOR=Colaborador SelectElement=Selecionar componente AddElement=Link para componente UnlinkElement=Desligar elemento diff --git a/htdocs/langs/pt_BR/resource.lang b/htdocs/langs/pt_BR/resource.lang index ac5195cbe84..c3d6ec512c5 100644 --- a/htdocs/langs/pt_BR/resource.lang +++ b/htdocs/langs/pt_BR/resource.lang @@ -1,18 +1,10 @@ # Dolibarr language file - Source file is en_US - resource -MenuResourceIndex=Recursos -MenuResourceAdd=Novo recurso MenuResourcePlanning=Planejamento de recurso DeleteResource=Remover recurso ConfirmDeleteResourceElement=Confirmar remoção do recurso para este elemento -NoResourceInDatabase=Nenhum recurso na base de dados NoResourceLinked=Nenhum recurso vinculado -ResourcePageIndex=Lista de recursos -ResourceSingular=Recurso ResourceCard=Cartao recursos AddResource=Criar recurso -ResourceFormLabel_ref=Nome do recurso -ResourceType=Tipo de recurso -ResourceFormLabel_description=Descrição do recurso ResourcesLinkedToElement=Recursos vinculados ao elemento ShowResourcePlanning=Mostrar planejamento do recurso GotoDate=Ir para data @@ -23,5 +15,4 @@ TitleResourceCard=Cartao recurso ConfirmDeleteResource=Confirme para remover este recurso RessourceSuccessfullyDeleted=Recurso removido com sucesso DictionaryResourceType=Tipo de recurso -DictionaryEMailTemplates=Modelos de Emails SelectResource=Selecionar recurso diff --git a/htdocs/langs/pt_BR/users.lang b/htdocs/langs/pt_BR/users.lang index 71a6fdf9790..d5ed0fe9de1 100644 --- a/htdocs/langs/pt_BR/users.lang +++ b/htdocs/langs/pt_BR/users.lang @@ -13,12 +13,9 @@ OwnedRights=As minhas permissões GroupRights=Permissões do grupo UserRights=Permissões do usuário UserGUISetup=Interface do usuário -DisableUser=Desativar DisableAUser=Desativar um usuário DeleteUser=Excluir DeleteAUser=Excluir um usuário -DisableGroup=Desativar -DisableAGroup=Desativar um Grupo EnableAUser=Reativar um Usuário EnableAGroup=Reativar um Grupo DeleteGroup=Excluir @@ -42,7 +39,6 @@ AdministratorDesc=Entidade do administrador DefaultRights=Permissões por Padrao DefaultRightsDesc=Defina aqui padrão permissões que são concedidas automaticamente para um novo usuário criado (Vá em fichas de usuário para alterar as permissões de um usuário existente). DolibarrUsers=Usuário Dolibarr -LastName=Sobrenome FirstName=Primeiro nome ListOfGroups=Lista de grupos NewGroup=Novo grupo @@ -74,7 +70,6 @@ LoginAccountDisableInDolibarr=A conta está desativada no Dolibarr LoginAccountDisableInLdap=A conta está desativada ao domínio ExportDataset_user_1=Usuários e Atributos DomainUser=Usuário de Domínio -Reactivate=Reativar CreateInternalUserDesc=Este formulario permite criar um usuario interno a sua compania/fundação. Para criar um usuario externo (cliente, fornecedor, ...), use o botão 'Criar usuario Dolibarr' da ficha de contatos dos terceiro.. InternalExternalDesc=Um usuário interno é um usuário que pertence à sua Empresa/Instituição.
Um usuário externo é um usuário cliente, fornecedor ou outro.

Nos 2 casos, as permissões de Usuários definem os direitos de acesso, mas o usuário externo pode além disso ter um gerente de menus diferente do usuário interno (ver Inicio - configuração - visualização) PermissionInheritedFromAGroup=A permissão dá-se já que o herda de um grupo ao qual pertence o usuário. @@ -100,5 +95,4 @@ HierarchicView=Visão hierárquica UseTypeFieldToChange=Use campo Tipo para mudar OpenIDURL=URL do OpenID LoginUsingOpenID=Usar o OpenID para efetuar o login -WeeklyHours=Horas semanais ColorUser=Cor do usuario From f09089380719f325f007fc7bf92c1890c0737cd6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 18:02:54 +0100 Subject: [PATCH 254/429] Hide a feature that is really not stable. So i move it as a "develop" feature. --- htdocs/admin/menus/other.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/menus/other.php b/htdocs/admin/menus/other.php index 36733add335..9da251ccb66 100644 --- a/htdocs/admin/menus/other.php +++ b/htdocs/admin/menus/other.php @@ -120,7 +120,7 @@ print ""; print ''; // Use a flip-hide menu -if (isset($conf->global->MAIN_FEATURES_LEVEL) && $conf->global->MAIN_FEATURES_LEVEL > 0) +if (isset($conf->global->MAIN_FEATURES_LEVEL) && $conf->global->MAIN_FEATURES_LEVEL > 1) { $var=!$var; print ""; From 51c877e32c40d955a3a6e53fd723c1a0cdb79dc6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 18:02:54 +0100 Subject: [PATCH 255/429] Hide a feature that is really not stable. So i move it as a "develop" feature. --- htdocs/admin/menus/other.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/menus/other.php b/htdocs/admin/menus/other.php index 36733add335..9da251ccb66 100644 --- a/htdocs/admin/menus/other.php +++ b/htdocs/admin/menus/other.php @@ -120,7 +120,7 @@ print ""; print ''; // Use a flip-hide menu -if (isset($conf->global->MAIN_FEATURES_LEVEL) && $conf->global->MAIN_FEATURES_LEVEL > 0) +if (isset($conf->global->MAIN_FEATURES_LEVEL) && $conf->global->MAIN_FEATURES_LEVEL > 1) { $var=!$var; print ""; From bc3f9bf8006f6da06be41f27f50d72bb74ca9d91 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 18:11:31 +0100 Subject: [PATCH 256/429] Fix: the visible version was not enough to know version of dolibarr. We also need the MAIN_FEATURES_LEVEL. --- htdocs/core/lib/functions.lib.php | 2 +- htdocs/main.inc.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 5ecafde1a03..e1cd860b516 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2411,7 +2411,7 @@ function dol_print_error($db='',$error='') if ($_SERVER['DOCUMENT_ROOT']) // Mode web { $out.=$langs->trans("DolibarrHasDetectedError").".
\n"; - if (! empty($conf->global->MAIN_FEATURES_LEVEL)) $out.="You use an experimental level of features, so please do NOT report any bugs, except if problem is confirmed moving option MAIN_FEATURES_LEVEL back to 0.
\n"; + if (! empty($conf->global->MAIN_FEATURES_LEVEL)) $out.="You use an experimental or develop level of features, so please do NOT report any bugs, except if problem is confirmed moving option MAIN_FEATURES_LEVEL back to 0.
\n"; $out.=$langs->trans("InformationToHelpDiagnose").":
\n"; $out.="".$langs->trans("Date").": ".dol_print_date(time(),'dayhourlog')."
\n"; diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 043fcfcc77e..bf272ee0374 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1444,6 +1444,7 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a else $appli.=" ".DOL_VERSION; } else $appli.=" ".DOL_VERSION; + if (! empty($conf->global->MAIN_FEATURES_LEVEL)) $appli.="
".$langs->trans("LevelOfFeature").': '.$conf->global->MAIN_FEATURES_LEVEL; $logouttext=''; $logouthtmltext=$appli.'
'; From ba2c0a2651ead307ab9c779a16e6b4dbdb424bea Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 20:27:54 +0100 Subject: [PATCH 257/429] Clean code of hooks. Extrafield index on fk_object must be unique. --- htdocs/core/class/extrafields.class.php | 2 +- htdocs/core/class/hookmanager.class.php | 17 ++++++++++------- htdocs/fourn/card.php | 2 ++ htdocs/fourn/list.php | 18 +++++++++++++++++- htdocs/install/mysql/migration/3.7.0-3.8.0.sql | 4 ++++ .../tables/llx_societe_extrafields.key.sql | 2 +- 6 files changed, 35 insertions(+), 10 deletions(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 24d8c40f5b3..7bebeb0b660 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -596,7 +596,7 @@ class ExtraFields $this->attribute_pos[$tab->name]=$tab->pos; $this->attribute_alwayseditable[$tab->name]=$tab->alwayseditable; $this->attribute_perms[$tab->name]=$tab->perms; - $this->attribute_perms[$tab->name]=$tab->list; + $this->attribute_list[$tab->name]=$tab->list; } } } diff --git a/htdocs/core/class/hookmanager.class.php b/htdocs/core/class/hookmanager.class.php index 3ad0ec897f9..5cb0ca81faf 100644 --- a/htdocs/core/class/hookmanager.class.php +++ b/htdocs/core/class/hookmanager.class.php @@ -128,10 +128,8 @@ class HookManager $parameters['context']=join(':',$this->contextarray); dol_syslog(get_class($this).'::executeHooks method='.$method." action=".$action." context=".$parameters['context']); - // Define type of hook ('output', 'returnvalue' or 'addreplace'). 'addreplace' should be type for all hooks. 'output' and 'returnvalue' are deprecated. + // Define type of hook ('output' or 'addreplace'. 'returnvalue' is deprecated). $hooktype='output'; - if (preg_match('/^pdf_/',$method)) $hooktype='returnvalue'; // pdf_xxx except pdf_writelinedesc are returnvalue hooks. When there is 2 hooks of this type, only last one win. - if ($method =='insertExtraFields') $hooktype='returnvalue'; if (in_array( $method, array( @@ -149,6 +147,13 @@ class HookManager 'formatEvent' ) )) $hooktype='addreplace'; + // Deprecated hook types + if (preg_match('/^pdf_/',$method) && $method != 'pdf_writelinedesc') $hooktype='returnvalue'; // pdf_xxx except pdf_writelinedesc are 'returnvalue' hooks. When there is 2 hooks of this type, only last one win. TODO Move them into 'output' or 'addreplace' hooks. + if ($method == 'insertExtraFields') + { + $hooktype='returnvalue'; // deprecated. TODO Remove all code with "executeHooks('insertExtraFields'" as soon as there is a trigger available. + dol_syslog("Warning: The hook 'insertExtraFields' is deprecated and must not be used. Use instead trigger on CRUD event (ask it to dev team if not implemented)", LOG_WARNING); + } // Loop on each hook to qualify modules that have declared context $modulealreadyexecuted=array(); @@ -201,8 +206,6 @@ class HookManager if (! empty($actionclassinstance->results) && is_array($actionclassinstance->results)) $this->resArray =array_merge($this->resArray, $actionclassinstance->results); if (! empty($actionclassinstance->resprints)) $this->resPrint.=$actionclassinstance->resprints; - // TODO dead code to remove (do not enable this, but fix hook instead) - //if (is_array($result)) $this->resArray = array_merge($this->resArray, $result); // TODO dead code to remove (do not enable this, but fix hook instead): result must not be a string. we must use $actionclassinstance->resprints to return a string if (! is_array($result) && ! is_numeric($result)) { @@ -221,8 +224,8 @@ class HookManager } // TODO remove this. When there is something to print for an output hook, ->resPrint is filled. - if ($hooktype == 'output') return $this->resPrint; - if ($hooktype == 'returnvalue') return $result; + //if ($hooktype == 'output') return $this->resPrint; + //if ($hooktype == 'returnvalue') return $result; return ($error?-1:$resaction); } diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index f94664531dd..1d4c144a098 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -31,6 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; if (! empty($conf->adherent->enabled)) require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; $langs->load('suppliers'); @@ -49,6 +50,7 @@ if ($user->societe_id) $id=$user->societe_id; $result = restrictedArea($user, 'societe&fournisseur', $id, '&societe'); $object = new Fournisseur($db); +$extrafields = new ExtraFields($db); // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('suppliercard','globalcard')); diff --git a/htdocs/fourn/list.php b/htdocs/fourn/list.php index b0d7caf8695..4c16f3a1d61 100644 --- a/htdocs/fourn/list.php +++ b/htdocs/fourn/list.php @@ -27,6 +27,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; $langs->load("suppliers"); $langs->load("orders"); @@ -59,6 +60,7 @@ if (! $sortfield) $sortfield="nom"; // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('supplierlist')); +$extrafields = new ExtraFields($db); if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers { @@ -73,6 +75,9 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both $catid=""; } +$extrafields->fetch_name_optionals_label('thirdparty'); + + /* * Actions */ @@ -95,7 +100,14 @@ llxHeader('',$langs->trans("ThirdParty"),$help_url); $sql = "SELECT s.rowid as socid, s.nom as name, s.zip, s.town, s.datec, st.libelle as stcomm, s.prefix_comm, s.status as status, "; $sql.= "code_fournisseur, code_compta_fournisseur"; if (!$user->rights->societe->client->voir && !$socid) $sql .= ", sc.fk_soc, sc.fk_user "; +// Add fields for extrafields +foreach ($extrafields->attribute_list as $key => $val) $sql.=",ef.".$key; +// Add fields from hooks +$parameters=array(); +$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_extrafields as ef ON ef.fk_object = s.rowid"; if (! empty($search_categ) || ! empty($catid)) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_fournisseur as cf ON s.rowid = cf.fk_societe"; // We need this table joined to the select in order to filter by categ $sql.= ", ".MAIN_DB_PREFIX."c_stcomm as st"; if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; @@ -122,6 +134,9 @@ if ($catid > 0) $sql.= " AND cf.fk_categorie = ".$catid; if ($catid == -2) $sql.= " AND cf.fk_categorie IS NULL"; if ($search_categ > 0) $sql.= " AND cf.fk_categorie = ".$search_categ; if ($search_categ == -2) $sql.= " AND cf.fk_categorie IS NULL"; +// Add where from hooks +$parameters=array(); +$sql.=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook // Count total nb of records $nbtotalofrecords = 0; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) @@ -131,6 +146,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) } $sql.= $db->order($sortfield,$sortorder); $sql.= $db->plimit($conf->liste_limit+1, $offset); +//print $sql; dol_syslog('fourn/list.php:', LOG_DEBUG); $resql = $db->query($sql); @@ -200,7 +216,7 @@ if ($resql) print ''; print ''; print "\n"; - + $parameters=array(); $formconfirm=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index 65273632998..73ace187708 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -366,3 +366,7 @@ INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('CIP', 'Carriage and INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('DAT', 'Delivered At Terminal, marchandises (déchargées) livrées sur quai, dans un terminal maritime, fluvial, aérien, routier ou ferroviaire désigné (dédouanement import, et post-acheminement payés par l''acheteur)', 1); INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('DAP', 'Delivered At Place, marchandises (non déchargées) mises à disposition de l''acheteur dans le pays d''importation au lieu précisé dans le contrat (déchargement, dédouanement import payé par l''acheteur)', 1); INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('DDP', 'Delivered Duty Paid, marchandises (non déchargées) livrées à destination finale, dédouanement import et taxes à la charge du vendeur ; l''acheteur prend en charge uniquement le déchargement (si exclusion des taxes type TVA, le préciser clairement)', 1); + +-- Extrafields fk_object must be unique (1-1 relation) +ALTER TABLE llx_societe_extrafields DROP INDEX idx_societe_extrafields +ALTER TABLE llx_societe_extrafields ADD UNIQUE INDEX uk_societe_extrafields (fk_object); diff --git a/htdocs/install/mysql/tables/llx_societe_extrafields.key.sql b/htdocs/install/mysql/tables/llx_societe_extrafields.key.sql index 44ce4dda753..9d89beebd37 100644 --- a/htdocs/install/mysql/tables/llx_societe_extrafields.key.sql +++ b/htdocs/install/mysql/tables/llx_societe_extrafields.key.sql @@ -17,4 +17,4 @@ -- =================================================================== -ALTER TABLE llx_societe_extrafields ADD INDEX idx_societe_extrafields (fk_object); +ALTER TABLE llx_societe_extrafields ADD UNIQUE INDEX uk_societe_extrafields (fk_object); From 50b09fa8a97ba85725c5aaeb509a32a19f51f04c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 21:39:39 +0100 Subject: [PATCH 258/429] Doxygen --- htdocs/product/class/product.class.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 910f5b316cd..02686a94f03 100755 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -2650,10 +2650,11 @@ class Product extends CommonObject * Fonction recursive uniquement utilisee par get_arbo_each_prod, recompose l'arborescence des sousproduits * Define value of this->res * - * @param array $prod Products array - * @param string $compl_path Directory path of parents to add before - * @param int $multiply Because each sublevel must be multiplicated by parent nb - * @param int $level Init level + * @param array $prod Products array + * @param string $compl_path Directory path of parents to add before + * @param int $multiply Because each sublevel must be multiplicated by parent nb + * @param int $level Init level + * @param int $id_parent Id parent * @return void */ function fetch_prod_arbo($prod, $compl_path="", $multiply=1, $level=1, $id_parent=0) From d056abc4e1264abf61840d2720382365a5624bda Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 21:45:52 +0100 Subject: [PATCH 259/429] No need to have this protected. Property can be read with method show() and this method can be override. --- htdocs/core/class/dolgraph.class.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/core/class/dolgraph.class.php b/htdocs/core/class/dolgraph.class.php index 5451d7457ce..0dca02cbc2d 100644 --- a/htdocs/core/class/dolgraph.class.php +++ b/htdocs/core/class/dolgraph.class.php @@ -65,7 +65,7 @@ class DolGraph var $bgcolorgrid=array(255,255,255); // array(R,G,B) var $datacolor; // array(array(R,G,B),...) - protected $_stringtoshow; // To store string to output graph into HTML page + private $_stringtoshow; // To store string to output graph into HTML page /** @@ -935,16 +935,16 @@ class DolGraph opacity: 0.80 }).appendTo("body").fadeIn(20); } - + var previousPoint = null; $("#placeholder_'.$tag.'").bind("plothover", function (event, pos, item) { $("#x").text(pos.x.toFixed(2)); $("#y").text(pos.y.toFixed(2)); - + if (item) { if (previousPoint != item.dataIndex) { previousPoint = item.dataIndex; - + $("#tooltip").remove(); /* console.log(item); */ var x = item.datapoint[0].toFixed(2); @@ -1022,7 +1022,7 @@ class DolGraph return $this->_stringtoshow; } - + /** * getDefaultGraphSizeForStats * @@ -1033,18 +1033,18 @@ class DolGraph static function getDefaultGraphSizeForStats($direction,$defaultsize='') { global $conf; - + if ($direction == 'width') { if (empty($conf->dol_optimize_smallscreen)) return ($defaultsize ? $defaultsize : '500'); else return (empty($_SESSION['dol_screen_width']) ? '280' : ($_SESSION['dol_screen_width']-40)); } - if ($direction == 'height') + if ($direction == 'height') { return (empty($conf->dol_optimize_smallscreen)?($defaultsize?$defaultsize:'200'):'160'); } return 0; } - + } From a8e7d90ea3a22718bc1e32b5cea8ca46e9e18ff4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 13 Mar 2015 22:02:53 +0100 Subject: [PATCH 260/429] Sync transifex --- dev/fixaltlanguages.sh | 6 +- htdocs/langs/ar_SA/admin.lang | 38 +- htdocs/langs/ar_SA/banks.lang | 6 +- htdocs/langs/ar_SA/commercial.lang | 12 +- htdocs/langs/ar_SA/contracts.lang | 1 + htdocs/langs/ar_SA/cron.lang | 1 + htdocs/langs/ar_SA/errors.lang | 5 +- htdocs/langs/ar_SA/install.lang | 1 + htdocs/langs/ar_SA/main.lang | 6 + htdocs/langs/ar_SA/orders.lang | 2 + htdocs/langs/ar_SA/other.lang | 3 +- htdocs/langs/ar_SA/productbatch.lang | 2 +- htdocs/langs/ar_SA/products.lang | 4 + htdocs/langs/ar_SA/projects.lang | 9 +- htdocs/langs/ar_SA/salaries.lang | 5 + htdocs/langs/ar_SA/sendings.lang | 2 +- htdocs/langs/ar_SA/stocks.lang | 4 +- htdocs/langs/ar_SA/suppliers.lang | 3 +- htdocs/langs/ar_SA/trips.lang | 136 +++++- htdocs/langs/bg_BG/admin.lang | 80 ++-- htdocs/langs/bg_BG/banks.lang | 6 +- htdocs/langs/bg_BG/boxes.lang | 47 +- htdocs/langs/bg_BG/cashdesk.lang | 6 +- htdocs/langs/bg_BG/categories.lang | 26 +- htdocs/langs/bg_BG/commercial.lang | 12 +- htdocs/langs/bg_BG/contracts.lang | 1 + htdocs/langs/bg_BG/cron.lang | 1 + htdocs/langs/bg_BG/errors.lang | 5 +- htdocs/langs/bg_BG/install.lang | 1 + htdocs/langs/bg_BG/main.lang | 6 + htdocs/langs/bg_BG/orders.lang | 2 + htdocs/langs/bg_BG/other.lang | 3 +- htdocs/langs/bg_BG/productbatch.lang | 2 +- htdocs/langs/bg_BG/products.lang | 4 + htdocs/langs/bg_BG/projects.lang | 9 +- htdocs/langs/bg_BG/salaries.lang | 5 + htdocs/langs/bg_BG/sendings.lang | 2 +- htdocs/langs/bg_BG/stocks.lang | 4 +- htdocs/langs/bg_BG/suppliers.lang | 3 +- htdocs/langs/bg_BG/trips.lang | 136 +++++- htdocs/langs/bs_BA/admin.lang | 38 +- htdocs/langs/bs_BA/banks.lang | 6 +- htdocs/langs/bs_BA/commercial.lang | 10 +- htdocs/langs/bs_BA/contracts.lang | 1 + htdocs/langs/bs_BA/cron.lang | 1 + htdocs/langs/bs_BA/errors.lang | 5 +- htdocs/langs/bs_BA/install.lang | 1 + htdocs/langs/bs_BA/main.lang | 6 + htdocs/langs/bs_BA/orders.lang | 2 + htdocs/langs/bs_BA/other.lang | 3 +- htdocs/langs/bs_BA/productbatch.lang | 2 +- htdocs/langs/bs_BA/products.lang | 4 + htdocs/langs/bs_BA/projects.lang | 9 +- htdocs/langs/bs_BA/salaries.lang | 5 + htdocs/langs/bs_BA/sendings.lang | 2 +- htdocs/langs/bs_BA/stocks.lang | 4 +- htdocs/langs/bs_BA/suppliers.lang | 3 +- htdocs/langs/bs_BA/trips.lang | 136 +++++- htdocs/langs/ca_ES/admin.lang | 38 +- htdocs/langs/ca_ES/banks.lang | 6 +- htdocs/langs/ca_ES/commercial.lang | 12 +- htdocs/langs/ca_ES/contracts.lang | 1 + htdocs/langs/ca_ES/cron.lang | 1 + htdocs/langs/ca_ES/errors.lang | 5 +- htdocs/langs/ca_ES/install.lang | 1 + htdocs/langs/ca_ES/main.lang | 6 + htdocs/langs/ca_ES/orders.lang | 2 + htdocs/langs/ca_ES/other.lang | 3 +- htdocs/langs/ca_ES/productbatch.lang | 2 +- htdocs/langs/ca_ES/products.lang | 4 + htdocs/langs/ca_ES/projects.lang | 9 +- htdocs/langs/ca_ES/salaries.lang | 19 +- htdocs/langs/ca_ES/sendings.lang | 2 +- htdocs/langs/ca_ES/stocks.lang | 4 +- htdocs/langs/ca_ES/suppliers.lang | 3 +- htdocs/langs/ca_ES/trips.lang | 136 +++++- htdocs/langs/cs_CZ/admin.lang | 38 +- htdocs/langs/cs_CZ/banks.lang | 6 +- htdocs/langs/cs_CZ/commercial.lang | 12 +- htdocs/langs/cs_CZ/contracts.lang | 1 + htdocs/langs/cs_CZ/cron.lang | 1 + htdocs/langs/cs_CZ/errors.lang | 5 +- htdocs/langs/cs_CZ/install.lang | 1 + htdocs/langs/cs_CZ/main.lang | 6 + htdocs/langs/cs_CZ/orders.lang | 2 + htdocs/langs/cs_CZ/other.lang | 3 +- htdocs/langs/cs_CZ/productbatch.lang | 2 +- htdocs/langs/cs_CZ/products.lang | 4 + htdocs/langs/cs_CZ/projects.lang | 9 +- htdocs/langs/cs_CZ/salaries.lang | 19 +- htdocs/langs/cs_CZ/sendings.lang | 2 +- htdocs/langs/cs_CZ/stocks.lang | 4 +- htdocs/langs/cs_CZ/suppliers.lang | 3 +- htdocs/langs/cs_CZ/trips.lang | 136 +++++- htdocs/langs/da_DK/admin.lang | 38 +- htdocs/langs/da_DK/banks.lang | 6 +- htdocs/langs/da_DK/commercial.lang | 12 +- htdocs/langs/da_DK/contracts.lang | 1 + htdocs/langs/da_DK/cron.lang | 1 + htdocs/langs/da_DK/errors.lang | 5 +- htdocs/langs/da_DK/install.lang | 1 + htdocs/langs/da_DK/main.lang | 6 + htdocs/langs/da_DK/orders.lang | 2 + htdocs/langs/da_DK/other.lang | 3 +- htdocs/langs/da_DK/productbatch.lang | 2 +- htdocs/langs/da_DK/products.lang | 4 + htdocs/langs/da_DK/projects.lang | 9 +- htdocs/langs/da_DK/salaries.lang | 5 + htdocs/langs/da_DK/sendings.lang | 2 +- htdocs/langs/da_DK/stocks.lang | 4 +- htdocs/langs/da_DK/suppliers.lang | 3 +- htdocs/langs/da_DK/trips.lang | 136 +++++- htdocs/langs/de_AT/agenda.lang | 1 - htdocs/langs/de_AT/main.lang | 3 +- htdocs/langs/de_AT/projects.lang | 1 - htdocs/langs/de_AT/withdrawals.lang | 2 +- htdocs/langs/de_CH/companies.lang | 10 - htdocs/langs/de_CH/main.lang | 3 +- htdocs/langs/de_DE/admin.lang | 38 +- htdocs/langs/de_DE/banks.lang | 6 +- htdocs/langs/de_DE/commercial.lang | 6 +- htdocs/langs/de_DE/contracts.lang | 1 + htdocs/langs/de_DE/cron.lang | 1 + htdocs/langs/de_DE/errors.lang | 5 +- htdocs/langs/de_DE/install.lang | 1 + htdocs/langs/de_DE/main.lang | 6 + htdocs/langs/de_DE/orders.lang | 2 + htdocs/langs/de_DE/other.lang | 3 +- htdocs/langs/de_DE/productbatch.lang | 2 +- htdocs/langs/de_DE/products.lang | 4 + htdocs/langs/de_DE/projects.lang | 9 +- htdocs/langs/de_DE/salaries.lang | 1 + htdocs/langs/de_DE/sendings.lang | 2 +- htdocs/langs/de_DE/stocks.lang | 4 +- htdocs/langs/de_DE/suppliers.lang | 3 +- htdocs/langs/de_DE/trips.lang | 134 +++++- htdocs/langs/el_GR/admin.lang | 392 +++++++++-------- htdocs/langs/el_GR/banks.lang | 6 +- htdocs/langs/el_GR/commercial.lang | 2 +- htdocs/langs/el_GR/contracts.lang | 1 + htdocs/langs/el_GR/cron.lang | 1 + htdocs/langs/el_GR/errors.lang | 5 +- htdocs/langs/el_GR/install.lang | 1 + htdocs/langs/el_GR/main.lang | 6 + htdocs/langs/el_GR/orders.lang | 2 + htdocs/langs/el_GR/other.lang | 3 +- htdocs/langs/el_GR/productbatch.lang | 2 +- htdocs/langs/el_GR/products.lang | 4 + htdocs/langs/el_GR/projects.lang | 9 +- htdocs/langs/el_GR/salaries.lang | 9 +- htdocs/langs/el_GR/sendings.lang | 10 +- htdocs/langs/el_GR/stocks.lang | 4 +- htdocs/langs/el_GR/suppliers.lang | 3 +- htdocs/langs/el_GR/trips.lang | 136 +++++- htdocs/langs/en_AU/bills.lang | 4 +- htdocs/langs/en_AU/companies.lang | 5 +- htdocs/langs/en_AU/compta.lang | 6 +- htdocs/langs/en_AU/main.lang | 17 +- htdocs/langs/en_AU/withdrawals.lang | 4 +- htdocs/langs/en_GB/admin.lang | 2 +- htdocs/langs/en_GB/banks.lang | 4 +- htdocs/langs/en_GB/bills.lang | 36 +- htdocs/langs/en_GB/compta.lang | 4 +- htdocs/langs/en_GB/exports.lang | 3 +- htdocs/langs/en_GB/main.lang | 10 +- htdocs/langs/en_GB/other.lang | 5 +- htdocs/langs/en_IN/admin.lang | 5 +- htdocs/langs/en_IN/bills.lang | 6 +- htdocs/langs/en_IN/boxes.lang | 4 +- htdocs/langs/en_IN/companies.lang | 4 +- htdocs/langs/en_IN/compta.lang | 2 +- htdocs/langs/en_IN/main.lang | 11 +- htdocs/langs/en_IN/other.lang | 2 +- htdocs/langs/en_IN/projects.lang | 4 +- htdocs/langs/en_IN/propal.lang | 5 +- htdocs/langs/en_NZ/companies.lang | 5 +- htdocs/langs/en_NZ/compta.lang | 6 +- htdocs/langs/en_NZ/main.lang | 17 +- htdocs/langs/en_SA/main.lang | 5 +- htdocs/langs/en_SA/propal.lang | 4 +- htdocs/langs/en_ZA/companies.lang | 10 +- htdocs/langs/en_ZA/compta.lang | 16 +- htdocs/langs/en_ZA/main.lang | 32 +- htdocs/langs/es_AR/admin.lang | 2 - htdocs/langs/es_AR/bills.lang | 5 +- htdocs/langs/es_AR/companies.lang | 6 +- htdocs/langs/es_AR/stocks.lang | 2 +- htdocs/langs/es_CL/agenda.lang | 3 +- htdocs/langs/es_CL/bills.lang | 3 +- htdocs/langs/es_CL/boxes.lang | 3 +- htdocs/langs/es_CL/commercial.lang | 3 +- htdocs/langs/es_CL/companies.lang | 3 +- htdocs/langs/es_CL/compta.lang | 3 +- htdocs/langs/es_CL/ecm.lang | 3 +- htdocs/langs/es_CL/install.lang | 3 +- htdocs/langs/es_CL/main.lang | 23 +- htdocs/langs/es_CL/members.lang | 3 +- htdocs/langs/es_CL/orders.lang | 3 +- htdocs/langs/es_CL/other.lang | 2 +- htdocs/langs/es_CL/products.lang | 3 +- htdocs/langs/es_CL/projects.lang | 3 +- htdocs/langs/es_CL/propal.lang | 8 +- htdocs/langs/es_CL/workflow.lang | 3 +- htdocs/langs/es_DO/companies.lang | 2 +- htdocs/langs/es_DO/compta.lang | 2 +- htdocs/langs/es_DO/main.lang | 7 +- htdocs/langs/es_ES/admin.lang | 38 +- htdocs/langs/es_ES/banks.lang | 6 +- htdocs/langs/es_ES/commercial.lang | 2 +- htdocs/langs/es_ES/contracts.lang | 1 + htdocs/langs/es_ES/cron.lang | 1 + htdocs/langs/es_ES/errors.lang | 5 +- htdocs/langs/es_ES/install.lang | 1 + htdocs/langs/es_ES/main.lang | 6 + htdocs/langs/es_ES/orders.lang | 2 + htdocs/langs/es_ES/other.lang | 3 +- htdocs/langs/es_ES/productbatch.lang | 2 +- htdocs/langs/es_ES/products.lang | 4 + htdocs/langs/es_ES/projects.lang | 9 +- htdocs/langs/es_ES/salaries.lang | 1 + htdocs/langs/es_ES/sendings.lang | 2 +- htdocs/langs/es_ES/stocks.lang | 4 +- htdocs/langs/es_ES/suppliers.lang | 3 +- htdocs/langs/es_ES/trips.lang | 136 +++++- htdocs/langs/es_HN/bills.lang | 4 +- htdocs/langs/es_HN/companies.lang | 4 +- htdocs/langs/es_HN/compta.lang | 5 +- htdocs/langs/es_HN/main.lang | 21 +- htdocs/langs/es_HN/propal.lang | 4 +- htdocs/langs/es_MX/admin.lang | 2 - htdocs/langs/es_MX/banks.lang | 4 +- htdocs/langs/es_MX/bills.lang | 11 +- htdocs/langs/es_MX/categories.lang | 4 +- htdocs/langs/es_MX/companies.lang | 6 +- htdocs/langs/es_MX/main.lang | 22 +- htdocs/langs/es_MX/stocks.lang | 2 +- htdocs/langs/es_PE/bills.lang | 4 +- htdocs/langs/es_PE/companies.lang | 4 +- htdocs/langs/es_PE/compta.lang | 5 +- htdocs/langs/es_PE/main.lang | 21 +- htdocs/langs/es_PE/propal.lang | 4 +- htdocs/langs/es_PR/bills.lang | 4 +- htdocs/langs/es_PR/companies.lang | 4 +- htdocs/langs/es_PR/compta.lang | 5 +- htdocs/langs/es_PR/main.lang | 21 +- htdocs/langs/es_PR/propal.lang | 4 +- htdocs/langs/es_PY/main.lang | 21 +- htdocs/langs/et_EE/admin.lang | 38 +- htdocs/langs/et_EE/banks.lang | 6 +- htdocs/langs/et_EE/commercial.lang | 12 +- htdocs/langs/et_EE/contracts.lang | 1 + htdocs/langs/et_EE/cron.lang | 1 + htdocs/langs/et_EE/errors.lang | 5 +- htdocs/langs/et_EE/install.lang | 1 + htdocs/langs/et_EE/main.lang | 6 + htdocs/langs/et_EE/orders.lang | 2 + htdocs/langs/et_EE/other.lang | 3 +- htdocs/langs/et_EE/productbatch.lang | 2 +- htdocs/langs/et_EE/products.lang | 4 + htdocs/langs/et_EE/projects.lang | 9 +- htdocs/langs/et_EE/salaries.lang | 5 + htdocs/langs/et_EE/sendings.lang | 2 +- htdocs/langs/et_EE/stocks.lang | 4 +- htdocs/langs/et_EE/suppliers.lang | 3 +- htdocs/langs/et_EE/trips.lang | 136 +++++- htdocs/langs/eu_ES/admin.lang | 38 +- htdocs/langs/eu_ES/banks.lang | 6 +- htdocs/langs/eu_ES/commercial.lang | 2 +- htdocs/langs/eu_ES/contracts.lang | 1 + htdocs/langs/eu_ES/cron.lang | 1 + htdocs/langs/eu_ES/errors.lang | 5 +- htdocs/langs/eu_ES/install.lang | 1 + htdocs/langs/eu_ES/main.lang | 6 + htdocs/langs/eu_ES/orders.lang | 2 + htdocs/langs/eu_ES/other.lang | 3 +- htdocs/langs/eu_ES/productbatch.lang | 2 +- htdocs/langs/eu_ES/products.lang | 4 + htdocs/langs/eu_ES/projects.lang | 9 +- htdocs/langs/eu_ES/salaries.lang | 1 + htdocs/langs/eu_ES/sendings.lang | 2 +- htdocs/langs/eu_ES/stocks.lang | 4 +- htdocs/langs/eu_ES/suppliers.lang | 3 +- htdocs/langs/eu_ES/trips.lang | 136 +++++- htdocs/langs/fa_IR/admin.lang | 38 +- htdocs/langs/fa_IR/banks.lang | 6 +- htdocs/langs/fa_IR/commercial.lang | 12 +- htdocs/langs/fa_IR/contracts.lang | 1 + htdocs/langs/fa_IR/cron.lang | 1 + htdocs/langs/fa_IR/errors.lang | 5 +- htdocs/langs/fa_IR/install.lang | 1 + htdocs/langs/fa_IR/main.lang | 6 + htdocs/langs/fa_IR/orders.lang | 2 + htdocs/langs/fa_IR/other.lang | 3 +- htdocs/langs/fa_IR/productbatch.lang | 2 +- htdocs/langs/fa_IR/products.lang | 4 + htdocs/langs/fa_IR/projects.lang | 9 +- htdocs/langs/fa_IR/salaries.lang | 5 + htdocs/langs/fa_IR/sendings.lang | 2 +- htdocs/langs/fa_IR/stocks.lang | 4 +- htdocs/langs/fa_IR/suppliers.lang | 3 +- htdocs/langs/fa_IR/trips.lang | 136 +++++- htdocs/langs/fi_FI/admin.lang | 38 +- htdocs/langs/fi_FI/banks.lang | 6 +- htdocs/langs/fi_FI/commercial.lang | 12 +- htdocs/langs/fi_FI/contracts.lang | 1 + htdocs/langs/fi_FI/cron.lang | 1 + htdocs/langs/fi_FI/errors.lang | 5 +- htdocs/langs/fi_FI/install.lang | 1 + htdocs/langs/fi_FI/main.lang | 6 + htdocs/langs/fi_FI/orders.lang | 2 + htdocs/langs/fi_FI/other.lang | 3 +- htdocs/langs/fi_FI/productbatch.lang | 2 +- htdocs/langs/fi_FI/products.lang | 4 + htdocs/langs/fi_FI/projects.lang | 9 +- htdocs/langs/fi_FI/salaries.lang | 5 + htdocs/langs/fi_FI/sendings.lang | 2 +- htdocs/langs/fi_FI/stocks.lang | 4 +- htdocs/langs/fi_FI/suppliers.lang | 3 +- htdocs/langs/fi_FI/trips.lang | 136 +++++- htdocs/langs/fr_BE/main.lang | 1 + htdocs/langs/fr_CA/main.lang | 1 + htdocs/langs/fr_CH/main.lang | 1 + htdocs/langs/fr_FR/accountancy.lang | 6 +- htdocs/langs/fr_FR/admin.lang | 38 +- htdocs/langs/fr_FR/banks.lang | 6 +- htdocs/langs/fr_FR/bills.lang | 8 +- htdocs/langs/fr_FR/commercial.lang | 2 +- htdocs/langs/fr_FR/compta.lang | 2 +- htdocs/langs/fr_FR/contracts.lang | 1 + htdocs/langs/fr_FR/cron.lang | 1 + htdocs/langs/fr_FR/errors.lang | 5 +- htdocs/langs/fr_FR/install.lang | 3 +- htdocs/langs/fr_FR/main.lang | 6 + htdocs/langs/fr_FR/orders.lang | 2 + htdocs/langs/fr_FR/other.lang | 3 +- htdocs/langs/fr_FR/productbatch.lang | 2 +- htdocs/langs/fr_FR/products.lang | 4 + htdocs/langs/fr_FR/projects.lang | 9 +- htdocs/langs/fr_FR/salaries.lang | 1 + htdocs/langs/fr_FR/sendings.lang | 2 +- htdocs/langs/fr_FR/stocks.lang | 4 +- htdocs/langs/fr_FR/suppliers.lang | 3 +- htdocs/langs/fr_FR/trips.lang | 136 +++++- htdocs/langs/fr_NC/main.lang | 1 + htdocs/langs/he_IL/admin.lang | 38 +- htdocs/langs/he_IL/banks.lang | 6 +- htdocs/langs/he_IL/commercial.lang | 10 +- htdocs/langs/he_IL/contracts.lang | 1 + htdocs/langs/he_IL/cron.lang | 1 + htdocs/langs/he_IL/errors.lang | 5 +- htdocs/langs/he_IL/install.lang | 1 + htdocs/langs/he_IL/main.lang | 6 + htdocs/langs/he_IL/orders.lang | 2 + htdocs/langs/he_IL/other.lang | 3 +- htdocs/langs/he_IL/productbatch.lang | 2 +- htdocs/langs/he_IL/products.lang | 4 + htdocs/langs/he_IL/projects.lang | 9 +- htdocs/langs/he_IL/salaries.lang | 5 + htdocs/langs/he_IL/sendings.lang | 2 +- htdocs/langs/he_IL/stocks.lang | 4 +- htdocs/langs/he_IL/suppliers.lang | 3 +- htdocs/langs/he_IL/trips.lang | 136 +++++- htdocs/langs/hr_HR/admin.lang | 38 +- htdocs/langs/hr_HR/banks.lang | 6 +- htdocs/langs/hr_HR/commercial.lang | 10 +- htdocs/langs/hr_HR/contracts.lang | 1 + htdocs/langs/hr_HR/cron.lang | 1 + htdocs/langs/hr_HR/errors.lang | 5 +- htdocs/langs/hr_HR/install.lang | 1 + htdocs/langs/hr_HR/main.lang | 6 + htdocs/langs/hr_HR/orders.lang | 2 + htdocs/langs/hr_HR/other.lang | 3 +- htdocs/langs/hr_HR/productbatch.lang | 2 +- htdocs/langs/hr_HR/products.lang | 4 + htdocs/langs/hr_HR/projects.lang | 9 +- htdocs/langs/hr_HR/salaries.lang | 5 + htdocs/langs/hr_HR/sendings.lang | 2 +- htdocs/langs/hr_HR/stocks.lang | 4 +- htdocs/langs/hr_HR/suppliers.lang | 3 +- htdocs/langs/hr_HR/trips.lang | 136 +++++- htdocs/langs/hu_HU/admin.lang | 38 +- htdocs/langs/hu_HU/banks.lang | 6 +- htdocs/langs/hu_HU/commercial.lang | 12 +- htdocs/langs/hu_HU/contracts.lang | 1 + htdocs/langs/hu_HU/cron.lang | 1 + htdocs/langs/hu_HU/errors.lang | 5 +- htdocs/langs/hu_HU/install.lang | 1 + htdocs/langs/hu_HU/main.lang | 6 + htdocs/langs/hu_HU/orders.lang | 2 + htdocs/langs/hu_HU/other.lang | 3 +- htdocs/langs/hu_HU/productbatch.lang | 2 +- htdocs/langs/hu_HU/products.lang | 4 + htdocs/langs/hu_HU/projects.lang | 9 +- htdocs/langs/hu_HU/salaries.lang | 5 + htdocs/langs/hu_HU/sendings.lang | 2 +- htdocs/langs/hu_HU/stocks.lang | 4 +- htdocs/langs/hu_HU/suppliers.lang | 3 +- htdocs/langs/hu_HU/trips.lang | 136 +++++- htdocs/langs/id_ID/admin.lang | 38 +- htdocs/langs/id_ID/banks.lang | 6 +- htdocs/langs/id_ID/commercial.lang | 10 +- htdocs/langs/id_ID/contracts.lang | 1 + htdocs/langs/id_ID/cron.lang | 1 + htdocs/langs/id_ID/errors.lang | 5 +- htdocs/langs/id_ID/install.lang | 1 + htdocs/langs/id_ID/main.lang | 6 + htdocs/langs/id_ID/orders.lang | 2 + htdocs/langs/id_ID/other.lang | 3 +- htdocs/langs/id_ID/productbatch.lang | 2 +- htdocs/langs/id_ID/products.lang | 4 + htdocs/langs/id_ID/projects.lang | 9 +- htdocs/langs/id_ID/salaries.lang | 1 + htdocs/langs/id_ID/sendings.lang | 2 +- htdocs/langs/id_ID/stocks.lang | 4 +- htdocs/langs/id_ID/suppliers.lang | 3 +- htdocs/langs/id_ID/trips.lang | 136 +++++- htdocs/langs/is_IS/admin.lang | 38 +- htdocs/langs/is_IS/banks.lang | 6 +- htdocs/langs/is_IS/commercial.lang | 12 +- htdocs/langs/is_IS/contracts.lang | 1 + htdocs/langs/is_IS/cron.lang | 1 + htdocs/langs/is_IS/errors.lang | 5 +- htdocs/langs/is_IS/install.lang | 1 + htdocs/langs/is_IS/main.lang | 6 + htdocs/langs/is_IS/orders.lang | 2 + htdocs/langs/is_IS/other.lang | 3 +- htdocs/langs/is_IS/productbatch.lang | 2 +- htdocs/langs/is_IS/products.lang | 4 + htdocs/langs/is_IS/projects.lang | 9 +- htdocs/langs/is_IS/salaries.lang | 5 + htdocs/langs/is_IS/sendings.lang | 2 +- htdocs/langs/is_IS/stocks.lang | 4 +- htdocs/langs/is_IS/suppliers.lang | 3 +- htdocs/langs/is_IS/trips.lang | 136 +++++- htdocs/langs/it_IT/admin.lang | 38 +- htdocs/langs/it_IT/banks.lang | 6 +- htdocs/langs/it_IT/commercial.lang | 12 +- htdocs/langs/it_IT/contracts.lang | 1 + htdocs/langs/it_IT/cron.lang | 1 + htdocs/langs/it_IT/errors.lang | 5 +- htdocs/langs/it_IT/install.lang | 1 + htdocs/langs/it_IT/main.lang | 6 + htdocs/langs/it_IT/orders.lang | 2 + htdocs/langs/it_IT/other.lang | 3 +- htdocs/langs/it_IT/productbatch.lang | 2 +- htdocs/langs/it_IT/products.lang | 4 + htdocs/langs/it_IT/projects.lang | 9 +- htdocs/langs/it_IT/salaries.lang | 5 + htdocs/langs/it_IT/sendings.lang | 2 +- htdocs/langs/it_IT/stocks.lang | 4 +- htdocs/langs/it_IT/suppliers.lang | 3 +- htdocs/langs/it_IT/trips.lang | 134 +++++- htdocs/langs/ja_JP/admin.lang | 38 +- htdocs/langs/ja_JP/banks.lang | 6 +- htdocs/langs/ja_JP/commercial.lang | 12 +- htdocs/langs/ja_JP/contracts.lang | 1 + htdocs/langs/ja_JP/cron.lang | 1 + htdocs/langs/ja_JP/errors.lang | 5 +- htdocs/langs/ja_JP/install.lang | 1 + htdocs/langs/ja_JP/main.lang | 6 + htdocs/langs/ja_JP/orders.lang | 2 + htdocs/langs/ja_JP/other.lang | 3 +- htdocs/langs/ja_JP/productbatch.lang | 2 +- htdocs/langs/ja_JP/products.lang | 4 + htdocs/langs/ja_JP/projects.lang | 9 +- htdocs/langs/ja_JP/salaries.lang | 5 + htdocs/langs/ja_JP/sendings.lang | 2 +- htdocs/langs/ja_JP/stocks.lang | 4 +- htdocs/langs/ja_JP/suppliers.lang | 3 +- htdocs/langs/ja_JP/trips.lang | 136 +++++- htdocs/langs/ka_GE/admin.lang | 38 +- htdocs/langs/ka_GE/banks.lang | 6 +- htdocs/langs/ka_GE/commercial.lang | 2 +- htdocs/langs/ka_GE/contracts.lang | 1 + htdocs/langs/ka_GE/cron.lang | 1 + htdocs/langs/ka_GE/errors.lang | 5 +- htdocs/langs/ka_GE/install.lang | 1 + htdocs/langs/ka_GE/main.lang | 6 + htdocs/langs/ka_GE/orders.lang | 2 + htdocs/langs/ka_GE/other.lang | 3 +- htdocs/langs/ka_GE/productbatch.lang | 2 +- htdocs/langs/ka_GE/products.lang | 4 + htdocs/langs/ka_GE/projects.lang | 9 +- htdocs/langs/ka_GE/salaries.lang | 1 + htdocs/langs/ka_GE/sendings.lang | 2 +- htdocs/langs/ka_GE/stocks.lang | 4 +- htdocs/langs/ka_GE/suppliers.lang | 3 +- htdocs/langs/ka_GE/trips.lang | 136 +++++- htdocs/langs/ko_KR/admin.lang | 38 +- htdocs/langs/ko_KR/banks.lang | 6 +- htdocs/langs/ko_KR/commercial.lang | 10 +- htdocs/langs/ko_KR/contracts.lang | 1 + htdocs/langs/ko_KR/cron.lang | 1 + htdocs/langs/ko_KR/errors.lang | 5 +- htdocs/langs/ko_KR/install.lang | 1 + htdocs/langs/ko_KR/main.lang | 6 + htdocs/langs/ko_KR/orders.lang | 2 + htdocs/langs/ko_KR/other.lang | 3 +- htdocs/langs/ko_KR/productbatch.lang | 2 +- htdocs/langs/ko_KR/products.lang | 4 + htdocs/langs/ko_KR/projects.lang | 9 +- htdocs/langs/ko_KR/salaries.lang | 5 + htdocs/langs/ko_KR/sendings.lang | 2 +- htdocs/langs/ko_KR/stocks.lang | 4 +- htdocs/langs/ko_KR/suppliers.lang | 3 +- htdocs/langs/ko_KR/trips.lang | 136 +++++- htdocs/langs/lt_LT/admin.lang | 38 +- htdocs/langs/lt_LT/banks.lang | 6 +- htdocs/langs/lt_LT/commercial.lang | 12 +- htdocs/langs/lt_LT/contracts.lang | 1 + htdocs/langs/lt_LT/cron.lang | 1 + htdocs/langs/lt_LT/errors.lang | 5 +- htdocs/langs/lt_LT/install.lang | 1 + htdocs/langs/lt_LT/main.lang | 6 + htdocs/langs/lt_LT/orders.lang | 2 + htdocs/langs/lt_LT/other.lang | 3 +- htdocs/langs/lt_LT/productbatch.lang | 2 +- htdocs/langs/lt_LT/products.lang | 4 + htdocs/langs/lt_LT/projects.lang | 9 +- htdocs/langs/lt_LT/salaries.lang | 19 +- htdocs/langs/lt_LT/sendings.lang | 2 +- htdocs/langs/lt_LT/stocks.lang | 4 +- htdocs/langs/lt_LT/suppliers.lang | 3 +- htdocs/langs/lt_LT/trips.lang | 136 +++++- htdocs/langs/lv_LV/accountancy.lang | 4 +- htdocs/langs/lv_LV/admin.lang | 44 +- htdocs/langs/lv_LV/agenda.lang | 2 +- htdocs/langs/lv_LV/banks.lang | 8 +- htdocs/langs/lv_LV/bills.lang | 16 +- htdocs/langs/lv_LV/commercial.lang | 18 +- htdocs/langs/lv_LV/contracts.lang | 1 + htdocs/langs/lv_LV/cron.lang | 1 + htdocs/langs/lv_LV/errors.lang | 5 +- htdocs/langs/lv_LV/install.lang | 3 +- htdocs/langs/lv_LV/main.lang | 6 + htdocs/langs/lv_LV/orders.lang | 6 +- htdocs/langs/lv_LV/other.lang | 3 +- htdocs/langs/lv_LV/productbatch.lang | 6 +- htdocs/langs/lv_LV/products.lang | 4 + htdocs/langs/lv_LV/projects.lang | 9 +- htdocs/langs/lv_LV/salaries.lang | 5 + htdocs/langs/lv_LV/sendings.lang | 2 +- htdocs/langs/lv_LV/stocks.lang | 6 +- htdocs/langs/lv_LV/suppliers.lang | 5 +- htdocs/langs/lv_LV/trips.lang | 136 +++++- htdocs/langs/mk_MK/admin.lang | 38 +- htdocs/langs/mk_MK/banks.lang | 6 +- htdocs/langs/mk_MK/commercial.lang | 10 +- htdocs/langs/mk_MK/contracts.lang | 1 + htdocs/langs/mk_MK/cron.lang | 1 + htdocs/langs/mk_MK/errors.lang | 5 +- htdocs/langs/mk_MK/install.lang | 1 + htdocs/langs/mk_MK/main.lang | 6 + htdocs/langs/mk_MK/orders.lang | 2 + htdocs/langs/mk_MK/other.lang | 3 +- htdocs/langs/mk_MK/productbatch.lang | 2 +- htdocs/langs/mk_MK/products.lang | 4 + htdocs/langs/mk_MK/projects.lang | 9 +- htdocs/langs/mk_MK/salaries.lang | 5 + htdocs/langs/mk_MK/sendings.lang | 2 +- htdocs/langs/mk_MK/stocks.lang | 4 +- htdocs/langs/mk_MK/suppliers.lang | 3 +- htdocs/langs/mk_MK/trips.lang | 136 +++++- htdocs/langs/nb_NO/admin.lang | 50 ++- htdocs/langs/nb_NO/agenda.lang | 6 +- htdocs/langs/nb_NO/banks.lang | 8 +- htdocs/langs/nb_NO/bills.lang | 24 +- htdocs/langs/nb_NO/boxes.lang | 89 ++-- htdocs/langs/nb_NO/cashdesk.lang | 38 +- htdocs/langs/nb_NO/categories.lang | 38 +- htdocs/langs/nb_NO/commercial.lang | 12 +- htdocs/langs/nb_NO/companies.lang | 110 ++--- htdocs/langs/nb_NO/contracts.lang | 1 + htdocs/langs/nb_NO/cron.lang | 1 + htdocs/langs/nb_NO/errors.lang | 5 +- htdocs/langs/nb_NO/install.lang | 5 +- htdocs/langs/nb_NO/main.lang | 6 + htdocs/langs/nb_NO/opensurvey.lang | 128 +++--- htdocs/langs/nb_NO/orders.lang | 2 + htdocs/langs/nb_NO/other.lang | 3 +- htdocs/langs/nb_NO/productbatch.lang | 2 +- htdocs/langs/nb_NO/products.lang | 4 + htdocs/langs/nb_NO/projects.lang | 9 +- htdocs/langs/nb_NO/salaries.lang | 5 + htdocs/langs/nb_NO/sendings.lang | 2 +- htdocs/langs/nb_NO/stocks.lang | 4 +- htdocs/langs/nb_NO/suppliers.lang | 3 +- htdocs/langs/nb_NO/trips.lang | 136 +++++- htdocs/langs/nl_BE/main.lang | 2 +- htdocs/langs/nl_BE/trips.lang | 1 - htdocs/langs/nl_NL/admin.lang | 38 +- htdocs/langs/nl_NL/banks.lang | 6 +- htdocs/langs/nl_NL/commercial.lang | 2 +- htdocs/langs/nl_NL/contracts.lang | 1 + htdocs/langs/nl_NL/cron.lang | 1 + htdocs/langs/nl_NL/errors.lang | 5 +- htdocs/langs/nl_NL/install.lang | 1 + htdocs/langs/nl_NL/main.lang | 6 + htdocs/langs/nl_NL/orders.lang | 2 + htdocs/langs/nl_NL/other.lang | 3 +- htdocs/langs/nl_NL/productbatch.lang | 2 +- htdocs/langs/nl_NL/products.lang | 4 + htdocs/langs/nl_NL/projects.lang | 9 +- htdocs/langs/nl_NL/salaries.lang | 5 + htdocs/langs/nl_NL/sendings.lang | 2 +- htdocs/langs/nl_NL/stocks.lang | 4 +- htdocs/langs/nl_NL/suppliers.lang | 3 +- htdocs/langs/nl_NL/trips.lang | 136 +++++- htdocs/langs/pl_PL/admin.lang | 94 ++-- htdocs/langs/pl_PL/banks.lang | 6 +- htdocs/langs/pl_PL/bills.lang | 8 +- htdocs/langs/pl_PL/bookmarks.lang | 4 +- htdocs/langs/pl_PL/commercial.lang | 12 +- htdocs/langs/pl_PL/companies.lang | 24 +- htdocs/langs/pl_PL/contracts.lang | 1 + htdocs/langs/pl_PL/cron.lang | 1 + htdocs/langs/pl_PL/errors.lang | 5 +- htdocs/langs/pl_PL/install.lang | 113 ++--- htdocs/langs/pl_PL/ldap.lang | 10 +- htdocs/langs/pl_PL/link.lang | 16 +- htdocs/langs/pl_PL/main.lang | 622 ++++++++++++++------------- htdocs/langs/pl_PL/orders.lang | 2 + htdocs/langs/pl_PL/other.lang | 3 +- htdocs/langs/pl_PL/paybox.lang | 54 +-- htdocs/langs/pl_PL/productbatch.lang | 40 +- htdocs/langs/pl_PL/products.lang | 4 + htdocs/langs/pl_PL/projects.lang | 9 +- htdocs/langs/pl_PL/propal.lang | 14 +- htdocs/langs/pl_PL/resource.lang | 54 +-- htdocs/langs/pl_PL/salaries.lang | 19 +- htdocs/langs/pl_PL/sendings.lang | 2 +- htdocs/langs/pl_PL/stocks.lang | 4 +- htdocs/langs/pl_PL/suppliers.lang | 3 +- htdocs/langs/pl_PL/trips.lang | 142 +++++- htdocs/langs/pt_BR/admin.lang | 11 - htdocs/langs/pt_BR/bills.lang | 3 - htdocs/langs/pt_BR/compta.lang | 2 - htdocs/langs/pt_BR/donations.lang | 1 - htdocs/langs/pt_BR/projects.lang | 2 - htdocs/langs/pt_PT/admin.lang | 174 +++++--- htdocs/langs/pt_PT/banks.lang | 6 +- htdocs/langs/pt_PT/bills.lang | 52 +-- htdocs/langs/pt_PT/boxes.lang | 6 +- htdocs/langs/pt_PT/commercial.lang | 12 +- htdocs/langs/pt_PT/compta.lang | 26 +- htdocs/langs/pt_PT/contracts.lang | 1 + htdocs/langs/pt_PT/cron.lang | 1 + htdocs/langs/pt_PT/donations.lang | 38 +- htdocs/langs/pt_PT/errors.lang | 5 +- htdocs/langs/pt_PT/holiday.lang | 38 +- htdocs/langs/pt_PT/install.lang | 1 + htdocs/langs/pt_PT/languages.lang | 2 +- htdocs/langs/pt_PT/main.lang | 6 + htdocs/langs/pt_PT/orders.lang | 2 + htdocs/langs/pt_PT/other.lang | 3 +- htdocs/langs/pt_PT/productbatch.lang | 2 +- htdocs/langs/pt_PT/products.lang | 4 + htdocs/langs/pt_PT/projects.lang | 19 +- htdocs/langs/pt_PT/salaries.lang | 1 + htdocs/langs/pt_PT/sendings.lang | 2 +- htdocs/langs/pt_PT/stocks.lang | 4 +- htdocs/langs/pt_PT/suppliers.lang | 3 +- htdocs/langs/pt_PT/trips.lang | 136 +++++- htdocs/langs/ro_RO/admin.lang | 68 ++- htdocs/langs/ro_RO/agenda.lang | 2 +- htdocs/langs/ro_RO/banks.lang | 8 +- htdocs/langs/ro_RO/bills.lang | 16 +- htdocs/langs/ro_RO/commercial.lang | 2 +- htdocs/langs/ro_RO/compta.lang | 2 +- htdocs/langs/ro_RO/contracts.lang | 1 + htdocs/langs/ro_RO/cron.lang | 5 +- htdocs/langs/ro_RO/errors.lang | 7 +- htdocs/langs/ro_RO/install.lang | 5 +- htdocs/langs/ro_RO/languages.lang | 2 +- htdocs/langs/ro_RO/main.lang | 6 + htdocs/langs/ro_RO/orders.lang | 2 + htdocs/langs/ro_RO/other.lang | 3 +- htdocs/langs/ro_RO/productbatch.lang | 2 +- htdocs/langs/ro_RO/products.lang | 32 +- htdocs/langs/ro_RO/projects.lang | 13 +- htdocs/langs/ro_RO/salaries.lang | 1 + htdocs/langs/ro_RO/sendings.lang | 14 +- htdocs/langs/ro_RO/stocks.lang | 4 +- htdocs/langs/ro_RO/suppliers.lang | 7 +- htdocs/langs/ro_RO/trips.lang | 136 +++++- htdocs/langs/ro_RO/withdrawals.lang | 2 +- htdocs/langs/ro_RO/workflow.lang | 2 +- htdocs/langs/ru_RU/admin.lang | 38 +- htdocs/langs/ru_RU/banks.lang | 6 +- htdocs/langs/ru_RU/commercial.lang | 12 +- htdocs/langs/ru_RU/contracts.lang | 1 + htdocs/langs/ru_RU/cron.lang | 1 + htdocs/langs/ru_RU/errors.lang | 5 +- htdocs/langs/ru_RU/install.lang | 1 + htdocs/langs/ru_RU/main.lang | 6 + htdocs/langs/ru_RU/orders.lang | 2 + htdocs/langs/ru_RU/other.lang | 3 +- htdocs/langs/ru_RU/productbatch.lang | 2 +- htdocs/langs/ru_RU/products.lang | 4 + htdocs/langs/ru_RU/projects.lang | 9 +- htdocs/langs/ru_RU/salaries.lang | 5 + htdocs/langs/ru_RU/sendings.lang | 2 +- htdocs/langs/ru_RU/stocks.lang | 4 +- htdocs/langs/ru_RU/suppliers.lang | 3 +- htdocs/langs/ru_RU/trips.lang | 136 +++++- htdocs/langs/ru_UA/contracts.lang | 2 +- htdocs/langs/ru_UA/install.lang | 2 - htdocs/langs/ru_UA/main.lang | 1 + htdocs/langs/sk_SK/admin.lang | 38 +- htdocs/langs/sk_SK/banks.lang | 6 +- htdocs/langs/sk_SK/commercial.lang | 12 +- htdocs/langs/sk_SK/contracts.lang | 1 + htdocs/langs/sk_SK/cron.lang | 1 + htdocs/langs/sk_SK/errors.lang | 5 +- htdocs/langs/sk_SK/install.lang | 1 + htdocs/langs/sk_SK/main.lang | 6 + htdocs/langs/sk_SK/orders.lang | 2 + htdocs/langs/sk_SK/other.lang | 3 +- htdocs/langs/sk_SK/productbatch.lang | 2 +- htdocs/langs/sk_SK/products.lang | 4 + htdocs/langs/sk_SK/projects.lang | 9 +- htdocs/langs/sk_SK/salaries.lang | 5 + htdocs/langs/sk_SK/sendings.lang | 2 +- htdocs/langs/sk_SK/stocks.lang | 4 +- htdocs/langs/sk_SK/suppliers.lang | 3 +- htdocs/langs/sk_SK/trips.lang | 136 +++++- htdocs/langs/sl_SI/admin.lang | 38 +- htdocs/langs/sl_SI/banks.lang | 6 +- htdocs/langs/sl_SI/commercial.lang | 12 +- htdocs/langs/sl_SI/contracts.lang | 1 + htdocs/langs/sl_SI/cron.lang | 1 + htdocs/langs/sl_SI/errors.lang | 5 +- htdocs/langs/sl_SI/install.lang | 1 + htdocs/langs/sl_SI/main.lang | 6 + htdocs/langs/sl_SI/orders.lang | 2 + htdocs/langs/sl_SI/other.lang | 3 +- htdocs/langs/sl_SI/productbatch.lang | 2 +- htdocs/langs/sl_SI/products.lang | 4 + htdocs/langs/sl_SI/projects.lang | 9 +- htdocs/langs/sl_SI/salaries.lang | 5 + htdocs/langs/sl_SI/sendings.lang | 2 +- htdocs/langs/sl_SI/stocks.lang | 4 +- htdocs/langs/sl_SI/suppliers.lang | 3 +- htdocs/langs/sl_SI/trips.lang | 134 +++++- htdocs/langs/sq_AL/admin.lang | 38 +- htdocs/langs/sq_AL/banks.lang | 6 +- htdocs/langs/sq_AL/commercial.lang | 10 +- htdocs/langs/sq_AL/contracts.lang | 1 + htdocs/langs/sq_AL/cron.lang | 1 + htdocs/langs/sq_AL/errors.lang | 5 +- htdocs/langs/sq_AL/install.lang | 1 + htdocs/langs/sq_AL/main.lang | 6 + htdocs/langs/sq_AL/orders.lang | 2 + htdocs/langs/sq_AL/other.lang | 3 +- htdocs/langs/sq_AL/productbatch.lang | 2 +- htdocs/langs/sq_AL/products.lang | 4 + htdocs/langs/sq_AL/projects.lang | 9 +- htdocs/langs/sq_AL/salaries.lang | 5 + htdocs/langs/sq_AL/sendings.lang | 2 +- htdocs/langs/sq_AL/stocks.lang | 4 +- htdocs/langs/sq_AL/suppliers.lang | 3 +- htdocs/langs/sq_AL/trips.lang | 136 +++++- htdocs/langs/sv_SE/accountancy.lang | 4 +- htdocs/langs/sv_SE/admin.lang | 70 ++- htdocs/langs/sv_SE/agenda.lang | 8 +- htdocs/langs/sv_SE/banks.lang | 8 +- htdocs/langs/sv_SE/bills.lang | 46 +- htdocs/langs/sv_SE/commercial.lang | 2 +- htdocs/langs/sv_SE/compta.lang | 2 +- htdocs/langs/sv_SE/contracts.lang | 1 + htdocs/langs/sv_SE/cron.lang | 5 +- htdocs/langs/sv_SE/ecm.lang | 4 +- htdocs/langs/sv_SE/errors.lang | 5 +- htdocs/langs/sv_SE/install.lang | 5 +- htdocs/langs/sv_SE/languages.lang | 2 +- htdocs/langs/sv_SE/main.lang | 16 +- htdocs/langs/sv_SE/orders.lang | 20 +- htdocs/langs/sv_SE/other.lang | 3 +- htdocs/langs/sv_SE/productbatch.lang | 14 +- htdocs/langs/sv_SE/products.lang | 34 +- htdocs/langs/sv_SE/projects.lang | 13 +- htdocs/langs/sv_SE/salaries.lang | 1 + htdocs/langs/sv_SE/sendings.lang | 24 +- htdocs/langs/sv_SE/stocks.lang | 24 +- htdocs/langs/sv_SE/suppliers.lang | 7 +- htdocs/langs/sv_SE/trips.lang | 136 +++++- htdocs/langs/sv_SE/withdrawals.lang | 2 +- htdocs/langs/sv_SE/workflow.lang | 2 +- htdocs/langs/th_TH/admin.lang | 38 +- htdocs/langs/th_TH/banks.lang | 6 +- htdocs/langs/th_TH/commercial.lang | 10 +- htdocs/langs/th_TH/contracts.lang | 1 + htdocs/langs/th_TH/cron.lang | 1 + htdocs/langs/th_TH/errors.lang | 5 +- htdocs/langs/th_TH/install.lang | 1 + htdocs/langs/th_TH/main.lang | 6 + htdocs/langs/th_TH/orders.lang | 2 + htdocs/langs/th_TH/other.lang | 3 +- htdocs/langs/th_TH/productbatch.lang | 2 +- htdocs/langs/th_TH/products.lang | 4 + htdocs/langs/th_TH/projects.lang | 9 +- htdocs/langs/th_TH/salaries.lang | 5 + htdocs/langs/th_TH/sendings.lang | 2 +- htdocs/langs/th_TH/stocks.lang | 4 +- htdocs/langs/th_TH/suppliers.lang | 3 +- htdocs/langs/th_TH/trips.lang | 136 +++++- htdocs/langs/tr_TR/admin.lang | 38 +- htdocs/langs/tr_TR/banks.lang | 6 +- htdocs/langs/tr_TR/commercial.lang | 10 +- htdocs/langs/tr_TR/contracts.lang | 1 + htdocs/langs/tr_TR/cron.lang | 1 + htdocs/langs/tr_TR/errors.lang | 5 +- htdocs/langs/tr_TR/install.lang | 1 + htdocs/langs/tr_TR/main.lang | 6 + htdocs/langs/tr_TR/orders.lang | 2 + htdocs/langs/tr_TR/other.lang | 3 +- htdocs/langs/tr_TR/productbatch.lang | 2 +- htdocs/langs/tr_TR/products.lang | 4 + htdocs/langs/tr_TR/projects.lang | 9 +- htdocs/langs/tr_TR/salaries.lang | 1 + htdocs/langs/tr_TR/sendings.lang | 2 +- htdocs/langs/tr_TR/stocks.lang | 4 +- htdocs/langs/tr_TR/suppliers.lang | 3 +- htdocs/langs/tr_TR/trips.lang | 136 +++++- htdocs/langs/uk_UA/admin.lang | 38 +- htdocs/langs/uk_UA/banks.lang | 6 +- htdocs/langs/uk_UA/commercial.lang | 10 +- htdocs/langs/uk_UA/contracts.lang | 1 + htdocs/langs/uk_UA/cron.lang | 1 + htdocs/langs/uk_UA/errors.lang | 5 +- htdocs/langs/uk_UA/install.lang | 1 + htdocs/langs/uk_UA/main.lang | 6 + htdocs/langs/uk_UA/orders.lang | 2 + htdocs/langs/uk_UA/other.lang | 3 +- htdocs/langs/uk_UA/productbatch.lang | 2 +- htdocs/langs/uk_UA/products.lang | 4 + htdocs/langs/uk_UA/projects.lang | 9 +- htdocs/langs/uk_UA/salaries.lang | 5 + htdocs/langs/uk_UA/sendings.lang | 2 +- htdocs/langs/uk_UA/stocks.lang | 4 +- htdocs/langs/uk_UA/suppliers.lang | 3 +- htdocs/langs/uk_UA/trips.lang | 136 +++++- htdocs/langs/uz_UZ/admin.lang | 38 +- htdocs/langs/uz_UZ/banks.lang | 6 +- htdocs/langs/uz_UZ/commercial.lang | 10 +- htdocs/langs/uz_UZ/contracts.lang | 1 + htdocs/langs/uz_UZ/cron.lang | 1 + htdocs/langs/uz_UZ/errors.lang | 5 +- htdocs/langs/uz_UZ/install.lang | 1 + htdocs/langs/uz_UZ/main.lang | 6 + htdocs/langs/uz_UZ/orders.lang | 2 + htdocs/langs/uz_UZ/other.lang | 3 +- htdocs/langs/uz_UZ/products.lang | 4 + htdocs/langs/uz_UZ/projects.lang | 9 +- htdocs/langs/uz_UZ/sendings.lang | 2 +- htdocs/langs/uz_UZ/stocks.lang | 4 +- htdocs/langs/uz_UZ/suppliers.lang | 3 +- htdocs/langs/uz_UZ/trips.lang | 136 +++++- htdocs/langs/vi_VN/admin.lang | 38 +- htdocs/langs/vi_VN/banks.lang | 6 +- htdocs/langs/vi_VN/commercial.lang | 2 +- htdocs/langs/vi_VN/contracts.lang | 1 + htdocs/langs/vi_VN/cron.lang | 1 + htdocs/langs/vi_VN/errors.lang | 5 +- htdocs/langs/vi_VN/install.lang | 1 + htdocs/langs/vi_VN/main.lang | 6 + htdocs/langs/vi_VN/orders.lang | 2 + htdocs/langs/vi_VN/other.lang | 3 +- htdocs/langs/vi_VN/productbatch.lang | 2 +- htdocs/langs/vi_VN/products.lang | 4 + htdocs/langs/vi_VN/projects.lang | 9 +- htdocs/langs/vi_VN/salaries.lang | 1 + htdocs/langs/vi_VN/sendings.lang | 2 +- htdocs/langs/vi_VN/stocks.lang | 4 +- htdocs/langs/vi_VN/suppliers.lang | 3 +- htdocs/langs/vi_VN/trips.lang | 136 +++++- htdocs/langs/zh_CN/admin.lang | 38 +- htdocs/langs/zh_CN/banks.lang | 6 +- htdocs/langs/zh_CN/commercial.lang | 12 +- htdocs/langs/zh_CN/contracts.lang | 1 + htdocs/langs/zh_CN/cron.lang | 1 + htdocs/langs/zh_CN/errors.lang | 5 +- htdocs/langs/zh_CN/install.lang | 1 + htdocs/langs/zh_CN/main.lang | 6 + htdocs/langs/zh_CN/orders.lang | 2 + htdocs/langs/zh_CN/other.lang | 3 +- htdocs/langs/zh_CN/productbatch.lang | 2 +- htdocs/langs/zh_CN/products.lang | 4 + htdocs/langs/zh_CN/projects.lang | 9 +- htdocs/langs/zh_CN/salaries.lang | 5 + htdocs/langs/zh_CN/sendings.lang | 2 +- htdocs/langs/zh_CN/stocks.lang | 4 +- htdocs/langs/zh_CN/suppliers.lang | 3 +- htdocs/langs/zh_CN/trips.lang | 136 +++++- htdocs/langs/zh_TW/admin.lang | 38 +- htdocs/langs/zh_TW/banks.lang | 6 +- htdocs/langs/zh_TW/commercial.lang | 12 +- htdocs/langs/zh_TW/contracts.lang | 1 + htdocs/langs/zh_TW/cron.lang | 1 + htdocs/langs/zh_TW/errors.lang | 5 +- htdocs/langs/zh_TW/install.lang | 1 + htdocs/langs/zh_TW/main.lang | 6 + htdocs/langs/zh_TW/orders.lang | 2 + htdocs/langs/zh_TW/other.lang | 3 +- htdocs/langs/zh_TW/productbatch.lang | 2 +- htdocs/langs/zh_TW/products.lang | 4 + htdocs/langs/zh_TW/projects.lang | 9 +- htdocs/langs/zh_TW/salaries.lang | 5 + htdocs/langs/zh_TW/sendings.lang | 2 +- htdocs/langs/zh_TW/stocks.lang | 4 +- htdocs/langs/zh_TW/suppliers.lang | 3 +- htdocs/langs/zh_TW/trips.lang | 136 +++++- 912 files changed, 10360 insertions(+), 3094 deletions(-) diff --git a/dev/fixaltlanguages.sh b/dev/fixaltlanguages.sh index d6d1946b7d1..eec9df4b88f 100755 --- a/dev/fixaltlanguages.sh +++ b/dev/fixaltlanguages.sh @@ -37,8 +37,12 @@ then export aa=`echo $dirshort | nawk -F"_" '{ print $1 }'` export bb=`echo $dirshort | nawk -F"_" '{ print $2 }'` aaupper=`echo $dirshort | nawk -F"_" '{ print toupper($1) }'` + if [ $aaupper = "EN" ] + then + aaupper="US" + fi bblower=`echo $dirshort | nawk -F"_" '{ print tolower($2) }'` - if [ "$aa" != "$bblower" ] + if [ "$aa" != "$bblower" -a "$bblower" != "us" ] then reflang="htdocs/langs/"$aa"_"$aaupper if [ -d $reflang ] diff --git a/htdocs/langs/ar_SA/admin.lang b/htdocs/langs/ar_SA/admin.lang index 290a5eb67b5..2777d5fac6a 100644 --- a/htdocs/langs/ar_SA/admin.lang +++ b/htdocs/langs/ar_SA/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=تجريبية VersionDevelopment=تطويرية VersionUnknown=غير معروفة VersionRecommanded=موصى بها +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=رمز المرحلة SessionSaveHandler=معالج لحفظ المراحل SessionSavePath=مرحلة التخزين المحلية @@ -493,10 +498,16 @@ Module600Name=الإخطارات Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=التبرعات Module700Desc=التبرعات إدارة +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=فرس النبي Module1200Desc=فرس النبي التكامل Module1400Name=المحاسبة Module1400Desc=المحاسبة الإدارية (ضعف الأحزاب) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=الفئات Module1780Desc=الفئات إدارة المنتجات والموردين والزبائن) Module2000Name=Fckeditor @@ -631,7 +642,7 @@ Permission181=قراءة مورد أوامر Permission182=إنشاء / تغيير المورد أوامر Permission183=صحة أوامر المورد Permission184=الموافقة على أوامر المورد -Permission185=من أجل المورد أوامر +Permission185=Order or cancel supplier orders Permission186=تلقي أوامر المورد Permission187=وثيقة أوامر المورد Permission188=المورد إلغاء أوامر @@ -711,6 +722,13 @@ Permission538=تصدير الخدمات Permission701=قراءة التبرعات Permission702=إنشاء / تعديل والهبات Permission703=حذف التبرعات +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=قراءة مخزونات Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=كلمة مرور لاستخدام الملقم الوكيل DefineHereComplementaryAttributes=هنا تعريف جميع atributes، لا تتوفر بالفعل افتراضيا، والتي تريد أن تدعم ل%s. ExtraFields=تكميلية سمات ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=خط من المنتجات / الخدمات ذات ا FreeLegalTextOnProposal=نص تجارية حرة على مقترحات WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=أوامر إدارة الإعداد OrdersNumberingModules=أوامر الترقيم نمائط @@ -1383,7 +1410,7 @@ BarcodeDescUPC=الباركود نوع من اتحاد الوطنيين الكو BarcodeDescISBN=الباركود من نوع ردمك BarcodeDescC39=الباركود من نوع C39 BarcodeDescC128=الباركود من نوع C128 -GenbarcodeLocation=باركود الجيل سطر أداة تستخدمها phpbarcode المحرك لبعض أنواع باركود) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=الحساب النقدي لاستخدامها لتبيع CashDeskBankAccountForCheque= حساب لاستخدام لتلقي المدفوعات عن طريق الشيكات CashDeskBankAccountForCB= حساب لاستخدام لاستلام المبالغ النقدية عن طريق بطاقات الائتمان -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=إعداد وحدة المرجعية @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/ar_SA/banks.lang b/htdocs/langs/ar_SA/banks.lang index 4a6dabe894e..3f25d223c75 100644 --- a/htdocs/langs/ar_SA/banks.lang +++ b/htdocs/langs/ar_SA/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=المصالحة RIB=رقم الحساب المصرفي IBAN=عدد إيبان +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=بيك / سويفت عدد +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=أوامر دائمة StandingOrder=من أجل الوقوف Withdrawals=انسحابات @@ -148,7 +152,7 @@ BackToAccount=إلى حساب ShowAllAccounts=وتبين للجميع الحسابات FutureTransaction=الصفقة في أجل المستقبل. أي وسيلة للتوفيق. SelectChequeTransactionAndGenerate=حدد / تصفية الشيكات لتشمل في الاختيار استلام الودائع وانقر على "إنشاء". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/ar_SA/commercial.lang b/htdocs/langs/ar_SA/commercial.lang index 2ddffcb0a05..9f0e152a7dc 100644 --- a/htdocs/langs/ar_SA/commercial.lang +++ b/htdocs/langs/ar_SA/commercial.lang @@ -9,9 +9,9 @@ Prospect=احتمال Prospects=آفاق DeleteAction=حذف عمل / المهمة NewAction=عمل جديدة / المهمة -AddAction=أضف العمل / المهمة -AddAnAction=إضافة عمل / المهمة -AddActionRendezVous=إضافة مهمة رانديفو +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=الموعد ConfirmDeleteAction=هل أنت متأكد من أنك تريد حذف هذه المهمة؟ CardAction=بطاقة العمل @@ -44,8 +44,8 @@ DoneActions=إجراءات عمله DoneActionsFor=إجراءات لعمله ق ٪ ToDoActions=عدم اكتمال الإجراءات ToDoActionsFor=لعدم اكتمال الإجراءات ق ٪ -SendPropalRef=اقتراح ارسال التجارية ق ٪ -SendOrderRef=من أجل إرسال المستندات ٪ +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=لا ينطبق StatusActionToDo=القيام StatusActionDone=فعل @@ -62,7 +62,7 @@ LastProspectContactDone=الاتصال به DateActionPlanned=تاريخ العمل المزمع DateActionDone=تاريخ العمل به ActionAskedBy=طلبت العمل -ActionAffectedTo=العمل على المتضررين +ActionAffectedTo=Event assigned to ActionDoneBy=العمل الذي قام به ActionUserAsk=التي سجلتها ErrorStatusCantBeZeroIfStarted=إذا كان المجال 'تاريخ عمله هو شغلها ، وبدأ العمل (أو انتهت) ، وذلك الميدان' الحالة 'لا يمكن أن يكون 0 ٪ ٪. diff --git a/htdocs/langs/ar_SA/contracts.lang b/htdocs/langs/ar_SA/contracts.lang index 133036960c0..8c181b2fba4 100644 --- a/htdocs/langs/ar_SA/contracts.lang +++ b/htdocs/langs/ar_SA/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=انتهى ServiceStatusClosed=مغلقة ServicesLegend=خدمات أسطورة Contracts=عقود +ContractsAndLine=Contracts and line of contracts Contract=العقد NoContracts=أي عقود MenuServices=الخدمات diff --git a/htdocs/langs/ar_SA/cron.lang b/htdocs/langs/ar_SA/cron.lang index 46751a39fdb..c3c9b446364 100644 --- a/htdocs/langs/ar_SA/cron.lang +++ b/htdocs/langs/ar_SA/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/ar_SA/errors.lang b/htdocs/langs/ar_SA/errors.lang index 87a2b76ac3d..4635ed9b4be 100644 --- a/htdocs/langs/ar_SA/errors.lang +++ b/htdocs/langs/ar_SA/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=المصدر والأهداف يجب أن تكو ErrorBadThirdPartyName=سوء قيمة اسم طرف ثالث ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=سوء تركيب الزبون مدونة -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=رمز العميل المطلوبة ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=الشفرة المستخدمة بالفعل العملاء @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=يجب عدم تعطيل جافا سكريبت لج ErrorPasswordsMustMatch=ويجب على كلا كلمات المرور المكتوبة تطابق بعضها البعض ErrorContactEMail=وقع خطأ فني. من فضلك، اتصل بمسؤول إلى البريد الإلكتروني بعد %s EN توفير %s رمز الخطأ في رسالتك، أو حتى أفضل من خلال إضافة نسخة شاشة من هذه الصفحة. ErrorWrongValueForField=قيمة خاطئة لعدد %s الحقل (قيمة '%s' لا يتطابق %s حكم [رجإكس]) -ErrorFieldValueNotIn=قيمة خاطئة ل%s عدد حقل ('%s "قيمة ليست قيمة المتاحة في مجال %s %s الجدول) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=قيمة خاطئة ل%s عدد حقل ('%s "قيمة ليست المرجع %s موجود) ErrorsOnXLines=الأخطاء على خطوط مصدر %s ErrorFileIsInfectedWithAVirus=وكان برنامج مكافحة الفيروسات غير قادرة على التحقق من صحة الملف (ملف قد يكون مصابا بواسطة فيروس) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/ar_SA/install.lang b/htdocs/langs/ar_SA/install.lang index 589343ad052..b805743f44f 100644 --- a/htdocs/langs/ar_SA/install.lang +++ b/htdocs/langs/ar_SA/install.lang @@ -156,6 +156,7 @@ LastStepDesc=الخطوة الأخيرة : تعريف المس ActivateModule=تفعيل وحدة %s ShowEditTechnicalParameters=انقر هنا لعرض/تحرير المعلمات المتقدمة (وضع الخبراء) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/ar_SA/main.lang b/htdocs/langs/ar_SA/main.lang index 64e8da49c42..45649f61d53 100644 --- a/htdocs/langs/ar_SA/main.lang +++ b/htdocs/langs/ar_SA/main.lang @@ -141,6 +141,7 @@ Cancel=الغاء Modify=تعديل Edit=تحرير Validate=صحة +ValidateAndApprove=Validate and Approve ToValidate=للمصادقة Save=حفظ SaveAs=حفظ باسم @@ -158,6 +159,7 @@ Search=بحث SearchOf=البحث Valid=صحيح Approve=الموافقة +Disapprove=Disapprove ReOpen=إعادة فتح Upload=ارسال الملف ToLink=Link @@ -219,6 +221,7 @@ Cards=بطاقات Card=بطاقة Now=الآن Date=تاريخ +DateAndHour=Date and hour DateStart=تاريخ البدء DateEnd=نهاية التاريخ DateCreation=تاريخ الإنشاء @@ -295,6 +298,7 @@ UnitPriceHT=سعر الوحدة (صافي) UnitPriceTTC=سعر الوحدة PriceU=ارتفاع PriceUHT=ارتفاع (صافي) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=ارتفاع Amount=مبلغ AmountInvoice=مبلغ الفاتورة @@ -521,6 +525,7 @@ DateFromTo=ل٪ من ق ق ٪ DateFrom=من ق ٪ DateUntil=حتى ق ٪ Check=فحص +Uncheck=Uncheck Internal=الداخلية External=الخارجية Internals=الداخلية @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=يوم الاثنين Tuesday=الثلاثاء diff --git a/htdocs/langs/ar_SA/orders.lang b/htdocs/langs/ar_SA/orders.lang index c3188102774..24a7db59d86 100644 --- a/htdocs/langs/ar_SA/orders.lang +++ b/htdocs/langs/ar_SA/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=ألغى StatusOrderDraft=مشروع (لا بد من التحقق من صحة) StatusOrderValidated=صادق StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=تجهيز StatusOrderToBill=على مشروع قانون StatusOrderToBill2=على مشروع قانون @@ -58,6 +59,7 @@ MenuOrdersToBill=أوامر لمشروع قانون MenuOrdersToBill2=Billable orders SearchOrder=من أجل البحث SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=سفينة المنتج Discount=الخصم CreateOrder=خلق أمر diff --git a/htdocs/langs/ar_SA/other.lang b/htdocs/langs/ar_SA/other.lang index 4500fbcdd8b..8154a44c9ea 100644 --- a/htdocs/langs/ar_SA/other.lang +++ b/htdocs/langs/ar_SA/other.lang @@ -54,12 +54,13 @@ MaxSize=الحجم الأقصى AttachANewFile=إرفاق ملف جديد / وثيقة LinkedObject=ربط وجوه Miscellaneous=متفرقات -NbOfActiveNotifications=عدد الإخطارات +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=هذا هو الاختبار الإلكتروني. تكون مفصولة \\ nThe سطرين من قبل حرف إرجاع. PredefinedMailTestHtml=هذا هو البريد الاختبار (الاختبار يجب أن تكون في كلمة جريئة).
وتفصل بين الخطين من قبل حرف إرجاع. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/ar_SA/productbatch.lang b/htdocs/langs/ar_SA/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/ar_SA/productbatch.lang +++ b/htdocs/langs/ar_SA/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/ar_SA/products.lang b/htdocs/langs/ar_SA/products.lang index dce6ac36fea..e79c928e86b 100644 --- a/htdocs/langs/ar_SA/products.lang +++ b/htdocs/langs/ar_SA/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/ar_SA/projects.lang b/htdocs/langs/ar_SA/projects.lang index 8e9925f168a..b1625a43fdf 100644 --- a/htdocs/langs/ar_SA/projects.lang +++ b/htdocs/langs/ar_SA/projects.lang @@ -8,8 +8,10 @@ SharedProject=مشاريع مشتركة PrivateProject=اتصالات من المشروع MyProjectsDesc=ويقتصر هذا الرأي على المشاريع التي تقوم على الاتصال (كل ما هو نوع). ProjectsPublicDesc=هذا الرأي يعرض جميع المشاريع ويسمح لك قراءة. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=ويعرض هذا الرأي جميع المشاريع (أذونات المستخدم الخاص أعطى الصلاحية لعرض كل شيء). MyTasksDesc=ويقتصر هذا الرأي على المشروعات أو المهام التي هي الاتصال للحصول على (ما هو نوع). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=هذا الرأي يعرض جميع المشاريع والمهام ويسمح لك قراءة. TasksDesc=هذا الرأي يعرض جميع المشاريع والمهام (أذونات المستخدم الخاص أعطى الصلاحية لعرض كل شيء). ProjectsArea=مشاريع المنطقة @@ -29,6 +31,8 @@ NoProject=لا يعرف أو المملوكة للمشروع NbOpenTasks=ملاحظة : من مهام فتح NbOfProjects=ملاحظة : للمشاريع TimeSpent=الوقت الذي تستغرقه +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=قضى وقتا RefTask=المرجع. مهمة LabelTask=علامة مهمة @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=قائمة الموردين الأوامر ListSupplierInvoicesAssociatedProject=قائمة الموردين المرتبطة بالمشروع. ListContractAssociatedProject=قائمة العقود المرتبطة بالمشروع. ListFichinterAssociatedProject=قائمة التدخلات المرتبطة بالمشروع -ListTripAssociatedProject=قائمة من الرحلات والنفقات المرتبطة بالمشروع +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=قائمة الإجراءات المرتبطة بالمشروع ActivityOnProjectThisWeek=نشاط المشروع هذا الاسبوع ActivityOnProjectThisMonth=نشاط المشروع هذا الشهر @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/ar_SA/salaries.lang b/htdocs/langs/ar_SA/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/ar_SA/salaries.lang +++ b/htdocs/langs/ar_SA/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/ar_SA/sendings.lang b/htdocs/langs/ar_SA/sendings.lang index ef76283c5de..ba8a8febbad 100644 --- a/htdocs/langs/ar_SA/sendings.lang +++ b/htdocs/langs/ar_SA/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=الكمية أمرت QtyShipped=الكمية المشحونة QtyToShip=لشحن الكمية QtyReceived=الكمية الواردة -KeepToShip=إبقاء لشحن +KeepToShip=Remain to ship OtherSendingsForSameOrder=الإرسال الأخرى لهذا النظام DateSending=وحتى الآن من أجل إرسال DateSendingShort=وحتى الآن من أجل إرسال diff --git a/htdocs/langs/ar_SA/stocks.lang b/htdocs/langs/ar_SA/stocks.lang index 9e6ab293234..965feeea1bc 100644 --- a/htdocs/langs/ar_SA/stocks.lang +++ b/htdocs/langs/ar_SA/stocks.lang @@ -47,6 +47,7 @@ PMPValue=المتوسط المرجح لسعر PMPValueShort=الواب EnhancedValueOfWarehouses=قيمة المستودعات UserWarehouseAutoCreate=خلق مخزون تلقائيا عند إنشاء مستخدم +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=ارسال كمية QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/ar_SA/suppliers.lang b/htdocs/langs/ar_SA/suppliers.lang index 405d15954ba..622c3c5575d 100644 --- a/htdocs/langs/ar_SA/suppliers.lang +++ b/htdocs/langs/ar_SA/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=الموردين -Supplier=المورد AddSupplier=Create a supplier SupplierRemoved=إزالة المورد SuppliersInvoice=فاتورة الموردين @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=فواتير الموردين والمدفوعات ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=الموافقة على هذا النظام ConfirmApproveThisOrder=هل أنت متأكد من أن يوافق على هذا الأمر؟ -DenyingThisOrder=ونفى هذا الأمر +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=هل أنت متأكد من إنكار هذا الأمر؟ ConfirmCancelThisOrder=هل أنت متأكد من أنك تريد إلغاء هذا النظام؟ AddCustomerOrder=العملاء من أجل خلق diff --git a/htdocs/langs/ar_SA/trips.lang b/htdocs/langs/ar_SA/trips.lang index a0e4ca8661a..fadc1044001 100644 --- a/htdocs/langs/ar_SA/trips.lang +++ b/htdocs/langs/ar_SA/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=رحلة -Trips=رحلات -TripsAndExpenses=ونفقات الرحلات -TripsAndExpensesStatistics=رحلات ونفقات إحصاءات -TripCard=بطاقة زيارة -AddTrip=إضافة رحلة -ListOfTrips=قائمة الرحلات +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=قائمة الرسوم -NewTrip=رحلة جديدة +NewTrip=New expense report CompanyVisited=الشركة / المؤسسة زارت Kilometers=كم FeesKilometersOrAmout=كم المبلغ أو -DeleteTrip=رحلة حذف -ConfirmDeleteTrip=هل أنت متأكد من أنك تريد حذف هذه الرحلة؟ -TF_OTHER=أخرى -TF_LUNCH=غداء -TF_TRIP=رحلة -ListTripsAndExpenses=قائمة الرحلات والمصاريف -ExpensesArea=رحلات ومنطقة النفقات -SearchATripAndExpense=بحث عن رحلة والنفقات +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=أخرى +TF_TRANSPORTATION=Transportation +TF_LUNCH=غداء +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/bg_BG/admin.lang b/htdocs/langs/bg_BG/admin.lang index 6b3cc24a468..e1d603d5a23 100644 --- a/htdocs/langs/bg_BG/admin.lang +++ b/htdocs/langs/bg_BG/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Експериментален VersionDevelopment=Разработка VersionUnknown=Неизвестен VersionRecommanded=Препоръчва се +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=ID на сесията SessionSaveHandler=Handler за да запазите сесията SessionSavePath=Място за съхранение на сесията @@ -294,7 +299,7 @@ DoNotUseInProduction=Не използвайте на продукшън пла ThisIsProcessToFollow=Това е настройка на процеса: StepNb=Стъпка %s FindPackageFromWebSite=Намери пакет, който осигурява функция искате (например относно официалния уеб сайт %s). -DownloadPackageFromWebSite=Download package %s. +DownloadPackageFromWebSite=Изтегляне на пакет %s. UnpackPackageInDolibarrRoot=Разопаковайте пакет файл в главната директория %s Dolibarr SetupIsReadyForUse=Install е завършен и Dolibarr е готов за използване с този нов компонент. NotExistsDirect=Алтернатива главната директория не е дефинирано.
@@ -311,7 +316,7 @@ GenericMaskCodes3=Всички други символи на маската щ GenericMaskCodes4a=Пример за използване на 99 %s на третата страна КОМПАНИЯТА извършва 2007-01-31:
GenericMaskCodes4b=Пример за трета страна е създаден на 2007-03-01:
GenericMaskCodes4c=Пример за продукт, създаден на 2007-03-01:
-GenericMaskCodes5=ABC{yy}{mm}-{000000} will give ABC0701-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX +GenericMaskCodes5=ABC{yy}{mm}-{000000} ще даде ABC0701-000099
{0000+100@1}-ZZZ/{dd} / XXX ще даде 0199-ZZZ/31/XXX GenericNumRefModelDesc=Върнете адаптивни номер според определен маска. ServerAvailableOnIPOrPort=Сървър е достъпна на адрес %s на порт %s ServerNotAvailableOnIPOrPort=Сървърът не е достъпен на адрес %s на порт %s @@ -335,7 +340,7 @@ LanguageFilesCachedIntoShmopSharedMemory=Файлове. Lang заредени ExamplesWithCurrentSetup=Примери с текущата настройка ListOfDirectories=Списък на OpenDocument директории шаблони ListOfDirectoriesForModelGenODT=Списък на директории, съдържащи шаблони файлове с OpenDocument формат.

Тук можете да въведете пълния път на директории.
Добави за връщане между указател ие.
За да добавите директория на GED модул, добавете тук на DOL_DATA_ROOT / ECM / yourdirectoryname.

Файлове в тези директории, трябва да завършва с. ODT. -NumberOfModelFilesFound=Number of ODT/ODS templates files found in those directories +NumberOfModelFilesFound=Брой на ODT файлове шаблони, намерени в тези директории ExampleOfDirectoriesForModelGen=Примери на синтаксиса:
C: \\ mydir
/ Начало / mydir
DOL_DATA_ROOT / ECM / ecmdir FollowingSubstitutionKeysCanBeUsed=
За да разберете как да създадете свои ODT шаблони на документи, преди да ги съхранявате в тези указатели, прочетете уики документация: FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template @@ -369,19 +374,19 @@ NewVATRates=Нов ставка на ДДС PriceBaseTypeToChange=Промяна на цените с база референтна стойност, определена на MassConvert=Стартиране маса конвертирате String=Низ -TextLong=Long text -Int=Integer -Float=Float +TextLong=Дълъг текст +Int=Цяло число +Float=Десетично число DateAndTime=Дата и час -Unique=Unique -Boolean=Boolean (Checkbox) +Unique=Уникално +Boolean=Логическо (Отметка) ExtrafieldPhone = Телефон ExtrafieldPrice = Цена ExtrafieldMail = Имейл -ExtrafieldSelect = Select list -ExtrafieldSelectList = Select from table -ExtrafieldSeparator=Separator -ExtrafieldCheckBox=Checkbox +ExtrafieldSelect = Избор лист +ExtrafieldSelectList = Избор от таблица +ExtrafieldSeparator=Разделител +ExtrafieldCheckBox=Отметка ExtrafieldRadio=Радио бутон ExtrafieldCheckBoxFromList= Checkbox from table ExtrafieldParamHelpselect=Parameters list have to be like key,value

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

In order to have the list depending on another :
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key @@ -389,16 +394,16 @@ ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value

fo ExtrafieldParamHelpradio=Parameters list have to be like key,value

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

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

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

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter -LibraryToBuildPDF=Library used to build PDF +LibraryToBuildPDF=Библиотека използвана за направа на PDF WarningUsingFPDF=Warning: Your conf.php contains directive dolibarr_pdf_force_fpdf=1. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.
To solve this and have a full support of PDF generation, please download TCPDF library, then comment or remove the line $dolibarr_pdf_force_fpdf=1, and add instead $dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir' LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:
1 : local tax apply on products and services without vat (vat is not applied on local tax)
2 : local tax apply on products and services before vat (vat is calculated on amount + localtax)
3 : local tax apply on products without vat (vat is not applied on local tax)
4 : local tax apply on products before vat (vat is calculated on amount + localtax)
5 : local tax apply on services without vat (vat is not applied on local tax)
6 : local tax apply on services before vat (vat is calculated on amount + localtax) SMS=SMS LinkToTestClickToDial=Enter a phone number to call to show a link to test the ClickToDial url for user %s -RefreshPhoneLink=Refresh link -LinkToTest=Clickable link generated for user %s (click phone number to test) -KeepEmptyToUseDefault=Keep empty to use default value -DefaultLink=Default link -ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) +RefreshPhoneLink=Обнови връзка +LinkToTest=Генерирана е връзка за потребител %s (натиснете телефонния номер за тест) +KeepEmptyToUseDefault=Оставете празно за стойност по подразбиране +DefaultLink=Връзка по подразбиране +ValueOverwrittenByUserSetup=Внимание, тази стойност може да бъде презаписана от потребителски настройки (всеки потребител може да зададе собствен натисни-набери адрес) ExternalModule=Външен модул - инсталиран в директория %s BarcodeInitForThirdparties=Mass barcode init for thirdparties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services @@ -443,8 +448,8 @@ Module52Name=Запаси Module52Desc=Управление на склад (продукти) Module53Name=Услуги Module53Desc=Управление на услуги -Module54Name=Contracts/Subscriptions -Module54Desc=Management of contracts (services or reccuring subscriptions) +Module54Name=Договори/Абонаменти +Module54Desc=Управление на договори (услуги или абонаменти) Module55Name=Баркодове Module55Desc=Управление на баркод Module56Name=Телефония @@ -481,7 +486,7 @@ Module320Name=RSS емисия Module320Desc=Добавяне на RSS емисия в страниците на Dolibarr Module330Name=Отметки Module330Desc=Управление на отметки -Module400Name=Projects/Opportunities/Leads +Module400Name=Проекти/Възможности Module400Desc=Management of projects, opportunities or leads. You can then assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. Module410Name=Webcalendar Module410Desc=Webcalendar интеграция @@ -493,10 +498,16 @@ Module600Name=Известия Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Дарения Module700Desc=Управление на дарения +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Богомолка Module1200Desc=Mantis интеграция Module1400Name=Счетоводство Module1400Desc=Управление на счетоводство (двойни страни) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Категории Module1780Desc=Управление на категории (продукти, доставчици и клиенти) Module2000Name=WYSIWYG редактор @@ -631,7 +642,7 @@ Permission181=Доставчика поръчки Permission182=Създаване / промяна на доставчика поръчки Permission183=Проверка на доставчика поръчки Permission184=Одобряване на доставчика поръчки -Permission185=Поръчка доставчика поръчки +Permission185=Order or cancel supplier orders Permission186=Получаване на доставчика поръчки Permission187=Близки поръчки доставчици Permission188=Отказ доставчика поръчки @@ -711,6 +722,13 @@ Permission538=Износ услуги Permission701=Прочети дарения Permission702=Създаване / промяна на дарения Permission703=Изтриване на дарения +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Прочети запаси Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Парола, за да използвате прокси сър DefineHereComplementaryAttributes=Определете тук всички atributes, не е налична по подразбиране, и че искате да се поддържа за %s. ExtraFields=Допълнителни атрибути ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Линия на продукт / услуга с ну FreeLegalTextOnProposal=Свободен текст на търговски предложения WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Настройки за управление на поръчки OrdersNumberingModules=Поръчки номериране модули @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Баркод от тип UPC BarcodeDescISBN=Баркод от тип ISBN BarcodeDescC39=Баркод от типа С39 BarcodeDescC128=Баркод от тип C128 -GenbarcodeLocation=Бар код поколение инструмент за командния ред (използва се от двигател с вътрешно за някои видове баркод) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Акаунт по подразбиране да се използва за получаване на парични плащания CashDeskBankAccountForCheque= Акаунт по подразбиране да се използва за получаване на плащания с чек CashDeskBankAccountForCB= Акаунт по подразбиране да се използва за получаване на парични плащания с кредитни карти -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Bookmark настройка модул @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/bg_BG/banks.lang b/htdocs/langs/bg_BG/banks.lang index ffd304d841c..e609966ddf7 100644 --- a/htdocs/langs/bg_BG/banks.lang +++ b/htdocs/langs/bg_BG/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Помирение RIB=Номер на банкова сметка IBAN=IBAN номер +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC / SWIFT номер +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Постоянни поръчки StandingOrder=Постоянна поръчка Withdrawals=Тегления @@ -148,7 +152,7 @@ BackToAccount=Обратно към сметка ShowAllAccounts=Покажи за всички сметки FutureTransaction=Транзакция в FUTUR. Няма начин за помирение. SelectChequeTransactionAndGenerate=Изберете / филтрирате проверки, за да се включи в проверка за получаването на депозит и кликнете върху "Създаване". -InputReceiptNumber=Изберете банково извлечение, свързани с процедурата по съгласуване. Използвайте подреждане числова стойност (като YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=В крайна сметка, да посочите категорията, в която да се класифицират записи ToConciliate=За помирение? ThenCheckLinesAndConciliate=След това проверете линии в отчета на банката и кликнете diff --git a/htdocs/langs/bg_BG/boxes.lang b/htdocs/langs/bg_BG/boxes.lang index 8695bdf4edd..77d4e23521f 100644 --- a/htdocs/langs/bg_BG/boxes.lang +++ b/htdocs/langs/bg_BG/boxes.lang @@ -12,13 +12,14 @@ BoxLastProspects=Последно променени prospects BoxLastCustomers=Последно променени клиенти BoxLastSuppliers=Последно променени доставчици BoxLastCustomerOrders=Последни поръчки на клиентите +BoxLastValidatedCustomerOrders=Последни проверени клиентски поръчки BoxLastBooks=Последни книги BoxLastActions=Последни действия BoxLastContracts=Последните договори BoxLastContacts=Последните контакти/адреси BoxLastMembers=Последните членове BoxFicheInter=Последните намеси -BoxCurrentAccounts=Opened accounts balance +BoxCurrentAccounts=Открити сметки баланс BoxSalesTurnover=Оборот от продажби BoxTotalUnpaidCustomerBills=Общо неплатени фактури на клиента BoxTotalUnpaidSuppliersBills=Общо неплатени фактури на доставчика @@ -27,26 +28,29 @@ BoxTitleNbOfCustomers=Брой клиенти BoxTitleLastRssInfos=Последните %s новини от %s BoxTitleLastProducts=Последните %s променени продукти/услуги BoxTitleProductsAlertStock=Предупреждение за наличност на продукти -BoxTitleLastCustomerOrders=Последните %s променени поръчки от клиенти +BoxTitleLastCustomerOrders=Последни %s поръчки на клиенти +BoxTitleLastModifiedCustomerOrders=Последни %s променени клиентски поръчки BoxTitleLastSuppliers=Последните %s записани доставчици BoxTitleLastCustomers=Последните %s записани клиенти BoxTitleLastModifiedSuppliers=Последните %s променени доставчици BoxTitleLastModifiedCustomers=Последните %s променени клиенти -BoxTitleLastCustomersOrProspects=Последните %s променени клиенти или prospects -BoxTitleLastPropals=Последните %s записани предложения +BoxTitleLastCustomersOrProspects=Последни %s клиенти или потенциални +BoxTitleLastPropals=Последни %s предложения +BoxTitleLastModifiedPropals=Последни %s променени предложения BoxTitleLastCustomerBills=Последните %s фактури на клиента +BoxTitleLastModifiedCustomerBills=Последни %s променени клиентски фактури BoxTitleLastSupplierBills=Последните %s фактури на доставчика -BoxTitleLastProspects=Последните %s записани prospects +BoxTitleLastModifiedSupplierBills=Последни %s променени фактури от доставчик BoxTitleLastModifiedProspects=Последните %s променени prospects BoxTitleLastProductsInContract=Последните %s продукти / услуги в договора -BoxTitleLastModifiedMembers=Последните %s променени членове +BoxTitleLastModifiedMembers=Последни %s членове BoxTitleLastFicheInter=Последните %s променени intervention -BoxTitleOldestUnpaidCustomerBills=Старите %s неплатени фактури на клиента -BoxTitleOldestUnpaidSupplierBills=Старите %s неплатени фактури на доставчика -BoxTitleCurrentAccounts=Opened account's balances +BoxTitleOldestUnpaidCustomerBills=Най-стари %s неплатени клиентски фактури +BoxTitleOldestUnpaidSupplierBills=Най-стари %s неплатени фактури доставчик +BoxTitleCurrentAccounts=Открити сметки баланси BoxTitleSalesTurnover=Оборот от продажби -BoxTitleTotalUnpaidCustomerBills=Неплатени фактури на клиента -BoxTitleTotalUnpaidSuppliersBills=Неплатени фактури на доставчика +BoxTitleTotalUnpaidCustomerBills=Неплатени клиентски фактури +BoxTitleTotalUnpaidSuppliersBills=Неплатени доставни фактури BoxTitleLastModifiedContacts=Последните %s променени контакти/адреси BoxMyLastBookmarks=Последните ми %s отметки BoxOldestExpiredServices=Най-старите действащи изтекли услуги @@ -74,18 +78,19 @@ NoRecordedProducts=Няма регистрирани продукти / услу NoRecordedProspects=Няма регистрирани перспективи NoContractedProducts=Няма договорени продукти / услуги NoRecordedContracts=Няма регистрирани договори -NoRecordedInterventions=No recorded interventions +NoRecordedInterventions=Няма записани намеси BoxLatestSupplierOrders=Последни поръчки доставчика -BoxTitleLatestSupplierOrders=%s новите поръчки доставчика +BoxTitleLatestSupplierOrders=Последни %s поръчки за доставка +BoxTitleLatestModifiedSupplierOrders=Последни %s променени поръчки от доставчик NoSupplierOrder=Не са познати доставчик за -BoxCustomersInvoicesPerMonth=Customer invoices per month -BoxSuppliersInvoicesPerMonth=Supplier invoices per month -BoxCustomersOrdersPerMonth=Customer orders per month -BoxSuppliersOrdersPerMonth=Supplier orders per month -BoxProposalsPerMonth=Proposals per month +BoxCustomersInvoicesPerMonth=Клиентски фактури за месец +BoxSuppliersInvoicesPerMonth=Доставчик фактури за месец +BoxCustomersOrdersPerMonth=Клиентски заявки за месец +BoxSuppliersOrdersPerMonth=Доставчик поръчки за месец +BoxProposalsPerMonth=Предложения за месец NoTooLowStockProducts=Няма продукт в наличност под минималната -BoxProductDistribution=Products/Services distribution -BoxProductDistributionFor=Distribution of %s for %s +BoxProductDistribution=Продукти/Услуги разпределение +BoxProductDistributionFor=Разпределение на %s за %s ForCustomersInvoices=Клиента фактури -ForCustomersOrders=Customers orders +ForCustomersOrders=Клиентски поръчки ForProposals=Предложения diff --git a/htdocs/langs/bg_BG/cashdesk.lang b/htdocs/langs/bg_BG/cashdesk.lang index 4328519b645..81c14e6e6ff 100644 --- a/htdocs/langs/bg_BG/cashdesk.lang +++ b/htdocs/langs/bg_BG/cashdesk.lang @@ -12,7 +12,7 @@ CashDeskProducts=Продукти CashDeskStock=Наличност CashDeskOn=на CashDeskThirdParty=Трета страна -CashdeskDashboard=Point of sale access +CashdeskDashboard=Достъп до точка на продажбите ShoppingCart=Количка за пазаруване NewSell=Нов продажба BackOffice=Обратно офис @@ -36,5 +36,5 @@ BankToPay=Банкова сметка ShowCompany=Покажи фирмата ShowStock=Покажи склад DeleteArticle=Кликнете, за да се премахне тази статия -FilterRefOrLabelOrBC=Search (Ref/Label) -UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock. +FilterRefOrLabelOrBC=Търсене (Номер/Заглавие) +UserNeedPermissionToEditStockToUsePos=Запитвате за намаляване на стоки при създаване на фактура, така че потребителя използващ ТП трябва да е с привилегии да редактира стоки. diff --git a/htdocs/langs/bg_BG/categories.lang b/htdocs/langs/bg_BG/categories.lang index a6142468ddf..9e969cad703 100644 --- a/htdocs/langs/bg_BG/categories.lang +++ b/htdocs/langs/bg_BG/categories.lang @@ -50,7 +50,7 @@ SupplierIsInCategories=Третото лице е в следните катег CompanyIsInCustomersCategories=Това трето лице е в следните категории клиенти/prospects CompanyIsInSuppliersCategories=Това трето лице е в следните категории доставчици MemberIsInCategories=Този член е в следните категории членове -ContactIsInCategories=This contact owns to following contacts categories +ContactIsInCategories=Този контакт принадлежи на следните категории контакти ProductHasNoCategory=Този продукт/услуга не е в никакви категории SupplierHasNoCategory=Този доставчик не е в никакви категории CompanyHasNoCategory=Тази фирма не е в никакви категории @@ -66,7 +66,7 @@ ReturnInCompany=Обратно към картата на клиента/prospe ContentsVisibleByAll=Съдържанието ще се вижда от всички ContentsVisibleByAllShort=Съдържанието е видимо от всички ContentsNotVisibleByAllShort=Съдържанието не е видимо от всички -CategoriesTree=Categories tree +CategoriesTree=Категории дърво DeleteCategory=Изтриване на категория ConfirmDeleteCategory=Сигурни ли сте, че желаете да изтриете тази категория? RemoveFromCategory=Премахване на връзката с категория @@ -96,17 +96,17 @@ CatSupList=Списък на доставчика категории CatCusList=Списък на потребителите / перспективата категории CatProdList=Списък на продуктите категории CatMemberList=Списък на членовете категории -CatContactList=List of contact categories and contact -CatSupLinks=Links between suppliers and categories -CatCusLinks=Links between customers/prospects and categories -CatProdLinks=Links between products/services and categories -CatMemberLinks=Links between members and categories +CatContactList=Лист на контактни категории и контакти +CatSupLinks=Връзки между доставчици и категории +CatCusLinks=Връзки между потребител/перспектива и категории +CatProdLinks=Връзки между продукти/услуги и категории +CatMemberLinks=Връзки между членове и категории DeleteFromCat=Премахване от категорията -DeletePicture=Picture delete -ConfirmDeletePicture=Confirm picture deletion? -ExtraFieldsCategories=Complementary attributes -CategoriesSetup=Categories setup -CategorieRecursiv=Link with parent category automatically -CategorieRecursivHelp=If activated, product will also linked to parent category when adding into a subcategory +DeletePicture=Изтрий снимка +ConfirmDeletePicture=Потвърди изтриване на снимка? +ExtraFieldsCategories=Допълнителни атрибути +CategoriesSetup=Категории настройка +CategorieRecursiv=Автоматично свързване с родителска категория +CategorieRecursivHelp=Ако е активирано, продукта ще бъде свързан също и с родителската категория при добавяне в под-категория AddProductServiceIntoCategory=Add the following product/service ShowCategory=Show category diff --git a/htdocs/langs/bg_BG/commercial.lang b/htdocs/langs/bg_BG/commercial.lang index dfcb852b7d6..b194f60814c 100644 --- a/htdocs/langs/bg_BG/commercial.lang +++ b/htdocs/langs/bg_BG/commercial.lang @@ -9,9 +9,9 @@ Prospect=Перспектива Prospects=Перспективи DeleteAction=Изтриване на събитие / задача NewAction=Ново събитие/задача -AddAction=Добавяне на събитие/задача -AddAnAction=Добавяне на събитие/задача -AddActionRendezVous=Добави събитие - среща +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Среща ConfirmDeleteAction=Сигурни ли сте, че желаете да изтриете това събитие/задача? CardAction=Карта на/за събитие @@ -44,8 +44,8 @@ DoneActions=Завършени събития DoneActionsFor=Завършени събития за %s ToDoActions=Непълни събития ToDoActionsFor=Непълни събития за %s -SendPropalRef=Изпратете търговски %s предложение -SendOrderRef=Изпрати ред %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Не е приложимо StatusActionToDo=За да направите StatusActionDone=Пълен @@ -62,7 +62,7 @@ LastProspectContactDone=Свържи се направи DateActionPlanned=Дата на събитието, планирано за DateActionDone=Дата на събитието направи ActionAskedBy=Събитие докладвани от -ActionAffectedTo=Събитие засегнати в +ActionAffectedTo=Event assigned to ActionDoneBy=Събитие, извършена от ActionUserAsk=Съобщените от ErrorStatusCantBeZeroIfStarted=Ако се попълва поле "Дата", действието се стартира (или завършен), така че "Статус" Полето не може да бъде 0%. diff --git a/htdocs/langs/bg_BG/contracts.lang b/htdocs/langs/bg_BG/contracts.lang index 1aa00c03e0e..dc09a470545 100644 --- a/htdocs/langs/bg_BG/contracts.lang +++ b/htdocs/langs/bg_BG/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Изтекла ServiceStatusClosed=Затворен ServicesLegend=Услуги легенда Contracts=Договори +ContractsAndLine=Contracts and line of contracts Contract=Договор NoContracts=Не договори MenuServices=Услуги diff --git a/htdocs/langs/bg_BG/cron.lang b/htdocs/langs/bg_BG/cron.lang index 47c14375e46..9bd0fcaa449 100644 --- a/htdocs/langs/bg_BG/cron.lang +++ b/htdocs/langs/bg_BG/cron.lang @@ -84,3 +84,4 @@ CronType_command=Терминална команда CronMenu=Крон (софтуер за изпънение на автоматични задачи) CronCannotLoadClass=Неможе да се зареди класа %s или обекта %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/bg_BG/errors.lang b/htdocs/langs/bg_BG/errors.lang index 0db0a31c373..6231717fdd5 100644 --- a/htdocs/langs/bg_BG/errors.lang +++ b/htdocs/langs/bg_BG/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Източника и целите на банк ErrorBadThirdPartyName=Неправилна стойност за името на трета страна ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad синтаксис за код на клиента -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Клиентите изисква код ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Клиентът код вече се използва @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript не трябва да бъдат хор ErrorPasswordsMustMatch=Двете машинописни пароли трябва да съвпадат помежду си ErrorContactEMail=Техническа грешка. Моля, свържете се с администратора след имейл %s EN предоставят на %s код на грешка в съобщението си, или още по-добре чрез добавяне на екран копие на тази страница. ErrorWrongValueForField=Грешна стойност за номер на полето %s ("%s" стойността не съответства на регулярни изрази върховенството %s) -ErrorFieldValueNotIn=Грешна стойност за %s номер на полето (стойност "%s" не е стойност в полеви %s трапезни %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Грешна стойност за номер на полето %s ("%s стойност не е %s съществуващия код) ErrorsOnXLines=Грешки на %s изходни линии ErrorFileIsInfectedWithAVirus=Антивирусна програма не е в състояние да валидира файла (файл може да бъде заразен с вирус) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Задължителни параметри на настройката все още не са определени diff --git a/htdocs/langs/bg_BG/install.lang b/htdocs/langs/bg_BG/install.lang index 51f011d6708..8f31aacacc0 100644 --- a/htdocs/langs/bg_BG/install.lang +++ b/htdocs/langs/bg_BG/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Последна стъпка: Определет ActivateModule=Активиране на модул %s ShowEditTechnicalParameters=Натиснете тук за да покажете/редактирате параметрите за напреднали (експертен режим) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/bg_BG/main.lang b/htdocs/langs/bg_BG/main.lang index 57cc10d1008..579a2d355a3 100644 --- a/htdocs/langs/bg_BG/main.lang +++ b/htdocs/langs/bg_BG/main.lang @@ -141,6 +141,7 @@ Cancel=Отказ Modify=Промяна Edit=Редактиране Validate=Потвърждение +ValidateAndApprove=Validate and Approve ToValidate=За потвърждение Save=Запис SaveAs=Запис като @@ -158,6 +159,7 @@ Search=Търсене SearchOf=Търсене Valid=Потвърден Approve=Одобряване +Disapprove=Disapprove ReOpen=Re-Open Upload=Изпращане на файл ToLink=Връзка @@ -219,6 +221,7 @@ Cards=Карти Card=Карта Now=Сега Date=Дата +DateAndHour=Date and hour DateStart=Начална дата DateEnd=Крайна дата DateCreation=Дата на създаване @@ -295,6 +298,7 @@ UnitPriceHT=Единична цена (нето) UnitPriceTTC=Единична цена PriceU=U.P. PriceUHT=U.P. (нето) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=U.P. Amount=Размер AmountInvoice=Фактурирана стойност @@ -521,6 +525,7 @@ DateFromTo=От %s до %s DateFrom=От %s DateUntil=До %s Check=Проверка +Uncheck=Uncheck Internal=Вътрешен External=Външен Internals=Вътрешен @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Изберете елемент и натиснете Презареждане PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Понеделник Tuesday=Вторник diff --git a/htdocs/langs/bg_BG/orders.lang b/htdocs/langs/bg_BG/orders.lang index 0446c663f6c..b68ed897256 100644 --- a/htdocs/langs/bg_BG/orders.lang +++ b/htdocs/langs/bg_BG/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Отменен StatusOrderDraft=Проект (трябва да бъдат валидирани) StatusOrderValidated=Утвърден StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Обработен StatusOrderToBill=Доставени StatusOrderToBill2=На Бил @@ -58,6 +59,7 @@ MenuOrdersToBill=Доставени поръчки MenuOrdersToBill2=Billable orders SearchOrder=Търсене за SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Кораб продукт Discount=Отстъпка CreateOrder=Създаване на поръчка diff --git a/htdocs/langs/bg_BG/other.lang b/htdocs/langs/bg_BG/other.lang index 0e650cb6d81..4e636a028f0 100644 --- a/htdocs/langs/bg_BG/other.lang +++ b/htdocs/langs/bg_BG/other.lang @@ -54,12 +54,13 @@ MaxSize=Максимален размер AttachANewFile=Прикачване на нов файл/документ LinkedObject=Свързан обект Miscellaneous=Разни -NbOfActiveNotifications=Брой на уведомленията +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Това е тестов имейл.\nДвата реда са разделени с нов ред.\n\n__SIGNATURE__ PredefinedMailTestHtml=Това е тестов имейл (думата тестов трябва да бъде с удебелен шрифт).
Двата реда са разделени с нов ред.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/bg_BG/productbatch.lang b/htdocs/langs/bg_BG/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/bg_BG/productbatch.lang +++ b/htdocs/langs/bg_BG/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/bg_BG/products.lang b/htdocs/langs/bg_BG/products.lang index 63a9c3ea81a..b742caded2a 100644 --- a/htdocs/langs/bg_BG/products.lang +++ b/htdocs/langs/bg_BG/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/bg_BG/projects.lang b/htdocs/langs/bg_BG/projects.lang index c384cf449f2..76dc1909c2d 100644 --- a/htdocs/langs/bg_BG/projects.lang +++ b/htdocs/langs/bg_BG/projects.lang @@ -8,8 +8,10 @@ SharedProject=Всички PrivateProject=Контакти на проекта MyProjectsDesc=Тази гледна точка е ограничена до проекти, които са за контакт (какъвто и да е тип). ProjectsPublicDesc=Този възглед представя всички проекти, по които могат да се четат. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Този възглед представя всички проекти (потребителски разрешения ви даде разрешение да видите всичко). MyTasksDesc=Тази гледна точка е ограничена до проекти или задачи, които са контакт (какъвто и да е тип). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Този възглед представя всички проекти и задачи, които може да чете. TasksDesc=Този възглед представя всички проекти и задачи (потребителски разрешения ви даде разрешение да видите всичко). ProjectsArea=Проекти област @@ -29,6 +31,8 @@ NoProject=Нито един проект няма определени или с NbOpenTasks=Nb отворени задачи NbOfProjects=Nb на проекти TimeSpent=Времето, прекарано +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Времето, прекарано RefTask=Реф. задача LabelTask=Label задача @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Списък на поръчките на д ListSupplierInvoicesAssociatedProject=Списък на фактурите на доставчика, свързана с проекта ListContractAssociatedProject=Списък на договори, свързани с проекта ListFichinterAssociatedProject=Списък на интервенциите, свързани с проекта -ListTripAssociatedProject=Списък на пътувания и разходи, свързани с проекта +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Списък на събития, свързани с проекта ActivityOnProjectThisWeek=Дейности в проекта тази седмица ActivityOnProjectThisMonth=Дейност по проект, този месец @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Свържете със средство за да определите времето +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/bg_BG/salaries.lang b/htdocs/langs/bg_BG/salaries.lang index 64fcb3c80f5..b5b74bc1035 100644 --- a/htdocs/langs/bg_BG/salaries.lang +++ b/htdocs/langs/bg_BG/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Заплата Salaries=Заплати Employee=Служител @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/bg_BG/sendings.lang b/htdocs/langs/bg_BG/sendings.lang index 67c5fe8d52d..5b7e942d65e 100644 --- a/htdocs/langs/bg_BG/sendings.lang +++ b/htdocs/langs/bg_BG/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Количество нареди QtyShipped=Количество изпратени QtyToShip=Количество за кораба QtyReceived=Количество получи -KeepToShip=Придържайте се към кораб +KeepToShip=Remain to ship OtherSendingsForSameOrder=Други пратки за изпълнение на поръчката DateSending=Дата на изпращане ред DateSendingShort=Дата на изпращане ред diff --git a/htdocs/langs/bg_BG/stocks.lang b/htdocs/langs/bg_BG/stocks.lang index 2c23d4ca0d2..2188c85aae5 100644 --- a/htdocs/langs/bg_BG/stocks.lang +++ b/htdocs/langs/bg_BG/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Средна цена PMPValueShort=WAP EnhancedValueOfWarehouses=Warehouses value UserWarehouseAutoCreate=Създаване на склада автоматично при създаването на потребителя +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Брой изпратени QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=За този склад ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Попълване NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/bg_BG/suppliers.lang b/htdocs/langs/bg_BG/suppliers.lang index 1dcc4088caf..b98cea1ccfe 100644 --- a/htdocs/langs/bg_BG/suppliers.lang +++ b/htdocs/langs/bg_BG/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Доставчици -Supplier=Снабдител AddSupplier=Create a supplier SupplierRemoved=Изтрити доставчик SuppliersInvoice=Фактура @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Фактури и наредби ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Одобряване на поръчката ConfirmApproveThisOrder=Сигурен ли сте, че искате да одобри %s Поръчката? -DenyingThisOrder=Да откаже поръчката +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Сигурен ли сте, че искате да откаже доставчик %s за? ConfirmCancelThisOrder=Сигурен ли сте, че искате да отмените доставчика на %s за? AddCustomerOrder=Създаване на заявка на клиента diff --git a/htdocs/langs/bg_BG/trips.lang b/htdocs/langs/bg_BG/trips.lang index cde887226a8..4e70dd8d132 100644 --- a/htdocs/langs/bg_BG/trips.lang +++ b/htdocs/langs/bg_BG/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Екскурзия -Trips=Екскурзии -TripsAndExpenses=Екскурзии и разноски -TripsAndExpensesStatistics=Екскурзии и разходи статистика -TripCard=Екскурзия карта -AddTrip=Добави пътуване -ListOfTrips=Списък на пътуванията +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Списък на такси -NewTrip=Нов пътуване +NewTrip=New expense report CompanyVisited=Фирмата/организацията е посетена Kilometers=Км FeesKilometersOrAmout=Сума или км -DeleteTrip=Изтриване на пътуване -ConfirmDeleteTrip=Сигурен ли сте, че искате да изтриете това пътуване? -TF_OTHER=Друг -TF_LUNCH=Обяд -TF_TRIP=Екскурзия -ListTripsAndExpenses=Списък на пътувания и разходи -ExpensesArea=Екскурзии и разходи площ -SearchATripAndExpense=Търсене на пътуване и разходи +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Друг +TF_TRANSPORTATION=Transportation +TF_LUNCH=Обяд +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/bs_BA/admin.lang b/htdocs/langs/bs_BA/admin.lang index 9045eeb2c2e..d882817a90b 100644 --- a/htdocs/langs/bs_BA/admin.lang +++ b/htdocs/langs/bs_BA/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Eksperimentalno VersionDevelopment=Razvoj VersionUnknown=Nepoznato VersionRecommanded=Preporučeno +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=ID sesije SessionSaveHandler=Rukovatelj snimanje sesija SessionSavePath=Lokalizacija snimanja sesije @@ -493,10 +498,16 @@ Module600Name=Notifications Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Donations Module700Desc=Donation management +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1400Name=Accounting Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Categories Module1780Desc=Category management (products, suppliers and customers) Module2000Name=WYSIWYG editor @@ -631,7 +642,7 @@ Permission181=Read supplier orders Permission182=Create/modify supplier orders Permission183=Validate supplier orders Permission184=Approve supplier orders -Permission185=Order supplier orders +Permission185=Order or cancel supplier orders Permission186=Receive supplier orders Permission187=Close supplier orders Permission188=Cancel supplier orders @@ -711,6 +722,13 @@ Permission538=Export services Permission701=Read donations Permission702=Create/modify donations Permission703=Delete donations +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Read stocks Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Password to use the proxy server DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s. ExtraFields=Dopunski atributi ExtraFieldsLines=Dopunski atributi (tekstovi) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Dopunski atributi (treća stranka) ExtraFieldsContacts=Dopunski atributi (kontakt/adresa) ExtraFieldsMember=Dopunski atributi (član) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=A line of product/service with a zero amount is consid FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Vodeni žig na nacrte komercijalnih prijedloga (ništa, ako je prazno) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Order management setup OrdersNumberingModules=Orders numbering models @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barcode of type UPC BarcodeDescISBN=Barcode of type ISBN BarcodeDescC39=Barcode of type C39 BarcodeDescC128=Barcode of type C128 -GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Menadžer za automatsko određivanje barkod brojeva ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Default account to use to receive cash payments CashDeskBankAccountForCheque= Default account to use to receive payments by cheque CashDeskBankAccountForCB= Default account to use to receive payments by credit cards -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Bookmark module setup @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/bs_BA/banks.lang b/htdocs/langs/bs_BA/banks.lang index 9082a5092d2..cc94be9e783 100644 --- a/htdocs/langs/bs_BA/banks.lang +++ b/htdocs/langs/bs_BA/banks.lang @@ -33,7 +33,11 @@ AllTime=Od početka Reconciliation=Izmirenje RIB=Broj bankovnog računa IBAN=IBAN broj +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC / SWIFT broj +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Trajni nalozi StandingOrder=Trajni nalog Withdrawals=Podizanja @@ -148,7 +152,7 @@ BackToAccount=Nazad na račun ShowAllAccounts=Pokaži za sve račune FutureTransaction=Transakcije u budućnosti. Nema šanse da se izmiri. SelectChequeTransactionAndGenerate=Izaberite/filtrirajte čekove za uključivanje u priznanicu za depozit i kliknite na "Kreiraj". -InputReceiptNumber=Odaberite izvod banke u vezi s izmirenjima. Koristite numeričke vrijednosti (kao što je, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Na kraju, navesti kategoriju u koju će se svrstati zapisi ToConciliate=Izmiriti? ThenCheckLinesAndConciliate=Zatim, provjerite tekst prisutan u izvodu banke i kliknite diff --git a/htdocs/langs/bs_BA/commercial.lang b/htdocs/langs/bs_BA/commercial.lang index 242758543f0..62bbf25f7a1 100644 --- a/htdocs/langs/bs_BA/commercial.lang +++ b/htdocs/langs/bs_BA/commercial.lang @@ -9,9 +9,9 @@ Prospect=Prospect Prospects=Prospects DeleteAction=Delete an event/task NewAction=New event/task -AddAction=Add event/task -AddAnAction=Add an event/task -AddActionRendezVous=Add a Rendez-vous event +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Rendezvous ConfirmDeleteAction=Are you sure you want to delete this event/task ? CardAction=Event card @@ -44,8 +44,8 @@ DoneActions=Completed events DoneActionsFor=Completed events for %s ToDoActions=Incomplete events ToDoActionsFor=Incomplete events for %s -SendPropalRef=Send commercial proposal %s -SendOrderRef=Send order %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Not applicable StatusActionToDo=To do StatusActionDone=Complete diff --git a/htdocs/langs/bs_BA/contracts.lang b/htdocs/langs/bs_BA/contracts.lang index 4952376c86c..99ee4c3bfb7 100644 --- a/htdocs/langs/bs_BA/contracts.lang +++ b/htdocs/langs/bs_BA/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Istekao ServiceStatusClosed=Zatvoren ServicesLegend=Legenda usluga Contracts=Ugovori +ContractsAndLine=Contracts and line of contracts Contract=Ugovor NoContracts=Nema ugovora MenuServices=Usluge diff --git a/htdocs/langs/bs_BA/cron.lang b/htdocs/langs/bs_BA/cron.lang index 6a16b5fb366..db866d27f75 100644 --- a/htdocs/langs/bs_BA/cron.lang +++ b/htdocs/langs/bs_BA/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell komanda CronMenu=Cron CronCannotLoadClass=Ne može se otvoriti klada %s ili objekat %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/bs_BA/errors.lang b/htdocs/langs/bs_BA/errors.lang index 497ddd814e4..700e6344d7d 100644 --- a/htdocs/langs/bs_BA/errors.lang +++ b/htdocs/langs/bs_BA/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be differen ErrorBadThirdPartyName=Bad value for third party name ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Customer code already used @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript must not be disabled to have this featur ErrorPasswordsMustMatch=Both typed passwords must match each other ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) -ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) ErrorsOnXLines=Errors on %s source record(s) ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/bs_BA/install.lang b/htdocs/langs/bs_BA/install.lang index 5a494156672..dcd8df6e7db 100644 --- a/htdocs/langs/bs_BA/install.lang +++ b/htdocs/langs/bs_BA/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Last step: Define here login and password you plan ActivateModule=Activate module %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/bs_BA/main.lang b/htdocs/langs/bs_BA/main.lang index 540e45e2946..8ccf22d049a 100644 --- a/htdocs/langs/bs_BA/main.lang +++ b/htdocs/langs/bs_BA/main.lang @@ -141,6 +141,7 @@ Cancel=Cancel Modify=Modify Edit=Edit Validate=Validate +ValidateAndApprove=Validate and Approve ToValidate=To validate Save=Save SaveAs=Save As @@ -158,6 +159,7 @@ Search=Search SearchOf=Search Valid=Valid Approve=Approve +Disapprove=Disapprove ReOpen=Re-Open Upload=Send file ToLink=Link @@ -219,6 +221,7 @@ Cards=Cards Card=Card Now=Now Date=Date +DateAndHour=Date and hour DateStart=Date start DateEnd=Date end DateCreation=Creation date @@ -295,6 +298,7 @@ UnitPriceHT=Unit price (net) UnitPriceTTC=Unit price PriceU=U.P. PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=U.P. Amount=Amount AmountInvoice=Invoice amount @@ -521,6 +525,7 @@ DateFromTo=From %s to %s DateFrom=From %s DateUntil=Until %s Check=Check +Uncheck=Uncheck Internal=Internal External=External Internals=Internal @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/bs_BA/orders.lang b/htdocs/langs/bs_BA/orders.lang index 34792ae1eb2..8efafa5e94e 100644 --- a/htdocs/langs/bs_BA/orders.lang +++ b/htdocs/langs/bs_BA/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Canceled StatusOrderDraft=Draft (needs to be validated) StatusOrderValidated=Validated StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Processed StatusOrderToBill=Delivered StatusOrderToBill2=To bill @@ -58,6 +59,7 @@ MenuOrdersToBill=Orders delivered MenuOrdersToBill2=Billable orders SearchOrder=Search order SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Ship product Discount=Discount CreateOrder=Create Order diff --git a/htdocs/langs/bs_BA/other.lang b/htdocs/langs/bs_BA/other.lang index 88991888183..08747ea884b 100644 --- a/htdocs/langs/bs_BA/other.lang +++ b/htdocs/langs/bs_BA/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximum size AttachANewFile=Attach a new file/document LinkedObject=Linked object Miscellaneous=Miscellaneous -NbOfActiveNotifications=Number of notifications +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/bs_BA/productbatch.lang b/htdocs/langs/bs_BA/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/bs_BA/productbatch.lang +++ b/htdocs/langs/bs_BA/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/bs_BA/products.lang b/htdocs/langs/bs_BA/products.lang index 6aa77416467..b0ee1036827 100644 --- a/htdocs/langs/bs_BA/products.lang +++ b/htdocs/langs/bs_BA/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/bs_BA/projects.lang b/htdocs/langs/bs_BA/projects.lang index a6b5764ef40..7f9d2c4415e 100644 --- a/htdocs/langs/bs_BA/projects.lang +++ b/htdocs/langs/bs_BA/projects.lang @@ -8,8 +8,10 @@ SharedProject=Zajednički projekti PrivateProject=Kontakti za projekte MyProjectsDesc=Ovaj pregled je limitiran na projekte u kojima ste stavljeni kao kontakt (bilo koji tip). ProjectsPublicDesc=Ovaj pregled predstavlja sve projekte koje možete čitati. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Ovaj pregled predstavlja sve projekte (postavke vaših korisničkih dozvola vam omogućavaju da vidite sve). MyTasksDesc=Ovaj pregled predstavlja sve projekte ili zadatke za koje ste kontakt (bilo koji tip). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Ovaj pregled predstavlja sve projekte ili zadatke koje možete čitati. TasksDesc=Ovaj pregled predstavlja sve projekte i zadatke (postavke vaših korisničkih dozvola vam omogućavaju da vidite sve). ProjectsArea=Područje za projekte @@ -29,6 +31,8 @@ NoProject=Nema definisanog ili vlastitog projekta NbOpenTasks=Broj otvorenih zadataka NbOfProjects=Broj projekata TimeSpent=Vrijeme provedeno +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Vrijeme provedeno RefTask=Ref. zadatka LabelTask=Oznaka zadatka @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Lista narudžbi dobavljača u vezi s projekt ListSupplierInvoicesAssociatedProject=Lista faktura dobavljača u vezi s projektom ListContractAssociatedProject=Lista ugovora u vezi s projektom ListFichinterAssociatedProject=Lista intervencija u vezi s projektom -ListTripAssociatedProject=Lista putovanja i troškove u vezi s projektom +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Lista događaja u vezi s projektom ActivityOnProjectThisWeek=Aktivnost na projektu ove sedmice ActivityOnProjectThisMonth=Aktivnost na projektu ovog mjeseca @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/bs_BA/salaries.lang b/htdocs/langs/bs_BA/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/bs_BA/salaries.lang +++ b/htdocs/langs/bs_BA/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/bs_BA/sendings.lang b/htdocs/langs/bs_BA/sendings.lang index b8deefe7ae6..0324d02b664 100644 --- a/htdocs/langs/bs_BA/sendings.lang +++ b/htdocs/langs/bs_BA/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Naručena količina QtyShipped=Poslana količina QtyToShip=Količina za slanje QtyReceived=Primljena količina -KeepToShip=Zadržati za slanje +KeepToShip=Remain to ship OtherSendingsForSameOrder=Druge pošiljke za ovu narudžbu DateSending=Datum slanja narudžbe DateSendingShort=Datum slanja narudžbe diff --git a/htdocs/langs/bs_BA/stocks.lang b/htdocs/langs/bs_BA/stocks.lang index 40a7deebee2..14059aefcc0 100644 --- a/htdocs/langs/bs_BA/stocks.lang +++ b/htdocs/langs/bs_BA/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Ponderirana/vagana aritmetička sredina - PAS PMPValueShort=PAS EnhancedValueOfWarehouses=Skladišna vrijednost UserWarehouseAutoCreate=Kreiraj skladište automatski prilikom kreiranja korisnika +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Otpremljena količina QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=Skladište %s će biti korišteno za smanjenje WarehouseForStockIncrease=Skladište %s će biti korišteno za povećanje zalihe ForThisWarehouse=Za ovo skladište ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=Ovo je lista svih otvorenih narudžbi dobavljača +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Nadopune NbOfProductBeforePeriod=Količina proizvoda %s u zalihi prije odabranog perioda (%s) NbOfProductAfterPeriod=Količina proizvoda %s u zalihi poslije odabranog perioda (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/bs_BA/suppliers.lang b/htdocs/langs/bs_BA/suppliers.lang index ecab4e95a06..2a329c91d10 100644 --- a/htdocs/langs/bs_BA/suppliers.lang +++ b/htdocs/langs/bs_BA/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Dobavljači -Supplier=Dobavljač AddSupplier=Create a supplier SupplierRemoved=Dobavljač uklonjen SuppliersInvoice=Faktura dobavljača @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Fakture i plačanja dobavljača ExportDataset_fournisseur_3=Narudžbe za dobavljača i tekst narudžbe ApproveThisOrder=Odobri ovu narudžbu ConfirmApproveThisOrder=Jeste li sigurni da želite da odobriti narudžbu %s ? -DenyingThisOrder=Odbijanje ove narudžbe +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Jeste li sigurni da želite odbiti narudžbu %s ? ConfirmCancelThisOrder=Jeste li sigurni da želite poništiti narudžbu %s ? AddCustomerOrder=Kreiraj narudžbu za kupca diff --git a/htdocs/langs/bs_BA/trips.lang b/htdocs/langs/bs_BA/trips.lang index 3129380dd57..282500cf778 100644 --- a/htdocs/langs/bs_BA/trips.lang +++ b/htdocs/langs/bs_BA/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Putovanje -Trips=Putovanja -TripsAndExpenses=Putovanja i troškovi -TripsAndExpensesStatistics=Statistika putovanja i troškova -TripCard=Kartica putovanja -AddTrip=Dodaj putovanje -ListOfTrips=Lista putovanja +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Lista naknada -NewTrip=Novo putovanje +NewTrip=New expense report CompanyVisited=Posjeta kompaniji/fondaciji Kilometers=Kilometri FeesKilometersOrAmout=Iznos ili kilometri -DeleteTrip=Obriši putovanje -ConfirmDeleteTrip=Jeste li sigurni da želite obrisati ovo putovanje? -TF_OTHER=Ostalo -TF_LUNCH=Ručak -TF_TRIP=Putovanje -ListTripsAndExpenses=Lista putovanja i troškova -ExpensesArea=Područje za putovanja i troškove -SearchATripAndExpense=Traži putovanja i troškove +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Ostalo +TF_TRANSPORTATION=Transportation +TF_LUNCH=Ručak +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/ca_ES/admin.lang b/htdocs/langs/ca_ES/admin.lang index 6f9c00f04a3..239694fc251 100644 --- a/htdocs/langs/ca_ES/admin.lang +++ b/htdocs/langs/ca_ES/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimental VersionDevelopment=Desenvolupament VersionUnknown=Desconeguda VersionRecommanded=Recomanada +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Sesió ID SessionSaveHandler=Modalitat de salvaguardat de sessions SessionSavePath=Localització salvaguardat de sessions @@ -493,10 +498,16 @@ Module600Name=Notificacions Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Donacions Module700Desc=Gestió de donacions +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Interface amb el sistema de seguiment d'incidències Mantis Module1400Name=Comptabilitat experta Module1400Desc=Gestió experta de la comptabilitat (doble partida) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Categories Module1780Desc=Gestió de categories (productes, proveïdors i clients) Module2000Name=Editor WYSIWYG @@ -631,7 +642,7 @@ Permission181=Consultar comandes a proveïdors Permission182=Crear/modificar comandes a proveïdors Permission183=Validar comandes a proveïdors Permission184=Aprovar comandes a proveïdors -Permission185=Enviar comandes a proveïdors +Permission185=Order or cancel supplier orders Permission186=Rebre comandes de proveïdors Permission187=Tancar comandes a proveïdors Permission188=Anul·lar comandes a proveïdors @@ -711,6 +722,13 @@ Permission538=Exportar serveis Permission701=Consultar donacions Permission702=Crear/modificar donacions Permission703=Eliminar donacions +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Consultar stocks Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Contrasenya del servidor proxy DefineHereComplementaryAttributes=Definiu aquí la llista d'atributs addicionals, no disponibles a estàndard, i que vol gestionar per %s. ExtraFields=Atributs addicionals ExtraFieldsLines=atributs complementaris (línies) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Atributs adicionals (tercers) ExtraFieldsContacts=Atributs adicionals (contactes/adreçes) ExtraFieldsMember=Atributs complementaris (membres) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Una línia de producte/servei que té una quantitat nu FreeLegalTextOnProposal=Text lliure en pressupostos WatermarkOnDraftProposal=Marca d'aigua en pressupostos esborrany (en cas d'estar buit) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Configuració del mòdul comandes OrdersNumberingModules=Mòduls de numeració de les comandes @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Codis de barra tipus UPC BarcodeDescISBN=Codis de barra tipus ISBN BarcodeDescC39=Codis de barra tipus C39 BarcodeDescC128=Codis de barra tipus C128 -GenbarcodeLocation=Eina generació codi de barra en línia de comanda (utilitzat pel motor phpbar per a determinats tipus de codis barra) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Motor intern BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Compte per defecte a utilitzar per als cobraments en efectiu (caixa) CashDeskBankAccountForCheque= Compte per defecte a utilitzar per als cobraments amb xecs CashDeskBankAccountForCB= Compte per defecte a utilitzar per als cobraments amb targeta de crèdit -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Configuració del mòdul Bookmark @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/ca_ES/banks.lang b/htdocs/langs/ca_ES/banks.lang index 16057026a04..c329a4a3eb4 100644 --- a/htdocs/langs/ca_ES/banks.lang +++ b/htdocs/langs/ca_ES/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Conciliació RIB=Compte bancari IBAN=Identificador IBAN +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=Identificador BIC/SWIFT +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Domiciliacions StandingOrder=Domiciliació Withdrawals=Reintegraments @@ -148,7 +152,7 @@ BackToAccount=Tornar al compte ShowAllAccounts=Mostra per a tots els comptes FutureTransaction=Transacció futura. No és possible conciliar. SelectChequeTransactionAndGenerate=Seleccioneu/filtreu els xecs a incloure a la remesa i feu clic a "Crear". -InputReceiptNumber=Indiqui l'extracte bancari relacionat amb la conciliació. Utilitzeu un valor numèric ordenable (per exemple, AAAAMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventualment, indiqui una categoria en la qual classificar els registres ToConciliate=A conciliar? ThenCheckLinesAndConciliate=A continuació, comproveu les línies presents en l'extracte bancari i feu clic diff --git a/htdocs/langs/ca_ES/commercial.lang b/htdocs/langs/ca_ES/commercial.lang index 6ffbd0077e7..92ceb20f492 100644 --- a/htdocs/langs/ca_ES/commercial.lang +++ b/htdocs/langs/ca_ES/commercial.lang @@ -9,9 +9,9 @@ Prospect=Client potencial Prospects=Clients potencials DeleteAction=Eliminar un esdeveniment NewAction=Nou esdeveniment -AddAction=Crear esdeveniment -AddAnAction=Crear un esdeveniment -AddActionRendezVous=Crear una cita +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Cita ConfirmDeleteAction=Esteu segur de voler eliminar aquest esdeveniment? CardAction=Fitxa esdeveniment @@ -44,8 +44,8 @@ DoneActions=Llista d'esdeveniments realitzats DoneActionsFor=Llista d'esdeveniments realitzats per %s ToDoActions=Llista d'esdevenimentss incomplets ToDoActionsFor=Llista d'esdeveniments incomplets %s -SendPropalRef=Enviament del pressupost %s -SendOrderRef=Enviament de la comanda %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=No aplicable StatusActionToDo=A realitzar StatusActionDone=Realitzat @@ -62,7 +62,7 @@ LastProspectContactDone=Clients potencials contactats DateActionPlanned=Data planificació DateActionDone=Data realització ActionAskedBy=Acció registrada per -ActionAffectedTo=Acció assignada a +ActionAffectedTo=Event assigned to ActionDoneBy=Acció realitzada per ActionUserAsk=Registrada per ErrorStatusCantBeZeroIfStarted=Si el camp 'Data de realització' conté dades l'acció està en curs, per la qual cosa el camp 'Estat' no pot ser 0%%. diff --git a/htdocs/langs/ca_ES/contracts.lang b/htdocs/langs/ca_ES/contracts.lang index be202d8b593..8859f44f388 100644 --- a/htdocs/langs/ca_ES/contracts.lang +++ b/htdocs/langs/ca_ES/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expirat ServiceStatusClosed=Tancat ServicesLegend=Llegenda per als serveis Contracts=Contractes +ContractsAndLine=Contracts and line of contracts Contract=Contracte NoContracts=Sense contractes MenuServices=Serveis diff --git a/htdocs/langs/ca_ES/cron.lang b/htdocs/langs/ca_ES/cron.lang index 87e0a50c732..eb350eaaaa9 100644 --- a/htdocs/langs/ca_ES/cron.lang +++ b/htdocs/langs/ca_ES/cron.lang @@ -84,3 +84,4 @@ CronType_command=Comando Shell CronMenu=Cron CronCannotLoadClass=impossible carregar la classe %s de l'objecte %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/ca_ES/errors.lang b/htdocs/langs/ca_ES/errors.lang index 05e776b9cc9..927b9a3af1e 100644 --- a/htdocs/langs/ca_ES/errors.lang +++ b/htdocs/langs/ca_ES/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=El compte origen i destinació han de ser diferen ErrorBadThirdPartyName=Nom de tercer incorrecte ErrorProdIdIsMandatory=El %s es obligatori ErrorBadCustomerCodeSyntax=La sintaxi del codi client és incorrecta -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Codi client obligatori ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Codi de client ja utilitzat @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript ha d'estar activat per a que aquesta opc ErrorPasswordsMustMatch=Les 2 contrasenyes indicades s'han de correspondre ErrorContactEMail=S'ha produït un error tècnic. Contacti amb l'administrador al e-mail %s, indicant el codi d'error %s en el seu missatge, o pot també adjuntar una còpia de pantalla d'aquesta pàgina. ErrorWrongValueForField=Valor incorrecte per al camp número %s (el valor '%s' no compleix amb la regla %s) -ErrorFieldValueNotIn=Valor incorrecte per al camp nombre %s (el valor '%s' no es un valor en el camp %s de la taula %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Valor incorrecte per al camp nombre %s (el valor '%s' no és una referència existent en %s) ErrorsOnXLines=Errors a %s línies font ErrorFileIsInfectedWithAVirus=L'antivirus no ha pogut validar aquest arxiu (és probable que estigui infectat per un virus)! @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Els paràmetres obligatoris de configuració no estan encara definits diff --git a/htdocs/langs/ca_ES/install.lang b/htdocs/langs/ca_ES/install.lang index 125805b6194..4b0bf7265e7 100644 --- a/htdocs/langs/ca_ES/install.lang +++ b/htdocs/langs/ca_ES/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Últim pas: Indiqueu aquí el compte i la contrase ActivateModule=Activació del mòdul %s ShowEditTechnicalParameters=Premi aquí per veure/editar els paràmetres tècnics (mode expert) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/ca_ES/main.lang b/htdocs/langs/ca_ES/main.lang index 6ea2c963f3f..80bf6b6e547 100644 --- a/htdocs/langs/ca_ES/main.lang +++ b/htdocs/langs/ca_ES/main.lang @@ -141,6 +141,7 @@ Cancel=Anul·lar Modify=Modificar Edit=Editar Validate=Validar +ValidateAndApprove=Validate and Approve ToValidate=A validar Save=Gravar SaveAs=Gravar com @@ -158,6 +159,7 @@ Search=Cercar SearchOf=Cerca de Valid=Validar Approve=Aprovar +Disapprove=Disapprove ReOpen=Reobrir Upload=Enviar arxiu ToLink=Link @@ -219,6 +221,7 @@ Cards=Fitxes Card=Fitxa Now=Ara Date=Data +DateAndHour=Date and hour DateStart=Data inici DateEnd=Data fi DateCreation=Data de creació @@ -295,6 +298,7 @@ UnitPriceHT=Preu base UnitPriceTTC=Preu unitari total PriceU=P.U. PriceUHT=P.U. +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=P.U. Total Amount=Import AmountInvoice=Import factura @@ -521,6 +525,7 @@ DateFromTo=De %s a %s DateFrom=A partir de %s DateUntil=Fins %s Check=Verificar +Uncheck=Uncheck Internal=Intern External=Extern Internals=Interns @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Dilluns Tuesday=Dimarts diff --git a/htdocs/langs/ca_ES/orders.lang b/htdocs/langs/ca_ES/orders.lang index 7cfa908d372..2749007c0ce 100644 --- a/htdocs/langs/ca_ES/orders.lang +++ b/htdocs/langs/ca_ES/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Anul-lada StatusOrderDraft=Esborrany (a validar) StatusOrderValidated=Validada StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Processada StatusOrderToBill=Emès StatusOrderToBill2=A facturar @@ -58,6 +59,7 @@ MenuOrdersToBill=Comandes a facturar MenuOrdersToBill2=Billable orders SearchOrder=Cercar una comanda SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Enviar producte Discount=Descompte CreateOrder=Crear comanda diff --git a/htdocs/langs/ca_ES/other.lang b/htdocs/langs/ca_ES/other.lang index ae25227403d..316704111fa 100644 --- a/htdocs/langs/ca_ES/other.lang +++ b/htdocs/langs/ca_ES/other.lang @@ -54,12 +54,13 @@ MaxSize=Tamany màxim AttachANewFile=Adjuntar nou arxiu/document LinkedObject=Objecte adjuntat Miscellaneous=Diversos -NbOfActiveNotifications=Número notificacions +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Això és un correu de prova.\nLes 2 línies estan separades per un retorn de carro a la línia. PredefinedMailTestHtml=Això és un e-mail de prova (la paraula prova ha d'estar en negreta).
Les 2 línies estan separades per un retorn de carro en la línia PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/ca_ES/productbatch.lang b/htdocs/langs/ca_ES/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/ca_ES/productbatch.lang +++ b/htdocs/langs/ca_ES/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/ca_ES/products.lang b/htdocs/langs/ca_ES/products.lang index a99396d34ba..5c3a7e7b2d1 100644 --- a/htdocs/langs/ca_ES/products.lang +++ b/htdocs/langs/ca_ES/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/ca_ES/projects.lang b/htdocs/langs/ca_ES/projects.lang index dbdb9564f25..694c1c3a732 100644 --- a/htdocs/langs/ca_ES/projects.lang +++ b/htdocs/langs/ca_ES/projects.lang @@ -8,8 +8,10 @@ SharedProject=Projecte compartit PrivateProject=Contactes del projecte MyProjectsDesc=Aquesta vista projecte es limita als projectes en què vostè és un contacte afectat (qualsevol tipus). ProjectsPublicDesc=Aquesta vista mostra tots els projectes en els que vostè té dret a tenir visibilitat. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Aquesta vista mostra tots els projectes (les seves autoritzacions li ofereixen una visió completa). MyTasksDesc=Aquesta vista es limita als projectes i tasques en què vostè és un contacte afectat en almenys una tasca (qualsevol tipus). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Aquesta vista mostra tots els projectes i tasques en els que vostè té dret a tenir visibilitat. TasksDesc=Aquesta vista mostra tots els projectes i tasques (les sevas autoritzacions li ofereixen una visió completa). ProjectsArea=Àrea projectes @@ -29,6 +31,8 @@ NoProject=Cap projecte definit NbOpenTasks=Nº Tasques obertes NbOfProjects=Nº de projectes TimeSpent=Temps dedicat +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Temps dedicats RefTask=Ref. tasca LabelTask=Etiqueta tasca @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Llistat de comandes a proveïdors associades ListSupplierInvoicesAssociatedProject=Llistat de factures de proveïdor associades al projecte ListContractAssociatedProject=Llistatde contractes associats al projecte ListFichinterAssociatedProject=Llistat d'intervencions associades al projecte -ListTripAssociatedProject=Llistat notes d'honoraris associades al projecte +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Llista d'esdeveniments associats al projecte ActivityOnProjectThisWeek=Activitat en el projecte aquesta setmana ActivityOnProjectThisMonth=Activitat en el projecte aquest mes @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/ca_ES/salaries.lang b/htdocs/langs/ca_ES/salaries.lang index edca71a1829..6c4a42fa77f 100644 --- a/htdocs/langs/ca_ES/salaries.lang +++ b/htdocs/langs/ca_ES/salaries.lang @@ -1,8 +1,13 @@ # Dolibarr language file - Source file is en_US - users -Salary=Salary -Salaries=Salaries -Employee=Employee -NewSalaryPayment=New salary payment -SalaryPayment=Salary payment -SalariesPayments=Salaries payments -ShowSalaryPayment=Show salary payment +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge +Salary=Sou +Salaries=Sous +Employee=Empleat +NewSalaryPayment=Nou pagament de sous +SalaryPayment=Pagament de sous +SalariesPayments=Pagaments de sous +ShowSalaryPayment=Veure pagament de sous +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/ca_ES/sendings.lang b/htdocs/langs/ca_ES/sendings.lang index 81357c77fa4..21562f914cc 100644 --- a/htdocs/langs/ca_ES/sendings.lang +++ b/htdocs/langs/ca_ES/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Qt. demanada QtyShipped=Qt. enviada QtyToShip=Qt. a enviar QtyReceived=Qt. rebuda -KeepToShip=Quede per enviar +KeepToShip=Remain to ship OtherSendingsForSameOrder=Altres enviaments d'aquesta comanda DateSending=Data d'expedició DateSendingShort=Data d'expedició diff --git a/htdocs/langs/ca_ES/stocks.lang b/htdocs/langs/ca_ES/stocks.lang index 0c918bae6d8..4b3f823d589 100644 --- a/htdocs/langs/ca_ES/stocks.lang +++ b/htdocs/langs/ca_ES/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Valor (PMP) PMPValueShort=PMP EnhancedValueOfWarehouses=Valor d'estocs UserWarehouseAutoCreate=Crea automàticament existències/magatzem propi de l'usuari en la creació de l'usuari +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Quantitat desglossada QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/ca_ES/suppliers.lang b/htdocs/langs/ca_ES/suppliers.lang index df79e34d4e4..d0b6422c8e8 100644 --- a/htdocs/langs/ca_ES/suppliers.lang +++ b/htdocs/langs/ca_ES/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Proveïdors -Supplier=Proveïdor AddSupplier=Create a supplier SupplierRemoved=Proveïdor eliminat SuppliersInvoice=Factura proveïdor @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Factures proveïdors i pagaments ExportDataset_fournisseur_3=Comandes de proveïdors i línies de comanda ApproveThisOrder=Aprovar aquesta comanda ConfirmApproveThisOrder=Esteu segur de voler aprovar la comanda a proveïdor %s? -DenyingThisOrder=Denegar aquesta comanda +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Esteu segur de voler denegar la comanda a proveïdor %s? ConfirmCancelThisOrder=Esteu segur de voler cancel·lar la comanda a proveïdor %s? AddCustomerOrder=Crear comanda de client diff --git a/htdocs/langs/ca_ES/trips.lang b/htdocs/langs/ca_ES/trips.lang index 74f7e7cdb55..7999889e678 100644 --- a/htdocs/langs/ca_ES/trips.lang +++ b/htdocs/langs/ca_ES/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Desplaçament -Trips=Desplaçaments -TripsAndExpenses=Honoraris -TripsAndExpensesStatistics=Estadístiques honoraris -TripCard=Fitxa honorari -AddTrip=Crear honorari -ListOfTrips=Llistat de honorari +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Llistat notes de honoraris -NewTrip=Nou honorari +NewTrip=New expense report CompanyVisited=Empresa/institució visitada Kilometers=Quilòmetres FeesKilometersOrAmout=Import o quilòmetres -DeleteTrip=Eliminar honorari -ConfirmDeleteTrip=Esteu segur de voler eliminar aquest honorari? -TF_OTHER=Altre -TF_LUNCH=Dieta -TF_TRIP=Viatge -ListTripsAndExpenses=Llistat notes de honoraris -ExpensesArea=Àrea Notes d'honoraris -SearchATripAndExpense=Cercar un honorari +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Altre +TF_TRANSPORTATION=Transportation +TF_LUNCH=Dieta +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/cs_CZ/admin.lang b/htdocs/langs/cs_CZ/admin.lang index cb3fb8c8ca3..e857b9ee394 100644 --- a/htdocs/langs/cs_CZ/admin.lang +++ b/htdocs/langs/cs_CZ/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimentální VersionDevelopment=Vývoj VersionUnknown=Neznámý VersionRecommanded=Doporučené +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=ID relace SessionSaveHandler=Manipulátor uložených relací SessionSavePath=Místo uložení relace @@ -493,10 +498,16 @@ Module600Name=Upozornění Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Dary Module700Desc=Darování řízení +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integrace Module1400Name=Účetnictví Module1400Desc=Vedení účetnictví (dvojité strany) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Kategorie Module1780Desc=Category management (produkty, dodavatelé a odběratelé) Module2000Name=WYSIWYG editor @@ -631,7 +642,7 @@ Permission181=Přečtěte si dodavatelských objednávek Permission182=Vytvořit / upravit dodavatelské objednávky Permission183=Ověřit dodavatelských objednávek Permission184=Schválit dodavatelských objednávek -Permission185=Objednávky Objednat dodavatel +Permission185=Order or cancel supplier orders Permission186=Příjem objednávek s dodavately Permission187=Zavřít dodavatelské objednávky Permission188=Zrušit dodavatelských objednávek @@ -711,6 +722,13 @@ Permission538=Export služeb Permission701=Přečtěte si dary Permission702=Vytvořit / upravit dary Permission703=Odstranit dary +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Přečtěte si zásoby Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Heslo používat proxy server DefineHereComplementaryAttributes=Definujte zde všechny atributy, které ještě nejsou k dispozici ve výchozím nastavení, a že chcete být podporovány %s. ExtraFields=Doplňkové atributy ExtraFieldsLines=Doplňkové atributy (linky) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Doplňkové atributy (thirdparty) ExtraFieldsContacts=Doplňkové atributy (kontakt / adresa) ExtraFieldsMember=Doplňkové atributy (člen) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Řada výrobků / služeb s nulové hodnoty je považo FreeLegalTextOnProposal=Volný text o obchodních návrhů WatermarkOnDraftProposal=Vodoznak na předloh návrhů komerčních (none-li prázdný) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Objednat řízení nastavení OrdersNumberingModules=Objednávky číslování modelů @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Čárových kódů typu UPC BarcodeDescISBN=Čárový kód typu ISBN BarcodeDescC39=Čárový kód typu C39 BarcodeDescC128=Čárový kód typu C128 -GenbarcodeLocation=Bar generování kódu nástroj pro příkazovou řádku (používaný motorem s vnitřním u některých typů čárových kódů) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Vnitřní motor BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Výchozí účet použít pro příjem plateb v hotovosti CashDeskBankAccountForCheque= Výchozí účet použít pro příjem plateb šekem CashDeskBankAccountForCB= Výchozí účet použít pro příjem plateb prostřednictvím kreditní karty -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Záložka Nastavení modulu @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/cs_CZ/banks.lang b/htdocs/langs/cs_CZ/banks.lang index 8c43ba341c4..67ff3cf6011 100644 --- a/htdocs/langs/cs_CZ/banks.lang +++ b/htdocs/langs/cs_CZ/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Smíření RIB=Číslo bankovního účtu IBAN=IBAN +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC / SWIFT číslo +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Trvalé příkazy StandingOrder=Trvalý příkaz Withdrawals=Výběry @@ -148,7 +152,7 @@ BackToAccount=Zpět na účtu ShowAllAccounts=Zobrazit pro všechny účty FutureTransaction=Transakce v Futur. Žádný způsob, jak se smířit. SelectChequeTransactionAndGenerate=Výběr / filtr, aby kontroly zahrnovaly do obdržení šeku vkladů a klikněte na "Vytvořit". -InputReceiptNumber=Vyberte si výpis z účtu související s dohodovacím řízení. Použijte Sortable číselnou hodnotu (například RRRRMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Nakonec určit kategorii, ve které chcete klasifikovat záznamy ToConciliate=Smířit? ThenCheckLinesAndConciliate=Poté zkontrolujte, zda řádky, které jsou ve výpisu z účtu a klepněte na tlačítko diff --git a/htdocs/langs/cs_CZ/commercial.lang b/htdocs/langs/cs_CZ/commercial.lang index ab71b01387d..7886122e124 100644 --- a/htdocs/langs/cs_CZ/commercial.lang +++ b/htdocs/langs/cs_CZ/commercial.lang @@ -9,9 +9,9 @@ Prospect=Vyhlídka Prospects=Vyhlídky DeleteAction=Odstranit událost / úkol NewAction=Nová událost / úkol -AddAction=Přidat událost / úkol -AddAnAction=Přidat událost / úkol -AddActionRendezVous=Přidat Rendez-vous události +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Schůzka ConfirmDeleteAction=Jste si jisti, že chcete smazat tuto událost / úkol? CardAction=Událost karty @@ -44,8 +44,8 @@ DoneActions=Dokončené akce DoneActionsFor=Dokončené akce pro %s ToDoActions=Neúplné události ToDoActionsFor=Neúplné akce pro %s -SendPropalRef=Poslat komerční návrhu %s -SendOrderRef=Pošli objednávku %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Nevztahuje se StatusActionToDo=Chcete-li StatusActionDone=Dokončit @@ -62,7 +62,7 @@ LastProspectContactDone=Spojit se provádí DateActionPlanned=Datum Akce plánované na DateActionDone=Datum Akce provedeno ActionAskedBy=Akce hlášeny -ActionAffectedTo=Událost přiřazena +ActionAffectedTo=Event assigned to ActionDoneBy=Událost provádí ActionUserAsk=Zpracoval ErrorStatusCantBeZeroIfStarted=Pokud pole 'Datum udělat "je naplněn, je akce zahájena (nebo dokončený), tak pole" Stav "nemůže být 0%%. diff --git a/htdocs/langs/cs_CZ/contracts.lang b/htdocs/langs/cs_CZ/contracts.lang index 792ed511937..40188328aae 100644 --- a/htdocs/langs/cs_CZ/contracts.lang +++ b/htdocs/langs/cs_CZ/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Vypršela ServiceStatusClosed=Zavřeno ServicesLegend=Služby legenda Contracts=Smlouvy +ContractsAndLine=Contracts and line of contracts Contract=Smlouva NoContracts=Žádné smlouvy MenuServices=Služby diff --git a/htdocs/langs/cs_CZ/cron.lang b/htdocs/langs/cs_CZ/cron.lang index 05ed1384123..83947327da5 100644 --- a/htdocs/langs/cs_CZ/cron.lang +++ b/htdocs/langs/cs_CZ/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell příkaz CronMenu=Cron CronCannotLoadClass=Nelze načíst třídu nebo objekt %s %s UseMenuModuleToolsToAddCronJobs=Jděte do menu "Home - Moduly nářadí - Seznam úloh" vidět a upravovat naplánované úlohy. +TaskDisabled=Task disabled diff --git a/htdocs/langs/cs_CZ/errors.lang b/htdocs/langs/cs_CZ/errors.lang index 6a09500f020..d2570c905ce 100644 --- a/htdocs/langs/cs_CZ/errors.lang +++ b/htdocs/langs/cs_CZ/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Zdrojové a cílové bankovní účty musí být ErrorBadThirdPartyName=Nesprávná hodnota pro třetí strany jménem ErrorProdIdIsMandatory=%s je povinné ErrorBadCustomerCodeSyntax=Bad syntaxe pro zákazníka kódu -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Zákazník požadoval kód ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Zákaznický kód již používán @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript musí být vypnuta, že tato funkce prac ErrorPasswordsMustMatch=Oba napsaný hesla se musí shodovat se navzájem ErrorContactEMail=Technické chybě. Prosím, obraťte se na správce, aby e-mailovou %s en poskytovat %s kód chyby ve zprávě, nebo ještě lépe přidáním obrazovky kopii této stránky. ErrorWrongValueForField=Chybná hodnota %s číslo pole (hodnota "%s 'neodpovídá regex pravidel %s) -ErrorFieldValueNotIn=Chybná hodnota %s číslo pole (hodnota "%s 'není dostupná hodnota do pole %s stolních %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Chybná hodnota %s číslo pole (hodnota "%s" není %s stávající ref) ErrorsOnXLines=Chyby na %s zdrojovém záznamu (s) ErrorFileIsInfectedWithAVirus=Antivirový program nebyl schopen ověřit soubor (soubor může být napaden virem) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Povinné parametry jsou dosud stanoveny diff --git a/htdocs/langs/cs_CZ/install.lang b/htdocs/langs/cs_CZ/install.lang index 4855a8f234c..7967e44f0b2 100644 --- a/htdocs/langs/cs_CZ/install.lang +++ b/htdocs/langs/cs_CZ/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Poslední krok: Definujte zde přihlašovací jmé ActivateModule=Aktivace modulu %s ShowEditTechnicalParameters=Klikněte zde pro zobrazení / editaci pokročilých parametrů (pro experty) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/cs_CZ/main.lang b/htdocs/langs/cs_CZ/main.lang index b3c285cdbae..17e4c56569f 100644 --- a/htdocs/langs/cs_CZ/main.lang +++ b/htdocs/langs/cs_CZ/main.lang @@ -141,6 +141,7 @@ Cancel=Zrušit Modify=Upravit Edit=Upravit Validate=Potvrdit +ValidateAndApprove=Validate and Approve ToValidate=Chcete-li ověřit Save=Uložit SaveAs=Uložit jako @@ -158,6 +159,7 @@ Search=Vyhledávání SearchOf=Vyhledávání Valid=Platný Approve=Schvalovat +Disapprove=Disapprove ReOpen=Znovu otevřít Upload=Odeslat soubor ToLink=Link @@ -219,6 +221,7 @@ Cards=Karty Card=Karta Now=Nyní Date=Datum +DateAndHour=Date and hour DateStart=Datum začátku DateEnd=Datum ukončení DateCreation=Datum vytvoření @@ -295,6 +298,7 @@ UnitPriceHT=Jednotková cena (bez DPH) UnitPriceTTC=Jednotková cena PriceU=UP PriceUHT=UP (bez DPH) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=UP Amount=Množství AmountInvoice=Fakturovaná částka @@ -521,6 +525,7 @@ DateFromTo=Od %s na %s DateFrom=Od %s DateUntil=Do %s Check=Kontrola +Uncheck=Uncheck Internal=Vnitřní External=Externí Internals=Vnitřní @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Pondělí Tuesday=Úterý diff --git a/htdocs/langs/cs_CZ/orders.lang b/htdocs/langs/cs_CZ/orders.lang index 67d948e78b3..6aa596baa1b 100644 --- a/htdocs/langs/cs_CZ/orders.lang +++ b/htdocs/langs/cs_CZ/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Zrušený StatusOrderDraft=Návrh (musí být ověřena) StatusOrderValidated=Ověřené StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Zpracované StatusOrderToBill=Dodává se StatusOrderToBill2=K účtu @@ -58,6 +59,7 @@ MenuOrdersToBill=Objednávky dodáno MenuOrdersToBill2=Billable orders SearchOrder=Hledat účelem SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Loď produkt Discount=Sleva CreateOrder=Vytvořit objednávku diff --git a/htdocs/langs/cs_CZ/other.lang b/htdocs/langs/cs_CZ/other.lang index d2b3363bde1..f0e4b814a04 100644 --- a/htdocs/langs/cs_CZ/other.lang +++ b/htdocs/langs/cs_CZ/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximální rozměr AttachANewFile=Připojte nový soubor / dokument LinkedObject=Propojený objekt Miscellaneous=Smíšený -NbOfActiveNotifications=Počet oznámení +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Toto je test e-mailem. \\ NPokud dva řádky jsou odděleny znakem konce řádku. \n\n __ SIGNATURE__ PredefinedMailTestHtml=Toto je test-mail (slovo test musí být tučně).
Dva řádky jsou odděleny znakem konce řádku.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/cs_CZ/productbatch.lang b/htdocs/langs/cs_CZ/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/cs_CZ/productbatch.lang +++ b/htdocs/langs/cs_CZ/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/cs_CZ/products.lang b/htdocs/langs/cs_CZ/products.lang index aa3dbd4fda9..7fc24c7a1a3 100644 --- a/htdocs/langs/cs_CZ/products.lang +++ b/htdocs/langs/cs_CZ/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/cs_CZ/projects.lang b/htdocs/langs/cs_CZ/projects.lang index b98531acef5..3e8b7a046b0 100644 --- a/htdocs/langs/cs_CZ/projects.lang +++ b/htdocs/langs/cs_CZ/projects.lang @@ -8,8 +8,10 @@ SharedProject=Všichni PrivateProject=Kontakty na projektu MyProjectsDesc=Tento pohled je omezen na projekty u kterých jste uveden jako kontakt (jakéhokoliv typu) ProjectsPublicDesc=Tento pohled zobrazuje všechny projekty které máte oprávnění číst. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Tento pohled zobrazuje všechny projekty (vaše uživatelské oprávnění vám umožňuje vidět vše). MyTasksDesc=Tento pohled je omezen na projekty či úkoly u kterých jste uveden jako kontakt (jakéhokoliv typu) +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Tento pohled zobrazuje všechny projekty a úkoly které máte oprávnění číst. TasksDesc=Tento pohled zobrazuje všechny projekty a úkoly (vaše uživatelské oprávnění vám umožňuje vidět vše). ProjectsArea=Projekty @@ -29,6 +31,8 @@ NoProject=Žádný projekt nedefinován či vlastněn NbOpenTasks=Počet otevřených úloh NbOfProjects=Počet projektů TimeSpent=Strávený čas +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Strávený čas RefTask=Číslo. úkolu LabelTask=Název úkolu @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Seznam dodavatelských objednávek souvisej ListSupplierInvoicesAssociatedProject=Seznam dodavatelských faktur související s projektem ListContractAssociatedProject=Seznam zakázek souvisejících s projektem ListFichinterAssociatedProject=Seznam zákroků spojených s projektem -ListTripAssociatedProject=Seznam cest a nákladů spojených s projektem +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Seznam událostí spojených s projektem ActivityOnProjectThisWeek=Týdenní projektová aktivita ActivityOnProjectThisMonth=Měsíční projektová aktivita @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/cs_CZ/salaries.lang b/htdocs/langs/cs_CZ/salaries.lang index edca71a1829..f9dbdb94b20 100644 --- a/htdocs/langs/cs_CZ/salaries.lang +++ b/htdocs/langs/cs_CZ/salaries.lang @@ -1,8 +1,13 @@ # Dolibarr language file - Source file is en_US - users -Salary=Salary -Salaries=Salaries -Employee=Employee -NewSalaryPayment=New salary payment -SalaryPayment=Salary payment -SalariesPayments=Salaries payments -ShowSalaryPayment=Show salary payment +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge +Salary=Mzda +Salaries=Mzdy +Employee=Zaměstnanec +NewSalaryPayment=Nová platba mzdy +SalaryPayment=Platba mzdy +SalariesPayments=Platby mezd +ShowSalaryPayment=Ukázat platbu mzdy +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/cs_CZ/sendings.lang b/htdocs/langs/cs_CZ/sendings.lang index 73b172c200e..f794bceaa84 100644 --- a/htdocs/langs/cs_CZ/sendings.lang +++ b/htdocs/langs/cs_CZ/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Množství objednat QtyShipped=Množství odesláno QtyToShip=Množství na loď QtyReceived=Množství přijaté -KeepToShip=Mějte na loď +KeepToShip=Remain to ship OtherSendingsForSameOrder=Další zásilky pro tuto objednávku DateSending=Datum odeslání, aby DateSendingShort=Datum odeslání, aby diff --git a/htdocs/langs/cs_CZ/stocks.lang b/htdocs/langs/cs_CZ/stocks.lang index 57d76a0cdf7..451126fb054 100644 --- a/htdocs/langs/cs_CZ/stocks.lang +++ b/htdocs/langs/cs_CZ/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Vážená průměrná cena PMPValueShort=WAP EnhancedValueOfWarehouses=Sklady hodnota UserWarehouseAutoCreate=Vytvořte sklad automaticky při vytváření uživatele +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Množství odesláno QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=Skladová %s budou použity pro snížení skla WarehouseForStockIncrease=Skladová %s budou použity pro zvýšení stavu zásob ForThisWarehouse=Z tohoto skladu ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=Toto je seznam všech otevřených dodavatelských objednávek +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Splátky NbOfProductBeforePeriod=Množství produktů %s na skladě, než zvolené období (<%s) NbOfProductAfterPeriod=Množství produktů %s na skladě po zvolené období (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/cs_CZ/suppliers.lang b/htdocs/langs/cs_CZ/suppliers.lang index 57bd9b70754..99a629ba847 100644 --- a/htdocs/langs/cs_CZ/suppliers.lang +++ b/htdocs/langs/cs_CZ/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Dodavatelé -Supplier=Dodavatel AddSupplier=Create a supplier SupplierRemoved=Dodavatel odstraní SuppliersInvoice=Dodavatelé faktura @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Dodavatel faktury a platby ExportDataset_fournisseur_3=Dodavatel objednávky a objednávka linky ApproveThisOrder=Schválit tuto objednávku ConfirmApproveThisOrder=Jste si jisti, že chcete schválit pořadí %s? -DenyingThisOrder=Popírat tuto objednávku +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Jste si jisti, že chcete popírat objednávky %s? ConfirmCancelThisOrder=Jste si jisti, že chcete zrušit tuto objednávku %s? AddCustomerOrder=Vytvoření objednávky zákazníka diff --git a/htdocs/langs/cs_CZ/trips.lang b/htdocs/langs/cs_CZ/trips.lang index 9de98944f52..faeac138096 100644 --- a/htdocs/langs/cs_CZ/trips.lang +++ b/htdocs/langs/cs_CZ/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Výlet -Trips=Výlety -TripsAndExpenses=Výlety a výdaje -TripsAndExpensesStatistics=Výlety a výdaje statistiky -TripCard=Výlet karty -AddTrip=Přidat výlet -ListOfTrips=Seznam cest +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Sazebník poplatků -NewTrip=Nová cesta +NewTrip=New expense report CompanyVisited=Firma / nadace navštívil Kilometers=Kilometry FeesKilometersOrAmout=Množství nebo kilometrů -DeleteTrip=Odstranit výlet -ConfirmDeleteTrip=Jste si jisti, že chcete smazat tuto cestu? -TF_OTHER=Ostatní -TF_LUNCH=Oběd -TF_TRIP=Výlet -ListTripsAndExpenses=Seznam cest a nákladů -ExpensesArea=Výlety a náklady oblast -SearchATripAndExpense=Hledat na výlet a náklady +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Ostatní +TF_TRANSPORTATION=Transportation +TF_LUNCH=Oběd +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/da_DK/admin.lang b/htdocs/langs/da_DK/admin.lang index 93e6a224b77..8cbc1e17779 100644 --- a/htdocs/langs/da_DK/admin.lang +++ b/htdocs/langs/da_DK/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Eksperimentel VersionDevelopment=Udvikling VersionUnknown=Ukendt VersionRecommanded=Anbefalet +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Session ID SessionSaveHandler=Handler for at gemme sessioner SessionSavePath=Storage session localization @@ -493,10 +498,16 @@ Module600Name=Adviséringer Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Donationer Module700Desc=Gaver 'ledelse +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1400Name=Regnskabsmæssig ekspert Module1400Desc=Regnskabsmæssig forvaltning for eksperter (dobbelt parterne) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Kategorier Module1780Desc=Kategorier 'forvaltning (produkter, leverandører og kunder) Module2000Name=FCKeditor @@ -631,7 +642,7 @@ Permission181=Læs leverandør ordrer Permission182=Opret / ændre leverandør ordrer Permission183=Valider leverandør ordrer Permission184=Godkend leverandør ordrer -Permission185=Bestil leverandør ordrer +Permission185=Order or cancel supplier orders Permission186=Modtag leverandør ordrer Permission187=Luk leverandør ordrer Permission188=Annuller leverandør ordrer @@ -711,6 +722,13 @@ Permission538=Eksport af tjenesteydelser Permission701=Læs donationer Permission702=Opret / ændre donationer Permission703=Slet donationer +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Læs bestande Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Adgangskode for at bruge proxyserveren DefineHereComplementaryAttributes=Definer her alle atributes, der ikke allerede findes som standard, og at du ønsker at blive understøttet for %s. ExtraFields=Supplerende egenskaber ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=En linje af produkt / service med et nul beløb anses FreeLegalTextOnProposal=Fri tekst på kommercielle forslag WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Ordrer «forvaltning setup OrdersNumberingModules=Ordrer nummerressourcer moduler @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barcode typeidentifikationsmærker UPC BarcodeDescISBN=Barcode typeidentifikationsmærker ISBN BarcodeDescC39=Barcode af type C39 BarcodeDescC128=Barcode af type C128 -GenbarcodeLocation=Stregkode generation kommando linje værktøj (der benyttes af phpbarcode motor for nogle stregkode typer) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Cash konto til brug for sælger CashDeskBankAccountForCheque= Konto til at bruge til at modtage betalinger med check CashDeskBankAccountForCB= Konto til at bruge til at modtage kontant betaling ved kreditkort -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Bogmærkemodulet setup @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/da_DK/banks.lang b/htdocs/langs/da_DK/banks.lang index 11dfcb6ab7c..d66fa525a7b 100644 --- a/htdocs/langs/da_DK/banks.lang +++ b/htdocs/langs/da_DK/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Forsoning RIB=Bankkontonummer IBAN=IBAN-nummer +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC / SWIFT-nummer +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Stående ordrer StandingOrder=Stående ordre Withdrawals=Tilbagekøb @@ -148,7 +152,7 @@ BackToAccount=Tilbage til regnskab ShowAllAccounts=Vis for alle konti FutureTransaction=Transaktion i futur. Ingen måde at forene. SelectChequeTransactionAndGenerate=Vælg / filter, at kontrollen skal omfatte ind checken depositum modtaget og klikke på "Opret". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/da_DK/commercial.lang b/htdocs/langs/da_DK/commercial.lang index 97c040cbf8b..8a226198cad 100644 --- a/htdocs/langs/da_DK/commercial.lang +++ b/htdocs/langs/da_DK/commercial.lang @@ -9,9 +9,9 @@ Prospect=Prospect Prospects=Perspektiver DeleteAction=Slet en foranstaltning / opgave NewAction=Ny action / opgave -AddAction=Tilføj action / opgave -AddAnAction=Tilføj en foranstaltning / opgave -AddActionRendezVous=Tilføj en Rendezvous opgave +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Rendezvous ConfirmDeleteAction=Er du sikker på du vil slette denne opgave? CardAction=Action-kortet @@ -44,8 +44,8 @@ DoneActions=Udfærdiget aktioner DoneActionsFor=Gøres tiltag for %s ToDoActions=Ufuldstændig aktioner ToDoActionsFor=Ufuldstændig aktioner for %s -SendPropalRef=Send kommercielle forslag %s -SendOrderRef=Send for %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Ikke relevant StatusActionToDo=At gøre StatusActionDone=Gjort @@ -62,7 +62,7 @@ LastProspectContactDone=Kontakt gjort DateActionPlanned=Dato aktion er planlagt til DateActionDone=Dato indsats gøres ActionAskedBy=Aktion spurgt af -ActionAffectedTo=Aktion påvirkes i +ActionAffectedTo=Event assigned to ActionDoneBy=Aktion gøres ved ActionUserAsk=Registreres af ErrorStatusCantBeZeroIfStarted=Hvis feltet 'Dato gjort «er fyldt handling er startet (eller afsluttet), så felt' Status' kan ikke være 0%%. diff --git a/htdocs/langs/da_DK/contracts.lang b/htdocs/langs/da_DK/contracts.lang index 73a7e126d9e..7c4327088bc 100644 --- a/htdocs/langs/da_DK/contracts.lang +++ b/htdocs/langs/da_DK/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Udløbet ServiceStatusClosed=Lukket ServicesLegend=Services legend Contracts=Kontrakter +ContractsAndLine=Contracts and line of contracts Contract=Kontrakt NoContracts=Nr. kontrakter MenuServices=Services diff --git a/htdocs/langs/da_DK/cron.lang b/htdocs/langs/da_DK/cron.lang index cb5e21f817a..8ea7f4353fa 100644 --- a/htdocs/langs/da_DK/cron.lang +++ b/htdocs/langs/da_DK/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/da_DK/errors.lang b/htdocs/langs/da_DK/errors.lang index 9ad36372483..f69f42d1a6f 100644 --- a/htdocs/langs/da_DK/errors.lang +++ b/htdocs/langs/da_DK/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Kilde og mål bankkonti skal være anderledes. ErrorBadThirdPartyName=Bad værdi for tredjeparts navn ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntaks for kunde-kode -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Kunden kode kræves ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Kunden koden allerede anvendes @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript skal ikke være deaktiveret for at have ErrorPasswordsMustMatch=Begge har skrevet passwords skal matche hinanden ErrorContactEMail=En teknisk fejl opstod. Kontakt venligst administrator til at følge e-mail %s da give fejlkoder %s i din besked, eller endnu bedre ved at tilføje en skærm kopi af denne side. ErrorWrongValueForField=Forkert værdi for felt nummer %s (værdi '%s' passer ikke regex regel %s) -ErrorFieldValueNotIn=Forkert værdi for feltnummer %s (value "%s" er ikke en værdi, der i felt %s af tabel %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Forkert værdi for feltnummer %s (værdien '%s' er ikke en %s eksisterende ref) ErrorsOnXLines=Fejl på %s kildelinjer ErrorFileIsInfectedWithAVirus=Det antivirusprogram var ikke i stand til at validere filen (filen kan være inficeret med en virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/da_DK/install.lang b/htdocs/langs/da_DK/install.lang index 443877735a9..d265352dc80 100644 --- a/htdocs/langs/da_DK/install.lang +++ b/htdocs/langs/da_DK/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Sidste trin: Definer her login og adgangskode, du ActivateModule=Aktiver modul %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/da_DK/main.lang b/htdocs/langs/da_DK/main.lang index 6ce6c3fe051..91070a4d2ce 100644 --- a/htdocs/langs/da_DK/main.lang +++ b/htdocs/langs/da_DK/main.lang @@ -141,6 +141,7 @@ Cancel=Annuller Modify=Modify Edit=Redigér Validate=Validate +ValidateAndApprove=Validate and Approve ToValidate=At validere Save=Gemme SaveAs=Gem som @@ -158,6 +159,7 @@ Search=Søgning SearchOf=Søg Valid=Gyldig Approve=Godkend +Disapprove=Disapprove ReOpen=Re-Open Upload=Send fil ToLink=Link @@ -219,6 +221,7 @@ Cards=Postkort Card=Kort Now=Nu Date=Dato +DateAndHour=Date and hour DateStart=Dato start DateEnd=Dato udgangen DateCreation=Lavet dato @@ -295,6 +298,7 @@ UnitPriceHT=Enhedspris (netto) UnitPriceTTC=Enhedspris PriceU=UP PriceUHT=UP (netto) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=UP Amount=Mængde AmountInvoice=Fakturabeløbet @@ -521,6 +525,7 @@ DateFromTo=Fra %s til %s DateFrom=Fra %s DateUntil=Indtil %s Check=Kontrollere +Uncheck=Uncheck Internal=Intern External=Eksterne Internals=Intern @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Mandag Tuesday=Tirsdag diff --git a/htdocs/langs/da_DK/orders.lang b/htdocs/langs/da_DK/orders.lang index e85107b54f0..c5cb6c9dc56 100644 --- a/htdocs/langs/da_DK/orders.lang +++ b/htdocs/langs/da_DK/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Annulleret StatusOrderDraft=Udkast (skal valideres) StatusOrderValidated=Valideret StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Forarbejdede StatusOrderToBill=Til lovforslag StatusOrderToBill2=Til lovforslag @@ -58,6 +59,7 @@ MenuOrdersToBill=Ordrer til lovforslag MenuOrdersToBill2=Billable orders SearchOrder=Search for SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Skib produkt Discount=Discount CreateOrder=Opret Order diff --git a/htdocs/langs/da_DK/other.lang b/htdocs/langs/da_DK/other.lang index 3195ac89360..ec7a5a1fc9f 100644 --- a/htdocs/langs/da_DK/other.lang +++ b/htdocs/langs/da_DK/other.lang @@ -54,12 +54,13 @@ MaxSize=Maksimumstørrelse AttachANewFile=Vedhæfte en ny fil / dokument LinkedObject=Forbundet objekt Miscellaneous=Miscellaneous -NbOfActiveNotifications=Antal anmeldelser +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Dette er en test mail. \\ NDen to linjer er adskilt af et linjeskift. PredefinedMailTestHtml=Dette er en test mail (ordet test skal være i fed).
De to linjer er adskilt af et linjeskift. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/da_DK/productbatch.lang b/htdocs/langs/da_DK/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/da_DK/productbatch.lang +++ b/htdocs/langs/da_DK/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/da_DK/products.lang b/htdocs/langs/da_DK/products.lang index ecd03ef5957..e66913ef4fc 100644 --- a/htdocs/langs/da_DK/products.lang +++ b/htdocs/langs/da_DK/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/da_DK/projects.lang b/htdocs/langs/da_DK/projects.lang index 88c5210f23c..a72024e975f 100644 --- a/htdocs/langs/da_DK/projects.lang +++ b/htdocs/langs/da_DK/projects.lang @@ -8,8 +8,10 @@ SharedProject=Fælles projekt PrivateProject=Kontakter af projektet MyProjectsDesc=Dette synspunkt er begrænset til projekter, du er en kontaktperson for (hvad der er den type). ProjectsPublicDesc=Dette synspunkt præsenterer alle projekter du får lov til at læse. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Dette synspunkt præsenterer alle projekter (din brugertilladelser give dig tilladelse til at se alt). MyTasksDesc=Dette synspunkt er begrænset til projekter eller opgaver, du er en kontaktperson for (hvad der er den type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Dette synspunkt præsenterer alle projekter og opgaver, som du får lov til at læse. TasksDesc=Dette synspunkt præsenterer alle projekter og opgaver (din brugertilladelser give dig tilladelse til at se alt). ProjectsArea=Projekter område @@ -29,6 +31,8 @@ NoProject=Nr. projektet defineret NbOpenTasks=Nb af åbnet opgaver NbOfProjects=Nb af projekter TimeSpent=Tid brugt +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Tid brugt RefTask=Ref. opgave LabelTask=Label opgave @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Liste over leverandører ordrer forbundet me ListSupplierInvoicesAssociatedProject=Liste over leverandører fakturaer forbundet med projektet ListContractAssociatedProject=Liste over kontrakter i forbindelse med projektet ListFichinterAssociatedProject=Liste over interventioner i forbindelse med projektet -ListTripAssociatedProject=Liste over rejser og udgifter forbundet med projektet +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Liste over aktioner i forbindelse med projektet ActivityOnProjectThisWeek=Aktivitet på projektet i denne uge ActivityOnProjectThisMonth=Aktivitet på projektet i denne måned @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/da_DK/salaries.lang b/htdocs/langs/da_DK/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/da_DK/salaries.lang +++ b/htdocs/langs/da_DK/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/da_DK/sendings.lang b/htdocs/langs/da_DK/sendings.lang index a52622bda7c..0b1d722f494 100644 --- a/htdocs/langs/da_DK/sendings.lang +++ b/htdocs/langs/da_DK/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Qty bestilt QtyShipped=Qty afsendt QtyToShip=Qty til skibet QtyReceived=Antal modtagne -KeepToShip=Hold til skib +KeepToShip=Remain to ship OtherSendingsForSameOrder=Andre sendings for denne ordre DateSending=Dato for afsendelse orden DateSendingShort=Dato for afsendelse orden diff --git a/htdocs/langs/da_DK/stocks.lang b/htdocs/langs/da_DK/stocks.lang index acb10492f90..19b708156b7 100644 --- a/htdocs/langs/da_DK/stocks.lang +++ b/htdocs/langs/da_DK/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Værdi PMPValueShort=WAP EnhancedValueOfWarehouses=Lager værdi UserWarehouseAutoCreate=Opret en bestand automatisk, når du opretter en bruger +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Afsendte mængde QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/da_DK/suppliers.lang b/htdocs/langs/da_DK/suppliers.lang index 2d7dbf35ee6..aae6a4917a0 100644 --- a/htdocs/langs/da_DK/suppliers.lang +++ b/htdocs/langs/da_DK/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Leverandører -Supplier=Leverandør AddSupplier=Create a supplier SupplierRemoved=Leverandør fjernet SuppliersInvoice=Leverandører faktura @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Leverandør fakturaer og betalinger ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Godkende denne ordre ConfirmApproveThisOrder=Er du sikker på at du vil godkende denne ordre? -DenyingThisOrder=Benægte denne ordre +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Er du sikker på at du vil benægte denne ordre? ConfirmCancelThisOrder=Er du sikker på du vil annullere denne ordre? AddCustomerOrder=Opret kunde for diff --git a/htdocs/langs/da_DK/trips.lang b/htdocs/langs/da_DK/trips.lang index e4f3690f70d..561a88dfc8a 100644 --- a/htdocs/langs/da_DK/trips.lang +++ b/htdocs/langs/da_DK/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Tur -Trips=Trips -TripsAndExpenses=Udflugter og udgifter -TripsAndExpensesStatistics=Udflugter og udgifter statistik -TripCard=Trip kortet -AddTrip=Tilføj tur -ListOfTrips=Liste over ture +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Liste over gebyrer -NewTrip=Ny tur +NewTrip=New expense report CompanyVisited=Company / fundament besøgte Kilometers=Kilometer FeesKilometersOrAmout=Beløb eller kilometer -DeleteTrip=Slet tur -ConfirmDeleteTrip=Er du sikker på du vil slette denne tur? -TF_OTHER=Anden -TF_LUNCH=Frokost -TF_TRIP=Tur -ListTripsAndExpenses=Liste over ture og omkostninger -ExpensesArea=Udflugter og udgifter området -SearchATripAndExpense=Søg en tur og regning +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Anden +TF_TRANSPORTATION=Transportation +TF_LUNCH=Frokost +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/de_AT/agenda.lang b/htdocs/langs/de_AT/agenda.lang index e0268220e08..76a87c87644 100644 --- a/htdocs/langs/de_AT/agenda.lang +++ b/htdocs/langs/de_AT/agenda.lang @@ -2,4 +2,3 @@ ViewList=Liste anzeigen ViewCal=Kalender anzeigen OrderValidatedInDolibarr=Bestellung freigegeben -InterventionValidatedInDolibarr=Eingriff %s freigegeben diff --git a/htdocs/langs/de_AT/main.lang b/htdocs/langs/de_AT/main.lang index be59b18d3a5..ebda6905a62 100644 --- a/htdocs/langs/de_AT/main.lang +++ b/htdocs/langs/de_AT/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=dd/MM/yyyy FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/MM/yy FormatDateShortJQueryInput=dd/MM/yy +FormatHourShortJQuery=HH:MI FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y @@ -25,7 +26,6 @@ ErrorFailedToSendMail=Fehler beim Senden des Mails (Absender=%s, Empfänger=%s) ErrorAttachedFilesDisabled=Die Dateianhangsfunktion ist auf diesem Server deaktiviert ErrorInternalErrorDetected=Interner Fehler entdeckt ErrorDuplicateField=Dieser Wert muß einzigartig sein -ErrorOnlyPngJpgSupported=Bitte wählen Sie eine Datei im .jpg- oder .png-Dateiformat. LevelOfFeature=Funktions-Level PreviousConnexion=Vorherige Verbindung RequestLastAccessInError=Anfrage des letzten Datenbankzugriffs mit Fehler @@ -63,7 +63,6 @@ Receive=Erhalte ThisLimitIsDefinedInSetup=Gesetzte System-Limits (Menü Home-Einstellungen-Sicherheit): %s Kb, PHP Limit: %s Kb UnHidePassword=Passwort-Zeichen anzeigen ListOfFiles=Dateiliste -FreeZone=Freier Text CloneMainAttributes=Duplikat mit den Haupteigenschaften AttributeCode=Attribut-Code OptionalFieldsSetup=Optionale Felder einrichten diff --git a/htdocs/langs/de_AT/projects.lang b/htdocs/langs/de_AT/projects.lang index 8b665ac1dd6..a480ec09913 100644 --- a/htdocs/langs/de_AT/projects.lang +++ b/htdocs/langs/de_AT/projects.lang @@ -11,7 +11,6 @@ NoProject=Kein Projekt definiert RefTask=Aufgaben Nr. MyActivities=Meine Tätigkeiten ListFichinterAssociatedProject=Liste der mit diesem Projekt verknüpften Eingriffe -ListTripAssociatedProject=Liste der mit diesem Projekt verknüpften Reise- und Fahrtspesen CloseAProject=Schließe Projekt ReOpenAProject=Öffne Projekt DoNotShowMyTasksOnly=Zeige auch die Aufgaben Anderer diff --git a/htdocs/langs/de_AT/withdrawals.lang b/htdocs/langs/de_AT/withdrawals.lang index c5ae4da1f5f..93ca575035d 100644 --- a/htdocs/langs/de_AT/withdrawals.lang +++ b/htdocs/langs/de_AT/withdrawals.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - withdrawals LastWithdrawalReceipt=%s neuste Abbuchungsbelege -InvoiceRefused=Ablehnung in Rechnung stellen WithdrawalRefused=Abbuchungen abgelehnt +InvoiceRefused=Ablehnung in Rechnung stellen StatusWaiting=Wartestellung StatusMotif2=Abbuchung angefochten StatusMotif4=Ablehnung durch Kontoinhaber diff --git a/htdocs/langs/de_CH/companies.lang b/htdocs/langs/de_CH/companies.lang index 26cd766b83e..70564679d5f 100644 --- a/htdocs/langs/de_CH/companies.lang +++ b/htdocs/langs/de_CH/companies.lang @@ -1,11 +1 @@ # Dolibarr language file - Source file is en_US - companies -JuridicalStatus600=Einzelfirma -JuridicalStatus601=Einfache Gesellschaft -JuridicalStatus602=Kollektivgesellschaft -JuridicalStatus603=Kommanditgesellschaft -JuridicalStatus604=Aktiengesellschaft (AG) -JuridicalStatus605=Kommanditaktiengesellschaft -JuridicalStatus606=Gesellschaft mit beschränkter Haftung (GmbH) -JuridicalStatus607=Genossenschaft -JuridicalStatus608=Verein -JuridicalStatus609=Stiftung \ No newline at end of file diff --git a/htdocs/langs/de_CH/main.lang b/htdocs/langs/de_CH/main.lang index adbf494c99e..6a5173b676f 100644 --- a/htdocs/langs/de_CH/main.lang +++ b/htdocs/langs/de_CH/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=dd/MM/yyyy FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/MM/yy FormatDateShortJQueryInput=dd/MM/yy +FormatHourShortJQuery=HH:MI FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y @@ -17,4 +18,4 @@ FormatDateText=%d %B %Y FormatDateHourShort=%d/%m/%Y %H:%M FormatDateHourSecShort=%d/%m/%Y %H:%M:%S FormatDateHourTextShort=%d %b %Y %H:%M -FormatDateHourText=%d %B %Y %H:%M \ No newline at end of file +FormatDateHourText=%d %B %Y %H:%M diff --git a/htdocs/langs/de_DE/admin.lang b/htdocs/langs/de_DE/admin.lang index 68f2ac30cb8..45611a61a57 100644 --- a/htdocs/langs/de_DE/admin.lang +++ b/htdocs/langs/de_DE/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimentell VersionDevelopment=Entwicklung VersionUnknown=Unbekannt VersionRecommanded=Empfohlene +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Sitzungs ID SessionSaveHandler=Handler für Sitzungsspeicherung SessionSavePath=Pfad für Sitzungsdatenspeicherung @@ -493,10 +498,16 @@ Module600Name=Benachrichtigungen Module600Desc=Senden Sie Benachrichtigungen zu einigen Dolibarr-Events per E-Mail an Partner (wird pro Partner definiert) Module700Name=Spenden Module700Desc=Spendenverwaltung +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis-Integation Module1400Name=Buchhaltung Module1400Desc=Buchhaltung für Experten (doppelte Buchhaltung) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Kategorien Module1780Desc=Kategorienverwaltung (Produkte, Lieferanten und Kunden) Module2000Name=FCKeditor @@ -631,7 +642,7 @@ Permission181=Lieferantenbestellungen einsehen Permission182=Lieferantenbestellungen erstellen/bearbeiten Permission183=Lieferantenbestellungen freigeben Permission184=Lieferantenbestellungen bestätigen -Permission185=Lieferantenbestellungen übermitteln +Permission185=Order or cancel supplier orders Permission186=Lieferantenbestellungen empfangen Permission187=Lieferantenbestellungen schließen Permission188=Lieferantenbestellungen verwerfen @@ -711,6 +722,13 @@ Permission538=Leistungen exportieren Permission701=Spenden einsehen Permission702=Spenden erstellen/bearbeiten Permission703=Spenden löschen +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Warenbestände einsehen Permission1002=Warenlager erstellen/ändern Permission1003=Warenlager löschen @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Kennwort ein, um den Proxy-Server verwenden DefineHereComplementaryAttributes=Definieren Sie hier allen Attributen, nicht bereits standardmäßig vorhanden, und dass Sie für %s unterstützt werden. ExtraFields=Ergänzende Attribute ExtraFieldsLines=Ergänzende Attribute (Zeilen) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Ergänzende Attribute (Partner) ExtraFieldsContacts=Ergänzende Attribute (Kontakt) ExtraFieldsMember=Ergänzende Attribute (Mitglied) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Produkt-/Servicezeilen mit Nullmenge zulässig FreeLegalTextOnProposal=Freier Rechtstext für Angebote WatermarkOnDraftProposal=Wasserzeichen auf Angebotsentwürfen (keins, falls leer) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Bestellverwaltungseinstellungen OrdersNumberingModules=Bestellnumerierungs-Module @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barcode vom Typ UPC BarcodeDescISBN=Barcode vom Typ ISBN BarcodeDescC39=Barcode vom Typ C39 BarcodeDescC128=Barcode vom Typ C128 -GenbarcodeLocation=Kommandozeilen-Tool zur Barcode-Generierung (von phpbarcode-Engine verwendet) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=interne Engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Standardpartner für Kassenverkäufe CashDeskBankAccountForSell=Standard-Bargeldkonto für Kassenverkäufe (erforderlich) CashDeskBankAccountForCheque= Finanzkonto für Scheckeinlösungen CashDeskBankAccountForCB= Finanzkonto für die Einlösung von Bargeldzahlungen via Kreditkarte -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Lager für Entnahmen festlegen und und erzwingen StockDecreaseForPointOfSaleDisabled=Verringerung des Lagerbastandes durch Point of Sale deaktivert +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Lesezeichenmoduleinstellungen @@ -1569,3 +1597,7 @@ SortOrder=Sortierreihenfolge Format=Format TypePaymentDesc=0:Kunden-Zahlungs-Typ, 1:Lieferanten-Zahlungs-Typ, 2:Sowohl Kunden- als auch Lieferanten-Zahlungs-Typ IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/de_DE/banks.lang b/htdocs/langs/de_DE/banks.lang index 262f9f52281..b70c2cecc29 100644 --- a/htdocs/langs/de_DE/banks.lang +++ b/htdocs/langs/de_DE/banks.lang @@ -33,7 +33,11 @@ AllTime=Vom start Reconciliation=Zahlungsabgleich RIB=Kontonummer IBAN=IBAN +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC / SWIFT Code +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Daueraufträge StandingOrder=Dauerauftrag Withdrawals=Entnahmen @@ -148,7 +152,7 @@ BackToAccount=Zurück zum Konto ShowAllAccounts=Alle Finanzkonten FutureTransaction=Zukünftige Transaktionen. SelectChequeTransactionAndGenerate=Schecks auswählen/filtern um Sie in den Einzahlungsbeleg zu integrieren und auf "Erstellen" klicken. -InputReceiptNumber=Wählen Sie den zugehörigen Buchungssatz zum Konsolidieren. Verwenden Sie einen numerischen Ausdruck (z.B. YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Wenn möglich Kategorie angeben, worin die Daten eingeordnet werden ToConciliate=Konsolidieren? ThenCheckLinesAndConciliate=Dann die Zeilen im Bankauszug prüfen und Klicken diff --git a/htdocs/langs/de_DE/commercial.lang b/htdocs/langs/de_DE/commercial.lang index 955f35f8118..5805c602b95 100644 --- a/htdocs/langs/de_DE/commercial.lang +++ b/htdocs/langs/de_DE/commercial.lang @@ -9,8 +9,8 @@ Prospect=Lead Prospects=Leads DeleteAction=Maßnahme / Aufgabe löschen NewAction=Neue Maßnahme / Aufgabe -AddAction=Maßnahme / Aufgabe hinzufügen -AddAnAction=Hinzufügen einer Maßnahme / Aufgabe +AddAction=Maßnahme/Aufgabe erstellen +AddAnAction=Maßnahme/Aufgabe erstellen AddActionRendezVous=Treffen anlegen Rendez-Vous=Treffen ConfirmDeleteAction=Möchten Sie diese Aufgabe wirklich löschen? @@ -62,7 +62,7 @@ LastProspectContactDone=Kontaktaufnahme erledigt DateActionPlanned=Geplantes Erledigungsdatum DateActionDone=Echtes Erledigungsdatum ActionAskedBy=Maßnahme erbeten von -ActionAffectedTo=Maßnahme gehört +ActionAffectedTo=Event assigned to ActionDoneBy=Maßnahme erledigt von ActionUserAsk=Aufgenommen durch ErrorStatusCantBeZeroIfStarted=Ist das Feld 'Echtes Erledigungsdatum' ausgefüllt, so wurde die Aktion bereits gestartet (oder beendet) und der 'Status' kann nicht 0%% sein. diff --git a/htdocs/langs/de_DE/contracts.lang b/htdocs/langs/de_DE/contracts.lang index 0027d817391..9cb31dac046 100644 --- a/htdocs/langs/de_DE/contracts.lang +++ b/htdocs/langs/de_DE/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Abgelaufen ServiceStatusClosed=Geschlossen ServicesLegend=Services Legende Contracts=Verträge +ContractsAndLine=Contracts and line of contracts Contract=Vertrag NoContracts=Keine Verträge MenuServices=Services diff --git a/htdocs/langs/de_DE/cron.lang b/htdocs/langs/de_DE/cron.lang index 2f20a1b93ad..77060539e1b 100644 --- a/htdocs/langs/de_DE/cron.lang +++ b/htdocs/langs/de_DE/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell-Befehl CronMenu=Cron CronCannotLoadClass=Kann Klasse %s oder Object %s nicht laden UseMenuModuleToolsToAddCronJobs=Rufe Menu "Home - Modules tools - Job Liste" auf um geplante Aufgaben zu sehen und zu verändern. +TaskDisabled=Task disabled diff --git a/htdocs/langs/de_DE/errors.lang b/htdocs/langs/de_DE/errors.lang index 09a01fc63e9..a78fe0da64a 100644 --- a/htdocs/langs/de_DE/errors.lang +++ b/htdocs/langs/de_DE/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Quell- und Zielbankkonto müssen unterschiedlich ErrorBadThirdPartyName=Der für den Partner eingegebene Name ist ungültig. ErrorProdIdIsMandatory=Die %s ist zwingend notwendig ErrorBadCustomerCodeSyntax=Die eingegebene Kundennummer ist unzulässig. -ErrorBadBarCodeSyntax=Falsche Syntax für Barcode +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Kunden Nr. erforderlich ErrorBarCodeRequired=Barcode erforderlich ErrorCustomerCodeAlreadyUsed=Diese Kunden-Nr. ist bereits vergeben. @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Diese Funktion erfordert aktiviertes JavaScript. Ak ErrorPasswordsMustMatch=Die eingegebenen Passwörter müssen identisch sein. ErrorContactEMail=Ein technischer Fehler ist aufgetreten. Bitte kontaktieren Sie Ihren Administrator unter der folgenden E-Mail-Adresse %s und fügen Sie den Fehlercode %s in Ihrer Nachricht ein, oder (noch besser) fügen Sie einen Screenshot dieser Seite als Anhang bei. ErrorWrongValueForField=Falscher Wert für Feld Nr. %s (Wert '%s' passt nicht zur Regex-Regel %s) -ErrorFieldValueNotIn=Nicht korrekter Wert für das Feld-Nummer %s (Wert: '%s' ist kein verfügbarer Wert im Feld %s der Tabelle %s +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Falscher Wert für Feldnummer %s (für den Wert '%s' besteht keine %s Referenz) ErrorsOnXLines=Fehler in %s Quellzeilen ErrorFileIsInfectedWithAVirus=Der Virenschutz konnte diese Datei nicht freigeben (eventuell ist diese mit einem Virus infiziert) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Interner Fehler '%s' ErrorPriceExpressionUnknown=Unbekannter Fehler '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Zwingend notwendige Parameter sind noch nicht definiert diff --git a/htdocs/langs/de_DE/install.lang b/htdocs/langs/de_DE/install.lang index b1f421536af..323979fb31f 100644 --- a/htdocs/langs/de_DE/install.lang +++ b/htdocs/langs/de_DE/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Letzter Schritt: Legen Sie Ihr Logo und das Passwo ActivateModule=Aktivieren von Modul %s ShowEditTechnicalParameters=Hier klicken um erweiterte Funktionen zu zeigen/bearbeiten (Expertenmodus) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/de_DE/main.lang b/htdocs/langs/de_DE/main.lang index c8256ebde92..3f51e500253 100644 --- a/htdocs/langs/de_DE/main.lang +++ b/htdocs/langs/de_DE/main.lang @@ -141,6 +141,7 @@ Cancel=Abbrechen Modify=Ändern Edit=Bearbeiten Validate=Freigeben +ValidateAndApprove=Validate and Approve ToValidate=Freizugeben Save=Speichern SaveAs=Speichern unter @@ -158,6 +159,7 @@ Search=Suchen SearchOf=Suche nach Valid=Gültig Approve=Genehmigen +Disapprove=Disapprove ReOpen=Wiedereröffnen Upload=Datei laden ToLink=Link @@ -219,6 +221,7 @@ Cards=Karten Card=Karte Now=Jetzt Date=Datum +DateAndHour=Date and hour DateStart=Beginndatum DateEnd=Enddatum DateCreation=Erstellungsdatum @@ -295,6 +298,7 @@ UnitPriceHT=Stückpreis (netto) UnitPriceTTC=Stückpreis (brutto) PriceU=VP PriceUHT=VP (netto) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=VP (brutto) Amount=Betrag AmountInvoice=Rechnungsbetrag @@ -521,6 +525,7 @@ DateFromTo=Von %s bis %s DateFrom=Von %s DateUntil=Bis %s Check=Prüfen +Uncheck=Uncheck Internal=Intern External=Extern Internals=Interne @@ -688,6 +693,7 @@ PublicUrl=Öffentliche URL AddBox=Box zufügen SelectElementAndClickRefresh=Wählen Sie ein Element und clicken Sie Aktualisieren PrintFile=Drucke Datei %s +ShowTransaction=Show transaction # Week day Monday=Montag Tuesday=Dienstag diff --git a/htdocs/langs/de_DE/orders.lang b/htdocs/langs/de_DE/orders.lang index 18c9300a562..afddbf7e1b7 100644 --- a/htdocs/langs/de_DE/orders.lang +++ b/htdocs/langs/de_DE/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Storniert StatusOrderDraft=Entwurf (freizugeben) StatusOrderValidated=Freigegeben StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Bearbeitet StatusOrderToBill=Zu verrechnen StatusOrderToBill2=Zu verrechnen @@ -58,6 +59,7 @@ MenuOrdersToBill=Bestellverrechnung MenuOrdersToBill2=Billable orders SearchOrder=Suche Bestellung SearchACustomerOrder=Kundenauftrag suchen +SearchASupplierOrder=Search a supplier order ShipProduct=Produkt versenden Discount=Rabatt CreateOrder=Erzeuge Bestellung diff --git a/htdocs/langs/de_DE/other.lang b/htdocs/langs/de_DE/other.lang index 99ba2d2cf4c..4b2f4a52bea 100644 --- a/htdocs/langs/de_DE/other.lang +++ b/htdocs/langs/de_DE/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximalgröße AttachANewFile=Neue Datei/Dokument anhängen LinkedObject=Verknüpftes Objekt Miscellaneous=Verschiedenes -NbOfActiveNotifications=Anzahl aktiver Benachrichtigungen +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Dies ist ein Test-Mail.\n Die beiden Zeilen sind durch eine Zeilenschaltung getrennt. PredefinedMailTestHtml=Dies ist ein (HTML)-Test Mail (das Wort Test muss in Fettschrift erscheinen).
Die beiden Zeilen sollteb durch eine Zeilenschaltung getrennt sein. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__ \n\n Anbei erhalten Sie die Rechnung __FACREF__ \n\n__PERSONALIZED__Mit freundlichen Grüßen\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__ \n\n Bedauerlicherweise scheint die Rechnung __FACREF__ bislang unbeglichen. Als Erinnerung übersenden wir Ihnen diese nochmals im Anhang.\n\n__PERSONALIZED__Mit freundlichen Grüßen\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__ \n\n Bitte entnehmen Sie dem Anhang unser Angebot __PROPREF__ \n\n__PERSONALIZED__Mit freundlichen Grüßen\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__ \n\n Bitte entnehmen Sie dem Anhang die Bestellung __ORDERREF__ \n\n__PERSONALIZED__Mit freundlichen Grüßen\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__ \n\n Bitte entnehmen Sie dem Anhang die Bestellung __ORDERREF__ \n\n__PERSONALIZED__Mit freundlichen Grüßen\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__ \n\n Anbei erhalten Sie die Rechnung __ FACREF__ \n\n__PERSONALIZED__Mit freundlichen Grüßen\n\n__SIGNATURE__ diff --git a/htdocs/langs/de_DE/productbatch.lang b/htdocs/langs/de_DE/productbatch.lang index 3e196897569..4ec2f570e7c 100644 --- a/htdocs/langs/de_DE/productbatch.lang +++ b/htdocs/langs/de_DE/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Charge/Seriennr l_eatby=Verzehren-bis-Datum l_sellby=Verkaufen-bis-Datum DetailBatchNumber=Chargen-/Seriennummern-Details -DetailBatchFormat=Charge/Seriennr: %s - E: %s - S: %s (Menge: %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Charge: %s printEatby=Verzehren bis: %s printSellby=Verkaufen bis: %s diff --git a/htdocs/langs/de_DE/products.lang b/htdocs/langs/de_DE/products.lang index 91044e017bb..8816eff2614 100644 --- a/htdocs/langs/de_DE/products.lang +++ b/htdocs/langs/de_DE/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Nummer +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/de_DE/projects.lang b/htdocs/langs/de_DE/projects.lang index b11cd6db0c4..fbbc111f0f7 100644 --- a/htdocs/langs/de_DE/projects.lang +++ b/htdocs/langs/de_DE/projects.lang @@ -8,8 +8,10 @@ SharedProject=Jeder PrivateProject=Kontakte zum Projekt MyProjectsDesc=Hier können Sie nur die Projekte einsehen, bei welchen Sie als Kontakt hinzugefügt sind. ProjectsPublicDesc=Ihnen werden alle Projekte angezeigt bei welchen Sie über Leserechte verfügen. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Es werden alle Projekte angezeigt (Ihre Benutzerberechtigungen berechtigt Sie alles zu sehen). MyTasksDesc=Diese Ansicht ist für Sie beschränkt auf Projekte oder Aufgaben bei welchen Sie als Ansprechpartner eingetragen sind. +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Diese Ansicht ist beschränkt auf Projekt und Aufgaben bei welchen Sie über Leserechte verfügen. TasksDesc=Diese Ansicht zeigt alle Projekte und Aufgaben (Ihre Benutzerberechtigungen berechtigt Sie alles zu sehen). ProjectsArea=Projektübersicht @@ -29,6 +31,8 @@ NoProject=Kein Projekt definiert oder keine Rechte NbOpenTasks=Anzahl der offenen Aufgaben NbOfProjects=Anzahl der Projekte TimeSpent=Zeitaufwand +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Zeitaufwände RefTask=Aufgaben-Nr. LabelTask=Aufgabenbezeichnung @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Liste der mit diesem Projekt verbundenen Lie ListSupplierInvoicesAssociatedProject=Liste der mit diesem Projekt verbundenen Lieferantenrechnungen ListContractAssociatedProject=Liste der mit diesem Projekt verbundenen Verträge ListFichinterAssociatedProject=Liste der mit diesem Projekt verknüpften Services -ListTripAssociatedProject=Liste der mit diesem Projekt verknüpften Reisekosten +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Liste der mit diesem Projekt verknüpften Maßnahmen ActivityOnProjectThisWeek=Projektaktivitäten dieser Woche ActivityOnProjectThisMonth=Projektaktivitäten dieses Monats @@ -133,3 +137,6 @@ SearchAProject=Suchen Sie ein Projekt ProjectMustBeValidatedFirst=Projekt muss erst bestätigt werden ProjectDraft=Projekt-Entwürfe FirstAddRessourceToAllocateTime=Eine Ressource zuordnen, um Zeit festzulegen +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/de_DE/salaries.lang b/htdocs/langs/de_DE/salaries.lang index b1477807c4e..5e72aae4e86 100644 --- a/htdocs/langs/de_DE/salaries.lang +++ b/htdocs/langs/de_DE/salaries.lang @@ -10,3 +10,4 @@ SalariesPayments=Lohnzahlungen ShowSalaryPayment=Zeige Lohnzahlung THM=Durchschnittlicher Stundenpreis TJM=Durchschnittlicher Tagespreis +CurrentSalary=Current salary diff --git a/htdocs/langs/de_DE/sendings.lang b/htdocs/langs/de_DE/sendings.lang index cfb2af7ca1a..93da292748d 100644 --- a/htdocs/langs/de_DE/sendings.lang +++ b/htdocs/langs/de_DE/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Bestellmenge QtyShipped=Liefermenge QtyToShip=Versandmenge QtyReceived=Erhaltene Menge -KeepToShip=Für Versand behalten +KeepToShip=Remain to ship OtherSendingsForSameOrder=Weitere Sendungen zu dieser Bestellung DateSending=Datum des Versands DateSendingShort=Versanddatum diff --git a/htdocs/langs/de_DE/stocks.lang b/htdocs/langs/de_DE/stocks.lang index 69b59baded0..d560920f048 100644 --- a/htdocs/langs/de_DE/stocks.lang +++ b/htdocs/langs/de_DE/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Gewichteter Warenwert PMPValueShort=DSWP EnhancedValueOfWarehouses=Lagerwert UserWarehouseAutoCreate=Beim Anlegen eines Benutzers automatisch neues Warenlager erstellen +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Menge QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=Das Lager %s wird für Entnahme verwendet WarehouseForStockIncrease=Das Lager %s wird für Wareneingang verwendet ForThisWarehouse=Für dieses Lager ReplenishmentStatusDesc=Dies ist eine Liste aller Produkte, deren Lagerbestand unter dem Sollbestand liegt (bzw. unter der Alarmschwelle, wenn die Auswahlbox "Nur Alarm" gewählt ist) , die Ihnen Vorschläge für Lieferantenbestellungen liefert, um die Differenzen auszugleichen. -ReplenishmentOrdersDesc=Dies ist die Liste aller offenen Lieferantenbestellungen +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Nachschub NbOfProductBeforePeriod=Menge des Produkts %s im Lager vor der gewählten Periode (< %s) NbOfProductAfterPeriod=Menge des Produkts %s im Lager nach der gewählten Periode (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/de_DE/suppliers.lang b/htdocs/langs/de_DE/suppliers.lang index 4dcff3f39f8..58f83d6a3d5 100644 --- a/htdocs/langs/de_DE/suppliers.lang +++ b/htdocs/langs/de_DE/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Lieferanten -Supplier=Lieferant AddSupplier=Lieferant anlegen SupplierRemoved=Lieferant entfernt SuppliersInvoice=Lieferantenrechnung @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Lieferantenrechnungen und Zahlungen ExportDataset_fournisseur_3=Lieferantenbestellungen und Auftragszeilen ApproveThisOrder=Bestellung bestätigen ConfirmApproveThisOrder=Möchten Sie diese Bestellung wirklich bestätigen %s ? -DenyingThisOrder=Bestellung ablehnen +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Möchten Sie diese Bestellung wirklich ablehnen %s ? ConfirmCancelThisOrder=Möchten Sie diese Bestellung wirklich verwerfen %s ? AddCustomerOrder=Erzeuge Kundenbestellung diff --git a/htdocs/langs/de_DE/trips.lang b/htdocs/langs/de_DE/trips.lang index a4dabc3ce01..2ea6735cd00 100644 --- a/htdocs/langs/de_DE/trips.lang +++ b/htdocs/langs/de_DE/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Reise -Trips=Reisen -TripsAndExpenses=Reise- und Fahrtspesen -TripsAndExpensesStatistics=Reise- und Spesenstatistiken -TripCard=Reise-Karte -AddTrip=Reise hinzufügen -ListOfTrips=Liste der Reisen +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Liste der Spesen -NewTrip=Neue Reise +NewTrip=New expense report CompanyVisited=Besuchter Partner Kilometers=Kilometerstand FeesKilometersOrAmout=Kilometergeld oder Spesenbetrag -DeleteTrip=Reise löschen -ConfirmDeleteTrip=Möchten Sie diese Reise wirklich löschen? +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report +ClassifyRefunded=Als 'rückerstattet' markieren +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line TF_OTHER=Andere +TF_TRANSPORTATION=Transportation TF_LUNCH=Essen -TF_TRIP=Reise -ListTripsAndExpenses=Liste der Reisen und Spesen -ExpensesArea=Spesenübersicht -SearchATripAndExpense=Suchen nach einer Reise oder Aufwänden -ClassifyRefunded=Classify 'Refunded' +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/el_GR/admin.lang b/htdocs/langs/el_GR/admin.lang index f706cfa457c..d8f7036b628 100644 --- a/htdocs/langs/el_GR/admin.lang +++ b/htdocs/langs/el_GR/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Πειραματική VersionDevelopment=Υπό ανάπτυξη VersionUnknown=Άγνωστη VersionRecommanded=Προτεινόμενη +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=ID Συνόδου SessionSaveHandler=Φορέας χειρισμού αποθήκευσης συνεδριών SessionSavePath=Αποθήκευση τοπικής προσαρμογής συνεδρίας @@ -128,8 +133,8 @@ PHPServerOffsetWithGreenwich=PHP server offset width Greenwich (seconds) ClientOffsetWithGreenwich=Client/Browser offset width Greenwich (seconds) DaylingSavingTime=Η θερινή ώρα (χρήστη) CurrentHour=PHP server hour -CompanyTZ=Time Zone company (main company) -CompanyHour=Hour company (main company) +CompanyTZ=Ζώνη ώρας εταιρείας (κύρια εταιρεία) +CompanyHour=Ώρα εταιρείας (κύρια εταιρεία) CurrentSessionTimeOut=Χρονικό όριο περιόδου λειτουργίας τρέχουσας συνοδού YouCanEditPHPTZ=Για να ορίσετε μια διαφορετική ζώνη ώρας της PHP (δεν απαιτείται), μπορείτε να δοκιμάσετε να προσθέσετε ένα αρχείο .htacces με μια γραμμή σαν αυτό "TZ setenv Europe / Paris" OSEnv=Περιβάλλον OS @@ -201,186 +206,186 @@ No=Όχι AutoDetectLang=Αυτόματη Ανίχνευση (γλώσσα φυλλομετρητή) FeatureDisabledInDemo=Δυνατότητα απενεργοποίησης στο demo Rights=Δικαιώματα -BoxesDesc=Boxes are screen area that show a piece of information on some pages. You can choose between showing the box or not by selecting target page and clicking 'Activate', or by clicking the dustbin to disable it. -OnlyActiveElementsAreShown=Only elements from enabled modules are shown. -ModulesDesc=Dolibarr modules define which functionality is enabled in software. Some modules require permissions you must grant to users, after enabling module. Click on button on/off in column "Status" to enable a module/feature. -ModulesInterfaceDesc=The Dolibarr modules interface allows you to add features depending on external software, systems or services. -ModulesSpecialDesc=Special modules are very specific or seldom used modules. -ModulesJobDesc=Business modules provide simple predefined setup of Dolibarr for a particular business. -ModulesMarketPlaceDesc=You can find more modules to download on external web sites on the Internet... +BoxesDesc=Τα κουτιά είναι κομμάτια της επιφάνειας εργασίας που δείχνουν πληροφορίες σε κάποιες σελίδες. Μπορείτε να επιλέξετε ανάμεσα στην εμφάνιση του κουτιού ή όχι, απλά επιλέγοντας την σελίδα στόχο και κάνοντας κλικ στο 'Ενεργοποίηση', ή κάνοντας κλικ στο εικονίδιο κάδου για να το απενεργοποιήσετε. +OnlyActiveElementsAreShown=Μόνο στοιχεία από ενεργοποιημένα modules προβάλλονται. +ModulesDesc=Τα modules του Dolibarr ελέγχουν ποιες λειτουργίες είναι ενεργοποιημένες στο λογισμικό. Κάποια modules απαιτούν δικαιώματα που πρέπει να παρέχετε στους χρήστες, μετά την ενεργοποίηση του module. Κάντε κλικ στο κουμπί on/off στην στήλη "Κατάσταση" για να ενεργοποίησετε ένα module ή μια λειτουργία. +ModulesInterfaceDesc=Η διεπαφή των modules του Dolibarr σας επιτρέπει να προσθέσετε λειτουργίες που στηρίζονται σε εξωτερικό λογισμικό, συστήματα ή υπηρεσίες. +ModulesSpecialDesc=Τα ειδικά modules είναι για πολύ συγκεκριμένες ή σπάνιες χρήσεις. +ModulesJobDesc=Τα Business modules παρέχουν απλές προρυθμισμένες εγκαταστάσεις του Dolibarr για συγκεκριμένους τύπους επιχειρήσεων. +ModulesMarketPlaceDesc=Μπορείτε να βρείτε περισσότερα modules για να κατεβάσετε σε εξωτερικά web sites στο Internet... ModulesMarketPlaces=Περισσότερα Αρθρώματα... -DoliStoreDesc=DoliStore, the official market place for Dolibarr ERP/CRM external modules +DoliStoreDesc=Το DoliStore, είναι η επίσημη περιοχή για να βρείτε εξωτερικά modules για το Dolibarr ERP/CRM DoliPartnersDesc=Λίστα με ορισμένες εταιρείες που μπορούν να προσφέρουν έρευνα/ανάπτυξη κατά παραγγελία modules ή χαρακτηριστικά (Σημείωση: κάθε εταιρεία Open Source που γνωρίζει γλώσσα PHP μπορεί να σας δώσει συγκεκριμένη ανάπτυξη) -WebSiteDesc=Web site providers you can search to find more modules... -URL=Ιστοσελίδα +WebSiteDesc=Ιστοσελίδες στις οποίες μπορείτε να βρείτε περισσότερα modules... +URL=Σύνδεσμος BoxesAvailable=Διαθέσιμα Πλαίσια BoxesActivated=Ενεργά Πλαίσια -ActivateOn=Activate on -ActiveOn=Activated on +ActivateOn=Ενεργοποιήστε στις +ActiveOn=Ενεργοποιήθηκε στις SourceFile=Πηγαίο αρχείο -AutomaticIfJavascriptDisabled=Automatic if Javascript is disabled -AvailableOnlyIfJavascriptNotDisabled=Available only if JavaScript is not disabled -AvailableOnlyIfJavascriptAndAjaxNotDisabled=Available only if JavaScript is not disabled +AutomaticIfJavascriptDisabled=Αυτόματα αν είναι απενεργοποιημένο το Javascript +AvailableOnlyIfJavascriptNotDisabled=Διαθέσιμο μόνο αν το JavaScript δεν είναι απενεργοποιημένο +AvailableOnlyIfJavascriptAndAjaxNotDisabled=Διαθέσιμο μόνο αν το JavaScript δεν είναι απενεργοποιημένο Required=Υποχρεωτικό UsedOnlyWithTypeOption=Χρησιμοποιείται μόνο από κάποια επιλογή της ατζέντας Security=Ασφάλεια Passwords=Συνθηματικά -DoNotStoreClearPassword=Do no store clear passwords in database but store only encrypted value (Activated recommended) -MainDbPasswordFileConfEncrypted=Database password encrypted in conf.php (Activated recommended) -InstrucToEncodePass=To have password encoded into the conf.php file, replace the line
$dolibarr_main_db_pass="..."
by
$dolibarr_main_db_pass="crypted:%s" -InstrucToClearPass=To have password decoded (clear) into the conf.php file, replace the line
$dolibarr_main_db_pass="crypted:..."
by
$dolibarr_main_db_pass="%s" -ProtectAndEncryptPdfFiles=Protection of generated pdf files (Activated NOT recommended, breaks mass pdf generation) -ProtectAndEncryptPdfFilesDesc=Protection of a PDF document keeps it available to read and print with any PDF browser. However, editing and copying is not possible anymore. Note that using this feature make building of a global cumulated pdf not working (like unpaid invoices). +DoNotStoreClearPassword=Μην αποθηκεύετε αποκρυπτογραφημένους κωδικούς στην βάση δεδομένων, αλλά να αποθηκεύετε μόνο η κρυπτογραφημένη τιμή (προτείνεται να είναι ενεργό) +MainDbPasswordFileConfEncrypted=Ο κωδικός της βάσης δεδομένων να είναι κρυπτογραφημένος στο conf.php (προτείνεται να είναι ενεργό) +InstrucToEncodePass=Για να κρυπτογραφήσετε τον κωδικό στο αρχείο conf.php, αντικαταστήστε την γραμμή
$dolibarr_main_db_pass="..."
με το
$dolibarr_main_db_pass="crypted:%s" +InstrucToClearPass=Για να αφήσετε τον κωδικό χωρίς κρυπτογράφηση στο αρχείο conf.php , αντικαταστήστε τη γραμμή
$dolibarr_main_db_pass="crypted:..."
με το
$dolibarr_main_db_pass="%s" +ProtectAndEncryptPdfFiles=Προστασία παραγόμενων αρχείων pdf (Η ενεργοποίηση ΔΕΝ προτείνεται, χαλάει την μαζική δημιουργία pdf) +ProtectAndEncryptPdfFilesDesc=Η ασφάλεια ενός αρχείου PDF επιτρέπει τα προγράμματα ανάγνωσης PDF να το ανοίξουν και να το εκτυπώσουν. Παρ' ΄όλα αυτά, η τροποποίηση και η αντιγραφή δεν θα είναι πλέον δυνατά. Σημειώστε πως αν χρησιμοποιήσετε αυτή την λειτουργία δεν θα μπορούν να δουλέψουν ομαδικά pdf (όπως απλήρωτα τιμολόγια). Feature=Δυνατότητα DolibarrLicense=Άδεια χρήσης DolibarrProjectLeader=Αρχηγός Έργου -Developpers=Developers/contributors -OtherDeveloppers=Other developers/contributors -OfficialWebSite=Dolibarr international official web site -OfficialWebSiteFr=French official web site -OfficialWiki=Dolibarr documentation on Wiki -OfficialDemo=Dolibarr online demo -OfficialMarketPlace=Official market place for external modules/addons +Developpers=Προγραμματιστές/συνεργάτες +OtherDeveloppers=Άλλοι προγραμματιστές/συνεργάτες +OfficialWebSite=Επίσημη ιστοσελίδα Dolibarr international +OfficialWebSiteFr=Επίσημη Γαλλική ιστοσελίδα +OfficialWiki=Τεκμηρίωση Dolibarr στο Wiki +OfficialDemo=Δοκιμαστική έκδοση Dolibarr +OfficialMarketPlace=Επίσημη ιστοσελίδα για εξωτερικά modules/πρόσθετα OfficialWebHostingService=Υπηρεσίες που αναφέρονται για web hosting (Cloud hosting) ReferencedPreferredPartners=Preferred Partners OtherResources=Άλλοι πόροι -ForDocumentationSeeWiki=For user or developer documentation (Doc, FAQs...),
take a look at the Dolibarr Wiki:
%s -ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:
%s -HelpCenterDesc1=This area can help you to get a Help support service on Dolibarr. -HelpCenterDesc2=Some part of this service are available in english only. -CurrentTopMenuHandler=Current top menu handler -CurrentLeftMenuHandler=Current left menu handler -CurrentMenuHandler=Current menu handler -CurrentSmartphoneMenuHandler=Current smartphone menu handler +ForDocumentationSeeWiki=Για την τεκμηρίωση χρήστη ή προγραμματιστή (Doc, FAQs...),
ρίξτε μια ματιά στο Dolibarr Wiki:
%s +ForAnswersSeeForum=Για οποιαδήποτε άλλη ερώτηση/βοήθεια, μπορείτε να χρησιμοποιήσετε το forum του Dolibarr:
%s +HelpCenterDesc1=Αυτή η περιοχή μπορεί να σας βοηθήσει να αποκτήσετε υπηρεσίες βοήθειας στο Dolibarr. +HelpCenterDesc2=Κάποια κομμάτια αυτής της υπηρεσίας είναι διαθέσιμα μόνο στα αγγλικά. +CurrentTopMenuHandler=Τωρινός διαμορφωτής πάνω μενού +CurrentLeftMenuHandler=Τωρινός διαμορφωτής αριστερού μενού +CurrentMenuHandler=Τωρινός διαμορφωτής μενού +CurrentSmartphoneMenuHandler=Τωρινός διαμορφωτής μενού για κινητές συσκευές MeasuringUnit=Μονάδα μέτρησης Emails=E-mails EMailsSetup=Διαχείριση E-mails -EMailsDesc=This page allows you to overwrite your PHP parameters for e-mails sending. In most cases on Unix/Linux OS, your PHP setup is correct and these parameters are useless. -MAIN_MAIL_SMTP_PORT=SMTP/SMTPS Port (By default in php.ini: %s) -MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (By default in php.ini: %s) -MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix like systems) -MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix like systems) -MAIN_MAIL_EMAIL_FROM=Sender e-mail for automatic emails (By default in php.ini: %s) -MAIN_MAIL_ERRORS_TO=E-mail αποστολέα που χρησιμοποιούνται για την επιστροφή λάθος μηνύματα που στέλνονται -MAIN_MAIL_AUTOCOPY_TO= Send systematically a hidden carbon-copy of all sent emails to +EMailsDesc=Αυτή η σελίδα σας επιτρέπει να αλλάξετε τις παραμέτρους PHP για την αποστολή email. Στις περισσότερες περιπτώσεις σε λειτουργικά συστήματα Unix/Linux, η διαμόρφωση της PHP σας είναι σωστή και αυτές οι παράμετροι είναι άχρηστες. +MAIN_MAIL_SMTP_PORT=Θύρα SMTP/SMTPS (Προεπιλογή στο php.ini: %s) +MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (Προεπιλογή στο php.ini: %s) +MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=Θύρα SMTP/SMTPS (Δεν καθορίζεταιστην PHP σε συστήματα Unix) +MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Δεν καθορίζεταιστην PHP σε συστήματα Unix) +MAIN_MAIL_EMAIL_FROM=E-mail αποστολέα για αυτόματα e-mails (Προεπιλογή στο php.ini: %s) +MAIN_MAIL_ERRORS_TO=E-mail αποστολέα που χρησιμοποιούνται για την επιστροφή λάθος μηνυμάτων που στέλνονται +MAIN_MAIL_AUTOCOPY_TO= Να αποστέλονται κρυφά αντίγραφα των απεσταλμένων emails στο MAIN_MAIL_AUTOCOPY_PROPOSAL_TO= Αποστολή συστηματικά ένος κρυφού καρμπόν-αντίγραφου των προσφορών που αποστέλλονται μέσω email στο MAIN_MAIL_AUTOCOPY_ORDER_TO= Αποστολή συστηματικά ενός κρυφού καρμπόν-αντίγραφου των παραγγελιών που αποστέλλονται μέσω email στο MAIN_MAIL_AUTOCOPY_INVOICE_TO= Αποστολή συστηματικά ενός κρυφού καρμπόν-αντίγραφου τιμολογίου που αποστέλλεται μέσω email στο -MAIN_DISABLE_ALL_MAILS=Disable all e-mails sendings (for test purposes or demos) +MAIN_DISABLE_ALL_MAILS=Απενεργοποίηση όλων των αποστολών email (για δοκιμές και δοκιμαστικές εκδόσεις) MAIN_MAIL_SENDMODE=Μέθοδος που χρησιμοποιείτε για αποστολή EMails -MAIN_MAIL_SMTPS_ID=SMTP ID if authentication required -MAIN_MAIL_SMTPS_PW=SMTP Password if authentication required -MAIN_MAIL_EMAIL_TLS= Use TLS (SSL) encrypt -MAIN_DISABLE_ALL_SMS=Απενεργοποίηση όλων σας αποστολές SMS (για λόγους δοκιμής ή demos) -MAIN_SMS_SENDMODE=Μέθοδος να χρησιμοποιήσετε για την αποστολή SMS -MAIN_MAIL_SMS_FROM=Προεπιλογή αριθμού τηλεφώνου αποστολέα για την αποστολή SMS -FeatureNotAvailableOnLinux=Feature not available on Unix like systems. Test your sendmail program locally. -SubmitTranslation=If translation for this language is not complete or you find errors, you can correct this by editing files into directory langs/%s and submit modified files on www.dolibarr.org forum. +MAIN_MAIL_SMTPS_ID=SMTP ID αν απαιτείται πιστοποίηση +MAIN_MAIL_SMTPS_PW=Κωδικός SMTP αν απαιτείται πιστοποίηση +MAIN_MAIL_EMAIL_TLS= Χρησιμοποιήστε TLS (SSL) κωδικοποίηση +MAIN_DISABLE_ALL_SMS=Απενεργοποίηση όλων των αποστολών SMS (για λόγους δοκιμής ή demos) +MAIN_SMS_SENDMODE=Μέθοδος που θέλετε να χρησιμοποιηθεί για την αποστολή SMS +MAIN_MAIL_SMS_FROM=Προεπιλεγμένος αριθμός τηλεφώνου αποστολέα για την αποστολή SMS +FeatureNotAvailableOnLinux=Αυτή η λειτουργία δεν είναι διαθέσιμη σε συστήματα Unix like. Δοκιμάστε το πρόγραμμα sendmail τοπικά. +SubmitTranslation=Αν η μετάφραση για αυτή την γλώσσα δεν είναι ολοκληρωμένη λη βρίσκετε λάθη, μπορείτε να τα διορθώσετε με επεξεργασία των αρχείων στο φάκελο langs/%s και να στείλετε τα επεξεργασμένα αρχεία στο forum www.dolibarr.org. ModuleSetup=Διαχείριση Αρθρώματος ModulesSetup=Διαχείριση Αρθρωμάτων ModuleFamilyBase=Σύστημα ModuleFamilyCrm=Customer Relation Management (CRM) ModuleFamilyProducts=Διαχείριση Προϊόντων ModuleFamilyHr=Διαχείριση Ανθρώπινου Δυναμικού -ModuleFamilyProjects=Projects/Collaborative work -ModuleFamilyOther=Other -ModuleFamilyTechnic=Multi-modules tools -ModuleFamilyExperimental=Experimental modules -ModuleFamilyFinancial=Financial Modules (Accounting/Treasury) -ModuleFamilyECM=Electronic Content Management (ECM) -MenuHandlers=Menu handlers +ModuleFamilyProjects=Projects/Συμμετοχικές εργασίες +ModuleFamilyOther=Άλλο +ModuleFamilyTechnic=Εργαλεία πολλαπλών αρθρωμάτων +ModuleFamilyExperimental=Πειραματικά αρθρώματα +ModuleFamilyFinancial=Χρηματοοικονομικά αρθρώματα (Λογιστική/Χρηματοοικονομικά) +ModuleFamilyECM=Διαχείριση Ηλεκτρονικού Περιεχομένου (ECM) +MenuHandlers=Διαχειριστές μενού MenuAdmin=Επεξεργαστής μενού -DoNotUseInProduction=Do not use in production -ThisIsProcessToFollow=This is setup to process: +DoNotUseInProduction=Να μην χρησιμοποιείται για παραγωγή +ThisIsProcessToFollow=Αυτό έχει ρυθμιστεί για να κατεργαστεί: StepNb=Βήμα %s -FindPackageFromWebSite=Find a package that provides feature you want (for example on official web site %s). +FindPackageFromWebSite=Βρείτε ένα πακέτο που να παρέχει την λειτουργία που επιθυμείτε (για παράδειγμα στο επίσημο %s). DownloadPackageFromWebSite=Μεταφόρτωση πακέτου %s. UnpackPackageInDolibarrRoot=Αποσυμπίεσε το αρχείο εκεί που βρίσκεται η εγκατάσταση του Dolibarr %s -SetupIsReadyForUse=Install is finished and Dolibarr is ready to use with this new component. -NotExistsDirect=The alternative root directory is not defined.
-InfDirAlt=Since version 3 it is possible to define an alternative root directory.This allows you to store, same place, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
-InfDirExample=
Then declare it in the file conf.php
$dolibarr_main_url_root_alt='http://myserver/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
*These lines are commented with "#", to uncomment only remove the character. -YouCanSubmitFile=Select module: -CurrentVersion=Dolibarr current version -CallUpdatePage=Go to the page that updates the database structure and datas: %s. +SetupIsReadyForUse=Η εγκατάσταση τελείωσε και το Dolibarr είναι έτοιμο να χρησιμοποιηθεί με αυτό το νέο μέρος. +NotExistsDirect=Ο εναλλακτικός ριζικός φάκελος δεν έχει ρυθμιστεί.
+InfDirAlt=Από την έκδοση 3 είναι δυνατός ο ορισμός ενός εναλλακτικού ριζικού φακέλου. Αυτό σας επιτρέπει να αποθηκεύσετε στο ίδιο μέρος πρόσθετες εφαρμογές και μη τυπικά templates.
Απλά δημιουργήστε ένα φάκελο στο ριζικό φάκελο του Dolibarr (π.χ.: custom).
+InfDirExample=
Κατόπιν δηλώστε το στο αρχείο conf.php
$dolibarr_main_url_root_alt='http://myserver/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
*Αυτές οι γραμμές είναι απενεργοποιημένες με χρήση του χαρακτήρα "#", για να της ενεργοποιήσετε απλά αφαιρέστε το χαρακτήρα. +YouCanSubmitFile=Επιλογή αρθρώματος: +CurrentVersion=Έκδοση Dolibarr +CallUpdatePage=Πηγαίνετε στην σελίδα που ενημερώνει την δομή της βάσης δεδομένων και τα δεδομένα: %s. LastStableVersion=Τελευταία σταθερή έκδοση UpdateServerOffline=Ο διακομιστής ενημερώσεων είναι εκτός σύνδεσης -GenericMaskCodes=You may enter any numbering mask. In this mask, the following tags could 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 previous but an offset corresponding to the number to the right of the + sign is applied starting on first %s.
{000000@x} same as previous but the counter is reset to zero when month x is reached (x between 1 and 12). If this option is used and x is 2 or higher, then 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.
+GenericMaskCodes=Μπορείτε να χρησιμοποιήσετε οποιαδήποτε μάσκα αρίθμησης. Σε αυτή τη μάσκα μπορούν να χρησιμοποιηθούν τις παρακάτω ετικέτες:
Το {000000} αντιστοιχεί σε έναν αριθμό που θα αυξάνεται σε κάθε %s. Εισάγετε όσα μηδεν επιθυμείτε ως το επιθυμητό μέγεθος για τον μετρητή. Ο μετρητής θα συμπληρωθεί με μηδενικά από τα αριστερά για να έχει όσα μηδενικά υπάρχουν στην μάσκα.
Η μάσκα {000000+000} είναι η ίδια όπως προηγουμένως αλλά ένα αντιστάθμισμα που αντιστοιχεί στον αριθμό στα δεξιά του + θα προστεθεί αρχίζοντας από το πρώτο %s.
Η μάσκα {000000@x} είναι η ίδια όπως προηγουμένως αλλά ο μετρητής επανέρχεται στο μηδέν όταν έρθει ο μήνας x (το x είναι μεταξύ του 1 και του 12). Αν αυτή η επιλογή χρησιμοποιηθεί και το x είναι 2 ή μεγαλύτερο, τότε η ακολουθία {yy}{mm} ή {yyyy}{mm} είναι επίσης απαιραίτητη.
Η μάσκα {dd} ημέρα (01 έως 31).
{mm} μήνας (01 έως 12).
{yy}, {yyyy} ή {y} έτος με χρήση 2, 4 ή 1 αριθμού.
GenericMaskCodes2={cccc} ο κωδικός πελάτη σε n χαρακτήρες
{cccc000} ο κωδικός πελάτη σε n χαρακτήρες ακολουθείται από ένα μετρητή αφιερωμένο για τον πελάτη. Αυτός ο μετρητής ειναι αφιερωμένος στον πελάτη μηδενίζεται ταυτόχρονα από την γενικό μετρητή.
{tttt} Ο κωδικός των Πελ./Προμ. σε n χαρακτήρες (βλέπε λεξικό-thirdparty types).
-GenericMaskCodes3=All other characters in the mask will remain intact.
Spaces are not allowed.
+GenericMaskCodes3=Όλοι οι άλλοι χαρακτήρες στην μάσκα θα παραμείνουν ίδιοι.
Κενά διαστήματα δεν επιτρέπονται.
GenericMaskCodes4a=Example on the 99th %s of the third party TheCompany done 2007-01-31:
-GenericMaskCodes4b=Example on third party created on 2007-03-01:
-GenericMaskCodes4c=Example on product created on 2007-03-01:
-GenericMaskCodes5=ABC{yy}{mm}-{000000} will give ABC0701-000099
{0000+100}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX -GenericNumRefModelDesc=Return a customizable number according to a defined mask. -ServerAvailableOnIPOrPort=Server is available at address %s on port %s -ServerNotAvailableOnIPOrPort=Server is not available at address %s on port %s +GenericMaskCodes4b=Το παράδειγμα του τρίτου μέρους δημιουργήθηκε στις 2007-03-01:
+GenericMaskCodes4c=Το παράδειγμα προϊόντος δημιουργήθηκε στις 2007-03-01:
+GenericMaskCodes5=Η μάσκα ABC{yy}{mm}-{000000} θα δώσει ABC0701-000099
Η μάσκα{0000+100}-ZZZ/{dd}/XXX θα δώσει 0199-ZZZ/31/XXX +GenericNumRefModelDesc=Επιστρέφει έναν παραμετροποιήσημο αριθμό σύμφωνα με μία ορισμένη μάσκα. +ServerAvailableOnIPOrPort=Ο διακομιστής είναι διαθέσιμο στην διεύθυνση %s στην θύρα %s +ServerNotAvailableOnIPOrPort=Ο διακομιστής δεν είναι διαθέσιμος στην διεύθυνση %s στην θύρα %s DoTestServerAvailability=Έλεγχος διασύνδεσης server DoTestSend=Δοκιμή Αποστολής DoTestSendHTML=Δοκιμή αποστολής HTML ErrorCantUseRazIfNoYearInMask=Σφάλμα, δεν μπορείτε να χρησιμοποιήσετε την επιλογή @ για να μηδενίσετε το μετρητή για κάθε έτος, εάν η ακολουθία {yy} ή {yyyy} δεν είναι μάσκα. -ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Error, can't use option @ if sequence {yy}{mm} or {yyyy}{mm} is not in mask. -UMask=UMask parameter for new files on Unix/Linux/BSD/Mac file system. -UMaskExplanation=This parameter allow you to define permissions set by default on files created by Dolibarr on server (during upload for example).
It must be the octal value (for example, 0666 means read and write for everyone).
This parameter is useless on a Windows server. -SeeWikiForAllTeam=Take a look at the wiki page for full list of all actors and their organisation -UseACacheDelay= Delay for caching export response in seconds (0 or empty for no cache) -DisableLinkToHelpCenter=Hide link "Need help or support" on login page -DisableLinkToHelp=Hide link "%s Online help" on left menu -AddCRIfTooLong=There is no automatic wrapping, so if line is out of page on documents because too long, you must add yourself carriage returns in the textarea. +ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Δεν μπορείτε να χρησιμοποιήσετε την επιλογή @ αν η ακολουθία {yy}{mm} ή {yyyy}{mm} δεν είναι στην μάσκα. +UMask=Παράμετρος UMask για νέα αρχεία σε συστήματα αρχείων συστημάτων Unix/Linux/BSD/Mac. +UMaskExplanation=Αυτή η παράμετρος σας επιτρέπει να ορίσετε προεπιλεγμένα δικαιώματα αρχείων για αρχεία που δημιουργεί το Dolibarr στον διακομιστή (κατά την διάρκεια μεταφόρτωσης π.χ.).
Πρέπει να είναι οκταδικής μορφής (για παράδειγμα, 0666 σημαίνει εγγραφή και ανάγνωση για όλους).
Αυτή η παράμετρος είναι άχρηστη σε διακομιστές Windows. +SeeWikiForAllTeam=Ρίξτε μια ματία στην σελίδα wiki για μια πλήρη λίστα όλων των actors και της οργάνωσής τους +UseACacheDelay= Καθυστέρηση για την τοποθέτηση απόκρισης εξαγωγής στην προσωρινή μνήμη σε δευτερόλεπτα (0 ή άδεια για μη χρήση προσωρινής μνήμης) +DisableLinkToHelpCenter=Αποκρύψτε τον σύνδεσμο "Αναζητήστε βοήθεια ή υποστήριξη" στην σελίδα σύνδεσης +DisableLinkToHelp=Αποκρύψτε το σύνδεσμο "%s Online βοήθεια" στο αριστερό μενού +AddCRIfTooLong=Δεν υπάρχει αυτόματη αναδίπλωση κειμένου. Αν η γραμμή σας σας δεν χωράει στην σελίδα των εγγράφων επειδή είναι πολύ μεγάλη, θα πρέπει να προσθέσετε μόνοι σας χαρακτήρες αλλαγής γραμμής (carriage return) στην περιοχή κειμένου. ModuleDisabled=Απενεργοποιημένο Άρθρωμα -ModuleDisabledSoNoEvent=Module disabled so event never created -ConfirmPurge=Are you sure you want to execute this purge ?
This will delete definitely all your data files with no way to restore them (ECM files, attached files...). +ModuleDisabledSoNoEvent=Το άρθρωμα είναι απενεργοποιημένο και έτσι δεν έχει δημιουργηθεί τέτοιο γεγονός +ConfirmPurge=Είστε σίγουροι πως θέλετε να εκτελέσετε αυτή τη διαγραφή;
Αυτό θα διαγράψει όλα σας τα δεδομένα με καμία δυνατότητα ανάκτησης (αρχεία ECM, συνημμένα αρχεία...). MinLength=Ελάχιστο μήκος -LanguageFilesCachedIntoShmopSharedMemory=Files .lang loaded in shared memory -ExamplesWithCurrentSetup=Examples with current running setup -ListOfDirectories=List of OpenDocument templates directories -ListOfDirectoriesForModelGenODT=List of directories containing templates files with OpenDocument format.

Put here full path of directories.
Add a carriage return between eah directory.
To add a directory of the GED module, add here DOL_DATA_ROOT/ecm/yourdirectoryname.

Files in those directories must end with .odt. -NumberOfModelFilesFound=Number of ODT/ODS templates files found in those directories -ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir -FollowingSubstitutionKeysCanBeUsed=
To know how to create your odt document templates, before storing them in those directories, read wiki documentation: +LanguageFilesCachedIntoShmopSharedMemory=Τα αρχεία τύπου .lang έχουν φορτωθεί στην κοινόχρηστη μνήμη +ExamplesWithCurrentSetup=Παραδείγματα με την τωρινή διαμόρφωση +ListOfDirectories=Λίστα φακέλων προτύπων OpenDocument +ListOfDirectoriesForModelGenODT=Λίστα φακέλων που περιέχουν αρχεία προτύπων τύπου OpenDocument.

Τοποθετείστε εδώ ολόκληρη την διαδρομή των φακέλων.
Εισάγετε ένα χαρακτήρα αλλαγής γραμμής ανάμεσα σε κάθε φάκελο.
Για να προσθέσετε ένα φάκελο του αρθρώματος GED, προσθέστε εδώ DOL_DATA_ROOT/ecm/yourdirectoryname.

Τα αρχεία σε αυτούς τους φακέλους πρέπει να έχουν την επέκταση .odt. +NumberOfModelFilesFound=Αριθμός αρχείων προτύπων ODT/ODS που βρέθηκαν σε αυτούς τους φακέλους +ExampleOfDirectoriesForModelGen=Παραδείγματα σύνταξης:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir +FollowingSubstitutionKeysCanBeUsed=
Για να μάθετε πως να δημιουργήσετε τα δικά σας αρχεία προτύπων, πριν τα αποθηκεύσετε σε αυτούς τους φακέλους, διαβάστε την τεκμηρίωση στο wiki: FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template FirstnameNamePosition=Θέση ονόματος/επιθέτου -DescWeather=The following pictures will be shown on dashboard when number of late actions reach the following values: +DescWeather=Οι παρακάτω εικόνες θα εμφανιστούν στο ταμπλό όταν ο αριθμός των τελευταίων ενεργειών φτάσει τις παρακάτω τιμές: KeyForWebServicesAccess=Key to use Web Services (parameter "dolibarrkey" in webservices) -TestSubmitForm=Είσοδος μορφή δοκιμή -ThisForceAlsoTheme=Χρησιμοποιώντας αυτό το μενού διευθυντής θα χρησιμοποιήσει επίσης το δικό της θέμα ό, τι είναι επιλογή του χρήστη. Επίσης, αυτό το μενού διευθυντής εξειδικεύεται για τα smartphones δεν λειτουργεί σε όλα τα smartphone. Χρησιμοποιήσετε κάποιον άλλο διαχειριστή μενού αν αντιμετωπίζετε προβλήματα στο δικό σας. -ThemeDir=Δέρματα κατάλογο -ConnectionTimeout=Connexion timeout -ResponseTimeout=Response timeout +TestSubmitForm=Φόρμα δοκιμής εισαγωγής δεδομένων +ThisForceAlsoTheme=Αυτός ο τροποποιητής μενού χρησιμοποιεί το δικό του θέμα όποιο θέμα και να έχει επιλέξει ο χρήστης. Επίσης, αυτό το πρόγραμμα διαχείρισης μενου που ειδικεύετεαι στις κινητές συσκευές δεν δουλεύει σε όλα τα smartphone. Χρησιμοποιήσετε κάποιον άλλο διαχειριστή μενού αν αντιμετωπίζετε προβλήματα στο δικό σας. +ThemeDir=Φάκελος skins +ConnectionTimeout=Λήξη σύνδεσης +ResponseTimeout=Λήξη χρόνου αναμονής απάντησης SmsTestMessage=Δοκιμαστικό μήνυμα από __PHONEFROM__ να __PHONETO__ ModuleMustBeEnabledFirst=%s Ενότητα πρέπει να είναι ενεργοποιημένα πρώτη φορά πριν τη χρήση αυτής της δυνατότητας. SecurityToken=Security Token -NoSmsEngine=Δεν διευθυντής αποστολέα SMS διαθέσιμα. Αποστολέα SMS διευθυντής δεν έχουν εγκατασταθεί με τη διανομή προεπιλογή (διότι εξαρτάται από εξωτερικούς προμηθευτές), αλλά μπορείτε να βρείτε κάποια σχετικά http://www.dolistore.com +NoSmsEngine=Δεν υπάρχει πρόγραμμα αποστολής SMS διαθέσιμο. Τα προγράμματα αποστολής SMS δεν εγκαθίστανται με την διανομή από προεπιλογή (επειδή εξαρτόνται από εξωτερικούς προμηθευτές) αλλά μπορείτε να βρείτε κάποια διαθέσιμα προγράμματα στο %s PDF=PDF -PDFDesc=Μπορείτε να ρυθμίσετε κάθε συνολική επιλογές που σχετίζονται με τη δημιουργία PDF -PDFAddressForging=Κανόνες για να δημιουργήσουν θέσεις διεύθυνση -HideAnyVATInformationOnPDF=Απόκρυψη όλων των πληροφοριών που σχετίζονται με τον ΦΠΑ επί δημιουργούνται μορφή PDF -HideDescOnPDF=Hide products description on generated PDF -HideRefOnPDF=Hide products ref. on generated PDF -HideDetailsOnPDF=Hide products lines details on generated PDF -Library=Library -UrlGenerationParameters=Παράμετροι για την εξασφάλιση διευθύνσεις URL +PDFDesc=Μπορείτε να ρυθμίσετε κάθε κεντρική επιλογή που σχετίζεται με τη δημιουργία PDF +PDFAddressForging=Κανόνες για να δημιουργηθούν διευθύνσεις +HideAnyVATInformationOnPDF=Απόκρυψη όλων των πληροφοριών που σχετίζονται με τον ΦΠΑ στα δημιουργηθέντα PDF +HideDescOnPDF=Απόκρυψη περιγραφών προϊόντων στα δημιουργηθέντα PDF +HideRefOnPDF=Απόκρυψη αναφοράς προϊόντος στα δημιουργηθέντα PDF +HideDetailsOnPDF=Απόκρυψη λεπτομεριών προϊόντων στα δημιουργηθέντα PDF +Library=Βιβλιοθήκη +UrlGenerationParameters=Παράμετροι για δημιουργία ασφαλών URL SecurityTokenIsUnique=Χρησιμοποιήστε μια μοναδική παράμετρο securekey για κάθε διεύθυνση URL EnterRefToBuildUrl=Εισάγετε αναφοράς για %s αντικείμενο -GetSecuredUrl=Πάρτε υπολογίζεται URL -ButtonHideUnauthorized=Hide buttons for unauthorized actions instead of showing disabled buttons -OldVATRates=Old VAT rate -NewVATRates=New VAT rate -PriceBaseTypeToChange=Modify on prices with base reference value defined on -MassConvert=Launch mass convert +GetSecuredUrl=Πάρτε υπολογιζόμενο URL +ButtonHideUnauthorized=Απόκρυψη κουμπιών για μη επιτρεπτές ενέργειες αντί να φαίνονται απενεργοποιημένα κουμπιά +OldVATRates=Παλιός συντελεστής ΦΠΑ +NewVATRates=Νέος συντελεστής ΦΠΑ +PriceBaseTypeToChange=Τροποποίηση τιμών με βάση την τιμή αναφοράς όπως ρυθμίστηκε στο +MassConvert=Έναρξη μαζικής μεταβολής String=String TextLong=Long text Int=Integer Float=Float -DateAndTime=Date and hour -Unique=Unique +DateAndTime=Ημερομηνία και ώρα +Unique=Μοναδικό Boolean=Boolean (Checkbox) -ExtrafieldPhone = Phone -ExtrafieldPrice = Price +ExtrafieldPhone = Τηλέφωνο +ExtrafieldPrice = Τιμή ExtrafieldMail = Email -ExtrafieldSelect = Select list -ExtrafieldSelectList = Select from table -ExtrafieldSeparator=Separator +ExtrafieldSelect = Επιλογή από λίστα +ExtrafieldSelectList = Επιλογή από πίνακα +ExtrafieldSeparator=Διαχωριστικό ExtrafieldCheckBox=Checkbox ExtrafieldRadio=Radio button ExtrafieldCheckBoxFromList= Πλαίσιο ελέγχου από τον πίνακα @@ -389,16 +394,16 @@ ExtrafieldParamHelpcheckbox=Η λίστα παραμέτρων θα πρέπει ExtrafieldParamHelpradio=Η λίστα παραμέτρων θα πρέπει να είναι σαν το κλειδί,value

για παράδειγμα :
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=Λίστα Παραμέτρων που προέρχεται από έναν πίνακα
σύνταξη : table_name:label_field:id_field::filter
παράδειγμα: c_typent:libelle:id::filter

φίλτρο μπορεί να είναι μια απλή δοκιμή (eg active=1) για να εμφανίσετε μόνο μία ενεργό τιμή
αν θέλετε να φιλτράρετε extrafields χρησιμοποιήστε τη σύνταξη extra.fieldcode=... (όπου κωδικός πεδίου είναι ο κωδικός του extrafield)

Προκειμένου να έχει τον κατάλογο ανάλογα με ένα άλλο :
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelpchkbxlst=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter -LibraryToBuildPDF=Library used to build PDF -WarningUsingFPDF=Warning: Your conf.php contains directive dolibarr_pdf_force_fpdf=1. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.
To solve this and have a full support of PDF generation, please download TCPDF library, then comment or remove the line $dolibarr_pdf_force_fpdf=1, and add instead $dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir' -LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:
1 : local tax apply on products and services without vat (vat is not applied on local tax)
2 : local tax apply on products and services before vat (vat is calculated on amount + localtax)
3 : local tax apply on products without vat (vat is not applied on local tax)
4 : local tax apply on products before vat (vat is calculated on amount + localtax)
5 : local tax apply on services without vat (vat is not applied on local tax)
6 : local tax apply on services before vat (vat is calculated on amount + localtax) +LibraryToBuildPDF=Βιβλιοθήκη για την δημιουργία PDF +WarningUsingFPDF=Προειδοποίηση: Το αρχείο conf.php περιλαμβάνει την επιλογή dolibarr_pdf_force_fpdf=1. Αυτό σημαίνει πως χρησιμοποιείτε η βιβλιοθήκη FPDF για να δημιουργούνται τα αρχεία PDF. Αυτή η βιβλιοθήκη είναι παλιά και δεν υποστηρίζει πολλές λειτουργίες (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), οπότε μπορεί να παρουσιαστούν λάθη κατά την δημιουργία των PDF.
Για να λυθεί αυτό και να μπορέσετε να έχετε πλήρη υποστήριξη δημιουργίας αρχείων PDF, παρακαλώ κατεβάστε την βιβλιοθήκη TCPDF, και μετά απενεργοποιήστε ή διαγράψτε την γραμμή $dolibarr_pdf_force_fpdf=1, και εισάγετε αντί αυτής την $dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir' +LocalTaxDesc=Σε κάποιες χώρες επιβάλλονται 2 ή 3 φόροι σε κάθε γραμμή τιμολογίου. Αν ισχύει αυτό στην περίπτωσή σας, επιλέξτε τύπο για τον δεύτερο και τον τρίτο φόρο όπως επίσης και το ποσοστό του. Πιθανοί τύποι είναι:
1 : local tax apply on products and services without vat (vat is not applied on local tax)
2 : local tax apply on products and services before vat (vat is calculated on amount + localtax)
3 : local tax apply on products without vat (vat is not applied on local tax)
4 : local tax apply on products before vat (vat is calculated on amount + localtax)
5 : local tax apply on services without vat (vat is not applied on local tax)
6 : local tax apply on services before vat (vat is calculated on amount + localtax) SMS=SMS -LinkToTestClickToDial=Enter a phone number to call to show a link to test the ClickToDial url for user %s -RefreshPhoneLink=Refresh link -LinkToTest=Clickable link generated for user %s (click phone number to test) -KeepEmptyToUseDefault=Keep empty to use default value -DefaultLink=Default link -ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) +LinkToTestClickToDial=Εισάγετε έναν τηλεφωνικό αριθμό για να δημιουργηθεί ένας σύνδεσμος που θα σας επιτρέπει να κάνετε κλήση με το ClickToDial για τον χρήστη %s +RefreshPhoneLink=Ανανέωση συνδέσμου +LinkToTest=Σημιουργήθηκε σύνδεσμος για τον χρήστη %s (κάντε κλικ στον αριθμό τηλεφώνου για να τον δοκιμάσετε) +KeepEmptyToUseDefault=Αφήστε κενό για να χρησιμοποιήσετε την προεπιλεγμένη τιμή +DefaultLink=Προεπιλεγμένος σύνδεσμος +ValueOverwrittenByUserSetup=Προσοχή, αυτή η τιμή μπορεί να αντικατασταθεί από επιλογή του χρήστη (ο κάθε χρήστης μπορεί να κάνει τον δικό του σύνδεσμο clicktodial) ExternalModule=Εξωτερικό module - Εγκατεστημένο στον φάκελο %s BarcodeInitForThirdparties=Όγκος barcode init για Πέλ./Πρόμ. BarcodeInitForProductsOrServices=Όγκος barcode init ή επαναφορά για προϊόντα ή υπηρεσίες @@ -414,77 +419,77 @@ NoRecordWithoutBarcodeDefined=Δεν υπάρχει εγγραφή χωρίς ο Module0Name=Χρήστες & Ομάδες Module0Desc=Διαχείριση χρηστών και ομάδων Module1Name=Στοιχεία -Module1Desc=Companies and contact management (customers, prospects...) -Module2Name=Commercial -Module2Desc=Commercial management -Module10Name=Accounting -Module10Desc=Simple accounting reports (journals, turnover) based onto database content. No dispatching. +Module1Desc=Διαχείριση εταιρειών και επαφών (πελάτες, πιθανοί πελάτες...) +Module2Name=Εμπορικό +Module2Desc=Εμπορική διαχείριση +Module10Name=Λογιστική +Module10Desc=Απλές αναφορές λογιστικής (journals, turnover) βασισμένα στα περιοχόμενα της βάσης δεδομένων. Χωρίς αποστολές. Module20Name=Προτάσεις -Module20Desc=Commercial proposal management -Module22Name=Mass E-mailings -Module22Desc=Mass E-mailing management -Module23Name= Energy -Module23Desc= Monitoring the consumption of energies +Module20Desc=Διαχείριση εμπορικών προτάσεων +Module22Name=Μαζική αποστολή e-mail +Module22Desc=Διαχείριση μαζικής αποστολής e-mail +Module23Name= Ενέργεια +Module23Desc= Παρακολούθηση κατανάλωσης ενέργειας Module25Name=Παραγγελίες πελάτη -Module25Desc=Customer order management +Module25Desc=Διαχείριση παραγγελιών πελατών Module30Name=Τιμολόγια Module30Desc=Τιμολόγιο και πιστωτικό τιμολόγιο διαχείρισης για τους πελάτες. Τιμολόγιο διαχείρισης για τους προμηθευτές Module40Name=Προμηθευτές -Module40Desc=Supplier management and buying (orders and invoices) +Module40Desc=Διαχείριση προμηθευτών και παραστατικά αγοράς (παραγγελίες και τιμολόγια) Module42Name=Logs Module42Desc=Logging facilities (file, syslog, ...) -Module49Name=Επεξεργαστές -Module49Desc=Editor management +Module49Name=Επεξεργαστές κειμένου +Module49Desc=Διαχείριση επεξεργαστών κειμένου Module50Name=Προϊόντα -Module50Desc=Product management -Module51Name=Mass mailings -Module51Desc=Mass paper mailing management -Module52Name=Αποθήκες -Module52Desc=Stock's management of products +Module50Desc=Διαχείριση προϊόντων +Module51Name=Μαζικές αποστολές επιστολών +Module51Desc=Διαχείριση μαζικών αποστολών επιστολών +Module52Name=Αποθέματα +Module52Desc=Διαχείριση αποθεμάτων (προϊόντων) Module53Name=Υπηρεσίες -Module53Desc=Service management +Module53Desc=Διαχείριση υπηρεσιών Module54Name=Συμβάσεις/Συνδρομές Module54Desc=Διαχείριση συμβολαίων (υπηρεσιών ή ανανεώσιμων συνδρομών) Module55Name=Barcodes -Module55Desc=Barcode management +Module55Desc=Διαχείριση barcode Module56Name=Τηλεφωνία Module56Desc=Telephony integration -Module57Name=Standing orders +Module57Name=Πάγιες εντολές Module57Desc=Πάγιες εντολές και διαχείριση απόσυρσης. Επίσης, περιλαμβάνει την παραγωγή του αρχείου SEPA για τις ευρωπαϊκές χώρες. Module58Name=ClickToDial -Module58Desc=Integration of a ClickToDial system (Asterisk, ...) +Module58Desc=Ενοποίηση ενός συστήματος ClickToDial (Asterisk, ...) Module59Name=Bookmark4u -Module59Desc=Add function to generate Bookmark4u account from a Dolibarr account +Module59Desc=Προσθήκη λειτουργίας για την δημιουργία λογαριασμού Bookmark4u από ένα λογαριασμό Dolibarr Module70Name=Interventions Module70Desc=Intervention management -Module75Name=Expense and trip notes -Module75Desc=Expense and trip notes management -Module80Name=Shipments -Module80Desc=Shipments and delivery order management -Module85Name=Banks and cash -Module85Desc=Management of bank or cash accounts -Module100Name=External site -Module100Desc=This module include an external web site or page into Dolibarr menus and view it into a Dolibarr frame +Module75Name=Σημειώσεις εξόδων και ταξιδιών +Module75Desc=Διαχείριση σημειώσεων εξόδων και ταξιδιών +Module80Name=Αποστολές +Module80Desc=Διαχείριση αποστολών και εντολών παράδοσης +Module85Name=Τράπεζες και μετρητά +Module85Desc=Διαχείριση τραπεζικών και λογαριασμών μετρητών +Module100Name=Εξωτερική ιστοσελίδα +Module100Desc=Αυτό το άρθρωμα περιέχει μία εξωτερική ιστοσελίδα ή site μέσα από το μενού του Dolibarr για να προβληθεί μέσω ενός παραθύρου Dolibarr Module105Name=Mailman και SIP Module105Desc=Mailman ή SPIP διεπαφή για ενότητα μέλος Module200Name=LDAP -Module200Desc=LDAP directory synchronisation +Module200Desc=Συγχρονισμός LDAP directory Module210Name=PostNuke -Module210Desc=PostNuke integration -Module240Name=Data exports -Module240Desc=Tool to export Dolibarr datas (with assistants) -Module250Name=Data imports -Module250Desc=Tool to import datas in Dolibarr (with assistants) +Module210Desc=Διεπαφή PostNuke +Module240Name=Εξαγωγές δεδομένων +Module240Desc=Εργαλείο για την εξαγωγή δεδομέων του Dolibarr (με βοηθούς) +Module250Name=Εισαγωγές δεδομένων +Module250Desc=Εργαλείο για την εισαγωγή δεδομένω στο Dolibarr (με βοηθούς) Module310Name=Μέλη -Module310Desc=Foundation members management +Module310Desc=Διαχείριση μελών οργανισμού Module320Name=RSS Feed -Module320Desc=Add RSS feed inside Dolibarr screen pages +Module320Desc=Εισαγωγή RSS feed εντός των σελίδων του Dolibarr Module330Name=Σελιδοδείκτες -Module330Desc=Bookmark management +Module330Desc=Διαχείριση σελιδοδεικτών Module400Name=Έργα/Ευκαιρίες/Leads Module400Desc=Διαχείριση έργων, ευκαιρίες ή leads. Στη συνέχεια μπορείτε να ορίσετε οποιοδήποτε στοιχείο (τιμολόγιο, παραγγελία, προσφορά, παρέμβαση, ...) σε ένα έργο και να πάρετε μια εγκάρσια όψη από την προβολή του έργου. -Module410Name=Webcalendar -Module410Desc=Webcalendar integration +Module410Name=Ημερολόγιο ιστού +Module410Desc=Διεπαφή ημερολογίου ιστού Module500Name=Ειδικά έξοδα (φόροι, εισφορές κοινωνικής ασφάλισης, μερίσματα) Module500Desc=Διαχείριση των ειδικών δαπανών, όπως οι φόροι, κοινωνικές εισφορές, μερίσματα και μισθούς Module510Name=Μισθοί @@ -493,10 +498,16 @@ Module600Name=Notifications Module600Desc=Αποστολή ειδοποιήσεων μέσω ηλεκτρονικού ταχυδρομείου σχετικά με ορισμένες Dolibarr επαγγελματικές συναντήσεις σε Πελ./Προμ. (η ρύθμιση ορίζεται από κάθε Πελ./Προμ.) Module700Name=Δωρεές Module700Desc=Donation management +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1400Name=Accounting Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Κατηγορίες Module1780Desc=Category management (products, suppliers and customers) Module2000Name=WYSIWYG editor @@ -631,7 +642,7 @@ Permission181=Read supplier orders Permission182=Create/modify supplier orders Permission183=Validate supplier orders Permission184=Approve supplier orders -Permission185=Order supplier orders +Permission185=Order or cancel supplier orders Permission186=Receive supplier orders Permission187=Close supplier orders Permission188=Cancel supplier orders @@ -711,6 +722,13 @@ Permission538=Export services Permission701=Read donations Permission702=Δημιουργία / τροποποίηση δωρεές Permission703=Διαγραφή δωρεές +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Διαβάστε τα αποθέματα Permission1002=Δημιουργία/τροποποίηση αποθηκών Permission1003=Διαγραφή αποθηκών @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Κωδικός πρόσβασης για να χρησιμοπο DefineHereComplementaryAttributes=Ορίστε εδώ όλα τα χαρακτηριστικά, δεν είναι ήδη διαθέσιμη από προεπιλογή, και ότι θέλετε να υποστηριχθούν για %s. ExtraFields=Συμπληρωματικά χαρακτηριστικά ExtraFieldsLines=Συμπληρωματικά χαρακτηριστικά (σειρές) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=A line of product/service with a zero amount is consid FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ρωτήστε για τον τραπεζικό λογαριασμό προορισμού της προσφοράς +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Order management setup OrdersNumberingModules=Orders numbering models @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barcode of type UPC BarcodeDescISBN=Barcode of type ISBN BarcodeDescC39=Barcode of type C39 BarcodeDescC128=Barcode of type C128 -GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Διαχειριστής για την αυτόματη αρίθμηση του barcode ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Προεπιλογή γενικός Πελ./Προμ. CashDeskBankAccountForSell=Default account to use to receive cash payments CashDeskBankAccountForCheque= Default account to use to receive payments by cheque CashDeskBankAccountForCB= Default account to use to receive payments by credit cards -CashDeskDoNotDecreaseStock=Απενεργοποίηση μείωση των αποθεμάτων όταν η πώληση γίνεται από Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Αναγκαστικός περιορισμός αποθήκης για μείωση των αποθεμάτων StockDecreaseForPointOfSaleDisabled=Μείωση αποθέματος από Point Of Sale απενεργοποιημένο +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=Δεν έχετε απενεργοποιήσει μείωση των αποθεμάτων κατά την πραγματοποίηση μιας πώλησης από το σημείο πώλησης "POS". Μια αποθήκη είναι απαραίτητη. ##### Bookmark ##### BookmarkSetup=Bookmark module setup @@ -1569,3 +1597,7 @@ SortOrder=Σειρά ταξινόμησης Format=Μορφή TypePaymentDesc=0:Τύπος πληρωμής πελάτη, 1:Τύπος πληρωμής προμηθευτή, 2:Τύπος πληρωμής τόσο για τους πελάτες όσο και για τους προμηθευτές IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/el_GR/banks.lang b/htdocs/langs/el_GR/banks.lang index c6960fe94cd..7c143b155f1 100644 --- a/htdocs/langs/el_GR/banks.lang +++ b/htdocs/langs/el_GR/banks.lang @@ -33,7 +33,11 @@ AllTime=Από την αρχή Reconciliation=Πραγματοποίηση Συναλλαγών RIB=Αριθμός Τραπ. Λογαριασμού IBAN=IBAN +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=Αριθμός BIC/SWIFT +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Πάγιες εντολές StandingOrder=Πάγια εντολή Withdrawals=Αναλήψεις @@ -148,7 +152,7 @@ BackToAccount=Επιστροφή στον λογαριασμό ShowAllAccounts=Εμφάνιση Όλων των Λογαριασμών FutureTransaction=Συναλλαγή στο μέλλον. Δεν υπάρχει τρόπος συμβιβασμού. SelectChequeTransactionAndGenerate=Επιλέξτε/φίλτρο ελέγχου για να συμπεριληφθεί στην απόδειξη κατάθεσης και κάντε κλικ στο "Δημιουργία". -InputReceiptNumber=Επιλέξτε την κατάσταση των τραπεζών που συνδέονται με τη διαδικασία συνδιαλλαγής. Χρησιμοποιήστε μια σύντομη αριθμητική τιμή (όπως, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Τέλος, καθορίστε μια κατηγορία στην οποία θα ταξινομηθούν οι εγγραφές ToConciliate=Να συμβιβάσει; ThenCheckLinesAndConciliate=Στη συνέχεια, ελέγξτε τις γραμμές που υπάρχουν στο αντίγραφο κίνησης του τραπεζικού λογαριασμού και κάντε κλικ diff --git a/htdocs/langs/el_GR/commercial.lang b/htdocs/langs/el_GR/commercial.lang index 605097a3a19..114c0169055 100644 --- a/htdocs/langs/el_GR/commercial.lang +++ b/htdocs/langs/el_GR/commercial.lang @@ -62,7 +62,7 @@ LastProspectContactDone=Η επικοινωνία έγινε DateActionPlanned=Ημερ. προγραμματισμού DateActionDone=Ημερ. ολοκλήρωσης ActionAskedBy=Η ενέργεια ζητήθηκε από -ActionAffectedTo=Εκδήλωση που ανήκει +ActionAffectedTo=Event assigned to ActionDoneBy=Η ενέργεια έγινε από τον/την ActionUserAsk=Καταγράφηκε από τον/την ErrorStatusCantBeZeroIfStarted=Εάν το πεδίο 'Date done' είναι γεμάτο, η ενέργεια έχει αρχίσει (ή έχει τελειώσει), οπότε το πεδίο 'Status' δεν μπορεί να είναι 0%%. diff --git a/htdocs/langs/el_GR/contracts.lang b/htdocs/langs/el_GR/contracts.lang index ff824ce3a85..c8e4c7b1cb5 100644 --- a/htdocs/langs/el_GR/contracts.lang +++ b/htdocs/langs/el_GR/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Έληξε ServiceStatusClosed=Τερματισμένη ServicesLegend=Services legend Contracts=Συμβόλαια +ContractsAndLine=Contracts and line of contracts Contract=Συμβόλαιο NoContracts=Κανένα Συμβόλαιο MenuServices=Υπηρεσίες diff --git a/htdocs/langs/el_GR/cron.lang b/htdocs/langs/el_GR/cron.lang index 756f6c9ea35..9f94c994725 100644 --- a/htdocs/langs/el_GR/cron.lang +++ b/htdocs/langs/el_GR/cron.lang @@ -84,3 +84,4 @@ CronType_command=Εντολή Shell CronMenu=Μενού CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Πηγαίνετε στο μενού "Home - Modules εργαλεία - Λίστα εργασιών" για να δείτε και να επεξεργαστείτε τις προγραμματισμένες εργασίες. +TaskDisabled=Task disabled diff --git a/htdocs/langs/el_GR/errors.lang b/htdocs/langs/el_GR/errors.lang index eaacea01c42..1361707a862 100644 --- a/htdocs/langs/el_GR/errors.lang +++ b/htdocs/langs/el_GR/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Πηγή και τους στόχους των τ ErrorBadThirdPartyName=Bad αξία για τους υπηκόους τρίτων όνομα κόμματος ErrorProdIdIsMandatory=Το %s είναι υποχρεωτικό ErrorBadCustomerCodeSyntax=Λάθος σύνταξη για τον κωδικό πελάτη -ErrorBadBarCodeSyntax=Κακή σύνταξη για bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Κωδικός πελάτη απαιτείτε ErrorBarCodeRequired=Απαιτείται Bar code ErrorCustomerCodeAlreadyUsed=Ο κωδικός πελάτη που έχει ήδη χρησιμοποιηθεί @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Η Javascript πρέπει να είναι άτομ ErrorPasswordsMustMatch=Και οι δύο πληκτρολογήσει τους κωδικούς πρόσβασης πρέπει να ταιριάζουν μεταξύ τους ErrorContactEMail=Ένα τεχνικό σφάλμα. Παρακαλούμε, επικοινωνήστε με τον διαχειριστή για μετά %s email en παρέχουν την %s κωδικό σφάλματος στο μήνυμά σας, ή ακόμα καλύτερα με την προσθήκη ενός αντιγράφου της οθόνης αυτής της σελίδας. ErrorWrongValueForField=Λάθος τιμή για %s αριθμό τομέα («%s» τιμή δεν ταιριάζει regex %s κανόνα) -ErrorFieldValueNotIn=Λάθος τιμή για %s αριθμό τομέα («%s» τιμή δεν είναι μια τιμή διαθέσιμη σε %s τομέα της %s πίνακα) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Λάθος τιμή για τον αριθμό %s τομέα («%s» τιμή δεν είναι %s υφιστάμενων ref) ErrorsOnXLines=Λάθη σε %s γραμμές πηγή ErrorFileIsInfectedWithAVirus=Το πρόγραμμα προστασίας από ιούς δεν ήταν σε θέση να επικυρώσει το αρχείο (αρχείο μπορεί να μολυνθεί από έναν ιό) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Εσωτερικό σφάλμα '%s' ErrorPriceExpressionUnknown=Άγνωστο σφάλμα '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/el_GR/install.lang b/htdocs/langs/el_GR/install.lang index d2cc1ae3cd8..939e7a72d52 100644 --- a/htdocs/langs/el_GR/install.lang +++ b/htdocs/langs/el_GR/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Τελευταίο βήμα: Καθορίστε ε ActivateModule=Ενεργοποίηση %s ενότητα ShowEditTechnicalParameters=Κάντε κλικ εδώ για να δείτε/επεξεργαστείτε προηγμένες παραμέτρους (κατάσταση έμπειρου χρήστη) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/el_GR/main.lang b/htdocs/langs/el_GR/main.lang index 187c9becc66..50211a1e084 100644 --- a/htdocs/langs/el_GR/main.lang +++ b/htdocs/langs/el_GR/main.lang @@ -141,6 +141,7 @@ Cancel=Άκυρο Modify=Τροποποίηση Edit=Επεξεργασία Validate=Επικύρωση +ValidateAndApprove=Validate and Approve ToValidate=Προς Επικύρωση Save=Αποθήκευση SaveAs=Αποθήκευση Ως @@ -158,6 +159,7 @@ Search=Αναζήτηση SearchOf=Αναζήτηση Valid=Έγκυρο Approve=Έγκριση +Disapprove=Disapprove ReOpen=Εκ νέου άνοιγμα Upload=Αποστολή Αρχείου ToLink=Σύνδεσμος @@ -219,6 +221,7 @@ Cards=Καρτέλες Card=Καρτέλα Now=Τώρα Date=Ημερομηνία +DateAndHour=Date and hour DateStart=Ημερομηνία Έναρξης DateEnd=Ημερομηνία Τέλους DateCreation=Ημερομηνία Δημιουργίας @@ -295,6 +298,7 @@ UnitPriceHT=Τιμή Μονάδος (χ. Φ.Π.Α) UnitPriceTTC=Τιμή Μονάδος PriceU=Τιμή μον. PriceUHT=Τιμή μον. +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=Τιμή μον. Amount=Ποσό AmountInvoice=Ποσό Τιμολογίου @@ -521,6 +525,7 @@ DateFromTo=Από %s μέχρι %s DateFrom=Από %s DateUntil=Μέχρι %s Check=Έλεγχος +Uncheck=Uncheck Internal=Internal External=External Internals=Internal @@ -688,6 +693,7 @@ PublicUrl=Δημόσια URL AddBox=Προσθήκη πεδίου SelectElementAndClickRefresh=Επιλέξτε ένα στοιχείο και κάντε κλικ στο κουμπί Ανανέωση PrintFile=Εκτύπωση του αρχείου %s +ShowTransaction=Show transaction # Week day Monday=Δευτέρα Tuesday=Τρίτη diff --git a/htdocs/langs/el_GR/orders.lang b/htdocs/langs/el_GR/orders.lang index 4987091d539..e6cedcee375 100644 --- a/htdocs/langs/el_GR/orders.lang +++ b/htdocs/langs/el_GR/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Ακυρωμένη StatusOrderDraft=Προσχέδιο (χρειάζεται επικύρωση) StatusOrderValidated=Επικυρωμένη StatusOrderOnProcess=Παραγγέλθηκε - Αναμονή παραλαβής +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Ολοκληρωμένη StatusOrderToBill=Προς πληρωμή StatusOrderToBill2=Προς τιμολόγηση @@ -58,6 +59,7 @@ MenuOrdersToBill=Παραγγελίες προς χρέωση MenuOrdersToBill2=Χρεώσιμες παραγγελίες SearchOrder=Εύρεση παραγγελίας SearchACustomerOrder=Αναζητήστε μία παραγγελία πελάτη +SearchASupplierOrder=Search a supplier order ShipProduct=Ship product Discount=Έκπτωση CreateOrder=Δημιουργία παραγγελίας diff --git a/htdocs/langs/el_GR/other.lang b/htdocs/langs/el_GR/other.lang index e15f9952453..449d5bc6fac 100644 --- a/htdocs/langs/el_GR/other.lang +++ b/htdocs/langs/el_GR/other.lang @@ -54,12 +54,13 @@ MaxSize=Μέγιστο μέγεθος AttachANewFile=Επισύναψη νέου αρχείου/εγγράφου LinkedObject=Συνδεδεμένα αντικείμενα Miscellaneous=Διάφορα -NbOfActiveNotifications=Πλήθος ειδοποιήσεων +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Δοκιμαστικο mail.\nΟι δύο γραμμές είναι χωρισμένες με carriage return. PredefinedMailTestHtml=Αυτό είναι ένα μήνυμα δοκιμής (η δοκιμή λέξη πρέπει να είναι με έντονα γράμματα).
Οι δύο γραμμές που χωρίζονται με ένα χαρακτήρα επαναφοράς. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nΕδώ θα βρείτε το τιμολόγιο __FACREF__\n\n__PERSONALIZED__Με εκτίμηση\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nΘα ήθελα να σας προειδοποιήσω ότι το τιμολόγιο __FACREF__ φαίνεται να μην έχει πληρωθεί. Στο συνημμένο βρίσκεται το τιμολόγιο που φαίνεται να μην έχει πληρωθεί.\n\n__PERSONALIZED__Με εκτίμηση\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nΕδώ θα βρείτε την προσφορά __PROPREF__\n\n__PERSONALIZED__Με εκτίμηση\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nΕδώ θα βρείτε τη παραγγελία __ORDERREF__\n\n__PERSONALIZED__Με εκτίμηση\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nΕδώ θα βρείτε την παραγγελία μας __ORDERREF__\n\n__PERSONALIZED__Με εκτίμηση\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nΕδώ θα βρείτε το τιμολόγιο __FACREF__\n\n__PERSONALIZED__Με εκτίμηση\n\n__SIGNATURE__ diff --git a/htdocs/langs/el_GR/productbatch.lang b/htdocs/langs/el_GR/productbatch.lang index afe3a362d63..cc6e312db0e 100644 --- a/htdocs/langs/el_GR/productbatch.lang +++ b/htdocs/langs/el_GR/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Παρτίδα/Σειριακός αριθμός l_eatby=Φάτε ημερομηνία λήξης l_sellby=Ημερομηνία πώλησης DetailBatchNumber=Παρτίδα/Λεπτομέρειες σειριακού -DetailBatchFormat=Παρτίδα/Κωδικός: %s - E:%s - s:%s (Ποσότητα: %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Παρτίδα: %s printEatby=Eat-by: %s printSellby=Πώληση ανά: %s diff --git a/htdocs/langs/el_GR/products.lang b/htdocs/langs/el_GR/products.lang index 25229b931ae..eebb6c5060b 100644 --- a/htdocs/langs/el_GR/products.lang +++ b/htdocs/langs/el_GR/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=Στο προϊόν/υπηρεσία και στις PriceExpressionEditorHelp4=Μόνο σε τιμές προϊόντων/υπηρεσιών: #supplier_min_price#
Μόνο τιμές Προμηθευτών: #supplier_quantity# and #supplier_tva_tx# PriceMode=Λειτουργία Τιμής PriceNumeric=Αριθμός +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/el_GR/projects.lang b/htdocs/langs/el_GR/projects.lang index c4ce60ce368..3e20c208dc9 100644 --- a/htdocs/langs/el_GR/projects.lang +++ b/htdocs/langs/el_GR/projects.lang @@ -8,8 +8,10 @@ SharedProject=Όλοι PrivateProject=Αντιπρόσωποι του έργου MyProjectsDesc=Η άποψη αυτή περιορίζονται σε έργα που είναι σε μια επαφή για την (όποια είναι ο τύπος). ProjectsPublicDesc=Η άποψη αυτή παρουσιάζει όλα τα έργα σας επιτρέπεται να διαβάσετε. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Η άποψη αυτή παρουσιάζει όλα τα έργα (δικαιώματα χρήστη να δώσει δικαίωμα για να δείτε τα πάντα). MyTasksDesc=Η άποψη αυτή περιορίζονται σε έργα ή εργασίες που έχουν μια επαφή για την (όποια είναι ο τύπος). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Η άποψη αυτή παρουσιάζει όλα τα έργα και τα καθήκοντα που επιτρέπεται να διαβάζουν. TasksDesc=Η άποψη αυτή παρουσιάζει όλα τα έργα και τα καθήκοντα (δικαιώματα χρήστη να δώσει δικαίωμα για να δείτε τα πάντα). ProjectsArea=Περιοχή Έργων @@ -29,6 +31,8 @@ NoProject=No project defined or owned NbOpenTasks=Αριθμός ανοιχτών εργασιών NbOfProjects=Αριθμός έργων TimeSpent=Χρόνος που δαπανήθηκε +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Ο χρόνος που δαπανάται RefTask=Αναφ. εργασίας LabelTask=Ετικέτα εργασίας @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Κατάλογος των ενταλμάτω ListSupplierInvoicesAssociatedProject=Κατάλογος των τιμολογίων του προμηθευτή που συνδέονται με το έργο ListContractAssociatedProject=Κατάλογος των συμβάσεων που συνδέονται με το έργο ListFichinterAssociatedProject=Κατάλογος των παρεμβάσεων που σχετίζονται με το έργο -ListTripAssociatedProject=Κατάλογος των ταξιδιών και των δαπανών που συνδέονται με το έργο +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Κατάλογος των εκδηλώσεων που σχετίζονται με το έργο ActivityOnProjectThisWeek=Δραστηριότητα στο έργο αυτή την εβδομάδα ActivityOnProjectThisMonth=Δραστηριότητα στο έργο αυτό το μήνα @@ -133,3 +137,6 @@ SearchAProject=Αναζήτηση ένα έργο ProjectMustBeValidatedFirst=Το έργο πρέπει να επικυρωθεί πρώτα ProjectDraft=Πρόχειρα έργα FirstAddRessourceToAllocateTime=Συσχετίστε έναν πόρο για την κατανομή του χρόνου +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/el_GR/salaries.lang b/htdocs/langs/el_GR/salaries.lang index 7001bfb2fe0..58f0b819a6e 100644 --- a/htdocs/langs/el_GR/salaries.lang +++ b/htdocs/langs/el_GR/salaries.lang @@ -1,8 +1,13 @@ # Dolibarr language file - Source file is en_US - users -Salary=Salary -Salaries=Salaries +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Κωδικός Λογιστικής για τις πληρωμές των μισθών +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Κωδικός Λογιστικής για οικονομική επιβάρυνση +Salary=Mισθός +Salaries=Μισθοί Employee=Υπάλληλος NewSalaryPayment=Νέα μισθοδοσία SalaryPayment=Μισθός SalariesPayments=Πληρωμές μισθών ShowSalaryPayment=Εμφάνιση μισθοδοσίας +THM=Η μέση ωριαία τιμή +TJM=Η μέση ημερήσια τιμή +CurrentSalary=Current salary diff --git a/htdocs/langs/el_GR/sendings.lang b/htdocs/langs/el_GR/sendings.lang index d2774a6577f..8a0733e2515 100644 --- a/htdocs/langs/el_GR/sendings.lang +++ b/htdocs/langs/el_GR/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Ποσότητα παραγγελιών QtyShipped=Ποσότητα που αποστέλλεται QtyToShip=Ποσότητα προς αποστολή QtyReceived=Ποσότητα παραλαβής -KeepToShip=Κρατήστε την αποστολή +KeepToShip=Remain to ship OtherSendingsForSameOrder=Άλλες αποστολές για αυτό το σκοπό DateSending=Ημερομηνία αποστολή της παραγγελίας DateSendingShort=Ημερομηνία αποστολή της παραγγελίας @@ -64,10 +64,10 @@ ShipmentLine=Σειρά αποστολής CarrierList=Κατάλογος των μεταφορέων SendingRunning=Προϊόν από εντολή παραγγελιών σε πελάτες SuppliersReceiptRunning=Προϊόν από εντολή παραγγελιών σε προμηθευτές -ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders -ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders -ProductQtyInShipmentAlreadySent=Product quantity from opended customer order already sent -ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received +ProductQtyInCustomersOrdersRunning=Ποσότητα προϊόντων σε ανοιχτές παραγγελίες πελατών +ProductQtyInSuppliersOrdersRunning=Ποσότητα προϊόντων σε ανοιχτές παραγγελίες προμηθευτών +ProductQtyInShipmentAlreadySent=Ποσότητα προϊόντων από ανοιγμένες παραγγελίες του πελάτη που έχουν ήδη αποσταλεί +ProductQtyInSuppliersShipmentAlreadyRecevied=Ποσότητα προϊόντων από ανοιγμένες παραγγελίες του προμηθευτή που έχουν ήδη ληφθεί # Sending methods SendingMethodCATCH=Πιάσε τον πελάτη diff --git a/htdocs/langs/el_GR/stocks.lang b/htdocs/langs/el_GR/stocks.lang index 26a0e5802bc..438a99de606 100644 --- a/htdocs/langs/el_GR/stocks.lang +++ b/htdocs/langs/el_GR/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Μέση σταθμική τιμή PMPValueShort=WAP EnhancedValueOfWarehouses=Αποθήκες αξία UserWarehouseAutoCreate=Δημιουργήστε μια αποθήκη αυτόματα κατά τη δημιουργία ενός χρήστη +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Ποσότητα αποστέλλονται QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=Η αποθήκη %s να να χρησιμοπ WarehouseForStockIncrease=Η αποθήκη %s θα χρησιμοποιηθεί για την αύξηση των αποθεμάτων ForThisWarehouse=Για αυτή την αποθήκη ReplenishmentStatusDesc=Αυτή είναι η λίστα όλων των προϊόντων με απόθεμα κάτω από το επιθυμητό απόθεμα (ή χαμηλότερες από την αξία συναγερμού, εφόσον κουτάκι "ειδοποίηση μόνο" είναι επιλεγμένο), και προτείνουμε να δημιουργήσετε παραγγελίες σε προμηθευτές για να αναπληρώσει τη διαφορά. -ReplenishmentOrdersDesc=Αυτή είναι η λίστα όλων των ανοικτών παραγγελιών σε προμηθευτές +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Αναπληρώσεις NbOfProductBeforePeriod=Ποσότητα του προϊόντος %s σε απόθεμα πριν από την επιλεγμένη περίοδο (< %s) NbOfProductAfterPeriod=Ποσότητα του προϊόντος %s σε απόθεμα πριν από την επιλεγμένη περίοδο (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/el_GR/suppliers.lang b/htdocs/langs/el_GR/suppliers.lang index 8a37a970d19..34b5a692b6f 100644 --- a/htdocs/langs/el_GR/suppliers.lang +++ b/htdocs/langs/el_GR/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Προμηθευτές -Supplier=Προμηθευτής AddSupplier=Δημιουργία προμηθευτή SupplierRemoved=Ο προμηθευτής αφαιρέθηκε SuppliersInvoice=Τιμολόγιο προμηθευτή @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Τιμολόγια και πληρωμές προμ ExportDataset_fournisseur_3=Παραγγελίες σε προμηθευτές και σειρά γραμμών ApproveThisOrder=Έγκριση της παραγγελίας ConfirmApproveThisOrder=Είστε σίγουροι ότι θέλετε να εγκρίνετε την παραγγελία %s ; -DenyingThisOrder=Άρνηση της παραγγελίας +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Είστε σίγουροι ότι θέλετε να αρνηθείτε την παραγγελία %s ; ConfirmCancelThisOrder=Είστε σίγουροι ότι θέλετε να ακυρώσετε την παραγγελία %s ; AddCustomerOrder=Δημιουργία παραγγελίας πελάτη diff --git a/htdocs/langs/el_GR/trips.lang b/htdocs/langs/el_GR/trips.lang index 4de061f4c84..fff849b2bf4 100644 --- a/htdocs/langs/el_GR/trips.lang +++ b/htdocs/langs/el_GR/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Ταξίδι -Trips=Ταξίδια -TripsAndExpenses=Ταξίδια και έξοδα -TripsAndExpensesStatistics=Στατιστικά ταξιδιών και εξόδων -TripCard=Καρτέλα ταξιδιού -AddTrip=Δημιουργία ταξιδιού -ListOfTrips=Λίστα ταξιδιών +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Λίστα φόρων -NewTrip=Νέο ταξίδι +NewTrip=New expense report CompanyVisited=Έγινε επίσκεψη σε εταιρία/οργανισμό Kilometers=Χιλιόμετρα FeesKilometersOrAmout=Σύνολο χλμ -DeleteTrip=Διαγραφή ταξιδιού -ConfirmDeleteTrip=Είστε σίγουροι ότι θέλετε να διαγράψετε το ταξίδι; -TF_OTHER=Άλλο -TF_LUNCH=Γεύμα -TF_TRIP=Ταξίδι -ListTripsAndExpenses=Λίστα ταξιδιών και εξόδων -ExpensesArea=Ταξίδια και έξοδα περιοχή -SearchATripAndExpense=Αναζήτηση ένα ταξίδι και τα έξοδα +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Ταξινομήστε «επιστραφεί» +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Άλλο +TF_TRANSPORTATION=Transportation +TF_LUNCH=Γεύμα +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/en_AU/bills.lang b/htdocs/langs/en_AU/bills.lang index 737f979cf47..8d5dc2add1a 100644 --- a/htdocs/langs/en_AU/bills.lang +++ b/htdocs/langs/en_AU/bills.lang @@ -1,2 +1,2 @@ -# Dolibarr language file - en_AU - bills -BankCode=Bank code or BSB \ No newline at end of file +# Dolibarr language file - Source file is en_US - bills +BankCode=Bank code or BSB diff --git a/htdocs/langs/en_AU/companies.lang b/htdocs/langs/en_AU/companies.lang index 93ff6ae4990..42069924aee 100644 --- a/htdocs/langs/en_AU/companies.lang +++ b/htdocs/langs/en_AU/companies.lang @@ -1,9 +1,6 @@ -# Dolibarr language file - en_AU - companies -# This file contains only line that must differs from en_US +# Dolibarr language file - Source file is en_US - companies VATIsUsed=GST is used VATIsNotUsed=GST is not used VATIntra=GST number VATIntraShort=GST number VATIntraVeryShort=GST -VATIntraSyntaxIsValid=Syntax is valid -VATIntraValueIsValid=Value is valid \ No newline at end of file diff --git a/htdocs/langs/en_AU/compta.lang b/htdocs/langs/en_AU/compta.lang index a49ba11a816..d655e71ddf6 100644 --- a/htdocs/langs/en_AU/compta.lang +++ b/htdocs/langs/en_AU/compta.lang @@ -1,5 +1,4 @@ -# Dolibarr language file - en_AU - compta -# This file contains only line that must differs from en_US +# Dolibarr language file - Source file is en_US - compta AmountHTVATRealReceived=Amount excl GST collected AmountHTVATRealPaid=Amount excl GST paid VATToPay=GST to pay @@ -11,5 +10,4 @@ VATCollected=GST collected NewVATPayment=New GST payment VATPayment=GST Payment VATPayments=GST Payments -TotalToPay=Total to pay -TotalVATReceived=Total GST received \ No newline at end of file +TotalVATReceived=Total GST received diff --git a/htdocs/langs/en_AU/main.lang b/htdocs/langs/en_AU/main.lang index a2be380b7c2..27e0c30c352 100644 --- a/htdocs/langs/en_AU/main.lang +++ b/htdocs/langs/en_AU/main.lang @@ -1,5 +1,7 @@ -# Dolibarr language file - en_AU - main -# This file contains only lines that must differs from en_US file +# Dolibarr language file - Source file is en_US - main +DIRECTION=ltr +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 SeparatorDecimal=, SeparatorThousand=Space FormatDateShort=%d/%m/%Y @@ -9,19 +11,14 @@ FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/mm/yy FormatDateShortJQueryInput=dd/mm/yy FormatHourShort=%H:%M +FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y FormatDateText=%d %B %Y FormatDateHourShort=%d/%m/%Y %H:%M +FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p FormatDateHourTextShort=%d %b %Y %H:%M FormatDateHourText=%d %B %Y %H:%M -UnitPrice=Unit price UnitPriceHT=Unit price (excl GST) -UnitPriceTTC=Unit price -PriceU=U.P. -PriceUHT=U.P. (net) -PriceUTTC=U.P. -PriceUHTShort=P.U. HT -PriceUTTCShort=P.U. TTC AmountHT=Amount (excl GST) AmountTTC=Amount (incl GST) AmountVAT=Amount GST @@ -37,4 +34,4 @@ IncludedVAT=Included GST HT=excl GST TTC=Incl GST VAT=GST -VATRate=GST Rate \ No newline at end of file +VATRate=GST Rate diff --git a/htdocs/langs/en_AU/withdrawals.lang b/htdocs/langs/en_AU/withdrawals.lang index 59a88bb9fe0..503597bc8ec 100644 --- a/htdocs/langs/en_AU/withdrawals.lang +++ b/htdocs/langs/en_AU/withdrawals.lang @@ -1,2 +1,2 @@ -# Dolibarr language file - en_AU - withdrawals -ThirdPartyBankCode=Third party bank code or BSB \ No newline at end of file +# Dolibarr language file - Source file is en_US - withdrawals +ThirdPartyBankCode=Third party bank code or BSB diff --git a/htdocs/langs/en_GB/admin.lang b/htdocs/langs/en_GB/admin.lang index 28a42a2d38e..d2ceaa175f8 100644 --- a/htdocs/langs/en_GB/admin.lang +++ b/htdocs/langs/en_GB/admin.lang @@ -1,2 +1,2 @@ -# Dolibarr language file - en_GB - admin +# Dolibarr language file - Source file is en_US - admin DictionaryVAT=VAT Rates diff --git a/htdocs/langs/en_GB/banks.lang b/htdocs/langs/en_GB/banks.lang index 9c0e42f034e..289acc55386 100644 --- a/htdocs/langs/en_GB/banks.lang +++ b/htdocs/langs/en_GB/banks.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - en_GB - main +# Dolibarr language file - Source file is en_US - banks ValidateCheckReceipt=Validate this cheque receipt ? ConfirmValidateCheckReceipt=Are you sure you want to validate this cheque receipt, no change will be possible once this is done ? DeleteCheckReceipt=Delete this cheque receipt ? @@ -7,4 +7,4 @@ BankChecks=Bank cheques BankChecksToReceipt=Cheques waiting for deposit ShowCheckReceipt=Show cheque deposit receipt NumberOfCheques=Nb of cheque -SelectChequeTransactionAndGenerate=Select/filter cheques to include into the cheque deposit receipt and click on "Create". \ No newline at end of file +SelectChequeTransactionAndGenerate=Select/filter cheques to include into the cheque deposit receipt and click on "Create". diff --git a/htdocs/langs/en_GB/bills.lang b/htdocs/langs/en_GB/bills.lang index 7f57d6e2fb8..025fcbe0f18 100644 --- a/htdocs/langs/en_GB/bills.lang +++ b/htdocs/langs/en_GB/bills.lang @@ -1,9 +1,18 @@ -# Dolibarr language file - en_GB - main -PrettyLittleSentence=Accept the amount of payments due by cheques issued in my name as a Member of an accounting association approved by the Fiscal Administration. +# Dolibarr language file - Source file is en_US - bills +PaymentConditionShortRECEP=Due on Receipt +PaymentConditionRECEP=Due on Receipt +PaymentTypeVIR=Bank transfer +PaymentTypeShortVIR=Bank transfer +PaymentTypePRE=Direct debit +PaymentTypeShortPRE=Direct debit +PaymentTypeCHQ=Cheque +PaymentTypeShortCHQ=Cheque +BankCode=Sort code ChequeNumber=Cheque N° ChequeOrTransferNumber=Cheque/Transfer N° ChequeMaker=Cheque transmitter ChequeBank=Bank of Cheque +PrettyLittleSentence=Accept the amount of payments due by cheques issued in my name as a Member of an accounting association approved by the Fiscal Administration. PaymentByChequeOrderedTo=Cheque payment (including tax) are payable to %s send to PaymentByChequeOrderedToShort=Cheque payment (including tax) are payable to MenuChequeDeposits=Cheques deposits @@ -13,26 +22,3 @@ ChequesReceipts=Cheques receipts ChequesArea=Cheques deposits area ChequeDeposits=Cheques deposits Cheques=Cheques -BankCode=Sort code - -# PaymentConditions -PaymentConditionShortRECEP=Due on Receipt -PaymentConditionRECEP=Due on Receipt - -# PaymentType -PaymentTypeVIR=Bank transfer -PaymentTypeShortVIR=Bank transfer -PaymentTypePRE=Direct debit -PaymentTypeShortPRE=Direct debit -PaymentTypeLIQ=Cash -PaymentTypeShortLIQ=Cash -PaymentTypeCB=Credit card -PaymentTypeShortCB=Credit card -PaymentTypeCHQ=Cheque -PaymentTypeShortCHQ=Cheque -PaymentTypeTIP=TIP -PaymentTypeShortTIP=TIP -PaymentTypeVAD=On line payment -PaymentTypeShortVAD=On line payment -PaymentTypeTRA=Bill payment -PaymentTypeShortTRA=Bill \ No newline at end of file diff --git a/htdocs/langs/en_GB/compta.lang b/htdocs/langs/en_GB/compta.lang index fdc28352121..8bd70a68704 100644 --- a/htdocs/langs/en_GB/compta.lang +++ b/htdocs/langs/en_GB/compta.lang @@ -1,7 +1,7 @@ -# Dolibarr language file - en_GB - main +# Dolibarr language file - Source file is en_US - compta CheckReceipt=Cheque deposit CheckReceiptShort=Cheque deposit NewCheckDeposit=New cheque deposit NoWaitingChecks=No cheques waiting for deposit. DateChequeReceived=Cheque reception date -NbOfCheques=Nb of cheques \ No newline at end of file +NbOfCheques=Nb of cheques diff --git a/htdocs/langs/en_GB/exports.lang b/htdocs/langs/en_GB/exports.lang index 4f035a9aea4..982dcc4bca9 100644 --- a/htdocs/langs/en_GB/exports.lang +++ b/htdocs/langs/en_GB/exports.lang @@ -1,2 +1 @@ -# Dolibarr language file - en_GB - exports -BankCode=Sort code \ No newline at end of file +# Dolibarr language file - Source file is en_US - exports diff --git a/htdocs/langs/en_GB/main.lang b/htdocs/langs/en_GB/main.lang index 556febcaaaf..ced56a38a13 100644 --- a/htdocs/langs/en_GB/main.lang +++ b/htdocs/langs/en_GB/main.lang @@ -1,4 +1,7 @@ -# Dolibarr language file - en_GB - main +# Dolibarr language file - Source file is en_US - main +DIRECTION=ltr +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 SeparatorDecimal=. SeparatorThousand=, FormatDateShort=%d/%m/%Y @@ -8,15 +11,16 @@ FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/mm/yy FormatDateShortJQueryInput=dd/mm/yy FormatHourShort=%H:%M +FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y FormatDateText=%d %B %Y FormatDateHourShort=%d/%m/%Y %H:%M +FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p FormatDateHourTextShort=%d %b %Y %H:%M FormatDateHourText=%d %B %Y %H:%M +AmountVAT=Amount VAT TotalVAT=Total VAT IncludedVAT=Included VAT -HT=Net of tax TTC=Inc. VAT VAT=VAT VATRate=VAT Rate -AmountVAT=Amount VAT diff --git a/htdocs/langs/en_GB/other.lang b/htdocs/langs/en_GB/other.lang index 74c8e72f4c6..5c827f1c4ed 100644 --- a/htdocs/langs/en_GB/other.lang +++ b/htdocs/langs/en_GB/other.lang @@ -1,5 +1,4 @@ -# Dolibarr language file - en_US - other -VolumeUnitm3=m3 +# Dolibarr language file - Source file is en_US - other VolumeUnitdm3=dm3 (l) VolumeUnitcm3=cm3 (ml) -VolumeUnitmm3=mm3 (µl) \ No newline at end of file +VolumeUnitmm3=mm3 (µl) diff --git a/htdocs/langs/en_IN/admin.lang b/htdocs/langs/en_IN/admin.lang index 31a47e78634..4e6f0c06015 100644 --- a/htdocs/langs/en_IN/admin.lang +++ b/htdocs/langs/en_IN/admin.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - en_IN - admin +# Dolibarr language file - Source file is en_US - admin Module20Name=Quotations Module20Desc=Quotation's management Permission21=Read quotations @@ -9,10 +9,9 @@ Permission26=Close quotations Permission27=Delete quotations Permission28=Export quotations WebCalAddEventOnStatusPropal=Add calendar event on quotations status change -##### Proposals ##### PropalSetup=Quotations module setup ProposalsNumberingModules=Quotations numbering modules ProposalsPDFModules=Quotations documents models HideTreadedPropal=Hide the treated quotations in the list FreeLegalTextOnProposal=Free text on quotations -WatermarkOnDraftProposal=Watermark on draft quotations (none if empty) \ No newline at end of file +WatermarkOnDraftProposal=Watermark on draft quotations (none if empty) diff --git a/htdocs/langs/en_IN/bills.lang b/htdocs/langs/en_IN/bills.lang index 24e1b4e307d..e7f2dd11cfc 100644 --- a/htdocs/langs/en_IN/bills.lang +++ b/htdocs/langs/en_IN/bills.lang @@ -1,10 +1,11 @@ -# Dolibarr language file - en_IN - bills +# Dolibarr language file - Source file is en_US - bills RelatedCommercialProposals=Related quotations +PaymentTypeShortCHQ=Cheque ChequeNumber=Cheque N° ChequeOrTransferNumber=Cheque/Transfer N° ChequeMaker=Cheque transmitter ChequeBank=Bank of Cheque -PrettyLittleSentence=Accept the amount of payments due by cheques issued in my name as a Member of an accounting association approved by the Fiscal Administration. +PrettyLittleSentence=Accept the amount of payments due by cheques issued in my name as a Member of an accounting association approved by the Fiscal Administration. PaymentByChequeOrderedTo=Cheque payment (including tax) are payable to %s send to PaymentByChequeOrderedToShort=Cheque payment (including tax) are payable to MenuChequeDeposits=Cheques deposits @@ -14,4 +15,3 @@ ChequesReceipts=Cheques receipts ChequesArea=Cheques deposits area ChequeDeposits=Cheques deposits Cheques=Cheques -PaymentTypeShortCHQ=Cheque diff --git a/htdocs/langs/en_IN/boxes.lang b/htdocs/langs/en_IN/boxes.lang index 73827f379f9..921fc0285aa 100644 --- a/htdocs/langs/en_IN/boxes.lang +++ b/htdocs/langs/en_IN/boxes.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - en_IN - boxes +# Dolibarr language file - Source file is en_US - boxes BoxLastProposals=Last quotations BoxTitleLastPropals=Last %s recorded quotations -NoRecordedProposals=No recorded quotations \ No newline at end of file +NoRecordedProposals=No recorded quotations diff --git a/htdocs/langs/en_IN/companies.lang b/htdocs/langs/en_IN/companies.lang index 2aade00195f..6c3e1637652 100644 --- a/htdocs/langs/en_IN/companies.lang +++ b/htdocs/langs/en_IN/companies.lang @@ -1,2 +1,2 @@ -# Dolibarr language file - en_IN - companies -Zip=Pin Code \ No newline at end of file +# Dolibarr language file - Source file is en_US - companies +Zip=Pin Code diff --git a/htdocs/langs/en_IN/compta.lang b/htdocs/langs/en_IN/compta.lang index a4baaf37679..ffd8565c10c 100644 --- a/htdocs/langs/en_IN/compta.lang +++ b/htdocs/langs/en_IN/compta.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - en_IN - compta +# Dolibarr language file - Source file is en_US - compta CheckReceipt=Cheque deposit CheckReceiptShort=Cheque deposit NewCheckDeposit=New cheque deposit diff --git a/htdocs/langs/en_IN/main.lang b/htdocs/langs/en_IN/main.lang index 44f3c729259..7fbca74ca3d 100644 --- a/htdocs/langs/en_IN/main.lang +++ b/htdocs/langs/en_IN/main.lang @@ -1,5 +1,7 @@ -# Dolibarr language file - en_US - main +# Dolibarr language file - Source file is en_US - main DIRECTION=ltr +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 SeparatorDecimal=. SeparatorThousand=, FormatDateShort=%d/%m/%Y @@ -9,16 +11,17 @@ FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/mm/yy FormatDateShortJQueryInput=dd/mm/yy FormatHourShort=%I:%M %p +FormatHourShortDuration=%H:%M FormatDateTextShort=%b %d, %Y FormatDateText=%B %d, %Y FormatDateHourShort=%d/%m/%Y %I:%M %p +FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p FormatDateHourTextShort=%d %b %Y, %I:%M %p FormatDateHourText=%d %B %Y, %I:%M %p -CommercialProposalsShort=Quotations +AmountVAT=Amount VAT TotalVAT=Total VAT IncludedVAT=Included VAT -HT=Net of tax TTC=Inc. VAT VAT=VAT VATRate=VAT Rate -AmountVAT=Amount VAT +CommercialProposalsShort=Quotations diff --git a/htdocs/langs/en_IN/other.lang b/htdocs/langs/en_IN/other.lang index 9f02c19eee2..67a6767b663 100644 --- a/htdocs/langs/en_IN/other.lang +++ b/htdocs/langs/en_IN/other.lang @@ -1,2 +1,2 @@ -# Dolibarr language file - en_US - other +# Dolibarr language file - Source file is en_US - other PredefinedMailContentSendProposal=__CONTACTCIVNAME__ \n\n You will find here the quotation __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/en_IN/projects.lang b/htdocs/langs/en_IN/projects.lang index 5c24ec1c76f..72a5a5089ce 100644 --- a/htdocs/langs/en_IN/projects.lang +++ b/htdocs/langs/en_IN/projects.lang @@ -1,2 +1,2 @@ -# Dolibarr language file - en_IN - projects -ListProposalsAssociatedProject=List of the quotations associated with the project \ No newline at end of file +# Dolibarr language file - Source file is en_US - projects +ListProposalsAssociatedProject=List of the quotations associated with the project diff --git a/htdocs/langs/en_IN/propal.lang b/htdocs/langs/en_IN/propal.lang index 7559a0af6ee..04f74459023 100644 --- a/htdocs/langs/en_IN/propal.lang +++ b/htdocs/langs/en_IN/propal.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - en_US - propal +# Dolibarr language file - Source file is en_US - propal Proposals=Quotations Proposal=Quotation ProposalShort=Quotation @@ -40,12 +40,9 @@ OtherPropals=Other quotations CopyPropalFrom=Create quotation by copying existing quotation CreateEmptyPropal=Create empty quotation or from list of products/services DefaultProposalDurationValidity=Default quotation validity duration (in days) -UseCustomerContactAsPropalRecipientIfExist=Use customer contact address if defined instead of third party address as proposal recipient address ClonePropal=Clone quotation ConfirmClonePropal=Are you sure you want to clone this quotation %s ? ProposalsAndProposalsLines=Quotation and lines ProposalLine=Quotation line -# Document models DocModelAzurDescription=A complete quotation (logo...) DocModelJauneDescription=Jaune quotation model -DocModelRoigDescription=A complete quotation model with Spanish tax RE and IRPF diff --git a/htdocs/langs/en_NZ/companies.lang b/htdocs/langs/en_NZ/companies.lang index 461f74aef64..42069924aee 100644 --- a/htdocs/langs/en_NZ/companies.lang +++ b/htdocs/langs/en_NZ/companies.lang @@ -1,9 +1,6 @@ -# Dolibarr language file - en_NZ - companies -# This file contains only line that must differs from en_US +# Dolibarr language file - Source file is en_US - companies VATIsUsed=GST is used VATIsNotUsed=GST is not used VATIntra=GST number VATIntraShort=GST number VATIntraVeryShort=GST -VATIntraSyntaxIsValid=Syntax is valid -VATIntraValueIsValid=Value is valid \ No newline at end of file diff --git a/htdocs/langs/en_NZ/compta.lang b/htdocs/langs/en_NZ/compta.lang index 238053d97a7..d655e71ddf6 100644 --- a/htdocs/langs/en_NZ/compta.lang +++ b/htdocs/langs/en_NZ/compta.lang @@ -1,5 +1,4 @@ -# Dolibarr language file - en_NZ - compta -# This file contains only line that must differs from en_US +# Dolibarr language file - Source file is en_US - compta AmountHTVATRealReceived=Amount excl GST collected AmountHTVATRealPaid=Amount excl GST paid VATToPay=GST to pay @@ -11,5 +10,4 @@ VATCollected=GST collected NewVATPayment=New GST payment VATPayment=GST Payment VATPayments=GST Payments -TotalToPay=Total to pay -TotalVATReceived=Total GST received \ No newline at end of file +TotalVATReceived=Total GST received diff --git a/htdocs/langs/en_NZ/main.lang b/htdocs/langs/en_NZ/main.lang index d07603dfbd8..93e9771e575 100644 --- a/htdocs/langs/en_NZ/main.lang +++ b/htdocs/langs/en_NZ/main.lang @@ -1,5 +1,7 @@ -# Dolibarr language file - en_NZ - main -# This file contains only line that must differs from en_US file +# Dolibarr language file - Source file is en_US - main +DIRECTION=ltr +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 SeparatorDecimal=. SeparatorThousand=, FormatDateShort=%d/%m/%Y @@ -9,19 +11,14 @@ FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/mm/yy FormatDateShortJQueryInput=dd/mm/yy FormatHourShort=%H:%M +FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y FormatDateText=%d %B %Y FormatDateHourShort=%d/%m/%Y %H:%M +FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p FormatDateHourTextShort=%d %b %Y %H:%M FormatDateHourText=%d %B %Y %H:%M -UnitPrice=Unit price UnitPriceHT=Unit price (excl GST) -UnitPriceTTC=Unit price -PriceU=U.P. -PriceUHT=U.P. (net) -PriceUTTC=U.P. -PriceUHTShort=P.U. HT -PriceUTTCShort=P.U. TTC AmountHT=Amount (excl GST) AmountTTC=Amount (incl GST) AmountVAT=Amount GST @@ -37,4 +34,4 @@ IncludedVAT=Included GST HT=excl GST TTC=Incl GST VAT=GST -VATRate=GST Rate \ No newline at end of file +VATRate=GST Rate diff --git a/htdocs/langs/en_SA/main.lang b/htdocs/langs/en_SA/main.lang index 8712c2081e1..f8402963091 100644 --- a/htdocs/langs/en_SA/main.lang +++ b/htdocs/langs/en_SA/main.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - en_SA - main +# Dolibarr language file - Source file is en_US - main DIRECTION=ltr FONTFORPDF=DejaVuSans FONTSIZEFORPDF=9 @@ -15,5 +15,6 @@ FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y FormatDateText=%d %B %Y FormatDateHourShort=%d/%m/%Y %I:%M %p +FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p FormatDateHourTextShort=%d %b %Y, %I:%M %p -FormatDateHourText=%d %B %Y, %I:%M %p \ No newline at end of file +FormatDateHourText=%d %B %Y, %I:%M %p diff --git a/htdocs/langs/en_SA/propal.lang b/htdocs/langs/en_SA/propal.lang index 6f5ff0a090c..459cdde70f6 100644 --- a/htdocs/langs/en_SA/propal.lang +++ b/htdocs/langs/en_SA/propal.lang @@ -1,7 +1,7 @@ -# Dolibarr language file - en_SA - propal +# Dolibarr language file - Source file is en_US - propal Proposals=Commercial Proposals Proposal=Commercial Proposal Prop=Commercial Proposals CommercialProposal=Commercial Proposal CommercialProposals=Commercial Proposals -DateEndPropal=Validity Ending Date \ No newline at end of file +DateEndPropal=Validity Ending Date diff --git a/htdocs/langs/en_ZA/companies.lang b/htdocs/langs/en_ZA/companies.lang index f41855b944d..70564679d5f 100644 --- a/htdocs/langs/en_ZA/companies.lang +++ b/htdocs/langs/en_ZA/companies.lang @@ -1,9 +1 @@ -# Dolibarr language file - en_ZA - companies -# This file contains only line that must differs from en_US -VATIsUsed=VAT is used -VATIsNotUsed=VAT is not used -VATIntra=VAT number -VATIntraShort=VAT number -VATIntraVeryShort=VAT -VATIntraSyntaxIsValid=Syntax is valid -VATIntraValueIsValid=Value is valid \ No newline at end of file +# Dolibarr language file - Source file is en_US - companies diff --git a/htdocs/langs/en_ZA/compta.lang b/htdocs/langs/en_ZA/compta.lang index 1767142a837..1738634c769 100644 --- a/htdocs/langs/en_ZA/compta.lang +++ b/htdocs/langs/en_ZA/compta.lang @@ -1,15 +1 @@ -# Dolibarr language file - en_ZA - compta -# This file contains only line that must differs from en_US -AmountHTVATRealReceived=Amount excl VAT collected -AmountHTVATRealPaid=Amount excl VAT paid -VATToPay=VAT to pay -VATReceived=VAT received -VATToCollect=VAT to collect -VATSummary=VAT Summary -VATPaid=VAT paid -VATCollected=VAT collected -NewVATPayment=New VAT payment -VATPayment=VAT Payment -VATPayments=VAT Payments -TotalToPay=Total to pay -TotalVATReceived=Total VAT received \ No newline at end of file +# Dolibarr language file - Source file is en_US - compta diff --git a/htdocs/langs/en_ZA/main.lang b/htdocs/langs/en_ZA/main.lang index d1aad81392a..a696d3c77d8 100644 --- a/htdocs/langs/en_ZA/main.lang +++ b/htdocs/langs/en_ZA/main.lang @@ -1,5 +1,7 @@ -# Dolibarr language file - en_ZA - main -# This file contains only line that must differs from en_US file +# Dolibarr language file - Source file is en_US - main +DIRECTION=ltr +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 SeparatorDecimal=. SeparatorThousand=, FormatDateShort=%Y/%m/%d @@ -9,32 +11,10 @@ FormatDateShortJavaInput=yyyy/MM/yy FormatDateShortJQuery=yy/mm/yy FormatDateShortJQueryInput=yy/mm/dd FormatHourShort=%H:%M +FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y FormatDateText=%d %B %Y FormatDateHourShort=%d/%m/%Y %H:%M +FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p FormatDateHourTextShort=%d %b %Y %H:%M FormatDateHourText=%d %B %Y %H:%M -UnitPrice=Unit price -UnitPriceHT=Unit price (without VAT) -UnitPriceTTC=Unit price -PriceU=U.P. -PriceUHT=U.P. (net) -PriceUTTC=U.P. -PriceUHTShort=P.U. excl VAT -PriceUTTCShort=P.U. incl VAT -AmountHT=Amount (excl VAT) -AmountTTC=Amount (incl VAT) -AmountVAT=Amount VAT -PriceQtyHT=Price for this quantity excl VAT -PriceQtyMinHT=Price quantity min. excl VAT -PriceQtyTTC=Price for this quantity incl VAT -PriceQtyMinTTC=Price quantity min. incl VAT -TotalHT=Total (excl VAT) -TotalTTC=Total (incl VAT) -TotalTTCToYourCredit=Total (incl VAT) to your credit -TotalVAT=Total VAT -IncludedVAT=Included VAT -HT=excl VAT -TTC=Incl VAT -VAT=VAT -VATRate=VAT Rate \ No newline at end of file diff --git a/htdocs/langs/es_AR/admin.lang b/htdocs/langs/es_AR/admin.lang index 39a4dac9a4e..8161a7a8e7c 100644 --- a/htdocs/langs/es_AR/admin.lang +++ b/htdocs/langs/es_AR/admin.lang @@ -4,5 +4,3 @@ Module30Desc=Gestión de facturas y notas de crédito a clientes. Gestión factu BillsNumberingModule=Módulo de numeración de facturas y notas de crédito CreditNoteSetup=Configuración del módulo notas de crédito CreditNotePDFModules=Modelo de documento de notas de crédito -CreditNote=Nota de crédito -CreditNotes=Notas de crédito diff --git a/htdocs/langs/es_AR/bills.lang b/htdocs/langs/es_AR/bills.lang index 8bd4d0b82d8..75496f66e43 100644 --- a/htdocs/langs/es_AR/bills.lang +++ b/htdocs/langs/es_AR/bills.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - es_AR - bills +# Dolibarr language file - Source file is en_US - bills InvoiceAvoir=Nota de crédito InvoiceAvoirAsk=Nota de crédito para corregir la factura InvoiceAvoirDesc=La nota de crédito es una factura negativa destinada a compensar un importe de factura que difiere del importe realmente pagado (por haber pagado de más o por devolución de productos, por ejemplo). @@ -11,12 +11,11 @@ ConfirmClassifyPaidPartiallyReasonAvoir=El resto a pagar (%s %s) se ha re ConfirmClassifyPaidPartiallyReasonOtherDesc=Esta elección será posible, por ejemplo, en los casos siguiente:
-pago parcial ya que una partida de productos se ha devuleto.
- reclamado por no entregar productos de la factura
En todos los casos, la reclamación debe regularizarse mediante una nota de crédito ShowInvoiceAvoir=Ver nota de crédito AlreadyPaidNoCreditNotesNoDeposits=Ya pagado (excluidos las notas de crédito y anticipos) +AddCreditNote=Crear nota de crédito ShowDiscount=Ver la nota de crédito CreditNote=Nota de crédito CreditNotes=Notas de crédito DiscountFromCreditNote=Descuento resultante de la nota de crédito %s AbsoluteDiscountUse=Este tipo de crédito no puede ser utilizado en una factura antes de su validación -CreditNoteDepositUse=La factura debe de estar validada para poder utilizar este tipo de créditos CreditNoteConvertedIntoDiscount=Esta nota de crédito se convirtió en %s TerreNumRefModelDesc1=Devuelve el número bajo el formato %syymm-nnnn para las facturas y %syymm-nnnn para las notas de crédito donde yy es el año, mm. el mes y nnnn un contador secuencial sin ruptura y sin permanencia a 0 -AddCreditNote=Crear nota de crédito \ No newline at end of file diff --git a/htdocs/langs/es_AR/companies.lang b/htdocs/langs/es_AR/companies.lang index 458044a34c1..36f5cbcff4d 100644 --- a/htdocs/langs/es_AR/companies.lang +++ b/htdocs/langs/es_AR/companies.lang @@ -1,5 +1,5 @@ -# Dolibarr language file - es_AR - companies -CompanyHasCreditNote=Este cliente tiene %s %s notas de crédito/anticipos disponibles +# Dolibarr language file - Source file is en_US - companies VATIntra=CUIT VATIntraShort=CUIT -VATIntraVeryShort=CUIT \ No newline at end of file +VATIntraVeryShort=CUIT +CompanyHasCreditNote=Este cliente tiene %s %s notas de crédito/anticipos disponibles diff --git a/htdocs/langs/es_AR/stocks.lang b/htdocs/langs/es_AR/stocks.lang index 6d24900d446..295151fbd08 100644 --- a/htdocs/langs/es_AR/stocks.lang +++ b/htdocs/langs/es_AR/stocks.lang @@ -1,3 +1,3 @@ -# Dolibarr language file - es_AR - stocks +# Dolibarr language file - Source file is en_US - stocks DeStockOnBill=Decrementar los stocks físicos sobre las facturas/notas de crédito a clientes ReStockOnBill=Incrementar los stocks físicos sobre las facturas/notas de crédito de proveedores diff --git a/htdocs/langs/es_CL/agenda.lang b/htdocs/langs/es_CL/agenda.lang index deefdc2275c..2418f69ed4c 100644 --- a/htdocs/langs/es_CL/agenda.lang +++ b/htdocs/langs/es_CL/agenda.lang @@ -1,2 +1,3 @@ +# Dolibarr language file - Source file is en_US - agenda PropalValidatedInDolibarr=Cotización %s validada -ProposalSentByEMail=Cotización %s enviada por e-mail \ No newline at end of file +ProposalSentByEMail=Cotización %s enviada por e-mail diff --git a/htdocs/langs/es_CL/bills.lang b/htdocs/langs/es_CL/bills.lang index 63a78444437..2199e215bd6 100644 --- a/htdocs/langs/es_CL/bills.lang +++ b/htdocs/langs/es_CL/bills.lang @@ -1 +1,2 @@ -RelatedCommercialProposals=Cotizaciones asociadas \ No newline at end of file +# Dolibarr language file - Source file is en_US - bills +RelatedCommercialProposals=Cotizaciones asociadas diff --git a/htdocs/langs/es_CL/boxes.lang b/htdocs/langs/es_CL/boxes.lang index 970c91a8fe5..8c9a36c30fd 100644 --- a/htdocs/langs/es_CL/boxes.lang +++ b/htdocs/langs/es_CL/boxes.lang @@ -1,5 +1,6 @@ +# Dolibarr language file - Source file is en_US - boxes BoxLastProposals=Últimas cotizaciones BoxTitleLastPropals=Las %s últimas cotizaciones registradas NoRecordedProposals=Sin cotizaciones registradas BoxProposalsPerMonth=Cotizaciones por mes -ForProposals=Cotizaciones \ No newline at end of file +ForProposals=Cotizaciones diff --git a/htdocs/langs/es_CL/commercial.lang b/htdocs/langs/es_CL/commercial.lang index d468d7d5f19..78806e09307 100644 --- a/htdocs/langs/es_CL/commercial.lang +++ b/htdocs/langs/es_CL/commercial.lang @@ -1,4 +1,5 @@ +# Dolibarr language file - Source file is en_US - commercial SendPropalRef=Envío de la cotización %s ActionAC_PROP=Envío cotización por correo DraftPropals=Cotizaciones borrador -SearchPropal=Buscar una cotización \ No newline at end of file +SearchPropal=Buscar una cotización diff --git a/htdocs/langs/es_CL/companies.lang b/htdocs/langs/es_CL/companies.lang index daef89c75cf..66d1f1d9dc1 100644 --- a/htdocs/langs/es_CL/companies.lang +++ b/htdocs/langs/es_CL/companies.lang @@ -1,2 +1,3 @@ +# Dolibarr language file - Source file is en_US - companies ContactForProposals=Contacto de cotizaciones -NoContactForAnyProposal=Este contacto no es contacto de ninguna cotización \ No newline at end of file +NoContactForAnyProposal=Este contacto no es contacto de ninguna cotización diff --git a/htdocs/langs/es_CL/compta.lang b/htdocs/langs/es_CL/compta.lang index bf18ae78c5f..efe0bb1627b 100644 --- a/htdocs/langs/es_CL/compta.lang +++ b/htdocs/langs/es_CL/compta.lang @@ -1 +1,2 @@ -ProposalStats=Estadísticas de cotizaciones \ No newline at end of file +# Dolibarr language file - Source file is en_US - compta +ProposalStats=Estadísticas de cotizaciones diff --git a/htdocs/langs/es_CL/ecm.lang b/htdocs/langs/es_CL/ecm.lang index 3e20b3e6628..693bda9e4a2 100644 --- a/htdocs/langs/es_CL/ecm.lang +++ b/htdocs/langs/es_CL/ecm.lang @@ -1,2 +1,3 @@ +# Dolibarr language file - Source file is en_US - ecm DocsProposals=Documentos cotizaciones -ECMDocsByProposals=Documentos asociados a cotizaciones \ No newline at end of file +ECMDocsByProposals=Documentos asociados a cotizaciones diff --git a/htdocs/langs/es_CL/install.lang b/htdocs/langs/es_CL/install.lang index 40d447b8653..2e02f3816ab 100644 --- a/htdocs/langs/es_CL/install.lang +++ b/htdocs/langs/es_CL/install.lang @@ -1 +1,2 @@ -MigrationProposal=Migración de datos de cotizaciones \ No newline at end of file +# Dolibarr language file - Source file is en_US - install +MigrationProposal=Migración de datos de cotizaciones diff --git a/htdocs/langs/es_CL/main.lang b/htdocs/langs/es_CL/main.lang index 90e98cca31d..dc549dfb838 100644 --- a/htdocs/langs/es_CL/main.lang +++ b/htdocs/langs/es_CL/main.lang @@ -1 +1,22 @@ -CommercialProposalsShort=Cotizaciones \ No newline at end of file +# Dolibarr language file - Source file is en_US - main +DIRECTION=ltr +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 +SeparatorDecimal=, +SeparatorThousand=. +FormatDateShort=%d/%m/%Y +FormatDateShortInput=%d/%m/%Y +FormatDateShortJava=dd/MM/yyyy +FormatDateShortJavaInput=dd/MM/yyyy +FormatDateShortJQuery=dd/mm/yy +FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI +FormatHourShort=%H:%M +FormatHourShortDuration=%H:%M +FormatDateTextShort=%d %b %Y +FormatDateText=%d %B %Y +FormatDateHourShort=%d/%m/%Y %H:%M +FormatDateHourSecShort=%d/%m/%Y %H:%M:%S +FormatDateHourTextShort=%d %b %Y %H:%M +FormatDateHourText=%d %B %Y %H:%M +CommercialProposalsShort=Cotizaciones diff --git a/htdocs/langs/es_CL/members.lang b/htdocs/langs/es_CL/members.lang index 59fd53dd993..4e770babbba 100644 --- a/htdocs/langs/es_CL/members.lang +++ b/htdocs/langs/es_CL/members.lang @@ -1 +1,2 @@ -TurnoverOrBudget=Volumen de ventas (empresa) o Cotización (asociación o colectivo) \ No newline at end of file +# Dolibarr language file - Source file is en_US - members +TurnoverOrBudget=Volumen de ventas (empresa) o Cotización (asociación o colectivo) diff --git a/htdocs/langs/es_CL/orders.lang b/htdocs/langs/es_CL/orders.lang index 8810a19bcf8..d40140bd326 100644 --- a/htdocs/langs/es_CL/orders.lang +++ b/htdocs/langs/es_CL/orders.lang @@ -1 +1,2 @@ -OrderSource0=Cotización \ No newline at end of file +# Dolibarr language file - Source file is en_US - orders +OrderSource0=Cotización diff --git a/htdocs/langs/es_CL/other.lang b/htdocs/langs/es_CL/other.lang index f2b10a1a2d2..056e70bee9a 100644 --- a/htdocs/langs/es_CL/other.lang +++ b/htdocs/langs/es_CL/other.lang @@ -1,3 +1,4 @@ +# Dolibarr language file - Source file is en_US - other Notify_PROPAL_VALIDATE=Validación cotización cliente Notify_PROPAL_SENTBYMAIL=Envío cotización por e-mail PredefinedMailContentSendProposal=Buenos días, __CONTACTCIVNAME__ \n\n Nos ponemos en contacto con usted para facilitarle la cotización __PROPREF__\n\n Ante cualquier duda, consúltenos y será atendido a la mayor brevedad posible.\n\n __PERSONALIZED__Cordialmente\n\n__SIGNATURE__ @@ -6,4 +7,3 @@ NumberOfUnitsProposals=Número de unidades en las cotizaciones en los últimos 1 EMailTextProposalValidated=La cotización %s que le concierne ha sido validado. PropalClosedSignedInDolibarr=Cotización %s firmada en Dolibarr PropalClosedRefusedInDolibarr=Cotización %s rechazada en Dolibarr -PropalValidatedInDolibarr=Cotización %s validada en Dolibarr \ No newline at end of file diff --git a/htdocs/langs/es_CL/products.lang b/htdocs/langs/es_CL/products.lang index cf82ea19c2b..9c1f2378871 100644 --- a/htdocs/langs/es_CL/products.lang +++ b/htdocs/langs/es_CL/products.lang @@ -1,3 +1,4 @@ +# Dolibarr language file - Source file is en_US - products AddToMyProposals=Añadir a mis cotizaciones AddToOtherProposals=Añadir a otras cotizaciones -NoteNotVisibleOnBill=Nota (no visible en las facturas, cotizaciones, etc.) \ No newline at end of file +NoteNotVisibleOnBill=Nota (no visible en las facturas, cotizaciones, etc.) diff --git a/htdocs/langs/es_CL/projects.lang b/htdocs/langs/es_CL/projects.lang index a5ee33a39a4..d483e1e5659 100644 --- a/htdocs/langs/es_CL/projects.lang +++ b/htdocs/langs/es_CL/projects.lang @@ -1 +1,2 @@ -ListProposalsAssociatedProject=Listado de cotizaciones asociadas al proyecto \ No newline at end of file +# Dolibarr language file - Source file is en_US - projects +ListProposalsAssociatedProject=Listado de cotizaciones asociadas al proyecto diff --git a/htdocs/langs/es_CL/propal.lang b/htdocs/langs/es_CL/propal.lang index 8242c7d90a4..3099628ae7d 100644 --- a/htdocs/langs/es_CL/propal.lang +++ b/htdocs/langs/es_CL/propal.lang @@ -1,3 +1,4 @@ +# Dolibarr language file - Source file is en_US - propal Proposals=Cotizaciones Proposal=Cotización ProposalShort=Cotización @@ -11,7 +12,6 @@ ProposalCard=Ficha cotización NewProp=Nueva cotización NewProposal=Nueva cotización NewPropal=Nueva cotización -DeletePop=Eliminar cotización ValidateProp=Validar cotización AddProp=Crear cotización ConfirmDeleteProp=¿Está seguro de querer eliminar esta cotización? @@ -22,7 +22,6 @@ AllPropals=Todas las cotizacioness LastProposals=Últimas cotizaciones SearchAProposal=Buscar una cotización ProposalsStatistics=Estadísticas de cotizaciones -NumberOfUnitsProposals=Número de unidades en las cotizaciones en los últimos 12 meses NbOfProposals=Número cotizaciones ShowPropal=Ver cotización PropalStatusValidated=Validado (cotización abierta) @@ -37,7 +36,6 @@ RefProposal=Ref. cotización SendPropalByMail=Enviar cotización por e-mail AssociatedDocuments=Documentos asociados a la cotizacion DatePropal=Fecha cotización -ErrorPropalNotFound=Presupuesto %s inexistente Estimate=Cotización: EstimateShort=Cotización OtherPropals=Otras cotizaciones @@ -51,12 +49,10 @@ ConfirmClonePropal=¿Está seguro de querer clonar la cotización %s? ConfirmReOpenProp=¿Está seguro de querer reabrir la cotización %s ? ProposalsAndProposalsLines=Cotizaciones a clientes y líneas de cotizaciones ProposalLine=Línea de cotización -##### Types de contacts ##### TypeContact_propal_internal_SALESREPFOLL=Comercial seguimiento cotización TypeContact_propal_external_BILLING=Contacto cliente de facturación cotización TypeContact_propal_external_CUSTOMER=Contacto cliente seguimiento cotización -# Document models DocModelAzurDescription=Modelo de cotización completa (logo...) DocModelJauneDescription=Modelo de cotización Jaune DefaultModelPropalToBill=Modelo por defecto al cerrar una cotización (a facturar) -DefaultModelPropalClosed=Modelo por defecto al cerrar una cotización (no facturado) \ No newline at end of file +DefaultModelPropalClosed=Modelo por defecto al cerrar una cotización (no facturado) diff --git a/htdocs/langs/es_CL/workflow.lang b/htdocs/langs/es_CL/workflow.lang index 17b2915fc39..6f07885c897 100644 --- a/htdocs/langs/es_CL/workflow.lang +++ b/htdocs/langs/es_CL/workflow.lang @@ -1,3 +1,4 @@ +# Dolibarr language file - Source file is en_US - workflow descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Crear un pedido de cliente automáticamente a la firma de una cotización descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Crear una factura a cliente automáticamente a la firma de una cotización -descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Clasificar como facturada la cotización cuando el pedido de cliente relacionado se clasifique como pagado \ No newline at end of file +descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Clasificar como facturada la cotización cuando el pedido de cliente relacionado se clasifique como pagado diff --git a/htdocs/langs/es_DO/companies.lang b/htdocs/langs/es_DO/companies.lang index 149e6ab15d4..564a9951b97 100644 --- a/htdocs/langs/es_DO/companies.lang +++ b/htdocs/langs/es_DO/companies.lang @@ -1,4 +1,4 @@ # Dolibarr language file - Source file is en_US - companies VATIsUsed=Sujeto a ITBIS VATIsNotUsed=No sujeto a ITBIS -VATIntraCheckDesc=El link %s permite consultar al servicio europeo de control de números de ITBIS intracomunitario. Se requiere acceso a internet para que el servicio funcione \ No newline at end of file +VATIntraCheckDesc=El link %s permite consultar al servicio europeo de control de números de ITBIS intracomunitario. Se requiere acceso a internet para que el servicio funcione diff --git a/htdocs/langs/es_DO/compta.lang b/htdocs/langs/es_DO/compta.lang index 4474b523ba5..9713057f7e2 100644 --- a/htdocs/langs/es_DO/compta.lang +++ b/htdocs/langs/es_DO/compta.lang @@ -25,4 +25,4 @@ RulesVATInProducts=- Para los bienes materiales, incluye el ITBIS de las factura RulesVATDueServices=- Para los servicios, el informe incluye el ITBIS de las facturas debidas, pagadas o no basándose en la fecha de estas facturas. RulesVATDueProducts=- Para los bienes materiales, incluye el ITBIS de las facturas basándose en la fecha de la factura. ACCOUNTING_VAT_ACCOUNT=Código contable por defecto para el ITBIS repercutido -ACCOUNTING_VAT_BUY_ACCOUNT=Código contable por defecto para el ITBIS soportado \ No newline at end of file +ACCOUNTING_VAT_BUY_ACCOUNT=Código contable por defecto para el ITBIS soportado diff --git a/htdocs/langs/es_DO/main.lang b/htdocs/langs/es_DO/main.lang index 7076727abdd..21cb2cca37c 100644 --- a/htdocs/langs/es_DO/main.lang +++ b/htdocs/langs/es_DO/main.lang @@ -1,9 +1,5 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr -# Note for Chinese: -# msungstdlight or cid0ct are for traditional Chinese (traditional does not render with Ubuntu pdf reader) -# stsongstdlight or cid0cs are for simplified Chinese -# To read Chinese pdf with Linux: sudo apt-get install poppler-data FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=, @@ -14,6 +10,7 @@ FormatDateShortJava=dd/MM/yyyy FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/mm/yy FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y @@ -29,4 +26,4 @@ IncludedVAT=ITBIS incluido HT=Sin ITBIS TTC=ITBIS incluido VAT=ITBIS -VATRate=Tasa ITBIS \ No newline at end of file +VATRate=Tasa ITBIS diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index 78ce8878190..45dc1e4858b 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimental VersionDevelopment=Desarrollo VersionUnknown=Desconocida VersionRecommanded=Recomendada +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=ID sesión SessionSaveHandler=Modalidad de salvaguardado de sesiones SessionSavePath=Localización salvaguardado de sesiones @@ -493,10 +498,16 @@ Module600Name=Notificaciones Module600Desc=Envío de notificaciones por e-mail en algunos eventos de negocio de Dolibarr a contactos de terceros (configurado en cada tercero) Module700Name=Donaciones Module700Desc=Gestión de donaciones +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Interfaz con el sistema de seguimiento de incidencias Mantis Module1400Name=Contabilidad experta Module1400Desc=Gestión experta de la contabilidad (doble partida) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Categorías Module1780Desc=Gestión de categorías (productos, proveedores y clientes) Module2000Name=Editor WYSIWYG @@ -631,7 +642,7 @@ Permission181=Consultar pedidos a proveedores Permission182=Crear/modificar pedidos a proveedores Permission183=Validar pedidos a proveedores Permission184=Aprobar pedidos a proveedores -Permission185=Enviar pedidos a proveedores +Permission185=Order or cancel supplier orders Permission186=Recibir pedidos de proveedores Permission187=Cerrar pedidos a proveedores Permission188=Anular pedidos a proveedores @@ -711,6 +722,13 @@ Permission538=Exportar servicios Permission701=Consultar donaciones Permission702=Crear/modificar donaciones Permission703=Eliminar donaciones +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Consultar stocks Permission1002=Crear/modificar almacenes Permission1003=Eliminar almacenes @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Contraseña del servidor proxy DefineHereComplementaryAttributes=Defina aquí la lista de atributos adicionales, no disponibles por defecto, y que desea gestionar para %s. ExtraFields=Atributos adicionales ExtraFieldsLines=Atributos adicionales (líneas) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Atributos adicionales (terceros) ExtraFieldsContacts=Atributos adicionales (contactos/direcciones) ExtraFieldsMember=Atributos adicionales (miembros) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Una línea de producto/servicio que tiene una cantidad 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 +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Configuración del módulo pedidos OrdersNumberingModules=Módulos de numeración de los pedidos @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Códigos de barras tipo UPC BarcodeDescISBN=Códigos de barras tipo ISBN BarcodeDescC39=Códigos de barras tipo C39 BarcodeDescC128=Códigos de barras tipo C128 -GenbarcodeLocation=Herramienta de generación de códigos de barras en líneas de pedidos (utilizado por el motor phpbar para determinados tipos de códigos de barras) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Motor interno BarCodeNumberManager=Gestor para auto definir números de código de barras ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Tercero genérico a usar para las ventas CashDeskBankAccountForSell=Cuenta por defecto a utilizar para los cobros en efectivo (caja) CashDeskBankAccountForCheque= Cuenta por defecto a utilizar para los cobros con cheques CashDeskBankAccountForCB= Cuenta por defecto a utilizar para los cobros con tarjeta de crédito -CashDeskDoNotDecreaseStock=Desactivar decrementos de stock si una venta se realiza desde TPV +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Forzar y restringir almacén a usar para decremento de stock StockDecreaseForPointOfSaleDisabled=Decremento de stock desde TPV desactivado +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=Usted no ha desactivado el decremento de stock al hacer una venta desde TPV. Así que se requiere un almacén. ##### Bookmark ##### BookmarkSetup=Configuración del módulo Marcadores @@ -1569,3 +1597,7 @@ SortOrder=Ordenación Format=Formatear TypePaymentDesc=0:Pago cliente,1:Pago proveedor,2:Tanto pago de cliente como de proveedor IncludePath=Include path (definida en la variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/es_ES/banks.lang b/htdocs/langs/es_ES/banks.lang index 647e7987293..3117ecc1f15 100644 --- a/htdocs/langs/es_ES/banks.lang +++ b/htdocs/langs/es_ES/banks.lang @@ -33,7 +33,11 @@ AllTime=Mostrar saldo desde el inicio Reconciliation=Conciliación RIB=Cuenta bancaria IBAN=Identificador IBAN +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=Identificador BIC/SWIFT +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Domiciliaciones StandingOrder=Domiciliación Withdrawals=Reintregros @@ -148,7 +152,7 @@ BackToAccount=Volver a la cuenta ShowAllAccounts=Mostrar para todas las cuentas FutureTransaction=Transacción futura. No es posible conciliar. SelectChequeTransactionAndGenerate=Seleccione/filtre los cheques a incluir en la remesa y haga clic en "Crear". -InputReceiptNumber=Indique el extracto bancario relacionado con la conciliación. Utilice un valor numérico ordenable (por ejemplo, AAAAMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventualmente, indique una categoría en la que clasificar los registros ToConciliate=¿A conciliar? ThenCheckLinesAndConciliate=A continuación, compruebe las líneas presentes en el extracto bancario y haga clic diff --git a/htdocs/langs/es_ES/commercial.lang b/htdocs/langs/es_ES/commercial.lang index 99219ff6c2f..51de60229c8 100644 --- a/htdocs/langs/es_ES/commercial.lang +++ b/htdocs/langs/es_ES/commercial.lang @@ -62,7 +62,7 @@ LastProspectContactDone=Clientes potenciales contactados DateActionPlanned=Fecha planificación DateActionDone=Fecha realización ActionAskedBy=Acción preguntada por -ActionAffectedTo=Evento para +ActionAffectedTo=Event assigned to ActionDoneBy=Acción realizada por ActionUserAsk=Registrada por ErrorStatusCantBeZeroIfStarted=Si el campo 'Fecha de realización' contiene datos la acción está en curso , por lo que el campo ' Estado ' no puede ser 0%. diff --git a/htdocs/langs/es_ES/contracts.lang b/htdocs/langs/es_ES/contracts.lang index 76dd3e925de..654a55badde 100644 --- a/htdocs/langs/es_ES/contracts.lang +++ b/htdocs/langs/es_ES/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expirado ServiceStatusClosed=Cerrado ServicesLegend=Leyenda para los servicios Contracts=Contratos +ContractsAndLine=Contracts and line of contracts Contract=Contrato NoContracts=Sin contratos MenuServices=Servicios diff --git a/htdocs/langs/es_ES/cron.lang b/htdocs/langs/es_ES/cron.lang index d8d9065c901..d436847a411 100644 --- a/htdocs/langs/es_ES/cron.lang +++ b/htdocs/langs/es_ES/cron.lang @@ -84,3 +84,4 @@ CronType_command=Comando Shell CronMenu=Programador CronCannotLoadClass=No se puede cargar la clase %s u objeto %s UseMenuModuleToolsToAddCronJobs=Ir a "Inicio - Utilidades módulos - Lista de tareas Cron" para ver y editar tareas programadas. +TaskDisabled=Task disabled diff --git a/htdocs/langs/es_ES/errors.lang b/htdocs/langs/es_ES/errors.lang index 18ee8a8a9ee..f8506d6e27b 100644 --- a/htdocs/langs/es_ES/errors.lang +++ b/htdocs/langs/es_ES/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=La cuenta origen y destino deben ser diferentes. ErrorBadThirdPartyName=Nombre de tercero incorrecto ErrorProdIdIsMandatory=El %s es obligatorio ErrorBadCustomerCodeSyntax=La sintaxis del código cliente es incorrecta -ErrorBadBarCodeSyntax=El código de barras no posee un formato válido +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Código cliente obligatorio ErrorBarCodeRequired=Código de barras requerido ErrorCustomerCodeAlreadyUsed=Código de cliente ya utilizado @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript no debe estar desactivado para que esta ErrorPasswordsMustMatch=Las 2 contraseñas indicadas deben corresponderse ErrorContactEMail=Se ha producido un error técnico. Contacte con el administrador al e-mail %s, indicando el código de error %s en su mensaje, o puede también adjuntar una copia de pantalla de esta página. ErrorWrongValueForField=Valor incorrecto para el campo número %s (el valor '%s' no cumple con la regla %s) -ErrorFieldValueNotIn=Valor incorrecto para el campo número %s (el valor '%s' no es un valor en el campo %s de la tabla %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Valor incorrecto para el campo número %s (el valor '%s' no es una referencia existente en %s) ErrorsOnXLines=Errores en %s líneas fuente ErrorFileIsInfectedWithAVirus=¡El antivirus no ha podido validar este archivo (es probable que esté infectado por un virus)! @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Error interno '%s' ErrorPriceExpressionUnknown=Error desconocido '%s' ErrorSrcAndTargetWarehouseMustDiffers=Los almacenes de origen y destino deben de ser diferentes ErrorTryToMakeMoveOnProductRequiringBatchData=Error, intenta hacer un movimiento de stock sin indicar lote/serie, en un producto que requiere de lote/serie +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Los parámetros obligatorios de configuración no están todavía definidos diff --git a/htdocs/langs/es_ES/install.lang b/htdocs/langs/es_ES/install.lang index a93ded0ce8e..9a567b19ed5 100644 --- a/htdocs/langs/es_ES/install.lang +++ b/htdocs/langs/es_ES/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Último paso: Indique aquí la cuenta y la contras ActivateModule=Activación del módulo %s ShowEditTechnicalParameters=Pulse aquí para ver/editar los parámetros técnicos (modo experto) WarningUpgrade=Atención:\nHa pensado en hacer una copia de seguridad de la base de datos?\nEs muy recomendable: por ejemplo, debido a algunos fallos en los sistemas de bases de datos (por ejemplo MySQL versión 5.5.40), algunos datos o tablas se pueden perder durante este proceso, por lo que es muy recomendable tener una copia completa de su base de datos antes de iniciar la migración.\n\nHaga clic en OK para iniciar el proceso de migración... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/es_ES/main.lang b/htdocs/langs/es_ES/main.lang index 80c77d8c09e..300e17729fe 100644 --- a/htdocs/langs/es_ES/main.lang +++ b/htdocs/langs/es_ES/main.lang @@ -141,6 +141,7 @@ Cancel=Anular Modify=Modificar Edit=Editar Validate=Validar +ValidateAndApprove=Validate and Approve ToValidate=A validar Save=Grabar SaveAs=Grabar como @@ -158,6 +159,7 @@ Search=Buscar SearchOf=Búsqueda de Valid=Validar Approve=Aprobar +Disapprove=Disapprove ReOpen=Reabrir Upload=Enviar archivo ToLink=Enlace @@ -219,6 +221,7 @@ Cards=Fichas Card=Ficha Now=Ahora Date=Fecha +DateAndHour=Date and hour DateStart=Fecha inicio DateEnd=Fecha fin DateCreation=Fecha de creación @@ -295,6 +298,7 @@ UnitPriceHT=Precio base UnitPriceTTC=Precio unitario total PriceU=P.U. PriceUHT=P.U. +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=P.U. Total Amount=Importe AmountInvoice=Importe factura @@ -521,6 +525,7 @@ DateFromTo=De %s a %s DateFrom=A partir de %s DateUntil=Hasta %s Check=Verificar +Uncheck=Uncheck Internal=Interno External=Externo Internals=Internos @@ -688,6 +693,7 @@ PublicUrl=URL pública AddBox=Añadir caja SelectElementAndClickRefresh=Seleccione un elemento y haga clic en Refrescar PrintFile=Imprimir Archivo %s +ShowTransaction=Show transaction # Week day Monday=Lunes Tuesday=Martes diff --git a/htdocs/langs/es_ES/orders.lang b/htdocs/langs/es_ES/orders.lang index 895a5c32915..46e87bd4dc7 100644 --- a/htdocs/langs/es_ES/orders.lang +++ b/htdocs/langs/es_ES/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Anulado StatusOrderDraft=Borrador (a validar) StatusOrderValidated=Validado StatusOrderOnProcess=Pedido - En espera de recibir +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Procesado StatusOrderToBill=Emitido StatusOrderToBill2=A facturar @@ -58,6 +59,7 @@ MenuOrdersToBill=Pedidos a facturar MenuOrdersToBill2=Pedidos facturables SearchOrder=Buscar un pedido SearchACustomerOrder=Buscar un pedido de cliente +SearchASupplierOrder=Search a supplier order ShipProduct=Enviar producto Discount=Descuento CreateOrder=Crear pedido diff --git a/htdocs/langs/es_ES/other.lang b/htdocs/langs/es_ES/other.lang index fe430c2878c..01d97afcc34 100644 --- a/htdocs/langs/es_ES/other.lang +++ b/htdocs/langs/es_ES/other.lang @@ -54,12 +54,13 @@ MaxSize=Tamaño máximo AttachANewFile=Adjuntar nuevo archivo/documento LinkedObject=Objeto adjuntado Miscellaneous=Miscelánea -NbOfActiveNotifications=Número notificaciones +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Esto es un correo de prueba.\nLas 2 líneas están separadas por un retorno de carro a la línea. PredefinedMailTestHtml=Esto es un e-mail de prueba(la palabra prueba debe de estar en negrita).
Las 2 líneas están separadas por un retorno de carro en la línea PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nLe adjuntamos la factura __FACREF__\n\n__PERSONALIZED__Cordialmente\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nQueremos recordarle que su factura __FACREF__ parece estar pendiente de pago. Le adjuntamos la factura en cuestión, como recordatorio.\n\n__PERSONALIZED__Cordialmente\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nLe adjuntamos el presupuesto __PROPREF__\n\n__PERSONALIZED__Cordialmente\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nLe adjuntamos el pedido __ORDERREF__\n\n__PERSONALIZED__Cordialmente\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nLe adjuntamos nuestro pedido __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nLe adjuntamos la factura __FACREF__\n\n__PERSONALIZED__Cordialmente\n\n__SIGNATURE__ diff --git a/htdocs/langs/es_ES/productbatch.lang b/htdocs/langs/es_ES/productbatch.lang index 6fa46be9db5..8540dfd80c9 100644 --- a/htdocs/langs/es_ES/productbatch.lang +++ b/htdocs/langs/es_ES/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Número Lote/Serie l_eatby=Fecha de caducidad l_sellby=Fecha límite de venta DetailBatchNumber=Detalles del lote/serie -DetailBatchFormat=Lote/Serie: %s - Caducidad: %s - Límite venta: %s (Stock: %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Lote: %s printEatby=Caducidad: %s printSellby=Límite venta: %s diff --git a/htdocs/langs/es_ES/products.lang b/htdocs/langs/es_ES/products.lang index e07e882a1ee..ab2875577b0 100644 --- a/htdocs/langs/es_ES/products.lang +++ b/htdocs/langs/es_ES/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=En productos y servicios, y precios de proveedor est PriceExpressionEditorHelp4=Solamente en los precios de productos y servicios: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Modo precio PriceNumeric=Número +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/es_ES/projects.lang b/htdocs/langs/es_ES/projects.lang index b17e8892198..b5c4081e1ba 100644 --- a/htdocs/langs/es_ES/projects.lang +++ b/htdocs/langs/es_ES/projects.lang @@ -8,8 +8,10 @@ SharedProject=Proyecto compartido PrivateProject=Contactos del proyecto MyProjectsDesc=Esta vista muestra aquellos proyectos en los que usted es un contacto afectado (cualquier tipo). ProjectsPublicDesc=Esta vista muestra todos los proyectos a los que usted tiene derecho a visualizar. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Esta vista muestra todos los proyectos (sus permisos de usuario le permiten tener una visión completa). MyTasksDesc=Esta vista se limita a los proyectos y tareas en los que usted es un contacto afectado en al menos una tarea (cualquier tipo). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Esta vista muestra todos los proyectos y tareas en los que usted tiene derecho a tener visibilidad. TasksDesc=Esta vista muestra todos los proyectos y tareas (sus permisos de usuario le permiten tener una visión completa). ProjectsArea=Área proyectos @@ -29,6 +31,8 @@ NoProject=Ningún proyecto definido NbOpenTasks=Nº tareas abiertas NbOfProjects=Nº de proyectos TimeSpent=Tiempo dedicado +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Tiempos dedicados RefTask=Ref. tarea LabelTask=Etiqueta tarea @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Listado de pedidos a proveedores asociados a ListSupplierInvoicesAssociatedProject=Listado de facturas de proveedor asociados al proyecto ListContractAssociatedProject=Listado de contratos asociados al proyecto ListFichinterAssociatedProject=Listado de intervenciones asociadas al proyecto -ListTripAssociatedProject=Listado notas de honorarios asociadas al proyecto +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Lista de eventos asociados al proyecto ActivityOnProjectThisWeek=Actividad en el proyecto esta semana ActivityOnProjectThisMonth=Actividad en el proyecto este mes @@ -133,3 +137,6 @@ SearchAProject=Buscar un proyecto ProjectMustBeValidatedFirst=El proyecto debe validarse primero ProjectDraft=Proyectos borrador FirstAddRessourceToAllocateTime=Asociar un recurso para asignar tiempo consumido +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/es_ES/salaries.lang b/htdocs/langs/es_ES/salaries.lang index c8e3707d5df..6995284079c 100644 --- a/htdocs/langs/es_ES/salaries.lang +++ b/htdocs/langs/es_ES/salaries.lang @@ -10,3 +10,4 @@ SalariesPayments=Pagos de salarios ShowSalaryPayment=Ver pago THM=Precio medio por hora TJM=Precio medio por día +CurrentSalary=Current salary diff --git a/htdocs/langs/es_ES/sendings.lang b/htdocs/langs/es_ES/sendings.lang index cf377a641db..c119cd363d2 100644 --- a/htdocs/langs/es_ES/sendings.lang +++ b/htdocs/langs/es_ES/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Cant. pedida QtyShipped=Cant. enviada QtyToShip=Cant. a enviar QtyReceived=Cant. recibida -KeepToShip=Queda por enviar +KeepToShip=Remain to ship OtherSendingsForSameOrder=Otros envíos de este pedido DateSending=Fecha de expedición DateSendingShort=Fecha de expedición diff --git a/htdocs/langs/es_ES/stocks.lang b/htdocs/langs/es_ES/stocks.lang index c45945ede6e..bb9f7423361 100644 --- a/htdocs/langs/es_ES/stocks.lang +++ b/htdocs/langs/es_ES/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Valor (PMP) PMPValueShort=PMP EnhancedValueOfWarehouses=Valor de stocks UserWarehouseAutoCreate=Crear automáticamente existencias/almacén propio del usuario en la creación del usuario +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Cantidad recibida QtyDispatchedShort=Cant. recibida QtyToDispatchShort=Cant. a enviar @@ -110,7 +111,7 @@ WarehouseForStockDecrease=Para el decremento de stock se usará el almacén % WarehouseForStockIncrease=Para el incremento de stock se usará el almacén %s ForThisWarehouse=Para este almacén ReplenishmentStatusDesc=Esta es la lista de todos los productos con un stock menor que el stock deseado (o menor que el valor de alerta si el checkbox "sólo alertas" está marcado) y que sugiere crear pedidos de proveedor para rellenar la diferencia. -ReplenishmentOrdersDesc=Este es el listado de pedidos a proveedores en curso +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Reaprovisionamiento NbOfProductBeforePeriod=Cantidad del producto %s en stock antes del periodo seleccionado (< %s) NbOfProductAfterPeriod=Cantidad del producto %s en stock después del periodo seleccionado (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contenido en el paquete ShowWarehouse=Mostrar almacén MovementCorrectStock=Corrección de stock del producto %s MovementTransferStock=Transferencia de stock del producto %s a otro almacén +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/es_ES/suppliers.lang b/htdocs/langs/es_ES/suppliers.lang index a7d37289ca7..7e0f2718572 100644 --- a/htdocs/langs/es_ES/suppliers.lang +++ b/htdocs/langs/es_ES/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Proveedores -Supplier=Proveedor AddSupplier=Crear un proveedor SupplierRemoved=Proveedor eliminado SuppliersInvoice=Factura proveedor @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Facturas proveedores y pagos ExportDataset_fournisseur_3=Pedidos de proveedores y líneas de pedido ApproveThisOrder=Aprobar este pedido ConfirmApproveThisOrder=¿Está seguro de querer aprobar el pedido a proveedor %s? -DenyingThisOrder=Denegar este pedido +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=¿Está seguro de querer denegar el pedido a proveedor %s? ConfirmCancelThisOrder=¿Está seguro de querer cancelar el pedido a proveedor %s? AddCustomerOrder=Crear pedido de cliente diff --git a/htdocs/langs/es_ES/trips.lang b/htdocs/langs/es_ES/trips.lang index ff2cdf724bd..b75dbfd2bad 100644 --- a/htdocs/langs/es_ES/trips.lang +++ b/htdocs/langs/es_ES/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Desplazamiento -Trips=Desplazamientos -TripsAndExpenses=Honorarios -TripsAndExpensesStatistics=Estadísticas de honorarios -TripCard=Ficha honorario -AddTrip=Crear honorario -ListOfTrips=Listado de honorarios +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Listado notas de honorarios -NewTrip=Nuevo honorario +NewTrip=New expense report CompanyVisited=Empresa/institución visitada Kilometers=Kilometros FeesKilometersOrAmout=Importe o kilómetros -DeleteTrip=Eliminar honorario -ConfirmDeleteTrip=¿Está seguro de querer eliminar este honorario? -TF_OTHER=Otro -TF_LUNCH=Dieta -TF_TRIP=Viaje -ListTripsAndExpenses=Listado notas de honorarios -ExpensesArea=Área de Notas de honorarios -SearchATripAndExpense=Buscar un honorario +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Clasificar 'Reembolsado' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Otro +TF_TRANSPORTATION=Transportation +TF_LUNCH=Dieta +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/es_HN/bills.lang b/htdocs/langs/es_HN/bills.lang index f7136eb8fdf..62504667750 100644 --- a/htdocs/langs/es_HN/bills.lang +++ b/htdocs/langs/es_HN/bills.lang @@ -1,9 +1,7 @@ -# Dolibarr language file - es_HN - bills +# Dolibarr language file - Source file is en_US - bills ErrorVATIntraNotConfigured=Número de ISV intracomunitario aún no configurado ConfirmClassifyPaidPartiallyReasonDiscountNoVat=El resto a pagar (%s %s) es un descuento acordado después de la factura. Acepto perder el ISV de este descuento AmountOfBillsByMonthHT=Importe de las facturas por mes (Sin ISV) IntracommunityVATNumber=Número de ISV intracomunitario VATIsNotUsedForInvoice=* ISV no aplicable art-293B del CGI -PDFBerniqueDescription=Modelo para las facturas con varios tipos de ISV, incluido también el número de ISV Intracomunitario PDFCrabeDescription=Modelo de factura completo (ISV, método de pago a mostrar, logotipo...) -PDFOursinDescription=Modelo de factura completo (ISV, métodos de pago, entregas, nombre del proyecto, referencias de presupuesto, logotipo...) diff --git a/htdocs/langs/es_HN/companies.lang b/htdocs/langs/es_HN/companies.lang index 3ffed8aac17..25fd5487290 100644 --- a/htdocs/langs/es_HN/companies.lang +++ b/htdocs/langs/es_HN/companies.lang @@ -1,6 +1,6 @@ -# Dolibarr language file - es_HN - companies +# Dolibarr language file - Source file is en_US - companies VATIsUsed=Sujeto a ISV VATIsNotUsed=No sujeto a ISV VATIntra=RTN VATIntraShort=RTN -VATIntraVeryShort=RTN \ No newline at end of file +VATIntraVeryShort=RTN diff --git a/htdocs/langs/es_HN/compta.lang b/htdocs/langs/es_HN/compta.lang index 396d234b2df..9fede56fc29 100644 --- a/htdocs/langs/es_HN/compta.lang +++ b/htdocs/langs/es_HN/compta.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - es_HN - compta +# Dolibarr language file - Source file is en_US - compta VATToPay=ISV ventas VATReceived=ISV repercutido VATToCollect=ISV compras @@ -9,7 +9,6 @@ PaymentVat=Pago ISV NewVATPayment=Nuevo pago de ISV VATPayment=Pago ISV VATPayments=Pagos ISV -SocialContributionsPayments=Pagos cargas sociales ShowVatPayment=Ver pagos ISV TotalVATReceived=Total ISV percibido RulesResultDue=- Los importes mostrados son importes totales
- Incluye las facturas, cargas e ISV debidos, que estén pagadas o no.
- Se basa en la fecha de validación para las facturas y el ISV y en la fecha de vencimiento para las cargas.
@@ -20,6 +19,4 @@ VATReportByQuartersInInputOutputMode=Informe por tasa del ISV repercutido y paga VATReportByQuartersInDueDebtMode=Informe por tasa del ISV repercutido y pagado (ISV debido) SeeVATReportInInputOutputMode=Ver el informe %sISV pagado%s para un modo de cálculo estandard SeeVATReportInDueDebtMode=Ver el informe %sISV debido%s para un modo de cálculo con la opción sobre lo debido -RulesVATIn=- Para los servicios, el informe incluye el ISV de los pagos efectivamente recibidos o emitidos basándose en la fecha del pago.
- Para los bienes materiales, incluye el ISV de las facturas basándose en la fecha de la factura. -RulesVATDue=- Para los servicios, el informe incluye el ISV de las facturas debidas, pagadas o no basándose en la fecha de estas facturas.
- Para los bienes materiales, incluye el ISV de las facturas basándose en la fecha de la factura. ACCOUNTING_VAT_ACCOUNT=Código contable por defecto para el ISV (si no está definido en el diccionario "Tasas de ISV") diff --git a/htdocs/langs/es_HN/main.lang b/htdocs/langs/es_HN/main.lang index 371cb541453..5c9e6ffe29a 100644 --- a/htdocs/langs/es_HN/main.lang +++ b/htdocs/langs/es_HN/main.lang @@ -1,11 +1,28 @@ -Dolibarr language file - es_HN - main +# Dolibarr language file - Source file is en_US - main DIRECTION=ltr +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 SeparatorDecimal=, SeparatorThousand=None +FormatDateShort=%d/%m/%Y +FormatDateShortInput=%d/%m/%Y +FormatDateShortJava=dd/MM/yyyy +FormatDateShortJavaInput=dd/MM/yyyy +FormatDateShortJQuery=dd/mm/yy +FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI +FormatHourShort=%H:%M +FormatHourShortDuration=%H:%M +FormatDateTextShort=%d %b %Y +FormatDateText=%d %B %Y +FormatDateHourShort=%d/%m/%Y %H:%M +FormatDateHourSecShort=%d/%m/%Y %H:%M:%S +FormatDateHourTextShort=%d %b %Y %H:%M +FormatDateHourText=%d %B %Y %H:%M AmountVAT=Importe ISV TotalVAT=Total ISV IncludedVAT=ISV incluido HT=Sin ISV TTC=ISV incluido VAT=ISV -VATRate=Tasa ISV \ No newline at end of file +VATRate=Tasa ISV diff --git a/htdocs/langs/es_HN/propal.lang b/htdocs/langs/es_HN/propal.lang index 5b7ea08179a..a3356570a4b 100644 --- a/htdocs/langs/es_HN/propal.lang +++ b/htdocs/langs/es_HN/propal.lang @@ -1,2 +1,2 @@ -# Dolibarr language file - es_HN - propal -AmountOfProposalsByMonthHT=Importe por mes (Sin ISV) \ No newline at end of file +# Dolibarr language file - Source file is en_US - propal +AmountOfProposalsByMonthHT=Importe por mes (Sin ISV) diff --git a/htdocs/langs/es_MX/admin.lang b/htdocs/langs/es_MX/admin.lang index 39a4dac9a4e..8161a7a8e7c 100644 --- a/htdocs/langs/es_MX/admin.lang +++ b/htdocs/langs/es_MX/admin.lang @@ -4,5 +4,3 @@ Module30Desc=Gestión de facturas y notas de crédito a clientes. Gestión factu BillsNumberingModule=Módulo de numeración de facturas y notas de crédito CreditNoteSetup=Configuración del módulo notas de crédito CreditNotePDFModules=Modelo de documento de notas de crédito -CreditNote=Nota de crédito -CreditNotes=Notas de crédito diff --git a/htdocs/langs/es_MX/banks.lang b/htdocs/langs/es_MX/banks.lang index 98313c7cbed..a5411981c4b 100644 --- a/htdocs/langs/es_MX/banks.lang +++ b/htdocs/langs/es_MX/banks.lang @@ -1,2 +1,2 @@ -# Dolibarr language file - es_MX - banks -BankAccountDomiciliation=Tarjeta \ No newline at end of file +# Dolibarr language file - Source file is en_US - banks +BankAccountDomiciliation=Tarjeta diff --git a/htdocs/langs/es_MX/bills.lang b/htdocs/langs/es_MX/bills.lang index 50dfc1f71c3..e62583d9e73 100644 --- a/htdocs/langs/es_MX/bills.lang +++ b/htdocs/langs/es_MX/bills.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - es_MX - bills +# Dolibarr language file - Source file is en_US - bills InvoiceAvoir=Nota de crédito InvoiceAvoirAsk=Nota de crédito para corregir la factura InvoiceAvoirDesc=La nota de crédito es una factura negativa destinada a compensar un importe de factura que difiere del importe realmente pagado (por haber pagado de más o por devolución de productos, por ejemplo). @@ -7,19 +7,18 @@ ConfirmConvertToReduc=¿Quiere convertir esta nota de crédito en una reducción AddBill=Crear factura o nota de crédito EnterPaymentDueToCustomer=Realizar pago de notas de crédito al cliente ErrorInvoiceAvoirMustBeNegative=Error, una factura de tipo nota de crédito debe tener un importe negativo +BillTo=Receptor ConfirmClassifyPaidPartiallyReasonAvoir=El resto a pagar (%s %s) se ha regularizado (ya que artículo se ha devuelto, olvidado entregar, descuento no definido...) mediante una nota de crédito ConfirmClassifyPaidPartiallyReasonOtherDesc=Esta elección será posible, por ejemplo, en los casos siguiente:
-pago parcial ya que una partida de productos se ha devuleto.
- reclamado por no entregar productos de la factura
En todos los casos, la reclamación debe regularizarse mediante una nota de crédito ShowInvoiceAvoir=Ver nota de crédito AlreadyPaidNoCreditNotesNoDeposits=Ya pagado (excluidos las notas de crédito y anticipos) +AddCreditNote=Crear nota de crédito ShowDiscount=Ver la nota de crédito CreditNote=Nota de crédito CreditNotes=Notas de crédito DiscountFromCreditNote=Descuento resultante de la nota de crédito %s AbsoluteDiscountUse=Este tipo de crédito no puede ser utilizado en una factura antes de su validación -CreditNoteDepositUse=La factura debe de estar validada para poder utilizar este tipo de créditos +Residence=Tarjeta +PaymentByTransferOnThisBankAccount=Cuenta para depositos y transferencias CreditNoteConvertedIntoDiscount=Esta nota de crédito se convirtió en %s TerreNumRefModelDesc1=Devuelve el número bajo el formato %syymm-nnnn para las facturas y %syymm-nnnn para las notas de crédito donde yy es el año, mm. el mes y nnnn un contador secuencial sin ruptura y sin permanencia a 0 -AddCreditNote=Crear nota de crédito -BillTo=Receptor -Residence=Tarjeta -PaymentByTransferOnThisBankAccount=Cuenta para depositos y transferencias \ No newline at end of file diff --git a/htdocs/langs/es_MX/categories.lang b/htdocs/langs/es_MX/categories.lang index 62392ec33f5..7e6b383c287 100644 --- a/htdocs/langs/es_MX/categories.lang +++ b/htdocs/langs/es_MX/categories.lang @@ -1,2 +1,2 @@ -# Dolibarr language file - es_MX - categories -NotCategorized=Sin Categoría \ No newline at end of file +# Dolibarr language file - Source file is en_US - categories +NotCategorized=Sin Categoría diff --git a/htdocs/langs/es_MX/companies.lang b/htdocs/langs/es_MX/companies.lang index 4bbfff9bf2c..3727bea2735 100644 --- a/htdocs/langs/es_MX/companies.lang +++ b/htdocs/langs/es_MX/companies.lang @@ -1,7 +1,7 @@ -# Dolibarr language file - es_MX - companies +# Dolibarr language file - Source file is en_US - companies State=Estado Town=Municipio -CompanyHasCreditNote=Este cliente tiene %s %s notas de crédito/anticipos disponibles VATIntra=RFC VATIntraShort=RFC -VATIntraVeryShort=RFC \ No newline at end of file +VATIntraVeryShort=RFC +CompanyHasCreditNote=Este cliente tiene %s %s notas de crédito/anticipos disponibles diff --git a/htdocs/langs/es_MX/main.lang b/htdocs/langs/es_MX/main.lang index 4b26f3b3e23..cf154fa6429 100644 --- a/htdocs/langs/es_MX/main.lang +++ b/htdocs/langs/es_MX/main.lang @@ -1,6 +1,24 @@ -# Dolibarr language file - es_MX - main +# Dolibarr language file - Source file is en_US - main +DIRECTION=ltr +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 SeparatorDecimal=. SeparatorThousand=, +FormatDateShort=%d/%m/%Y +FormatDateShortInput=%d/%m/%Y +FormatDateShortJava=dd/MM/yyyy +FormatDateShortJavaInput=dd/MM/yyyy +FormatDateShortJQuery=dd/mm/yy +FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI +FormatHourShort=%H:%M +FormatHourShortDuration=%H:%M +FormatDateTextShort=%d %b %Y +FormatDateText=%d %B %Y +FormatDateHourShort=%d/%m/%Y %H:%M +FormatDateHourSecShort=%d/%m/%Y %H:%M:%S +FormatDateHourTextShort=%d %b %Y %H:%M +FormatDateHourText=%d %B %Y %H:%M AmountHT=Subtotal TotalHT=Subtotal -TotalVAT=IVA \ No newline at end of file +TotalVAT=IVA diff --git a/htdocs/langs/es_MX/stocks.lang b/htdocs/langs/es_MX/stocks.lang index 84fbd98945f..295151fbd08 100644 --- a/htdocs/langs/es_MX/stocks.lang +++ b/htdocs/langs/es_MX/stocks.lang @@ -1,3 +1,3 @@ -# Dolibarr language file - es_MX - stocks +# Dolibarr language file - Source file is en_US - stocks DeStockOnBill=Decrementar los stocks físicos sobre las facturas/notas de crédito a clientes ReStockOnBill=Incrementar los stocks físicos sobre las facturas/notas de crédito de proveedores diff --git a/htdocs/langs/es_PE/bills.lang b/htdocs/langs/es_PE/bills.lang index 6ba6bb049a6..adca33be66b 100644 --- a/htdocs/langs/es_PE/bills.lang +++ b/htdocs/langs/es_PE/bills.lang @@ -1,9 +1,7 @@ -# Dolibarr language file - es_PU - bills +# Dolibarr language file - Source file is en_US - bills ErrorVATIntraNotConfigured=Número de IGV intracomunitario aún no configurado ConfirmClassifyPaidPartiallyReasonDiscountNoVat=El resto a pagar (%s %s) es un descuento acordado después de la factura. Acepto perder el IGV de este descuento AmountOfBillsByMonthHT=Importe de las facturas por mes (Sin IGV) IntracommunityVATNumber=Número de IGV intracomunitario VATIsNotUsedForInvoice=* IGV no aplicable art-293B del CGI -PDFBerniqueDescription=Modelo para las facturas con varios tipos de IGV, incluido también el número de IGV Intracomunitario PDFCrabeDescription=Modelo de factura completo (IGV, método de pago a mostrar, logotipo...) -PDFOursinDescription=Modelo de factura completo (IGV, métodos de pago, entregas, nombre del proyecto, referencias de presupuesto, logotipo...) diff --git a/htdocs/langs/es_PE/companies.lang b/htdocs/langs/es_PE/companies.lang index 7b0dbfe2c6c..70edcf69a8f 100644 --- a/htdocs/langs/es_PE/companies.lang +++ b/htdocs/langs/es_PE/companies.lang @@ -1,6 +1,6 @@ -# Dolibarr language file - es_PU - companies +# Dolibarr language file - Source file is en_US - companies VATIsUsed=Sujeto a IGV VATIsNotUsed=No sujeto a IGV VATIntra=RUC VATIntraShort=RUC -VATIntraVeryShort=RUC \ No newline at end of file +VATIntraVeryShort=RUC diff --git a/htdocs/langs/es_PE/compta.lang b/htdocs/langs/es_PE/compta.lang index 2dbc3cc49b9..00857e477f6 100644 --- a/htdocs/langs/es_PE/compta.lang +++ b/htdocs/langs/es_PE/compta.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - es_PU - compta +# Dolibarr language file - Source file is en_US - compta VATToPay=IGV ventas VATReceived=IGV repercutido VATToCollect=IGV compras @@ -9,7 +9,6 @@ PaymentVat=Pago IGV NewVATPayment=Nuevo pago de IGV VATPayment=Pago IGV VATPayments=Pagos IGV -SocialContributionsPayments=Pagos cargas sociales ShowVatPayment=Ver pagos IGV TotalVATReceived=Total IGV percibido RulesResultDue=- Los importes mostrados son importes totales
- Incluye las facturas, cargas e IGV debidos, que estén pagadas o no.
- Se basa en la fecha de validación para las facturas y el IGV y en la fecha de vencimiento para las cargas.
@@ -20,6 +19,4 @@ VATReportByQuartersInInputOutputMode=Informe por tasa del IGV repercutido y paga VATReportByQuartersInDueDebtMode=Informe por tasa del IGV repercutido y pagado (IGV debido) SeeVATReportInInputOutputMode=Ver el informe %sIGV pagado%s para un modo de cálculo estandard SeeVATReportInDueDebtMode=Ver el informe %sIGV debido%s para un modo de cálculo con la opción sobre lo debido -RulesVATIn=- Para los servicios, el informe incluye el IGV de los pagos efectivamente recibidos o emitidos basándose en la fecha del pago.
- Para los bienes materiales, incluye el IGV de las facturas basándose en la fecha de la factura. -RulesVATDue=- Para los servicios, el informe incluye el IGV de las facturas debidas, pagadas o no basándose en la fecha de estas facturas.
- Para los bienes materiales, incluye el IGV de las facturas basándose en la fecha de la factura. ACCOUNTING_VAT_ACCOUNT=Código contable por defecto para el IGV (si no está definido en el diccionario "Tasas de IGV") diff --git a/htdocs/langs/es_PE/main.lang b/htdocs/langs/es_PE/main.lang index d49d7a3445f..4b1f525d2bd 100644 --- a/htdocs/langs/es_PE/main.lang +++ b/htdocs/langs/es_PE/main.lang @@ -1,11 +1,28 @@ -Dolibarr language file - es_PU - main +# Dolibarr language file - Source file is en_US - main DIRECTION=ltr +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 SeparatorDecimal=, SeparatorThousand=None +FormatDateShort=%d/%m/%Y +FormatDateShortInput=%d/%m/%Y +FormatDateShortJava=dd/MM/yyyy +FormatDateShortJavaInput=dd/MM/yyyy +FormatDateShortJQuery=dd/mm/yy +FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI +FormatHourShort=%H:%M +FormatHourShortDuration=%H:%M +FormatDateTextShort=%d %b %Y +FormatDateText=%d %B %Y +FormatDateHourShort=%d/%m/%Y %H:%M +FormatDateHourSecShort=%d/%m/%Y %H:%M:%S +FormatDateHourTextShort=%d %b %Y %H:%M +FormatDateHourText=%d %B %Y %H:%M AmountVAT=Importe IGV TotalVAT=Total IGV IncludedVAT=IGV incluido HT=Sin IGV TTC=IGV incluido VAT=IGV -VATRate=Tasa IGV \ No newline at end of file +VATRate=Tasa IGV diff --git a/htdocs/langs/es_PE/propal.lang b/htdocs/langs/es_PE/propal.lang index 6ee464d0e36..919d94b3e91 100644 --- a/htdocs/langs/es_PE/propal.lang +++ b/htdocs/langs/es_PE/propal.lang @@ -1,2 +1,2 @@ -# Dolibarr language file - es_PU - propal -AmountOfProposalsByMonthHT=Importe por mes (Sin IGV) \ No newline at end of file +# Dolibarr language file - Source file is en_US - propal +AmountOfProposalsByMonthHT=Importe por mes (Sin IGV) diff --git a/htdocs/langs/es_PR/bills.lang b/htdocs/langs/es_PR/bills.lang index 658b997e3ae..fc033b8169c 100644 --- a/htdocs/langs/es_PR/bills.lang +++ b/htdocs/langs/es_PR/bills.lang @@ -1,9 +1,7 @@ -# Dolibarr language file - es_PR - bills +# Dolibarr language file - Source file is en_US - bills ErrorVATIntraNotConfigured=Número de IVU intracomunitario aún no configurado ConfirmClassifyPaidPartiallyReasonDiscountNoVat=El resto a pagar (%s %s) es un descuento acordado después de la factura. Acepto perder el IVU de este descuento AmountOfBillsByMonthHT=Importe de las facturas por mes (Sin IVU) IntracommunityVATNumber=Número de IVU intracomunitario VATIsNotUsedForInvoice=* IVU no aplicable art-293B del CGI -PDFBerniqueDescription=Modelo para las facturas con varios tipos de IVU, incluido también el número de IVU Intracomunitario PDFCrabeDescription=Modelo de factura completo (IVU, método de pago a mostrar, logotipo...) -PDFOursinDescription=Modelo de factura completo (IVU, métodos de pago, entregas, nombre del proyecto, referencias de presupuesto, logotipo...) diff --git a/htdocs/langs/es_PR/companies.lang b/htdocs/langs/es_PR/companies.lang index 288e42f3027..080bedf4987 100644 --- a/htdocs/langs/es_PR/companies.lang +++ b/htdocs/langs/es_PR/companies.lang @@ -1,3 +1,3 @@ -# Dolibarr language file - es_PR - companies +# Dolibarr language file - Source file is en_US - companies VATIsUsed=Sujeto a IVU -VATIsNotUsed=No sujeto a IVU \ No newline at end of file +VATIsNotUsed=No sujeto a IVU diff --git a/htdocs/langs/es_PR/compta.lang b/htdocs/langs/es_PR/compta.lang index c9226abe8f1..f5e1dc17fce 100644 --- a/htdocs/langs/es_PR/compta.lang +++ b/htdocs/langs/es_PR/compta.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - es_PR - compta +# Dolibarr language file - Source file is en_US - compta VATToPay=IVU ventas VATReceived=IVU repercutido VATToCollect=IVU compras @@ -9,7 +9,6 @@ PaymentVat=Pago IVU NewVATPayment=Nuevo pago de IVU VATPayment=Pago IVU VATPayments=Pagos IVU -SocialContributionsPayments=Pagos cargas sociales ShowVatPayment=Ver pagos IVU TotalVATReceived=Total IVU percibido RulesResultDue=- Los importes mostrados son importes totales
- Incluye las facturas, cargas e IVU debidos, que estén pagadas o no.
- Se basa en la fecha de validación para las facturas y el IVU y en la fecha de vencimiento para las cargas.
@@ -20,6 +19,4 @@ VATReportByQuartersInInputOutputMode=Informe por tasa del IVU repercutido y paga VATReportByQuartersInDueDebtMode=Informe por tasa del IVU repercutido y pagado (IVU debido) SeeVATReportInInputOutputMode=Ver el informe %sIVU pagado%s para un modo de cálculo estandard SeeVATReportInDueDebtMode=Ver el informe %sIVU debido%s para un modo de cálculo con la opción sobre lo debido -RulesVATIn=- Para los servicios, el informe incluye el IVU de los pagos efectivamente recibidos o emitidos basándose en la fecha del pago.
- Para los bienes materiales, incluye el IVU de las facturas basándose en la fecha de la factura. -RulesVATDue=- Para los servicios, el informe incluye el IVU de las facturas debidas, pagadas o no basándose en la fecha de estas facturas.
- Para los bienes materiales, incluye el IVU de las facturas basándose en la fecha de la factura. ACCOUNTING_VAT_ACCOUNT=Código contable por defecto para el IVU (si no está definido en el diccionario "Tasas de IVU") diff --git a/htdocs/langs/es_PR/main.lang b/htdocs/langs/es_PR/main.lang index ea38a2bc1f5..5388286d4c9 100644 --- a/htdocs/langs/es_PR/main.lang +++ b/htdocs/langs/es_PR/main.lang @@ -1,11 +1,28 @@ -Dolibarr language file - es_PR - main +# Dolibarr language file - Source file is en_US - main DIRECTION=ltr +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 SeparatorDecimal=, SeparatorThousand=None +FormatDateShort=%d/%m/%Y +FormatDateShortInput=%d/%m/%Y +FormatDateShortJava=dd/MM/yyyy +FormatDateShortJavaInput=dd/MM/yyyy +FormatDateShortJQuery=dd/mm/yy +FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI +FormatHourShort=%H:%M +FormatHourShortDuration=%H:%M +FormatDateTextShort=%d %b %Y +FormatDateText=%d %B %Y +FormatDateHourShort=%d/%m/%Y %H:%M +FormatDateHourSecShort=%d/%m/%Y %H:%M:%S +FormatDateHourTextShort=%d %b %Y %H:%M +FormatDateHourText=%d %B %Y %H:%M AmountVAT=Importe IVU TotalVAT=Total IVU IncludedVAT=IVU incluido HT=Sin IVU TTC=IVU incluido VAT=IVU -VATRate=Tasa IVU \ No newline at end of file +VATRate=Tasa IVU diff --git a/htdocs/langs/es_PR/propal.lang b/htdocs/langs/es_PR/propal.lang index 06af96213cb..0d94e5671f2 100644 --- a/htdocs/langs/es_PR/propal.lang +++ b/htdocs/langs/es_PR/propal.lang @@ -1,2 +1,2 @@ -# Dolibarr language file - es_PR - propal -AmountOfProposalsByMonthHT=Importe por mes (Sin IVU) \ No newline at end of file +# Dolibarr language file - Source file is en_US - propal +AmountOfProposalsByMonthHT=Importe por mes (Sin IVU) diff --git a/htdocs/langs/es_PY/main.lang b/htdocs/langs/es_PY/main.lang index 0342d2da7c0..1602d6a7ffa 100644 --- a/htdocs/langs/es_PY/main.lang +++ b/htdocs/langs/es_PY/main.lang @@ -1,4 +1,21 @@ -Dolibarr language file - es_PY - main +# Dolibarr language file - Source file is en_US - main DIRECTION=ltr +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 SeparatorDecimal=, -SeparatorThousand=None \ No newline at end of file +SeparatorThousand=None +FormatDateShort=%d/%m/%Y +FormatDateShortInput=%d/%m/%Y +FormatDateShortJava=dd/MM/yyyy +FormatDateShortJavaInput=dd/MM/yyyy +FormatDateShortJQuery=dd/mm/yy +FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI +FormatHourShort=%H:%M +FormatHourShortDuration=%H:%M +FormatDateTextShort=%d %b %Y +FormatDateText=%d %B %Y +FormatDateHourShort=%d/%m/%Y %H:%M +FormatDateHourSecShort=%d/%m/%Y %H:%M:%S +FormatDateHourTextShort=%d %b %Y %H:%M +FormatDateHourText=%d %B %Y %H:%M diff --git a/htdocs/langs/et_EE/admin.lang b/htdocs/langs/et_EE/admin.lang index cc2f8c9915d..0ab2363364b 100644 --- a/htdocs/langs/et_EE/admin.lang +++ b/htdocs/langs/et_EE/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Eksperimentaalne VersionDevelopment=Arendusversioon VersionUnknown=Teadmata VersionRecommanded=Soovitatav +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Sessiooni ID SessionSaveHandler=Sessioonide töötleja SessionSavePath=Salvestuse sessiooni lokaliseerimine @@ -493,10 +498,16 @@ Module600Name=Teated Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Annetused Module700Desc=Annetuste haldamine +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantise integratsioon Module1400Name=Raamatupidamine Module1400Desc=Raamatupidamise haldamine (topelt isikud) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Kategooriad Module1780Desc=Kategooriate haldamine (tooted, hankijad ja kliendid) Module2000Name=WYSIWYG toimeti @@ -631,7 +642,7 @@ Permission181=Ostutellimuste vaatamine Permission182=Ostutellimuste loomine/muutmine Permission183=Ostutellimuste kinnitamine Permission184=Ostutellimuste heaks kiitmine -Permission185=Ostutellimuste tellimine +Permission185=Order or cancel supplier orders Permission186=Ostutellimuste vastu võtmine Permission187=Ostutellimuste sulgemine Permission188=Ostutellimuste tühistamine @@ -711,6 +722,13 @@ Permission538=Teenuste eksport Permission701=Annetuste vaatamine Permission702=Annetuste loomine/muutmine Permission703=Annetuste kustutamine +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Laojääkide vaatamine Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Puhverserveri salasõna DefineHereComplementaryAttributes=Määratle siin kõik %s toetamiseks vajalikud atribuudid, mis ei ole vaikimisi saadaval. ExtraFields=Täiendavad atribuudid ExtraFieldsLines=Lisaatribuudid (read) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Täiendavad atribuudid (thirdparty e kolmas isik) ExtraFieldsContacts=Täiendavad atribuudid (contact/address e kontakt/aadress) ExtraFieldsMember=Täiendavad atribuudid (member e liige) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Toote/teenuse rida, mille koguseks on märgitud 0, pee FreeLegalTextOnProposal=Vaba tekst pakkumistel WatermarkOnDraftProposal=Vesimärk pakkumiste mustanditel (puudub, kui tühi) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Tellimuste haldamise seadistamine OrdersNumberingModules=Tellimuste numeratsiooni mudelid @@ -1383,7 +1410,7 @@ BarcodeDescUPC=UPC tüüpi vöötkood BarcodeDescISBN=ISBN tüüpi vöötkood BarcodeDescC39=C39 tüüpi vöötkood BarcodeDescC128=C128 tüüpi vöötkood -GenbarcodeLocation=Käsurea tööriist vöötkoodi genereerimiseks (sisemine mootor kasutab seda mõnda tüüpi vöötkoodide loomiseks) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Sisemine mootor BarCodeNumberManager=Automaatselt määratletud vöötkoodide haldamine ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Sularahamaksete vastu võtmiseks kasutatav konto CashDeskBankAccountForCheque= Tšekimaksete vastu võtmiseks kasutatav konto CashDeskBankAccountForCB= Krediitkaardimaksete vastu võtmiseks kasutatav konto -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Järjehoidjate mooduli seadistamine @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Formaat TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/et_EE/banks.lang b/htdocs/langs/et_EE/banks.lang index ab73f169a23..1003b8caa8e 100644 --- a/htdocs/langs/et_EE/banks.lang +++ b/htdocs/langs/et_EE/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Vastavusse viimine RIB=Arvelduskonto number IBAN=IBAN number +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Püsikorraldused StandingOrder=Püsikorraldus Withdrawals=Väljamaksed @@ -148,7 +152,7 @@ BackToAccount=Tagasi konto juurde ShowAllAccounts=Näita kõigil kontodel FutureTransaction=Tehing toimub tulevikus, ajaline ühitamine pole võimalik. SelectChequeTransactionAndGenerate=Vali välja tšekid, mida lisada tšeki deponeerimise kinnitusse ning klõpsa "Loo" nupul. -InputReceiptNumber=Vali vastavusse viimisega seotud panga väljavõte. Kasuta sorteeritavat numbrilist väärtust (näiteks YYYYMM). +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Lõpuks vali kategooria, mille alla kanded klassifitseerida ToConciliate=Vii vastavusse? ThenCheckLinesAndConciliate=Siis märgista konto väljavõttel asuvad read ja klõpsa diff --git a/htdocs/langs/et_EE/commercial.lang b/htdocs/langs/et_EE/commercial.lang index d58174550dc..59657233c22 100644 --- a/htdocs/langs/et_EE/commercial.lang +++ b/htdocs/langs/et_EE/commercial.lang @@ -9,9 +9,9 @@ Prospect=Huviline Prospects=Huvilised DeleteAction=Kustuta tegevus/ülesanne NewAction=Uus tegevus/ülesanne -AddAction=Lisa tegevus/ülesanne -AddAnAction=Lisa tegevus/ülesanne -AddActionRendezVous=Lisa kohtumine +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Kohtumine ConfirmDeleteAction=Kas tahad kindlasti selle tegevuse/ülesande kustutada? CardAction=Tegevuse kaart @@ -44,8 +44,8 @@ DoneActions=Lõpetatud tegevused DoneActionsFor=Teostaja %s lõpetatud tegevused ToDoActions=Lõpetamata tegevused ToDoActionsFor=Teostaja %s lõpetamata tegevused -SendPropalRef=Saada pakkumine %s -SendOrderRef=Saada tellimus %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Ei ole kohaldatav StatusActionToDo=Teha StatusActionDone=Tehtud @@ -62,7 +62,7 @@ LastProspectContactDone=Võeti ühendust DateActionPlanned=Tegevuse toimumiseks plaanitud kuupäev DateActionDone=Tegevuse toimumise kuupäev ActionAskedBy=Tegevuse pani kirja -ActionAffectedTo=Tegevuse eest vastutav +ActionAffectedTo=Event assigned to ActionDoneBy=Tegevuse viis läbi ActionUserAsk=Pani kirja ErrorStatusCantBeZeroIfStarted=Kui väli "Toimumise kuupäev" on täidetud, siis on tegevus alustatud (või lõpetatud), seega ei saa välja "Status" väärtuseks olla 0%. diff --git a/htdocs/langs/et_EE/contracts.lang b/htdocs/langs/et_EE/contracts.lang index cdf9a5c2b82..1d6c23dd8cf 100644 --- a/htdocs/langs/et_EE/contracts.lang +++ b/htdocs/langs/et_EE/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Aegunud ServiceStatusClosed=Suletud ServicesLegend=Teenuste legend Contracts=Lepingud +ContractsAndLine=Contracts and line of contracts Contract=Leping NoContracts=Lepinguid pole MenuServices=Teenused diff --git a/htdocs/langs/et_EE/cron.lang b/htdocs/langs/et_EE/cron.lang index 419f0202b60..a8b2473acb2 100644 --- a/htdocs/langs/et_EE/cron.lang +++ b/htdocs/langs/et_EE/cron.lang @@ -84,3 +84,4 @@ CronType_command=Käsurea käsk CronMenu=Cro CronCannotLoadClass=Klassi %s või objekti %s laadimine ebaõnnestus UseMenuModuleToolsToAddCronJobs=Mine menüüsse "Kodu - Moodulite tööriistad - Tegevuste nimekiri" planeeritud tegevuste vaatamiseks ja muutmiseks. +TaskDisabled=Task disabled diff --git a/htdocs/langs/et_EE/errors.lang b/htdocs/langs/et_EE/errors.lang index 4dec9c707e8..92f2ead7679 100644 --- a/htdocs/langs/et_EE/errors.lang +++ b/htdocs/langs/et_EE/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Lähtekonto ja sihtkonto pevad olema erinevad. ErrorBadThirdPartyName=Halb väärtus kolmanda isiku nimeks ErrorProdIdIsMandatory=%s on kohustuslik ErrorBadCustomerCodeSyntax=Halb kliendi koodi süntaks -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Kliendi kood on nõutud ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Kliendi kood on juba kasutuses @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Selle võimaluse töötamiseks peab JavaScript olem ErrorPasswordsMustMatch=Sisestatud paroolid peavad klappima ErrorContactEMail=Tekkis tehniline viga. Palun võta ühendust oma administraatoriga e-posti aadressil %s ning lisa sõnumisse vea kood %s või veel parem oleks lisada sõnumisse antud lehe kuvatõmmis. ErrorWrongValueForField=Väli number %s sisaldab vale väärtust (väärtus'%s' ei sobi regulaaravaldisega %s) -ErrorFieldValueNotIn=Väli number %s sisaldab vale väärtust (väärtus '%s' ei sobi välja %s tüübiga tabelis %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Väli number %s sisaldab vale väärtust (väärtus '%s' ei ole üksuse %s olemasolev viide) ErrorsOnXLines=%s lähtekirje(t) on vigane/vigased ErrorFileIsInfectedWithAVirus=Antiviiruse programm ei suutnud faili valideerida (fail võib olla viiruse poolt nakatatud) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Kohustuslikud seadistusparameetrid on määratlemata diff --git a/htdocs/langs/et_EE/install.lang b/htdocs/langs/et_EE/install.lang index 4ab6289f4f2..2c61df2288a 100644 --- a/htdocs/langs/et_EE/install.lang +++ b/htdocs/langs/et_EE/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Viimane samm: Määra siin tarkvaraga ühendumisek ActivateModule=Aktiveeri moodul %s ShowEditTechnicalParameters=Klõpsa siia lisaparameetrite näitamiseks/muutmiseks (spetsialisti režiim) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/et_EE/main.lang b/htdocs/langs/et_EE/main.lang index 52b69c9f148..98632e2e74e 100644 --- a/htdocs/langs/et_EE/main.lang +++ b/htdocs/langs/et_EE/main.lang @@ -141,6 +141,7 @@ Cancel=Tühista Modify=Muuda Edit=Toimeta Validate=Kinnita +ValidateAndApprove=Validate and Approve ToValidate=Kinnitada Save=Salvesta SaveAs=Salvesta kui @@ -158,6 +159,7 @@ Search=Otsi SearchOf=Otsi Valid=Kehtiv Approve=Kiida heaks +Disapprove=Disapprove ReOpen=Ava uuesti Upload=Saada fail ToLink=Seosta @@ -219,6 +221,7 @@ Cards=Kaardid Card=Kaart Now=Nüüd Date=Kuupäev +DateAndHour=Date and hour DateStart=Alguskuupäev DateEnd=Lõppkuupäev DateCreation=Loomise kuupäev @@ -295,6 +298,7 @@ UnitPriceHT=Ühiku hind (neto) UnitPriceTTC=Ühiku hind PriceU=ÜH PriceUHT=ÜH (neto) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=ÜH Amount=Summa AmountInvoice=Arve summa @@ -521,6 +525,7 @@ DateFromTo=Alates %s kuni %s DateFrom=Alates %s DateUntil=Kuni %s Check=Kontrolli +Uncheck=Uncheck Internal=Sisene External=Väline Internals=Sisene @@ -688,6 +693,7 @@ PublicUrl=Avalik link AddBox=Lisa kast SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Esmaspäev Tuesday=Teisipäev diff --git a/htdocs/langs/et_EE/orders.lang b/htdocs/langs/et_EE/orders.lang index 060a7ae2cfb..7c4e9a9b1d8 100644 --- a/htdocs/langs/et_EE/orders.lang +++ b/htdocs/langs/et_EE/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Tühistatud StatusOrderDraft=Mustand (vajab kinnitamist) StatusOrderValidated=Kinnitatud StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Töödeldud StatusOrderToBill=Saadetud StatusOrderToBill2=Arve esitada @@ -58,6 +59,7 @@ MenuOrdersToBill=Saadetud tellimused MenuOrdersToBill2=Billable orders SearchOrder=Otsi tellimust SearchACustomerOrder=Otsi müügitellimust +SearchASupplierOrder=Search a supplier order ShipProduct=Saada toode Discount=Allahindlus CreateOrder=Loo tellimus diff --git a/htdocs/langs/et_EE/other.lang b/htdocs/langs/et_EE/other.lang index 6a0f355dfa7..1670ba75c7a 100644 --- a/htdocs/langs/et_EE/other.lang +++ b/htdocs/langs/et_EE/other.lang @@ -54,12 +54,13 @@ MaxSize=Maksimaalne suurus AttachANewFile=Manusta uus fail/dokument LinkedObject=Seostatud objekt Miscellaneous=Muu -NbOfActiveNotifications=Teadete arv +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=See on testkiri.\nNeed kaks rida on eraldatud reavahetusega.\n\n__SIGNATURE__ PredefinedMailTestHtml=See on test kiri (sõna test peab olema rasvases kirjas).
Need kaks rida peavad olema eraldatud reavahetusega.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/et_EE/productbatch.lang b/htdocs/langs/et_EE/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/et_EE/productbatch.lang +++ b/htdocs/langs/et_EE/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/et_EE/products.lang b/htdocs/langs/et_EE/products.lang index b90084c9ced..2d64e8c5345 100644 --- a/htdocs/langs/et_EE/products.lang +++ b/htdocs/langs/et_EE/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/et_EE/projects.lang b/htdocs/langs/et_EE/projects.lang index 7333f9ac138..af73d9b93c7 100644 --- a/htdocs/langs/et_EE/projects.lang +++ b/htdocs/langs/et_EE/projects.lang @@ -8,8 +8,10 @@ SharedProject=Kõik PrivateProject=Projekti kontaktid MyProjectsDesc=Selles vaates näidatakse vaid neid projekte, mille kontaktiks oled märgitud (hoolimata liigist) ProjectsPublicDesc=See vaade esitab kõik projektid, mida sul on lubatud vaadata. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=See vaade näitab kõiki projekte (sinu kasutajaõigused annavad ligipääsu kõigele) MyTasksDesc=Selles vaates näidatakse vaid neid projekte või ülesandeid, mille kontaktiks oled märgitud (hoolimata liigist) +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=See vaade esitab kõik projektid ja ülesanded, mida sul on lubatud vaadata. TasksDesc=See vaade näitab kõiki projekte ja ülesandeid (sinu kasutajaõigused annavad ligipääsu kõigele) ProjectsArea=Projektide ala @@ -29,6 +31,8 @@ NoProject=Ühtki projekti pole määratletud või ei oma ühtki projekt NbOpenTasks=Avatud ülesandeid NbOfProjects=Projekte TimeSpent=Aega kulutatud +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Aega kulutatud RefTask=Ülesande viide LabelTask=Ülesande nimi @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Antud projektiga seotud ostutellimuste nimek ListSupplierInvoicesAssociatedProject=Antud projektiga seotud ostuarvete nimekiri ListContractAssociatedProject=Antud projektiga seotud lepingute nimekiri ListFichinterAssociatedProject=Antud projektiga seotud sekkumiste nimekiri -ListTripAssociatedProject=Antud projektiga seotud lähetuste ja kulude nimekiri +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Antud projektiga seotud tegevuste nimekiri ActivityOnProjectThisWeek=Projekti aktiivsus sellel nädalal ActivityOnProjectThisMonth=Projekti aktiivsus sellel kuul @@ -133,3 +137,6 @@ SearchAProject=Otsi projekti ProjectMustBeValidatedFirst=Esmalt peab projekti kinnitama ProjectDraft=Projektide mustandid FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/et_EE/salaries.lang b/htdocs/langs/et_EE/salaries.lang index 963209a58e8..a694b60850e 100644 --- a/htdocs/langs/et_EE/salaries.lang +++ b/htdocs/langs/et_EE/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Palk Salaries=Palgad Employee=Töötaja @@ -6,3 +8,6 @@ NewSalaryPayment=Uus palga makse SalaryPayment=Palga makse SalariesPayments=Palkade maksed ShowSalaryPayment=Näita palga makset +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/et_EE/sendings.lang b/htdocs/langs/et_EE/sendings.lang index 515ab2ca303..e343a62f82d 100644 --- a/htdocs/langs/et_EE/sendings.lang +++ b/htdocs/langs/et_EE/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Tellitud kogus QtyShipped=Saadetud kogus QtyToShip=Kogus saata QtyReceived=Saabunud kogus -KeepToShip=Jätkuvalt saata +KeepToShip=Remain to ship OtherSendingsForSameOrder=Tellimusega seotud teised saadetised DateSending=Tellimuse saatmise kuupäev DateSendingShort=Tellimuse saatmise kuupäev diff --git a/htdocs/langs/et_EE/stocks.lang b/htdocs/langs/et_EE/stocks.lang index 9e250e14562..026f5f6aefe 100644 --- a/htdocs/langs/et_EE/stocks.lang +++ b/htdocs/langs/et_EE/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Kaalutud keskmine hind PMPValueShort=KKH EnhancedValueOfWarehouses=Ladude väärtus UserWarehouseAutoCreate=Loo kasutaja loomisel automaatselt ladu +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Saadetud kogus QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=Laojäägi vähendamiseks kasutatakse ladu %s WarehouseForStockIncrease=Laojäägi suurendamiseks kasutatakse ladu %s ForThisWarehouse=Antud lao tarbeks ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=See on kõigi avatud ostutellimuste nimekiri +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Värskendamised NbOfProductBeforePeriod=Toote %s laojääk enne valitud perioodi (< %s) NbOfProductAfterPeriod=Toote %s laojääk pärast valitud perioodi (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/et_EE/suppliers.lang b/htdocs/langs/et_EE/suppliers.lang index 894a1dfcad6..be8bd178d54 100644 --- a/htdocs/langs/et_EE/suppliers.lang +++ b/htdocs/langs/et_EE/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Hankijad -Supplier=Hankija AddSupplier=Create a supplier SupplierRemoved=Hankija kustutatud SuppliersInvoice=Ostuarved @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Ostuarved ja maksed ExportDataset_fournisseur_3=Ostutellimused ja tellimuste read ApproveThisOrder=KIida see tellimuse heaks ConfirmApproveThisOrder=Kas oled täiesti kindel, et soovid heaks kiita tellimuse %s ? -DenyingThisOrder=Lükka tellimus tagasi +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Kas oled täiesti kindel, et soovid tagasi lükata tellimuse %s ? ConfirmCancelThisOrder=Kas oled täiesti kindel, et soovid tühistada telllimuse %s ? AddCustomerOrder=Loo müügitellimus diff --git a/htdocs/langs/et_EE/trips.lang b/htdocs/langs/et_EE/trips.lang index c9ec60bb29b..12661480a8e 100644 --- a/htdocs/langs/et_EE/trips.lang +++ b/htdocs/langs/et_EE/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Reis -Trips=Trips -TripsAndExpenses=Matkad ja kulud -TripsAndExpensesStatistics=Reiside ja kulude statistika -TripCard=Reisi kaart -AddTrip=Lisa trip -ListOfTrips=List of väljasõidud +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=List tasude -NewTrip=New trip +NewTrip=New expense report CompanyVisited=Äriühingu/ühenduse külastas Kilometers=Kilomeetrid FeesKilometersOrAmout=Summa või kilomeetrites -DeleteTrip=Kustuta trip -ConfirmDeleteTrip=Oled sa kindel, et soovite kustutada selle reisi? -TF_OTHER=Muu -TF_LUNCH=Lõuna -TF_TRIP=Reis -ListTripsAndExpenses=List reiside ja kulude -ExpensesArea=Matkad ja kulud ala -SearchATripAndExpense=Otsi reisi ja kulu +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Muu +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lõuna +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/eu_ES/admin.lang b/htdocs/langs/eu_ES/admin.lang index 15b5248bbbd..283b7d567cf 100644 --- a/htdocs/langs/eu_ES/admin.lang +++ b/htdocs/langs/eu_ES/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Esperimentala VersionDevelopment=Garapena VersionUnknown=Ezezaguna VersionRecommanded=Gomendatua +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Sesioaren ID SessionSaveHandler=Kudeatzailea sesioak gordetzeko SessionSavePath=Sesio biltegiaren kokapena @@ -493,10 +498,16 @@ Module600Name=Jakinarazpenak Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Diru-emateak Module700Desc=Diru-emateak kudeatzea +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1400Name=Kontabilitatea Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Kategoriak Module1780Desc=Kategoriak kudeatzea (produktuak, hornitzaileak eta bezeroak) Module2000Name=WYSIWYG editorea @@ -631,7 +642,7 @@ Permission181=Read supplier orders Permission182=Create/modify supplier orders Permission183=Validate supplier orders Permission184=Approve supplier orders -Permission185=Order supplier orders +Permission185=Order or cancel supplier orders Permission186=Receive supplier orders Permission187=Close supplier orders Permission188=Cancel supplier orders @@ -711,6 +722,13 @@ Permission538=Export services Permission701=Read donations Permission702=Create/modify donations Permission703=Delete donations +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Read stocks Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Password to use the proxy server DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s. ExtraFields=Complementary attributes ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=A line of product/service with a zero amount is consid FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Order management setup OrdersNumberingModules=Orders numbering models @@ -1383,7 +1410,7 @@ BarcodeDescUPC=UPC motako barra-kodea BarcodeDescISBN=ISBN motako barra-kodea BarcodeDescC39=C39 motako barra-kodea BarcodeDescC128=C128 motako barra-kodea -GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Barne-eragilea BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Default account to use to receive cash payments CashDeskBankAccountForCheque= Default account to use to receive payments by cheque CashDeskBankAccountForCB= Default account to use to receive payments by credit cards -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Bookmark module setup @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/eu_ES/banks.lang b/htdocs/langs/eu_ES/banks.lang index 10a5f5b3c14..a2306950fb4 100644 --- a/htdocs/langs/eu_ES/banks.lang +++ b/htdocs/langs/eu_ES/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Reconciliation RIB=Bank Account Number IBAN=IBAN number +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Standing orders StandingOrder=Standing order Withdrawals=Withdrawals @@ -148,7 +152,7 @@ BackToAccount=Back to account ShowAllAccounts=Show for all accounts FutureTransaction=Transaction in futur. No way to conciliate. SelectChequeTransactionAndGenerate=Select/filter checks to include into the check deposit receipt and click on "Create". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/eu_ES/commercial.lang b/htdocs/langs/eu_ES/commercial.lang index b83fe1d4671..5e6f75fc30c 100644 --- a/htdocs/langs/eu_ES/commercial.lang +++ b/htdocs/langs/eu_ES/commercial.lang @@ -62,7 +62,7 @@ LastProspectContactDone=Contact done DateActionPlanned=Date event planned for DateActionDone=Date event done ActionAskedBy=Event reported by -ActionAffectedTo=Event owned by +ActionAffectedTo=Event assigned to ActionDoneBy=Event done by ActionUserAsk=Reported by ErrorStatusCantBeZeroIfStarted=If field 'Date done' is filled, action is started (or finished), so field 'Status' can't be 0%%. diff --git a/htdocs/langs/eu_ES/contracts.lang b/htdocs/langs/eu_ES/contracts.lang index 57ba3bb15d8..d1be0e6513f 100644 --- a/htdocs/langs/eu_ES/contracts.lang +++ b/htdocs/langs/eu_ES/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expired ServiceStatusClosed=Closed ServicesLegend=Services legend Contracts=Contracts +ContractsAndLine=Contracts and line of contracts Contract=Contract NoContracts=No contracts MenuServices=Services diff --git a/htdocs/langs/eu_ES/cron.lang b/htdocs/langs/eu_ES/cron.lang index 36270d08f1b..c55f6c923ce 100644 --- a/htdocs/langs/eu_ES/cron.lang +++ b/htdocs/langs/eu_ES/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/eu_ES/errors.lang b/htdocs/langs/eu_ES/errors.lang index 497ddd814e4..700e6344d7d 100644 --- a/htdocs/langs/eu_ES/errors.lang +++ b/htdocs/langs/eu_ES/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be differen ErrorBadThirdPartyName=Bad value for third party name ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Customer code already used @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript must not be disabled to have this featur ErrorPasswordsMustMatch=Both typed passwords must match each other ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) -ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) ErrorsOnXLines=Errors on %s source record(s) ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/eu_ES/install.lang b/htdocs/langs/eu_ES/install.lang index 5a494156672..dcd8df6e7db 100644 --- a/htdocs/langs/eu_ES/install.lang +++ b/htdocs/langs/eu_ES/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Last step: Define here login and password you plan ActivateModule=Activate module %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/eu_ES/main.lang b/htdocs/langs/eu_ES/main.lang index 6045b98edb1..5913029999d 100644 --- a/htdocs/langs/eu_ES/main.lang +++ b/htdocs/langs/eu_ES/main.lang @@ -141,6 +141,7 @@ Cancel=Utzi Modify=Eraldatu Edit=Editatu Validate=Validate +ValidateAndApprove=Validate and Approve ToValidate=To validate Save=Gorde SaveAs=Gorde honela @@ -158,6 +159,7 @@ Search=Bilatu SearchOf=Bilatu Valid=Valid Approve=Approve +Disapprove=Disapprove ReOpen=Re-Open Upload=Send file ToLink=Link @@ -219,6 +221,7 @@ Cards=Cards Card=Card Now=Orain Date=Data +DateAndHour=Date and hour DateStart=Date start DateEnd=Date end DateCreation=Creation date @@ -295,6 +298,7 @@ UnitPriceHT=Unit price (net) UnitPriceTTC=Unit price PriceU=U.P. PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=U.P. Amount=Amount AmountInvoice=Invoice amount @@ -521,6 +525,7 @@ DateFromTo=From %s to %s DateFrom=From %s DateUntil=Until %s Check=Check +Uncheck=Uncheck Internal=Internal External=External Internals=Internal @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/eu_ES/orders.lang b/htdocs/langs/eu_ES/orders.lang index 34792ae1eb2..8efafa5e94e 100644 --- a/htdocs/langs/eu_ES/orders.lang +++ b/htdocs/langs/eu_ES/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Canceled StatusOrderDraft=Draft (needs to be validated) StatusOrderValidated=Validated StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Processed StatusOrderToBill=Delivered StatusOrderToBill2=To bill @@ -58,6 +59,7 @@ MenuOrdersToBill=Orders delivered MenuOrdersToBill2=Billable orders SearchOrder=Search order SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Ship product Discount=Discount CreateOrder=Create Order diff --git a/htdocs/langs/eu_ES/other.lang b/htdocs/langs/eu_ES/other.lang index 88991888183..08747ea884b 100644 --- a/htdocs/langs/eu_ES/other.lang +++ b/htdocs/langs/eu_ES/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximum size AttachANewFile=Attach a new file/document LinkedObject=Linked object Miscellaneous=Miscellaneous -NbOfActiveNotifications=Number of notifications +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/eu_ES/productbatch.lang b/htdocs/langs/eu_ES/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/eu_ES/productbatch.lang +++ b/htdocs/langs/eu_ES/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/eu_ES/products.lang b/htdocs/langs/eu_ES/products.lang index 3a29639b12b..3a18cda69e7 100644 --- a/htdocs/langs/eu_ES/products.lang +++ b/htdocs/langs/eu_ES/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/eu_ES/projects.lang b/htdocs/langs/eu_ES/projects.lang index b3c150d1687..0a12f4c64b7 100644 --- a/htdocs/langs/eu_ES/projects.lang +++ b/htdocs/langs/eu_ES/projects.lang @@ -8,8 +8,10 @@ SharedProject=Everybody PrivateProject=Contacts of project MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=This view presents all projects and tasks you are allowed to read. TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). ProjectsArea=Projects area @@ -29,6 +31,8 @@ NoProject=No project defined or owned NbOpenTasks=Nb of opened tasks NbOfProjects=Nb of projects TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Time spent RefTask=Ref. task LabelTask=Label task @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=List of supplier's orders associated with th ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated with the project ListContractAssociatedProject=List of contracts associated with the project ListFichinterAssociatedProject=List of interventions associated with the project -ListTripAssociatedProject=List of trips and expenses associated with the project +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=List of events associated with the project ActivityOnProjectThisWeek=Activity on project this week ActivityOnProjectThisMonth=Activity on project this month @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/eu_ES/salaries.lang b/htdocs/langs/eu_ES/salaries.lang index 31629a4ee99..98551e32117 100644 --- a/htdocs/langs/eu_ES/salaries.lang +++ b/htdocs/langs/eu_ES/salaries.lang @@ -10,3 +10,4 @@ SalariesPayments=Soldaten ordainketak ShowSalaryPayment=Soldataren ordainketa erakutsi THM=Batezbesteko orduko prezioa TJM=Batezbesteko eguneko prezioa +CurrentSalary=Current salary diff --git a/htdocs/langs/eu_ES/sendings.lang b/htdocs/langs/eu_ES/sendings.lang index 794c9019c86..b1ff55f71c1 100644 --- a/htdocs/langs/eu_ES/sendings.lang +++ b/htdocs/langs/eu_ES/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Qty ordered QtyShipped=Qty shipped QtyToShip=Qty to ship QtyReceived=Qty received -KeepToShip=Keep to ship +KeepToShip=Remain to ship OtherSendingsForSameOrder=Other shipments for this order DateSending=Date sending order DateSendingShort=Date sending order diff --git a/htdocs/langs/eu_ES/stocks.lang b/htdocs/langs/eu_ES/stocks.lang index 9de2e5a4dbe..29706d17615 100644 --- a/htdocs/langs/eu_ES/stocks.lang +++ b/htdocs/langs/eu_ES/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Weighted average price PMPValueShort=WAP EnhancedValueOfWarehouses=Warehouses value UserWarehouseAutoCreate=Create a warehouse automatically when creating a user +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Quantity dispatched QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/eu_ES/suppliers.lang b/htdocs/langs/eu_ES/suppliers.lang index 7b4d4acb244..baf573c66ac 100644 --- a/htdocs/langs/eu_ES/suppliers.lang +++ b/htdocs/langs/eu_ES/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Suppliers -Supplier=Supplier AddSupplier=Create a supplier SupplierRemoved=Supplier removed SuppliersInvoice=Suppliers invoice @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Supplier invoices and payments ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Approve this order ConfirmApproveThisOrder=Are you sure you want to approve order %s ? -DenyingThisOrder=Denying this order +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? AddCustomerOrder=Create customer order diff --git a/htdocs/langs/eu_ES/trips.lang b/htdocs/langs/eu_ES/trips.lang index e9d7c242e07..35f4d8f1cad 100644 --- a/htdocs/langs/eu_ES/trips.lang +++ b/htdocs/langs/eu_ES/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Bidaia -Trips=Bidaiak -TripsAndExpenses=Trips and expenses -TripsAndExpensesStatistics=Trips and expenses statistics -TripCard=Trip card -AddTrip=Bidaia sortu -ListOfTrips=Bidaien zerrenda +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=List of fees -NewTrip=Bidai berria +NewTrip=New expense report CompanyVisited=Bisitatutako konpania/erakundea Kilometers=Kilometroak FeesKilometersOrAmout=Amount or kilometers -DeleteTrip=Bidaia ezabatu -ConfirmDeleteTrip=Ziur zaude bidai hau ezabatu nahi duzuna? -TF_OTHER=Other -TF_LUNCH=Bazkaria -TF_TRIP=Bidaia -ListTripsAndExpenses=List of trips and expenses -ExpensesArea=Trips and expenses area -SearchATripAndExpense=Search a trip and expense +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRANSPORTATION=Transportation +TF_LUNCH=Bazkaria +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/fa_IR/admin.lang b/htdocs/langs/fa_IR/admin.lang index a943825df33..c9304d083b0 100644 --- a/htdocs/langs/fa_IR/admin.lang +++ b/htdocs/langs/fa_IR/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=تجربی VersionDevelopment=توسعه VersionUnknown=ناشناخته VersionRecommanded=توصیه شده +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=جلسه ID SessionSaveHandler=هندلر برای صرفه جویی در جلسات SessionSavePath=محلی سازی را وارد نمایید و ذخیره سازی @@ -493,10 +498,16 @@ Module600Name=اطلاعیه ها Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=کمک های مالی Module700Desc=مدیریت کمک مالی +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=اخوندک Module1200Desc=ادغام آخوندک Module1400Name=حسابداری Module1400Desc=مدیریت حسابداری (احزاب دو) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=دسته بندی ها Module1780Desc=مدیریت گروه (محصولات، تامین کنندگان و مشتریان) Module2000Name=ویرایشگر WYSIWYG @@ -631,7 +642,7 @@ Permission181=خوانده شده سفارشات کالا Permission182=ایجاد / تغییر سفارشات کالا Permission183=اعتبارسنجی سفارشات کالا Permission184=تصویب سفارشات کالا -Permission185=سفارشات تامین کننده نظم +Permission185=Order or cancel supplier orders Permission186=دریافت سفارشات کالا Permission187=نزدیک سفارشات کالا Permission188=لغو سفارشات کالا @@ -711,6 +722,13 @@ Permission538=خدمات صادرات Permission701=خوانده شده Permission702=ایجاد / تغییر کمک های مالی Permission703=حذف کمک های مالی +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=خوانده شده سهام Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=رمز عبور به استفاده از پروکسی سرور DefineHereComplementaryAttributes=تعریف در اینجا تمام صفات، در حال حاضر به طور پیش فرض در دسترس نیست، و این که شما می خواهید برای٪ s پشتیبانی می شود. ExtraFields=ویژگی های مکمل ExtraFieldsLines=ویژگی های مکمل (خط) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=ویژگی های مکمل (thirdparty) ExtraFieldsContacts=ویژگی های مکمل (تماس / آدرس) ExtraFieldsMember=ویژگی های مکمل (عضو) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=یک خط از محصول / خدمات با مقدار FreeLegalTextOnProposal=متن رایگان در طرح های تجاری WatermarkOnDraftProposal=تعیین میزان مد آب در پیش نویس طرح تجاری (هیچ اگر خالی) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=راه اندازی مدیریت سفارش OrdersNumberingModules=سفارشات شماره مدل @@ -1383,7 +1410,7 @@ BarcodeDescUPC=بارکد از نوع UPC BarcodeDescISBN=بارکد از نوع ISBN BarcodeDescC39=بارکد از نوع C39 BarcodeDescC128=بارکد از نوع C128 -GenbarcodeLocation=تولید کد نوار ابزار خط فرمان (استفاده شده توسط موتور داخلی برای برخی از انواع بارکد) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=موتور داخلی BarCodeNumberManager=مدیر به صورت خودکار تعریف اعداد بارکد ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=پیش فرض حساب استفاده برای دریافت پرداخت های نقدی CashDeskBankAccountForCheque= پیش فرض حساب استفاده برای دریافت پرداخت توسط چک CashDeskBankAccountForCB= پیش فرض حساب استفاده برای دریافت پرداخت توسط کارت های اعتباری -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=راه اندازی ماژول چوب الف @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=قالب TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/fa_IR/banks.lang b/htdocs/langs/fa_IR/banks.lang index b94e76dd3c6..30e1877cfe8 100644 --- a/htdocs/langs/fa_IR/banks.lang +++ b/htdocs/langs/fa_IR/banks.lang @@ -33,7 +33,11 @@ AllTime=از شروع Reconciliation=مصالحه RIB=شماره حساب بانکی IBAN=شماره IBAN +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC / تعداد SWIFT +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=سفارشات ایستاده StandingOrder=نظام نامه Withdrawals=برداشت ها @@ -148,7 +152,7 @@ BackToAccount=برگشت به حساب ShowAllAccounts=نمایش برای همه حساب ها FutureTransaction=معامله در futur. هیچ راهی برای مصالحه. SelectChequeTransactionAndGenerate=انتخاب چک / فیلتر به چک دریافت سپرده شامل و کلیک بر روی "ایجاد". -InputReceiptNumber=بیانیه بانک مرتبط با مصالحه را انتخاب کنید. استفاده از یک مقدار عددی قابل مرتب شدن است (مانند، YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=در نهایت، تعیین یک دسته بندی است که در آن برای طبقه بندی پرونده ToConciliate=به مصالحه؟ ThenCheckLinesAndConciliate=سپس، بررسی خطوط موجود در صورت حساب بانکی و کلیک کنید diff --git a/htdocs/langs/fa_IR/commercial.lang b/htdocs/langs/fa_IR/commercial.lang index 46d83514095..58154b70276 100644 --- a/htdocs/langs/fa_IR/commercial.lang +++ b/htdocs/langs/fa_IR/commercial.lang @@ -9,9 +9,9 @@ Prospect=چشم انداز Prospects=چشم انداز DeleteAction=حذف یک رویداد / کار NewAction=رویداد جدید / کار -AddAction=اضافه کردن رویداد / کار -AddAnAction=اضافه کردن یک رویداد / کار -AddActionRendezVous=اضافه کردن یک رویداد Rendez-vous +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=قرار ملاقات گذاشتن ConfirmDeleteAction=آیا مطمئن هستید که می خواهید این رویداد / وظیفه را حذف کنید؟ CardAction=کارت رویداد @@ -44,8 +44,8 @@ DoneActions=رویدادهای انجام شده DoneActionsFor=رویدادهای انجام شده برای٪ s ToDoActions=رویدادهای ناقص ToDoActionsFor=رویدادهای ناقص برای٪ s -SendPropalRef=ارسال پیشنهاد تجاری از٪ s -SendOrderRef=ارسال منظور از٪ s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=قابل اجرا نیست StatusActionToDo=برای انجام این کار StatusActionDone=کامل @@ -62,7 +62,7 @@ LastProspectContactDone=تماس با انجام DateActionPlanned=تاریخ رویداد برنامه ریزی شده برای DateActionDone=تاریخ رویداد انجام می شود ActionAskedBy=رویداد گزارش شده توسط -ActionAffectedTo=رویداد اختصاص یافته به +ActionAffectedTo=Event assigned to ActionDoneBy=رویداد های انجام شده توسط ActionUserAsk=به گزارش ErrorStatusCantBeZeroIfStarted=اگر زمینه 'تاریخ انجام می شود' پر شده است، اقدام آغاز شده است (و یا به پایان رسید)، پس درست است 'وضعیت' می تواند 0٪٪ نیست. diff --git a/htdocs/langs/fa_IR/contracts.lang b/htdocs/langs/fa_IR/contracts.lang index 66101dfbec6..399617a86aa 100644 --- a/htdocs/langs/fa_IR/contracts.lang +++ b/htdocs/langs/fa_IR/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=منقضی شده ServiceStatusClosed=بسته ServicesLegend=خدمات افسانه Contracts=قراردادها +ContractsAndLine=Contracts and line of contracts Contract=قرارداد NoContracts=بدون قرارداد MenuServices=خدمات diff --git a/htdocs/langs/fa_IR/cron.lang b/htdocs/langs/fa_IR/cron.lang index c7464dd88b9..feca42ac429 100644 --- a/htdocs/langs/fa_IR/cron.lang +++ b/htdocs/langs/fa_IR/cron.lang @@ -84,3 +84,4 @@ CronType_command=فرمان شل CronMenu=cron را CronCannotLoadClass=آیا می توانم کلاس٪ s ​​را بار نیست و یا شی از٪ s UseMenuModuleToolsToAddCronJobs=برو به منوی "صفحه اصلی - ماژول ابزار - فهرست فرصت های شغلی" برای دیدن و ویرایش کار برنامه ریزی شده. +TaskDisabled=Task disabled diff --git a/htdocs/langs/fa_IR/errors.lang b/htdocs/langs/fa_IR/errors.lang index 2b562f769ad..feea5472afb 100644 --- a/htdocs/langs/fa_IR/errors.lang +++ b/htdocs/langs/fa_IR/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=منبع و اهداف حساب های بانکی ErrorBadThirdPartyName=ارزش بد برای نام شخص ثالث ErrorProdIdIsMandatory=٪ بازدید کنندگان الزامی است ErrorBadCustomerCodeSyntax=نحو بد برای کد مشتری -ErrorBadBarCodeSyntax=نحو بد بارکد +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=کد مشتریان مورد نیاز ErrorBarCodeRequired=کد نوار مورد نیاز ErrorCustomerCodeAlreadyUsed=کد مشتری در حال حاضر استفاده می شود @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=جاوا اسکریپت نمی باید غیر فع ErrorPasswordsMustMatch=هر دو کلمه عبور تایپ شده باید با یکدیگر مطابقت ErrorContactEMail=یک خطای فنی رخ داد. لطفا، با مدیر سایت تماس به زیر ایمیل از٪ s EN ارائه کد خطا٪ s در پیام خود، و یا حتی بهتر با اضافه کردن یک کپی روی صفحه نمایش از این صفحه. ErrorWrongValueForField=ارزش اشتباه برای تعداد فیلد٪ s (مقدار «٪ s» به عبارت منظم حکومت از٪ s مطابقت ندارد) -ErrorFieldValueNotIn=ارزش اشتباه برای تعداد فیلد٪ s (مقدار «٪ s» است مقدار موجود در فیلد٪ s را از جدول٪ نیست) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=ارزش اشتباه برای تعداد فیلد٪ s (مقدار «٪ s» است از٪ s کد عکس موجود نیست) ErrorsOnXLines=خطا در٪ s را ثبت منبع (ها) ErrorFileIsInfectedWithAVirus=برنامه آنتی ویروس قادر به اعتبار فایل (فایل ممکن است توسط یک ویروس آلوده) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=پارامترهای راه اندازی اجباری هنوز تعریف نشده diff --git a/htdocs/langs/fa_IR/install.lang b/htdocs/langs/fa_IR/install.lang index ac1ba6dc068..0b4f81b7903 100644 --- a/htdocs/langs/fa_IR/install.lang +++ b/htdocs/langs/fa_IR/install.lang @@ -156,6 +156,7 @@ LastStepDesc=آخرین مرحله: تعریف اینجا کا ActivateModule=فعال بخش٪ s ShowEditTechnicalParameters=برای نشان دادن پارامترهای پیشرفته / ویرایش اینجا را کلیک کنید (حالت کارشناسی) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/fa_IR/main.lang b/htdocs/langs/fa_IR/main.lang index f75a9926e70..8e9afbf39b0 100644 --- a/htdocs/langs/fa_IR/main.lang +++ b/htdocs/langs/fa_IR/main.lang @@ -141,6 +141,7 @@ Cancel=لغو کردن Modify=تغییر دادن Edit=ویرایش Validate=معتبر ساختن +ValidateAndApprove=Validate and Approve ToValidate=به اعتبار Save=جویی در هزینه SaveAs=ذخیره به عنوان @@ -158,6 +159,7 @@ Search=جستجو SearchOf=جستجو Valid=معتبر Approve=تصویب +Disapprove=Disapprove ReOpen=دوباره باز Upload=ارسال فایل ToLink=پیوند @@ -219,6 +221,7 @@ Cards=کارت Card=کارت Now=اکنون Date=تاریخ +DateAndHour=Date and hour DateStart=تاریخ شروع DateEnd=تاریخ پایان DateCreation=تاریخ ایجاد @@ -295,6 +298,7 @@ UnitPriceHT=قیمت واحد (خالص) UnitPriceTTC=قیمت واحد PriceU=UP PriceUHT=UP (خالص) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=UP Amount=مقدار AmountInvoice=مقدار فاکتور @@ -521,6 +525,7 @@ DateFromTo=از٪ s به٪ s DateFrom=از٪ s DateUntil=تا از٪ s Check=بررسی +Uncheck=Uncheck Internal=داخلی External=خارجی Internals=داخلی @@ -688,6 +693,7 @@ PublicUrl=URL عمومی AddBox=اضافه کردن جعبه SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=دوشنبه Tuesday=سهشنبه diff --git a/htdocs/langs/fa_IR/orders.lang b/htdocs/langs/fa_IR/orders.lang index 43f430681cb..c680e0c4e84 100644 --- a/htdocs/langs/fa_IR/orders.lang +++ b/htdocs/langs/fa_IR/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=لغو شد StatusOrderDraft=پیش نویس (نیاز به تایید می شود) StatusOrderValidated=اعتبار StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=پردازش StatusOrderToBill=تحویل StatusOrderToBill2=به بیل @@ -58,6 +59,7 @@ MenuOrdersToBill=سفارشات تحویل MenuOrdersToBill2=Billable orders SearchOrder=نتایج جستجو SearchACustomerOrder=جستجوی یک سفارش مشتری +SearchASupplierOrder=Search a supplier order ShipProduct=محصول کشتی Discount=تخفیف CreateOrder=ایجاد نظم diff --git a/htdocs/langs/fa_IR/other.lang b/htdocs/langs/fa_IR/other.lang index a510a002ae4..0276748a4da 100644 --- a/htdocs/langs/fa_IR/other.lang +++ b/htdocs/langs/fa_IR/other.lang @@ -54,12 +54,13 @@ MaxSize=حداکثر اندازه AttachANewFile=ضمیمه کردن فایل جدید / سند LinkedObject=شی مرتبط Miscellaneous=متفرقه -NbOfActiveNotifications=تعداد اطلاعیه ها +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=این یک پست تست است. دو خط با بازگشت نورد جدا شده است. __SIGNATURE__ PredefinedMailTestHtml=این ایمیل آزمون (آزمون کلمه باید در پررنگ باشد) است.
دو خط با بازگشت نورد جدا شده است.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__ شما در اینجا خواهید دید فاکتور __ FACREF__ __ PERSONALIZED__Sincerely __ SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__ ما می خواهیم به شما هشدار می دهند که فاکتور __ FACREF__ به نظر می رسد که غیر انتفایی نیست. پس این فاکتور در پیوست است دوباره، به عنوان یک یادآوری. __PERSONALIZED__Sincerely __ SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__ شما در اینجا خواهید دید پیشنهاد تجاری __ PROPREF__ __ PERSONALIZED__Sincerely __ SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__ شما در اینجا خواهید دید که منظور __ ORDERREF__ __ PERSONALIZED__Sincerely __ SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__ شما در اینجا خواهید دید منظور ما __ ORDERREF__ __ PERSONALIZED__Sincerely __ SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__ شما در اینجا خواهید دید فاکتور __ FACREF__ __ PERSONALIZED__Sincerely __ SIGNATURE__ diff --git a/htdocs/langs/fa_IR/productbatch.lang b/htdocs/langs/fa_IR/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/fa_IR/productbatch.lang +++ b/htdocs/langs/fa_IR/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/fa_IR/products.lang b/htdocs/langs/fa_IR/products.lang index 2fcdf5eed69..f7f332d68a0 100644 --- a/htdocs/langs/fa_IR/products.lang +++ b/htdocs/langs/fa_IR/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/fa_IR/projects.lang b/htdocs/langs/fa_IR/projects.lang index 2606f870f39..0e685cffc26 100644 --- a/htdocs/langs/fa_IR/projects.lang +++ b/htdocs/langs/fa_IR/projects.lang @@ -8,8 +8,10 @@ SharedProject=هر کسی PrivateProject=اطلاعات تماس پروژه MyProjectsDesc=این دیدگاه محدود به پروژه شما یک تماس برای (هر چه باشد نوع) می باشد. ProjectsPublicDesc=این دیدگاه ارائه تمام پروژه ها به شما این اجازه را بخوانید. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=این دیدگاه ارائه تمام پروژه (مجوز دسترسی خود را به شما عطا اجازه دسترسی به همه چیز). MyTasksDesc=این دیدگاه به پروژه ها و یا کارهای شما تماس برای (هر چه باشد نوع) می باشد محدود است. +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=این دیدگاه ارائه تمام پروژه ها و کارهای شما مجاز به خواندن. TasksDesc=این دیدگاه ارائه تمام پروژه ها و وظایف (مجوز دسترسی خود را به شما عطا اجازه دسترسی به همه چیز). ProjectsArea=منطقه پروژه ها @@ -29,6 +31,8 @@ NoProject=هیچ پروژه تعریف شده و یا متعلق به NbOpenTasks=NB از وظایف باز NbOfProjects=Nb در پروژه TimeSpent=زمان صرف شده +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=زمان صرف شده RefTask=کد عکس. کار LabelTask=کار برچسب @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=فهرست سفارشات منبع در ار ListSupplierInvoicesAssociatedProject=فهرست فاکتورها منبع در ارتباط با پروژه ListContractAssociatedProject=فهرست قرارداد در ارتباط با پروژه ListFichinterAssociatedProject=فهرست مداخلات مرتبط با پروژه -ListTripAssociatedProject=فهرست از سفر و هزینه های مرتبط با پروژه +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=فهرست رویدادی به این پروژه ActivityOnProjectThisWeek=فعالیت در پروژه این هفته ActivityOnProjectThisMonth=فعالیت در پروژه این ماه @@ -133,3 +137,6 @@ SearchAProject=جستجوی یک پروژه ProjectMustBeValidatedFirst=پروژه ابتدا باید معتبر باشد ProjectDraft=پروژه های پیش نویس FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/fa_IR/salaries.lang b/htdocs/langs/fa_IR/salaries.lang index 2cb6f372f7e..63b2ea6e372 100644 --- a/htdocs/langs/fa_IR/salaries.lang +++ b/htdocs/langs/fa_IR/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=حقوق Salaries=حقوق Employee=کارمند @@ -6,3 +8,6 @@ NewSalaryPayment=پرداخت حقوق و دستمزد جدید SalaryPayment=پرداخت حقوق و دستمزد SalariesPayments=حقوق پرداخت ShowSalaryPayment=نمایش پرداخت حقوق و دستمزد +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/fa_IR/sendings.lang b/htdocs/langs/fa_IR/sendings.lang index de9d8feaa46..f456863b564 100644 --- a/htdocs/langs/fa_IR/sendings.lang +++ b/htdocs/langs/fa_IR/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=تعداد سفارش داده شده QtyShipped=تعداد حمل QtyToShip=تعداد به کشتی QtyReceived=تعداد دریافت -KeepToShip=نگه دارید به کشتی +KeepToShip=Remain to ship OtherSendingsForSameOrder=دیگر محموله برای این منظور DateSending=عضویت جهت ارسال DateSendingShort=عضویت جهت ارسال diff --git a/htdocs/langs/fa_IR/stocks.lang b/htdocs/langs/fa_IR/stocks.lang index 0d849cdaf73..1e27de088b8 100644 --- a/htdocs/langs/fa_IR/stocks.lang +++ b/htdocs/langs/fa_IR/stocks.lang @@ -47,6 +47,7 @@ PMPValue=قیمت به طور متوسط ​​وزنی PMPValueShort=WAP EnhancedValueOfWarehouses=ارزش ساختمان و ذخیره سازی UserWarehouseAutoCreate=ایجاد یک انبار به طور خودکار در هنگام ایجاد یک کاربر +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=تعداد اعزام QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=انبار٪ خواهد شد برای سهام WarehouseForStockIncrease=انبار٪ خواهد شد برای افزایش سهام استفاده ForThisWarehouse=برای این انبار ReplenishmentStatusDesc=این لیست از همه محصول با سهام پایین تر از سهام مورد نظر (یا کمتر از ارزش هشدار اگر گزینه "هشدار تنها" بررسی می شود)، و نشان می دهد به شما برای ایجاد سفارشات منبع برای پر کردن تفاوت است. -ReplenishmentOrdersDesc=این لیست از تمام سفارشات منبع باز است +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=پر کردن NbOfProductBeforePeriod=تعداد محصول٪ s را در انبار قبل از دوره (<٪) انتخاب NbOfProductAfterPeriod=تعداد محصول٪ s را در سهام بعد از دوره زمانی انتخاب شده (>٪ بازدید کنندگان) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/fa_IR/suppliers.lang b/htdocs/langs/fa_IR/suppliers.lang index 62cfdfdd084..917a56b1758 100644 --- a/htdocs/langs/fa_IR/suppliers.lang +++ b/htdocs/langs/fa_IR/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=تولید کنندگان -Supplier=تهیه کننده AddSupplier=Create a supplier SupplierRemoved=تامین کننده حذف SuppliersInvoice=تولید کنندگان صورتحساب @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=فاکتورها تامین کننده و پرداخ ExportDataset_fournisseur_3=سفارشات تامین کننده و خطوط جهت ApproveThisOrder=تصویب این منظور ConfirmApproveThisOrder=آیا مطمئن هستید که می خواهید برای تایید از٪ s؟ -DenyingThisOrder=انکار این منظور +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=آیا مطمئن هستید که می خواهید برای انکار این منظور از٪ s؟ ConfirmCancelThisOrder=آیا مطمئن هستید که می خواهید به لغو این منظور از٪ s؟ AddCustomerOrder=ایجاد سفارش مشتری diff --git a/htdocs/langs/fa_IR/trips.lang b/htdocs/langs/fa_IR/trips.lang index 5cefadd2e55..3b596baa3e7 100644 --- a/htdocs/langs/fa_IR/trips.lang +++ b/htdocs/langs/fa_IR/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=سفر -Trips=سفر -TripsAndExpenses=سفر و هزینه های عملیاتی -TripsAndExpensesStatistics=سفر و هزینه های آمار -TripCard=کارت سفر -AddTrip=اضافه کردن سفر -ListOfTrips=فهرست از سفر +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=فهرست هزینه ها -NewTrip=سفر جدید +NewTrip=New expense report CompanyVisited=شرکت / بنیاد بازدید کردند Kilometers=کیلومتر FeesKilometersOrAmout=مقدار و یا کیلومتر -DeleteTrip=حذف سفر -ConfirmDeleteTrip=آیا مطمئن هستید که می خواهید این سفر را حذف کنید؟ -TF_OTHER=دیگر -TF_LUNCH=ناهار -TF_TRIP=سفر -ListTripsAndExpenses=فهرست سفر و هزینه های عملیاتی -ExpensesArea=سفر و هزینه های عملیاتی منطقه -SearchATripAndExpense=جستجوی یک سفر و هزینه +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=دیگر +TF_TRANSPORTATION=Transportation +TF_LUNCH=ناهار +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/fi_FI/admin.lang b/htdocs/langs/fi_FI/admin.lang index 5096161d388..9ead36d476c 100644 --- a/htdocs/langs/fi_FI/admin.lang +++ b/htdocs/langs/fi_FI/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Kokeellinen VersionDevelopment=Kehitys VersionUnknown=Tuntematon VersionRecommanded=Suositeltava +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Istunnon tunnus SessionSaveHandler=Handler tallentaa istuntojen SessionSavePath=Varasto istuntojakson localization @@ -493,10 +498,16 @@ Module600Name=Ilmoitukset Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Lahjoitukset Module700Desc=Lahjoitukset hallinto +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis yhdentyminen Module1400Name=Kirjanpidon asiantuntija Module1400Desc=Kirjanpidon hallinta asiantuntijoille (double osapuolet) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Kategoriat Module1780Desc=Kategoriat hallintaa (tuotteet, tavarantoimittajat ja asiakkaat) Module2000Name=FCKeditor @@ -631,7 +642,7 @@ Permission181=Lue toimittaja tilaukset Permission182=Luoda / muuttaa toimittajan tilaukset Permission183=Validate toimittaja tilaukset Permission184=Hyväksy toimittaja tilaukset -Permission185=Tilaa toimittaja tilaukset +Permission185=Order or cancel supplier orders Permission186=Vastaanota toimittaja tilaukset Permission187=Sulje toimittaja tilaukset Permission188=Peruuta toimittaja tilaukset @@ -711,6 +722,13 @@ Permission538=Vienti palvelut Permission701=Lue lahjoitukset Permission702=Luoda / muuttaa lahjoitusten Permission703=Poista lahjoitukset +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Lue varastot Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Salasana käyttää välityspalvelinta DefineHereComplementaryAttributes=Määritä tässä kaikki atributes, jo ole oletuksena, ja että haluat tuettava %s. ExtraFields=Täydentävät ominaisuudet ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Rivi tuotteen / palvelun nolla määrä pidetään vai FreeLegalTextOnProposal=Vapaa tekstihaku kaupallisiin ehdotuksia WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Tilaukset hallinto-setup OrdersNumberingModules=Tilaukset numerointiin modules @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Viivakoodi tyypin UPC BarcodeDescISBN=Viivakoodi tyypin ISBN BarcodeDescC39=Viivakoodi tyypin C39 BarcodeDescC128=Viivakoodi tyypin C128 -GenbarcodeLocation=Viivakoodi sukupolven komentoriviksi työkalu (käyttää phpbarcode moottorin joidenkin viivakoodi tyypit) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Rahat tilille käyttää myy CashDeskBankAccountForCheque= Tilin käyttö vastaanottaa maksuja sekillä CashDeskBankAccountForCB= Tilin käyttö voidaan saada käteismaksujen luottokorttia -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Kirjanmerkin moduulin asetukset @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/fi_FI/banks.lang b/htdocs/langs/fi_FI/banks.lang index 56fd08fead5..3a30c33e0f4 100644 --- a/htdocs/langs/fi_FI/banks.lang +++ b/htdocs/langs/fi_FI/banks.lang @@ -33,7 +33,11 @@ AllTime=Alkaen Reconciliation=Yhteensovittaminen RIB=Pankkitilin numero IBAN=IBAN-numero +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC / SWIFT-koodi +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Kestotilaus StandingOrder=Kestotilaus Withdrawals=Nostot @@ -148,7 +152,7 @@ BackToAccount=Takaisin tiliin ShowAllAccounts=Näytä kaikki tilit FutureTransaction=Tapahtuma on tulevaisuudessa. Ei soviteltavissa. SelectChequeTransactionAndGenerate=Valitse / suodattaa tarkastuksiin sisällyttää osaksi tarkastus talletuksen vastaanottamisesta ja klikkaa "Luo". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/fi_FI/commercial.lang b/htdocs/langs/fi_FI/commercial.lang index 5c737e339a1..a3dc28186cc 100644 --- a/htdocs/langs/fi_FI/commercial.lang +++ b/htdocs/langs/fi_FI/commercial.lang @@ -9,9 +9,9 @@ Prospect=Mahdollisuus Prospects=Mahdollisuudet DeleteAction=Poista toiminto / tehtävä NewAction=Uusi toimi / tehtävä -AddAction=Lisää toiminta / tehtävä -AddAnAction=Lisää toiminta / tehtävä -AddActionRendezVous=Lisää Rendezvous tehtävä +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Rendezvous ConfirmDeleteAction=Oletko varma, että haluat poistaa tämän tehtävän? CardAction=Tapahtumakortti @@ -44,8 +44,8 @@ DoneActions=Tehty toimia DoneActionsFor=Tehty toimia %s ToDoActions=Puutteellinen toimet ToDoActionsFor=Puutteellinen toimia %s -SendPropalRef=Lähetä kaupallinen ehdotus %s -SendOrderRef=Lähetä jotta %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Ei sovelleta StatusActionToDo=Voit tehdä StatusActionDone=Tehty @@ -62,7 +62,7 @@ LastProspectContactDone=Yhteystiedot tehnyt DateActionPlanned=Päiväys toimia varten DateActionDone=Päiväys toiminta tapahtuu ActionAskedBy=Toimi pyytänyt -ActionAffectedTo=Toiminta vaikuttaa +ActionAffectedTo=Event assigned to ActionDoneBy=Toiminta tapahtuu ActionUserAsk=Tallennettu ErrorStatusCantBeZeroIfStarted=Jos kenttä "Päiväys tehtävä on täytetty, toiminta on alkanut (tai valmis), joten alalla" Tila "ei voi olla 0%%. diff --git a/htdocs/langs/fi_FI/contracts.lang b/htdocs/langs/fi_FI/contracts.lang index 8d44a9b256e..fb36e753d96 100644 --- a/htdocs/langs/fi_FI/contracts.lang +++ b/htdocs/langs/fi_FI/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Lakkaa ServiceStatusClosed=Suljettu ServicesLegend=Palvelut legenda Contracts=Sopimukset +ContractsAndLine=Contracts and line of contracts Contract=Sopimus NoContracts=Sopimuksia ei MenuServices=Palvelut diff --git a/htdocs/langs/fi_FI/cron.lang b/htdocs/langs/fi_FI/cron.lang index 305bf312025..bba69fbb33f 100644 --- a/htdocs/langs/fi_FI/cron.lang +++ b/htdocs/langs/fi_FI/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/fi_FI/errors.lang b/htdocs/langs/fi_FI/errors.lang index edbe3fa5f22..3a31847c78b 100644 --- a/htdocs/langs/fi_FI/errors.lang +++ b/htdocs/langs/fi_FI/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Lähde ja tavoitteet pankkitilit on erilainen. ErrorBadThirdPartyName=Bad arvo kolmannen osapuolen nimi ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntaksi asiakas-koodi -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Asiakas-koodi tarvitaan ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Asiakas-koodi on jo käytetty @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript ei saa keskeytyä, on tämä ominaisuus ErrorPasswordsMustMatch=Molemmat kirjoittaa salasanat on vastattava toisiaan ErrorContactEMail=Tekninen virhe. Ota yhteys järjestelmänvalvojaan jälkeen sähköpostin %s en antaa virhekoodi %s viesti, tai jopa paremmin lisäämällä näytön kopion tästä sivusta. ErrorWrongValueForField=Väärä arvo kentän numero %s (arvo "%s" ei vastaa regex sääntö %s) -ErrorFieldValueNotIn=Väärä arvo kentän numero %s (arvo "%s" ei ole arvoa käytettävissä tulee kenttään %s taulukon %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Väärä arvo kentän numero %s (arvo "%s" ei %s olemassa ref) ErrorsOnXLines=Virheet %s lähde linjat ErrorFileIsInfectedWithAVirus=Virustentorjuntaohjelma ei voinut tarkistaa tiedoston (tiedosto saattaa olla tartunnan virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/fi_FI/install.lang b/htdocs/langs/fi_FI/install.lang index d1528d62722..80b688dca44 100644 --- a/htdocs/langs/fi_FI/install.lang +++ b/htdocs/langs/fi_FI/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Viimeinen askel: Määritä tässä käyttäjätun ActivateModule=Aktivoi moduuli %s ShowEditTechnicalParameters=Klikkaa tästä näyttääksesi/muuttaaksesi edistyneemmät parametrit (asiantuntija tila) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/fi_FI/main.lang b/htdocs/langs/fi_FI/main.lang index 9df855ba004..4e6098fd766 100644 --- a/htdocs/langs/fi_FI/main.lang +++ b/htdocs/langs/fi_FI/main.lang @@ -141,6 +141,7 @@ Cancel=Peruuta Modify=Muokkaa Edit=Muokkaa Validate=Vahvista +ValidateAndApprove=Validate and Approve ToValidate=Validoida Save=Tallenna SaveAs=Tallenna nimellä @@ -158,6 +159,7 @@ Search=Haku SearchOf=Haku Valid=Voimassa Approve=Hyväksy +Disapprove=Disapprove ReOpen=Avaa uudelleen Upload=Lähetä tiedosto ToLink=Linkki @@ -219,6 +221,7 @@ Cards=Kortit Card=Kortti Now=Nyt Date=Päivä +DateAndHour=Date and hour DateStart=Alkaen DateEnd=Päättyen DateCreation=Luotu @@ -295,6 +298,7 @@ UnitPriceHT=Yksikköhinta (netto) UnitPriceTTC=Yksikköhinta PriceU=UP PriceUHT=UP (netto) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=UP Amount=Määrä AmountInvoice=Laskun summa @@ -521,6 +525,7 @@ DateFromTo=Kohteesta %s %s DateFrom=Kohteesta %s DateUntil=Vasta %s Check=Shekki +Uncheck=Uncheck Internal=Sisäinen External=Ulkoinen Internals=Sisäinen @@ -688,6 +693,7 @@ PublicUrl=Julkinen URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Maanantai Tuesday=Tiistai diff --git a/htdocs/langs/fi_FI/orders.lang b/htdocs/langs/fi_FI/orders.lang index dade4367732..408212eb534 100644 --- a/htdocs/langs/fi_FI/orders.lang +++ b/htdocs/langs/fi_FI/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Peruutettu StatusOrderDraft=Luonnos (on vahvistettu) StatusOrderValidated=Validoidut StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Jalostettu StatusOrderToBill=Bill StatusOrderToBill2=Bill @@ -58,6 +59,7 @@ MenuOrdersToBill=Tilaukset laskuttaa MenuOrdersToBill2=Billable orders SearchOrder=Haku jotta SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Laiva tuote Discount=Discount CreateOrder=Luo Tilaa diff --git a/htdocs/langs/fi_FI/other.lang b/htdocs/langs/fi_FI/other.lang index 155ef697744..66aea85c008 100644 --- a/htdocs/langs/fi_FI/other.lang +++ b/htdocs/langs/fi_FI/other.lang @@ -54,12 +54,13 @@ MaxSize=Enimmäiskoko AttachANewFile=Liitä uusi tiedosto / asiakirjan LinkedObject=Linkitettyä objektia Miscellaneous=Miscellaneous -NbOfActiveNotifications=Ilmoitusten lukumäärä +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Tämä on testi postitse. \\ NOsoitteen kaksi riviä välissä rivinvaihto. PredefinedMailTestHtml=Tämä on testi postitse (sana testi on lihavoitu).
Kaksi riviä välissä rivinvaihto. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/fi_FI/productbatch.lang b/htdocs/langs/fi_FI/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/fi_FI/productbatch.lang +++ b/htdocs/langs/fi_FI/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/fi_FI/products.lang b/htdocs/langs/fi_FI/products.lang index 0839abf00df..6b6c461876d 100644 --- a/htdocs/langs/fi_FI/products.lang +++ b/htdocs/langs/fi_FI/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/fi_FI/projects.lang b/htdocs/langs/fi_FI/projects.lang index 17674103313..3772988a48c 100644 --- a/htdocs/langs/fi_FI/projects.lang +++ b/htdocs/langs/fi_FI/projects.lang @@ -8,8 +8,10 @@ SharedProject=Yhteiset hanke PrivateProject=Yhteystiedot Hankkeen MyProjectsDesc=Tämä näkemys on vain hankkeisiin olet yhteyshenkilö (mikä on tyyppi). ProjectsPublicDesc=Tämä näkemys esitetään kaikki hankkeet sinulla voi lukea. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Tämä näkemys esitetään kaikki hankkeet (käyttäjäoikeuksien antaa sinulle luvan katsella kaikkea). MyTasksDesc=Tämä näkemys on vain hankkeisiin tai tehtäviä olet yhteyshenkilö (mikä on tyyppi). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Tämä näkemys esitetään kaikki hankkeet ja tehtävät sinulla voi lukea. TasksDesc=Tämä näkemys esitetään kaikki hankkeet ja tehtävät (käyttäjäoikeuksien antaa sinulle luvan katsella kaikkea). ProjectsArea=Projektit alueella @@ -29,6 +31,8 @@ NoProject=Ei hanke määritellään NbOpenTasks=Nb on avattu tehtävät NbOfProjects=Nb hankkeiden TimeSpent=Käytetty aika +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Käytetty aika RefTask=Ref. tehtävä LabelTask=Label tehtävä @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Luettelo toimittajien tilaukset hankkeeseen ListSupplierInvoicesAssociatedProject=Luettelo tavarantoimittajien laskut liittyvät hankkeen ListContractAssociatedProject=Luettelo sopimukset hankkeeseen liittyvät ListFichinterAssociatedProject=Luettelo toimien hankkeeseen liittyvän -ListTripAssociatedProject=Luettelo matkat ja kulut hankkeeseen liittyvät +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Luettelo toimia, jotka liittyvät hankkeen ActivityOnProjectThisWeek=Toiminta hanke tällä viikolla ActivityOnProjectThisMonth=Toiminta hankkeen tässä kuussa @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/fi_FI/salaries.lang b/htdocs/langs/fi_FI/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/fi_FI/salaries.lang +++ b/htdocs/langs/fi_FI/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/fi_FI/sendings.lang b/htdocs/langs/fi_FI/sendings.lang index b1eaea2a4db..27c8093e232 100644 --- a/htdocs/langs/fi_FI/sendings.lang +++ b/htdocs/langs/fi_FI/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Kpl velvoitti QtyShipped=Kpl lähetysvuotta QtyToShip=Kpl alusten QtyReceived=Kpl saanut -KeepToShip=Pidä alusten +KeepToShip=Remain to ship OtherSendingsForSameOrder=Muut sendings tässä tilauksessa DateSending=Päiväys lähettämistä, jotta DateSendingShort=Päiväys lähettämistä, jotta diff --git a/htdocs/langs/fi_FI/stocks.lang b/htdocs/langs/fi_FI/stocks.lang index f41c19262d0..797bda3896d 100644 --- a/htdocs/langs/fi_FI/stocks.lang +++ b/htdocs/langs/fi_FI/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Value PMPValueShort=WAP EnhancedValueOfWarehouses=Varastot arvo UserWarehouseAutoCreate=Luo varastossa automaattisesti luoda käyttäjä +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Määrä lähetysolosuhteita QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/fi_FI/suppliers.lang b/htdocs/langs/fi_FI/suppliers.lang index cdb12ae7d8b..aca987a8016 100644 --- a/htdocs/langs/fi_FI/suppliers.lang +++ b/htdocs/langs/fi_FI/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Tavarantoimittajat -Supplier=Toimittaja AddSupplier=Create a supplier SupplierRemoved=Toimittaja poistettu SuppliersInvoice=Tavarantoimittajan lasku @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Toimittajan laskut ja maksut ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Hyväksy tämä tilaus ConfirmApproveThisOrder=Oletko varma, että haluat hyväksyä tämän tilauksen? -DenyingThisOrder=Kiellä tätä järjestystä +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Oletko varma, että haluat kieltää tämän tilauksen? ConfirmCancelThisOrder=Oletko varma, että haluat peruuttaa tämän tilauksen? AddCustomerOrder=Luo asiakas jotta diff --git a/htdocs/langs/fi_FI/trips.lang b/htdocs/langs/fi_FI/trips.lang index c8c22dcbe9e..2012c28cf44 100644 --- a/htdocs/langs/fi_FI/trips.lang +++ b/htdocs/langs/fi_FI/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Matka -Trips=Retket -TripsAndExpenses=Matkat ja kulut -TripsAndExpensesStatistics=Retket ja kulut tilastot -TripCard=Trip-kortti -AddTrip=Lisää matka -ListOfTrips=Luettelo matkat +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Luettelo palkkiot -NewTrip=Uusi matka +NewTrip=New expense report CompanyVisited=Yritys / säätiö vieraili Kilometers=Kilometers FeesKilometersOrAmout=Määrä tai kilometreinä -DeleteTrip=Poista matka -ConfirmDeleteTrip=Oletko varma, että haluat poistaa tämän matkan? -TF_OTHER=Muu -TF_LUNCH=Lounas -TF_TRIP=Matka -ListTripsAndExpenses=Luettelo matkat ja kulut -ExpensesArea=Retket ja kulut alue -SearchATripAndExpense=Etsi matka-ja kulut +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Muu +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lounas +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/fr_BE/main.lang b/htdocs/langs/fr_BE/main.lang index 0b48f915961..a3a5442d2cd 100644 --- a/htdocs/langs/fr_BE/main.lang +++ b/htdocs/langs/fr_BE/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=dd/MM/yyyy FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/mm/yy FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y diff --git a/htdocs/langs/fr_CA/main.lang b/htdocs/langs/fr_CA/main.lang index 712f481720d..376a1f72966 100644 --- a/htdocs/langs/fr_CA/main.lang +++ b/htdocs/langs/fr_CA/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=dd.MM.yyyy FormatDateShortJavaInput=dd.MM.yyyy FormatDateShortJQuery=dd.mm.yy FormatDateShortJQueryInput=dd.mm.yy +FormatHourShortJQuery=HH:MI FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y diff --git a/htdocs/langs/fr_CH/main.lang b/htdocs/langs/fr_CH/main.lang index d3624332bec..6b54a4fde3e 100644 --- a/htdocs/langs/fr_CH/main.lang +++ b/htdocs/langs/fr_CH/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=dd-MM-yyyy FormatDateShortJavaInput=dd-MM-yyyy FormatDateShortJQuery=dd-mm-yy FormatDateShortJQueryInput=dd-mm-yy +FormatHourShortJQuery=HH:MI FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y diff --git a/htdocs/langs/fr_FR/accountancy.lang b/htdocs/langs/fr_FR/accountancy.lang index 8cf990b17a4..c931ab45d5b 100644 --- a/htdocs/langs/fr_FR/accountancy.lang +++ b/htdocs/langs/fr_FR/accountancy.lang @@ -13,9 +13,9 @@ ConfigAccountingExpert=Configuration du module comptabilité expert Journaux=Journaux JournalFinancial=Journaux financiers Exports=Exports -Export=Export +Export=Exporter Modelcsv=Modèle d'export -OptionsDeactivatedForThisExportModel=For this export model, options are deactivated +OptionsDeactivatedForThisExportModel=Pour ce modèle d'export, les options sont désactivées Selectmodelcsv=Sélectionner un modèle d'export Modelcsv_normal=Export standard Modelcsv_CEGID=Export vers CEGID Expert @@ -68,7 +68,7 @@ Lineofinvoice=Ligne de la facture VentilatedinAccount=Ventilé avec succès dans le compte comptable NotVentilatedinAccount=Non ventilé dans le compte comptable -ACCOUNTING_SEPARATORCSV=Column separator in export file +ACCOUNTING_SEPARATORCSV=Séparateur de colonne dans le fichier export ACCOUNTING_LIMIT_LIST_VENTILATION=Nombre d'éléments à ventiler affichés par page (maximum conseillé : 50) ACCOUNTING_LIST_SORT_VENTILATION_TODO=Commencer le tri des pages de ventilation "A ventiler" par les éléments les plus récents diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 9b6dec0e2d1..512b2f3133d 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Expérimental VersionDevelopment=Développement VersionUnknown=Inconnue VersionRecommanded=Recommandé +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=ID Session SessionSaveHandler=Modalité de sauvegarde des sessions SessionSavePath=Emplacement de sauvegarde sessions @@ -493,10 +498,16 @@ Module600Name=Notifications Module600Desc=Envoi de notifications Email sur certains événements métiers Dolibarr, aux contacts de tiers (configuration réalisé sur chaque tiers) Module700Name=Dons Module700Desc=Gestion des dons +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Interface avec le bug tracker Mantis Module1400Name=Comptabilité Module1400Desc=Gestion de la comptabilité (partie double) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Catégories Module1780Desc=Gestion des catégories (produits, fournisseurs, clients et adhérents) Module2000Name=Éditeur WYSIWYG @@ -631,7 +642,7 @@ Permission181=Consulter les commandes fournisseurs Permission182=Créer/modifier les commandes fournisseurs Permission183=Valider les commandes fournisseurs Permission184=Approuver les commandes fournisseurs -Permission185=Passer les commandes fournisseurs +Permission185=Order or cancel supplier orders Permission186=Accuser réception des commandes fournisseurs Permission187=Clôturer les commandes fournisseurs Permission188=Annuler les commandes fournisseurs @@ -711,6 +722,13 @@ Permission538=Exporter les services Permission701=Consulter les dons Permission702=Créer/modifier les dons Permission703=Supprimer les dons +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Consulter les stocks Permission1002=Créer/modifier entrepôts Permission1003=Supprimer entrepôts @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Mot de passe pour passer le serveur proxy mandataire DefineHereComplementaryAttributes=Définissez ici la liste des attributs supplémentaires, non disponibles en standard, et que vous voulez voir gérer sur les %s. ExtraFields=Attributs supplémentaires ExtraFieldsLines=Attributs supplémentaires (lignes) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Attributs supplémentaires (tiers) ExtraFieldsContacts=Attributs supplémentaires (contacts/adresses) ExtraFieldsMember=Attributs supplémentaires (adhérents) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Une ligne de produit/service ayant une quantité nulle FreeLegalTextOnProposal=Mention complémentaire sur les propositions commerciales WatermarkOnDraftProposal=Filigrane sur les brouillons de propositions commerciales (aucun si vide) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Saisir le compte bancaire cible lors de la proposition commerciale +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Configuration du module Commandes OrdersNumberingModules=Modèles de numérotation des commandes @@ -1383,7 +1410,7 @@ BarcodeDescUPC=code-barres de type UPC BarcodeDescISBN=code-barres de type ISBN BarcodeDescC39=code-barres de type C39 BarcodeDescC128=code-barres de type C128 -GenbarcodeLocation=Outil de génération de code-barres en ligne de commande (utilisé par le moteur interne pour certains types de codes-barres) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Moteur interne BarCodeNumberManager=Gestionnaire pour la génération automatique de numéro de code-barre ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Tiers générique à utiliser par défaut pour les ven CashDeskBankAccountForSell=Compte par défaut à utiliser pour l'encaissement en liquide CashDeskBankAccountForCheque= Compte par défaut à utiliser pour l'encaissement en chèque CashDeskBankAccountForCB= Compte par défaut à utiliser pour l'encaissement en carte de crédit -CashDeskDoNotDecreaseStock=Désactiver la réduction de stock quand une vente est faite depuis le Point de Vente. Si "non", la réduction du stock est faite d'office par le module Point de Vente, quelque soit le mode choisi dans la configuration du module stock. +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Forcer et restreindre l'emplacement/entrepôt à utiliser pour la réduction de stock StockDecreaseForPointOfSaleDisabled=Réduction de stock lors de l'utilisation du Point de Vente désactivée +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=Vous n'avez pas désactivé la réduction de stocks lors de la réalisation d'une vente depuis le Point de Vente. Aussi, un entrepôt/emplacement est nécessaire. ##### Bookmark ##### BookmarkSetup=Configuration du module Marque-pages @@ -1569,3 +1597,7 @@ SortOrder=Ordre de tri Format=Format TypePaymentDesc=0:Type de paiement client, 1:Type de paiement fournisseur, 2:Paiement de type client et fournisseur IncludePath=Chemin Include (définir dans la variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/fr_FR/banks.lang b/htdocs/langs/fr_FR/banks.lang index 930487955e3..bd6c96ae3fd 100644 --- a/htdocs/langs/fr_FR/banks.lang +++ b/htdocs/langs/fr_FR/banks.lang @@ -33,7 +33,11 @@ AllTime=Depuis le début Reconciliation=Rapprochement RIB=Numéro de compte bancaire IBAN=Identifiant IBAN +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=Identifiant BIC/SWIFT +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Prélèvements StandingOrder=Prélèvement Withdrawals=Retraits @@ -148,7 +152,7 @@ BackToAccount=Retour au compte ShowAllAccounts=Afficher pour tous les comptes FutureTransaction=Transaction future. Pas moyen de concilier. SelectChequeTransactionAndGenerate=Sélectionner/filtrer les chèques à inclure dans le bordereau de remise et cliquer sur "Créer". -InputReceiptNumber=Saisissez le relevé bancaire concerné par le rapprochement. Utilisez une valeur numérique triable (par exemple YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventuellement, saisissez une catégorie dans laquelle classer les écritures ToConciliate=À rapprocher ? ThenCheckLinesAndConciliate=Ensuite, cochez les lignes présentes sur le relevé et cliquez sur diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang index f6493015cc3..1956ca025be 100644 --- a/htdocs/langs/fr_FR/bills.lang +++ b/htdocs/langs/fr_FR/bills.lang @@ -422,9 +422,9 @@ SituationDeduction=Différence de situation Progress=Progression ModifyAllLines=Modifier toutes les lignes CreateNextSituationInvoice=Créer prochaine situation -NotLastInCycle=This invoice in not the last in cycle and must not be modified. -DisabledBecauseNotLastInCycle=The next situation already exists. +NotLastInCycle=Cette facture n'est pas la dernière dans le cycle et ne doit pas être modifiée +DisabledBecauseNotLastInCycle=Une facture de situation suivante existe DisabledBecauseFinal=Cette situation est la dernière -CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation. -NoSituations=No opened situations +CantBeLessThanMinPercent=La progression ne peut être inférieure à la valeur de progression du point de situation précédent +NoSituations=Pas de point de situation ouvert InvoiceSituationLast=Dernière facture diff --git a/htdocs/langs/fr_FR/commercial.lang b/htdocs/langs/fr_FR/commercial.lang index d3125a8edd6..f4961a1e1c5 100644 --- a/htdocs/langs/fr_FR/commercial.lang +++ b/htdocs/langs/fr_FR/commercial.lang @@ -62,7 +62,7 @@ LastProspectContactDone=Prospects contactés DateActionPlanned=Date réalisation prévue DateActionDone=Date réalisation effective ActionAskedBy=Action enregistrée par -ActionAffectedTo=Propriétaire de l'événement +ActionAffectedTo=Event assigned to ActionDoneBy=Action faite par ActionUserAsk=Enregistré par ErrorStatusCantBeZeroIfStarted=Si le champ 'Date début réalisation réelle' est renseigné alors l'action est commencée voire finie, aussi le champ 'État' ne peut être 0%%. diff --git a/htdocs/langs/fr_FR/compta.lang b/htdocs/langs/fr_FR/compta.lang index 0be7345fe48..5a8f99a9308 100644 --- a/htdocs/langs/fr_FR/compta.lang +++ b/htdocs/langs/fr_FR/compta.lang @@ -29,7 +29,7 @@ ReportTurnover=Chiffre d'affaires PaymentsNotLinkedToInvoice=Paiements liés à aucune facture, donc aucun tiers PaymentsNotLinkedToUser=Paiements non liés à un utilisateur Profit=Bénéfice -AccountingResult=Accounting result +AccountingResult=Résultat comptable Balance=Solde Debit=Débit Credit=Crédit diff --git a/htdocs/langs/fr_FR/contracts.lang b/htdocs/langs/fr_FR/contracts.lang index 895e3c95cad..e305789f82d 100644 --- a/htdocs/langs/fr_FR/contracts.lang +++ b/htdocs/langs/fr_FR/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expiré ServiceStatusClosed=Fermé ServicesLegend=Légende pour les services Contracts=Contrats +ContractsAndLine=Contracts and line of contracts Contract=Contrat NoContracts=Pas de contrats MenuServices=Services diff --git a/htdocs/langs/fr_FR/cron.lang b/htdocs/langs/fr_FR/cron.lang index da6907c85db..a94a7bafe3f 100644 --- a/htdocs/langs/fr_FR/cron.lang +++ b/htdocs/langs/fr_FR/cron.lang @@ -84,3 +84,4 @@ CronType_command=Commande terminal CronMenu=Cron CronCannotLoadClass=Impossible de charger la classe %s ou l'objet %s UseMenuModuleToolsToAddCronJobs=Aller dans le menu "Accueil - Outils modules - Liste des travaux" pour voir et éditer les travaux planifiés. +TaskDisabled=Task disabled diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index b7042a8a33e..7bcae13433a 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Les comptes source et destination doivent être d ErrorBadThirdPartyName=Nom de tiers incorrect ErrorProdIdIsMandatory=Le %s est obligatoire ErrorBadCustomerCodeSyntax=La syntaxe du code client est incorrecte -ErrorBadBarCodeSyntax=Mauvaise syntaxe pour le code-barre +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Code client obligatoire ErrorBarCodeRequired=Code-barre requis ErrorCustomerCodeAlreadyUsed=Code client déjà utilisé @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Le javascript ne doit pas être désactivé pour qu ErrorPasswordsMustMatch=Les 2 mots de passe saisis doivent correspondre ErrorContactEMail=Une erreur technique est apparue. Merci de contacter l'administrateur à l'email suivant %s en lui indiquant le code erreur %s dans votre message ou mieux en fournissant une copie d'écran de cette page. ErrorWrongValueForField=Mauvaise valeur pour le champ numéro %s (la valeur '%s' ne respecte pas la règle %s) -ErrorFieldValueNotIn=Mauvaise valeur pour le champ numéro %s (la valeur '%s' n'est pas une valeure présente dans le champ %s de la table %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Mauvaise valeur pour le champ numéro %s (la valeur '%s' n'est pas une référence existante comme %s) ErrorsOnXLines=Erreurs sur %s enregistrement(s) source ErrorFileIsInfectedWithAVirus=L'antivirus n'a pas pu valider ce fichier (il est probablement infecté par un virus) ! @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Erreur interne '%s' ErrorPriceExpressionUnknown=Erreur inconnue '%s' ErrorSrcAndTargetWarehouseMustDiffers=Les entrepôts source et destination doivent être différents ErrorTryToMakeMoveOnProductRequiringBatchData=Erreur, vous essayez de faire un mouvement sans lot/numéro de série, sur un produit qui exige un lot/numéro de série. +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Les informations de configuration obligatoire doivent être renseignées diff --git a/htdocs/langs/fr_FR/install.lang b/htdocs/langs/fr_FR/install.lang index 4a0c5a9aafb..7b0a6256ede 100644 --- a/htdocs/langs/fr_FR/install.lang +++ b/htdocs/langs/fr_FR/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Dernière étape: Définissez ici l'identifiant et ActivateModule=Activation du module %s ShowEditTechnicalParameters=Cliquer ici pour afficher/éditer les paramètres techniques (mode expert) WarningUpgrade=Attention :\nAvez-vous fait une sauvegarde de la base de données en premier ?\nA cause de problèmes dans le système de base de données (Par exemple mysql version 5.5.40), beaucoup de données ou de tables peuvent être perdu pendant le processus de migration, il est donc très recommandé d'avoir une sauvegarde complète de votre base de données avant de commencer le processus de migration.\n\nCliquez OK pour commencer le processus de migration +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade @@ -207,7 +208,7 @@ MigrationProjectTaskTime=Mise à jour du temps consommé en secondes MigrationActioncommElement=Mise à jour des données des actions des éléments MigrationPaymentMode=Migration des modes de paiement MigrationCategorieAssociation=Migration des categories -MigrationEvents=Migration of events to add event owner into assignement table +MigrationEvents=Migration des évènements pour ajouter les propriétaires dans la table des utilisateurs assignés ShowNotAvailableOptions=Afficher les choix non disponibles HideNotAvailableOptions=Cacher les choix non disponibles diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang index a8ab47c9c4d..173594ef593 100644 --- a/htdocs/langs/fr_FR/main.lang +++ b/htdocs/langs/fr_FR/main.lang @@ -141,6 +141,7 @@ Cancel=Annuler Modify=Modifier Edit=Éditer Validate=Valider +ValidateAndApprove=Validate and Approve ToValidate=À valider Save=Enregistrer SaveAs=Enregistrer sous @@ -158,6 +159,7 @@ Search=Rechercher SearchOf=Recherche de Valid=Valider Approve=Approuver +Disapprove=Disapprove ReOpen=Réouvrir Upload=Envoyer fichier ToLink=Lier @@ -219,6 +221,7 @@ Cards=Fiches Card=Fiche Now=Maintenant Date=Date +DateAndHour=Date and hour DateStart=Date début DateEnd=Date fin DateCreation=Date création @@ -295,6 +298,7 @@ UnitPriceHT=Prix unitaire HT UnitPriceTTC=Prix unitaire TTC PriceU=P.U. PriceUHT=P.U. HT +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=P.U. TTC Amount=Montant AmountInvoice=Montant facture @@ -521,6 +525,7 @@ DateFromTo=Du %s au %s DateFrom=A partir du %s DateUntil=Jusqu'au %s Check=Vérifier +Uncheck=Uncheck Internal=Interne External=Externe Internals=Internes @@ -688,6 +693,7 @@ PublicUrl=URL publique AddBox=Ajouter boite SelectElementAndClickRefresh=Sélectionnez un élément et cliquez sur Rafraichir PrintFile=Imprimer fichier %s +ShowTransaction=Show transaction # Week day Monday=Lundi Tuesday=Mardi diff --git a/htdocs/langs/fr_FR/orders.lang b/htdocs/langs/fr_FR/orders.lang index a920f58d399..78565d17a8a 100644 --- a/htdocs/langs/fr_FR/orders.lang +++ b/htdocs/langs/fr_FR/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Annulée StatusOrderDraft=Brouillon (à valider) StatusOrderValidated=Validée StatusOrderOnProcess=Commandé - en attente de réception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Traitée StatusOrderToBill=Délivrée StatusOrderToBill2=À facturer @@ -58,6 +59,7 @@ MenuOrdersToBill=Commandes délivrées MenuOrdersToBill2=Commandes facturables SearchOrder=Rechercher une commande SearchACustomerOrder=Rechercher une commande client +SearchASupplierOrder=Search a supplier order ShipProduct=Expédier produit Discount=Remise CreateOrder=Créer Commande diff --git a/htdocs/langs/fr_FR/other.lang b/htdocs/langs/fr_FR/other.lang index 1c23cce68cb..45ba7c01e89 100644 --- a/htdocs/langs/fr_FR/other.lang +++ b/htdocs/langs/fr_FR/other.lang @@ -54,12 +54,13 @@ MaxSize=Taille maximum AttachANewFile=Ajouter un nouveau fichier/document LinkedObject=Objet lié Miscellaneous=Divers -NbOfActiveNotifications=Nombre de notifications +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Ceci est un message de test.\nLes 2 lignes sont séparées par un retour à la ligne.\n\n__SIGNATURE__ PredefinedMailTestHtml=Ceci est un message de test (le mot test doit être en gras).
Les 2 lignes sont séparées par un retour à la ligne.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nVeuillez trouver ci-joint la facture __FACREF__\n\n__PERSONALIZED__Cordialement\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__ \n\nNous voudrions porter à votre connaissance que la facture __FACREF__ ne semble pas avoir été réglée. La voici donc, pour rappel, en pièce jointe.\n\n__PERSONALIZED__Cordialement\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nVeuillez trouver ci-joint la proposition commerciale __PROPREF__\n\n__PERSONALIZED__Cordialement\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nVeuillez trouver ci-joint la commande __ORDERREF__\n\n__PERSONALIZED__Cordialement\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nVeuillez trouver ci-joint notre commande __ORDERREF__\n\n__PERSONALIZED__Cordialement\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nVeuillez trouver ci-joint la facture __FACREF__\n\n__PERSONALIZED__Cordialement\n\n__SIGNATURE__ diff --git a/htdocs/langs/fr_FR/productbatch.lang b/htdocs/langs/fr_FR/productbatch.lang index 6cf152e6f80..d1c1edb2b8e 100644 --- a/htdocs/langs/fr_FR/productbatch.lang +++ b/htdocs/langs/fr_FR/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Lot/Numéro de série l_eatby=Date limite de consommation l_sellby=Date de péremption DetailBatchNumber=Détails Lot/Série -DetailBatchFormat=Lot/Série: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Lot/Série: %s printEatby=Limite de consommation : %s printSellby=Péremption : %s diff --git a/htdocs/langs/fr_FR/products.lang b/htdocs/langs/fr_FR/products.lang index 5e27359209f..3443b2c7aac 100644 --- a/htdocs/langs/fr_FR/products.lang +++ b/htdocs/langs/fr_FR/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=Dans les produits commes les services et les prix fou PriceExpressionEditorHelp4=Dans les prix produits/services uniquement: #supplier_min_price#
Dans les prix fournisseurs uniquement: #supplier_quantity# et #supplier_tva_tx# PriceMode=Mode de tarification PriceNumeric=Nombre +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index 302732b6e71..08d2436c16e 100644 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -8,8 +8,10 @@ SharedProject=Tout le monde PrivateProject=Contacts du projet MyProjectsDesc=Cette vue projet est restreinte aux projets pour lesquels vous êtes un contact affecté (quel qu'en soit le type). ProjectsPublicDesc=Cette vue présente tous les projets pour lesquels vous êtes habilité à avoir une visibilité. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Cette vue présente tous les projets (vos habilitations vous offrant une vue exhaustive). MyTasksDesc=Cette vue est restreinte aux projets et tâches pour lesquels vous êtes un contact affecté à au moins une tâche (quel qu'en soit le type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Cette vue présente tous les projets et tâches pour lesquels vous êtes habilité à avoir une visibilité. TasksDesc=Cette vue présente tous les projets et tâches (vos habilitations vous offrant une vue exhaustive). ProjectsArea=Espace projet @@ -29,6 +31,8 @@ NoProject=Aucun projet défini ou responsable NbOpenTasks=Nb Tâches Ouvertes NbOfProjects=Nombre de projets TimeSpent=Temps consommé +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Temps consommés RefTask=Ref. tâche LabelTask=Libellé tâche @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Liste des commandes fournisseurs associées ListSupplierInvoicesAssociatedProject=Liste des factures fournisseurs associées au projet ListContractAssociatedProject=Liste des contrats associés au projet ListFichinterAssociatedProject=Liste des interventions associées au projet -ListTripAssociatedProject=Liste des notes de frais associées au projet +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Liste des événements associés au projet ActivityOnProjectThisWeek=Activité sur les projets cette semaine ActivityOnProjectThisMonth=Activité sur les projets ce mois @@ -133,3 +137,6 @@ SearchAProject=Rechercher un projet ProjectMustBeValidatedFirst=Le projet doit être validé d'abord ProjectDraft=Projets brouillons FirstAddRessourceToAllocateTime=Ajouter une ressource pour pouvoir allouer tu temps +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/fr_FR/salaries.lang b/htdocs/langs/fr_FR/salaries.lang index c76f03c8d9f..4d6cee75748 100644 --- a/htdocs/langs/fr_FR/salaries.lang +++ b/htdocs/langs/fr_FR/salaries.lang @@ -10,3 +10,4 @@ SalariesPayments=Règlements des salaires ShowSalaryPayment=Afficher règlement de salaire THM=Tarif horaire moyen TJM=Tarif journalier moyen +CurrentSalary=Current salary diff --git a/htdocs/langs/fr_FR/sendings.lang b/htdocs/langs/fr_FR/sendings.lang index 356fa55b946..e65707e186c 100644 --- a/htdocs/langs/fr_FR/sendings.lang +++ b/htdocs/langs/fr_FR/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Qté. commandée QtyShipped=Qté. expédiée QtyToShip=Qté. à expédier QtyReceived=Qté. reçue -KeepToShip=Reste à expédier +KeepToShip=Remain to ship OtherSendingsForSameOrder=Autres expéditions pour cette commande DateSending=Date ordre d'expédition DateSendingShort=Date ordre exp. diff --git a/htdocs/langs/fr_FR/stocks.lang b/htdocs/langs/fr_FR/stocks.lang index d7b32c8ff44..7a342f04a7d 100644 --- a/htdocs/langs/fr_FR/stocks.lang +++ b/htdocs/langs/fr_FR/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Valorisation (PMP) PMPValueShort=PMP EnhancedValueOfWarehouses=Valorisation des stocks UserWarehouseAutoCreate=Créer automatiquement un stock/entrepôt propre à l'utilisateur lors de sa création +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Quantité ventilée QtyDispatchedShort=Qté ventilée QtyToDispatchShort=Qté à ventiler @@ -110,7 +111,7 @@ WarehouseForStockDecrease=L'entrepôt %s sera utilisé pour la décrémen WarehouseForStockIncrease=L'entrepôt %s sera utilisé pour l'incrémentation du stock ForThisWarehouse=Pour cet entrepôt ReplenishmentStatusDesc=Cet écran permet de voir les produits avec un stock inférieur à la quantité minimale désirée (ou à la quantité du seuil d'alerte si la case "Alertes seulement" est cochée) et propose de créer des commandes fournisseurs pour compléter la différence -ReplenishmentOrdersDesc=Voici la liste des commandes fournisseurs en cours +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Réapprovisionnement NbOfProductBeforePeriod=Quantité du produit %s en stock avant la période sélectionnée (< %s) NbOfProductAfterPeriod=Quantité du produit %s en stock après la période sélectionnée (> %s) @@ -130,3 +131,4 @@ IsInPackage=Inclus dans un package ShowWarehouse=Afficher entrepôt MovementCorrectStock=Correction du contenu en stock pour le produit %s MovementTransferStock=Transfert de stock du produit %s dans un autre entrepôt +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/fr_FR/suppliers.lang b/htdocs/langs/fr_FR/suppliers.lang index ea0ecef8e39..07904930bf2 100644 --- a/htdocs/langs/fr_FR/suppliers.lang +++ b/htdocs/langs/fr_FR/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Fournisseurs -Supplier=Fournisseur AddSupplier=Créer un fournisseur SupplierRemoved=Fournisseur supprimé SuppliersInvoice=Facture fournisseur @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Factures fournisseurs et règlements ExportDataset_fournisseur_3=Commandes fournisseur et lignes de commande ApproveThisOrder=Approuver la commande ConfirmApproveThisOrder=Êtes-vous sûr de vouloir approuver la commande fournisseur %s ? -DenyingThisOrder=Refuser la commande +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Êtes-vous sûr de vouloir refuser la commande fournisseur %s ? ConfirmCancelThisOrder=Êtes-vous sûr de vouloir annuler la commande fournisseur %s ? AddCustomerOrder=Créer commande client diff --git a/htdocs/langs/fr_FR/trips.lang b/htdocs/langs/fr_FR/trips.lang index 5cad7a4b4a0..1d9f41e09c9 100644 --- a/htdocs/langs/fr_FR/trips.lang +++ b/htdocs/langs/fr_FR/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Déplacement -Trips=Déplacements -TripsAndExpenses=Note de frais -TripsAndExpensesStatistics=Statistiques notes de frais -TripCard=Fiche frais -AddTrip=Créer note de frais -ListOfTrips=Liste des frais +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Liste des notes de frais -NewTrip=Nouvelle note de frais +NewTrip=New expense report CompanyVisited=Société/institution visitée Kilometers=Kilomètres FeesKilometersOrAmout=Montant ou kilomètres -DeleteTrip=Supprimer déplacement -ConfirmDeleteTrip=Êtes-vous sûr de vouloir supprimer cette note de frais ? -TF_OTHER=Autre -TF_LUNCH=Repas -TF_TRIP=Déplacement -ListTripsAndExpenses=Liste des notes de frais -ExpensesArea=Espace notes de frais -SearchATripAndExpense=Rechercher une note de frais +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classer 'Remboursé' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Autre +TF_TRANSPORTATION=Transportation +TF_LUNCH=Repas +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/fr_NC/main.lang b/htdocs/langs/fr_NC/main.lang index 80513df8eea..bd886d9e846 100644 --- a/htdocs/langs/fr_NC/main.lang +++ b/htdocs/langs/fr_NC/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=dd/MM/yyyy FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/mm/yy FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y diff --git a/htdocs/langs/he_IL/admin.lang b/htdocs/langs/he_IL/admin.lang index 72578ac824d..40ebcc8f65d 100644 --- a/htdocs/langs/he_IL/admin.lang +++ b/htdocs/langs/he_IL/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=נסיוני VersionDevelopment=התפתחות VersionUnknown=לא ידוע VersionRecommanded=מומלץ +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=מושב מזהה SessionSaveHandler=הנדלר להציל הפעלות SessionSavePath=הפגישה אחסון לוקליזציה @@ -493,10 +498,16 @@ Module600Name=הודעות Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=תרומות Module700Desc=התרומה של ההנהלה +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=גמל שלמה Module1200Desc=גמל שלמה אינטגרציה Module1400Name=חשבונאות Module1400Desc=חשבונאות וניהול (צד כפולות) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=קטגוריות Module1780Desc=Categorie ההנהלה (מוצרים, ספקים ולקוחות) Module2000Name=עורך WYSIWYG @@ -631,7 +642,7 @@ Permission181=לקרוא הזמנות ספקים Permission182=ליצור / לשנות הספק הזמנות Permission183=תוקף צווי הספק Permission184=לאשר הזמנות ספקים -Permission185=הספק סדר הזמנות +Permission185=Order or cancel supplier orders Permission186=לקבל הזמנות ספקים Permission187=הספק הזמנות סגור Permission188=ביטול הזמנות ספקים @@ -711,6 +722,13 @@ Permission538=יצוא שירותים Permission701=לקרוא תרומות Permission702=צור / לשנות תרומות Permission703=מחק תרומות +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=לקרוא מניות Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=סיסמה כדי להשתמש בשרת proxy DefineHereComplementaryAttributes=להגדיר כאן את כל atributes, אינו זמין כבר כברירת מחדל, כי אתה רוצה להיות נתמך על %s. ExtraFields=משלימים תכונות ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=קו של המוצר / שירות עם כמות אפס FreeLegalTextOnProposal=טקסט חופשי על הצעות מסחריות WatermarkOnDraftProposal=סימן מים על הצעות טיוטה מסחריים (כל אם ריק) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=התקנה וניהול של סדר OrdersNumberingModules=הזמנות מספור מודולים @@ -1383,7 +1410,7 @@ BarcodeDescUPC=ברקוד מסוג UPC BarcodeDescISBN=ברקוד מסוג ISBN BarcodeDescC39=ברקוד מסוג C39 BarcodeDescC128=ברקוד מסוג C128 -GenbarcodeLocation=הברקוד הדור הפקודה כלי הקו (בשימוש על ידי מנוע phpbarcode עבור סוגים מסוימים ברקוד) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=חשבון ברירת מחדל להשתמש כדי לקבל תשלומים במזומן CashDeskBankAccountForCheque= חשבון ברירת מחדל להשתמש כדי לקבל תשלומים על ידי סימון CashDeskBankAccountForCB= חשבון ברירת מחדל להשתמש כדי לקבל תשלומים במזומן באמצעות כרטיסי אשראי -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=הפוך ההתקנה מודול @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/he_IL/banks.lang b/htdocs/langs/he_IL/banks.lang index 0041d4550f2..ccc6050c6f1 100644 --- a/htdocs/langs/he_IL/banks.lang +++ b/htdocs/langs/he_IL/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Reconciliation RIB=Bank Account Number IBAN=IBAN number +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=הוראות קבע StandingOrder=Standing order Withdrawals=Withdrawals @@ -148,7 +152,7 @@ BackToAccount=Back to account ShowAllAccounts=Show for all accounts FutureTransaction=Transaction in futur. No way to conciliate. SelectChequeTransactionAndGenerate=Select/filter checks to include into the check deposit receipt and click on "Create". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/he_IL/commercial.lang b/htdocs/langs/he_IL/commercial.lang index 2c1a8e5b82a..49d3d353137 100644 --- a/htdocs/langs/he_IL/commercial.lang +++ b/htdocs/langs/he_IL/commercial.lang @@ -9,9 +9,9 @@ Prospect=Prospect Prospects=Prospects DeleteAction=Delete an event/task NewAction=New event/task -AddAction=Add event/task -AddAnAction=Add an event/task -AddActionRendezVous=Add a Rendez-vous event +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Rendezvous ConfirmDeleteAction=Are you sure you want to delete this event/task ? CardAction=Event card @@ -44,8 +44,8 @@ DoneActions=Completed events DoneActionsFor=Completed events for %s ToDoActions=Incomplete events ToDoActionsFor=Incomplete events for %s -SendPropalRef=Send commercial proposal %s -SendOrderRef=Send order %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Not applicable StatusActionToDo=To do StatusActionDone=Complete diff --git a/htdocs/langs/he_IL/contracts.lang b/htdocs/langs/he_IL/contracts.lang index 52c05d495ad..3c4d235e884 100644 --- a/htdocs/langs/he_IL/contracts.lang +++ b/htdocs/langs/he_IL/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expired ServiceStatusClosed=Closed ServicesLegend=Services legend Contracts=חוזים +ContractsAndLine=Contracts and line of contracts Contract=Contract NoContracts=No contracts MenuServices=שירותים diff --git a/htdocs/langs/he_IL/cron.lang b/htdocs/langs/he_IL/cron.lang index 349d2275749..bb128746069 100644 --- a/htdocs/langs/he_IL/cron.lang +++ b/htdocs/langs/he_IL/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/he_IL/errors.lang b/htdocs/langs/he_IL/errors.lang index 497ddd814e4..700e6344d7d 100644 --- a/htdocs/langs/he_IL/errors.lang +++ b/htdocs/langs/he_IL/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be differen ErrorBadThirdPartyName=Bad value for third party name ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Customer code already used @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript must not be disabled to have this featur ErrorPasswordsMustMatch=Both typed passwords must match each other ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) -ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) ErrorsOnXLines=Errors on %s source record(s) ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/he_IL/install.lang b/htdocs/langs/he_IL/install.lang index d0d0973e729..c72668ff058 100644 --- a/htdocs/langs/he_IL/install.lang +++ b/htdocs/langs/he_IL/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Last step: Define here login and password you plan ActivateModule=Activate module %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/he_IL/main.lang b/htdocs/langs/he_IL/main.lang index 410198e13c9..510dc2d1443 100644 --- a/htdocs/langs/he_IL/main.lang +++ b/htdocs/langs/he_IL/main.lang @@ -141,6 +141,7 @@ Cancel=Cancel Modify=Modify Edit=Edit Validate=Validate +ValidateAndApprove=Validate and Approve ToValidate=To validate Save=Save SaveAs=Save As @@ -158,6 +159,7 @@ Search=Search SearchOf=Search Valid=Valid Approve=Approve +Disapprove=Disapprove ReOpen=Re-Open Upload=Send file ToLink=Link @@ -219,6 +221,7 @@ Cards=Cards Card=Card Now=Now Date=Date +DateAndHour=Date and hour DateStart=Date start DateEnd=Date end DateCreation=Creation date @@ -295,6 +298,7 @@ UnitPriceHT=Unit price (net) UnitPriceTTC=Unit price PriceU=U.P. PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=U.P. Amount=Amount AmountInvoice=Invoice amount @@ -521,6 +525,7 @@ DateFromTo=From %s to %s DateFrom=From %s DateUntil=Until %s Check=Check +Uncheck=Uncheck Internal=Internal External=External Internals=Internal @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/he_IL/orders.lang b/htdocs/langs/he_IL/orders.lang index 57c3dccde16..3e45ed9db31 100644 --- a/htdocs/langs/he_IL/orders.lang +++ b/htdocs/langs/he_IL/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Canceled StatusOrderDraft=Draft (needs to be validated) StatusOrderValidated=Validated StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Processed StatusOrderToBill=Delivered StatusOrderToBill2=To bill @@ -58,6 +59,7 @@ MenuOrdersToBill=Orders delivered MenuOrdersToBill2=Billable orders SearchOrder=Search order SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Ship product Discount=Discount CreateOrder=Create Order diff --git a/htdocs/langs/he_IL/other.lang b/htdocs/langs/he_IL/other.lang index b9e26e405c8..4c5e1b6346f 100644 --- a/htdocs/langs/he_IL/other.lang +++ b/htdocs/langs/he_IL/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximum size AttachANewFile=Attach a new file/document LinkedObject=Linked object Miscellaneous=שונות -NbOfActiveNotifications=Number of notifications +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/he_IL/productbatch.lang b/htdocs/langs/he_IL/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/he_IL/productbatch.lang +++ b/htdocs/langs/he_IL/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/he_IL/products.lang b/htdocs/langs/he_IL/products.lang index 2d4bdafd5a4..9c98812f2a3 100644 --- a/htdocs/langs/he_IL/products.lang +++ b/htdocs/langs/he_IL/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/he_IL/projects.lang b/htdocs/langs/he_IL/projects.lang index 2d1abe5706f..31faca7c515 100644 --- a/htdocs/langs/he_IL/projects.lang +++ b/htdocs/langs/he_IL/projects.lang @@ -8,8 +8,10 @@ SharedProject=Everybody PrivateProject=Contacts of project MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=This view presents all projects and tasks you are allowed to read. TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). ProjectsArea=Projects area @@ -29,6 +31,8 @@ NoProject=No project defined or owned NbOpenTasks=Nb of opened tasks NbOfProjects=Nb of projects TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Time spent RefTask=Ref. task LabelTask=Label task @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=List of supplier's orders associated with th ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated with the project ListContractAssociatedProject=List of contracts associated with the project ListFichinterAssociatedProject=List of interventions associated with the project -ListTripAssociatedProject=List of trips and expenses associated with the project +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=List of events associated with the project ActivityOnProjectThisWeek=Activity on project this week ActivityOnProjectThisMonth=Activity on project this month @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/he_IL/salaries.lang b/htdocs/langs/he_IL/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/he_IL/salaries.lang +++ b/htdocs/langs/he_IL/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/he_IL/sendings.lang b/htdocs/langs/he_IL/sendings.lang index 5167582502a..51b04b2db35 100644 --- a/htdocs/langs/he_IL/sendings.lang +++ b/htdocs/langs/he_IL/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Qty ordered QtyShipped=Qty shipped QtyToShip=Qty to ship QtyReceived=Qty received -KeepToShip=Keep to ship +KeepToShip=Remain to ship OtherSendingsForSameOrder=Other shipments for this order DateSending=Date sending order DateSendingShort=Date sending order diff --git a/htdocs/langs/he_IL/stocks.lang b/htdocs/langs/he_IL/stocks.lang index 79d03a24da0..4cb004102f8 100644 --- a/htdocs/langs/he_IL/stocks.lang +++ b/htdocs/langs/he_IL/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Weighted average price PMPValueShort=WAP EnhancedValueOfWarehouses=Warehouses value UserWarehouseAutoCreate=Create a warehouse automatically when creating a user +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Quantity dispatched QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/he_IL/suppliers.lang b/htdocs/langs/he_IL/suppliers.lang index b910d186708..591b1d13545 100644 --- a/htdocs/langs/he_IL/suppliers.lang +++ b/htdocs/langs/he_IL/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=ספקים -Supplier=Supplier AddSupplier=Create a supplier SupplierRemoved=Supplier removed SuppliersInvoice=Suppliers invoice @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Supplier invoices and payments ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Approve this order ConfirmApproveThisOrder=Are you sure you want to approve order %s ? -DenyingThisOrder=Denying this order +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? AddCustomerOrder=Create customer order diff --git a/htdocs/langs/he_IL/trips.lang b/htdocs/langs/he_IL/trips.lang index 2874de3a593..34b879b2751 100644 --- a/htdocs/langs/he_IL/trips.lang +++ b/htdocs/langs/he_IL/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Trip -Trips=Trips -TripsAndExpenses=Trips and expenses -TripsAndExpensesStatistics=Trips and expenses statistics -TripCard=Trip card -AddTrip=Add trip -ListOfTrips=List of trips +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=List of fees -NewTrip=New trip +NewTrip=New expense report CompanyVisited=Company/foundation visited Kilometers=Kilometers FeesKilometersOrAmout=Amount or kilometers -DeleteTrip=Delete trip -ConfirmDeleteTrip=Are you sure you want to delete this trip ? -TF_OTHER=אחר -TF_LUNCH=Lunch -TF_TRIP=Trip -ListTripsAndExpenses=List of trips and expenses -ExpensesArea=Trips and expenses area -SearchATripAndExpense=Search a trip and expense +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=אחר +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/hr_HR/admin.lang b/htdocs/langs/hr_HR/admin.lang index b7ca8542a9b..22a62f00d59 100644 --- a/htdocs/langs/hr_HR/admin.lang +++ b/htdocs/langs/hr_HR/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimental VersionDevelopment=Development VersionUnknown=Unknown VersionRecommanded=Recommended +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Session ID SessionSaveHandler=Handler to save sessions SessionSavePath=Storage session localization @@ -493,10 +498,16 @@ Module600Name=Notifications Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Donations Module700Desc=Donation management +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1400Name=Accounting Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Categories Module1780Desc=Category management (products, suppliers and customers) Module2000Name=WYSIWYG editor @@ -631,7 +642,7 @@ Permission181=Read supplier orders Permission182=Create/modify supplier orders Permission183=Validate supplier orders Permission184=Approve supplier orders -Permission185=Order supplier orders +Permission185=Order or cancel supplier orders Permission186=Receive supplier orders Permission187=Close supplier orders Permission188=Cancel supplier orders @@ -711,6 +722,13 @@ Permission538=Export services Permission701=Read donations Permission702=Create/modify donations Permission703=Delete donations +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Read stocks Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Password to use the proxy server DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s. ExtraFields=Complementary attributes ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=A line of product/service with a zero amount is consid FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Order management setup OrdersNumberingModules=Orders numbering models @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barcode of type UPC BarcodeDescISBN=Barcode of type ISBN BarcodeDescC39=Barcode of type C39 BarcodeDescC128=Barcode of type C128 -GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Default account to use to receive cash payments CashDeskBankAccountForCheque= Default account to use to receive payments by cheque CashDeskBankAccountForCB= Default account to use to receive payments by credit cards -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Bookmark module setup @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/hr_HR/banks.lang b/htdocs/langs/hr_HR/banks.lang index 25f0ecbc3a0..da71da227fb 100644 --- a/htdocs/langs/hr_HR/banks.lang +++ b/htdocs/langs/hr_HR/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Reconciliation RIB=Bank Account Number IBAN=IBAN broj +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Otvorene narudžbe StandingOrder=Otvorena narudžba Withdrawals=Withdrawals @@ -148,7 +152,7 @@ BackToAccount=Back to account ShowAllAccounts=Show for all accounts FutureTransaction=Transaction in futur. No way to conciliate. SelectChequeTransactionAndGenerate=Select/filter checks to include into the check deposit receipt and click on "Create". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/hr_HR/commercial.lang b/htdocs/langs/hr_HR/commercial.lang index 90bf154d2f3..0be24ffda59 100644 --- a/htdocs/langs/hr_HR/commercial.lang +++ b/htdocs/langs/hr_HR/commercial.lang @@ -9,9 +9,9 @@ Prospect=Potencijalni kupac Prospects=Potencijalni kupci DeleteAction=Izbriši događaj/zadatak NewAction=Novi događaj/zadatak -AddAction=Dodaj događaj/zadatak -AddAnAction=Dodaj događaj/zadatak -AddActionRendezVous=Add a Rendez-vous event +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Rendezvous ConfirmDeleteAction=Are you sure you want to delete this event/task ? CardAction=Event card @@ -44,8 +44,8 @@ DoneActions=Završeni događaji DoneActionsFor=Završeni događaji za %s ToDoActions=Nedovršeni događaji ToDoActionsFor=Incomplete events for %s -SendPropalRef=Send commercial proposal %s -SendOrderRef=Pošalji narudžbu %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Not applicable StatusActionToDo=To do StatusActionDone=Završeno diff --git a/htdocs/langs/hr_HR/contracts.lang b/htdocs/langs/hr_HR/contracts.lang index 26ec3f1e5a4..59e6ca9670f 100644 --- a/htdocs/langs/hr_HR/contracts.lang +++ b/htdocs/langs/hr_HR/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Završen ServiceStatusClosed=Zatvoren ServicesLegend=Knjiga usluga Contracts=Ugovori +ContractsAndLine=Contracts and line of contracts Contract=Ugovor NoContracts=Nema ugovora MenuServices=Usluge diff --git a/htdocs/langs/hr_HR/cron.lang b/htdocs/langs/hr_HR/cron.lang index 82f4574b223..28dfc7770b2 100644 --- a/htdocs/langs/hr_HR/cron.lang +++ b/htdocs/langs/hr_HR/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/hr_HR/errors.lang b/htdocs/langs/hr_HR/errors.lang index 497ddd814e4..700e6344d7d 100644 --- a/htdocs/langs/hr_HR/errors.lang +++ b/htdocs/langs/hr_HR/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be differen ErrorBadThirdPartyName=Bad value for third party name ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Customer code already used @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript must not be disabled to have this featur ErrorPasswordsMustMatch=Both typed passwords must match each other ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) -ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) ErrorsOnXLines=Errors on %s source record(s) ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/hr_HR/install.lang b/htdocs/langs/hr_HR/install.lang index 5a494156672..dcd8df6e7db 100644 --- a/htdocs/langs/hr_HR/install.lang +++ b/htdocs/langs/hr_HR/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Last step: Define here login and password you plan ActivateModule=Activate module %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/hr_HR/main.lang b/htdocs/langs/hr_HR/main.lang index 2729f374a7e..3e299f51788 100644 --- a/htdocs/langs/hr_HR/main.lang +++ b/htdocs/langs/hr_HR/main.lang @@ -141,6 +141,7 @@ Cancel=Cancel Modify=Modify Edit=Edit Validate=Validate +ValidateAndApprove=Validate and Approve ToValidate=To validate Save=Save SaveAs=Save As @@ -158,6 +159,7 @@ Search=Search SearchOf=Search Valid=Valid Approve=Approve +Disapprove=Disapprove ReOpen=Re-Open Upload=Send file ToLink=Link @@ -219,6 +221,7 @@ Cards=Cards Card=Card Now=Now Date=Date +DateAndHour=Date and hour DateStart=Date start DateEnd=Date end DateCreation=Creation date @@ -295,6 +298,7 @@ UnitPriceHT=Unit price (net) UnitPriceTTC=Unit price PriceU=U.P. PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=U.P. Amount=Amount AmountInvoice=Invoice amount @@ -521,6 +525,7 @@ DateFromTo=Od %s za %s DateFrom=Od %s DateUntil=Until %s Check=Check +Uncheck=Uncheck Internal=Internal External=External Internals=Internal @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/hr_HR/orders.lang b/htdocs/langs/hr_HR/orders.lang index cd0b42c8adf..f59089eee0f 100644 --- a/htdocs/langs/hr_HR/orders.lang +++ b/htdocs/langs/hr_HR/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Poništeno StatusOrderDraft=Draft (needs to be validated) StatusOrderValidated=Ovjereno StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Obrađeno StatusOrderToBill=Dostavljeno StatusOrderToBill2=Za naplatu @@ -58,6 +59,7 @@ MenuOrdersToBill=Orders delivered MenuOrdersToBill2=Billable orders SearchOrder=Pretraži narudžbe SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Pošalji proizvod Discount=Popust CreateOrder=Kreiraj narudžbu diff --git a/htdocs/langs/hr_HR/other.lang b/htdocs/langs/hr_HR/other.lang index 88991888183..08747ea884b 100644 --- a/htdocs/langs/hr_HR/other.lang +++ b/htdocs/langs/hr_HR/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximum size AttachANewFile=Attach a new file/document LinkedObject=Linked object Miscellaneous=Miscellaneous -NbOfActiveNotifications=Number of notifications +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/hr_HR/productbatch.lang b/htdocs/langs/hr_HR/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/hr_HR/productbatch.lang +++ b/htdocs/langs/hr_HR/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/hr_HR/products.lang b/htdocs/langs/hr_HR/products.lang index a42bd146177..0b8b37f2a97 100644 --- a/htdocs/langs/hr_HR/products.lang +++ b/htdocs/langs/hr_HR/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/hr_HR/projects.lang b/htdocs/langs/hr_HR/projects.lang index 4127fc0fb7e..58ef04b2e35 100644 --- a/htdocs/langs/hr_HR/projects.lang +++ b/htdocs/langs/hr_HR/projects.lang @@ -8,8 +8,10 @@ SharedProject=Everybody PrivateProject=Contacts of project MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=This view presents all projects and tasks you are allowed to read. TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). ProjectsArea=Projects area @@ -29,6 +31,8 @@ NoProject=Nema definiranih ili vlastih projekata NbOpenTasks=Nb of opened tasks NbOfProjects=Nb of projects TimeSpent=Vrijeme utrošeno +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Vrijeme utrošeno RefTask=Ref. task LabelTask=Label task @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=List of supplier's orders associated with th ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated with the project ListContractAssociatedProject=List of contracts associated with the project ListFichinterAssociatedProject=List of interventions associated with the project -ListTripAssociatedProject=List of trips and expenses associated with the project +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=List of events associated with the project ActivityOnProjectThisWeek=Activity on project this week ActivityOnProjectThisMonth=Activity on project this month @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/hr_HR/salaries.lang b/htdocs/langs/hr_HR/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/hr_HR/salaries.lang +++ b/htdocs/langs/hr_HR/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/hr_HR/sendings.lang b/htdocs/langs/hr_HR/sendings.lang index d5ec2daa761..b4f1e2b8e25 100644 --- a/htdocs/langs/hr_HR/sendings.lang +++ b/htdocs/langs/hr_HR/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Količina naručena QtyShipped=Količina poslana QtyToShip=Količina za poslat QtyReceived=Količina primljena -KeepToShip=Keep to ship +KeepToShip=Remain to ship OtherSendingsForSameOrder=Other shipments for this order DateSending=Date sending order DateSendingShort=Date sending order diff --git a/htdocs/langs/hr_HR/stocks.lang b/htdocs/langs/hr_HR/stocks.lang index 9de2e5a4dbe..29706d17615 100644 --- a/htdocs/langs/hr_HR/stocks.lang +++ b/htdocs/langs/hr_HR/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Weighted average price PMPValueShort=WAP EnhancedValueOfWarehouses=Warehouses value UserWarehouseAutoCreate=Create a warehouse automatically when creating a user +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Quantity dispatched QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/hr_HR/suppliers.lang b/htdocs/langs/hr_HR/suppliers.lang index 7b4d4acb244..baf573c66ac 100644 --- a/htdocs/langs/hr_HR/suppliers.lang +++ b/htdocs/langs/hr_HR/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Suppliers -Supplier=Supplier AddSupplier=Create a supplier SupplierRemoved=Supplier removed SuppliersInvoice=Suppliers invoice @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Supplier invoices and payments ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Approve this order ConfirmApproveThisOrder=Are you sure you want to approve order %s ? -DenyingThisOrder=Denying this order +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? AddCustomerOrder=Create customer order diff --git a/htdocs/langs/hr_HR/trips.lang b/htdocs/langs/hr_HR/trips.lang index 4b0501a8346..ba36fc9b07b 100644 --- a/htdocs/langs/hr_HR/trips.lang +++ b/htdocs/langs/hr_HR/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Trip -Trips=Trips -TripsAndExpenses=Trips and expenses -TripsAndExpensesStatistics=Trips and expenses statistics -TripCard=Trip card -AddTrip=Add trip -ListOfTrips=List of trips +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=List of fees -NewTrip=New trip +NewTrip=New expense report CompanyVisited=Company/foundation visited Kilometers=Kilometers FeesKilometersOrAmout=Amount or kilometers -DeleteTrip=Delete trip -ConfirmDeleteTrip=Are you sure you want to delete this trip ? -TF_OTHER=Other -TF_LUNCH=Lunch -TF_TRIP=Trip -ListTripsAndExpenses=List of trips and expenses -ExpensesArea=Trips and expenses area -SearchATripAndExpense=Search a trip and expense +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/hu_HU/admin.lang b/htdocs/langs/hu_HU/admin.lang index ebe81e0bf63..6bf991e2634 100644 --- a/htdocs/langs/hu_HU/admin.lang +++ b/htdocs/langs/hu_HU/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Kísérleti VersionDevelopment=Fejlesztés VersionUnknown=Ismeretlen VersionRecommanded=Ajánlott +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Session ID SessionSaveHandler=Handler menteni ülések SessionSavePath=Tárolás munkamenet lokalizáció @@ -493,10 +498,16 @@ Module600Name=Értesítések Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Adományok Module700Desc=Adomány vezetése +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integráció Module1400Name=Számvitel Module1400Desc=Számviteli menedzsment (dupla felek) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Kategóriák Module1780Desc=Kategóriában vezetősége (termékek, szállítók és vevők) Module2000Name=WYSIWYG szerkesztő @@ -631,7 +642,7 @@ Permission181=Olvassa szállító megrendelések Permission182=Létrehozza / módosítja szállító megrendelések Permission183=Érvényesítés szállító megrendelések Permission184=Jóváhagyás beszállítói megrendelések -Permission185=Rendelés szállító megrendelések +Permission185=Order or cancel supplier orders Permission186=Vételi megbízás beszállító Permission187=Bezár szállító megrendelések Permission188=Mégsem beszállítói megrendelések @@ -711,6 +722,13 @@ Permission538=Export szolgáltatások Permission701=Olvassa el adományokat Permission702=Létrehozza / módosítja adományok Permission703=Törlés adományok +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Olvassa készletek Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Jelszó a proxy szerver használata DefineHereComplementaryAttributes=Adjuk meg itt minden atributes, még nem álltak rendelkezésre az alapból, hogy azt szeretné, hogy támogatja %s. ExtraFields=Kiegészítő tulajdonságok ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Egy sor termék / szolgáltatás nulla összeg szóba, FreeLegalTextOnProposal=Szabad szöveg a kereskedelmi javaslatok WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Order Management Setup OrdersNumberingModules=Megrendelés számozási modulok @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Vonalkód típusú UPC BarcodeDescISBN=Vonalkód típusú ISBN BarcodeDescC39=Vonalkód típusú C39 BarcodeDescC128=Vonalkód típusú C128 -GenbarcodeLocation=Vonalkód generáló parancssori eszköz (phpbarcode motor használja egyes vonalkód típusokhoz) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Alapértelmezett fiók kezelhető készpénz kifizetések CashDeskBankAccountForCheque= Alapértelmezett fiók használata fizetések fogadására csekkel CashDeskBankAccountForCB= Alapértelmezett fiók kezelhető készpénz kifizetések hitelkártyák -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Könyvjelző beállítása modul @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/hu_HU/banks.lang b/htdocs/langs/hu_HU/banks.lang index 0056818fa07..7f12abcf832 100644 --- a/htdocs/langs/hu_HU/banks.lang +++ b/htdocs/langs/hu_HU/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Egyeztetés RIB=Bankszámla száma IBAN=IBAN szám +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC / SWIFT száma +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Állandó megbízás StandingOrder=Állandó érvényű parancs Withdrawals=Kivonás @@ -148,7 +152,7 @@ BackToAccount=Visszalép a számla ShowAllAccounts=Mutasd az összes fiók FutureTransaction=Ügylet Futur. Semmiképpen egyeztetni. SelectChequeTransactionAndGenerate=Válassza / filter ellenőrzéseket be kell vonni a csekket befizetés beérkezésének és kattintson a "Create". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/hu_HU/commercial.lang b/htdocs/langs/hu_HU/commercial.lang index 882531d8908..e3bd1fedfda 100644 --- a/htdocs/langs/hu_HU/commercial.lang +++ b/htdocs/langs/hu_HU/commercial.lang @@ -9,9 +9,9 @@ Prospect=Kilátás Prospects=Kilátások DeleteAction=Cselekvés / feladat törlése NewAction=Új cselekvés / feladat -AddAction=Cselekvés / feladat hozzáadása -AddAnAction=Cselekvés / feladat hozzáadása -AddActionRendezVous=Találkozó hozzáadása +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Találkozó ConfirmDeleteAction=Biztos törölni akarja ezt a feladatot? CardAction=Cselekvés kártya @@ -44,8 +44,8 @@ DoneActions=Befejezett cselekvések DoneActionsFor=Befejezett cselekvések %s részére ToDoActions=Befejezetlen cselekvések ToDoActionsFor=Befejezetlen cselekvések %s részére -SendPropalRef=Ajánlat küldése %s -SendOrderRef=Megrendelés küldése %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Nem alkalmazható StatusActionToDo=Végrehajtani StatusActionDone=Kész @@ -62,7 +62,7 @@ LastProspectContactDone=Kapcsolatba lépés megtörtént DateActionPlanned=Cselekmény dátuma DateActionDone=Cselekvés befejezésésnek a dátuma ActionAskedBy=Cselekvést kérte -ActionAffectedTo=Cselekvés hatással van rá +ActionAffectedTo=Event assigned to ActionDoneBy=Cselekvést végrehatja ActionUserAsk=Jegyezte ErrorStatusCantBeZeroIfStarted=Ha a 'Cselekvés befejezésésnek a dátuma' mező rendelkezik tartalommal, a cselekvés elkezdődőtt (vagy befejeződtt), az 'Állapot' mező nem lehet 0%%. diff --git a/htdocs/langs/hu_HU/contracts.lang b/htdocs/langs/hu_HU/contracts.lang index df24822ebb1..426c7a37859 100644 --- a/htdocs/langs/hu_HU/contracts.lang +++ b/htdocs/langs/hu_HU/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Lejárt ServiceStatusClosed=Lezárva ServicesLegend=Szolgáltatások magyarázat Contracts=Szerződések +ContractsAndLine=Contracts and line of contracts Contract=Szerződés NoContracts=Nincs szerződés MenuServices=Szolgáltatás diff --git a/htdocs/langs/hu_HU/cron.lang b/htdocs/langs/hu_HU/cron.lang index 119ae6079d5..b186a698110 100644 --- a/htdocs/langs/hu_HU/cron.lang +++ b/htdocs/langs/hu_HU/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/hu_HU/errors.lang b/htdocs/langs/hu_HU/errors.lang index 75d66c5b78f..197f9806cca 100644 --- a/htdocs/langs/hu_HU/errors.lang +++ b/htdocs/langs/hu_HU/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Forrás és célok bankszámlák különbözőnek ErrorBadThirdPartyName=Rossz érték a harmadik fél nevében ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Rossz a szintaxisa az ügyfél kód -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Ügyfél kód szükséges ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Ügyfél kód már használatban @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript nem szabad tiltani, hogy ez a funkció m ErrorPasswordsMustMatch=Mindkét típusú jelszavakat kell egyeznie egymással ErrorContactEMail=Egy technikai hiba történt. Kérjük, lépjen kapcsolatba a következő e-mail rendszergazda %s en biztosítja a hibakódot %s be az üzenetet, vagy még jobb hozzáadásával képernyő ezen oldal másolatát. ErrorWrongValueForField=Rossz érték mezőszám %s (érték "%s" nem egyezik regex szabály %s) -ErrorFieldValueNotIn=Rossz érték mezőszám %s (érték "%s" nem érték áll rendelkezésre a területen %s %s táblázat) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Rossz érték mezőszám %s (érték "%s" nem létező %s ref) ErrorsOnXLines=%s hibák forrása vonalak ErrorFileIsInfectedWithAVirus=A víruskereső program nem tudta érvényesíteni a fájl (file lehet megfertőzte egy vírus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/hu_HU/install.lang b/htdocs/langs/hu_HU/install.lang index 1da3c2c7cbc..78d675524cd 100644 --- a/htdocs/langs/hu_HU/install.lang +++ b/htdocs/langs/hu_HU/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Utolsó lépés: Adjuk meg itt bejelentkezési né ActivateModule=Modul aktiválása %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/hu_HU/main.lang b/htdocs/langs/hu_HU/main.lang index 21c0caa72a0..47b61bbf942 100644 --- a/htdocs/langs/hu_HU/main.lang +++ b/htdocs/langs/hu_HU/main.lang @@ -141,6 +141,7 @@ Cancel=Megszakítás Modify=Módosítás Edit=Szerkesztés Validate=Hitelesítés +ValidateAndApprove=Validate and Approve ToValidate=Hitelesyteni Save=Mentés SaveAs=Mentés másként @@ -158,6 +159,7 @@ Search=Keresés SearchOf=Keresés Valid=Hiteles Approve=Jóváhagy +Disapprove=Disapprove ReOpen=Újra megnyit Upload=Fájl küldése ToLink=Link @@ -219,6 +221,7 @@ Cards=Kártáy Card=Kártya Now=Most Date=Dátum +DateAndHour=Date and hour DateStart=Kezdés DateEnd=Végzés DateCreation=Létrehozás dátuma @@ -295,6 +298,7 @@ UnitPriceHT=Egység ár (nettó) UnitPriceTTC=Egység ár PriceU=E.Á. PriceUHT=E.Á. (nettó) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=E.Á. Amount=Mennyiség AmountInvoice=Számla mennyiség @@ -521,6 +525,7 @@ DateFromTo=%s -től %s -ig DateFrom=%s -től DateUntil=%s -ig Check=Ellenőriz +Uncheck=Uncheck Internal=Belső External=Külső Internals=Belső @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Hétfő Tuesday=Kedd diff --git a/htdocs/langs/hu_HU/orders.lang b/htdocs/langs/hu_HU/orders.lang index b1d273e4106..d146ad13e0b 100644 --- a/htdocs/langs/hu_HU/orders.lang +++ b/htdocs/langs/hu_HU/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Törölve StatusOrderDraft=Tervezet (kell érvényesíteni) StatusOrderValidated=Hitelesítette StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Feldolgozott StatusOrderToBill=Bill StatusOrderToBill2=Bill @@ -58,6 +59,7 @@ MenuOrdersToBill=Megrendelés Bill MenuOrdersToBill2=Billable orders SearchOrder=Keresés érdekében SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Hajó termék Discount=Kedvezmény CreateOrder=Rendet diff --git a/htdocs/langs/hu_HU/other.lang b/htdocs/langs/hu_HU/other.lang index e9ddc4edf81..5b4e01644cd 100644 --- a/htdocs/langs/hu_HU/other.lang +++ b/htdocs/langs/hu_HU/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximális méret AttachANewFile=Helyezzen fel egy új file / dokumentum LinkedObject=Csatolt objektum Miscellaneous=Vegyes -NbOfActiveNotifications=Bejelentések száma +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Ez egy teszt mailt. \\ NA két vonal választja el egymástól kocsivissza. PredefinedMailTestHtml=Ez egy teszt mail (a szó vizsgálatot kell vastagon).
A két vonal választja el egymástól kocsivissza. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/hu_HU/productbatch.lang b/htdocs/langs/hu_HU/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/hu_HU/productbatch.lang +++ b/htdocs/langs/hu_HU/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/hu_HU/products.lang b/htdocs/langs/hu_HU/products.lang index ccba6ede02d..584d47aeb70 100644 --- a/htdocs/langs/hu_HU/products.lang +++ b/htdocs/langs/hu_HU/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/hu_HU/projects.lang b/htdocs/langs/hu_HU/projects.lang index 274c306e716..085c0f39bc5 100644 --- a/htdocs/langs/hu_HU/projects.lang +++ b/htdocs/langs/hu_HU/projects.lang @@ -8,8 +8,10 @@ SharedProject=Mindenki PrivateProject=A projekt kapcsolatai MyProjectsDesc=Ez a nézet azokra a projektekre van korlátozva amivel valamilyen összefüggésben áll. ProjectsPublicDesc=Ez a nézet minden az ön által megtekinthető projektre van korlátozva. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Ez a nézet minden projektet tartalmaz. MyTasksDesc=Ez a nézet azokra a projektekre van korlátozva amivel valamilyen összefüggésben áll. +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Ez a nézet minden az ön által megtekinthető projektre van korlátozva. TasksDesc=Ez a nézet minden projektet tartalmaz. ProjectsArea=Projektek terület @@ -29,6 +31,8 @@ NoProject=Nincs létrehozott vagy tulajdonolt projekt NbOpenTasks=Nyitott feladatok száma NbOfProjects=Projektek száma TimeSpent=Eltöltött idő +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Töltött idő RefTask=Feladat ref# LabelTask=Feladat cimkéje @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=A projekthez tartozó beszállítói rendel ListSupplierInvoicesAssociatedProject=A projekthez tartozó beszállítói számlák listája ListContractAssociatedProject=A projekthez tartozó szerződések listája ListFichinterAssociatedProject=A projekthez tartozó intervenciók listája -ListTripAssociatedProject=A projekthez tartozó utazási kiadások listája +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=A projekthez tartozó cselekvések listája ActivityOnProjectThisWeek=Heti projekt aktivitás ActivityOnProjectThisMonth=Havi projekt aktivitás @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/hu_HU/salaries.lang b/htdocs/langs/hu_HU/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/hu_HU/salaries.lang +++ b/htdocs/langs/hu_HU/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/hu_HU/sendings.lang b/htdocs/langs/hu_HU/sendings.lang index 82c7da53ef0..b2c42484995 100644 --- a/htdocs/langs/hu_HU/sendings.lang +++ b/htdocs/langs/hu_HU/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Rendelt mennyiség QtyShipped=Kiszállított mennyiség QtyToShip=Szállítandó mennyiség QtyReceived=Átvett mennyiség -KeepToShip=Szállításra félretenni +KeepToShip=Remain to ship OtherSendingsForSameOrder=Más szállítások ehhez a megrendeléshez DateSending=Date sending order DateSendingShort=Küldési dátum sorrend diff --git a/htdocs/langs/hu_HU/stocks.lang b/htdocs/langs/hu_HU/stocks.lang index 2f5b54b3bfc..c3570f47006 100644 --- a/htdocs/langs/hu_HU/stocks.lang +++ b/htdocs/langs/hu_HU/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Súlyozott árlak érték PMPValueShort=SÁÉ EnhancedValueOfWarehouses=Raktárak értéke UserWarehouseAutoCreate=Raktár autómatikus létrehozása felhasználó létrehozásakor +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Mennyiség kiküldése QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/hu_HU/suppliers.lang b/htdocs/langs/hu_HU/suppliers.lang index e8faa8de1ae..bf6540154b1 100644 --- a/htdocs/langs/hu_HU/suppliers.lang +++ b/htdocs/langs/hu_HU/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Beszállítók -Supplier=Beszállító AddSupplier=Create a supplier SupplierRemoved=Beszállító eltávolítva SuppliersInvoice=Beszállító számla @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Beszállítói számlák és fizetések ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Megrendelés jóváhagyása ConfirmApproveThisOrder=Biztos jóvá akarja hagyni a megrendelést? -DenyingThisOrder=Megrendelés elutasítása +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Biztos el akarja utasítani a megrendelést? ConfirmCancelThisOrder=Biztos meg akarja szakítani a megrendelést? AddCustomerOrder=Ügyfél megrendelés létrehozása diff --git a/htdocs/langs/hu_HU/trips.lang b/htdocs/langs/hu_HU/trips.lang index 9daea3f2f0e..b1d1f636ca8 100644 --- a/htdocs/langs/hu_HU/trips.lang +++ b/htdocs/langs/hu_HU/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=utazás -Trips=Utak -TripsAndExpenses=Utazások és kiadások -TripsAndExpensesStatistics=Utazások és kiadások statisztikák -TripCard=Utazás kártya -AddTrip=Út hozzáadása -ListOfTrips=Utazások listája +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Költségek listája -NewTrip=Új út +NewTrip=New expense report CompanyVisited=Látogatott Cég/alapítvány Kilometers=Kilométerek FeesKilometersOrAmout=Kilóméterek száma -DeleteTrip=Utazás törlése -ConfirmDeleteTrip=Biztos törölni akarja ezt az utat? -TF_OTHER=Other -TF_LUNCH=Lunch -TF_TRIP=Trip -ListTripsAndExpenses=Utak és kiadások listája -ExpensesArea=Kirándulások és kiadások területén -SearchATripAndExpense=Keresés út és költségek +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/id_ID/admin.lang b/htdocs/langs/id_ID/admin.lang index 91b5e8d77f0..7c834ac36f8 100644 --- a/htdocs/langs/id_ID/admin.lang +++ b/htdocs/langs/id_ID/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Percobaan VersionDevelopment=Pengembangan VersionUnknown=Tidak diketahui VersionRecommanded=Direkomendasikan +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Sesi ID SessionSaveHandler=Handler untuk menyimpan sesi SessionSavePath=Peyimpanan untuk lokalisasi sesi @@ -493,10 +498,16 @@ Module600Name=Notifikasi Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Sumbangan Module700Desc=Donation management +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1400Name=Akunting Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Kategori Module1780Desc=Category management (products, suppliers and customers) Module2000Name=WYSIWYG editor @@ -631,7 +642,7 @@ Permission181=Read supplier orders Permission182=Create/modify supplier orders Permission183=Validate supplier orders Permission184=Approve supplier orders -Permission185=Order supplier orders +Permission185=Order or cancel supplier orders Permission186=Receive supplier orders Permission187=Close supplier orders Permission188=Cancel supplier orders @@ -711,6 +722,13 @@ Permission538=Export services Permission701=Membaca Sumbangan Permission702=Membuat/Merubah Sumbangan Permission703=Menghapus Sumbangan +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Membaca Stok Permission1002=Membuat/Merubah Gudang Permission1003=Menghapus Gudang @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Password to use the proxy server DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s. ExtraFields=Complementary attributes ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=A line of product/service with a zero amount is consid FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Order management setup OrdersNumberingModules=Orders numbering models @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barcode of type UPC BarcodeDescISBN=Barcode of type ISBN BarcodeDescC39=Barcode of type C39 BarcodeDescC128=Barcode of type C128 -GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Default account to use to receive cash payments CashDeskBankAccountForCheque= Default account to use to receive payments by cheque CashDeskBankAccountForCB= Default account to use to receive payments by credit cards -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Bookmark module setup @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/id_ID/banks.lang b/htdocs/langs/id_ID/banks.lang index 10a5f5b3c14..a2306950fb4 100644 --- a/htdocs/langs/id_ID/banks.lang +++ b/htdocs/langs/id_ID/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Reconciliation RIB=Bank Account Number IBAN=IBAN number +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Standing orders StandingOrder=Standing order Withdrawals=Withdrawals @@ -148,7 +152,7 @@ BackToAccount=Back to account ShowAllAccounts=Show for all accounts FutureTransaction=Transaction in futur. No way to conciliate. SelectChequeTransactionAndGenerate=Select/filter checks to include into the check deposit receipt and click on "Create". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/id_ID/commercial.lang b/htdocs/langs/id_ID/commercial.lang index e7d2de76503..7acdc7bd7e6 100644 --- a/htdocs/langs/id_ID/commercial.lang +++ b/htdocs/langs/id_ID/commercial.lang @@ -9,9 +9,9 @@ Prospect=Prospect Prospects=Prospects DeleteAction=Delete an event/task NewAction=New event/task -AddAction=Add event/task -AddAnAction=Add an event/task -AddActionRendezVous=Add a Rendez-vous event +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Rendezvous ConfirmDeleteAction=Are you sure you want to delete this event/task ? CardAction=Event card @@ -44,8 +44,8 @@ DoneActions=Completed events DoneActionsFor=Completed events for %s ToDoActions=Incomplete events ToDoActionsFor=Incomplete events for %s -SendPropalRef=Send commercial proposal %s -SendOrderRef=Send order %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Not applicable StatusActionToDo=To do StatusActionDone=Complete diff --git a/htdocs/langs/id_ID/contracts.lang b/htdocs/langs/id_ID/contracts.lang index 57ba3bb15d8..d1be0e6513f 100644 --- a/htdocs/langs/id_ID/contracts.lang +++ b/htdocs/langs/id_ID/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expired ServiceStatusClosed=Closed ServicesLegend=Services legend Contracts=Contracts +ContractsAndLine=Contracts and line of contracts Contract=Contract NoContracts=No contracts MenuServices=Services diff --git a/htdocs/langs/id_ID/cron.lang b/htdocs/langs/id_ID/cron.lang index 82f4574b223..28dfc7770b2 100644 --- a/htdocs/langs/id_ID/cron.lang +++ b/htdocs/langs/id_ID/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/id_ID/errors.lang b/htdocs/langs/id_ID/errors.lang index 497ddd814e4..700e6344d7d 100644 --- a/htdocs/langs/id_ID/errors.lang +++ b/htdocs/langs/id_ID/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be differen ErrorBadThirdPartyName=Bad value for third party name ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Customer code already used @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript must not be disabled to have this featur ErrorPasswordsMustMatch=Both typed passwords must match each other ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) -ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) ErrorsOnXLines=Errors on %s source record(s) ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/id_ID/install.lang b/htdocs/langs/id_ID/install.lang index 62986a9dfba..278965595b2 100644 --- a/htdocs/langs/id_ID/install.lang +++ b/htdocs/langs/id_ID/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Last step: Define here login and password you plan ActivateModule=Activate module %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/id_ID/main.lang b/htdocs/langs/id_ID/main.lang index 62adb884547..81deb7c28f0 100644 --- a/htdocs/langs/id_ID/main.lang +++ b/htdocs/langs/id_ID/main.lang @@ -141,6 +141,7 @@ Cancel=Cancel Modify=Modify Edit=Edit Validate=Validate +ValidateAndApprove=Validate and Approve ToValidate=To validate Save=Save SaveAs=Save As @@ -158,6 +159,7 @@ Search=Search SearchOf=Search Valid=Valid Approve=Approve +Disapprove=Disapprove ReOpen=Re-Open Upload=Send file ToLink=Link @@ -219,6 +221,7 @@ Cards=Cards Card=Card Now=Now Date=Date +DateAndHour=Date and hour DateStart=Date start DateEnd=Date end DateCreation=Creation date @@ -295,6 +298,7 @@ UnitPriceHT=Unit price (net) UnitPriceTTC=Unit price PriceU=U.P. PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=U.P. Amount=Amount AmountInvoice=Invoice amount @@ -521,6 +525,7 @@ DateFromTo=From %s to %s DateFrom=From %s DateUntil=Until %s Check=Check +Uncheck=Uncheck Internal=Internal External=External Internals=Internal @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/id_ID/orders.lang b/htdocs/langs/id_ID/orders.lang index 34792ae1eb2..8efafa5e94e 100644 --- a/htdocs/langs/id_ID/orders.lang +++ b/htdocs/langs/id_ID/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Canceled StatusOrderDraft=Draft (needs to be validated) StatusOrderValidated=Validated StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Processed StatusOrderToBill=Delivered StatusOrderToBill2=To bill @@ -58,6 +59,7 @@ MenuOrdersToBill=Orders delivered MenuOrdersToBill2=Billable orders SearchOrder=Search order SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Ship product Discount=Discount CreateOrder=Create Order diff --git a/htdocs/langs/id_ID/other.lang b/htdocs/langs/id_ID/other.lang index 25d3aa806d0..1f2b7c1b38d 100644 --- a/htdocs/langs/id_ID/other.lang +++ b/htdocs/langs/id_ID/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximum size AttachANewFile=Attach a new file/document LinkedObject=Linked object Miscellaneous=Miscellaneous -NbOfActiveNotifications=Number of notifications +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/id_ID/productbatch.lang b/htdocs/langs/id_ID/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/id_ID/productbatch.lang +++ b/htdocs/langs/id_ID/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/id_ID/products.lang b/htdocs/langs/id_ID/products.lang index 3a29639b12b..3a18cda69e7 100644 --- a/htdocs/langs/id_ID/products.lang +++ b/htdocs/langs/id_ID/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/id_ID/projects.lang b/htdocs/langs/id_ID/projects.lang index b3c150d1687..0a12f4c64b7 100644 --- a/htdocs/langs/id_ID/projects.lang +++ b/htdocs/langs/id_ID/projects.lang @@ -8,8 +8,10 @@ SharedProject=Everybody PrivateProject=Contacts of project MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=This view presents all projects and tasks you are allowed to read. TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). ProjectsArea=Projects area @@ -29,6 +31,8 @@ NoProject=No project defined or owned NbOpenTasks=Nb of opened tasks NbOfProjects=Nb of projects TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Time spent RefTask=Ref. task LabelTask=Label task @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=List of supplier's orders associated with th ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated with the project ListContractAssociatedProject=List of contracts associated with the project ListFichinterAssociatedProject=List of interventions associated with the project -ListTripAssociatedProject=List of trips and expenses associated with the project +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=List of events associated with the project ActivityOnProjectThisWeek=Activity on project this week ActivityOnProjectThisMonth=Activity on project this month @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/id_ID/salaries.lang b/htdocs/langs/id_ID/salaries.lang index 666632bf28e..17b07d2a8b7 100644 --- a/htdocs/langs/id_ID/salaries.lang +++ b/htdocs/langs/id_ID/salaries.lang @@ -10,3 +10,4 @@ SalariesPayments=Pembayaran Gaji ShowSalaryPayment=Menampilkan Pembayaran Gaji THM=rata - rata per jam TJM=rata - rata per hari +CurrentSalary=Current salary diff --git a/htdocs/langs/id_ID/sendings.lang b/htdocs/langs/id_ID/sendings.lang index 794c9019c86..b1ff55f71c1 100644 --- a/htdocs/langs/id_ID/sendings.lang +++ b/htdocs/langs/id_ID/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Qty ordered QtyShipped=Qty shipped QtyToShip=Qty to ship QtyReceived=Qty received -KeepToShip=Keep to ship +KeepToShip=Remain to ship OtherSendingsForSameOrder=Other shipments for this order DateSending=Date sending order DateSendingShort=Date sending order diff --git a/htdocs/langs/id_ID/stocks.lang b/htdocs/langs/id_ID/stocks.lang index 9de2e5a4dbe..29706d17615 100644 --- a/htdocs/langs/id_ID/stocks.lang +++ b/htdocs/langs/id_ID/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Weighted average price PMPValueShort=WAP EnhancedValueOfWarehouses=Warehouses value UserWarehouseAutoCreate=Create a warehouse automatically when creating a user +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Quantity dispatched QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/id_ID/suppliers.lang b/htdocs/langs/id_ID/suppliers.lang index fe4a33edeae..1f90724539e 100644 --- a/htdocs/langs/id_ID/suppliers.lang +++ b/htdocs/langs/id_ID/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Suplier langganan -Supplier=Suplier AddSupplier=Create a supplier SupplierRemoved=Suplier dihapus SuppliersInvoice=Invoice suplier @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Supplier invoices and payments ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Setujui pesanan ConfirmApproveThisOrder=Are you sure you want to approve order %s ? -DenyingThisOrder=Tolak pesanan +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? AddCustomerOrder=Buat pesanan pelanggan diff --git a/htdocs/langs/id_ID/trips.lang b/htdocs/langs/id_ID/trips.lang index 4b0501a8346..ba36fc9b07b 100644 --- a/htdocs/langs/id_ID/trips.lang +++ b/htdocs/langs/id_ID/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Trip -Trips=Trips -TripsAndExpenses=Trips and expenses -TripsAndExpensesStatistics=Trips and expenses statistics -TripCard=Trip card -AddTrip=Add trip -ListOfTrips=List of trips +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=List of fees -NewTrip=New trip +NewTrip=New expense report CompanyVisited=Company/foundation visited Kilometers=Kilometers FeesKilometersOrAmout=Amount or kilometers -DeleteTrip=Delete trip -ConfirmDeleteTrip=Are you sure you want to delete this trip ? -TF_OTHER=Other -TF_LUNCH=Lunch -TF_TRIP=Trip -ListTripsAndExpenses=List of trips and expenses -ExpensesArea=Trips and expenses area -SearchATripAndExpense=Search a trip and expense +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/is_IS/admin.lang b/htdocs/langs/is_IS/admin.lang index 6ab56c9cb5c..50ac8371a52 100644 --- a/htdocs/langs/is_IS/admin.lang +++ b/htdocs/langs/is_IS/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimental VersionDevelopment=Þróun VersionUnknown=Óþekkt VersionRecommanded=Mælt +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Session ID SessionSaveHandler=Handler að vista fundur SessionSavePath=Bílskúr fundur localization @@ -493,10 +498,16 @@ Module600Name=Tilkynningar Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Fjárframlög Module700Desc=Framlög í stjórnun +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis sameining Module1400Name=Bókhald Module1400Desc=Bókhald stjórnun (tvöfaldur aðila) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Flokkar Module1780Desc=Stjórn Flokkur's (vörur, birgja og viðskiptavina) Module2000Name=Fckeditor @@ -631,7 +642,7 @@ Permission181=Lesa birgir pantanir Permission182=Búa til / breyta birgi pantanir Permission183=Staðfesta birgir pantanir Permission184=Samþykkja birgir pantanir -Permission185=Panta birgir pantanir +Permission185=Order or cancel supplier orders Permission186=Fá pantanir birgir Permission187=Loka birgir pantanir Permission188=Hætta við birgi pantanir @@ -711,6 +722,13 @@ Permission538=Útflutningur þjónustu Permission701=Lesa Fjárframlög Permission702=Búa til / breyta framlög Permission703=Eyða Fjárframlög +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Lesa fiskistofna Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Lykilorð til að nota proxy-miðlara DefineHereComplementaryAttributes=Skilgreindu hér öll atributes, ekki þegar í boði sjálfgefið, og að þú viljir vera studd %s. ExtraFields=Fyllingar eiginleika ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=A lína af vöru / þjónustu með núll upphæð er t FreeLegalTextOnProposal=Frjáls texti um viðskiptabanka tillögur WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Stjórn Order's skipulag OrdersNumberingModules=Pantanir tala mát @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Strikamerki af gerðinni UPC BarcodeDescISBN=Strikamerki af gerðinni ISBN BarcodeDescC39=Strikamerki á C39 tegund BarcodeDescC128=Strikamerki af gerðinni C128 -GenbarcodeLocation=Strikamerki kynslóð stjórn lína tól (notað af phpbarcode vél fyrir sumir merkjamál barnum tegund) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Reikning til að nota til að taka á móti peningum greiðslur CashDeskBankAccountForCheque= Reikning til að nota til að taka á móti greiðslum með því að stöðva CashDeskBankAccountForCB= Reikning til að nota til að taka á móti peningum greiðslur með kreditkortum -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Bókamerki mát skipulag @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/is_IS/banks.lang b/htdocs/langs/is_IS/banks.lang index b6516a6fa11..3b8b3123521 100644 --- a/htdocs/langs/is_IS/banks.lang +++ b/htdocs/langs/is_IS/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Sættir RIB=Bankareikningur Fjöldi IBAN=IBAN númer +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC / SWIFT númer +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Standandi pantanir StandingOrder=Standandi pöntun Withdrawals=Útborganir @@ -148,7 +152,7 @@ BackToAccount=Til baka á reikning ShowAllAccounts=Sýna allra reikninga FutureTransaction=Færsla í futur. Engin leið til leitar sátta. SelectChequeTransactionAndGenerate=Select / sía ávísanir til fela í innborgun stöðva móttöku og smelltu á "Create." -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/is_IS/commercial.lang b/htdocs/langs/is_IS/commercial.lang index 80a7c534614..d80b68c1c53 100644 --- a/htdocs/langs/is_IS/commercial.lang +++ b/htdocs/langs/is_IS/commercial.lang @@ -9,9 +9,9 @@ Prospect=Prospect Prospects=Horfur DeleteAction=Eyða aðgerð / verkefni NewAction=Ný aðgerð / verkefni -AddAction=Bæta við aðgerðir / verkefni -AddAnAction=Bæta við óákveðinn greinir í ensku aðgerð / verkefni -AddActionRendezVous=Bæta við stefnumót verkefni +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Stefnumót ConfirmDeleteAction=Ertu viss um að þú viljir eyða þessu verkefni? CardAction=Aðgerð kort @@ -44,8 +44,8 @@ DoneActions=Lauk aðgerðum DoneActionsFor=Lauk aðgerðum á %s ToDoActions=Ófullnægjandi aðgerðir ToDoActionsFor=Ófullnægjandi aðgerðir til %s -SendPropalRef=Senda auglýsing tillögu %s -SendOrderRef=Senda til %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Á ekki við StatusActionToDo=Til að gera StatusActionDone=Complete @@ -62,7 +62,7 @@ LastProspectContactDone=Hafðu gert DateActionPlanned=Date aðgerð skipuleggjandi fyrir DateActionDone=Date aðgerð lokið ActionAskedBy=Aðgerð bað -ActionAffectedTo=Aðgerð áhrif til +ActionAffectedTo=Event assigned to ActionDoneBy=Aðgerð lokið við ActionUserAsk=Skráð af ErrorStatusCantBeZeroIfStarted=Ef "Date sviði gert 'er fyllt, aðgerð er hafin (eða búin),' Staða 'svo sviði er ekki hægt að 0%%. diff --git a/htdocs/langs/is_IS/contracts.lang b/htdocs/langs/is_IS/contracts.lang index 8faf347b95c..6f81b9bfc44 100644 --- a/htdocs/langs/is_IS/contracts.lang +++ b/htdocs/langs/is_IS/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Útrunnið ServiceStatusClosed=Loka ServicesLegend=Þjónusta þjóðsaga Contracts=Samningar +ContractsAndLine=Contracts and line of contracts Contract=Samningur NoContracts=Engir samningar MenuServices=Þjónusta diff --git a/htdocs/langs/is_IS/cron.lang b/htdocs/langs/is_IS/cron.lang index 34d66fdb353..746b799208a 100644 --- a/htdocs/langs/is_IS/cron.lang +++ b/htdocs/langs/is_IS/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/is_IS/errors.lang b/htdocs/langs/is_IS/errors.lang index 52ae8adce65..4676457743f 100644 --- a/htdocs/langs/is_IS/errors.lang +++ b/htdocs/langs/is_IS/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Heimild og markmið bankareikninga verður að ve ErrorBadThirdPartyName=Bad gildi fyrir þriðja aðila Nafn ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad setningafræði fyrir kóða viðskiptavina -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Viðskiptavinur númer sem þarf ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Viðskiptavinur sem notaður er þegar @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript þarf ekki að vera óvirkur til að haf ErrorPasswordsMustMatch=Bæði tegund lykilorð verður að samsvara hvor öðrum ErrorContactEMail=Tæknilegt villa kom upp. Vinsamlegast hafðu samband við kerfisstjóra til að fylgja email %s en veita merkjamál villa %s í skilaboðin, eða jafnvel enn betri með því að bæta skjár afrit af þessari síðu. ErrorWrongValueForField=Wrong gildi fyrir reitinn númer %s (gildi ' %s ' er ekki það sama ríkisstjóratíð reglu %s ) -ErrorFieldValueNotIn=Rangt gildi fyrir sviði númer %s ('%s "gildi er ekki gildi í boði í ​​%s svið %s borð) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Rangt gildi fyrir sviði númer %s ('á %s "gildi er ekki %s núverandi dómari) ErrorsOnXLines=Villur á %s uppspretta línur ErrorFileIsInfectedWithAVirus=The antivirus program was not 'fær til setja í gildi the skrá (skrá gæti verið sýkt af veiru) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/is_IS/install.lang b/htdocs/langs/is_IS/install.lang index 25b309f93ba..7aa233a456a 100644 --- a/htdocs/langs/is_IS/install.lang +++ b/htdocs/langs/is_IS/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Síðasta skref: Tilgreindu hér notandanafn og ly ActivateModule=Virkja mát %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/is_IS/main.lang b/htdocs/langs/is_IS/main.lang index 704097d023c..0e595e2d7be 100644 --- a/htdocs/langs/is_IS/main.lang +++ b/htdocs/langs/is_IS/main.lang @@ -141,6 +141,7 @@ Cancel=Hætta við Modify=Breyta Edit=Breyta Validate=Staðfesta +ValidateAndApprove=Validate and Approve ToValidate=Til að sannprófa Save=Vista SaveAs=Save As @@ -158,6 +159,7 @@ Search=Leita SearchOf=Leita Valid=Gildir Approve=Samþykkja +Disapprove=Disapprove ReOpen=Re-Open Upload=Senda skrá ToLink=Link @@ -219,6 +221,7 @@ Cards=Spil Card=Card Now=Nú Date=Dagsetning +DateAndHour=Date and hour DateStart=Upphafsdagsetning DateEnd=Lokadagsetning DateCreation=Creation dagsetning @@ -295,6 +298,7 @@ UnitPriceHT=Unit verð (nettó) UnitPriceTTC=Eining verðs PriceU=UPP PriceUHT=UP (nettó) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=UPP Amount=Upphæð AmountInvoice=Invoice upphæð @@ -521,6 +525,7 @@ DateFromTo=Úr %s í %s DateFrom=Frá %s DateUntil=Þangað til %s Check=Athuga +Uncheck=Uncheck Internal=Innri External=Ytri Internals=Innri @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Mánudagur Tuesday=Þriðjudagur diff --git a/htdocs/langs/is_IS/orders.lang b/htdocs/langs/is_IS/orders.lang index 620cd8ca531..29a82746738 100644 --- a/htdocs/langs/is_IS/orders.lang +++ b/htdocs/langs/is_IS/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Hætt við StatusOrderDraft=Víxill (þarf að vera staðfest) StatusOrderValidated=Staðfestar StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Afgreitt StatusOrderToBill=Við reikning StatusOrderToBill2=Við reikning @@ -58,6 +59,7 @@ MenuOrdersToBill=Pantanir við reikning MenuOrdersToBill2=Billable orders SearchOrder=Leita röð SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Skip vöru Discount=Afsláttur CreateOrder=Búa Order diff --git a/htdocs/langs/is_IS/other.lang b/htdocs/langs/is_IS/other.lang index b9f670340db..051c37066dc 100644 --- a/htdocs/langs/is_IS/other.lang +++ b/htdocs/langs/is_IS/other.lang @@ -54,12 +54,13 @@ MaxSize=Hámarks stærð AttachANewFile=Hengja nýja skrá / skjal LinkedObject=Tengd mótmæla Miscellaneous=Ýmislegt -NbOfActiveNotifications=Fjöldi tilkynninga +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Þetta er prófun póst. \\ NThe tvær línur eru aðskilin með vagn til baka. PredefinedMailTestHtml=Þetta er prófun póstur (orðið próf verður feitletruð).
Þessar tvær línur eru aðskilin með vagn til baka. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/is_IS/productbatch.lang b/htdocs/langs/is_IS/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/is_IS/productbatch.lang +++ b/htdocs/langs/is_IS/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/is_IS/products.lang b/htdocs/langs/is_IS/products.lang index 2d9c72298ee..655a4801339 100644 --- a/htdocs/langs/is_IS/products.lang +++ b/htdocs/langs/is_IS/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/is_IS/projects.lang b/htdocs/langs/is_IS/projects.lang index c7785cf88a8..ee5af4c6a48 100644 --- a/htdocs/langs/is_IS/projects.lang +++ b/htdocs/langs/is_IS/projects.lang @@ -8,8 +8,10 @@ SharedProject=Allir PrivateProject=Tengiliðir verkefnisins MyProjectsDesc=Þessi skoðun er takmörkuð við verkefni sem þú ert að hafa samband við (hvað sem er gerð). ProjectsPublicDesc=Þetta sýnir öll verkefni sem þú ert að fá að lesa. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Þetta sýnir öll verkefni (notandi heimildir veita þér leyfi til að skoða allt). MyTasksDesc=Þessi skoðun er takmörkuð við verkefni eða verkefni sem þú ert að hafa samband við (hvað sem er gerð). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Þetta sýnir öll verkefni og verkefni sem þú ert að fá að lesa. TasksDesc=Þetta sýnir öll verkefni og verkefni (notandi heimildir veita þér leyfi til að skoða allt). ProjectsArea=Verkefni area @@ -29,6 +31,8 @@ NoProject=Engin verkefni skilgreind eða í eigu NbOpenTasks=ATH að opna verkefni NbOfProjects=ATH verkefna TimeSpent=Tíma sem fer +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Tími RefTask=Tilv. verkefni LabelTask=Merki verkefni @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Listi yfir pantanir birgis í tengslum við ListSupplierInvoicesAssociatedProject=Listi yfir reikninga birgis í tengslum við verkefnið ListContractAssociatedProject=Listi yfir samninga í tengslum við verkefnið ListFichinterAssociatedProject=Listi yfir inngrip í tengslum við verkefnið -ListTripAssociatedProject=Listi ferða og kostnaði í tengslum við verkefnið +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Listi yfir aðgerðir í tengslum við verkefnið ActivityOnProjectThisWeek=Afþreying á verkefni í þessari viku ActivityOnProjectThisMonth=Afþreying á verkefni í þessum mánuði @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/is_IS/salaries.lang b/htdocs/langs/is_IS/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/is_IS/salaries.lang +++ b/htdocs/langs/is_IS/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/is_IS/sendings.lang b/htdocs/langs/is_IS/sendings.lang index 97e0553dc1d..0e2e1d76be7 100644 --- a/htdocs/langs/is_IS/sendings.lang +++ b/htdocs/langs/is_IS/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Magn röð QtyShipped=Magn flutt QtyToShip=Magn til skip QtyReceived=Magn móttekin -KeepToShip=Halda til skip +KeepToShip=Remain to ship OtherSendingsForSameOrder=Aðrar sendingar fyrir þessari röð DateSending=Date senda til DateSendingShort=Date senda til diff --git a/htdocs/langs/is_IS/stocks.lang b/htdocs/langs/is_IS/stocks.lang index 15dcb039c33..66d6b14f260 100644 --- a/htdocs/langs/is_IS/stocks.lang +++ b/htdocs/langs/is_IS/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Vegið meðalverð PMPValueShort=WAP EnhancedValueOfWarehouses=Vöruhús gildi UserWarehouseAutoCreate=Búa til birgðir sjálfkrafa þegar þú býrð til notanda +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Magn send QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/is_IS/suppliers.lang b/htdocs/langs/is_IS/suppliers.lang index a5d796e6e39..6635f860563 100644 --- a/htdocs/langs/is_IS/suppliers.lang +++ b/htdocs/langs/is_IS/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Birgjar -Supplier=Birgir AddSupplier=Create a supplier SupplierRemoved=Birgir fjarri SuppliersInvoice=Birgjar Reikningar @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Birgir reikninga og greiðslur ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Samþykkja þessari röð ConfirmApproveThisOrder=Ertu viss um að þú viljir samþykkja þessari röð? -DenyingThisOrder=Afneita þessari röð +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Ertu viss um að þú viljir afneita þessari röð? ConfirmCancelThisOrder=Ertu viss um að þú viljir hætta í þessari röð? AddCustomerOrder=Búa til viðskiptavina til diff --git a/htdocs/langs/is_IS/trips.lang b/htdocs/langs/is_IS/trips.lang index 39edbd5faa3..ca49d8ad9aa 100644 --- a/htdocs/langs/is_IS/trips.lang +++ b/htdocs/langs/is_IS/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Ferðalag -Trips=Ferðir -TripsAndExpenses=Ferðir og kostnaður -TripsAndExpensesStatistics=Ferðir og kostnaður tölfræði -TripCard=Trip kort -AddTrip=Bæta ferð -ListOfTrips=Listi ferða +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Listi yfir gjöld -NewTrip=New ferð +NewTrip=New expense report CompanyVisited=Fyrirtæki / stofnun heimsótt Kilometers=Kílómetrar FeesKilometersOrAmout=Magn eða kílómetrar -DeleteTrip=Eyða ferð -ConfirmDeleteTrip=Ertu viss um að þú viljir eyða þessari ferð? -TF_OTHER=Önnur -TF_LUNCH=Hádegisverður -TF_TRIP=Ferðalag -ListTripsAndExpenses=Listi yfir ferðir og gjöld -ExpensesArea=Ferðir og gjöld area -SearchATripAndExpense=Leita ferð og kostnað +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Önnur +TF_TRANSPORTATION=Transportation +TF_LUNCH=Hádegisverður +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/it_IT/admin.lang b/htdocs/langs/it_IT/admin.lang index a16d58e6b7c..9348b460f9a 100644 --- a/htdocs/langs/it_IT/admin.lang +++ b/htdocs/langs/it_IT/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Sperimentale VersionDevelopment=Sviluppo VersionUnknown=Sconosciuta VersionRecommanded=Raccomandata +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=ID di sessione SessionSaveHandler=Handler per il salvataggio dell sessioni SessionSavePath=Percorso per il salvataggio delle sessioni @@ -493,10 +498,16 @@ Module600Name=Notifiche Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Donazioni Module700Desc=Gestione donazioni +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Integrazione Mantis Module1400Name=Contabilità avanzata Module1400Desc=Gestione contabilità per esperti (partita doppia) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Categorie Module1780Desc=Gestione Categorie (prodotti, fornitori e clienti) Module2000Name=FCKeditor @@ -631,7 +642,7 @@ Permission181=Vedere ordini fornitore Permission182=Creare / modificare ordini fornitore Permission183=Validare ordini fornitore Permission184=Approvare ordini fornitore -Permission185=Ordinare ordini fornitore +Permission185=Order or cancel supplier orders Permission186=Ricevere ordini fornitore Permission187=Chiudere fornitore ordini Permission188=Annullare ordini fornitore @@ -711,6 +722,13 @@ Permission538=Esportare servizi Permission701=Vedere donazioni Permission702=Creare/modificare donazioni Permission703=Eliminare donazioni +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Vedere magazzino Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Password per utilizzare il server proxy DefineHereComplementaryAttributes=Definire qui tutti gli attributi non predefiniti che vuoi supportati da %s. ExtraFields=Campi extra ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Attributi complementari (terze parti) ExtraFieldsContacts=Attributi Complementari (contatti/indirizzi) ExtraFieldsMember=Attributi Complementari (membri) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Una linea di prodotto/servizio con un importo pari a 0 FreeLegalTextOnProposal=Testo libero sulle proposte commerciali WatermarkOnDraftProposal=Bozze dei preventivi filigranate (nessuna filigrana se vuoto) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Configurazione della gestione ordini OrdersNumberingModules=Modelli di numerazione degli ordini @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Codice a barre di tipo UPC BarcodeDescISBN=Codice a barre di tipo ISBN BarcodeDescC39=Codice a barre di tipo C39 BarcodeDescC128=Codice a barre di tipo C128 -GenbarcodeLocation=Programma a riga di comando per generare i codici a barre (utilizzato dal modulo phpbarcode per alcuni tipi di codici a barre) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Motore interno BarCodeNumberManager=Manager per auto-definizione dei numeri barcode ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Conto bancario da utilizzare per pagamenti in contanti CashDeskBankAccountForCheque= Conto bancario da utilizzare per pagamenti con assegno CashDeskBankAccountForCB= Conto bancario da utilizzare per pagamenti con carta di credito -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Impostazioni modulo segnalibri @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Formato TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/it_IT/banks.lang b/htdocs/langs/it_IT/banks.lang index 43f61a91c1b..b83707e59df 100644 --- a/htdocs/langs/it_IT/banks.lang +++ b/htdocs/langs/it_IT/banks.lang @@ -33,7 +33,11 @@ AllTime=Dall'inizio Reconciliation=Riconciliazione RIB=Coordinate bancarie IBAN=Codice IBAN +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=Codice BIC (Swift) +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Mandati di incasso StandingOrder=Mandato di incasso Withdrawals=Prelievi @@ -148,7 +152,7 @@ BackToAccount=Torna al conto ShowAllAccounts=Mostra per tutti gli account FutureTransaction=Transazione futura. Non è possibile conciliare. SelectChequeTransactionAndGenerate=Seleziona gli assegni dar includere nella ricevuta di versamento e clicca su "Crea". -InputReceiptNumber=Scegli la transazione collegata alla conciliazione. Usa un valore numerico ordinabile (per esempio, AAAAMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Infine, specificare una categoria in cui classificare i record ToConciliate=Da conciliare? ThenCheckLinesAndConciliate=Controlla tutte le informazioni prima di cliccare diff --git a/htdocs/langs/it_IT/commercial.lang b/htdocs/langs/it_IT/commercial.lang index a4d5cad6499..3478754d9dd 100644 --- a/htdocs/langs/it_IT/commercial.lang +++ b/htdocs/langs/it_IT/commercial.lang @@ -9,9 +9,9 @@ Prospect=Cliente potenziale Prospects=Clienti potenziali DeleteAction=Elimina un'azione/compito NewAction=Nuova azione/compito -AddAction=Aggiungi azione/compito -AddAnAction=Aggiungi un'azione/compito -AddActionRendezVous=Aggiungi un appuntamento +AddAction=Crea evento/attività +AddAnAction=Crea un evento/attività +AddActionRendezVous=Crea un appuntamento Rendez-Vous=Appuntantamenti ConfirmDeleteAction=Vuoi davvero eliminare questa azione? CardAction=Scheda Azione/compito @@ -44,8 +44,8 @@ DoneActions=Azioni fatte DoneActionsFor=Azioni fatte per %s ToDoActions=Azioni da fare ToDoActionsFor=Azioni da fare per %s -SendPropalRef=Invia preventivo %s -SendOrderRef=Invia per %s +SendPropalRef=Invio di proposta commerciale %s +SendOrderRef=Invio di ordine %s StatusNotApplicable=Non applicabile StatusActionToDo=Da fare StatusActionDone=Fatto @@ -62,7 +62,7 @@ LastProspectContactDone=Ultimo contatto effettuato DateActionPlanned=Data prevista per l'azione DateActionDone=Data compimento azione ActionAskedBy=Azione richiesta da -ActionAffectedTo=Azione riguardante +ActionAffectedTo=Event assigned to ActionDoneBy=Azione da fare ActionUserAsk=Riferita da ErrorStatusCantBeZeroIfStarted=Se il campo "fatto in Data" contiene qualcosa e l'azione è stata avviata (o finita), il campo "Stato" non può essere 0%%. diff --git a/htdocs/langs/it_IT/contracts.lang b/htdocs/langs/it_IT/contracts.lang index 30637765163..64ae0e1cbea 100644 --- a/htdocs/langs/it_IT/contracts.lang +++ b/htdocs/langs/it_IT/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Scaduto ServiceStatusClosed=Chiuso ServicesLegend=Legenda servizi Contracts=Contratti +ContractsAndLine=Contracts and line of contracts Contract=Contratto NoContracts=Nessun contratto MenuServices=Servizi diff --git a/htdocs/langs/it_IT/cron.lang b/htdocs/langs/it_IT/cron.lang index 073c9dabf7c..edb0ea5183b 100644 --- a/htdocs/langs/it_IT/cron.lang +++ b/htdocs/langs/it_IT/cron.lang @@ -84,3 +84,4 @@ CronType_command=Comando da shell CronMenu=Cron CronCannotLoadClass=Non posso caricare la classe %s o l'oggetto %s UseMenuModuleToolsToAddCronJobs=Andare nel menu "Home - Modules tools - Job list" per vedere e modificare le azioni pianificate. +TaskDisabled=Task disabled diff --git a/htdocs/langs/it_IT/errors.lang b/htdocs/langs/it_IT/errors.lang index 9fac6970fe5..69de1916c4b 100644 --- a/htdocs/langs/it_IT/errors.lang +++ b/htdocs/langs/it_IT/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=I conti bancari di origine e destinazione devono ErrorBadThirdPartyName=Valore non valido per il nome del soggetto terzo ErrorProdIdIsMandatory=%s obbligatorio ErrorBadCustomerCodeSyntax=Sintassi del codice cliente errata -ErrorBadBarCodeSyntax=Sintassi del barcode errata +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Il codice cliente è obbligatorio ErrorBarCodeRequired=Barcode richiesto ErrorCustomerCodeAlreadyUsed=Codice cliente già utilizzato @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Per questa funzionalità Javascript deve essere att ErrorPasswordsMustMatch=Le due password digitate devono essere identiche ErrorContactEMail=Si è verificato un errore tecnico. Si prega di contattare l'amministratore all'indirizzo %s %s indicando il codice di errore nel messaggio, o, meglio ancora, allegando uno screenshot della schermata attuale. ErrorWrongValueForField=Valore errato nel campo numero %s (il valore '%s'non corrisponde alla regex %s) -ErrorFieldValueNotIn=Valore errato nel campo numero %s(il valore %s non è un valore disponibile nel campo%s campo della tabella %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Valore errato nel campo numero %s (il valore %snon è un riferimento %s esistente) ErrorsOnXLines=Errori in %s righe del sorgente ErrorFileIsInfectedWithAVirus=Il programma antivirus non è stato in grado di convalidare il file (il file potrebbe essere infetto) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=I parametri di configurazione obbligatori non sono ancora stati definiti diff --git a/htdocs/langs/it_IT/install.lang b/htdocs/langs/it_IT/install.lang index 81b627f39fb..39341881654 100644 --- a/htdocs/langs/it_IT/install.lang +++ b/htdocs/langs/it_IT/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Ultimo passo: Indicare qui login e password che si ActivateModule=Attiva modulo %s ShowEditTechnicalParameters=Clicca qui per mostrare/modificare i parametri avanzati (modalità esperti) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/it_IT/main.lang b/htdocs/langs/it_IT/main.lang index 12bcfd808db..a545e5a156d 100644 --- a/htdocs/langs/it_IT/main.lang +++ b/htdocs/langs/it_IT/main.lang @@ -141,6 +141,7 @@ Cancel=Annulla Modify=Modifica Edit=Modifica Validate=Convalida +ValidateAndApprove=Validate and Approve ToValidate=Convalidare Save=Salva SaveAs=Salva con nome @@ -158,6 +159,7 @@ Search=Ricerca SearchOf=Cerca Valid=Convalida Approve=Approva +Disapprove=Disapprove ReOpen=Riapri Upload=Invia file ToLink=Link @@ -219,6 +221,7 @@ Cards=Schede Card=Scheda Now=Adesso Date=Data +DateAndHour=Date and hour DateStart=Data inizio DateEnd=Data fine DateCreation=Data di creazione @@ -295,6 +298,7 @@ UnitPriceHT=Prezzo unitario (netto) UnitPriceTTC=Prezzo unitario (lordo) PriceU=P.U. PriceUHT=P.U.(netto) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=P.U.(lordo) Amount=Importo AmountInvoice=Importo della fattura @@ -521,6 +525,7 @@ DateFromTo=Da %s a %s DateFrom=Da %s DateUntil=Fino a %s Check=Controllo +Uncheck=Uncheck Internal=Interno External=Esterno Internals=Interni @@ -688,6 +693,7 @@ PublicUrl=URL pubblico AddBox=Aggiungi box SelectElementAndClickRefresh=Seleziona un elemento e clicca Aggiorna PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Lunedì Tuesday=Martedì diff --git a/htdocs/langs/it_IT/orders.lang b/htdocs/langs/it_IT/orders.lang index a6992dd91b4..7206efd62c2 100644 --- a/htdocs/langs/it_IT/orders.lang +++ b/htdocs/langs/it_IT/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Annullato StatusOrderDraft=Bozza (deve essere convalidata) StatusOrderValidated=Convalidato StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Lavorato StatusOrderToBill=Spedito StatusOrderToBill2=Da fatturare @@ -58,6 +59,7 @@ MenuOrdersToBill=Ordini spediti MenuOrdersToBill2=Ordini fatturabili SearchOrder=Ricerca ordine SearchACustomerOrder=Cerca un ordine cliente +SearchASupplierOrder=Search a supplier order ShipProduct=Spedisci prodotto Discount=Sconto CreateOrder=Crea ordine diff --git a/htdocs/langs/it_IT/other.lang b/htdocs/langs/it_IT/other.lang index 156441b3cd8..ef337e3c36c 100644 --- a/htdocs/langs/it_IT/other.lang +++ b/htdocs/langs/it_IT/other.lang @@ -54,12 +54,13 @@ MaxSize=La dimensione massima è AttachANewFile=Allega un nuovo file/documento LinkedObject=Oggetto collegato Miscellaneous=Varie -NbOfActiveNotifications=Numero di notifiche attive +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Questa è una mail di prova. \\NLe due linee sono separate da un a capo. PredefinedMailTestHtml=Questa è una mail di test (la parola test deve risultare in grassetto).
Le due linee sono separate da un a capo. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nGentile Cliente,\nin allegato trova la nostra fattura numero __FACREF__\n\n__PERSONALIZED__Cordiali saluti\n\nIl presente invio SOSTITUISCE INTEGRALMENTE quello effettuato in modo tradizionale a mezzo servizio postale.\n\nTale operazione è ammessa dalla normativa fiscale in essere, relativa alla "Trasmissione delle Fatture" per via Telematica:\nR.M. n. 571134 del 19/07/88 - (posta elettronica);\nR.M. n. 450217 del 30/07/90 - (procedure informatizzate);R.M. n. 107 del 04/07/01 - (trasmissione atture);\nR.M. n. 202/E del 04/12/01 - (archiviazione fatture).\nRisoluzioni che forniscono chiarimenti in ordine alle condizioni necessarie per l'ammissibilità ai sensi dell'art. 21 D.P.R. 26/10/72, n.633, della procedura di trasmissione e memorizzazione delle fatture mediante sistemi combinati fondati sull'impiego congiunto di supporti informatici, telefax\ne posta elettronica.\n\n È necessario GENERARNE UNA STAMPA e procedere alla relativa archiviazione come da prassi a norma di legge.\n\nRimaniamo a completa disposizione per qualsiasi informazione.\n\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__ \nVorremmo portare alla Vostra attenzione che la fattura __FACREF__ sembra non essere stata saldata. La fattura è allegata alla presente, come promemoria.\n\n__PERSONALIZED__Cordiali Saluti\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nAlleghiamo la proposta commerciale __PROPREF__ \n\n__PERSONALIZED__ Cordiali Saluti\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nAlleghiamo l'ordine __ORDERREF__\n\n__PERSONALIZED__ Cordiali Saluti\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nAlleghiamo il nostro ordine __ORDERREF__\n\n__PERSONALIZED__Cordiali Saluti\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nGentile Cliente,\nin allegato trova la nostra fattura __FACREF__\n\n__PERSONALIZED__Cordiali Saluti\n\nIl presente invio SOSTITUISCE INTEGRALMENTE quello effettuato in modo tradizionale a mezzo servizio postale.\n\nTale operazione è ammessa dalla normativa fiscale in essere, relativa alla "Trasmissione delle Fatture" per via Telematica:\nR.M. n. 571134 del 19/07/88 - (posta elettronica);\nR.M. n. 450217 del 30/07/90 - (procedure informatizzate);R.M. n. 107 del 04/07/01 - (trasmissione atture);\nR.M. n. 202/E del 04/12/01 - (archiviazione fatture).\nRisoluzioni che forniscono chiarimenti in ordine alle condizioni necessarie per l'ammissibilità ai sensi dell'art. 21 D.P.R. 26/10/72, n.633, della procedura di trasmissione e memorizzazione delle fatture mediante sistemi combinati fondati sull'impiego congiunto di supporti informatici, telefax\ne posta elettronica.\n\n È necessario GENERARNE UNA STAMPA e procedere alla relativa archiviazione come da prassi a norma di legge.\n\nRimaniamo a completa disposizione per qualsiasi informazione.\n\n__SIGNATURE__ diff --git a/htdocs/langs/it_IT/productbatch.lang b/htdocs/langs/it_IT/productbatch.lang index a95f07e2f87..147b856f35d 100644 --- a/htdocs/langs/it_IT/productbatch.lang +++ b/htdocs/langs/it_IT/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/it_IT/products.lang b/htdocs/langs/it_IT/products.lang index 25ad81ab3b9..6bb5e68614e 100644 --- a/htdocs/langs/it_IT/products.lang +++ b/htdocs/langs/it_IT/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/it_IT/projects.lang b/htdocs/langs/it_IT/projects.lang index d387d08f9ca..ce4d893f0fd 100644 --- a/htdocs/langs/it_IT/projects.lang +++ b/htdocs/langs/it_IT/projects.lang @@ -8,8 +8,10 @@ SharedProject=Progetto condiviso PrivateProject=Contatti del progetto MyProjectsDesc=Questa visualizzazione mostra solo i progetti in cui sei indicato come contatto (di qualsiasi tipo). ProjectsPublicDesc=Questa visualizzazione mostra tutti i progetti che sei autorizzato a vedere. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Questa visualizzazione mostra tutti i progetti (hai i privilegi per vedere tutto). MyTasksDesc=Questa visualizzazione mostra solo i progetti o i compiti in cui sei indicati come contatto (di qualsiasi tipo). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). 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). ProjectsArea=Area progetti @@ -29,6 +31,8 @@ NoProject=Nessun progetto definito o assegnato NbOpenTasks=Num. di compiti aperti NbOfProjects=Num. di progetti TimeSpent=Tempo lavorato +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Tempo lavorato RefTask=Rif. compito LabelTask=Etichetta compito @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Elenco degli ordini fornitori associati al p ListSupplierInvoicesAssociatedProject=Elenco delle fatture passive associate al progetto ListContractAssociatedProject=Elenco dei contratti associati al progetto ListFichinterAssociatedProject=Elenco degli interventi associati al progetto -ListTripAssociatedProject=Elenco dei viaggi e delle spese associate al progetto +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Elenco delle azioni associate al progetto ActivityOnProjectThisWeek=Operatività sul progetto questa settimana ActivityOnProjectThisMonth=Operatività sul progetto questo mese @@ -133,3 +137,6 @@ SearchAProject=Cerca un progetto ProjectMustBeValidatedFirst=I progetti devono prima essere validati ProjectDraft=Progetti bozza FirstAddRessourceToAllocateTime=Associa una risorsa per allocare il tempo +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/it_IT/salaries.lang b/htdocs/langs/it_IT/salaries.lang index 01e019c5a0b..fcd094e4682 100644 --- a/htdocs/langs/it_IT/salaries.lang +++ b/htdocs/langs/it_IT/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Codice di contabilità per i pagamenti dei salari +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Codice di contabilità per oneri finanziari Salary=Stipendio Salaries=Stipendi Employee=Dipendente @@ -6,3 +8,6 @@ NewSalaryPayment=Nuovo pagamento stipendio SalaryPayment=Pagamento stipendio SalariesPayments=Pagamento stipendi ShowSalaryPayment=Mostra i pagamenti stipendio +THM=Prezzo medio orario +TJM=Prezzo medio giornaliero +CurrentSalary=Current salary diff --git a/htdocs/langs/it_IT/sendings.lang b/htdocs/langs/it_IT/sendings.lang index f309ede2aad..b4a29ef16c4 100644 --- a/htdocs/langs/it_IT/sendings.lang +++ b/htdocs/langs/it_IT/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Quantità ordinata QtyShipped=Quantità spedita QtyToShip=Quantità da spedire QtyReceived=Quantità ricevuta -KeepToShip=Ancora da spedire +KeepToShip=Remain to ship OtherSendingsForSameOrder=Altre Spedizioni per questo ordine DateSending=Data spedizione DateSendingShort=Data di invio diff --git a/htdocs/langs/it_IT/stocks.lang b/htdocs/langs/it_IT/stocks.lang index 0766d101bee..51c52f31d8e 100644 --- a/htdocs/langs/it_IT/stocks.lang +++ b/htdocs/langs/it_IT/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Media ponderata prezzi PMPValueShort=MPP EnhancedValueOfWarehouses=Incremento valore dei magazzini UserWarehouseAutoCreate=Creare automaticamente un magazzino alla creazione di un utente +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Quantità spedita QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=Il magazzino %s sarà usato per la diminuzione WarehouseForStockIncrease=Il magazzino %s sarà usato per l'aumento delle scorte ForThisWarehouse=Per questo magazzino ReplenishmentStatusDesc=Questa è una lista di tutti i prodotti con una giacenza inferiore a quella desiderata (o inferiore a quella del valore di allarme se la casella "solo allarmi" è spuntata) -ReplenishmentOrdersDesc=Questa è una lista di tutti gli ordini di acquisto aperti +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. 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) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/it_IT/suppliers.lang b/htdocs/langs/it_IT/suppliers.lang index e9e64c3e9ab..9d21cef1c12 100644 --- a/htdocs/langs/it_IT/suppliers.lang +++ b/htdocs/langs/it_IT/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Fornitori -Supplier=Fornitore AddSupplier=Crea un fornitore SupplierRemoved=Fornitore rimosso SuppliersInvoice=Fattura Fornitore @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Fatture fornitore e pagamenti ExportDataset_fournisseur_3=Ordini fornitore e righe degli ordini ApproveThisOrder=Approva l'ordine ConfirmApproveThisOrder=Vuoi davvero approvare l'ordine? -DenyingThisOrder=Rifiuta l'ordine +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Vuoi davvero rifiutare l'ordine? ConfirmCancelThisOrder=Vuoi davvero annullare l'ordine? AddCustomerOrder=Crea ordine cliente diff --git a/htdocs/langs/it_IT/trips.lang b/htdocs/langs/it_IT/trips.lang index 413dcf89c4c..bc73c8119be 100644 --- a/htdocs/langs/it_IT/trips.lang +++ b/htdocs/langs/it_IT/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Viaggio -Trips=Viaggi -TripsAndExpenses=Viaggi e spese -TripsAndExpensesStatistics=Statistiche viaggi e spese -TripCard=Scheda viaggio -AddTrip=Aggiungi viaggio -ListOfTrips=Elenco dei viaggi +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Elenco delle tariffe -NewTrip=Nuovo viaggio +NewTrip=New expense report CompanyVisited=Società/Fondazione visitata Kilometers=Kilometri FeesKilometersOrAmout=Tariffa kilometrica o importo -DeleteTrip=Elimina viaggio -ConfirmDeleteTrip=Sei sicuro di voler eliminare questo viaggio? +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report +ClassifyRefunded=Classifica come "Rimborsata" +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line TF_OTHER=Altro +TF_TRANSPORTATION=Transportation TF_LUNCH=Pranzo -TF_TRIP=Viaggio -ListTripsAndExpenses=Elenco dei viaggi e delle spese -ExpensesArea=Area viaggi e spese -SearchATripAndExpense=Cerca viaggi e spese -ClassifyRefunded=Classify 'Refunded' +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/ja_JP/admin.lang b/htdocs/langs/ja_JP/admin.lang index 3785571b48b..bac8eb6dbcf 100644 --- a/htdocs/langs/ja_JP/admin.lang +++ b/htdocs/langs/ja_JP/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=実験的 VersionDevelopment=開発 VersionUnknown=未知の VersionRecommanded=推奨される +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=セッションID SessionSaveHandler=セッションを保存するためのハンドラ SessionSavePath=ストレージ·セッションのローカライズ @@ -493,10 +498,16 @@ Module600Name=通知 Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=寄付 Module700Desc=寄付金の管理 +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=カマキリ Module1200Desc=カマキリの統合 Module1400Name=会計 Module1400Desc=会計管理(二者) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=カテゴリー Module1780Desc=Categorieの管理(製品、サプライヤー、顧客) Module2000Name=WYSIWYGエディタ @@ -631,7 +642,7 @@ Permission181=サプライヤーの受注を読む Permission182=作成/変更サプライヤーの受注 Permission183=サプライヤーの受注を検証する Permission184=サプライヤの注文を承認する -Permission185=注文サプライヤーの受注 +Permission185=Order or cancel supplier orders Permission186=サプライヤの注文を受ける Permission187=閉じるサプライヤーの受注 Permission188=サプライヤの注文を取り消す @@ -711,6 +722,13 @@ Permission538=輸出サービス Permission701=寄付を読む Permission702=寄付を作成/変更 Permission703=寄付を削除します。 +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=株式を読む Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=プロキシサーバーを使用するためのパスワード DefineHereComplementaryAttributes=デフォルトでは既に利用できない、ここですべての属性を定義して、あなたは%sのためにサポートさせたい。 ExtraFields=補完的な属性 ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=ゼロ量と製品/サービスのラインは、オ FreeLegalTextOnProposal=商業的な提案でフリーテキスト WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=注文の管理セットアップ OrdersNumberingModules=モジュールの番号受注 @@ -1383,7 +1410,7 @@ BarcodeDescUPC=タイプUPCのバーコード BarcodeDescISBN=型商品のバーコード BarcodeDescC39=タイプC39のバーコード BarcodeDescC128=タイプC128のバーコード -GenbarcodeLocation=バーコードを生成するコマンドラインツール(一部のバーコードタイプのphpbarcodeエンジンで使用されます) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=現金支払いを受け取るために使用するデフォルトのアカウント CashDeskBankAccountForCheque= 小切手による支払いを受け取るために使用するデフォルトのアカウント CashDeskBankAccountForCB= クレジットカードでの現金支払いを受け取るために使用するデフォルトのアカウント -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=モジュールのセットアップをブックマーク @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/ja_JP/banks.lang b/htdocs/langs/ja_JP/banks.lang index 23051984ea3..415d74642e7 100644 --- a/htdocs/langs/ja_JP/banks.lang +++ b/htdocs/langs/ja_JP/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=和解 RIB=銀行の口座番号 IBAN=IBAN番号 +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC / SWIFT番号 +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=立ち受注 StandingOrder=立ち順 Withdrawals=引出し @@ -148,7 +152,7 @@ BackToAccount=戻るアカウントへ ShowAllAccounts=すべてのアカウントに表示 FutureTransaction=フューチャーのトランザクション。調停する方法はありません。 SelectChequeTransactionAndGenerate=チェックの預金証書に含まれると、"作成"をクリックしてチェックをフィルタリング/選択してください。 -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/ja_JP/commercial.lang b/htdocs/langs/ja_JP/commercial.lang index babd7265f5f..6953d91769a 100644 --- a/htdocs/langs/ja_JP/commercial.lang +++ b/htdocs/langs/ja_JP/commercial.lang @@ -9,9 +9,9 @@ Prospect=見通し Prospects=見込み DeleteAction=イベント/タスクを削除します。 NewAction=新しいイベント/タスク -AddAction=イベント/タスクを追加する -AddAnAction=イベント/タスクを追加する -AddActionRendezVous=ランデヴーイベントを追加 +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=ランデブー ConfirmDeleteAction=このイベント/タスクを削除してもよろしいですか? CardAction=イベントカード @@ -44,8 +44,8 @@ DoneActions=完了イベント DoneActionsFor=%sの完成イベント ToDoActions=不完全なイベント ToDoActionsFor=%s不完全なイベント -SendPropalRef=商業提案%sを送る -SendOrderRef=オーダーの%sを送る +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=適用されない StatusActionToDo=実行する StatusActionDone=完了する @@ -62,7 +62,7 @@ LastProspectContactDone=行わ連絡 DateActionPlanned=日付イベントがために計画 DateActionDone=日付イベントが行われ ActionAskedBy=によって報告されたイベント -ActionAffectedTo=イベントに影響を受けた +ActionAffectedTo=Event assigned to ActionDoneBy=することにより、イベントを行って ActionUserAsk=によって報告された ErrorStatusCantBeZeroIfStarted=フィールド" 日付が行わ ' 入力されている場合は、アクションが(または終了)が開始されているので、フィールドのステータスが " 0%%にすることはできません。 diff --git a/htdocs/langs/ja_JP/contracts.lang b/htdocs/langs/ja_JP/contracts.lang index 3f44104d7fb..db028796696 100644 --- a/htdocs/langs/ja_JP/contracts.lang +++ b/htdocs/langs/ja_JP/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=期限切れの ServiceStatusClosed=閉じ ServicesLegend=サービス伝説 Contracts=契約 +ContractsAndLine=Contracts and line of contracts Contract=契約 NoContracts=いいえ契約なし MenuServices=サービス diff --git a/htdocs/langs/ja_JP/cron.lang b/htdocs/langs/ja_JP/cron.lang index f2f35b1838c..d10cb4a8784 100644 --- a/htdocs/langs/ja_JP/cron.lang +++ b/htdocs/langs/ja_JP/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/ja_JP/errors.lang b/htdocs/langs/ja_JP/errors.lang index a7b905a2127..852bc364ace 100644 --- a/htdocs/langs/ja_JP/errors.lang +++ b/htdocs/langs/ja_JP/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=ソースとターゲットの銀行口座は異 ErrorBadThirdPartyName=サードパーティの名前の値が正しくありません ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=顧客コードの不正な構文 -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=顧客コードが必要です ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=顧客コードは既に使用され @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascriptがこの機能が動作しているた ErrorPasswordsMustMatch=両方入力したパスワードは、互いに一致している必要があります ErrorContactEMail=技術的なエラーが発生しました。 、次の電子メール%sに管理者に連絡してenはエラーコードメッセージで%s、またはこのページの画面コピーを追加することにより、さらに優れたを提供してください。 ErrorWrongValueForField=フィールド番号%sの間違った値(値'%s'は正規表現のルール%s一致ません) -ErrorFieldValueNotIn=フィールド番号%sの間違った値(値'%s'は、テーブルの%sのフィールド%sに使用可能な値ではありません) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=フィールド番号%sのために間違った値(値"%s"は%s既存のREFではありません) ErrorsOnXLines=%sソース行のエラー ErrorFileIsInfectedWithAVirus=ウイルス対策プログラムがファイルを検証することができませんでした(ファイルがウイルスに感染されるかもしれません) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/ja_JP/install.lang b/htdocs/langs/ja_JP/install.lang index 2038751025f..8a75022f2a5 100644 --- a/htdocs/langs/ja_JP/install.lang +++ b/htdocs/langs/ja_JP/install.lang @@ -156,6 +156,7 @@ LastStepDesc=最後のステップ :ここにあなたがソ ActivateModule=モジュール%sをアクティブにする ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/ja_JP/main.lang b/htdocs/langs/ja_JP/main.lang index a5ce0161b53..66fd5efdecf 100644 --- a/htdocs/langs/ja_JP/main.lang +++ b/htdocs/langs/ja_JP/main.lang @@ -141,6 +141,7 @@ Cancel=キャンセル Modify=修正する Edit=編集 Validate=検証 +ValidateAndApprove=Validate and Approve ToValidate=検証するには Save=保存 SaveAs=名前を付けて保存 @@ -158,6 +159,7 @@ Search=検索 SearchOf=検索 Valid=有効な Approve=承認する +Disapprove=Disapprove ReOpen=再オープン Upload=ファイルを送信する ToLink=Link @@ -219,6 +221,7 @@ Cards=カード Card=カード Now=現在 Date=日付 +DateAndHour=Date and hour DateStart=開始日 DateEnd=日付の末尾 DateCreation=作成日 @@ -295,6 +298,7 @@ UnitPriceHT=単価(純額) UnitPriceTTC=単価 PriceU=UP PriceUHT=UP(純額) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=UP Amount=量 AmountInvoice=請求額 @@ -521,6 +525,7 @@ DateFromTo=%sから%sへ DateFrom=%sから DateUntil=%sまで Check=チェック +Uncheck=Uncheck Internal=内部 External=外部 Internals=内部 @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=月曜日 Tuesday=火曜日 diff --git a/htdocs/langs/ja_JP/orders.lang b/htdocs/langs/ja_JP/orders.lang index 786cc3c40cf..f0267668aed 100644 --- a/htdocs/langs/ja_JP/orders.lang +++ b/htdocs/langs/ja_JP/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=キャンセル StatusOrderDraft=ドラフト(検証する必要があります) StatusOrderValidated=検証 StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=処理 StatusOrderToBill=請求する StatusOrderToBill2=請求する @@ -58,6 +59,7 @@ MenuOrdersToBill=法案に注文 MenuOrdersToBill2=Billable orders SearchOrder=検索順序 SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=船積 Discount=割引 CreateOrder=順序を作成します。 diff --git a/htdocs/langs/ja_JP/other.lang b/htdocs/langs/ja_JP/other.lang index 9461761ac71..fe4bdc9e962 100644 --- a/htdocs/langs/ja_JP/other.lang +++ b/htdocs/langs/ja_JP/other.lang @@ -54,12 +54,13 @@ MaxSize=最大サイズ AttachANewFile=新しいファイル/文書を添付する LinkedObject=リンクされたオブジェクト Miscellaneous=その他 -NbOfActiveNotifications=通知の数 +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=これはテストメールです。\\ nこの2行は、キャリッジリターンで区切られています。 PredefinedMailTestHtml=これはテストメール(ワードテストでは、太字でなければなりません)です。
の2行は、キャリッジリターンで区切られています。 PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/ja_JP/productbatch.lang b/htdocs/langs/ja_JP/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/ja_JP/productbatch.lang +++ b/htdocs/langs/ja_JP/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/ja_JP/products.lang b/htdocs/langs/ja_JP/products.lang index 84f960b8c86..cadaad87d96 100644 --- a/htdocs/langs/ja_JP/products.lang +++ b/htdocs/langs/ja_JP/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/ja_JP/projects.lang b/htdocs/langs/ja_JP/projects.lang index 42c4317dc59..0011d0ab801 100644 --- a/htdocs/langs/ja_JP/projects.lang +++ b/htdocs/langs/ja_JP/projects.lang @@ -8,8 +8,10 @@ SharedProject=皆 PrivateProject=プロジェクトの連絡先 MyProjectsDesc=このビューは、(型が何であれ)の連絡先であるプロジェクトに限定されています。 ProjectsPublicDesc=このビューには、読み取りを許可されているすべてのプロジェクトを紹介します。 +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=このビューはすべてのプロジェクトを(あなたのユーザー権限はあなたに全てを表示する権限を付与)を提示します。 MyTasksDesc=このビューは、連絡先の(種類は何でも)がプロジェクトやタスクに制限されています。 +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=このビューには、読み取りを許可されているすべてのプロジェクトやタスクを示します。 TasksDesc=このビューは、すべてのプロジェクトとタスク(あなたのユーザー権限はあなたに全てを表示する権限を付与)を提示します。 ProjectsArea=プロジェクトエリア @@ -29,6 +31,8 @@ NoProject=はプロジェクトが定義されていませんまたは所有し NbOpenTasks=開かれたタスクのNb NbOfProjects=プロジェクトのNb TimeSpent=に費や​​された時間は +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=に費や​​された時間は RefTask=REF。タスク LabelTask=ラベルタスク @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=プロジェクトに関連付けられて ListSupplierInvoicesAssociatedProject=プロジェクトに関連付けられている仕入先の請求書の一覧 ListContractAssociatedProject=プロジェクトに関連付けられている契約のリスト ListFichinterAssociatedProject=プロジェクトに関連付けられている介入のリスト -ListTripAssociatedProject=プロジェクトに関連付けられている旅行および費用のリスト +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=プロジェクトに関連付けられているイベントのリスト ActivityOnProjectThisWeek=プロジェクト今週のアクティビティ ActivityOnProjectThisMonth=プロジェクトの活動今月 @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/ja_JP/salaries.lang b/htdocs/langs/ja_JP/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/ja_JP/salaries.lang +++ b/htdocs/langs/ja_JP/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/ja_JP/sendings.lang b/htdocs/langs/ja_JP/sendings.lang index d73b5069169..43ca3aaec39 100644 --- a/htdocs/langs/ja_JP/sendings.lang +++ b/htdocs/langs/ja_JP/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=数量は、注文された QtyShipped=個数出荷 QtyToShip=出荷する数量 QtyReceived=個数は、受信した -KeepToShip=出荷できるようにしておく +KeepToShip=Remain to ship OtherSendingsForSameOrder=このため、他の出荷 DateSending=オーダーを送信した日付 DateSendingShort=オーダーを送信した日付 diff --git a/htdocs/langs/ja_JP/stocks.lang b/htdocs/langs/ja_JP/stocks.lang index 3ae54c5c68b..45f66be1a15 100644 --- a/htdocs/langs/ja_JP/stocks.lang +++ b/htdocs/langs/ja_JP/stocks.lang @@ -47,6 +47,7 @@ PMPValue=加重平均価格 PMPValueShort=WAP EnhancedValueOfWarehouses=倉庫の値 UserWarehouseAutoCreate=ユーザーの作成時に自動的に倉庫を作成します。 +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=数量派遣 QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/ja_JP/suppliers.lang b/htdocs/langs/ja_JP/suppliers.lang index 7795c0f6ee7..0596adaa02c 100644 --- a/htdocs/langs/ja_JP/suppliers.lang +++ b/htdocs/langs/ja_JP/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=サプライヤー -Supplier=サプライヤー AddSupplier=Create a supplier SupplierRemoved=サプライヤーは、削除 SuppliersInvoice=仕入先の請求書 @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=サプライヤーの請求書と支払い ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=この注文を承認 ConfirmApproveThisOrder=あなたは、注文%sを承認してもよろしいですか? -DenyingThisOrder=この順序を否定 +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=あなたは、この順序%sを拒否してもよろしいですか? ConfirmCancelThisOrder=あなたは、この順序%sをキャンセルしてもよろしいですか? AddCustomerOrder=顧客の注文を作成します。 diff --git a/htdocs/langs/ja_JP/trips.lang b/htdocs/langs/ja_JP/trips.lang index e4999a7b1ec..273382c38a9 100644 --- a/htdocs/langs/ja_JP/trips.lang +++ b/htdocs/langs/ja_JP/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=旅行 -Trips=ツアー -TripsAndExpenses=旅行や経費 -TripsAndExpensesStatistics=旅行や経費の統計情報 -TripCard=旅行カード -AddTrip=旅行を追加します。 -ListOfTrips=ツアーのリスト +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=手数料のリスト -NewTrip=新しい旅行 +NewTrip=New expense report CompanyVisited=会社概要/基礎を訪問 Kilometers=キロ FeesKilometersOrAmout=量またはキロ -DeleteTrip=旅を削除します。 -ConfirmDeleteTrip=この旅を削除してもよろしいですか? -TF_OTHER=その他 -TF_LUNCH=ランチ -TF_TRIP=旅行 -ListTripsAndExpenses=旅行や費用のリスト -ExpensesArea=旅行や経費エリア -SearchATripAndExpense=旅行と費用を検索 +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=その他 +TF_TRANSPORTATION=Transportation +TF_LUNCH=ランチ +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/ka_GE/admin.lang b/htdocs/langs/ka_GE/admin.lang index 38634cbd497..9782c2ea27f 100644 --- a/htdocs/langs/ka_GE/admin.lang +++ b/htdocs/langs/ka_GE/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimental VersionDevelopment=Development VersionUnknown=Unknown VersionRecommanded=Recommended +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Session ID SessionSaveHandler=Handler to save sessions SessionSavePath=Storage session localization @@ -493,10 +498,16 @@ Module600Name=Notifications Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Donations Module700Desc=Donation management +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1400Name=Accounting Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Categories Module1780Desc=Category management (products, suppliers and customers) Module2000Name=WYSIWYG editor @@ -631,7 +642,7 @@ Permission181=Read supplier orders Permission182=Create/modify supplier orders Permission183=Validate supplier orders Permission184=Approve supplier orders -Permission185=Order supplier orders +Permission185=Order or cancel supplier orders Permission186=Receive supplier orders Permission187=Close supplier orders Permission188=Cancel supplier orders @@ -711,6 +722,13 @@ Permission538=Export services Permission701=Read donations Permission702=Create/modify donations Permission703=Delete donations +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Read stocks Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Password to use the proxy server DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s. ExtraFields=Complementary attributes ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=A line of product/service with a zero amount is consid FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Order management setup OrdersNumberingModules=Orders numbering models @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barcode of type UPC BarcodeDescISBN=Barcode of type ISBN BarcodeDescC39=Barcode of type C39 BarcodeDescC128=Barcode of type C128 -GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Default account to use to receive cash payments CashDeskBankAccountForCheque= Default account to use to receive payments by cheque CashDeskBankAccountForCB= Default account to use to receive payments by credit cards -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Bookmark module setup @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/ka_GE/banks.lang b/htdocs/langs/ka_GE/banks.lang index 10a5f5b3c14..a2306950fb4 100644 --- a/htdocs/langs/ka_GE/banks.lang +++ b/htdocs/langs/ka_GE/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Reconciliation RIB=Bank Account Number IBAN=IBAN number +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Standing orders StandingOrder=Standing order Withdrawals=Withdrawals @@ -148,7 +152,7 @@ BackToAccount=Back to account ShowAllAccounts=Show for all accounts FutureTransaction=Transaction in futur. No way to conciliate. SelectChequeTransactionAndGenerate=Select/filter checks to include into the check deposit receipt and click on "Create". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/ka_GE/commercial.lang b/htdocs/langs/ka_GE/commercial.lang index 390a7f837e8..7acdc7bd7e6 100644 --- a/htdocs/langs/ka_GE/commercial.lang +++ b/htdocs/langs/ka_GE/commercial.lang @@ -62,7 +62,7 @@ LastProspectContactDone=Contact done DateActionPlanned=Date event planned for DateActionDone=Date event done ActionAskedBy=Event reported by -ActionAffectedTo=Event owned by +ActionAffectedTo=Event assigned to ActionDoneBy=Event done by ActionUserAsk=Reported by ErrorStatusCantBeZeroIfStarted=If field 'Date done' is filled, action is started (or finished), so field 'Status' can't be 0%%. diff --git a/htdocs/langs/ka_GE/contracts.lang b/htdocs/langs/ka_GE/contracts.lang index 57ba3bb15d8..d1be0e6513f 100644 --- a/htdocs/langs/ka_GE/contracts.lang +++ b/htdocs/langs/ka_GE/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expired ServiceStatusClosed=Closed ServicesLegend=Services legend Contracts=Contracts +ContractsAndLine=Contracts and line of contracts Contract=Contract NoContracts=No contracts MenuServices=Services diff --git a/htdocs/langs/ka_GE/cron.lang b/htdocs/langs/ka_GE/cron.lang index 82f4574b223..28dfc7770b2 100644 --- a/htdocs/langs/ka_GE/cron.lang +++ b/htdocs/langs/ka_GE/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/ka_GE/errors.lang b/htdocs/langs/ka_GE/errors.lang index 497ddd814e4..700e6344d7d 100644 --- a/htdocs/langs/ka_GE/errors.lang +++ b/htdocs/langs/ka_GE/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be differen ErrorBadThirdPartyName=Bad value for third party name ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Customer code already used @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript must not be disabled to have this featur ErrorPasswordsMustMatch=Both typed passwords must match each other ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) -ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) ErrorsOnXLines=Errors on %s source record(s) ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/ka_GE/install.lang b/htdocs/langs/ka_GE/install.lang index 5a494156672..dcd8df6e7db 100644 --- a/htdocs/langs/ka_GE/install.lang +++ b/htdocs/langs/ka_GE/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Last step: Define here login and password you plan ActivateModule=Activate module %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/ka_GE/main.lang b/htdocs/langs/ka_GE/main.lang index 8996c1f6d83..d40e28cb776 100644 --- a/htdocs/langs/ka_GE/main.lang +++ b/htdocs/langs/ka_GE/main.lang @@ -141,6 +141,7 @@ Cancel=Cancel Modify=Modify Edit=Edit Validate=Validate +ValidateAndApprove=Validate and Approve ToValidate=To validate Save=Save SaveAs=Save As @@ -158,6 +159,7 @@ Search=Search SearchOf=Search Valid=Valid Approve=Approve +Disapprove=Disapprove ReOpen=Re-Open Upload=Send file ToLink=Link @@ -219,6 +221,7 @@ Cards=Cards Card=Card Now=Now Date=Date +DateAndHour=Date and hour DateStart=Date start DateEnd=Date end DateCreation=Creation date @@ -295,6 +298,7 @@ UnitPriceHT=Unit price (net) UnitPriceTTC=Unit price PriceU=U.P. PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=U.P. Amount=Amount AmountInvoice=Invoice amount @@ -521,6 +525,7 @@ DateFromTo=From %s to %s DateFrom=From %s DateUntil=Until %s Check=Check +Uncheck=Uncheck Internal=Internal External=External Internals=Internal @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/ka_GE/orders.lang b/htdocs/langs/ka_GE/orders.lang index 34792ae1eb2..8efafa5e94e 100644 --- a/htdocs/langs/ka_GE/orders.lang +++ b/htdocs/langs/ka_GE/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Canceled StatusOrderDraft=Draft (needs to be validated) StatusOrderValidated=Validated StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Processed StatusOrderToBill=Delivered StatusOrderToBill2=To bill @@ -58,6 +59,7 @@ MenuOrdersToBill=Orders delivered MenuOrdersToBill2=Billable orders SearchOrder=Search order SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Ship product Discount=Discount CreateOrder=Create Order diff --git a/htdocs/langs/ka_GE/other.lang b/htdocs/langs/ka_GE/other.lang index 88991888183..08747ea884b 100644 --- a/htdocs/langs/ka_GE/other.lang +++ b/htdocs/langs/ka_GE/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximum size AttachANewFile=Attach a new file/document LinkedObject=Linked object Miscellaneous=Miscellaneous -NbOfActiveNotifications=Number of notifications +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/ka_GE/productbatch.lang b/htdocs/langs/ka_GE/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/ka_GE/productbatch.lang +++ b/htdocs/langs/ka_GE/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/ka_GE/products.lang b/htdocs/langs/ka_GE/products.lang index 3a29639b12b..3a18cda69e7 100644 --- a/htdocs/langs/ka_GE/products.lang +++ b/htdocs/langs/ka_GE/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/ka_GE/projects.lang b/htdocs/langs/ka_GE/projects.lang index b3c150d1687..0a12f4c64b7 100644 --- a/htdocs/langs/ka_GE/projects.lang +++ b/htdocs/langs/ka_GE/projects.lang @@ -8,8 +8,10 @@ SharedProject=Everybody PrivateProject=Contacts of project MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=This view presents all projects and tasks you are allowed to read. TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). ProjectsArea=Projects area @@ -29,6 +31,8 @@ NoProject=No project defined or owned NbOpenTasks=Nb of opened tasks NbOfProjects=Nb of projects TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Time spent RefTask=Ref. task LabelTask=Label task @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=List of supplier's orders associated with th ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated with the project ListContractAssociatedProject=List of contracts associated with the project ListFichinterAssociatedProject=List of interventions associated with the project -ListTripAssociatedProject=List of trips and expenses associated with the project +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=List of events associated with the project ActivityOnProjectThisWeek=Activity on project this week ActivityOnProjectThisMonth=Activity on project this month @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/ka_GE/salaries.lang b/htdocs/langs/ka_GE/salaries.lang index 0087cbe83e6..28c21adfad3 100644 --- a/htdocs/langs/ka_GE/salaries.lang +++ b/htdocs/langs/ka_GE/salaries.lang @@ -10,3 +10,4 @@ SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment THM=Average hourly price TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/ka_GE/sendings.lang b/htdocs/langs/ka_GE/sendings.lang index 794c9019c86..b1ff55f71c1 100644 --- a/htdocs/langs/ka_GE/sendings.lang +++ b/htdocs/langs/ka_GE/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Qty ordered QtyShipped=Qty shipped QtyToShip=Qty to ship QtyReceived=Qty received -KeepToShip=Keep to ship +KeepToShip=Remain to ship OtherSendingsForSameOrder=Other shipments for this order DateSending=Date sending order DateSendingShort=Date sending order diff --git a/htdocs/langs/ka_GE/stocks.lang b/htdocs/langs/ka_GE/stocks.lang index 9de2e5a4dbe..29706d17615 100644 --- a/htdocs/langs/ka_GE/stocks.lang +++ b/htdocs/langs/ka_GE/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Weighted average price PMPValueShort=WAP EnhancedValueOfWarehouses=Warehouses value UserWarehouseAutoCreate=Create a warehouse automatically when creating a user +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Quantity dispatched QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/ka_GE/suppliers.lang b/htdocs/langs/ka_GE/suppliers.lang index 7b4d4acb244..baf573c66ac 100644 --- a/htdocs/langs/ka_GE/suppliers.lang +++ b/htdocs/langs/ka_GE/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Suppliers -Supplier=Supplier AddSupplier=Create a supplier SupplierRemoved=Supplier removed SuppliersInvoice=Suppliers invoice @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Supplier invoices and payments ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Approve this order ConfirmApproveThisOrder=Are you sure you want to approve order %s ? -DenyingThisOrder=Denying this order +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? AddCustomerOrder=Create customer order diff --git a/htdocs/langs/ka_GE/trips.lang b/htdocs/langs/ka_GE/trips.lang index ab29ec23b5f..ba36fc9b07b 100644 --- a/htdocs/langs/ka_GE/trips.lang +++ b/htdocs/langs/ka_GE/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Trip -Trips=Trips -TripsAndExpenses=Trips and expenses -TripsAndExpensesStatistics=Trips and expenses statistics -TripCard=Trip card -AddTrip=Create trip -ListOfTrips=List of trips +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=List of fees -NewTrip=New trip +NewTrip=New expense report CompanyVisited=Company/foundation visited Kilometers=Kilometers FeesKilometersOrAmout=Amount or kilometers -DeleteTrip=Delete trip -ConfirmDeleteTrip=Are you sure you want to delete this trip ? -TF_OTHER=Other -TF_LUNCH=Lunch -TF_TRIP=Trip -ListTripsAndExpenses=List of trips and expenses -ExpensesArea=Trips and expenses area -SearchATripAndExpense=Search a trip and expense +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/ko_KR/admin.lang b/htdocs/langs/ko_KR/admin.lang index a2d1447071a..af647d9f52c 100644 --- a/htdocs/langs/ko_KR/admin.lang +++ b/htdocs/langs/ko_KR/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimental VersionDevelopment=Development VersionUnknown=Unknown VersionRecommanded=Recommended +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Session ID SessionSaveHandler=Handler to save sessions SessionSavePath=Storage session localization @@ -493,10 +498,16 @@ Module600Name=Notifications Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Donations Module700Desc=Donation management +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1400Name=Accounting Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Categories Module1780Desc=Category management (products, suppliers and customers) Module2000Name=WYSIWYG editor @@ -631,7 +642,7 @@ Permission181=Read supplier orders Permission182=Create/modify supplier orders Permission183=Validate supplier orders Permission184=Approve supplier orders -Permission185=Order supplier orders +Permission185=Order or cancel supplier orders Permission186=Receive supplier orders Permission187=Close supplier orders Permission188=Cancel supplier orders @@ -711,6 +722,13 @@ Permission538=Export services Permission701=Read donations Permission702=Create/modify donations Permission703=Delete donations +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Read stocks Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Password to use the proxy server DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s. ExtraFields=Complementary attributes ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=A line of product/service with a zero amount is consid FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Order management setup OrdersNumberingModules=Orders numbering models @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barcode of type UPC BarcodeDescISBN=Barcode of type ISBN BarcodeDescC39=Barcode of type C39 BarcodeDescC128=Barcode of type C128 -GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Default account to use to receive cash payments CashDeskBankAccountForCheque= Default account to use to receive payments by cheque CashDeskBankAccountForCB= Default account to use to receive payments by credit cards -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Bookmark module setup @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/ko_KR/banks.lang b/htdocs/langs/ko_KR/banks.lang index 10a5f5b3c14..a2306950fb4 100644 --- a/htdocs/langs/ko_KR/banks.lang +++ b/htdocs/langs/ko_KR/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Reconciliation RIB=Bank Account Number IBAN=IBAN number +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Standing orders StandingOrder=Standing order Withdrawals=Withdrawals @@ -148,7 +152,7 @@ BackToAccount=Back to account ShowAllAccounts=Show for all accounts FutureTransaction=Transaction in futur. No way to conciliate. SelectChequeTransactionAndGenerate=Select/filter checks to include into the check deposit receipt and click on "Create". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/ko_KR/commercial.lang b/htdocs/langs/ko_KR/commercial.lang index e7d2de76503..7acdc7bd7e6 100644 --- a/htdocs/langs/ko_KR/commercial.lang +++ b/htdocs/langs/ko_KR/commercial.lang @@ -9,9 +9,9 @@ Prospect=Prospect Prospects=Prospects DeleteAction=Delete an event/task NewAction=New event/task -AddAction=Add event/task -AddAnAction=Add an event/task -AddActionRendezVous=Add a Rendez-vous event +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Rendezvous ConfirmDeleteAction=Are you sure you want to delete this event/task ? CardAction=Event card @@ -44,8 +44,8 @@ DoneActions=Completed events DoneActionsFor=Completed events for %s ToDoActions=Incomplete events ToDoActionsFor=Incomplete events for %s -SendPropalRef=Send commercial proposal %s -SendOrderRef=Send order %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Not applicable StatusActionToDo=To do StatusActionDone=Complete diff --git a/htdocs/langs/ko_KR/contracts.lang b/htdocs/langs/ko_KR/contracts.lang index 57ba3bb15d8..d1be0e6513f 100644 --- a/htdocs/langs/ko_KR/contracts.lang +++ b/htdocs/langs/ko_KR/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expired ServiceStatusClosed=Closed ServicesLegend=Services legend Contracts=Contracts +ContractsAndLine=Contracts and line of contracts Contract=Contract NoContracts=No contracts MenuServices=Services diff --git a/htdocs/langs/ko_KR/cron.lang b/htdocs/langs/ko_KR/cron.lang index 82f4574b223..28dfc7770b2 100644 --- a/htdocs/langs/ko_KR/cron.lang +++ b/htdocs/langs/ko_KR/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/ko_KR/errors.lang b/htdocs/langs/ko_KR/errors.lang index f374da9cf98..7c88ed9e005 100644 --- a/htdocs/langs/ko_KR/errors.lang +++ b/htdocs/langs/ko_KR/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be differen ErrorBadThirdPartyName=Bad value for third party name ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Customer code already used @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript must not be disabled to have this featur ErrorPasswordsMustMatch=Both typed passwords must match each other ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) -ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) ErrorsOnXLines=Errors on %s source record(s) ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/ko_KR/install.lang b/htdocs/langs/ko_KR/install.lang index b4ebd2a51a6..fc4daabf0e6 100644 --- a/htdocs/langs/ko_KR/install.lang +++ b/htdocs/langs/ko_KR/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Last step: Define here login and password you plan ActivateModule=Activate module %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/ko_KR/main.lang b/htdocs/langs/ko_KR/main.lang index 104a3f3ad11..de1eb65bf14 100644 --- a/htdocs/langs/ko_KR/main.lang +++ b/htdocs/langs/ko_KR/main.lang @@ -141,6 +141,7 @@ Cancel=Cancel Modify=Modify Edit=Edit Validate=Validate +ValidateAndApprove=Validate and Approve ToValidate=To validate Save=Save SaveAs=Save As @@ -158,6 +159,7 @@ Search=Search SearchOf=Search Valid=Valid Approve=Approve +Disapprove=Disapprove ReOpen=Re-Open Upload=Send file ToLink=Link @@ -219,6 +221,7 @@ Cards=Cards Card=Card Now=Now Date=Date +DateAndHour=Date and hour DateStart=Date start DateEnd=Date end DateCreation=Creation date @@ -295,6 +298,7 @@ UnitPriceHT=Unit price (net) UnitPriceTTC=Unit price PriceU=U.P. PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=U.P. Amount=Amount AmountInvoice=Invoice amount @@ -521,6 +525,7 @@ DateFromTo=From %s to %s DateFrom=From %s DateUntil=Until %s Check=Check +Uncheck=Uncheck Internal=Internal External=External Internals=Internal @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=월요일 Tuesday=화요일 diff --git a/htdocs/langs/ko_KR/orders.lang b/htdocs/langs/ko_KR/orders.lang index 34792ae1eb2..8efafa5e94e 100644 --- a/htdocs/langs/ko_KR/orders.lang +++ b/htdocs/langs/ko_KR/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Canceled StatusOrderDraft=Draft (needs to be validated) StatusOrderValidated=Validated StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Processed StatusOrderToBill=Delivered StatusOrderToBill2=To bill @@ -58,6 +59,7 @@ MenuOrdersToBill=Orders delivered MenuOrdersToBill2=Billable orders SearchOrder=Search order SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Ship product Discount=Discount CreateOrder=Create Order diff --git a/htdocs/langs/ko_KR/other.lang b/htdocs/langs/ko_KR/other.lang index d20bb5f39b1..80399108329 100644 --- a/htdocs/langs/ko_KR/other.lang +++ b/htdocs/langs/ko_KR/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximum size AttachANewFile=Attach a new file/document LinkedObject=Linked object Miscellaneous=Miscellaneous -NbOfActiveNotifications=Number of notifications +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/ko_KR/productbatch.lang b/htdocs/langs/ko_KR/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/ko_KR/productbatch.lang +++ b/htdocs/langs/ko_KR/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/ko_KR/products.lang b/htdocs/langs/ko_KR/products.lang index 3a29639b12b..3a18cda69e7 100644 --- a/htdocs/langs/ko_KR/products.lang +++ b/htdocs/langs/ko_KR/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/ko_KR/projects.lang b/htdocs/langs/ko_KR/projects.lang index b3c150d1687..0a12f4c64b7 100644 --- a/htdocs/langs/ko_KR/projects.lang +++ b/htdocs/langs/ko_KR/projects.lang @@ -8,8 +8,10 @@ SharedProject=Everybody PrivateProject=Contacts of project MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=This view presents all projects and tasks you are allowed to read. TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). ProjectsArea=Projects area @@ -29,6 +31,8 @@ NoProject=No project defined or owned NbOpenTasks=Nb of opened tasks NbOfProjects=Nb of projects TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Time spent RefTask=Ref. task LabelTask=Label task @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=List of supplier's orders associated with th ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated with the project ListContractAssociatedProject=List of contracts associated with the project ListFichinterAssociatedProject=List of interventions associated with the project -ListTripAssociatedProject=List of trips and expenses associated with the project +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=List of events associated with the project ActivityOnProjectThisWeek=Activity on project this week ActivityOnProjectThisMonth=Activity on project this month @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/ko_KR/salaries.lang b/htdocs/langs/ko_KR/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/ko_KR/salaries.lang +++ b/htdocs/langs/ko_KR/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/ko_KR/sendings.lang b/htdocs/langs/ko_KR/sendings.lang index 794c9019c86..b1ff55f71c1 100644 --- a/htdocs/langs/ko_KR/sendings.lang +++ b/htdocs/langs/ko_KR/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Qty ordered QtyShipped=Qty shipped QtyToShip=Qty to ship QtyReceived=Qty received -KeepToShip=Keep to ship +KeepToShip=Remain to ship OtherSendingsForSameOrder=Other shipments for this order DateSending=Date sending order DateSendingShort=Date sending order diff --git a/htdocs/langs/ko_KR/stocks.lang b/htdocs/langs/ko_KR/stocks.lang index 8ab2a113cb9..d2762213627 100644 --- a/htdocs/langs/ko_KR/stocks.lang +++ b/htdocs/langs/ko_KR/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Weighted average price PMPValueShort=WAP EnhancedValueOfWarehouses=Warehouses value UserWarehouseAutoCreate=Create a warehouse automatically when creating a user +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Quantity dispatched QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/ko_KR/suppliers.lang b/htdocs/langs/ko_KR/suppliers.lang index 7b4d4acb244..baf573c66ac 100644 --- a/htdocs/langs/ko_KR/suppliers.lang +++ b/htdocs/langs/ko_KR/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Suppliers -Supplier=Supplier AddSupplier=Create a supplier SupplierRemoved=Supplier removed SuppliersInvoice=Suppliers invoice @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Supplier invoices and payments ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Approve this order ConfirmApproveThisOrder=Are you sure you want to approve order %s ? -DenyingThisOrder=Denying this order +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? AddCustomerOrder=Create customer order diff --git a/htdocs/langs/ko_KR/trips.lang b/htdocs/langs/ko_KR/trips.lang index 4b0501a8346..ba36fc9b07b 100644 --- a/htdocs/langs/ko_KR/trips.lang +++ b/htdocs/langs/ko_KR/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Trip -Trips=Trips -TripsAndExpenses=Trips and expenses -TripsAndExpensesStatistics=Trips and expenses statistics -TripCard=Trip card -AddTrip=Add trip -ListOfTrips=List of trips +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=List of fees -NewTrip=New trip +NewTrip=New expense report CompanyVisited=Company/foundation visited Kilometers=Kilometers FeesKilometersOrAmout=Amount or kilometers -DeleteTrip=Delete trip -ConfirmDeleteTrip=Are you sure you want to delete this trip ? -TF_OTHER=Other -TF_LUNCH=Lunch -TF_TRIP=Trip -ListTripsAndExpenses=List of trips and expenses -ExpensesArea=Trips and expenses area -SearchATripAndExpense=Search a trip and expense +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/lt_LT/admin.lang b/htdocs/langs/lt_LT/admin.lang index 219441ecd9c..0a9afd42fe8 100644 --- a/htdocs/langs/lt_LT/admin.lang +++ b/htdocs/langs/lt_LT/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Ekspermentinis VersionDevelopment=Plėtojimas VersionUnknown=Nežinomas VersionRecommanded=Rekomenduojamas +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Sesijos ID SessionSaveHandler=Vedlys, sesijai išsaugoti SessionSavePath=Talpinimo sesijos lokalizavimas @@ -493,10 +498,16 @@ Module600Name=Pranešimai Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Parama Module700Desc=Paramos valdymas +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mančio integracija Module1400Name=Apskaita Module1400Desc=Apskaitos valdymas (dvivietės šalys) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Kategorijos Module1780Desc=Kategorijų valdymas (produktai, tiekėjai ir klientai) Module2000Name=WYSIWYG redaktorius @@ -631,7 +642,7 @@ Permission181=Skaityti tiekėjo užsakymus Permission182=Sukurti/keisti tiekėjo užsakymus Permission183=Patvirtinti tiekėjo užsakymus Permission184=Patvirtinti tiekėjo užsakymus -Permission185=Rūšiuoti tiekėjo užsakymus +Permission185=Order or cancel supplier orders Permission186=Gauti tiekėjo užsakymus Permission187=Uždaryti tiekėjo užsakymus Permission188=Nutraukti tiekėjo užsakymus @@ -711,6 +722,13 @@ Permission538=Eksportuoti paslaugas Permission701=Skaityti aukas Permission702=Sukurti/keisti aukas Permission703=Ištrinti aukas +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Skaityti atsargas Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Proxy serverio slaptažodis DefineHereComplementaryAttributes=Čia nustatykite visus atributus, ne tik jau nustatytus pagal nutylėjimą, bet ir tuos, kuriuos Jūs norite, kad būtų palaikomi %s. ExtraFields=Papildomi požymiai ExtraFieldsLines=Papildomi atributai (linijos) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Papildomi požymiai (trečiosios šalys) ExtraFieldsContacts=Papildomi požymiai (kontaktas/adresas) ExtraFieldsMember=Papildomi požymiai (narys) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Produkto/paslaugos linija su nuline suma yra laikoma g FreeLegalTextOnProposal=Laisvas tekstas komerciniame pasiūlyme WatermarkOnDraftProposal=Vandens ženklas komercinių pasiūlymų projekte (nėra, jei lapas tuščias) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Užsakymų valdymo nuostatos OrdersNumberingModules=Užsakymų numeracijos modeliai @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Brūkšninio kodo tipas UPC BarcodeDescISBN=Brūkšninio kodo tipas ISBN BarcodeDescC39=Brūkšninio kodo tipas C39 BarcodeDescC128=Brūkšninio kodo tipas C128 -GenbarcodeLocation=Brūkšninio kodo generavimo komandinės eilutės įrankis (naudojamas vidinio variklio kai kurių brūkšninių kodų tipams) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Vidinis variklis BarCodeNumberManager=Automatinio brūkšninių kodų numerių nustatymo valdiklis ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Sąskaita grynųjų pinigų įmokoms pagal nutylėjimą CashDeskBankAccountForCheque= Sąskaita čekių įmokoms pagal nutylėjimą CashDeskBankAccountForCB= Sąskaita įmokoms kreditinėmis kortelėmis pagal nutylėjimą -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Žymeklių modulio nustatymas @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/lt_LT/banks.lang b/htdocs/langs/lt_LT/banks.lang index 27d83cc3325..d471ea6ac55 100644 --- a/htdocs/langs/lt_LT/banks.lang +++ b/htdocs/langs/lt_LT/banks.lang @@ -33,7 +33,11 @@ AllTime=Nuo pradžios Reconciliation=Suderinimas RIB=Banko sąskaitos numeris IBAN=IBAN numeris +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT numeris +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Pastovūs užsakymai StandingOrder=Pastovus užsakymas Withdrawals=Išėmimai @@ -148,7 +152,7 @@ BackToAccount=Atgal į sąskaitą ShowAllAccounts=Rodyti visas sąskaitas FutureTransaction=Operacija ateityje. Negalima taikyti SelectChequeTransactionAndGenerate=Pasirinkti/filtruoti čekius, kad įtraukti į čekio depozito kvitą ir paspausti mygtuką "Sukurti". -InputReceiptNumber=Pasirinkti banko suvestinę, susijusią su taikymu. Naudokite rūšiuojamą skaitinę vertę (pvz., YYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Nurodyti kategoriją, kurioje klasifikuoti įrašus ToConciliate=Taikyti ? ThenCheckLinesAndConciliate=Tada patikrinkite linijas, esančias banko suvestinėje ir paspauskite diff --git a/htdocs/langs/lt_LT/commercial.lang b/htdocs/langs/lt_LT/commercial.lang index aab16dcdd9b..1c66d76a7af 100644 --- a/htdocs/langs/lt_LT/commercial.lang +++ b/htdocs/langs/lt_LT/commercial.lang @@ -9,9 +9,9 @@ Prospect=Planas Prospects=Planai DeleteAction=Ištrinti įvykį/užduotį NewAction=Naujas įvykis/užduotis -AddAction=Pridėti įvykį/užduotį -AddAnAction=Pridėti įvykį/užduotį -AddActionRendezVous=Pridėti Rendez-vous įvykį +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Pasimatymas ConfirmDeleteAction=Ar tikrai norite ištrinti šį įvykį/užduotį ? CardAction=Įvykio kortelė @@ -44,8 +44,8 @@ DoneActions=Įvykdyti įvykiai DoneActionsFor=Įvykdyti įvykiai %s ToDoActions=Neįvykdyti įvykiai ToDoActionsFor=Neįvykdyti įvykiai %s -SendPropalRef=Siųsti komercinį pasiūlymą %s -SendOrderRef=Siųsti užsakymą %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Netaikoma StatusActionToDo=Atlikti StatusActionDone=Pilnas @@ -62,7 +62,7 @@ LastProspectContactDone=Susisiekmas įvyko DateActionPlanned=Įvykio suplanuota data DateActionDone=Įvykusio įvykio data ActionAskedBy=Įvykį pranešė -ActionAffectedTo=Įvykis priskiriamas +ActionAffectedTo=Event assigned to ActionDoneBy=Įvykį įvykdė ActionUserAsk=Pranešė ErrorStatusCantBeZeroIfStarted=Jei laukas 'Date done' yra užpildytas, veiksmas pradėtas (arba užbaigtas), todėl laukas 'Status' negali būti 0%%. diff --git a/htdocs/langs/lt_LT/contracts.lang b/htdocs/langs/lt_LT/contracts.lang index 669a370db74..cf070570ff6 100644 --- a/htdocs/langs/lt_LT/contracts.lang +++ b/htdocs/langs/lt_LT/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Pasibaigęs ServiceStatusClosed=Uždarytas ServicesLegend=Paslaugų legenda Contracts=Sutartys +ContractsAndLine=Contracts and line of contracts Contract=Sutartis NoContracts=Nėra sutarčių MenuServices=Paslaugos diff --git a/htdocs/langs/lt_LT/cron.lang b/htdocs/langs/lt_LT/cron.lang index 77417db0902..55aee3fddce 100644 --- a/htdocs/langs/lt_LT/cron.lang +++ b/htdocs/langs/lt_LT/cron.lang @@ -84,3 +84,4 @@ CronType_command=Apvalkalo komanda CronMenu=Cron CronCannotLoadClass=Nepavyko įkelti klasės %s arba objekto %s UseMenuModuleToolsToAddCronJobs=Eikite į meniu "Pagrindinis - Modulių įrankiai - Darbo sąrašas" norėdami peržiūrėti ir redaguoti numatytus darbus. +TaskDisabled=Task disabled diff --git a/htdocs/langs/lt_LT/errors.lang b/htdocs/langs/lt_LT/errors.lang index 515ddde0c6e..4f45a89c521 100644 --- a/htdocs/langs/lt_LT/errors.lang +++ b/htdocs/langs/lt_LT/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Šaltinis ir tikslinės banko sąskaitos turi bū ErrorBadThirdPartyName=Bloga trečiosios šalies pavadinimo reikšmė ErrorProdIdIsMandatory=%s yra privalomas ErrorBadCustomerCodeSyntax=Bloga kliento kodo sintaksė -ErrorBadBarCodeSyntax=Bloga brūkšninio kodo sintaksė +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Kliento kodas reikalingas ErrorBarCodeRequired=Reikalingas brūkšninis kodas ErrorCustomerCodeAlreadyUsed=Kliento kodas jau naudojamas @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=JavaScript turi būti neišjungtas, kad ši funkcij ErrorPasswordsMustMatch=Abu įvesti slaptažodžiai turi sutapti tarpusavyje ErrorContactEMail=Įvyko techninė klaida. Kreipkitės į administratorių e-paštu %s ir pateikite klaidos kodą %s savo laiške, arba dar geriau, pridėkite šio puslapio ekrano kopiją. ErrorWrongValueForField=Neteisinga laukelio numerio reikšmė %s (reikšmė '%s' neatitinka reguliarios išraiškos (regex) taisyklės %s) -ErrorFieldValueNotIn=Neteisinga reikšmė laukelio numeriui %s (reikšmė '%s' nėra reikšmė galima laukeliui %s lentelėje %s +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Neteisinga reikšmė laukelio numeriui %s (reikšmė '%s' yra ne %s egzistuojanti nuoroda) ErrorsOnXLines=Klaidos %s šaltinio įraše (-uose) ErrorFileIsInfectedWithAVirus=Antivirusinė programa negali patvirtinti failo (failas gali būti užkrėstas virusu) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Privalomi nustatymų parametrai dar nėra apibrėžti diff --git a/htdocs/langs/lt_LT/install.lang b/htdocs/langs/lt_LT/install.lang index 8eb2ffae566..c674023e512 100644 --- a/htdocs/langs/lt_LT/install.lang +++ b/htdocs/langs/lt_LT/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Paskutinis žingsnis: Nustatykite čia prisijungim ActivateModule=Įjungti modulį %s ShowEditTechnicalParameters=Spauskite čia, kad galėtumete matyti/redaguoti išplėstinius parametrus (eksperto režime) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/lt_LT/main.lang b/htdocs/langs/lt_LT/main.lang index e40b7b58905..1ff97860263 100644 --- a/htdocs/langs/lt_LT/main.lang +++ b/htdocs/langs/lt_LT/main.lang @@ -141,6 +141,7 @@ Cancel=Atšaukti Modify=Pakeisti Edit=Redaguoti Validate=Patvirtinti +ValidateAndApprove=Validate and Approve ToValidate=Patvirtinti Save=Išsaugoti SaveAs=Įšsaugoti kaip @@ -158,6 +159,7 @@ Search=Ieškoti SearchOf=Ieškoti Valid=Galiojantis Approve=Patvirtinti +Disapprove=Disapprove ReOpen=Atidaryti iš naujo Upload=Siųsti failą ToLink=Nuoroda @@ -219,6 +221,7 @@ Cards=Kortelės Card=Kortelė Now=Dabar Date=Data +DateAndHour=Date and hour DateStart=Pradžios data DateEnd=Pabaigos data DateCreation=Sukūrimo data @@ -295,6 +298,7 @@ UnitPriceHT=Vieneto kaina (grynoji) UnitPriceTTC=Vieneto kaina PriceU=U.P. PriceUHT=U.P. (grynasis) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=U.P. Amount=Suma AmountInvoice=Sąskaitos-faktūros suma @@ -521,6 +525,7 @@ DateFromTo=Nuo %s į %s DateFrom=Nuo %s DateUntil=Iki %s Check=Patikrinti +Uncheck=Uncheck Internal=Vidinis External=Išorinis Internals=Vidinis @@ -688,6 +693,7 @@ PublicUrl=Viešas URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Pirmadienis Tuesday=Antradienis diff --git a/htdocs/langs/lt_LT/orders.lang b/htdocs/langs/lt_LT/orders.lang index ddaf28f61ab..9ddb927bb6f 100644 --- a/htdocs/langs/lt_LT/orders.lang +++ b/htdocs/langs/lt_LT/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Atšauktas StatusOrderDraft=Projektas (turi būti patvirtintas) StatusOrderValidated=Patvirtintas StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Apdorotas StatusOrderToBill=Pristatyta StatusOrderToBill2=Pateikti sąskaitą-faktūrą @@ -58,6 +59,7 @@ MenuOrdersToBill=Pristatyti užsakymai MenuOrdersToBill2=Billable orders SearchOrder=Ieškoti užsakymo SearchACustomerOrder=Ieškoti kliento užsakymo +SearchASupplierOrder=Search a supplier order ShipProduct=Gabenti produktą Discount=Nuolaida CreateOrder=Sukurti Užsakymą diff --git a/htdocs/langs/lt_LT/other.lang b/htdocs/langs/lt_LT/other.lang index 36fb7dd69b7..1a21722f710 100644 --- a/htdocs/langs/lt_LT/other.lang +++ b/htdocs/langs/lt_LT/other.lang @@ -54,12 +54,13 @@ MaxSize=Maksimalus dydis AttachANewFile=Pridėti naują failą/dokumentą LinkedObject=Susietas objektas Miscellaneous=Įvairus -NbOfActiveNotifications=Pranešimų skaičius +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Tai yra pašto bandymas.\nDvi eilutės yra atskirtos eilutės perkėlimo ženklu.\n\n __SIGNATURE__ PredefinedMailTestHtml=Tai yra pašto bandymas (žodis bandymas turi būti paryškintas)
Dvi eilutės yra atskirtos eilutės perkėlimo ženklu.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nČia rasite sąskaitą-faktūrą __ FACREF__\n\n__ PERSONALIZED__Sincerely\n\n__ SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nNorime jus perspėti, kad sąskaita-faktūra __ FACREF__ atrodo yra neapmokėta. Todėl tai yra pakartotinis priminimas apmokėti sąskaitą-faktūrą ir pakartotinai prikabinta sąskaita-faktūra.\n\n__PERSONALIZED__Sincerely\n\n__ SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nČia rasite komercinį pasiūlymą __ PROPREF__\n\n__ PERSONALIZED__Sincerely\n\n__ SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nČia rasite užsakymą __ ORDERREF__\n\n__ PERSONALIZED__Sincerely\n\n__ SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nČia rasite mūsų užsakymą __ ORDERREF__\n\n__ PERSONALIZED__Sincerely\n\n__ SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nČia rasite sąskaitą-faktūrą __ FACREF__\n\n__ PERSONALIZED__Sincerely\n\n__ SIGNATURE__ diff --git a/htdocs/langs/lt_LT/productbatch.lang b/htdocs/langs/lt_LT/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/lt_LT/productbatch.lang +++ b/htdocs/langs/lt_LT/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/lt_LT/products.lang b/htdocs/langs/lt_LT/products.lang index 1b39c2adf11..119a17d71e2 100644 --- a/htdocs/langs/lt_LT/products.lang +++ b/htdocs/langs/lt_LT/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/lt_LT/projects.lang b/htdocs/langs/lt_LT/projects.lang index 9ee14f63ec0..ad5077bc7b4 100644 --- a/htdocs/langs/lt_LT/projects.lang +++ b/htdocs/langs/lt_LT/projects.lang @@ -8,8 +8,10 @@ SharedProject=Visi PrivateProject=Kontaktai projekte MyProjectsDesc=Šis vaizdas yra ribotas projektams, kuriems esate kontaktinis asmuo (koks bebūtų tipas). ProjectsPublicDesc=Šis vaizdas rodo visus projektus, kuriuos yra Jums leidžiama skaityti. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Šis vaizdas rodo visus projektus (Jūsų vartotojo teisės leidžia matyti viską). MyTasksDesc=Šis vaizdas yra ribotas projektams ar užduotims, kuriems Jūs esate kontaktinis asmuo (koks bebūtų tipas). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Šis vaizdas rodo visus projektus ir užduotis, kuriuos Jums leidžiama skaityti. TasksDesc=Šis vaizdas rodo visus projektus ir užduotis (Jūsų vartotojo teisės leidžia matyti viską). ProjectsArea=Projektų sritis @@ -29,6 +31,8 @@ NoProject=Nėra apibrėžto ar turimo projekto NbOpenTasks=Atidarytų užduočių skaičius NbOfProjects=Projektų skaičius TimeSpent=Praleistas laikas +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Praleistas laikas RefTask=Užduoties nuoroda LabelTask=Etiketės užduotis @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Tiekėjo užsakymų, susijusių su projektu, ListSupplierInvoicesAssociatedProject=Tiekėjo sąskaitų-faktūrų, susijusių su projektu, sąrašas ListContractAssociatedProject=Sudarytų sutarčių, susijusių su projektu, sąrašas ListFichinterAssociatedProject=Intervencijų, susijusių su projektu, sąrašas -ListTripAssociatedProject=Kelionių ir išlaidų, susijusių su projektų, sąrašas +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Įvykių, susijusių su projektu, sąrašas ActivityOnProjectThisWeek=Projekto aktyvumas šią savaitę ActivityOnProjectThisMonth=Projekto aktyvumas šį mėnesį @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/lt_LT/salaries.lang b/htdocs/langs/lt_LT/salaries.lang index edca71a1829..a36e72679b2 100644 --- a/htdocs/langs/lt_LT/salaries.lang +++ b/htdocs/langs/lt_LT/salaries.lang @@ -1,8 +1,13 @@ # Dolibarr language file - Source file is en_US - users -Salary=Salary -Salaries=Salaries -Employee=Employee -NewSalaryPayment=New salary payment -SalaryPayment=Salary payment -SalariesPayments=Salaries payments -ShowSalaryPayment=Show salary payment +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge +Salary=Atlyginimas +Salaries=Atlyginimai +Employee=Darbuotojas +NewSalaryPayment=Naujas atlyginimo mokėjimas +SalaryPayment=Atlyginimo mokėjimas +SalariesPayments=Atlyginimų mokėjimai +ShowSalaryPayment=Rodyti atlyginimo mokėjimą +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/lt_LT/sendings.lang b/htdocs/langs/lt_LT/sendings.lang index 9c22f2b507a..15cf1916fcf 100644 --- a/htdocs/langs/lt_LT/sendings.lang +++ b/htdocs/langs/lt_LT/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Užsakytas kiekis QtyShipped=Išsiųstas kiekis QtyToShip=Kiekis išsiuntimui QtyReceived=Gautas kiekis -KeepToShip=Laikyti siuntimui +KeepToShip=Remain to ship OtherSendingsForSameOrder=Kiti vežimai, skirti šiam užsakymui DateSending=Užsakymo išsiuntimo data DateSendingShort=Užsakymo išsiuntimo data diff --git a/htdocs/langs/lt_LT/stocks.lang b/htdocs/langs/lt_LT/stocks.lang index 60c6bbe71e7..4f773f2b5b5 100644 --- a/htdocs/langs/lt_LT/stocks.lang +++ b/htdocs/langs/lt_LT/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Vidutinė svertinė kaina PMPValueShort=WAP EnhancedValueOfWarehouses=Sandėlių vertė UserWarehouseAutoCreate=Kuriant vartotoją, sandėlį sukurti automatiškai +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Kiekis išsiųstas QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=Sandėlis %s bus naudojamos atsargų sumažėji WarehouseForStockIncrease=Sandėlis %s bus naudojamos atsargų padidėjimui ForThisWarehouse=Šiam sandėliui ReplenishmentStatusDesc=Tai sąrašas visų produktų, kurių atsargos mažesnės už pageidaujamą kiekį (arba mažesnės nei įspėjama kritinė riba, jei langelis "Tik įspėjimai" yra pažymėtas), ir siūlymas sukurti tiekėjo užsakymus skirtumo užpildymui. -ReplenishmentOrdersDesc=Tai sąrašas visų atidarytų tiekėjo užsakymų +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Papildymai NbOfProductBeforePeriod=Produkto %s kiekis atsargose iki pasirinkto periodo (< %s) NbOfProductAfterPeriod=Produkto %s kiekis sandėlyje po pasirinkto periodo (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/lt_LT/suppliers.lang b/htdocs/langs/lt_LT/suppliers.lang index f53d7984e4a..63a3de6a9e5 100644 --- a/htdocs/langs/lt_LT/suppliers.lang +++ b/htdocs/langs/lt_LT/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Tiekėjai -Supplier=Tiekėjas AddSupplier=Create a supplier SupplierRemoved=Tiekėjas pašalintas SuppliersInvoice=Tiekėjo sąskaita-faktūra @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Tiekėjo sąskaitos-faktūros ir mokėjimai ExportDataset_fournisseur_3=Tiekėjo užsakymai ir užsakymo eilutės ApproveThisOrder=Patvirtinti šį užsakymą ConfirmApproveThisOrder=Ar tikrai norite patvirtinti užsakymą %s ? -DenyingThisOrder=Neigiantis šį užsakymą +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Ar tikrai norite atsisakyti šio užsakymo s? ConfirmCancelThisOrder=Ar tikrai norite atšaukti šį užsakymą %s ? AddCustomerOrder=Sukurti kliento užsakymą diff --git a/htdocs/langs/lt_LT/trips.lang b/htdocs/langs/lt_LT/trips.lang index 42c60e6a183..640346bb6f6 100644 --- a/htdocs/langs/lt_LT/trips.lang +++ b/htdocs/langs/lt_LT/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Išjungimas -Trips=Išjungimai -TripsAndExpenses=Išjungimai ir išlaidos -TripsAndExpensesStatistics=Išjungimų ir išlaidų statistika -TripCard=Išjungimo kortelė -AddTrip=Pridėti išjungimą -ListOfTrips=Išjungimų sąrašas +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Įmokų sąrašas -NewTrip=Naujas išjungimas +NewTrip=New expense report CompanyVisited=aplankyta įmonė/organizacija Kilometers=Kilometrų FeesKilometersOrAmout=Kilometrų kiekis -DeleteTrip=Ištrinti išjungimą -ConfirmDeleteTrip=Ar tikrai norite ištrinti šį išjungimą ? -TF_OTHER=Kitas -TF_LUNCH=Pietūs -TF_TRIP=Išjungimas -ListTripsAndExpenses=Išjungimų ir išlaidų sąrašas -ExpensesArea=Išjungimų ir išlaidų sritis -SearchATripAndExpense=Ieškoti išjungimo ir išlaidų +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Kitas +TF_TRANSPORTATION=Transportation +TF_LUNCH=Pietūs +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/lv_LV/accountancy.lang b/htdocs/langs/lv_LV/accountancy.lang index 801ddcc484a..3f5828327f7 100644 --- a/htdocs/langs/lv_LV/accountancy.lang +++ b/htdocs/langs/lv_LV/accountancy.lang @@ -13,7 +13,7 @@ ConfigAccountingExpert=Configuration of the module accounting expert Journaux=Žurnāli JournalFinancial=Financial journals Exports=Eksports -Export=Export +Export=Eksportēt Modelcsv=Eksporta modulis OptionsDeactivatedForThisExportModel=For this export model, options are deactivated Selectmodelcsv=Select a model of export @@ -68,7 +68,7 @@ Lineofinvoice=Line of invoice VentilatedinAccount=Ventilated successfully in the accounting account NotVentilatedinAccount=Not ventilated in the accounting account -ACCOUNTING_SEPARATORCSV=Column separator in export file +ACCOUNTING_SEPARATORCSV=Kolonu atdalītājs eksportējamā failā ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50) ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements diff --git a/htdocs/langs/lv_LV/admin.lang b/htdocs/langs/lv_LV/admin.lang index 44dd8ffd72a..b1e121979c8 100644 --- a/htdocs/langs/lv_LV/admin.lang +++ b/htdocs/langs/lv_LV/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Eksperimentāls VersionDevelopment=Attīstība VersionUnknown=Nezināms VersionRecommanded=Ieteicams +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Sesijas ID SessionSaveHandler=Handler, lai saglabātu sesijas SessionSavePath=Atmiņas sesija lokalizācija @@ -294,7 +299,7 @@ DoNotUseInProduction=Neizmantot produkcijā ThisIsProcessToFollow=Tas ir setup, lai process: StepNb=Solis %s FindPackageFromWebSite=Atrast paketi, kas nodrošina iespēju, jūs vēlaties (piemēram, par oficiālo tīmekļa vietnes %s). -DownloadPackageFromWebSite=Download package %s. +DownloadPackageFromWebSite=Lejupielādēt paku %s UnpackPackageInDolibarrRoot=Izkravāt paketi failu Dolibarr saknes direktorijā %s SetupIsReadyForUse=Instalēšana ir pabeigta, un Dolibarr ir gatavs lietošanai ar šo jauno komponentu. NotExistsDirect=Alternatīva saknes direktorijs nav definēta.
@@ -388,7 +393,7 @@ ExtrafieldParamHelpselect=Parameters list have to be like key,value

for ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value

for example :
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=Parameters list have to be like key,value

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

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

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

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

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

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter LibraryToBuildPDF=Bibliotēka, lai izveidotu PDF WarningUsingFPDF=Uzmanību: Jūsu conf.php satur direktīvu dolibarr_pdf_force_fpdf = 1. Tas nozīmē, ka jūs izmantojat FPDF bibliotēku, lai radītu PDF failus. Šī bibliotēka ir vecs un neatbalsta daudz funkcijām (Unicode, attēlu pārredzamība, kirilicas, arābu un Āzijas valodās, ...), tāpēc var rasties kļūdas laikā PDF paaudzes.
Lai atrisinātu šo problēmu, un ir pilnībā atbalsta PDF paaudzes, lūdzu, lejupielādējiet TCPDF bibliotēka , tad komentēt vai noņemt līnijas $ dolibarr_pdf_force_fpdf = 1, un pievienojiet vietā $ dolibarr_lib_TCPDF_PATH = 'path_to_TCPDF_dir' LocalTaxDesc=Dažas valstis piemēro 2 vai 3 nodokļus par katru PVN rēķinu rindā. Ja tas ir gadījums, izvēlieties veidu otrajā un trešajā nodokli un tā likmi. Iespējamais veids ir:
1: vietējais nodoklis attiecas uz produktiem un pakalpojumiem, bez PVN (PVN netiek piemērots vietējiem nodokļiem)
2: vietējais nodoklis attiecas uz produktiem un pakalpojumiem, bez PVN (PVN aprēķina summas + localtax)
3: vietējais nodoklis attiecas uz produktiem, bez PVN (PVN netiek piemērots vietējiem nodokļiem)
4: vietējais nodoklis attiecas uz produktiem, bez PVN (PVN aprēķina summas + localtax)
5: vietējais nodoklis attiecas uz pakalpojumiem, bez PVN (PVN netiek piemērots vietējiem nodokļiem)
6: vietējais nodoklis attiecas uz pakalpojumiem, bez PVN (PVN aprēķina summas + localtax) @@ -493,10 +498,16 @@ Module600Name=Paziņojumi Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Ziedojumi Module700Desc=Ziedojumu pārvaldība +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Dievlūdzējs Module1200Desc=Mantis integrācija Module1400Name=Grāmatvedība Module1400Desc=Grāmatvedības vadība (dubultā partijas) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Sadaļas Module1780Desc=Kategoriju vadība (produktiem, piegādātājiem un klientiem) Module2000Name=WYSIWYG redaktors @@ -631,7 +642,7 @@ Permission181=Lasīt piegādātāju pasūtījumus Permission182=Izveidot/mainīt piegādātāju pasūtījumus Permission183=Apstiprināt piegādātāju pasūtījumus Permission184=Apstiprināt piegādātāja pasūtījumus -Permission185=Pasūtīt piegādātājs pasūtījumi +Permission185=Order or cancel supplier orders Permission186=Saņemt piegādātāju pasūtījumus Permission187=Aizvērt piegādātāja pasūtījumus Permission188=Atcelt piegādātāja pasūtījumus @@ -711,6 +722,13 @@ Permission538=Eksportēt pakalpojumus Permission701=Lasīt ziedojumus Permission702=Izveidot/mainīt ziedojumus Permission703=Dzēst ziedojumus +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Lasīt krājumus Permission1002=Assign service/subscription to contract Permission1003=Dzēst noliktavas @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Parole, lai izmantotu starpniekserveri DefineHereComplementaryAttributes=Definēt šeit visi atribūti, jau nav pieejama pēc noklusējuma, un, ka jūs vēlaties būt atbalstīta %s. ExtraFields=Papildbarība atribūti ExtraFieldsLines=Papildinošas atribūti (līnijas) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Papildinošas atribūti (thirdparty) ExtraFieldsContacts=Papildinošas atribūti (kontaktpersona / adrese) ExtraFieldsMember=Papildinošas atribūti (biedrs) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Produkta / pakalpojuma ar nulles summu līnija tiek uz FreeLegalTextOnProposal=Brīvais teksts komerciālajos priekšlikumos WatermarkOnDraftProposal=Ūdenszīme projektu komerciālo priekšlikumu (none ja tukšs) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Pasūtījumu vadības iestatīšana OrdersNumberingModules=Pasūtījumu numerācijas modeļi @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Svītrkoda veids UPC BarcodeDescISBN=Svītrkoda veids ISBN BarcodeDescC39=Svītrkoda veids C39 BarcodeDescC128=Svītrkoda veids C128 -GenbarcodeLocation=Svītru kodu ģenerēšanas komandrindas rīks (ko izmanto iekšējo dzinēju dažiem svītrkodu veidiem) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Iekšējais dzinējs BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1420,7 +1447,7 @@ AdvancedEditor=Uzlabotais redaktors ActivateFCKeditor=Aktivizēt uzlabotos redaktoru: FCKeditorForCompany=WYSIWYG izveidi / izdevums no elementiem apraksta un piezīmi (izņemot produktu / pakalpojumu) FCKeditorForProduct=WYSIWYG radīšana / izdevums produktu / pakalpojumu apraksts un atzīmēt -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 formating when building PDF files. +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 formating when building PDF files.\n FCKeditorForMailing= WYSIWYG izveide/ izdevums masveida emailings (Tools-> e-pastu) FCKeditorForUserSignature=WYSIWYG izveide/labošana lietotāja paraksta FCKeditorForMail=WYSIWYG izveidi / izdevums visām vēstulēm (izņemot Outils-> e-pastu) @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Noklusējuma konts, lai izmantotu, lai saņemtu naudas maksājumus CashDeskBankAccountForCheque= Noklusējuma konts, lai izmantotu, lai saņemtu maksājumus ar čeku CashDeskBankAccountForCB= Noklusējuma konts, lai izmantotu, lai saņemtu maksājumus ar kredītkarti -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Grāmatzīme modulis iestatīšanu @@ -1569,3 +1597,7 @@ SortOrder=Kārtošanas secība Format=Formāts TypePaymentDesc=0:Klienta maksāšanas veids, 1:Piegādātāja maksāšanas veids, 2:Abi klientu un piegādātāju maksāšanas veids IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/lv_LV/agenda.lang b/htdocs/langs/lv_LV/agenda.lang index a301f51c95e..9cca7068840 100644 --- a/htdocs/langs/lv_LV/agenda.lang +++ b/htdocs/langs/lv_LV/agenda.lang @@ -59,7 +59,7 @@ InvoiceSentByEMail=Klienta rēķins %s nosūtīts pa e-pastu SupplierOrderSentByEMail=Piegādātāja pasūtījums %s nosūtīts pa e-pastu SupplierInvoiceSentByEMail=Piegādātāja rēķins %s nosūtīts pa e-pastu ShippingSentByEMail=Shipment %s sent by EMail -ShippingValidated= Shipment %s validated +ShippingValidated= Sūtījums %s apstiprināts InterventionSentByEMail=Intervention %s sent by EMail NewCompanyToDolibarr= Trešā puses izveidota DateActionPlannedStart= Plānotais sākuma datums diff --git a/htdocs/langs/lv_LV/banks.lang b/htdocs/langs/lv_LV/banks.lang index 501b8adc1e0..3c7dfa65ec1 100644 --- a/htdocs/langs/lv_LV/banks.lang +++ b/htdocs/langs/lv_LV/banks.lang @@ -8,7 +8,7 @@ FinancialAccount=Konts FinancialAccounts=Konti BankAccount=Bankas konts BankAccounts=Banku konti -ShowAccount=Show Account +ShowAccount=Rādīt kontu AccountRef=Finanšu konta ref AccountLabel=Finanšu konts nosaukums CashAccount=Skaidras naudas konts @@ -33,7 +33,11 @@ AllTime=No sākuma Reconciliation=Samierināšanās RIB=Bankas konta numurs IBAN=IBAN numurs +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC / SWIFT numurs +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Regulārie maksājumi StandingOrder=Regulārais maksājums Withdrawals=Izņemts @@ -148,7 +152,7 @@ BackToAccount=Atpakaļ uz kontu ShowAllAccounts=Parādīt visiem kontiem FutureTransaction=Darījumi ar Futur. Nav veids, kā samierināt. SelectChequeTransactionAndGenerate=Izvēlieties / filtru pārbaudes, lai iekļautu uz pārbaudes depozīta saņemšanas un noklikšķiniet uz "Izveidot". -InputReceiptNumber=Izvēlieties konta izrakstu, kas saistīti ar izlīgumu. Izmantojiet sortable skaitlisku vērtību (piemēram, GGGGMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Galu galā, norādiet kategoriju, kurā klasificēt ierakstus ToConciliate=Samierināt? ThenCheckLinesAndConciliate=Tad pārbaudiet līnijas, kas atrodas bankas izrakstā, un noklikšķiniet diff --git a/htdocs/langs/lv_LV/bills.lang b/htdocs/langs/lv_LV/bills.lang index 3813f4f5db7..4216d9f6a05 100644 --- a/htdocs/langs/lv_LV/bills.lang +++ b/htdocs/langs/lv_LV/bills.lang @@ -1,16 +1,16 @@ # Dolibarr language file - Source file is en_US - bills Bill=Pavadzīme Bills=Pavadzīmes -BillsCustomers=Customers invoices -BillsCustomer=Customers invoice -BillsSuppliers=Suppliers invoices -BillsCustomersUnpaid=Unpaid customers invoices +BillsCustomers=Klientu rēķini +BillsCustomer=Klientu rēķins +BillsSuppliers=Piegādātāju rēķini +BillsCustomersUnpaid=Neapmaksātie klientu rēķini BillsCustomersUnpaidForCompany=Neapmaksātie klientu rēķini %s BillsSuppliersUnpaid=Neapmaksātie piegādātāja -u rēķini BillsSuppliersUnpaidForCompany=Neapmaksātie piegādātāja -u rēķini %s BillsLate=Kavētie maksājumi -BillsStatistics=Customers invoices statistics -BillsStatisticsSuppliers=Suppliers invoices statistics +BillsStatistics=Klientu rēķinu statistika +BillsStatisticsSuppliers=Piegādātāju rēķinu statistika DisabledBecauseNotErasable=Bloķēts, jo nedrīkst dzēst InvoiceStandard=Standarta rēķins InvoiceStandardAsk=Standarta rēķins @@ -420,8 +420,8 @@ InvoiceSituationDesc=Create a new situation following an already existing one SituationAmount=Situation invoice amount(net) SituationDeduction=Situation subtraction Progress=Progress -ModifyAllLines=Modify all lines -CreateNextSituationInvoice=Create next situation +ModifyAllLines=Labot visas līnijas +CreateNextSituationInvoice=Izveidot nākošo situāciju NotLastInCycle=This invoice in not the last in cycle and must not be modified. DisabledBecauseNotLastInCycle=The next situation already exists. DisabledBecauseFinal=This situation is final. diff --git a/htdocs/langs/lv_LV/commercial.lang b/htdocs/langs/lv_LV/commercial.lang index 9d5f0f83f94..cd11fb1be26 100644 --- a/htdocs/langs/lv_LV/commercial.lang +++ b/htdocs/langs/lv_LV/commercial.lang @@ -9,12 +9,12 @@ Prospect=Perspektīva Prospects=Perspektīvas DeleteAction=Dzēst notikumu/uzdevumu NewAction=Jauns notikums/uzdevums -AddAction=Pievienot notikumu/uzdevumu -AddAnAction=Pievienot notikumu/uzdevumu -AddActionRendezVous=Pievienot Rendez-vous notikumu +AddAction=Izveidot notikumu/uzdevumu +AddAnAction=Izveidot notikumu/uzdevumu +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Satikšanās ConfirmDeleteAction=Vai tiešām vēlaties dzēst šo notikumu / uzdevumu? -CardAction=Notikumu karte +CardAction=Notikumu kartiņa PercentDone=Procentuāli pabeigts ActionOnCompany=Uzdevums par uzņēmumu ActionOnContact=Uzdevums par kontaktu @@ -33,7 +33,7 @@ ErrorWrongCode=Nepareizs kods NoSalesRepresentativeAffected=Nav īpaši tirdzniecības piešķirts pārstāvis ShowCustomer=Rādīt klientu ShowProspect=Rādīt izredzes -ListOfProspects=Saraksts perspektīvas +ListOfProspects=Perspektīvu saraksts ListOfCustomers=Klientu saraksts LastDoneTasks=Pēdējie %s pabeigtie uzdevumi LastRecordedTasks=Pēdējās ierakstītie uzdevumi @@ -44,8 +44,8 @@ DoneActions=Īstenotie pasākumi DoneActionsFor=Pabeigtie notikumi %s ToDoActions=Nepabeigtie notikumi ToDoActionsFor=Nepilnīgi notikumi %s -SendPropalRef=Sūtīt komerciālu priekšlikumu, %s -SendOrderRef=Nosūtīt pasūtījumu %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Nav piemērojams StatusActionToDo=Jāizdara StatusActionDone=Pabeigts @@ -60,9 +60,9 @@ LastProspectToContact=Jāsazinās LastProspectContactInProcess=Sazināšanās procesā LastProspectContactDone=Sazinājāmies DateActionPlanned=Datums, kad pasākums plānots -DateActionDone=Datums notikums darīts +DateActionDone=Datums, kad notikums pabeigts ActionAskedBy=Par notikumu ziņoja -ActionAffectedTo=Notikums piešķirts +ActionAffectedTo=Event assigned to ActionDoneBy=Notikumu veic ActionUserAsk=Ziņoja ErrorStatusCantBeZeroIfStarted=Ja lauks "Datums darīts" tiek aizpildīta, darbība tiek uzsākts (vai pabeigts), lai lauka "Statuss" nevar būt 0%%. diff --git a/htdocs/langs/lv_LV/contracts.lang b/htdocs/langs/lv_LV/contracts.lang index 811966b56c3..f72655e0e14 100644 --- a/htdocs/langs/lv_LV/contracts.lang +++ b/htdocs/langs/lv_LV/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Beidzies ServiceStatusClosed=Slēgts ServicesLegend=Pakalpojumu apraksts Contracts=Līgumi +ContractsAndLine=Contracts and line of contracts Contract=Līgums NoContracts=Nav līgumi MenuServices=Pakalpojumi diff --git a/htdocs/langs/lv_LV/cron.lang b/htdocs/langs/lv_LV/cron.lang index bc571e1860a..d75495175ef 100644 --- a/htdocs/langs/lv_LV/cron.lang +++ b/htdocs/langs/lv_LV/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell komandu CronMenu=Cron CronCannotLoadClass=Nevar ielādēt klases %s vai objektu %s UseMenuModuleToolsToAddCronJobs=Iet uz izvēlni "Home - moduļi instrumenti - Darbs sarakstu", lai redzētu un rediģēt plānoto darbu. +TaskDisabled=Task disabled diff --git a/htdocs/langs/lv_LV/errors.lang b/htdocs/langs/lv_LV/errors.lang index b34b89c418a..c3f12157435 100644 --- a/htdocs/langs/lv_LV/errors.lang +++ b/htdocs/langs/lv_LV/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Avots un mērķiem banku kontiem jābūt atšķir ErrorBadThirdPartyName=Nepareiza vērtība trešo personu nosaukumā ErrorProdIdIsMandatory=%s ir obligāti ErrorBadCustomerCodeSyntax=Nepareiza klienta koda sintakse -ErrorBadBarCodeSyntax=Nepareiza sintakse svītrukodam +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Klienta kods nepieciešams ErrorBarCodeRequired=Svītrkods nepieciešams ErrorCustomerCodeAlreadyUsed=Klienta kods jau tiek izmantots @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript nedrīkst tikt izslēgti, ka šī funkci ErrorPasswordsMustMatch=Abām ievadītām parolēm jāsakrīt ErrorContactEMail=Tehniska kļūda. Lūdzu, sazinieties ar administratoru pa sekojošu e-pastu %s, lai iesniegtu kļūdas kodu %s jūsu ziņojumā, vai labāk, pievienojot šīs lapas ekrāna. ErrorWrongValueForField=Nepareiza vērtība lauka numuru %s (vērtība '%s' nesakrīt regex noteikums %s) -ErrorFieldValueNotIn=Nepareiza vērtība lauka numura %s (vērtība "%s" nav vērtība, pieejams uz lauka %s galda %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Nepareiza vērtība lauka numuru %s (vērtība "%s" nav %s esošo ref) ErrorsOnXLines=Kļūdas %s avota ierakstu (-s) ErrorFileIsInfectedWithAVirus=Antivīrusu programma nevarēja apstiprināt failu (fails varētu būt inficēti ar vīrusu) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Iekšēja kļūda '%s' ErrorPriceExpressionUnknown=Nezināma kļūda '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Obligātie uzstādīšanas parametri vēl nav definētas diff --git a/htdocs/langs/lv_LV/install.lang b/htdocs/langs/lv_LV/install.lang index e2881caf007..3936294e463 100644 --- a/htdocs/langs/lv_LV/install.lang +++ b/htdocs/langs/lv_LV/install.lang @@ -155,7 +155,8 @@ MigrationFinished=Migrācija pabeigta LastStepDesc=Pēdējais solis: Noteikt šeit pieteikumvārdu un paroli, jūs plānojat izmantot, lai izveidotu savienojumu ar programmatūru. Nepalaidiet garām šo, jo tas ir konts, lai administrētu visus pārējos. ActivateModule=Aktivizēt moduli %s ShowEditTechnicalParameters=Noklikšķiniet šeit, lai parādītu / rediģēt papildu parametrus (ekspertu režīmā) -WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/lv_LV/main.lang b/htdocs/langs/lv_LV/main.lang index 4dfbe5b3e41..edc3343f1be 100644 --- a/htdocs/langs/lv_LV/main.lang +++ b/htdocs/langs/lv_LV/main.lang @@ -141,6 +141,7 @@ Cancel=Atcelt Modify=Modificēt Edit=Rediģēt Validate=Pārbaudīt +ValidateAndApprove=Validate and Approve ToValidate=Jāpārbauda Save=Saglabāt SaveAs=Saglabāt kā @@ -158,6 +159,7 @@ Search=Meklēšana SearchOf=Meklēšana Valid=Derīgs Approve=Apstiprināt +Disapprove=Disapprove ReOpen=Atvērt par jaunu Upload=Augšupielādēt failu ToLink=Saite @@ -219,6 +221,7 @@ Cards=Kartes Card=Karte Now=Tagad Date=Datums +DateAndHour=Date and hour DateStart=Sākuma datums DateEnd=Beigu datums DateCreation=Izveidošanas datums @@ -295,6 +298,7 @@ UnitPriceHT=Vienības cena (neto) UnitPriceTTC=Vienības cena PriceU=UP PriceUHT=UP (neto) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=UP Amount=Summa AmountInvoice=Rēķina summa @@ -521,6 +525,7 @@ DateFromTo=No %s līdz %s DateFrom=No %s DateUntil=Līdz %s Check=Pārbaudīt +Uncheck=Uncheck Internal=Iekšējs External=Ārējs Internals=Iekšējs @@ -688,6 +693,7 @@ PublicUrl=Publiskā saite AddBox=Pievienot info logu SelectElementAndClickRefresh=Izvēlieties elementu un nospiediet atjaunot PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Pirmdiena Tuesday=Otrdiena diff --git a/htdocs/langs/lv_LV/orders.lang b/htdocs/langs/lv_LV/orders.lang index 32f63671aa0..abed9fe2985 100644 --- a/htdocs/langs/lv_LV/orders.lang +++ b/htdocs/langs/lv_LV/orders.lang @@ -16,7 +16,7 @@ SupplierOrder=Piegādātājs rīkojums SuppliersOrders=Piegādātāji pasūtījumi SuppliersOrdersRunning=Pašreizējie piegādātāju pasūtījumi CustomerOrder=Klienta rīkojums -CustomersOrders=Customers orders +CustomersOrders=Klientu pasūtījumi CustomersOrdersRunning=Pašreizējie klienta/u pasūtījumi CustomersOrdersAndOrdersLines=Klientu pasūtījumus un ordeņa līnijas OrdersToValid=Customers orders to validate @@ -29,7 +29,7 @@ StatusOrderDraftShort=Projekts StatusOrderValidatedShort=Apstiprināts StatusOrderSentShort=Procesā StatusOrderSent=Sūtījuma procesā -StatusOrderOnProcessShort=Ordered +StatusOrderOnProcessShort=Pasūtīts StatusOrderProcessedShort=Apstrādāti StatusOrderToBillShort=Pasludināts StatusOrderToBill2Short=Lai likumprojektu @@ -42,6 +42,7 @@ StatusOrderCanceled=Atcelts StatusOrderDraft=Projekts (ir jāapstiprina) StatusOrderValidated=Apstiprināts StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Apstrādāts StatusOrderToBill=Piegādāts StatusOrderToBill2=Lai likumprojektu @@ -58,6 +59,7 @@ MenuOrdersToBill=Pasūtījumi piegādāti MenuOrdersToBill2=Billable orders SearchOrder=Meklēšanas kārtība SearchACustomerOrder=Meklēt klienta pasūtījumu +SearchASupplierOrder=Search a supplier order ShipProduct=Sūtīt produktu Discount=Atlaide CreateOrder=Izveidot pasūtījumu diff --git a/htdocs/langs/lv_LV/other.lang b/htdocs/langs/lv_LV/other.lang index 875d92a9d5e..731b200e05d 100644 --- a/htdocs/langs/lv_LV/other.lang +++ b/htdocs/langs/lv_LV/other.lang @@ -54,12 +54,13 @@ MaxSize=Maksimālais izmērs AttachANewFile=Pievienot jaunu failu / dokumentu LinkedObject=Saistītais objekts Miscellaneous=Dažādi -NbOfActiveNotifications=Paziņojumu skaits +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Šis ir testa e-pasts \\ nthe divas līnijas ir atdalīti ar rakstatgriezi.. \n\n __ SIGNATURE__ PredefinedMailTestHtml=Tas ir tests pasts (vārds testam jābūt treknrakstā).
Abas līnijas ir atdalīti ar rakstatgriezi.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\n\nYou will find here the invoice __FACREF__\n\n\n__PERSONALIZED__Sincerely\n\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n\n__PERSONALIZED__Sincerely\n\n\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nJums tiek nosūtīts komerciālais piedāvājums __PROPREF__\n\n__PERSONALIZED__Ar cieņu\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/lv_LV/productbatch.lang b/htdocs/langs/lv_LV/productbatch.lang index ebb97632566..97e10b129ff 100644 --- a/htdocs/langs/lv_LV/productbatch.lang +++ b/htdocs/langs/lv_LV/productbatch.lang @@ -2,15 +2,15 @@ ManageLotSerial=Use batch/serial number ProductStatusOnBatch=Yes (Batch/serial required) ProductStatusNotOnBatch=No (Batch/serial not used) -ProductStatusOnBatchShort=Yes -ProductStatusNotOnBatchShort=No +ProductStatusOnBatchShort=Jā +ProductStatusNotOnBatchShort=Nē Batch=Batch/Serial atleast1batchfield=Eat-by date or Sell-by date or Batch number batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/lv_LV/products.lang b/htdocs/langs/lv_LV/products.lang index af56d19cd34..0a00746d8e3 100644 --- a/htdocs/langs/lv_LV/products.lang +++ b/htdocs/langs/lv_LV/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Numurs +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/lv_LV/projects.lang b/htdocs/langs/lv_LV/projects.lang index 1a098a76360..bc4ff4c3057 100644 --- a/htdocs/langs/lv_LV/projects.lang +++ b/htdocs/langs/lv_LV/projects.lang @@ -8,8 +8,10 @@ SharedProject=Visi PrivateProject=Kontakti Projekta MyProjectsDesc=Šis skats ir tikai uz projektiem, jums ir kontakts (kāds ir tipa). ProjectsPublicDesc=Šo viedokli iepazīstina visus projektus jums ir atļauts lasīt. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Šo viedokli iepazīstina visus projektus (jūsu lietotāja atļaujas piešķirt jums atļauju skatīt visu). MyTasksDesc=Šis skats ir tikai uz projektiem vai uzdevumus, jums ir kontakts (kāds ir tipa). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Šo viedokli iepazīstina visus projektus un uzdevumus, jums ir atļauts lasīt. TasksDesc=Šo viedokli iepazīstina visus projektus un uzdevumus (jūsu lietotāja atļaujas piešķirt jums atļauju skatīt visu). ProjectsArea=Projektu sadaļa @@ -29,6 +31,8 @@ NoProject=Neviens projekts nosaka, vai īpašumā NbOpenTasks=Nb atvērto uzdevumu NbOfProjects=Nb projektu TimeSpent=Laiks, kas pavadīts +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Laiks, kas patērēts RefTask=Ref. uzdevums LabelTask=Label uzdevums @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Saraksts piegādātāja pasūtījumu saistī ListSupplierInvoicesAssociatedProject=Saraksts no piegādātāja rēķinus saistīts ar projekta ListContractAssociatedProject=Līgumu sarakstu kas saistīti ar projektu ListFichinterAssociatedProject=Saraksts iejaukšanās saistīts ar projektu -ListTripAssociatedProject=Saraksts braucieniem un izdevumus, kas saistīti ar projektu +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Saraksts ar notikumiem, kas saistīti ar projektu ActivityOnProjectThisWeek=Aktivitāte projektu šonedēļ ActivityOnProjectThisMonth=Aktivitāte projektu šomēnes @@ -133,3 +137,6 @@ SearchAProject=Meklēt projektu ProjectMustBeValidatedFirst=Projektu vispirms jāpārbauda ProjectDraft=Melnraksta projekts FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/lv_LV/salaries.lang b/htdocs/langs/lv_LV/salaries.lang index 18b4acbec94..a08e7eca9b2 100644 --- a/htdocs/langs/lv_LV/salaries.lang +++ b/htdocs/langs/lv_LV/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Alga Salaries=Algas Employee=Darbinieks @@ -6,3 +8,6 @@ NewSalaryPayment=Jauna algas izmaksa SalaryPayment=Algas maksājums SalariesPayments=Algu maksājumi ShowSalaryPayment=Rādīt algu maksājumus +THM=Vidējā stundas cena +TJM=Vidējā dienas cena +CurrentSalary=Current salary diff --git a/htdocs/langs/lv_LV/sendings.lang b/htdocs/langs/lv_LV/sendings.lang index c2533cccfc9..3816af9db35 100644 --- a/htdocs/langs/lv_LV/sendings.lang +++ b/htdocs/langs/lv_LV/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Pasūtītais daudzums QtyShipped=Daudzums kas nosūtīts QtyToShip=Daudzums, kas jānosūta QtyReceived=Saņemtais daudzums -KeepToShip=Glabāt uz kuģa +KeepToShip=Remain to ship OtherSendingsForSameOrder=Citas sūtījumiem uz šo rīkojumu DateSending=Datums nosūtot kārtība DateSendingShort=Datums nosūtot kārtība diff --git a/htdocs/langs/lv_LV/stocks.lang b/htdocs/langs/lv_LV/stocks.lang index 739152d7728..dc0003b69dd 100644 --- a/htdocs/langs/lv_LV/stocks.lang +++ b/htdocs/langs/lv_LV/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Vidējā svērtā cena PMPValueShort=VSC EnhancedValueOfWarehouses=Noliktavas vērtība UserWarehouseAutoCreate=Izveidot noliktavu automātiski, veidojot lietotāju +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Nosūtītais daudzums QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=Noliktava %s tiks izmantota krājumu samazinā WarehouseForStockIncrease=Noliktava %s tiks izmantota krājumu palielināšanai ForThisWarehouse=Šai noliktavai ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=Šis ir saraksts ar visiem atvērtajiem piegādātāju pasūtījumiem +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Papildinājumus NbOfProductBeforePeriod=Produktu daudzums %s noliktavā pirms izvēlētā perioda (< %s) NbOfProductAfterPeriod=Daudzums produktu %s krājumā pēc izvēlētā perioda (> %s) @@ -127,6 +128,7 @@ StockMustBeEnoughForShipment= Stock level must be enough to add product/service MovementLabel=Label of movement InventoryCode=Movement or inventory code IsInPackage=Contained into package -ShowWarehouse=Show warehouse +ShowWarehouse=Rādīt noliktavu MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/lv_LV/suppliers.lang b/htdocs/langs/lv_LV/suppliers.lang index 2e943b50b46..5d278bd1f7a 100644 --- a/htdocs/langs/lv_LV/suppliers.lang +++ b/htdocs/langs/lv_LV/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Piegādātāji -Supplier=Piegādātājs AddSupplier=Izveidot piegādātāju SupplierRemoved=Piegādātājs izņem SuppliersInvoice=Piegādātāji rēķins @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Piegādātāju rēķiniem un maksājumiem ExportDataset_fournisseur_3=Piegādātājs pasūtījumus un pasūtījumu līnijas ApproveThisOrder=Apstiprināt šo pasūtījumu ConfirmApproveThisOrder=Vai jūs tiešām vēlaties apstiprināt pasūtījumu %s? -DenyingThisOrder=Liedzot šo pasūtījumu +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Vai jūs tiešām vēlaties aizliegt šo pasūtījumu %s ? ConfirmCancelThisOrder=Vai esat pārliecināts, ka vēlaties atcelt šo pasūtījumu %s ? AddCustomerOrder=Izveidot klienta pasūtījumu @@ -42,5 +41,5 @@ NoneOrBatchFileNeverRan=Neviens vai partijas %s ne skrēja nesen SentToSuppliers=Nosūtīti uz piegādātājiem ListOfSupplierOrders=Saraksts ar piegādātāju pasūtījumiem MenuOrdersSupplierToBill=Supplier orders to invoice -NbDaysToDelivery=Delivery delay in days +NbDaysToDelivery=Piegādes kavēšanās dienās DescNbDaysToDelivery=The biggest delay is display among order product list diff --git a/htdocs/langs/lv_LV/trips.lang b/htdocs/langs/lv_LV/trips.lang index 6fa2983bfa0..27f569e1b83 100644 --- a/htdocs/langs/lv_LV/trips.lang +++ b/htdocs/langs/lv_LV/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Brauciens -Trips=Braucieni -TripsAndExpenses=Trips un izdevumi -TripsAndExpensesStatistics=Trips un izdevumi statistika -TripCard=Ceļojuma kartiņa -AddTrip=Pievienot ceļojumu -ListOfTrips=Saraksts braucieniem +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Saraksts maksu -NewTrip=Jauns brauciens +NewTrip=New expense report CompanyVisited=Kompānija / organizācija apmeklēta Kilometers=Kilometri FeesKilometersOrAmout=Summa vai kilometri -DeleteTrip=Dzēst ceļojumu -ConfirmDeleteTrip=Vai tiešām vēlaties dzēst šo braucienu? -TF_OTHER=Cits -TF_LUNCH=Pusdienas -TF_TRIP=Brauciens -ListTripsAndExpenses=Saraksts braucienu un izdevumu -ExpensesArea=Trips un izdevumi zona -SearchATripAndExpense=Meklēt ceļojumu un izdevumiem +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Cits +TF_TRANSPORTATION=Transportation +TF_LUNCH=Pusdienas +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/mk_MK/admin.lang b/htdocs/langs/mk_MK/admin.lang index 38634cbd497..9782c2ea27f 100644 --- a/htdocs/langs/mk_MK/admin.lang +++ b/htdocs/langs/mk_MK/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimental VersionDevelopment=Development VersionUnknown=Unknown VersionRecommanded=Recommended +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Session ID SessionSaveHandler=Handler to save sessions SessionSavePath=Storage session localization @@ -493,10 +498,16 @@ Module600Name=Notifications Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Donations Module700Desc=Donation management +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1400Name=Accounting Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Categories Module1780Desc=Category management (products, suppliers and customers) Module2000Name=WYSIWYG editor @@ -631,7 +642,7 @@ Permission181=Read supplier orders Permission182=Create/modify supplier orders Permission183=Validate supplier orders Permission184=Approve supplier orders -Permission185=Order supplier orders +Permission185=Order or cancel supplier orders Permission186=Receive supplier orders Permission187=Close supplier orders Permission188=Cancel supplier orders @@ -711,6 +722,13 @@ Permission538=Export services Permission701=Read donations Permission702=Create/modify donations Permission703=Delete donations +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Read stocks Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Password to use the proxy server DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s. ExtraFields=Complementary attributes ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=A line of product/service with a zero amount is consid FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Order management setup OrdersNumberingModules=Orders numbering models @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barcode of type UPC BarcodeDescISBN=Barcode of type ISBN BarcodeDescC39=Barcode of type C39 BarcodeDescC128=Barcode of type C128 -GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Default account to use to receive cash payments CashDeskBankAccountForCheque= Default account to use to receive payments by cheque CashDeskBankAccountForCB= Default account to use to receive payments by credit cards -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Bookmark module setup @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/mk_MK/banks.lang b/htdocs/langs/mk_MK/banks.lang index 10a5f5b3c14..a2306950fb4 100644 --- a/htdocs/langs/mk_MK/banks.lang +++ b/htdocs/langs/mk_MK/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Reconciliation RIB=Bank Account Number IBAN=IBAN number +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Standing orders StandingOrder=Standing order Withdrawals=Withdrawals @@ -148,7 +152,7 @@ BackToAccount=Back to account ShowAllAccounts=Show for all accounts FutureTransaction=Transaction in futur. No way to conciliate. SelectChequeTransactionAndGenerate=Select/filter checks to include into the check deposit receipt and click on "Create". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/mk_MK/commercial.lang b/htdocs/langs/mk_MK/commercial.lang index e7d2de76503..7acdc7bd7e6 100644 --- a/htdocs/langs/mk_MK/commercial.lang +++ b/htdocs/langs/mk_MK/commercial.lang @@ -9,9 +9,9 @@ Prospect=Prospect Prospects=Prospects DeleteAction=Delete an event/task NewAction=New event/task -AddAction=Add event/task -AddAnAction=Add an event/task -AddActionRendezVous=Add a Rendez-vous event +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Rendezvous ConfirmDeleteAction=Are you sure you want to delete this event/task ? CardAction=Event card @@ -44,8 +44,8 @@ DoneActions=Completed events DoneActionsFor=Completed events for %s ToDoActions=Incomplete events ToDoActionsFor=Incomplete events for %s -SendPropalRef=Send commercial proposal %s -SendOrderRef=Send order %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Not applicable StatusActionToDo=To do StatusActionDone=Complete diff --git a/htdocs/langs/mk_MK/contracts.lang b/htdocs/langs/mk_MK/contracts.lang index 57ba3bb15d8..d1be0e6513f 100644 --- a/htdocs/langs/mk_MK/contracts.lang +++ b/htdocs/langs/mk_MK/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expired ServiceStatusClosed=Closed ServicesLegend=Services legend Contracts=Contracts +ContractsAndLine=Contracts and line of contracts Contract=Contract NoContracts=No contracts MenuServices=Services diff --git a/htdocs/langs/mk_MK/cron.lang b/htdocs/langs/mk_MK/cron.lang index 82f4574b223..28dfc7770b2 100644 --- a/htdocs/langs/mk_MK/cron.lang +++ b/htdocs/langs/mk_MK/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/mk_MK/errors.lang b/htdocs/langs/mk_MK/errors.lang index 497ddd814e4..700e6344d7d 100644 --- a/htdocs/langs/mk_MK/errors.lang +++ b/htdocs/langs/mk_MK/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be differen ErrorBadThirdPartyName=Bad value for third party name ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Customer code already used @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript must not be disabled to have this featur ErrorPasswordsMustMatch=Both typed passwords must match each other ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) -ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) ErrorsOnXLines=Errors on %s source record(s) ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/mk_MK/install.lang b/htdocs/langs/mk_MK/install.lang index 5a494156672..dcd8df6e7db 100644 --- a/htdocs/langs/mk_MK/install.lang +++ b/htdocs/langs/mk_MK/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Last step: Define here login and password you plan ActivateModule=Activate module %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/mk_MK/main.lang b/htdocs/langs/mk_MK/main.lang index 62adb884547..81deb7c28f0 100644 --- a/htdocs/langs/mk_MK/main.lang +++ b/htdocs/langs/mk_MK/main.lang @@ -141,6 +141,7 @@ Cancel=Cancel Modify=Modify Edit=Edit Validate=Validate +ValidateAndApprove=Validate and Approve ToValidate=To validate Save=Save SaveAs=Save As @@ -158,6 +159,7 @@ Search=Search SearchOf=Search Valid=Valid Approve=Approve +Disapprove=Disapprove ReOpen=Re-Open Upload=Send file ToLink=Link @@ -219,6 +221,7 @@ Cards=Cards Card=Card Now=Now Date=Date +DateAndHour=Date and hour DateStart=Date start DateEnd=Date end DateCreation=Creation date @@ -295,6 +298,7 @@ UnitPriceHT=Unit price (net) UnitPriceTTC=Unit price PriceU=U.P. PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=U.P. Amount=Amount AmountInvoice=Invoice amount @@ -521,6 +525,7 @@ DateFromTo=From %s to %s DateFrom=From %s DateUntil=Until %s Check=Check +Uncheck=Uncheck Internal=Internal External=External Internals=Internal @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/mk_MK/orders.lang b/htdocs/langs/mk_MK/orders.lang index 34792ae1eb2..8efafa5e94e 100644 --- a/htdocs/langs/mk_MK/orders.lang +++ b/htdocs/langs/mk_MK/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Canceled StatusOrderDraft=Draft (needs to be validated) StatusOrderValidated=Validated StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Processed StatusOrderToBill=Delivered StatusOrderToBill2=To bill @@ -58,6 +59,7 @@ MenuOrdersToBill=Orders delivered MenuOrdersToBill2=Billable orders SearchOrder=Search order SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Ship product Discount=Discount CreateOrder=Create Order diff --git a/htdocs/langs/mk_MK/other.lang b/htdocs/langs/mk_MK/other.lang index 88991888183..08747ea884b 100644 --- a/htdocs/langs/mk_MK/other.lang +++ b/htdocs/langs/mk_MK/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximum size AttachANewFile=Attach a new file/document LinkedObject=Linked object Miscellaneous=Miscellaneous -NbOfActiveNotifications=Number of notifications +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/mk_MK/productbatch.lang b/htdocs/langs/mk_MK/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/mk_MK/productbatch.lang +++ b/htdocs/langs/mk_MK/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/mk_MK/products.lang b/htdocs/langs/mk_MK/products.lang index 3a29639b12b..3a18cda69e7 100644 --- a/htdocs/langs/mk_MK/products.lang +++ b/htdocs/langs/mk_MK/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/mk_MK/projects.lang b/htdocs/langs/mk_MK/projects.lang index b3c150d1687..0a12f4c64b7 100644 --- a/htdocs/langs/mk_MK/projects.lang +++ b/htdocs/langs/mk_MK/projects.lang @@ -8,8 +8,10 @@ SharedProject=Everybody PrivateProject=Contacts of project MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=This view presents all projects and tasks you are allowed to read. TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). ProjectsArea=Projects area @@ -29,6 +31,8 @@ NoProject=No project defined or owned NbOpenTasks=Nb of opened tasks NbOfProjects=Nb of projects TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Time spent RefTask=Ref. task LabelTask=Label task @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=List of supplier's orders associated with th ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated with the project ListContractAssociatedProject=List of contracts associated with the project ListFichinterAssociatedProject=List of interventions associated with the project -ListTripAssociatedProject=List of trips and expenses associated with the project +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=List of events associated with the project ActivityOnProjectThisWeek=Activity on project this week ActivityOnProjectThisMonth=Activity on project this month @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/mk_MK/salaries.lang b/htdocs/langs/mk_MK/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/mk_MK/salaries.lang +++ b/htdocs/langs/mk_MK/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/mk_MK/sendings.lang b/htdocs/langs/mk_MK/sendings.lang index 794c9019c86..b1ff55f71c1 100644 --- a/htdocs/langs/mk_MK/sendings.lang +++ b/htdocs/langs/mk_MK/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Qty ordered QtyShipped=Qty shipped QtyToShip=Qty to ship QtyReceived=Qty received -KeepToShip=Keep to ship +KeepToShip=Remain to ship OtherSendingsForSameOrder=Other shipments for this order DateSending=Date sending order DateSendingShort=Date sending order diff --git a/htdocs/langs/mk_MK/stocks.lang b/htdocs/langs/mk_MK/stocks.lang index 9de2e5a4dbe..29706d17615 100644 --- a/htdocs/langs/mk_MK/stocks.lang +++ b/htdocs/langs/mk_MK/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Weighted average price PMPValueShort=WAP EnhancedValueOfWarehouses=Warehouses value UserWarehouseAutoCreate=Create a warehouse automatically when creating a user +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Quantity dispatched QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/mk_MK/suppliers.lang b/htdocs/langs/mk_MK/suppliers.lang index 7b4d4acb244..baf573c66ac 100644 --- a/htdocs/langs/mk_MK/suppliers.lang +++ b/htdocs/langs/mk_MK/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Suppliers -Supplier=Supplier AddSupplier=Create a supplier SupplierRemoved=Supplier removed SuppliersInvoice=Suppliers invoice @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Supplier invoices and payments ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Approve this order ConfirmApproveThisOrder=Are you sure you want to approve order %s ? -DenyingThisOrder=Denying this order +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? AddCustomerOrder=Create customer order diff --git a/htdocs/langs/mk_MK/trips.lang b/htdocs/langs/mk_MK/trips.lang index 4b0501a8346..ba36fc9b07b 100644 --- a/htdocs/langs/mk_MK/trips.lang +++ b/htdocs/langs/mk_MK/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Trip -Trips=Trips -TripsAndExpenses=Trips and expenses -TripsAndExpensesStatistics=Trips and expenses statistics -TripCard=Trip card -AddTrip=Add trip -ListOfTrips=List of trips +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=List of fees -NewTrip=New trip +NewTrip=New expense report CompanyVisited=Company/foundation visited Kilometers=Kilometers FeesKilometersOrAmout=Amount or kilometers -DeleteTrip=Delete trip -ConfirmDeleteTrip=Are you sure you want to delete this trip ? -TF_OTHER=Other -TF_LUNCH=Lunch -TF_TRIP=Trip -ListTripsAndExpenses=List of trips and expenses -ExpensesArea=Trips and expenses area -SearchATripAndExpense=Search a trip and expense +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/nb_NO/admin.lang b/htdocs/langs/nb_NO/admin.lang index 238fc3708dd..a094028679b 100644 --- a/htdocs/langs/nb_NO/admin.lang +++ b/htdocs/langs/nb_NO/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Eksperimentell VersionDevelopment=Utviklingsversjon VersionUnknown=Ukjent VersionRecommanded=Anbefalt +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Økt ID SessionSaveHandler=Handler for å lagre sessions SessionSavePath=Lagring økt lokalisering @@ -46,7 +51,7 @@ ErrorDecimalLargerThanAreForbidden=Feil: Presisjon over %s støttes ikke. DictionarySetup=Dictionary setup Dictionary=Dictionaries Chartofaccounts=Chart of accounts -Fiscalyear=Fiscal years +Fiscalyear=Regnskapsår ErrorReservedTypeSystemSystemAuto=Value 'system' og 'systemauto' for type er reservert. Du kan bruke 'user' som verdi å legge til din egen oppføring ErrorCodeCantContainZero=Koden kan ikke inneholde verdien 0 DisableJavascript=Disable JavaScript and Ajax functions (Recommended for blind person or text browsers) @@ -80,7 +85,7 @@ NextValue=Neste verdi NextValueForInvoices=Neste verdi (fakturaer) NextValueForCreditNotes=Neste verdi (kreditnotaer) NextValueForDeposit=Next value (deposit) -NextValueForReplacements=Next value (replacements) +NextValueForReplacements=Neste verdi (erstatninger) MustBeLowerThanPHPLimit=OBS: PHP begrenser hver filopplastning til %s %s, uansett hva som er angitt her NoMaxSizeByPHPLimit=OBS: Det er ikke satt noen øvre grense i PHP på denne serveren MaxSizeForUploadedFiles=Maksimal filstørrelse for opplasting av filer (0 for å ikke tillate opplasting) @@ -493,10 +498,16 @@ Module600Name=Varselmeldinger Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Donasjoner Module700Desc=Behandling av donasjoner +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantisintegrasjon Module1400Name=Regnskapsekspert Module1400Desc=Behandling av regnskapssopplysninger for eksperter (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Kategorier Module1780Desc=Behandling av kategorier (varer, leverandører og kunder) Module2000Name=Fckeditor @@ -522,7 +533,7 @@ Module3100Name=Skype Module3100Desc=Add a Skype button into card of adherents / third parties / contacts Module5000Name=Multi-selskap Module5000Desc=Lar deg administrere flere selskaper -Module6000Name=Workflow +Module6000Name=Arbeidsflyt Module6000Desc=Workflow management Module20000Name=Leave Requests management Module20000Desc=Declare and follow employees leaves requests @@ -631,7 +642,7 @@ Permission181=Vise leverandøreorde Permission182=Lage/endre leverandørordre Permission183=Godkjenne leverandørordre Permission184=Bekrefte leverandørerordre -Permission185=Bestille leverandørordre +Permission185=Order or cancel supplier orders Permission186=Motta leverandørordre Permission187=Lukke leverandørordre Permission188=Avbryte leverandørordre @@ -711,6 +722,13 @@ Permission538=Eksporter tjenester Permission701=Vise donasjoner Permission702=Lage/endre donasjoner Permission703=Slette donasjoner +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Vise beholdning Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Passord for å bruke proxy-server DefineHereComplementaryAttributes=Definer her alle atributes, ikke allerede er tilgjengelig som standard, og at du ønsker å bli støttet for %s. ExtraFields=Komplementære attributter ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Komplementære attributter (thirdparty) ExtraFieldsContacts=Komplementære attributter (kontakt / adresse) ExtraFieldsMember=Komplementære attributter (medlem) @@ -1059,8 +1079,8 @@ SearchOptim=Search optimization YouHaveXProductUseSearchOptim=You have %s product into database. You should add the constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 into Home-Setup-Other, you limit the search to the beginning of strings making possible for database to use index and you should get an immediate response. BrowserIsOK=You are using the web browser %s. This browser is ok for security and performance. BrowserIsKO=You are using the web browser %s. This browser is known to be a bad choice for security, performance and reliability. We recommand you to use Firefox, Chrome, Opera or Safari. -XDebugInstalled=XDebug is loaded. -XCacheInstalled=XCache is loaded. +XDebugInstalled=XDebug er lastet +XCacheInstalled=XCache er lastet AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". FieldEdition=Edition of field %s FixTZ=TimeZone fix @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=En produkt/tjeneste med med null i kvantum blir betrak FreeLegalTextOnProposal=Fritekst på tilbud WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Innstillinger for ordre OrdersNumberingModules=Nummereringsmodul for ordre @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barcode of type UPC BarcodeDescISBN=Barcode of type ISBN BarcodeDescC39=Barcode of type C39 BarcodeDescC128=Barcode of type C128 -GenbarcodeLocation=Kommandolinjeverktøy for generering av strekkode (brukes av phpbarcode til noen strekkodetyper) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Kassekonto som skal brukes til kontantsalg CashDeskBankAccountForCheque= Konto som skal brukes til å motta utbetalinger via sjekk CashDeskBankAccountForCB= Konto som skal brukes til å motta kontant betaling med kredittkort -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Legg modul oppsett @@ -1540,7 +1568,7 @@ TestGeoIPResult=Test av en konvertering IP -> landet ProjectsNumberingModules=Prosjekter nummerering modulen ProjectsSetup=Prosjekt modul oppsett ProjectsModelModule=Prosjektets rapport dokument modellen -TasksNumberingModules=Tasks numbering module +TasksNumberingModules=Modul for oppgavenummerering TaskModelModule=Tasks reports document model ##### ECM (GED) ##### ECMSetup = GED Setup @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/nb_NO/agenda.lang b/htdocs/langs/nb_NO/agenda.lang index 33d73a70db1..dfddfc2b3e6 100644 --- a/htdocs/langs/nb_NO/agenda.lang +++ b/htdocs/langs/nb_NO/agenda.lang @@ -58,9 +58,9 @@ OrderSentByEMail=Kundeordrer %s på e-post InvoiceSentByEMail=Faktura %s på e-post SupplierOrderSentByEMail=Leverandør bestill %s på e-post SupplierInvoiceSentByEMail=Leverandørfaktura %s på e-post -ShippingSentByEMail=Shipment %s sent by EMail -ShippingValidated= Shipment %s validated -InterventionSentByEMail=Intervention %s sent by EMail +ShippingSentByEMail=Forsendelse %s sendt på epost +ShippingValidated= Forsendelse %s godkjent +InterventionSentByEMail=Intervensjon %s sendt på epost NewCompanyToDolibarr= Tredjepart opprettet DateActionPlannedStart= Planlagt startdato DateActionPlannedEnd= Planlagt sluttdato diff --git a/htdocs/langs/nb_NO/banks.lang b/htdocs/langs/nb_NO/banks.lang index 6c09ee45ac6..754164a0f69 100644 --- a/htdocs/langs/nb_NO/banks.lang +++ b/htdocs/langs/nb_NO/banks.lang @@ -8,7 +8,7 @@ FinancialAccount=Hovedbokskonto FinancialAccounts=Hovebokskonti BankAccount=Bankkonto BankAccounts=Bankkonti -ShowAccount=Show Account +ShowAccount=Vis konto AccountRef=Kontonummer hovedbokskonto AccountLabel=Kontonavn hovedbokskonto CashAccount=Kassekonto @@ -33,7 +33,11 @@ AllTime=Fra start Reconciliation=Bankavstemming RIB=Bankkontonummer IBAN=IBAN-nummer +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT-nummer +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Åpne ordre StandingOrder=Åpne ordre Withdrawals=Uttak @@ -148,7 +152,7 @@ BackToAccount=Tilbake til kontoen ShowAllAccounts=Vis for alle kontoer FutureTransaction=Transaksjon i Futur. Ingen måte å forsone. SelectChequeTransactionAndGenerate=Velg / filter sjekker for å inkludere inn sjekken innskudd kvitteringen og klikk på "Create". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/nb_NO/bills.lang b/htdocs/langs/nb_NO/bills.lang index 69715443816..db2883bb788 100644 --- a/htdocs/langs/nb_NO/bills.lang +++ b/htdocs/langs/nb_NO/bills.lang @@ -1,16 +1,16 @@ # Dolibarr language file - Source file is en_US - bills Bill=Faktura Bills=Fakturaer -BillsCustomers=Customers invoices -BillsCustomer=Customers invoice -BillsSuppliers=Suppliers invoices -BillsCustomersUnpaid=Unpaid customers invoices +BillsCustomers=Kundens fakturaer +BillsCustomer=Kundens faktura +BillsSuppliers=Leverandørens fakturaer +BillsCustomersUnpaid=Ubetalte kundefakturaer BillsCustomersUnpaidForCompany=Ubetalte kundefakturaer for %s BillsSuppliersUnpaid=Ubetalte leverandørfakturaer BillsSuppliersUnpaidForCompany=Ubetalt leverandørens fakturaer for %s BillsLate=Sene betalinger -BillsStatistics=Customers invoices statistics -BillsStatisticsSuppliers=Suppliers invoices statistics +BillsStatistics=Kundens fakturastatistikk +BillsStatisticsSuppliers=Leverandørens fakturastatistikk DisabledBecauseNotErasable=Deaktivert fordi kan ikke slettes InvoiceStandard=Standardfaktura InvoiceStandardAsk=Standardfaktura @@ -66,12 +66,12 @@ ConfirmConvertToReduc=Ønsker du å konvertere denne kreditnotaen til absolutt r SupplierPayments=Leverandørbetalinger ReceivedPayments=Mottatte betalinger ReceivedCustomersPayments=Betalinger mottatt fra kunder -PayedSuppliersPayments=Payments payed to suppliers +PayedSuppliersPayments=Betalinger til leverandører ReceivedCustomersPaymentsToValid=Mottatte kundebetalinger som trenger godkjenning PaymentsReportsForYear=Betalingsrapport for %s PaymentsReports=Betalingsrapporter PaymentsAlreadyDone=Betalinger allerede utført -PaymentsBackAlreadyDone=Payments back already done +PaymentsBackAlreadyDone=Tilbakebetalinger allerede utført PaymentRule=Betalingsregel PaymentMode=Betalingsmåte PaymentConditions=Betalingsbetingelser @@ -87,7 +87,7 @@ ClassifyCanceled=Merk 'Tapsført' ClassifyClosed=Merk 'Lukket' ClassifyUnBilled=Classify 'Unbilled' CreateBill=Lag faktura -AddBill=Create invoice or credit note +AddBill=Legg til faktura eller kreditnota AddToDraftInvoices=Add to draft invoice DeleteBill=Slett faktura SearchACustomerInvoice=Finn kundefaktura @@ -99,7 +99,7 @@ DoPaymentBack=Utfør tilbakebetaling ConvertToReduc=Konverter til framtidig rabatt EnterPaymentReceivedFromCustomer=Legg inn betaling mottatt fra kunde EnterPaymentDueToCustomer=Lag purring til kunde -DisabledBecauseRemainderToPayIsZero=Disabled because remaining unpaid is zero +DisabledBecauseRemainderToPayIsZero=Slått av fordi restbeløpet er null Amount=Beløp PriceBase=Prisgrunnlag BillStatus=Fakturastatus @@ -186,7 +186,7 @@ ShowInvoiceDeposit=Vis depositum faktura ShowPayment=Vis betaling File=Fil AlreadyPaid=Allerede betalt -AlreadyPaidBack=Already paid back +AlreadyPaidBack=Allerede tilbakebetalt AlreadyPaidNoCreditNotesNoDeposits=Allerede betalt (uten kreditt notater og innskudd) Abandoned=Tapsført RemainderToPay=Remaining unpaid @@ -202,7 +202,7 @@ StandingOrders=Utestående ordre StandingOrder=Utestående ordre NoDraftBills=Ingen fakturakladder NoOtherDraftBills=Ingen andre fakturakladder -NoDraftInvoices=No draft invoices +NoDraftInvoices=Ingen fakturakladder RefBill=Fakturareferanse ToBill=Til fakturering RemainderToBill=Resterende til fakturering diff --git a/htdocs/langs/nb_NO/boxes.lang b/htdocs/langs/nb_NO/boxes.lang index ec23fa05e30..91a6b66cb78 100644 --- a/htdocs/langs/nb_NO/boxes.lang +++ b/htdocs/langs/nb_NO/boxes.lang @@ -1,63 +1,67 @@ # Dolibarr language file - Source file is en_US - boxes BoxLastRssInfos=Rss informasjon BoxLastProducts=Siste produkter/tjenester -# BoxProductsAlertStock=Products in stock alert +BoxProductsAlertStock=Varsel om produkter på lager BoxLastProductsInContract=Siste kontraktsinngåtte produkter/tjenester BoxLastSupplierBills=Siste leverandørfakturaer BoxLastCustomerBills=Siste kundefakturaer BoxOldestUnpaidCustomerBills=Eldste ubetalte kundefakturaer BoxOldestUnpaidSupplierBills=Eldste ubetalte leverandørfakturaer -BoxLastProposals=Siste tilbuder -BoxLastProspects=Siste prospekter -BoxLastCustomers=Siste kunder -BoxLastSuppliers=Siste leverandører +BoxLastProposals=Siste tilbud +BoxLastProspects=Siste endrede prospekter +BoxLastCustomers=Siste endrede kunder +BoxLastSuppliers=Siste endrede leverandører BoxLastCustomerOrders=Siste kundeordre +BoxLastValidatedCustomerOrders=Siste godkjente kundeordrer BoxLastBooks=Siste bøker BoxLastActions=Siste handlinger BoxLastContracts=Siste kontrakter BoxLastContacts=Siste kontakter / adresser BoxLastMembers=Siste medlemmer -# BoxFicheInter=Last interventions -# BoxCurrentAccounts=Opened accounts balance +BoxFicheInter=Siste intervensjoner +BoxCurrentAccounts=Åpnet kontobalanse BoxSalesTurnover=Omsetning -BoxTotalUnpaidCustomerBills=Totalt utestående kunder -BoxTotalUnpaidSuppliersBills=Totalt utestående leverandører +BoxTotalUnpaidCustomerBills=Totalt utestående kundefakturaer +BoxTotalUnpaidSuppliersBills=Totalt utestående leverandørfakturaer BoxTitleLastBooks=Siste %s registrerte bøker BoxTitleNbOfCustomers=Antall kunder BoxTitleLastRssInfos=Siste %s nyheter fra %s BoxTitleLastProducts=Siste %s endrede produkter/tjenester -# BoxTitleProductsAlertStock=Products in stock alert -BoxTitleLastCustomerOrders=Siste %s endrede kundeordre +BoxTitleProductsAlertStock=Varsel om produkter på lager +BoxTitleLastCustomerOrders=Siste %s kundeordre +BoxTitleLastModifiedCustomerOrders=Siste %s endrede kundeordrer BoxTitleLastSuppliers=Siste %s registrerte leverandører BoxTitleLastCustomers=Siste %s registrerte kunder -BoxTitleLastModifiedSuppliers=Sist endret %s leverandører -BoxTitleLastModifiedCustomers=Sist endret %s kunder +BoxTitleLastModifiedSuppliers=Sist endrede %s leverandører +BoxTitleLastModifiedCustomers=Sist endrede %s kunder BoxTitleLastCustomersOrProspects=Siste %s registrerte kunder eller prospekter BoxTitleLastPropals=Siste %s registrerte tilbud +BoxTitleLastModifiedPropals=Siste %s endrede tilbud BoxTitleLastCustomerBills=Siste %s kundefakturaer +BoxTitleLastModifiedCustomerBills=Siste %s endrede kundefakturaer BoxTitleLastSupplierBills=Siste %s leverandørfakturaer -BoxTitleLastProspects=Siste %s registrerte prospekter -BoxTitleLastModifiedProspects=Sist %s endret utsiktene -BoxTitleLastProductsInContract=Siste %s produkter/tjenerster i kontraketer -BoxTitleLastModifiedMembers=Siste %s endret medlemmer -# BoxTitleLastFicheInter=Last %s modified intervention +BoxTitleLastModifiedSupplierBills=Siste %s endrede leverandørfakturaer +BoxTitleLastModifiedProspects=Sist %s endrede prospekter +BoxTitleLastProductsInContract=Siste %s produkter/tjenerster i kontrakter +BoxTitleLastModifiedMembers=Siste %s endrede medlemmer +BoxTitleLastFicheInter=Siste %s endrede intervensjon BoxTitleOldestUnpaidCustomerBills=Eldste %s ubetalte kundefakturaer BoxTitleOldestUnpaidSupplierBills=Eldste %s ubetalte leverandørfakturaer -# BoxTitleCurrentAccounts=Opened account's balances +BoxTitleCurrentAccounts=Åpnede kontobalanser BoxTitleSalesTurnover=Omsetning BoxTitleTotalUnpaidCustomerBills=Ubetalte kundefakturaer BoxTitleTotalUnpaidSuppliersBills=Ubetalte leverandørfakturaer -BoxTitleLastModifiedContacts=Siste %s endret kontakter / adresser +BoxTitleLastModifiedContacts=Siste %s endrede kontakter/adresser BoxMyLastBookmarks=Mine siste %s bokmerker BoxOldestExpiredServices=Eldste aktive utløpte tjenester BoxLastExpiredServices=Siste %s eldste kontakter med aktive utløpte tjenester BoxTitleLastActionsToDo=Siste %s åpne handlinger BoxTitleLastContracts=Siste %s kontrakter -BoxTitleLastModifiedDonations=Siste %s endret donasjoner -BoxTitleLastModifiedExpenses=Siste %s endret utgifter -# BoxGlobalActivity=Global activity (invoices, proposals, orders) +BoxTitleLastModifiedDonations=Siste %s endrede donasjoner +BoxTitleLastModifiedExpenses=Siste %s endrede utgifter +BoxGlobalActivity=Global aktivitet (fakturaer, tilbud, ordrer) FailedToRefreshDataInfoNotUpToDate=Klarte ikke å oppdatere RSS-strøm. Siste vellykkede oppdatering: %s -LastRefreshDate=Siste oppdatering dato +LastRefreshDate=Siste oppdateringsdato NoRecordedBookmarks=Ingen bokmerker definert. Trykk her for å legge til bokmerker. ClickToAdd=Klikk her for å legge til. NoRecordedCustomers=Ingen registrerte kunder @@ -69,23 +73,24 @@ NoRecordedInvoices=Ingen registrerte kundefakturaer NoUnpaidCustomerBills=Ingen ubetalte kundefakturaer NoRecordedSupplierInvoices=Ingen registrte leverandørfakturaer NoUnpaidSupplierBills=Ingen ubetalte leverandørfakturaer -NoModifiedSupplierBills=Ingen registrert leverandørens faktura -NoRecordedProducts=Ingen registrert produkter / tjenester -NoRecordedProspects=Ingen registrert utsikter -NoContractedProducts=Ingen produkter / tjenester innleide -NoRecordedContracts=Ingen registrert kontrakter -# NoRecordedInterventions=No recorded interventions -# BoxLatestSupplierOrders=Latest supplier orders -# BoxTitleLatestSupplierOrders=%s latest supplier orders -# NoSupplierOrder=No recorded supplier order -# BoxCustomersInvoicesPerMonth=Customer invoices per month -# BoxSuppliersInvoicesPerMonth=Supplier invoices per month -# BoxCustomersOrdersPerMonth=Customer orders per month -# BoxSuppliersOrdersPerMonth=Supplier orders per month -# BoxProposalsPerMonth=Proposals per month -# NoTooLowStockProducts=No product under the low stock limit -# BoxProductDistribution=Products/Services distribution -# BoxProductDistributionFor=Distribution of %s for %s +NoModifiedSupplierBills=Ingen registrerte leverandørfakturaer +NoRecordedProducts=Ingen registrerte produkter/tjenester +NoRecordedProspects=Ingen registrerte prospekter +NoContractedProducts=Ingen innleide produkter/tjenester +NoRecordedContracts=Ingen registrerte kontrakter +NoRecordedInterventions=Ingen registrerte intervensjoner +BoxLatestSupplierOrders=Siste leverandørordrer +BoxTitleLatestSupplierOrders=Siste %s leverandørordrer +BoxTitleLatestModifiedSupplierOrders=Siste %s endrede leverandørordrer +NoSupplierOrder=Ingen registrerte leveradørordrer +BoxCustomersInvoicesPerMonth=Kundefakturaer pr. mnd. +BoxSuppliersInvoicesPerMonth=Leverandørfakturaer pr. mnd. +BoxCustomersOrdersPerMonth=Kundeordrer pr. mnd. +BoxSuppliersOrdersPerMonth=Leverandørordrer pr. mnd. +BoxProposalsPerMonth=Tilbud pr. mnd. +NoTooLowStockProducts=Ingen produkter med for lav beholdning +BoxProductDistribution=Fordeling produkter/tjenester +BoxProductDistributionFor=Fordeling av %s for %s ForCustomersInvoices=Kundens fakturaer -# ForCustomersOrders=Customers orders +ForCustomersOrders=Kundeordrer ForProposals=Tilbud diff --git a/htdocs/langs/nb_NO/cashdesk.lang b/htdocs/langs/nb_NO/cashdesk.lang index 0e0b168257c..c01ee45a2c7 100644 --- a/htdocs/langs/nb_NO/cashdesk.lang +++ b/htdocs/langs/nb_NO/cashdesk.lang @@ -1,40 +1,40 @@ # Language file - Source file is en_US - cashdesk -CashDeskMenu=Point of sale -CashDesk=Point of sale -CashDesks=Point of salg +CashDeskMenu=Utsalgssted +CashDesk=Utsalgssted +CashDesks=Utsalgssted CashDeskBank=Bankkonto CashDeskBankCash=Bankkonto (kontanter) CashDeskBankCB=Bankkonto (kort) CashDeskBankCheque=Bankkonto (sjekk) -CashDeskWarehouse=Warehouse -CashdeskShowServices=Selge tjenester +CashDeskWarehouse=Varehus +CashdeskShowServices=Selgende tjenester CashDeskProducts=Produkter CashDeskStock=Lager CashDeskOn=på CashDeskThirdParty=Tredjepart -# CashdeskDashboard=Point of sale access +CashdeskDashboard=Adgang utsalgssted ShoppingCart=Handlekurv -NewSell=Ny selger -BackOffice=Tilbake kontor -AddThisArticle=Legg denne artikkelen -RestartSelling=Gå tilbake på selger -SellFinished=Selg ferdig +NewSell=Nytt salg +BackOffice=Administrasjonen +AddThisArticle=Legg til denne artikkelen +RestartSelling=Gå tilbake på salg +SellFinished=Salg avsluttet PrintTicket=Skriv billett -NoProductFound=Ingen artikkelen funnet -ProductFound=Produktet funnet +NoProductFound=Ingen artikler funnet +ProductFound=produktet funnet ProductsFound=produkter funnet -NoArticle=Ingen artikkelen +NoArticle=Ingen artikkel Identification=Identifisering Article=Artikkel Difference=Forskjell TotalTicket=Totalt billett -NoVAT=Ingen moms for dette salget -Change=Overflødig mottatt +NoVAT=Ingen mva for dette salget +Change=For mye mottatt CalTip=Klikk for å vise kalenderen -CashDeskSetupStock=Du spør for å redusere beholdningen faktura etableringen, men lager for dette er ikke ble definert
Endre lager modul oppsett, eller velge en lagerbygning +CashDeskSetupStock=Forespørsel om å redusere varebeholdning ved opprettelse av faktura uten at varehus er definert
Endre lagermodul oppsettet, eller velg et annet varehus BankToPay=Debiteringskonto ShowCompany=Vis selskap ShowStock=Vis lager DeleteArticle=Klikk for å fjerne denne artikkelen -# FilterRefOrLabelOrBC=Search (Ref/Label) -# UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock. +FilterRefOrLabelOrBC=Søk (Referanse/Etikett) +UserNeedPermissionToEditStockToUsePos=Forespørsel om å redusere varebeholdning ved opprettelse av faktura. POS bruker må ha adgang til å endre varebeholdning diff --git a/htdocs/langs/nb_NO/categories.lang b/htdocs/langs/nb_NO/categories.lang index 2458dff2fb9..d03d3f0aa7b 100644 --- a/htdocs/langs/nb_NO/categories.lang +++ b/htdocs/langs/nb_NO/categories.lang @@ -15,12 +15,12 @@ ProductsCategoriesArea=Område for kategorier : produkter/tjenester SuppliersCategoriesArea=Område for kategorier : Leverandører CustomersCategoriesArea=Område for kategorier : Kunder ThirdPartyCategoriesArea=Område for kategorier : Tredjeparter -MembersCategoriesArea=Medlemmer kategorier området +MembersCategoriesArea=Medlemmers kategoriområder ContactsCategoriesArea=Kontaktkategorier MainCats=Hovedkategorier SubCats=Underkategorier CatStatistics=Statistikk -CatList=Oversikt over kategorier +CatList=Liste over kategorier AllCats=Alle kategorier ViewCat=Vis kategori NewCat=Legg til kategori @@ -39,7 +39,7 @@ ErrSameCatSelected=Du har valgt samme kategori flere ganger ErrForgotCat=Du glemte å velge kategorien ErrForgotField=Du glemte feltene ErrCatAlreadyExists=Dette navnet er allerede i bruk -AddProductToCat=Legg dette produktet til en kategori? +AddProductToCat=Legg til dette produktet i en kategori? ImpossibleAddCat=Umulig å legge til kategorien ImpossibleAssociateCategory=Umulig å knytte kategorien til WasAddedSuccessfully=%s ble lagt til. @@ -49,7 +49,7 @@ ProductIsInCategories=Dette produktet/tjenesten hører til følgende kategorier SupplierIsInCategories=Denne tredjeparten hører til følgende leverandørkategorier CompanyIsInCustomersCategories=Denne tredjeparten hører til følgende kunder/prospektkategorier CompanyIsInSuppliersCategories=Denne tredjeparten hører til følgende leverandørkategorier -MemberIsInCategories=Dette medlemmet eier til følgende medlemmer kategorier +MemberIsInCategories=Dette medlemmet hører til følgende medlemmeskategorier ContactIsInCategories=Denne kontakten hører til følgende kontaktkategorier ProductHasNoCategory=Dette produktet/tjenesten er ikke i noen kategorier SupplierHasNoCategory=Denne leverandøren er ikke i noen kategorier @@ -59,10 +59,10 @@ ContactHasNoCategory=Denne kontakten er ikke i noen kategorier ClassifyInCategory=Klassifiser i kategori NoneCategory=Ingen NotCategorized=Uten kategori -CategoryExistsAtSameLevel=Denne kategorien eksisterer allerede på samme sted -ReturnInProduct=Tilbake til produkt/tjeneste-kort +CategoryExistsAtSameLevel=Denne kategorien finnes allerede med denne referansen +ReturnInProduct=Tilbake til produkt-/tjenestekort ReturnInSupplier=Tilbake til leverandørkort -ReturnInCompany=Tilbake til kunde/prospekt-kort +ReturnInCompany=Tilbake til kunde-/prospektkort ContentsVisibleByAll=Inneholdet vil være synlig for alle ContentsVisibleByAllShort=Innhold synlig for alle ContentsNotVisibleByAllShort=Innhold ikke synlig for alle @@ -70,17 +70,17 @@ CategoriesTree=Kategori-tre DeleteCategory=Slett kategori ConfirmDeleteCategory=Er du sikker på at du vil slette denne kategorien? RemoveFromCategory=Fjern lenke med kategori -RemoveFromCategoryConfirm=Er di sikker på at du vil fjerne lenken mellom transaksjonen og kategorien? +RemoveFromCategoryConfirm=Er du sikker på at du vil fjerne lenken mellom transaksjonen og kategorien? NoCategoriesDefined=Ingen kategori definert SuppliersCategoryShort=Leverandøkategori CustomersCategoryShort=Kundekategori ProductsCategoryShort=Produktkategori -MembersCategoryShort=Medlemmer kategori +MembersCategoryShort=Medlemskategori SuppliersCategoriesShort=Leverandøkategorier CustomersCategoriesShort=Kundekategorier -CustomersProspectsCategoriesShort=Kunde/prospektkategorier +CustomersProspectsCategoriesShort=Kunde-/prospektkategorier ProductsCategoriesShort=Produktkategorier -MembersCategoriesShort=Medlemmer kategorier +MembersCategoriesShort=Medlemskategorier ContactCategoriesShort=Kontaktkategorier ThisCategoryHasNoProduct=Denne kategorien inneholder ingen produkter. ThisCategoryHasNoSupplier=Denne kategorien inneholder ingen leverandører. @@ -92,21 +92,21 @@ AssignedToTheCustomer=Knyttet til kunden InternalCategory=Intern kategori CategoryContents=Innhold i kategori CategId=Kategori-ID -CatSupList=Liste av leverandør kategorier -CatCusList=Liste over kunde / prospektet kategorier -CatProdList=Liste over produkter kategorier -CatMemberList=Liste over medlemmer kategorier -CatContactList=Liste over kontakt kategorier og kontakt +CatSupList=Liste av leverandørkategorier +CatCusList=Liste over kunde-/prospektkategorier +CatProdList=Liste over produktkategorier +CatMemberList=Liste over medlemskategorier +CatContactList=Liste over kontaktkategorier og kontakt CatSupLinks=Koblinger mellom leverandører og kategorier -CatCusLinks=Koblinger mellom kunder / prospekter og kategorier -CatProdLinks=Koblinger mellom produkter / tjenester og kategorier +CatCusLinks=Koblinger mellom kunder/prospekter og kategorier +CatProdLinks=Koblinger mellom produkter/tjenester og kategorier CatMemberLinks=Koblinger mellom medlemmer og kategorier DeleteFromCat=Fjern fra kategori DeletePicture=Slette bilde ConfirmDeletePicture=Bekreft bildesletting? ExtraFieldsCategories=Komplementære attributter CategoriesSetup=Kategori-oppsett -CategorieRecursiv=Link med overordnet kategori automatisk +CategorieRecursiv=Link automatisk med overordnet kategori CategorieRecursivHelp=Hvis aktivert, vil produktet også knyttes til overordnet kategori når du legger inn en underkategori AddProductServiceIntoCategory=Legg til følgende produkt/tjeneste ShowCategory=Vis kategori diff --git a/htdocs/langs/nb_NO/commercial.lang b/htdocs/langs/nb_NO/commercial.lang index 92b090a74bf..5ce686e3b3c 100644 --- a/htdocs/langs/nb_NO/commercial.lang +++ b/htdocs/langs/nb_NO/commercial.lang @@ -9,9 +9,9 @@ Prospect=Prospekt Prospects=Prospekter DeleteAction=Slett handling/oppgave NewAction=Ny handling/oppgave -AddAction=Legg til handling/oppgave -AddAnAction=Legg til en handling/oppgave -AddActionRendezVous=Legg til møte +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Rendezvous ConfirmDeleteAction=Er du sikker på at du vil slette denne oppgaven? CardAction=Handlingskort @@ -44,8 +44,8 @@ DoneActions=Utførte handlinger DoneActionsFor=Utførte handlinger for %s ToDoActions=Ikke fullførte handlinger ToDoActionsFor=Ikke fullførte handlinger for %s -SendPropalRef=Send tilbud %s -SendOrderRef=Send ordre %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Ikke aktuelt StatusActionToDo=To Do StatusActionDone=Utført @@ -62,7 +62,7 @@ LastProspectContactDone=Kontakt utført DateActionPlanned=Dato for planlagt handling DateActionDone=Dato for utført handling ActionAskedBy=Handling ønsket av -ActionAffectedTo=Handling knyttet til +ActionAffectedTo=Event assigned to ActionDoneBy=Handling utført av ActionUserAsk=Registrert av ErrorStatusCantBeZeroIfStarted=Hvis feltet 'Dato utført' er fylt ut er handlingen startet (eller utført), defor kan ikke feltet 'Status' være 0%%. diff --git a/htdocs/langs/nb_NO/companies.lang b/htdocs/langs/nb_NO/companies.lang index 02ad3315d63..a111e8f1b6a 100644 --- a/htdocs/langs/nb_NO/companies.lang +++ b/htdocs/langs/nb_NO/companies.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - companies ErrorCompanyNameAlreadyExists=Firmanavnet %s finnes allerede. Velg et annet! -ErrorPrefixAlreadyExists=Prefix %s finnes allered. Velg et annet! +ErrorPrefixAlreadyExists=Prefiks %s finnes allerede. Velg et annet! ErrorSetACountryFirst=Angi land først SelectThirdParty=Velg en tredjepart DeleteThirdParty=Slett en tredjepart @@ -25,13 +25,13 @@ IdThirdParty=Tredjepart-ID IdCompany=Firma-ID IdContact=Kontaktperson-ID Contacts=Kontakter -ThirdPartyContacts=Tredjepart kontakter -ThirdPartyContact=Tredjepart kontakt +ThirdPartyContacts=Tredjepartskontakter +ThirdPartyContact=Tredjepartskontakt StatusContactValidated=Status for kontakt Company=Bedrift CompanyName=Firmanavn Companies=Bedrifter -CountryIsInEEC=Landet er en del av Det europeiske fellesskap +CountryIsInEEC=Landet er en del av det europeiske økonomiske fellesskap ThirdPartyName=Tredjepart navn ThirdParty=Tredjepart ThirdParties=Tredjeparter @@ -40,7 +40,7 @@ ThirdPartyProspects=Prospekter ThirdPartyProspectsStats=Prospekter ThirdPartyCustomers=Kunder ThirdPartyCustomersStats=Kunder -ThirdPartyCustomersWithIdProf12=Kunder ned %s eller %s +ThirdPartyCustomersWithIdProf12=Kunder med %s eller %s ThirdPartySuppliers=Leverandører ThirdPartyType=Type tredjepart Company/Fundation=Firma/Organisasjon @@ -51,7 +51,7 @@ Subsidiary=Datterselskap Subsidiaries=Datterselskaper NoSubsidiary=Ingen datterselskap ReportByCustomers=Rapporter pr kunde -ReportByQuarter=Rapporter pr kvartal +ReportByQuarter=Rapporter pr sats CivilityCode=Civility code (ikke i Norge) RegisteredOffice=Registered office (ikke i Norge) Name=Navn @@ -64,7 +64,7 @@ Address=Adresse State=Fylke(delstat) Region=Region Country=Land -CountryCode=Landkode +CountryCode=Landskode CountryId=Land id Phone=Telefon Skype=Skype @@ -73,13 +73,13 @@ Chat=Chat PhonePro=Tlf. arbeid PhonePerso=Tlf. privat PhoneMobile=Tlf. mobil -No_Email=Ikke send masse-epost-utsendelser -Fax=Fax +No_Email=Ikke send masse-epost +Fax=Faks Zip=Postnummer Town=Poststed Web=Web Poste= Posisjon -DefaultLang=Språk som standard +DefaultLang=Standardspråk VATIsUsed=MVA skal beregnes VATIsNotUsed=MVA skal ikke beregnes CopyAddressFromSoc=Fyll adresse med tredjeparts adresse @@ -113,8 +113,8 @@ ProfId3=Professional ID 3 ProfId4=Professional ID 4 ProfId5=Profesjonell ID 5 ProfId6=Profesjonell ID 6 -ProfId1AR=Prof Id 1 (CUIL) -ProfId2AR=Prof ID 2 (inntekter på brutes) +ProfId1AR=Prof Id 1 (CUIT/CUIL) +ProfId2AR=Prof ID 2 (bruttoinntekter) ProfId3AR=- ProfId4AR=- ProfId5AR=- @@ -125,7 +125,7 @@ ProfId3AU=- ProfId4AU=- ProfId5AU=- ProfId6AU=- -ProfId1BE=Prof Id 1 (Professionnel number) +ProfId1BE=Prof Id 1 (Profesjonelt nummer) ProfId2BE=- ProfId3BE=- ProfId4BE=- @@ -139,7 +139,7 @@ ProfId4BR=CPF #ProfId6BR=INSS ProfId1CH=- ProfId2CH=- -ProfId3CH=Prof Id 1 (Federal number) +ProfId3CH=Prof Id 1 (Føderalt nummer) ProfId4CH=Prof Id 2 (Commercial Record number) ProfId5CH=- ProfId6CH=- @@ -169,11 +169,11 @@ ProfId5ES=- ProfId6ES=- ProfId1FR=Prof Id 1 (SIREN) ProfId2FR=Prof Id 2 (SIRET) -ProfId3FR=Prof Id 3 (NAF, old APE) +ProfId3FR=Prof Id 3 (NAF, gammel APE) ProfId4FR=Prof Id 4 (RCS/RM) ProfId5FR=Prof Id 5 ProfId6FR=- -ProfId1GB=Prof Id 1 (Registration Number) +ProfId1GB=Prof Id 1 (Registreringsnummer) ProfId2GB=- ProfId3GB=Prof Id 3 (SIC) ProfId4GB=- @@ -186,31 +186,31 @@ ProfId4HN=- ProfId5HN=- ProfId6HN=- ProfId1IN=Prof Id 1 (TIN) -ProfId2IN=Prof ID 2 -ProfId3IN=Prof ID 3 +ProfId2IN=Prof ID 2 (PAN) +ProfId3IN=Prof ID 3 (SRVC TAX) ProfId4IN=Prof ID 4 ProfId5IN=Prof Id 5 ProfId6IN=- ProfId1MA=Id prof. 1 (RC) -ProfId2MA=Id prof. 2 (patente) +ProfId2MA=Id prof. 2 (patent) ProfId3MA=Id prof. 3 (IF) ProfId4MA=Id prof. 4 (CNSS) ProfId5MA=- ProfId6MA=- ProfId1MX=Prof Id 1 (RFC). ProfId2MX=Prof Id 2 (R.. P. IMSS) -ProfId3MX=Prof Id 3 (Profesional Charter) +ProfId3MX=Prof Id 3 (Profesjonell lisens) ProfId4MX=- ProfId5MX=- ProfId6MX=- ProfId1NL=KVK nummer ProfId2NL=- ProfId3NL=- -ProfId4NL=- +ProfId4NL=Burgerservicenummer (BSN) ProfId5NL=- ProfId6NL=- ProfId1PT=Prof Id 1 (NIPC) -ProfId2PT=Prof Id 2 (Social security number) +ProfId2PT=Prof Id 2 (Personnummer) ProfId3PT=Prof Id 3 (Commercial Record number) ProfId4PT=Prof Id 4 (Conservatory) ProfId5PT=- @@ -234,9 +234,9 @@ ProfId4RU=Prof Id 4 (OKPO) ProfId5RU=- ProfId6RU=- VATIntra=Organisasjonsnummer -VATIntraShort=Org.nr. -VATIntraVeryShort=ORG -VATIntraSyntaxIsValid=Gyldig syntax +VATIntraShort=Organisasjonsnummer +VATIntraVeryShort=MVA +VATIntraSyntaxIsValid=Gyldig syntaks VATIntraValueIsValid=Gyldig verdi ProspectCustomer=Prospekt/Kunde Prospect=Prospekt @@ -261,13 +261,13 @@ Supplier=Leverandør CompanyList=Firmaoversikt AddContact=Opprett kontakt AddContactAddress=Opprett kontakt/adresse -EditContact=Endre kontakt / adresse -EditContactAddress=Endre kontakt / adresse +EditContact=Endre kontakt +EditContactAddress=Endre kontakt/adresse Contact=Kontaktperson ContactsAddresses=Kontakter / Adresser NoContactDefinedForThirdParty=Ingen kontakt definert for denne tredjepart -NoContactDefined=Denne tredjeparten har ingen kontaktpersoner registrert -DefaultContact=Gjeldende kontakt +NoContactDefined=Ingen kontaktpersoner definert +DefaultContact=Standardkontakt AddCompany=Opprett firma AddThirdParty=Opprett tredjepart DeleteACompany=Slett et firma @@ -290,23 +290,23 @@ ListOfContacts=Oversikt over kontaktpersoner ListOfContactsAddresses=Liste over kontakter / adresser ListOfProspectsContacts=Oversikt over prospekters kontaktpersoner ListOfCustomersContacts=Oversikt over kunders kontaktpersoner -ListOfSuppliersContacts=Oversikt over leverandøeres kontaktpersoner +ListOfSuppliersContacts=Oversikt over leverandørkontakter ListOfCompanies=Oversikt over firmaer ListOfThirdParties=Oversikt over tredjeparter ShowCompany=Vis firma ShowContact=Vis kontaktperson ContactsAllShort=Alle (ingen filter) ContactType=Kontaktperson type -ContactForOrders=Relaterte ordre -ContactForProposals=Relaterte tilbud -ContactForContracts=Relaterte kontrakter -ContactForInvoices=Relaterte fakturaer +ContactForOrders=Ordrekontakt +ContactForProposals=Tilbudskontakt +ContactForContracts=Kontraktkontakt +ContactForInvoices=Fakturakontakt NoContactForAnyOrder=Kontaktpersonen er ikke tilknyttet noen ordre NoContactForAnyProposal=Kontaktpersonen er ikke tilknyttet noen tilbud NoContactForAnyContract=Kontaktpersonen er ikke tilknyttet noen kontrakt NoContactForAnyInvoice=Kontaktpersonen er ikke tilknyttet noen faktura NewContact=Ny kontaktperson -NewContactAddress=Ny kontakt / adresse +NewContactAddress=Ny kontakt/adresse LastContacts=Siste kontaktpersoner MyContacts=Mine kontaktpersoner Phones=Telefoner @@ -320,12 +320,12 @@ VATIntraCheckDesc=Lenken %s slår opp i den europeiske kontrolltjenesten VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do VATIntraCheckableOnEUSite=Slå opp i Intracomunnautary VAT på EU-kommisjonens nettsted VATIntraManualCheck=Du kan også sjekke manuelt på %s -ErrorVATCheckMS_UNAVAILABLE=Kontollrn er ikke tilgjengelig. Tjenesten er ikke tilgjengelig for landet (%s). +ErrorVATCheckMS_UNAVAILABLE=Sjekk er ikke tilgjengelig. Tjenesten er ikke tilgjengelig for landet (%s). NorProspectNorCustomer=Hverken prospekt eller kunde JuridicalStatus=Juridsk status Staff=Ansatte ProspectLevelShort=Potensiell -ProspectLevel=Potensiell prospekt +ProspectLevel=Prospektpotensiale ContactPrivate=Privat ContactPublic=Delt ContactVisibility=Synlighet @@ -348,29 +348,29 @@ TE_PRIVATE=Privatperson TE_OTHER=Annet StatusProspect-1=Kontaktes ikke StatusProspect0=Aldri kontaktet -StatusProspect1=Bør kontaktes +StatusProspect1=Skal kontaktes StatusProspect2=Kontakt pågår StatusProspect3=Kontakt utført ChangeDoNotContact=Endre status til 'Kontaktes ikke' ChangeNeverContacted=Endre status til 'Aldri kontaktet' -ChangeToContact=Endre status til 'Bør kontaktes' +ChangeToContact=Endre status til 'Skal kontaktes' ChangeContactInProcess=Endre status til 'Kontakt pågår' ChangeContactDone=Endre status til 'Kontakt utført' ProspectsByStatus=Prospekter etter status BillingContact=Fakturakontakt NbOfAttachedFiles=Antall vedlagte filer -AttachANewFile=Legg ved fil -NoRIB=Ingen konto registrert +AttachANewFile=Legg ved ny fil +NoRIB=Ingen bankkonto registrert NoParentCompany=Ingen ExportImport=Import-Eksport -ExportCardToFormat=Eksportkort til format +ExportCardToFormat=Eksporter kort til format ContactNotLinkedToCompany=Kontaktpersonen er ikke lenket til noen tredjepart DolibarrLogin=Dolibarr innlogging NoDolibarrAccess=Ingen tilgang til Dolibarr ExportDataset_company_1=Tredjeparter (Selskaper / stiftelser / fysiske personer) og egenskaper -ExportDataset_company_2=Kontaktpersoner med opplysninger -ImportDataset_company_1=Tredjeparter (Selskaper / stiftelser / fysiske personer) og egenskaper -ImportDataset_company_2=Kontakter / adresser (av tredjeparter eller ikke) og attributter +ExportDataset_company_2=Kontaktpersoner og egenskaper +ImportDataset_company_1=Tredjeparter (Selskaper/stiftelser/fysiske personer) og egenskaper +ImportDataset_company_2=Kontakter/adresser (av tredjeparter eller ikke) og attributter ImportDataset_company_3=Bankopplysninger PriceLevel=Prisnivå DeliveriesAddress=Leveringsadresser @@ -382,33 +382,33 @@ NewDeliveryAddress=Ny leveringsadresse AddDeliveryAddress=Opprett adresse AddAddress=Opprett adresse NoOtherDeliveryAddress=Ingen alternativ leveringsadresse lagt inn -SupplierCategory=Leverandør kategori +SupplierCategory=Leverandørkategori JuridicalStatus200=Uavhengig DeleteFile=Slett fil ConfirmDeleteFile=Er du sikker på at du vil slette denne filen? -AllocateCommercial=Tildelt til salg representant +AllocateCommercial=Tildelt til salgsrepresentant SelectCountry=Velg land SelectCompany=Velg tredjepart Organization=Organisasjon AutomaticallyGenerated=Automatisk opprettet FiscalYearInformation=Informasjon om regnskapsåret FiscalMonthStart=Første måned i regnskapsåret -YouMustCreateContactFirst=Du må opprette e-postmeldinger kontakter for tredjepart første for å kunne legge til e-post meldinger. +YouMustCreateContactFirst=Du må opprette e-postkontakter for tredjepart først, for å kunne legge til e-post meldinger. ListSuppliersShort=Liste over leverandører -ListProspectsShort=Liste av prospekter +ListProspectsShort=Liste over prospekter ListCustomersShort=Liste over kunder ThirdPartiesArea=Tredjepart og kontaktområde -LastModifiedThirdParties=Siste %s endret tredjeparter -UniqueThirdParties=Totalt unike tredjeparter -InActivity=Åpent +LastModifiedThirdParties=Siste %s endrede tredjeparter +UniqueThirdParties=Totalt antall unike tredjeparter +InActivity=Åpen ActivityCeased=Stengt -ActivityStateFilter=Aktivitet status +ActivityStateFilter=Aktivitetstatus ProductsIntoElements=Produktliste i %s CurrentOutstandingBill=Gjeldende utestående regning OutstandingBill=Max. utestående beløp OutstandingBillReached=Nådd maks. for utestående regning -MonkeyNumRefModelDesc=Tilbake numero med format %syymm-nnnn for kunden koden og %syymm-nnnn for leverandør koden der åå er året, er mm måned og nnnn er en sekvens uten pause og ingen retur til 0. -LeopardNumRefModelDesc=Kunde / leverandør-koden er gratis. Denne koden kan endres når som helst. +MonkeyNumRefModelDesc=Returnerer nummer med format %syymm-nnnn for kundekode og %syymm-nnnn for leverandørkode, der åå er året, er mm måned og nnnn er et løpenummer som starter på 0+1. +LeopardNumRefModelDesc=Fri kode. Denne koden kan endres når som helst. ManagingDirectors=(E) navn (CEO, direktør, president ...) SearchThirdparty=Søk etter tredjepart SearchContact=Søk etter kontakt diff --git a/htdocs/langs/nb_NO/contracts.lang b/htdocs/langs/nb_NO/contracts.lang index e8fe7fe9637..e09b5e6c173 100644 --- a/htdocs/langs/nb_NO/contracts.lang +++ b/htdocs/langs/nb_NO/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Utløpt ServiceStatusClosed=Lukket ServicesLegend=Tjeneste legend Contracts=Kontrakter +ContractsAndLine=Contracts and line of contracts Contract=Kontrakt NoContracts=Ingen kontrakter MenuServices=Tjenester diff --git a/htdocs/langs/nb_NO/cron.lang b/htdocs/langs/nb_NO/cron.lang index 933ec2647b4..e15b4232a60 100644 --- a/htdocs/langs/nb_NO/cron.lang +++ b/htdocs/langs/nb_NO/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/nb_NO/errors.lang b/htdocs/langs/nb_NO/errors.lang index 7fa9524b08f..7f06fb6e0fa 100644 --- a/htdocs/langs/nb_NO/errors.lang +++ b/htdocs/langs/nb_NO/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Kilde og målkonto må være forskjellig. ErrorBadThirdPartyName=Ugyldig verdi for tredjepartens navn ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Ugyldig syntaks for kundekode -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Kundekode påkrevet ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Kundekoden er allerede benyttet @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript må ikke deaktiveres å ha denne funksjo ErrorPasswordsMustMatch=Begge har skrevet passord må samsvare med hverandre ErrorContactEMail=En teknisk feil oppsto. Vennligst kontakt administrator for å følge e %s no gi feilmeldingsnumrene %s i meldingen, eller enda bedre ved å legge til en skjerm kopi av denne siden. ErrorWrongValueForField=Feil verdi for feltet tall %s (verdien «%s" samsvarer ikke med regex regel %s) -ErrorFieldValueNotIn=Feil verdi for feltnummer %s (verdien «%s" er ikke en verdi tilgjengelig i felten %s av tabellen %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Feil verdi for feltnummer %s (verdi '%s "er ikke en %s eksisterende ref) ErrorsOnXLines=Feil på %s kilde linjer ErrorFileIsInfectedWithAVirus=Det antivirus programmet var ikke i stand til å validere filen (filen kan være infisert av et virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/nb_NO/install.lang b/htdocs/langs/nb_NO/install.lang index 78bd25f24c3..e087efd5896 100644 --- a/htdocs/langs/nb_NO/install.lang +++ b/htdocs/langs/nb_NO/install.lang @@ -155,7 +155,8 @@ MigrationFinished=Migrasjon ferdig LastStepDesc=Siste trinn: Definer her login og passord du har tenkt å bruke til å koble til programvare. Ikke mist dette som det er kontoen for å administrere alle andre. ActivateModule=Aktiver modulen %s ShowEditTechnicalParameters=Klikk her for å vise/endre avanserte parametre (expert mode) -WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +WarningUpgrade=Advarsel!\nTok du en backup av databasen først?\nDette anbefales på det sterkeste! F.eks: Pga. feil/bugs i databasesystemer (f.eks. Mysql versjon 5.5.40), kan data eller tabeller gå tapt i denne prosessen. Det er sterkt anbefalt å ha en komplett kopi av databasen før du starter overføringen.\n\n\nKlikk OK for å starte overføringsprosessen... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade @@ -207,7 +208,7 @@ MigrationProjectTaskTime=Oppdater tid i sekunder MigrationActioncommElement=Oppdatering data på handlinger MigrationPaymentMode=Datamigrering for betaling modus MigrationCategorieAssociation=Migrer kategorier -MigrationEvents=Migration of events to add event owner into assignement table +MigrationEvents=Overføring av hendelser for å legge hendelseseier inn i oppdragstabellen ShowNotAvailableOptions=Vis utilgjengelige opsjoner HideNotAvailableOptions=Gjem utilgjengelige opsjoner diff --git a/htdocs/langs/nb_NO/main.lang b/htdocs/langs/nb_NO/main.lang index 8281c41b469..6fc76ac7a89 100644 --- a/htdocs/langs/nb_NO/main.lang +++ b/htdocs/langs/nb_NO/main.lang @@ -141,6 +141,7 @@ Cancel=Avbryt Modify=Endre Edit=Rediger Validate=Godkjenn +ValidateAndApprove=Validate and Approve ToValidate=Å godkjenne Save=Lagre SaveAs=Lagre som @@ -158,6 +159,7 @@ Search=Søk SearchOf=Søk Valid=Gyldig Approve=Godkjenn +Disapprove=Disapprove ReOpen=Gjenåpne Upload=Send fil ToLink=Link @@ -219,6 +221,7 @@ Cards=Kort Card=Kort Now=Nå Date=Dato +DateAndHour=Date and hour DateStart=Startdato DateEnd=Sluttdato DateCreation=Opprettet den @@ -295,6 +298,7 @@ UnitPriceHT=Enhetspris (netto) UnitPriceTTC=Enhetspris PriceU=Pris PriceUHT=Pris (netto) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=Pris Amount=Beløp AmountInvoice=Fakturabeløp @@ -521,6 +525,7 @@ DateFromTo=Fra %s til %s DateFrom=Fra %s DateUntil=Til og med %s Check=Sjekk +Uncheck=Uncheck Internal=Intern External=Ekstern Internals=Intern @@ -688,6 +693,7 @@ PublicUrl=Offentlig URL AddBox=Legg til boks SelectElementAndClickRefresh=Velg et element og klikk Oppfrisk PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Mandag Tuesday=Tirsdag diff --git a/htdocs/langs/nb_NO/opensurvey.lang b/htdocs/langs/nb_NO/opensurvey.lang index 0290f3f467f..b6c393f99fa 100644 --- a/htdocs/langs/nb_NO/opensurvey.lang +++ b/htdocs/langs/nb_NO/opensurvey.lang @@ -1,66 +1,66 @@ # Dolibarr language file - Source file is en_US - opensurvey -# Survey=Poll -# Surveys=Polls -# OrganizeYourMeetingEasily=Organize your meetings and polls easily. First select type of poll... -# NewSurvey=New poll -# NoSurveysInDatabase=%s poll(s) into database. -# OpenSurveyArea=Polls area -# AddACommentForPoll=You can add a comment into poll... -# AddComment=Add comment -# CreatePoll=Create poll -# PollTitle=Poll title -# ToReceiveEMailForEachVote=Receive an email for each vote -# TypeDate=Type date -# TypeClassic=Type standard -# OpenSurveyStep2=Select your dates amoung the free days (grey). The selected days are green. You can unselect a day previously selected by clicking again on it -# RemoveAllDays=Remove all days -# CopyHoursOfFirstDay=Copy hours of first day -# RemoveAllHours=Remove all hours -# SelectedDays=Selected days -# TheBestChoice=The best choice currently is -# TheBestChoices=The best choices currently are -# with=with -# OpenSurveyHowTo=If you agree to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line. -# CommentsOfVoters=Comments of voters -# ConfirmRemovalOfPoll=Are you sure you want to remove this poll (and all votes) -# RemovePoll=Remove poll -# UrlForSurvey=URL to communicate to get a direct access to poll -# PollOnChoice=You are creating a poll to make a multi-choice for a poll. First enter all possible choices for your poll: -# CreateSurveyDate=Create a date poll -# CreateSurveyStandard=Create a standard poll -# CheckBox=Simple checkbox -# YesNoList=List (empty/yes/no) -# PourContreList=List (empty/for/against) -# AddNewColumn=Add new column -# TitleChoice=Choice label -# ExportSpreadsheet=Export result spreadsheet +Survey=Poll +Surveys=Polls +OrganizeYourMeetingEasily=Organize your meetings and polls easily. First select type of poll... +NewSurvey=New poll +NoSurveysInDatabase=%s poll(s) into database. +OpenSurveyArea=Polls area +AddACommentForPoll=You can add a comment into poll... +AddComment=Add comment +CreatePoll=Create poll +PollTitle=Poll title +ToReceiveEMailForEachVote=Receive an email for each vote +TypeDate=Type date +TypeClassic=Type standard +OpenSurveyStep2=Select your dates amoung the free days (grey). The selected days are green. You can unselect a day previously selected by clicking again on it +RemoveAllDays=Remove all days +CopyHoursOfFirstDay=Copy hours of first day +RemoveAllHours=Remove all hours +SelectedDays=Valgte dager +TheBestChoice=The best choice currently is +TheBestChoices=The best choices currently are +with=with +OpenSurveyHowTo=If you agree to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line. +CommentsOfVoters=Comments of voters +ConfirmRemovalOfPoll=Are you sure you want to remove this poll (and all votes) +RemovePoll=Remove poll +UrlForSurvey=URL to communicate to get a direct access to poll +PollOnChoice=You are creating a poll to make a multi-choice for a poll. First enter all possible choices for your poll: +CreateSurveyDate=Create a date poll +CreateSurveyStandard=Create a standard poll +CheckBox=Simple checkbox +YesNoList=List (empty/yes/no) +PourContreList=List (empty/for/against) +AddNewColumn=Add new column +TitleChoice=Choice label +ExportSpreadsheet=Export result spreadsheet ExpireDate=Limit date -# NbOfSurveys=Number of polls -# NbOfVoters=Nb of voters -# SurveyResults=Results -# PollAdminDesc=You are allowed to change all vote lines of this poll with button "Edit". You can, as well, remove a column or a line with %s. You can also add a new column with %s. -# 5MoreChoices=5 more choices -# Abstention=Abstention -# Against=Against -# YouAreInivitedToVote=You are invited to vote for this poll -# VoteNameAlreadyExists=This name was already used for this poll -# ErrorPollDoesNotExists=Error, poll %s does not exists. -# OpenSurveyNothingToSetup=There is no specific setup to do. -# PollWillExpire=Your poll will expire automatically %s days after the last date of your poll. -# AddADate=Add a date -# AddStartHour=Add start hour -# AddEndHour=Add end hour -# votes=vote(s) -# NoCommentYet=No comments have been posted for this poll yet -# CanEditVotes=Can change vote of others -# CanComment=Voters can comment in the poll -# CanSeeOthersVote=Voters can see other people's vote -# SelectDayDesc=For each selected day, you can choose, or not, meeting hours in the following format :
- empty,
- "8h", "8H" or "8:00" to give a meeting's start hour,
- "8-11", "8h-11h", "8H-11H" or "8:00-11:00" to give a meeting's start and end hour,
- "8h15-11h15", "8H15-11H15" or "8:15-11:15" for the same thing but with minutes. -# BackToCurrentMonth=Back to current month -# ErrorOpenSurveyFillFirstSection=You haven't filled the first section of the poll creation -# ErrorOpenSurveyOneChoice=Enter at least one choice -# ErrorOpenSurveyDateFormat=Date must have the format YYYY-MM-DD -# ErrorInsertingComment=There was an error while inserting your comment -# MoreChoices=Enter more choices for the voters -# SurveyExpiredInfo=The voting time of this poll has expired. -# EmailSomeoneVoted=%s has filled a line.\nYou can find your poll at the link: \n%s +NbOfSurveys=Number of polls +NbOfVoters=Nb of voters +SurveyResults=Results +PollAdminDesc=You are allowed to change all vote lines of this poll with button "Edit". You can, as well, remove a column or a line with %s. You can also add a new column with %s. +5MoreChoices=5 more choices +Abstention=Abstention +Against=Against +YouAreInivitedToVote=You are invited to vote for this poll +VoteNameAlreadyExists=This name was already used for this poll +ErrorPollDoesNotExists=Error, poll %s does not exists. +OpenSurveyNothingToSetup=There is no specific setup to do. +PollWillExpire=Your poll will expire automatically %s days after the last date of your poll. +AddADate=Add a date +AddStartHour=Add start hour +AddEndHour=Add end hour +votes=vote(s) +NoCommentYet=No comments have been posted for this poll yet +CanEditVotes=Can change vote of others +CanComment=Voters can comment in the poll +CanSeeOthersVote=Voters can see other people's vote +SelectDayDesc=For each selected day, you can choose, or not, meeting hours in the following format :
- empty,
- "8h", "8H" or "8:00" to give a meeting's start hour,
- "8-11", "8h-11h", "8H-11H" or "8:00-11:00" to give a meeting's start and end hour,
- "8h15-11h15", "8H15-11H15" or "8:15-11:15" for the same thing but with minutes. +BackToCurrentMonth=Back to current month +ErrorOpenSurveyFillFirstSection=You haven't filled the first section of the poll creation +ErrorOpenSurveyOneChoice=Enter at least one choice +ErrorOpenSurveyDateFormat=Date must have the format YYYY-MM-DD +ErrorInsertingComment=There was an error while inserting your comment +MoreChoices=Enter more choices for the voters +SurveyExpiredInfo=The voting time of this poll has expired. +EmailSomeoneVoted=%s has filled a line.\nYou can find your poll at the link: \n%s diff --git a/htdocs/langs/nb_NO/orders.lang b/htdocs/langs/nb_NO/orders.lang index 11c92b04ada..8aea126a9c1 100644 --- a/htdocs/langs/nb_NO/orders.lang +++ b/htdocs/langs/nb_NO/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Kansellert StatusOrderDraft=Kladd (trenger godkjenning) StatusOrderValidated=Godkjent StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Behandlet StatusOrderToBill=Levert StatusOrderToBill2=Til fakturering @@ -58,6 +59,7 @@ MenuOrdersToBill=Ordre levert MenuOrdersToBill2=Fakturerbare ordre SearchOrder=Søk i ordre SearchACustomerOrder=Søk etter kundeordre +SearchASupplierOrder=Search a supplier order ShipProduct=Lever produkt Discount=Rabatt CreateOrder=Lag ordre diff --git a/htdocs/langs/nb_NO/other.lang b/htdocs/langs/nb_NO/other.lang index d634da4b41f..57beeca7610 100644 --- a/htdocs/langs/nb_NO/other.lang +++ b/htdocs/langs/nb_NO/other.lang @@ -54,12 +54,13 @@ MaxSize=Maksimal størrelse AttachANewFile=Legg ved ny fil/dokument LinkedObject=Lenkede objekter Miscellaneous=Diverse -NbOfActiveNotifications=Antall påminnelser +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Dette er en test post. \\ NDe to linjer er atskilt med en vognretur. PredefinedMailTestHtml=Dette er en test mail (ordet testen må være i fet skrift).
De to linjene er skilt med en vognretur. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/nb_NO/productbatch.lang b/htdocs/langs/nb_NO/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/nb_NO/productbatch.lang +++ b/htdocs/langs/nb_NO/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/nb_NO/products.lang b/htdocs/langs/nb_NO/products.lang index 7b77f870cdf..1a443f724cd 100644 --- a/htdocs/langs/nb_NO/products.lang +++ b/htdocs/langs/nb_NO/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/nb_NO/projects.lang b/htdocs/langs/nb_NO/projects.lang index 1d656410bad..86f6159f0fa 100644 --- a/htdocs/langs/nb_NO/projects.lang +++ b/htdocs/langs/nb_NO/projects.lang @@ -8,8 +8,10 @@ SharedProject=Alle PrivateProject=Kontaktpersoner for prosjektet MyProjectsDesc=Denne visningen er begrenset til prosjekter du er en kontakt for (hva er den type). ProjectsPublicDesc=Denne visningen presenterer alle prosjektene du har lov til å lese. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Denne visningen presenterer alle prosjekter (dine brukertillatelser gi deg tillatelse til å vise alt). MyTasksDesc=Denne visningen er begrenset til prosjekter eller oppgaver du er en kontakt for (hva er den type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Denne visningen presenterer alle prosjekter og oppgaver du har lov til å lese. TasksDesc=Denne visningen presenterer alle prosjekter og oppgaver (dine brukertillatelser gi deg tillatelse til å vise alt). ProjectsArea=Prosjektområde @@ -29,6 +31,8 @@ NoProject=Ingen prosjekter definert NbOpenTasks=Ant. åpne oppgaver NbOfProjects=Ant. prosjekter TimeSpent=Tid brukt +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Tid brukt RefTask=Ref. oppgave LabelTask=Oppgave @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Liste over leverandørens ordre knyttet til ListSupplierInvoicesAssociatedProject=Liste over leverandørens fakturaer knyttet til prosjektet ListContractAssociatedProject=Liste over kontrakter knyttet til prosjektet ListFichinterAssociatedProject=Liste over tiltak knyttet til prosjektet -ListTripAssociatedProject=Liste over turer og utgifter knyttet til prosjektet +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Liste over tiltak knyttet til prosjektet ActivityOnProjectThisWeek=Aktiviteter i prosjektet denne uke ActivityOnProjectThisMonth=Aktiviteter i prosjektet denne måned @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/nb_NO/salaries.lang b/htdocs/langs/nb_NO/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/nb_NO/salaries.lang +++ b/htdocs/langs/nb_NO/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/nb_NO/sendings.lang b/htdocs/langs/nb_NO/sendings.lang index 69f7e0739b4..c2e8b0514b6 100644 --- a/htdocs/langs/nb_NO/sendings.lang +++ b/htdocs/langs/nb_NO/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Ant. bestilt QtyShipped=Ant. levert QtyToShip=Ant. å levere QtyReceived=Ant. mottatt -KeepToShip=Keep to ship +KeepToShip=Remain to ship OtherSendingsForSameOrder=Andre leveringer på denne ordren DateSending=Leveringsdato DateSendingShort=Leveringsdato diff --git a/htdocs/langs/nb_NO/stocks.lang b/htdocs/langs/nb_NO/stocks.lang index d784469d779..988c8729d87 100644 --- a/htdocs/langs/nb_NO/stocks.lang +++ b/htdocs/langs/nb_NO/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Veid gjennomsnittlig pris PMPValueShort=WAP EnhancedValueOfWarehouses=Lagerverdi UserWarehouseAutoCreate=Opprett lager automatisk når en bruker opprettes +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Antall sendt QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/nb_NO/suppliers.lang b/htdocs/langs/nb_NO/suppliers.lang index d6457622bf2..219237d952d 100644 --- a/htdocs/langs/nb_NO/suppliers.lang +++ b/htdocs/langs/nb_NO/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Leverandører -Supplier=Leverandør AddSupplier=Create a supplier SupplierRemoved=Leverandør slettet SuppliersInvoice=Leverandørfaktura @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Leverandørfakturaer og betalinger ExportDataset_fournisseur_3=Leverandør ordrer og ordrelinjer ApproveThisOrder=Godkjenn denne innkjøpsordren ConfirmApproveThisOrder=Er du sikker på at du vil godkjenne denne innkjøpsordren? -DenyingThisOrder=Avvis denne innkjøpsordren +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Er du sikker på at du vil avvise denne innkjøpsordren? ConfirmCancelThisOrder=Er du sikker på at du vil avbryte denne innkjøpsordren? AddCustomerOrder=Opprett kundeordre diff --git a/htdocs/langs/nb_NO/trips.lang b/htdocs/langs/nb_NO/trips.lang index c96afd01553..03337d82ee6 100644 --- a/htdocs/langs/nb_NO/trips.lang +++ b/htdocs/langs/nb_NO/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Reise -Trips=Reiser -TripsAndExpenses=Reiser og utgifter -TripsAndExpensesStatistics=Turer og utgifter statistikk -TripCard=Reisekort -AddTrip=Legg til reise -ListOfTrips=Oversikt over reiser +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Oversikt over avgifter -NewTrip=Ny reise +NewTrip=New expense report CompanyVisited=Firma/organiasjon besøkt Kilometers=Kilometer FeesKilometersOrAmout=Beløp eller kilometer -DeleteTrip=Slett reise -ConfirmDeleteTrip=Er du sikker på at du vil slette denne reisen? -TF_OTHER=Annet -TF_LUNCH=Lunsj -TF_TRIP=Reise -ListTripsAndExpenses=Liste over turer og utgifter -ExpensesArea=Turer og utgifter området -SearchATripAndExpense=Søk etter tur og regning +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Annet +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunsj +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/nl_BE/main.lang b/htdocs/langs/nl_BE/main.lang index e417a4ffc01..f7c21052fa8 100644 --- a/htdocs/langs/nl_BE/main.lang +++ b/htdocs/langs/nl_BE/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=dd/MM/yyyy FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/mm/yy FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y @@ -154,7 +155,6 @@ DolibarrWorkBoard=Werktaken overzicht to=tot Other=Ander Others=Anderen -ReCalculate=Herbouw Draft=Ontwerp Drafts=Ontwerpen Rejects=Verwerpen diff --git a/htdocs/langs/nl_BE/trips.lang b/htdocs/langs/nl_BE/trips.lang index c0ecfb50dec..3496c7748fe 100644 --- a/htdocs/langs/nl_BE/trips.lang +++ b/htdocs/langs/nl_BE/trips.lang @@ -10,4 +10,3 @@ CompanyVisited=Bedrijf / partikulier bezocht FeesKilometersOrAmout=Bedrag of kilometers DeleteTrip=Verwijderen verplaatsing ConfirmDeleteTrip=Weet u zeker dat u deze verplaatsing wilt verwijderen? -TF_TRIP=Verplaatsing diff --git a/htdocs/langs/nl_NL/admin.lang b/htdocs/langs/nl_NL/admin.lang index ee574b01753..c961b2450f3 100644 --- a/htdocs/langs/nl_NL/admin.lang +++ b/htdocs/langs/nl_NL/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimenteel VersionDevelopment=Ontwikkeling VersionUnknown=Onbekend VersionRecommanded=Aanbevolen +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Sessie-ID SessionSaveHandler=Wijze van sessieopslag SessionSavePath=Sessie opslaglocatie @@ -493,10 +498,16 @@ Module600Name=Kennisgevingen Module600Desc=Stuur EMail notificaties van bepaalde Dolibarr zakelijke gebeurtenissen naar derde-partijen contacten (setup gedefinieerd in iedere derde-partij) Module700Name=Giften Module700Desc=Donatiebeheer +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integratie Module1400Name=Boekhouden Module1400Desc=Boekhoudkundig beheer van deskundigen (dubbel partijen) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Categorieën Module1780Desc=Categoriebeheer (producten, leveranciers en afnemers) Module2000Name=Fckeditor @@ -631,7 +642,7 @@ Permission181=Bekijk leverancier opdrachten Permission182=Creëren / wijzigen leverancier opdrachten Permission183=Valideer leveranciersopdrachten Permission184=Goedkeuren leveranciersopdrachten -Permission185=Bestel leverancieropdrachten +Permission185=Order or cancel supplier orders Permission186=Ontvang leveranciersopdrachten Permission187=Sluiten leverancieropdrachten Permission188=Annuleren leverancieropdrachten @@ -711,6 +722,13 @@ Permission538=Diensten exporteren Permission701=Bekijk donaties Permission702=Creëren / wijzigen donaties Permission703=Verwijderen donaties +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Bekijk voorraden Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Wachtwoord voor de proxy-server te gebruiken DefineHereComplementaryAttributes=Definieer hier alle attributen, niet reeds standaard beschikbaar, en dat je wilt worden ondersteund voor %s. ExtraFields=Aanvullende attributen ExtraFieldsLines=Aanvullende kenmerken (lijnen) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Aanvullende kenmerken (relaties) ExtraFieldsContacts=Aanvullende kenmerken (contact / adres) ExtraFieldsMember=Aanvullende kenmerken (lid) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Product- / dienstregels met een waarde van 0 gebruiken FreeLegalTextOnProposal=Vrije tekst op Offertes WatermarkOnDraftProposal=Watermerk op ontwerp offertes (geen indien leeg) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Opdrachtenbeheerinstellingen OrdersNumberingModules=Opdrachtennummeringmodules @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Streepjescodetype UPC BarcodeDescISBN=Streepjescodetype ISBN BarcodeDescC39=Streepjescodetype C39 BarcodeDescC128=Streepjescodetype C128 -GenbarcodeLocation=Opdrachtregelprogramma voor streepjescodegeneratie (gebruikt door phpbarcode voor enkele streepjescode typen) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Beheerder om automatisch barcode nummers te bepalen. ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Te gebruiken rekening voor ontvangst van contacte betalingen CashDeskBankAccountForCheque= Te gebruiken rekening voor ontvangst van betalingen per cheque CashDeskBankAccountForCB= Te gebruiken rekening voor ontvangst van betalingen per CreditCard -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Weblinkmoduleinstellingen @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Formaat TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/nl_NL/banks.lang b/htdocs/langs/nl_NL/banks.lang index 78926b0359c..8e8b94df0d2 100644 --- a/htdocs/langs/nl_NL/banks.lang +++ b/htdocs/langs/nl_NL/banks.lang @@ -33,7 +33,11 @@ AllTime=Vanaf het begin Reconciliation=Overeenstemming RIB=Bankrekeningnummer IBAN=IBAN-nummer +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC- / SWIFT-nummer +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Periodieke overboekingen StandingOrder=Periodieke overboeking Withdrawals=Opnames @@ -148,7 +152,7 @@ BackToAccount=Terug naar rekening ShowAllAccounts=Toon alle rekeningen FutureTransaction=Overboeking in de toekomst. Geen manier mogelijk om af te stemmen SelectChequeTransactionAndGenerate=Select / filter controleert op te nemen in het controleren stortingsbewijs en op "Create" klikken. -InputReceiptNumber=Kies het bankafschrift in verband met de bemiddeling. Gebruik een sorteerbaar numerieke waarde (zoals YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Tenslotte een categorie opgeven waarin de gegevens bewaard kunnen worden ToConciliate=Te bemiddelen? ThenCheckLinesAndConciliate=Duid dan de lijnen aan van het bankafschrift en klik diff --git a/htdocs/langs/nl_NL/commercial.lang b/htdocs/langs/nl_NL/commercial.lang index 807bdccd23b..8302407576c 100644 --- a/htdocs/langs/nl_NL/commercial.lang +++ b/htdocs/langs/nl_NL/commercial.lang @@ -62,7 +62,7 @@ LastProspectContactDone=Contact opgevolgd DateActionPlanned=Datum actie gepland voor DateActionDone=Datum actie uitgevoerd ActionAskedBy=Actie gevraagd door -ActionAffectedTo=Gebeurtenis is eigendom van +ActionAffectedTo=Event assigned to ActionDoneBy=Actie gedaan door ActionUserAsk=Geregistreerd door ErrorStatusCantBeZeroIfStarted=Als veld 'Datum uitgevoerd' is gevuld, is de actie gestart (of afgelopen), dus veld 'Status' kan niet 0%% worden. diff --git a/htdocs/langs/nl_NL/contracts.lang b/htdocs/langs/nl_NL/contracts.lang index 80c0173ed8d..88aab0ea14d 100644 --- a/htdocs/langs/nl_NL/contracts.lang +++ b/htdocs/langs/nl_NL/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=verlopen ServiceStatusClosed=Gesloten ServicesLegend=Dienstenlegenda Contracts=Contracten +ContractsAndLine=Contracts and line of contracts Contract=Contract NoContracts=Geen contracten MenuServices=Diensten diff --git a/htdocs/langs/nl_NL/cron.lang b/htdocs/langs/nl_NL/cron.lang index bcd3b1c774f..509725038ef 100644 --- a/htdocs/langs/nl_NL/cron.lang +++ b/htdocs/langs/nl_NL/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell commando CronMenu=Cron CronCannotLoadClass=Kan klasse %s of object %s niet laden UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/nl_NL/errors.lang b/htdocs/langs/nl_NL/errors.lang index 9d16482afa5..0a8f7093045 100644 --- a/htdocs/langs/nl_NL/errors.lang +++ b/htdocs/langs/nl_NL/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=De bron- en doelrekening mogen niet dezelfde zijn ErrorBadThirdPartyName=Onjuiste waarde voor naam derde partij ErrorProdIdIsMandatory=De %s is verplicht ErrorBadCustomerCodeSyntax=Verkeerde syntaxis voor afnemerscode -ErrorBadBarCodeSyntax=Slechte syntax voor barcode +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Afnemerscode nodig ErrorBarCodeRequired=Bar code nodig ErrorCustomerCodeAlreadyUsed=Afnemerscode al gebruikt @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript dient niet uitgeschakeld te zijn voor de ErrorPasswordsMustMatch=De twee ingevoerde wachtwoorden komen niet overeen. ErrorContactEMail=Er is een technische fout opgetreden. Neemt u alstublieft contact op met de beheerder via het e-mailadres %s en vermeld de volgende foutcode %s in uw bericht, of nog beter voeg een schermafbeelding van de pagina toe. ErrorWrongValueForField=Foutiefe waarde voor het veld nummer %s (waarde %s voldoet niet aan de reguliere expressieregel %s) -ErrorFieldValueNotIn=Verkeerde waarde voor het veld nummer %s (Waarde '%s' is geen waarde beschikbaar in het veld %s van de tabel %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Verkeerde waarde voor veldnummer %s (waarde '%s' is geen %s bestaande ref) ErrorsOnXLines=Fouten op bronregels %s ErrorFileIsInfectedWithAVirus=Het antivirusprogramma kon dit bestand niet valideren (het zou met een virus geïnfecteerd kunnen zijn) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Verplichte setup parameters zijn nog niet gedefinieerd diff --git a/htdocs/langs/nl_NL/install.lang b/htdocs/langs/nl_NL/install.lang index a0f1f51790b..5575250b112 100644 --- a/htdocs/langs/nl_NL/install.lang +++ b/htdocs/langs/nl_NL/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Laatste stap: Definieer hier de login en het wacht ActivateModule=Activeer module %s ShowEditTechnicalParameters=Klik hier om verder gevorderde parameters te zien of aan te passen. (expert instellingen) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/nl_NL/main.lang b/htdocs/langs/nl_NL/main.lang index 104be6c74de..e2029732446 100644 --- a/htdocs/langs/nl_NL/main.lang +++ b/htdocs/langs/nl_NL/main.lang @@ -141,6 +141,7 @@ Cancel=Annuleren Modify=Wijzigen Edit=Bewerken Validate=Valideer +ValidateAndApprove=Validate and Approve ToValidate=Te valideren Save=Opslaan SaveAs=Opslaan als @@ -158,6 +159,7 @@ Search=Zoeken SearchOf=Zoeken Valid=Geldig Approve=Goedkeuren +Disapprove=Disapprove ReOpen=Heropenen Upload=Upload ToLink=Link @@ -219,6 +221,7 @@ Cards=Kaarten Card=Kaart Now=Nu Date=Datum +DateAndHour=Date and hour DateStart=Begindatum DateEnd=Einddatum DateCreation=Aanmaakdatum @@ -295,6 +298,7 @@ UnitPriceHT=Eenheidsprijs (netto) UnitPriceTTC=Eenheidsprijs (bruto) PriceU=E.P. PriceUHT=EP (netto) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=EP (bruto) Amount=Hoeveelheid AmountInvoice=Factuurbedrag @@ -521,6 +525,7 @@ DateFromTo=Van %s naar %s DateFrom=Vanaf %s DateUntil=Tot %s Check=Controleren +Uncheck=Uncheck Internal=Interne External=Extern Internals=Internen @@ -688,6 +693,7 @@ PublicUrl=Openbare URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Maandag Tuesday=Dinsdag diff --git a/htdocs/langs/nl_NL/orders.lang b/htdocs/langs/nl_NL/orders.lang index 4d220f6bb16..83f76d2ab97 100644 --- a/htdocs/langs/nl_NL/orders.lang +++ b/htdocs/langs/nl_NL/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Geannuleerd StatusOrderDraft=Concept (moet worden gevalideerd) StatusOrderValidated=Gevalideerd StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Verwerkt StatusOrderToBill=Te factureren StatusOrderToBill2=Te factureren @@ -58,6 +59,7 @@ MenuOrdersToBill=Te factureren opdrachten MenuOrdersToBill2=Billable orders SearchOrder=Zoekopdracht SearchACustomerOrder=Zoek een klant bestelling +SearchASupplierOrder=Search a supplier order ShipProduct=Verzend product Discount=Korting CreateOrder=Creeer opdracht diff --git a/htdocs/langs/nl_NL/other.lang b/htdocs/langs/nl_NL/other.lang index ff034237d4b..4445dfcb6ca 100644 --- a/htdocs/langs/nl_NL/other.lang +++ b/htdocs/langs/nl_NL/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximale grootte AttachANewFile=Voeg een nieuw bestand / document bij LinkedObject=Gekoppeld object Miscellaneous=Diversen -NbOfActiveNotifications=Aantal kennisgevingen +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Dit is een test e-mail.\nDe twee lijnen worden gescheiden door een harde return. PredefinedMailTestHtml=Dit is een test e-mail (het woord test moet vetgedrukt worden weergegeven).
De twee lijnen worden gescheiden door een harde return. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/nl_NL/productbatch.lang b/htdocs/langs/nl_NL/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/nl_NL/productbatch.lang +++ b/htdocs/langs/nl_NL/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/nl_NL/products.lang b/htdocs/langs/nl_NL/products.lang index bdfc6083c66..784314a472c 100644 --- a/htdocs/langs/nl_NL/products.lang +++ b/htdocs/langs/nl_NL/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/nl_NL/projects.lang b/htdocs/langs/nl_NL/projects.lang index 319c71c72dc..e242d88716f 100644 --- a/htdocs/langs/nl_NL/projects.lang +++ b/htdocs/langs/nl_NL/projects.lang @@ -8,8 +8,10 @@ SharedProject=Iedereen PrivateProject=Contacten van het project MyProjectsDesc=Deze weergave is beperkt tot projecten waarvoor u een contactpersoon bent (ongeacht het type). ProjectsPublicDesc=Deze weergave toont alle projecten waarvoor u gerechtigd bent deze in te zien. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Deze weergave toont alle projecten (Uw gebruikersrechten staan het u toe alles in te zien). MyTasksDesc=Deze weergave is beperkt tot projecten en taken waarvoor u een contactpersoon bent (ongeacht het type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Deze weergave toont alle projecten en taken die u mag inzien. TasksDesc=Deze weergave toont alle projecten en taken (Uw gebruikersrechten staan het u toe alles in te zien). ProjectsArea=Projectenoverzicht @@ -29,6 +31,8 @@ NoProject=Geen enkel project gedefinieerd of in eigendom NbOpenTasks=Aantal geopende taken NbOfProjects=Aantal projecten TimeSpent=Bestede tijd +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Bestede tijd RefTask=Ref. taak LabelTask=Label taak @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Lijst van aan het project verbonden leveranc ListSupplierInvoicesAssociatedProject=Lijst van aan het project verbonden leveranciersfacturen ListContractAssociatedProject=Lijst van aan het project verbonden contracten ListFichinterAssociatedProject=Lijst van aan het project verbonden interventies -ListTripAssociatedProject=Lijst van aan het project verbonden kosten +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Lijst van aan het project verbonden acties ActivityOnProjectThisWeek=Projectactiviteit in deze week ActivityOnProjectThisMonth=Projectactiviteit in deze maand @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/nl_NL/salaries.lang b/htdocs/langs/nl_NL/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/nl_NL/salaries.lang +++ b/htdocs/langs/nl_NL/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/nl_NL/sendings.lang b/htdocs/langs/nl_NL/sendings.lang index b754a4dca1c..72a94edeec1 100644 --- a/htdocs/langs/nl_NL/sendings.lang +++ b/htdocs/langs/nl_NL/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Aantal besteld QtyShipped=Aantal verzonden QtyToShip=Aantal te verzenden QtyReceived=Aantal ontvangen -KeepToShip=Houd verzendklaar +KeepToShip=Remain to ship OtherSendingsForSameOrder=Andere verzendingen voor deze opdracht DateSending=Datum versturing opdracht DateSendingShort=Datum versturing opdracht diff --git a/htdocs/langs/nl_NL/stocks.lang b/htdocs/langs/nl_NL/stocks.lang index d8019eb9d0d..8dec2f9aca9 100644 --- a/htdocs/langs/nl_NL/stocks.lang +++ b/htdocs/langs/nl_NL/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Waardering (PMP) PMPValueShort=Waarde EnhancedValueOfWarehouses=Voorraadwaardering UserWarehouseAutoCreate=Creëer automatisch een magazijn bij het aanmaken van een gebruiker +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Hoeveelheid verzonden QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=De voorraad van magazijn %s zal verminderd word WarehouseForStockIncrease=De voorraad van magazijn %s zal verhoogd worden ForThisWarehouse=Voor dit magazijn ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=Lijst van alle open leveranciersbestellingen +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Bevoorradingen NbOfProductBeforePeriod=Aantal op voorraad van product %s voor de gekozen periode (<%s) NbOfProductAfterPeriod=Aantal op voorraad van product %s na de gekozen periode (<%s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/nl_NL/suppliers.lang b/htdocs/langs/nl_NL/suppliers.lang index d468bff689e..e38970a6513 100644 --- a/htdocs/langs/nl_NL/suppliers.lang +++ b/htdocs/langs/nl_NL/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Leveranciers -Supplier=Leverancier AddSupplier=Create a supplier SupplierRemoved=Leverancier verwijderd SuppliersInvoice=Leveranciersfactuur @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Leveranciersfacturen en -betalingen ExportDataset_fournisseur_3=Leveranciersorders en orderlijnen ApproveThisOrder=Opdracht goedkeuren ConfirmApproveThisOrder=Weet u zeker dat u de Opdracht %s wilt goedkeuren? -DenyingThisOrder=Opdracht weigeren +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Weet u zeker dat u deze Opdracht %s wilt weigeren? ConfirmCancelThisOrder=Weet u zeker dat u deze Opdracht %s wilt annuleren? AddCustomerOrder=Voeg afnemersopdracht toe diff --git a/htdocs/langs/nl_NL/trips.lang b/htdocs/langs/nl_NL/trips.lang index 9496bc1e921..789566f3214 100644 --- a/htdocs/langs/nl_NL/trips.lang +++ b/htdocs/langs/nl_NL/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Reis -Trips=Reizen -TripsAndExpenses=Reizen en uitgaven -TripsAndExpensesStatistics=Reizen en uitgaven statistieken -TripCard=Reizenkaart -AddTrip=Reis toevoegen -ListOfTrips=Reizenlijst +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Vergoedingenlijst -NewTrip=Nieuwe reis +NewTrip=New expense report CompanyVisited=Bedrijf / stichting bezocht Kilometers=Kilometers FeesKilometersOrAmout=Kilometerskosten -DeleteTrip=Verwijder reis -ConfirmDeleteTrip=Weet u zeker dat u deze reis wilt verwijderen? -TF_OTHER=Ander -TF_LUNCH=Lunch -TF_TRIP=Reis -ListTripsAndExpenses=Lijst van de reis- en onkosten -ExpensesArea=Trips en uitgaven gebied -SearchATripAndExpense=Zoek een reis en kosten +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Ander +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/pl_PL/admin.lang b/htdocs/langs/pl_PL/admin.lang index 05f40c55bd3..d048aa3a61b 100644 --- a/htdocs/langs/pl_PL/admin.lang +++ b/htdocs/langs/pl_PL/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Eksperymentalny VersionDevelopment=Rozwój VersionUnknown=Nieznany VersionRecommanded=Zalecana +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=ID sesji SessionSaveHandler=Asystent zapisu sesji SessionSavePath=Lokalizacja sesji danych @@ -17,32 +22,32 @@ NoSessionListWithThisHandler=Asystent zapisu sesji skonfigurowany w PHP nie zezw LockNewSessions=Zablokuj nowe połączenia ConfirmLockNewSessions=Czy na pewno chcesz ograniczyć wszelkie nowe połączenie Dolibarr do siebie. Tylko %s użytkownik będzie mógł się połączyć po tym. UnlockNewSessions=Usuwanie blokady połączeń -YourSession=Sesji -Sessions=Użytkownicy sesji +YourSession=Twoja sesja +Sessions=Sesja użytkowników WebUserGroup=Serwer sieci Web użytkownik / grupa NoSessionFound=PHP wydaje się nie dopuścić do listy aktywnych sesji. Katalog używany do zapisywania sesji (%s) mogą być chronione (np. przez uprawnienia OS dyrektywy open_basedir lub PHP). -HTMLCharset=Charset dla generowanych stron HTML -DBStoringCharset=Charset bazy danych do przechowywania danych -DBSortingCharset=Database charset sortowanie danych +HTMLCharset=Kodowanie dla generowanych stron HTML +DBStoringCharset=Kodowanie bazy danych do przechowywania danych +DBSortingCharset=Kodowanie bazy danych by sortować dane WarningModuleNotActive=Moduł %s musi być aktywny -WarningOnlyPermissionOfActivatedModules=Tylko uprawnienia związane z aktywowane moduły pokazane są tutaj. Możesz uaktywnić inne moduły w instalacji - moduł strony. -DolibarrSetup=Dolibarr konfiguracji -DolibarrUser=Dolibarr użytkownika +WarningOnlyPermissionOfActivatedModules=Tylko uprawnienia związane z funkcją aktywowania modułów pokazane są tutaj. Możesz uaktywnić inne moduły w instalacji - moduł strony. +DolibarrSetup=Instalacja lub ulepszenie Dollibar'a +DolibarrUser=Użytkownik Dolibarr InternalUser=Wewnętrzny użytkownik -ExternalUser=Zewnętrzne użytkownika -InternalUsers=Użytkownicy wewnętrzni -ExternalUsers=Użytkowników zewnętrznych -GlobalSetup=Global konfiguracji +ExternalUser=Zewnętrzny użytkownik +InternalUsers=Wewnętrzni użytkownicy +ExternalUsers=Zewnetrzni użytkownicy +GlobalSetup=Globalna konfiguracja GUISetup=Wyświetlanie -SetupArea=Ustawienia obszaru -FormToTestFileUploadForm=Formularz do wysyłania pliku test (w zależności od konfiguracji) -IfModuleEnabled=Uwaga: tak jest skuteczne tylko wtedy, gdy modułu %s jest aktywny -RemoveLock=Usuwanie pliku %s, jeśli istnieje, aby umożliwić aktualizację narzędzia. -RestoreLock=Zastąp plik %s odczytu z uprawnień jedynie na plik wyłączyć wszelkie korzystanie z aktualizacji narzędzia. +SetupArea=Dział konfiguracji +FormToTestFileUploadForm=Formularz do wysyłania pliku testowego (według konfiguracji) +IfModuleEnabled=Uwaga: tak jest skuteczne tylko wtedy, gdy moduł %s jest aktywny +RemoveLock=Usuń plik %s, jeśli istnieje, aby umożliwić aktualizację narzędzia. +RestoreLock=Zastąp plik %s tylko z uprawnieniami do odczytu, by wyłączyć wszelkie korzystanie z aktualizacji narzędzia. SecuritySetup=Ustawienia bezpieczeństwa -ErrorModuleRequirePHPVersion=Błąd ten moduł wymaga PHP w wersji %s lub większy -ErrorModuleRequireDolibarrVersion=Błąd ten moduł wymaga Dolibarr wersji %s lub większy -ErrorDecimalLargerThanAreForbidden=Błąd, dokładność większa niż %s nie jest obsługiwany. +ErrorModuleRequirePHPVersion=Błąd ten moduł wymaga PHP w wersji %s lub większej +ErrorModuleRequireDolibarrVersion=Błąd ten moduł wymaga Dolibarr wersji %s lub większej +ErrorDecimalLargerThanAreForbidden=Błąd, dokładność większa niż %s nie jest obsługiwana DictionarySetup=Dictionary setup Dictionary=Dictionaries Chartofaccounts=Chart of accounts @@ -50,7 +55,7 @@ Fiscalyear=Fiscal years ErrorReservedTypeSystemSystemAuto=Value 'system' and 'systemauto' for type is reserved. You can use 'user' as value to add your own record ErrorCodeCantContainZero=Kod nie może zawierać wartości "0" DisableJavascript=Wyłącz funkcje JavaScript i Ajax (rekomendowane dla osób niewidomych oraz przeglądarek tekstowych) -ConfirmAjax=Wykorzystanie Ajax potwierdzenie pop +ConfirmAjax=Wykorzystanie potwierdzeń Ajax popups UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box. ActivityStateToSelectCompany= Dodaj filtr opcję aby pokazać / ukryć thirdparties, które są aktualnie w działalności lub przestał go @@ -137,7 +142,7 @@ Box=Box Boxes=Pulpity informacyjne MaxNbOfLinesForBoxes=Maksymalna liczba linii na polach PositionByDefault=Domyślna kolejność -Position=Position +Position=Pozycja MenusDesc=Menu menedżerów określić zawartość menu 2 bary (prętem poziomym i pionowym pasku). MenusEditorDesc=W menu edytora pozwala określić indywidualną pozycje w menu. Używaj go ostrożnie, aby uniknąć podejmowania dolibarr niestabilne i stałe pozycje menu nieosiągalny.
Niektóre moduły dodać pozycje w menu (w menu Wszystkie w większości przypadków). Jeśli usunęliśmy niektóre z tych zapisów przez pomyłkę, możesz przywrócić im przez wyłączenie i reenabling modułu. MenuForUsers=Menu dla użytkowników @@ -294,7 +299,7 @@ DoNotUseInProduction=Nie używaj w produkcji ThisIsProcessToFollow=Jest to proces konfiguracji do: StepNb=Krok %s FindPackageFromWebSite=Znaleźć pakiet, który zapewnia funkcję chcesz (np. na oficjalnej stronie internetowej %s). -DownloadPackageFromWebSite=Download package %s. +DownloadPackageFromWebSite=Pobieram paczke %s UnpackPackageInDolibarrRoot=Rozpakuj pakiet plików do katalogu głównego Dolibarr %s SetupIsReadyForUse=Instalacja jest zakończona i Dolibarr jest gotowy do użycia z tym nowym elementem. NotExistsDirect=Alternatywna ścieżka root nie została zdefiniowana.
@@ -394,10 +399,10 @@ WarningUsingFPDF=Warning: Your conf.php contains directive dolibarr_pd LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:
1 : local tax apply on products and services without vat (vat is not applied on local tax)
2 : local tax apply on products and services before vat (vat is calculated on amount + localtax)
3 : local tax apply on products without vat (vat is not applied on local tax)
4 : local tax apply on products before vat (vat is calculated on amount + localtax)
5 : local tax apply on services without vat (vat is not applied on local tax)
6 : local tax apply on services before vat (vat is calculated on amount + localtax) SMS=SMS LinkToTestClickToDial=Enter a phone number to call to show a link to test the ClickToDial url for user %s -RefreshPhoneLink=Refresh link +RefreshPhoneLink=Odśwież link LinkToTest=Clickable link generated for user %s (click phone number to test) -KeepEmptyToUseDefault=Keep empty to use default value -DefaultLink=Default link +KeepEmptyToUseDefault=Zostaw puste by używać domyślnych wartości +DefaultLink=Domyślny link ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) ExternalModule=External module - Installed into directory %s BarcodeInitForThirdparties=Mass barcode init for thirdparties @@ -443,7 +448,7 @@ Module52Name=Zapasy Module52Desc=Zapasy zarządzania produktów Module53Name=Usługi Module53Desc=Usługi zarządzania -Module54Name=Contracts/Subscriptions +Module54Name=Kontakty/Subskrypcje Module54Desc=Management of contracts (services or reccuring subscriptions) Module55Name=Kody kreskowe Module55Desc=Kody kreskowe zarządzania @@ -493,10 +498,16 @@ Module600Name=Powiadomienia Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Darowizny Module700Desc=Darowizny zarządzania +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integracji Module1400Name=Księgowość ekspertów Module1400Desc=Księgowość zarządzania dla ekspertów (double stron) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Kategorie Module1780Desc=Kategorie zarządzania (produktów, dostawców i klientów) Module2000Name=FCKeditor @@ -623,7 +634,7 @@ Permission164=Disable a service/subscription of a contract Permission165=Delete contracts/subscriptions Permission171=Read trips and expenses (own and his subordinates) Permission172=Create/modify trips and expenses -Permission173=Delete trips and expenses +Permission173=Usuń wyjazdy i wydatki Permission174=Read all trips and expenses Permission178=Export trips and expenses Permission180=Czytaj dostawców @@ -631,7 +642,7 @@ Permission181=Czytaj dostawcy zamówienia Permission182=Tworzenie / zmodyfikować dostawcy zamówienia Permission183=Validate dostawcy zamówienia Permission184=Zatwierdź dostawcy zamówienia -Permission185=Postanowienie dostawcy zamówienia +Permission185=Order or cancel supplier orders Permission186=Odbiór dostawcy zamówienia Permission187=Zamknij dostawcy zamówienia Permission188=Zrezygnuj dostawcy zamówienia @@ -711,6 +722,13 @@ Permission538=Eksport usług Permission701=Czytaj darowizn Permission702=Tworzenie / zmodyfikować darowizn Permission703=Usuń darowizn +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Czytaj zapasów Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Hasło do korzystania z serwera proxy DefineHereComplementaryAttributes=Określ tutaj wszystkie ATUTY, nie są już dostępne domyślnie i że chcesz być obsługiwane przez %s. ExtraFields=Uzupełniające atrybuty ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Linia produktów / usług z zerową ilość jest trakt FreeLegalTextOnProposal=Darmowy tekstu propozycji WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Zamówienia zarządzania konfiguracją OrdersNumberingModules=Zamówienia numeracji modules @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Kod kreskowy typu UPC BarcodeDescISBN=Kod kreskowy typu ISBN BarcodeDescC39=Kod kreskowy typu C39 BarcodeDescC128=Kod kreskowy typu C128 -GenbarcodeLocation=Kod kreskowy generowania narzędzie wiersza polecenia (używanego przez phpbarcode silników dla niektórych typów kodów kreskowych) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Środki pieniężne na rachunku do korzystania sprzedaje CashDeskBankAccountForCheque= Chcesz używać do otrzymywania płatności w formie czeku CashDeskBankAccountForCB= Chcesz używać do przyjmowania płatności gotówkowych za pomocą kart kredytowych -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Zakładka konfiguracji modułu @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/pl_PL/banks.lang b/htdocs/langs/pl_PL/banks.lang index 612aab42806..bbb51193375 100644 --- a/htdocs/langs/pl_PL/banks.lang +++ b/htdocs/langs/pl_PL/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Pojednanie RIB=Numer konta bankowego IBAN=Numer IBAN +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=Numer BIC / SWIFT +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Zlecenia stałe StandingOrder=Zlecenie stałe Withdrawals=Wypłaty @@ -148,7 +152,7 @@ BackToAccount=Powrót do konta ShowAllAccounts=Pokaż wszystkich rachunków FutureTransaction=Transakcja w futur. Nie da się pogodzić. SelectChequeTransactionAndGenerate=Wybierz / filtr sprawdza, to do otrzymania depozytu wyboru i kliknij przycisk "Utwórz". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/pl_PL/bills.lang b/htdocs/langs/pl_PL/bills.lang index 9e72e149a44..0d11b2c8bf0 100644 --- a/htdocs/langs/pl_PL/bills.lang +++ b/htdocs/langs/pl_PL/bills.lang @@ -1,10 +1,10 @@ # Dolibarr language file - Source file is en_US - bills Bill=Faktura Bills=Faktury -BillsCustomers=Customers invoices -BillsCustomer=Customers invoice -BillsSuppliers=Suppliers invoices -BillsCustomersUnpaid=Unpaid customers invoices +BillsCustomers=Faktury klientów +BillsCustomer=Faktura klientów +BillsSuppliers=Faktury dostawców +BillsCustomersUnpaid=Niezapłacone faktury klientów BillsCustomersUnpaidForCompany=Należne wpłaty klientów faktur dla %s BillsSuppliersUnpaid=Należne wpłaty dostawców faktur BillsSuppliersUnpaidForCompany=Nieodpłatnej dostawcy faktury za %s diff --git a/htdocs/langs/pl_PL/bookmarks.lang b/htdocs/langs/pl_PL/bookmarks.lang index 05ca4530e66..e3bfe9ad09e 100644 --- a/htdocs/langs/pl_PL/bookmarks.lang +++ b/htdocs/langs/pl_PL/bookmarks.lang @@ -10,10 +10,10 @@ BookmarkTargetNewWindowShort=Nowe okno BookmarkTargetReplaceWindowShort=Aktualne okno BookmarkTitle=Tytuł zakładki UrlOrLink=URL -BehaviourOnClick=Zachowanie po kliknięciu na adres URL +BehaviourOnClick=Zachowaj po kliknięciu na adres URL CreateBookmark=Stwórz zakładkę SetHereATitleForLink=Zdefiniuj nazwę zakładki -UseAnExternalHttpLinkOrRelativeDolibarrLink=Użyj zewnętrznego adresu http lub względnego URL Dolibarr +UseAnExternalHttpLinkOrRelativeDolibarrLink=Użyj zewnętrznego adresu http lub względnego adresu URL Dolibarr ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Wybierz czy strona ma się otwierać w bieżącym czy w nowym oknie BookmarksManagement=Zarządzanie zakładkami ListOfBookmarks=Lista zakładek diff --git a/htdocs/langs/pl_PL/commercial.lang b/htdocs/langs/pl_PL/commercial.lang index 8e18d15fa0a..5e8c6f36a04 100644 --- a/htdocs/langs/pl_PL/commercial.lang +++ b/htdocs/langs/pl_PL/commercial.lang @@ -9,9 +9,9 @@ Prospect=Prospect Prospects=Potencjalni klienci DeleteAction=Usuń działania / zadania NewAction=Nowe działania / zadania -AddAction=Dodaj działania / zadania -AddAnAction=Dodaj działania / zadania -AddActionRendezVous=Dodać zadanie Rendezvous +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Spotkanie ConfirmDeleteAction=Czy na pewno chcesz usunąć to zadanie? CardAction=Działanie karty @@ -44,8 +44,8 @@ DoneActions=Sporządzono działania DoneActionsFor=Sporządzono działań dla %s ToDoActions=Niekompletne działań ToDoActionsFor=Niekompletne działań na rzecz %s -SendPropalRef=Wyślij handlowych wniosku %s -SendOrderRef=Wyślij zamówienie %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Nie dotyczy StatusActionToDo=Aby to zrobić StatusActionDone=Zrobione @@ -62,7 +62,7 @@ LastProspectContactDone=Kontakt zrobić DateActionPlanned=Data działania planowane na DateActionDone=Data zrobienia działania ActionAskedBy=Działanie zadawane przez -ActionAffectedTo=Wpływ na działanie +ActionAffectedTo=Event assigned to ActionDoneBy=Działania wykonywane przez ActionUserAsk=Zarejestrowane przez ErrorStatusCantBeZeroIfStarted=Jeżeli pole 'Data zrobienia "jest wypełniona, rozpoczęto działania (lub gotowy), więc pole" Status "nie może być 0%%. diff --git a/htdocs/langs/pl_PL/companies.lang b/htdocs/langs/pl_PL/companies.lang index c38e732a362..460076d7f8e 100644 --- a/htdocs/langs/pl_PL/companies.lang +++ b/htdocs/langs/pl_PL/companies.lang @@ -91,9 +91,9 @@ LocalTax2IsUsedES= IRPF jest używany LocalTax2IsNotUsedES= IRPF nie jest używany LocalTax1ES=RE LocalTax2ES=IRPF -TypeLocaltax1ES=RE Type -TypeLocaltax2ES=IRPF Type -TypeES=Type +TypeLocaltax1ES=Typ Re +TypeLocaltax2ES=Typ IRPF +TypeES=Typ ThirdPartyEMail=%s WrongCustomerCode=Nieprawidłowy kod Klienta WrongSupplierCode=Nieprawidłowy kod Dostawcy @@ -259,8 +259,8 @@ AvailableGlobalDiscounts=Bezwzględne rabaty dostępne DiscountNone=Żaden Supplier=Dostawca CompanyList=Lista firm -AddContact=Dodaj kontakt -AddContactAddress=Dodaj kontakt / adres +AddContact=Stwórz konktakt +AddContactAddress=Stwórz kontakt/adres EditContact=Edytuj kontakt EditContactAddress=Edytuj kontakt / adres Contact=Kontakt @@ -268,8 +268,8 @@ ContactsAddresses=Kontakty / Adresy NoContactDefinedForThirdParty=Brak zdefiniowanych kontaktów dla tego kontrahenta NoContactDefined=Brak zdefinowanych kontaktów DefaultContact=Domyślny kontakt/adres -AddCompany=Dodaj firmę -AddThirdParty=Dodaj kontrahenta +AddCompany=Stwórz firmę +AddThirdParty=Dodaj stronę trzecią DeleteACompany=Usuń firmę PersonalInformations=Prywatne dane osobowe AccountancyCode=Kod księgowy @@ -343,7 +343,7 @@ TE_MEDIUM=Średnia firma TE_ADMIN=Rządowy TE_SMALL=Mała firma TE_RETAIL=Klient detaliczny -TE_WHOLE=Wholetailer +TE_WHOLE=Całościowy TE_PRIVATE=Osoba prywatna TE_OTHER=Inny StatusProspect-1=Nie kontaktować się @@ -397,18 +397,18 @@ YouMustCreateContactFirst=Musisz stworzyć e-maile, kontakty dla trzeciej pierws ListSuppliersShort=Lista dostawców ListProspectsShort=Lista potencjalnych klientów ListCustomersShort=Lista klientów -ThirdPartiesArea=Third parties and contact area +ThirdPartiesArea=Zamówienie i konktakt LastModifiedThirdParties=%s ostatnio modyfikowanych kontrahentów UniqueThirdParties=Łącznie unikatowych kontrahentów InActivity=Otwarte ActivityCeased=Zamknięte ActivityStateFilter=Status aktywności -ProductsIntoElements=List of products into %s +ProductsIntoElements=Lista produktów w %s CurrentOutstandingBill=Biężący, niezapłacony rachunek OutstandingBill=Maksymalna kwota niezapłaconego rachunku OutstandingBillReached=Osiągnieto maksimum niezapłaconych rachunków MonkeyNumRefModelDesc=Wróć NUMERO z formatu %syymm-nnnn klienta i kod %syymm-nnnn dla dostawcy kod yy gdzie jest rok, mm miesiąc i nnnn jest ciągiem bez przerwy i nie ma powrotu do 0.\nZwraca numer w formacie %syymm-nnnn dla kodu klienta i %syymm-nnnn dla kodu dostawcy, gdzie yy to rok, mm to miesiąc i nnnn jest sekwencją bez przerwy, bez powrotu do 0. LeopardNumRefModelDesc=Dowolny kod Klienta / Dostawcy. Ten kod może być modyfikowany w dowolnym momencie. ManagingDirectors=Funkcja(e) managera (prezes, dyrektor generalny...) -SearchThirdparty=Search thirdparty -SearchContact=Search contact +SearchThirdparty=Szukaj zamówienia +SearchContact=Znajdz kontakt diff --git a/htdocs/langs/pl_PL/contracts.lang b/htdocs/langs/pl_PL/contracts.lang index 04e1d26974d..138ce5b91c7 100644 --- a/htdocs/langs/pl_PL/contracts.lang +++ b/htdocs/langs/pl_PL/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Minął ServiceStatusClosed=Zamknięte ServicesLegend=Usługi legendy Contracts=Kontrakty +ContractsAndLine=Contracts and line of contracts Contract=Kontrakt NoContracts=Nr umowy MenuServices=Usługi diff --git a/htdocs/langs/pl_PL/cron.lang b/htdocs/langs/pl_PL/cron.lang index a1a4ba56588..d9628c890ea 100644 --- a/htdocs/langs/pl_PL/cron.lang +++ b/htdocs/langs/pl_PL/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/pl_PL/errors.lang b/htdocs/langs/pl_PL/errors.lang index a97ed635e4d..2cf540a0d8d 100644 --- a/htdocs/langs/pl_PL/errors.lang +++ b/htdocs/langs/pl_PL/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Źródło i celów rachunków bankowych muszą by ErrorBadThirdPartyName=Zła wartość w trzeciej imię ErrorProdIdIsMandatory=%s jest obowiązkowy ErrorBadCustomerCodeSyntax=Bad składni kodu klienta -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Klient kod wymagane ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Klient kod już używane @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=JavaScript nie musi być wyłączona do tej pracy f ErrorPasswordsMustMatch=Zarówno wpisane hasło musi się zgadzać się ErrorContactEMail=Techniczny błąd. Proszę skontaktować się z administratorem, aby po %s email pl zapewnić %s kod błędu w wiadomości, a nawet lepsze, dodając kopię ekranu strony. ErrorWrongValueForField=Nieprawidłowa wartość dla %s numer pola (wartość "%s" nie pasuje regex %s zasady) -ErrorFieldValueNotIn=Nieprawidłowa wartość dla %s liczba terenowych (value '%s "nie wartość dostępna w %s terenowych %s deserowe) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Nieprawidłowa wartość dla %s liczba pól (wartość '%s "nie jest %s istniejących ref) ErrorsOnXLines=Błędów na linii źródło %s ErrorFileIsInfectedWithAVirus=Program antywirusowy nie był w stanie potwierdzić (plik może być zainfekowany przez wirusa) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/pl_PL/install.lang b/htdocs/langs/pl_PL/install.lang index 474e25cf13d..2361a900a14 100644 --- a/htdocs/langs/pl_PL/install.lang +++ b/htdocs/langs/pl_PL/install.lang @@ -1,11 +1,11 @@ # Dolibarr language file - Source file is en_US - install -InstallEasy=Staraliśmy się by instalacja Dolibarra była tak prosta jak to możliwe. Postępuj wg instrukcji krok po kroku. +InstallEasy=Postępuj według instrukcji krok po kroku. MiscellaneousChecks=Sprawdzenie wymagań DolibarrWelcome=Witaj w Dolibarrze ConfFileExists=Plik konfiguracyjny %s istnieje. ConfFileDoesNotExists=Plik konfiguracyjny %s nie istnieje! ConfFileDoesNotExistsAndCouldNotBeCreated=Plik konfiguracyjny %s nie istnieje i nie mógł zostać utworzony! -ConfFileCouldBeCreated=Plik konfiguracyjny %s mógł zostać utworzony. +ConfFileCouldBeCreated=Plik konfiguracyjny %s został lub mógł zostać utworzony. ConfFileIsNotWritable=Plik konfiguracyjny %s nie ma uprawnień do zapisu. Sprawdź uprawnienia. Przy pierwszej instalacji Twój serwer WWW musi posiadać uprawnienia do zapisu tego pliku podczas procesu konfiguracji (Dla systemów uniksowych wystarczy wykonać polecenie "chmod 666"). ConfFileIsWritable=Plik konfiguracyjny %s ma uprawnienia do zapisu. ConfFileReload=Odśwież wszystkie informacje z pliku konfiguracyjnego. @@ -13,21 +13,21 @@ PHPSupportSessions=PHP obsługuje sesje. PHPSupportPOSTGETOk=PHP obsługuje zmienne POST i GET. PHPSupportPOSTGETKo=Możliwe, że PHP nie obsługuje zmiennych POST i/lub GET. Sprawdź parametr variables_order w php.ini. PHPSupportGD=PHP obsługuje graficzne funkcje GD. -PHPSupportUTF8=To wsparcie PHP UTF8 funkcji. -PHPMemoryOK=Maksymalna ilość pamięci sesji PHP to %s. Powinno wystarczyć. +PHPSupportUTF8=Ta wersja PHP oferuje wsparcie funkcji UTF8. +PHPMemoryOK=Maksymalna ilość pamięci sesji PHP ustawiona jest na %s. Powinno wystarczyć. PHPMemoryTooLow=Maksymalna ilość pamięci sesji PHP %s bajtów. To może nie wystarczyć. Zmień w php.ini parametr memory_limit na przynajmniej %s bajtów. -Recheck=Bardziej dokładny test +Recheck=Potwierdz w celu dokładniejszego testu ErrorPHPDoesNotSupportSessions=Instalacja PHP nie obsługuje sesji. Taka funkcjonalność jest wymagana do działania Dolibarra. Sprawdź swoje ustawienia PHP. -ErrorPHPDoesNotSupportGD=Twoja instalacji PHP nie obsługuje funkcji graficznych GD. Nr wykresie będą dostępne. -ErrorPHPDoesNotSupportUTF8=Twoja instalacji PHP nie obsługuje funkcji UTF8. Dolibarr może nie działać poprawnie. Rozwiązać ten problem przed instalacją Dolibarr. +ErrorPHPDoesNotSupportGD=Twoja instalacji PHP nie obsługuje funkcji graficznych GD. wykresy nie będą dostępne. +ErrorPHPDoesNotSupportUTF8=Twoja instalacji PHP nie obsługuje funkcji UTF8. Dolibarr może nie działać poprawnie. Rozwiązać ten problem przed instalacją Dolibarr'a. ErrorDirDoesNotExists=Katalog %s nie istnieje. -ErrorGoBackAndCorrectParameters=Cofnij się i popraw parametry. -ErrorWrongValueForParameter=Wprowadzono nieprawidłową wartość dla parametru '%s'. +ErrorGoBackAndCorrectParameters=Cofnij się i popraw złe parametry. +ErrorWrongValueForParameter=Możliwe, że wprowadzono nieprawidłową wartość dla parametru '%s'. ErrorFailedToCreateDatabase=Utworzenie bazy danych '%s' nie powiodło się. ErrorFailedToConnectToDatabase=Połączenie z bazą danych '%s' nie powiodło się. ErrorDatabaseVersionTooLow=Wersja (%s) bazy danych jest zbyt stara. Wymagana jest wersja %s lub wyższa. ErrorPHPVersionTooLow=Wersja PHP zbyt stara. Wymagana wersja to przynajmniej %s. -WarningPHPVersionTooLow=Wersja PHP jest zbyt stara. %s wersji lub więcej oczekuje. Wersja ta powinna umożliwić zainstalowanie ale nie jest obsługiwany. +WarningPHPVersionTooLow=Wersja PHP jest zbyt stara. Oczekiwana wersja %s lub większa. Wersja, którą posiadasz powinna umożliwić instalcję ale nie będzie obsługiwana. ErrorConnectedButDatabaseNotFound=Połączenie z serwerem powiodło się, ale nie znaleziony bazy '%s'. ErrorDatabaseAlreadyExists=Baza danych '%s' już istnieje. IfDatabaseNotExistsGoBackAndUncheckCreate=Jeśli baza danych nie istnieje, w poprzednim kroku zaznacz opcję "Utwórz bazę danych". @@ -38,13 +38,13 @@ YouCanContinue=Możesz kontynuować... PleaseBePatient=Proszę o cierpliwość... License=Użyta licencja ConfigurationFile=Plik konfiguracyjny -WebPagesDirectory=Katalog na strony WWW +WebPagesDirectory=Katalog, gdzie przechowywana jest strona WWW DocumentsDirectory=Katalog na przesłane i wygenerowane dokumenty URLRoot=Główny (Root) URL ForceHttps=Wymuś połączenia bezpieczne (HTTPS) CheckToForceHttps=Zaznacz tę opcję, aby wymusić połączenia bezpieczne (HTTPS).
Wymaga to, aby serwer WWW był skonfigurowany z certyfikatem SSL. -DolibarrDatabase=Baza danych Dolibarr -DatabaseChoice=Wybrana baza danych +DolibarrDatabase=Baza danych Dolibarr'a +DatabaseChoice=Wybór bazy danych DatabaseType=Rodzaj bazy danych DriverType=Rodzaj sterownika Server=Serwer @@ -54,16 +54,16 @@ DatabaseServer=Serwer baz danych DatabaseName=Nazwa bazy danych DatabasePrefix=Tabela prefiksów bazy danych Login=Login -AdminLogin=Login do bazy danych. Zostaw puste jeśli korzystasz z połączeń anonimowych +AdminLogin=Login do administratora bazy danych Password=Hasło PasswordAgain=Powtórz hasło -AdminPassword=Hasło do bazy danych. Zostaw puste jeśli korzystasz z połączeń anonimowych +AdminPassword=Hasło do bazy danych CreateDatabase=Utwórz bazę danych CreateUser=Utwórz użytkownika DatabaseSuperUserAccess=Baza danych z dostępem na prawach superużytkownika -CheckToCreateDatabase=Zaznacz jeśli baza danych nie istnieje i musi zostać utworzona.
W takim przypadku na dole tej strony musisz podać użytkownika/hasło do konta superużytkownika. -CheckToCreateUser=Zaznacz jeśli użytkownik nie istnieje i musi zostać utworzony.
W takim przypadku na dole tej strony musisz podać użytkownika/hasło do konta superużytkownika. -Experimental=(eksperymentalne, nie działające) +CheckToCreateDatabase=Zaznacz jeśli baza danych nie istnieje i musi zostać utworzona.
W przypadku takim na dole tej strony musisz podać użytkownika/hasło do konta superużytkownika. +CheckToCreateUser=Zaznacz jeśli użytkownik nie istnieje i musi zostać utworzony.
W przypadku takim na dole tej strony musisz podać użytkownika/hasło do konta superużytkownika. +Experimental=(eksperymentalnie, na własną odpowiedzialność) DatabaseRootLoginDescription=Login użytkownika mogącego tworzyć nowe bazy lub nowych użytkowników, wymagane jeśli baza danych oraz jej właściciel nie istnieją. KeepEmptyIfNoPassword=Zostaw puste jeśli użytkownik nie posiada hasła (unikaj takiej sytuacji) SaveConfigurationFile=Zapis wartości @@ -88,17 +88,17 @@ SystemIsInstalled=Instalacja zakończona. SystemIsUpgraded=Dolibarr został zaktualizowany pomyślnie. YouNeedToPersonalizeSetup=Teraz należy ustawić Dolibarra tak by spełniał Twoje wymagania (wygląd, możliwości, ...). Kliknij w poniższy link by przejść do ustawień: AdminLoginCreatedSuccessfuly=Użytkownik administracyjny Dolibarra '%s' utworzony pomyślnie. -GoToDolibarr=Idź do Dolibarr +GoToDolibarr=Idź do Dolibarr'a GoToSetupArea=Przejdź do ustawień Dolibarra -MigrationNotFinished=Wersja bazy danych nie jest w pełni aktualna, więc musisz uruchomić proces aktualizacji ponownie. +MigrationNotFinished=Wersja bazy danych nie jest w pełni aktualna. Musisz uruchomić proces aktualizacji ponownie. GoToUpgradePage=Wejdź na stronę aktualizacji ponownie Examples=Przykłady WithNoSlashAtTheEnd=Bez znaku ukośnika "/" na końcu DirectoryRecommendation=Zalecane jest by umieścić ten katalog poza katalogiem ze stronami WWW. LoginAlreadyExists=Już istnieje DolibarrAdminLogin=Użytkownik administracyjny Dolibarra -AdminLoginAlreadyExists=Konto administracyjne Dolibarra '%s' już istnieje. -WarningRemoveInstallDir=Ostrzeżenie: ze względów bezpieczeństwa po instalacji lub aktualizacji powinno się usunąć katalog install lub zmienić jego nazwę na install.lock by zapobiec jego nieuprawnionemu użyciu. +AdminLoginAlreadyExists=Konto administracyjne Dolibarra '%s' już istnieje. Cofnij się jeśli chcesz utworzyć kolejne. +WarningRemoveInstallDir=Ostrzeżenie: ze względów bezpieczeństwa by zapobiec nieuprawnionemu użyciu po instalacji lub aktualizacji powinno się usunąć katalog install lub zmienić jego nazwę na install.lock. ThisPHPDoesNotSupportTypeBase=Ta wersja PHP nie obsługuje żadnego interfejsu dostępu do baz danych typu %s FunctionNotAvailableInThisPHP=Niedostępne w tej wersji PHP MigrateScript=Skrypt migracyjny @@ -107,21 +107,21 @@ DataMigration=Migracja danych DatabaseMigration=Migracja struktur baz danych ProcessMigrateScript=Przetwarzanie skryptów ChooseYourSetupMode=Wybierz tryb instalacji i potwierdź przyciskiem "Start"... -FreshInstall=Świeża instalacja -FreshInstallDesc=Użyj tego trybu jeśli to pierwsza instalacja. Jeśli nie to w tym trybie można naprawić poprzednią niepełną instalację, ale w przypadku aktualizacji skorzystaj z trybu "Aktualizacja". +FreshInstall=Nowa instalacja +FreshInstallDesc=Użyj tego trybu jeśli to pierwsza instalacja. Jeśli nie, to w tym trybie można naprawić poprzednią niepełną instalację. W przypadku aktualizacji skorzystaj z trybu "Aktualizacja". Upgrade=Aktualizacja UpgradeDesc=Użyj tego trybu jeśli podmieniono stare pliki Dolibarra plikami z nowszej wersji. Ten tryb uaktualni bazę danych i poprzednie dane. Start=Start InstallNotAllowed=Ustawienie niedostępne przez uprawnienia conf.php NotAvailable=Niedostępne YouMustCreateWithPermission=Musisz utworzyć plik %s i ustawić mu prawa zapisu dla serwera WWW podczas procesu instalacyjnego. -CorrectProblemAndReloadPage=Proszę poprawić te ustawienia i odświeżyć stronę. +CorrectProblemAndReloadPage=Proszę poprawić te ustawienia i odświeżyć stronę (domyślnie F5). AlreadyDone=Migracja już przeprowadzona. DatabaseVersion=Wersja bazy danych ServerVersion=Wersja serwera baz danych YouMustCreateItAndAllowServerToWrite=Musisz utworzyć ten katalog i zezwolić serwerowi WWW na zapis w nim. CharsetChoice=Wybór zestawu kodowania -CharacterSetClient=Zestaw kodowania dla wygenerowanych stron HTML +CharacterSetClient=Zestaw kodowania użyty dla wygenerowanych stron HTML CharacterSetClientComment=Wybierz zestaw kodowania znaków dla stron HTML.
Domyślnym wyborem zestawu znaków jest ten zastosowany w bazie danych. DBSortingCollation=Sposób sortowania znaków DBSortingCollationComment=Wybierz stronę kodową, która definiuje sposób sortowania znaków używany przez bazę danych. Ten parametr jest często nazywany 'collation'.
Jeśli baza już istnieje, nie ma możliwości zdefiniowania tego parametru. @@ -129,45 +129,46 @@ CharacterSetDatabase=Zestaw znaków dla bazy danych CharacterSetDatabaseComment=Wybierz zesta znaków, który zostanie użyty do utworzenia bazy danych.
Jeśli baza już istnieje, nie ma możliwości zdefiniowania tego parametru. YouAskDatabaseCreationSoDolibarrNeedToConnect=Wybrano by utworzyć bazę danych %s, ale by tego dokonać Dolibarr musi połączyć się z serwerem %s na prawach superużytkownika %s. YouAskLoginCreationSoDolibarrNeedToConnect=Wybrano by utworzyć użytkownika %s, ale by tego dokonać Dolibarr musi połączyć się z serwerem %s na prawach superużytkownika %s. -BecauseConnectionFailedParametersMayBeWrong=Połączenie nie powiodło się, więc adres serwera lub parametry superużytkownika musiały być nieprawidłowe. +BecauseConnectionFailedParametersMayBeWrong=Połączenie nie powiodło się. Adres serwera lub parametry superużytkownika musiały być nieprawidłowe. OrphelinsPaymentsDetectedByMethod=Osierocona płatność wykryta przez metodę %s -RemoveItManuallyAndPressF5ToContinue=Usuń go ręcznie i odśwież stronę by kontynuować. +RemoveItManuallyAndPressF5ToContinue=Usuń go ręcznie i odśwież stronę (domyślnie F5) by kontynuować. KeepDefaultValuesWamp=Używasz kreatora instalacji, więc zaproponowane wartości są zoptymalizowane. Zmieniaj je tylko jeśli wiesz co robisz. -KeepDefaultValuesDeb=Du bruker Dolibarr konfigurasjonsveiviseren fra en Ubuntu eller Debian-pakke, så verdiene foreslått her allerede er optimalisert. Bare passordet til databasen eieren til å opprette må fullføres. Endre andre parametere bare hvis du vet hva du gjør. +KeepDefaultValuesDeb=Uzywasz kreatora instalacji dla Linuxa (Ubutu, Debian, Fedora..), więc zaproponowane wartości są zoptymalizowane. Tylko hasło właściciela bazy danych do stworzenia musi być kompletne. Inne parametry zmieniaj TYLKO jeśli wiesz co robisz. KeepDefaultValuesMamp=Używasz kreatora instalacji, więc zaproponowane wartości są zoptymalizowane. Zmieniaj je tylko jeśli wiesz co robisz. -KeepDefaultValuesProxmox=Możesz skorzystać z kreatora konfiguracji Dolibarr z urządzeniem wirtualnym Proxmox, więc wartościami zaproponowanymi tutaj są już zoptymalizowane. Zmieniaj je tylko jeśli wiesz co robisz. +KeepDefaultValuesProxmox=Możesz skorzystać z kreatora konfiguracji Dolibarr z urządzeniem wirtualnym Proxmox, więc wartości zaproponowane tutaj są już zoptymalizowane. Zmieniaj je tylko jeśli wiesz co robisz. FieldRenamed=Nazwa pola zmieniona -IfLoginDoesNotExistsCheckCreateUser=Jeśli logowania jeszcze nie istnieje, należy sprawdzić opcję "Utwórz użytkownika" -ErrorConnection=Serwer " %s", nazwa bazy danych " %s" login " %s" lub hasło bazy danych mogą być złe lub PHP wersji klienckiej może być zbyt stare porównaniu do wersji bazy danych. -InstallChoiceRecommanded=Zaleciły wybór zainstalować wersję %s od aktualnej wersji %s +IfLoginDoesNotExistsCheckCreateUser=Jeśli login jeszcze nie istnieje, sprawdzić opcję "Utwórz użytkownika" +ErrorConnection=Serwer " %s", nazwa bazy danych " %s" login " %s" lub hasło bazy danych mogą być złe lub PHP wersji klienckiej może być zbyt stare w porównaniu do wersji bazy danych. +InstallChoiceRecommanded=Zalecany wybór: zainstalować wersję %s od aktualnej wersji %s InstallChoiceSuggested=Wybór sugerowany przez instalator. -MigrateIsDoneStepByStep=Ukierunkowane wersja (%s) ma lukę w kilku wersjach, tak zainstalować kreator powróci do sugerować kolejną migrację raz ten jeden będzie gotowy. -CheckThatDatabasenameIsCorrect=Sjekk at database navn "%s" er korrekt. -IfAlreadyExistsCheckOption=Hvis dette navnet er riktig, og at databasen ikke eksisterer ennå, du må sjekke alternativet "Opprett database". -OpenBaseDir=PHP openbasedir parameter -YouAskToCreateDatabaseSoRootRequired=Du merket "Opprett database". For dette, må du oppgi brukernavn / passord av superbruker (nederst på skjemaet). -YouAskToCreateDatabaseUserSoRootRequired=Du merket "Opprett database eier". For dette, må du oppgi brukernavn / passord av superbruker (nederst på skjemaet). -NextStepMightLastALongTime=Gjeldende trinn kan vare i flere minutter. Vennligst vent til neste skjermbildet vises helt før du fortsetter. -MigrationCustomerOrderShipping=Migrer frakt for kundeordrer oppbevaring -MigrationShippingDelivery=Oppgrader lagring av shipping -MigrationShippingDelivery2=Oppgrader lagring av shipping 2 +MigrateIsDoneStepByStep=Konkretna wersja (%s) ma lukę w kilku wersjach, kreator powróci do sugerowawanej kolejnej migracji, kiedy aktualna będzie gotowa. +CheckThatDatabasenameIsCorrect=Sprawdz czy nazwa bazy danych "%s" jest poprawna. +IfAlreadyExistsCheckOption=Jeśli ta nazwa jest poprawna i baza danych jeszcze nie istnieje, sprawdz opcję "utwórz bazę danych" +OpenBaseDir=PHP parametr otwarcia katalogu bazy danych +YouAskToCreateDatabaseSoRootRequired=Zaznaczyłeś opcje "Stwórz baze danych". Wprowadz proszę nazwę i hasło Super Użytkownika +YouAskToCreateDatabaseUserSoRootRequired=Zaznaczyłeś opcje "Stwórz właściciela bazy danych". Wprowadz proszę nazwę i hasło Super Użytkownika. +NextStepMightLastALongTime=Aktulany krok potrwa chwilę. By kontynuować, proszę czekać, aż kolejny krok będzie dostępny. +MigrationCustomerOrderShipping=Migracja danych przesyłek zamówień odbiorców +MigrationShippingDelivery=Aktualizacja stanu do wysyłki +MigrationShippingDelivery2=Aktualizacja stanu do wysyłki 2 MigrationFinished=Migracja zakończona -LastStepDesc=Ostatni krok: Zdefiniuj tutaj login i hasło masz zamiar użyć do połączenia z oprogramowaniem. Nie trać tego, ponieważ jest to konto do administrowania wszystkimi innymi. +LastStepDesc=Ostatni krok: Zdefiniuj tutaj nazwę i hasło, które masz zamiar użyć do połączenia z oprogramowaniem. Zapamiętaj je, ponieważ jest to konto do administrowania wszystkimi innymi ustawieniami. ActivateModule=Aktywuj moduł %s ShowEditTechnicalParameters=Kliknij tutaj, aby pokazać / edytować zaawansowane parametry (tryb ekspert) -WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +WarningUpgrade=Uwaga:\nPamiętaj o zrobieniu kopi zapasowej bazy!\nWysoko rekomendowane: dla przykładu, podczas wystąpienia błędu w bazie danych systemu (dla przykładu w wersji 5.5.40 mySQL), niektóre dane lub tabele mogą zostać stracone podczas tego procesu. Rekomendowane jest by zrobic kopię swojej bazy przed migracją.\n\nNaciśnij OK by zacząć migrację... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade -MigrationFixData=Fastsette for denormalized data +MigrationFixData=Napraw nieznormalizowane dane MigrationOrder=Migracja danych zamówień odbiorców MigrationSupplierOrder=Migracja danych zamówień dostawców MigrationProposal=Migracja danych propozycji handlowych -MigrationInvoice=Migracja danych faktur odbiorców +MigrationInvoice=Migracja dla danych faktur odbiorców MigrationContract=Migracja danych kontraktów MigrationSuccessfullUpdate=Aktualizacja powiodła się MigrationUpdateFailed=Aktualizacja nie powiodła się -MigrationRelationshipTables=Data migrering for forholdet tabeller (%s) +MigrationRelationshipTables=Migracja dla danych propozycji handlowych (%s) MigrationPaymentsUpdate=Korekta danych płatności MigrationPaymentsNumberToUpdate=%s płatności do aktualizacji MigrationProcessPaymentUpdate=Aktualizacja płatności %s @@ -187,7 +188,7 @@ MigrationContractsInvalidDateFix=Korekta kontraktu %s (Data kontraktu=%s, Minima MigrationContractsInvalidDatesNumber=%s kontraktów zmodyfikowano MigrationContractsInvalidDatesNothingToUpdate=Brak dat z nieprawidłową wartością do korekty MigrationContractsIncoherentCreationDateUpdate=Nieprawidłowa wartość daty początkowej kontraktu do korekty -MigrationContractsIncoherentCreationDateUpdateSuccess=Nieprawidłowa wartość początkowej daty kontraktu skorygowana poprawnie +MigrationContractsIncoherentCreationDateUpdateSuccess=Nieprawidłowa wartość początkowej daty kontraktu. Skorygowana poprawnie MigrationContractsIncoherentCreationDateNothingToUpdate=Brak nieprawidłowych wartości początkowej daty kontraktu do korekty MigrationReopeningContracts=Otwarte kontrakty zamknięte z przyczyny błędu MigrationReopenThisContract=Ponownie otwórz kontrakt %s @@ -199,15 +200,15 @@ MigrationShipmentOrderMatching=Aktualizacja rachunków za wysyłki MigrationDeliveryOrderMatching=Aktualizacja rachunków za dostawy MigrationDeliveryDetail=Aktualizacja dostawy MigrationStockDetail=Aktualizacja wartości zapasów produktów -MigrationMenusDetail=Aktualizacja dynamiczne menu tabele +MigrationMenusDetail=Aktualizacja dynamicznego meni tabeli MigrationDeliveryAddress=Aktualizacja adresu dostarczenia przesyłki -MigrationProjectTaskActors=Data migrering for llx_projet_task_actors bord -MigrationProjectUserResp=Data migrering feltet fk_user_resp av llx_projet å llx_element_contact -MigrationProjectTaskTime=Oppdater tid i sekunder +MigrationProjectTaskActors=Migracja danych z tabeli llx_projet_task_actors +MigrationProjectUserResp=Migracja danych pola fk_user_resp z llx_projet do llx_element_contact +MigrationProjectTaskTime=Pokonany czas uaktualnienia w sekundach MigrationActioncommElement=Aktualizacja danych na temat działań MigrationPaymentMode=Migracji danych w trybie płatności MigrationCategorieAssociation=Migracja kategorii -MigrationEvents=Migration of events to add event owner into assignement table +MigrationEvents=Przenieś wydarzenie by dodać nowego właściciela do przypisanej tabeli. -ShowNotAvailableOptions=Show not available options -HideNotAvailableOptions=Hide not available options +ShowNotAvailableOptions=Pokaż niedostępne opcje. +HideNotAvailableOptions=Ukryj niedostępne opcje. diff --git a/htdocs/langs/pl_PL/ldap.lang b/htdocs/langs/pl_PL/ldap.lang index af146a42d6e..5ab82adba70 100644 --- a/htdocs/langs/pl_PL/ldap.lang +++ b/htdocs/langs/pl_PL/ldap.lang @@ -17,13 +17,13 @@ LDAPUsers=Użytkowników w bazie danych LDAP LDAPGroups=Grupy w bazie danych LDAP LDAPFieldStatus=Stan LDAPFieldFirstSubscriptionDate=Pierwsze subskrypcji daty -LDAPFieldFirstSubscriptionAmount=Fist kwoty abonamentu +LDAPFieldFirstSubscriptionAmount=Pierwsza subskrypcja kwoty LDAPFieldLastSubscriptionDate=Ostatnia data subskrypcji LDAPFieldLastSubscriptionAmount=Ostatnia kwota subskrypcji SynchronizeDolibarr2Ldap=Synchronizacja użytkownika (Dolibarr -> LDAP) -UserSynchronized=Użytkownik zsynchronizowane -GroupSynchronized=Grupa zsynchronizowane +UserSynchronized=Użytkownik zsynchronizowany +GroupSynchronized=Grupa zsynchronizowana MemberSynchronized=Państwa zsynchronizowane -ContactSynchronized=Kontakt zsynchronizowane -ForceSynchronize=Siły synchronizujące Dolibarr -> LDAP +ContactSynchronized=Kontakt zsynchronizowany +ForceSynchronize=Synchronizacja użytkownika (Dolibarr -> LDAP) ErrorFailedToReadLDAP=Nie można odczytać bazy danych LDAP. Sprawdź LDAP moduł konfiguracji bazy danych i dostępności. diff --git a/htdocs/langs/pl_PL/link.lang b/htdocs/langs/pl_PL/link.lang index 8b1efb75ef3..81c4c7b4ffd 100644 --- a/htdocs/langs/pl_PL/link.lang +++ b/htdocs/langs/pl_PL/link.lang @@ -1,8 +1,8 @@ -LinkANewFile=Link a new file/document -LinkedFiles=Linked files and documents -NoLinkFound=No registered links -LinkComplete=The file has been linked successfully -ErrorFileNotLinked=The file could not be linked -LinkRemoved=The link %s has been removed -ErrorFailedToDeleteLink= Failed to remove link '%s' -ErrorFailedToUpdateLink= Failed to update link '%s' +LinkANewFile=Podepnij nowy plik/dokument +LinkedFiles=Podepnij plik i dokument +NoLinkFound=Brak zarejestrowanych linków +LinkComplete=Plik został podlinkowany poprawnie +ErrorFileNotLinked=Plik nie mógł zostać podlinkowany +LinkRemoved=Link %s został usunięty +ErrorFailedToDeleteLink= Niemożna usunąc linku '%s' +ErrorFailedToUpdateLink= Niemożna uaktualnić linku '%s' diff --git a/htdocs/langs/pl_PL/main.lang b/htdocs/langs/pl_PL/main.lang index ddad87dc664..edc327913a3 100644 --- a/htdocs/langs/pl_PL/main.lang +++ b/htdocs/langs/pl_PL/main.lang @@ -5,104 +5,104 @@ DIRECTION=ltr # stsongstdlight or cid0cs are for simplified Chinese # To read Chinese pdf with Linux: sudo apt-get install poppler-data FONTFORPDF=DejaVuSans -FONTSIZEFORPDF=8 +FONTSIZEFORPDF=10 SeparatorDecimal=, SeparatorThousand=Space -FormatDateShort=%d-%m-%Y -FormatDateShortInput=%d-%m-%Y -FormatDateShortJava=dd-MM-yyyy -FormatDateShortJavaInput=dd-MM-yyyy -FormatDateShortJQuery=dd-mm-yy -FormatDateShortJQueryInput=dd-mm-yy -FormatHourShortJQuery=HH:MI -FormatHourShort=%H:%M +FormatDateShort=%d-%m-%r +FormatDateShortInput=%d-%m-%r +FormatDateShortJava=dd-MM-rrrr +FormatDateShortJavaInput=dd-MM-rrrr +FormatDateShortJQuery=dd-mm-rr +FormatDateShortJQueryInput=dd-mm-rr +FormatHourShortJQuery=HH:MM +FormatHourShort=%I:%M %p FormatHourShortDuration=%H:%M -FormatDateTextShort=%d %b %Y -FormatDateText=%d %B %Y -FormatDateHourShort=%d-%m-%Y %H:%M +FormatDateTextShort=%d %b %R +FormatDateText=%B %d, %Y +FormatDateHourShort=%m/%d/%Y %I:%M %p FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p -FormatDateHourTextShort=%d %b %Y %H:%M -FormatDateHourText=%d %B %Y %H:%M +FormatDateHourTextShort=%b %d, %Y, %I:%M %p +FormatDateHourText=%B %d, %Y, %I:%M %p DatabaseConnection=Połączenia z bazą danych NoTranslation=Brak tłumaczenia -NoRecordFound=No record found +NoRecordFound=Rekord nie został znaleziony. NoError=Brak błędów Error=Błąd ErrorFieldRequired=Pole ' %s' jest wymagane ErrorFieldFormat=Pole ' %s' ma złe wartości ErrorFileDoesNotExists=Plik %s nie istnieje ErrorFailedToOpenFile=Nie można otworzyć pliku %s -ErrorCanNotCreateDir=Nie można utworzyć %s reż -ErrorCanNotReadDir=Nie można odczytać %s reż -ErrorConstantNotDefined=Parametr %s nie zostało zdefiniowane -ErrorUnknown=Unknown error +ErrorCanNotCreateDir=Nie można utworzyć folderu %s +ErrorCanNotReadDir=Nie można odczytać folderu %s +ErrorConstantNotDefined=Parametr %s nie został zdefiniowany +ErrorUnknown=Nieznany błąd ErrorSQL=Błąd SQL -ErrorLogoFileNotFound=Logo file ' %s' nie został odnaleziony -ErrorGoToGlobalSetup=Idź do "Firma / Fundacja" Aby rozwiązać ten problem z konfiguracją -ErrorGoToModuleSetup=Przejdź do modułu konfiguracji Aby rozwiązać ten -ErrorFailedToSendMail=Failed to send mail (sender=%s, receiver=Nie można wysłać mail (nadawcy= %s, odbiornik= %s) -ErrorAttachedFilesDisabled=Podłączanie plików funkcja jest wyłączona na tym serveur -ErrorFileNotUploaded=Plik nie został załadowany. Sprawdź, czy rozmiar nie przekracza maksymalnej dopuszczalnej, że wolnego miejsca jest dostępna na dysku i że nie ma już plik o takiej samej nazwie w tym katalogu. +ErrorLogoFileNotFound=Logo pliku ' %s' nie zostało odnalezione +ErrorGoToGlobalSetup=Idź do "Firma / Fundacja" Aby rozwiązać problem +ErrorGoToModuleSetup=Przejdź do modułu konfiguracji aby naprawić +ErrorFailedToSendMail=Próba wysłania maila nie udana (nadawca=%s, odbiorca=%s) +ErrorAttachedFilesDisabled=Na tym serwerze funkcja łączania plików jest wyłączona +ErrorFileNotUploaded=Plik nie został załadowany. Sprawdź, czy rozmiar nie przekracza maksymalnej dopuszczalnej wagi, lub czy wolne miejsce jest dostępne na dysku. Sprawdz czy nie ma już pliku o takiej samej nazwie w tym katalogu. ErrorInternalErrorDetected=Wykryto błąd -ErrorNoRequestRan=Nr wniosek prowadził -ErrorWrongHostParameter=Niewłaściwy hosta parametr -ErrorYourCountryIsNotDefined=Twój kraj nie jest zdefiniowane. Przejdź do Start-setup-Edycja i po raz kolejny formularz. -ErrorRecordIsUsedByChild=Nie można usunąć rekordu. Ten zapis jest używany przez co najmniej na dziecko rekordy. +ErrorNoRequestRan=Brak aktywnych zapytań +ErrorWrongHostParameter=Niewłaściwy parametr hosta +ErrorYourCountryIsNotDefined=Twój kraj nie został zdefiniowany. Przejdź do Start-setup-Edycja i wypełnij poprawnie formularz. +ErrorRecordIsUsedByChild=Nie można usunąć rekordu. Ten zapis jest używany przez co najmniej jeden pokrewny rekord. ErrorWrongValue=Błędna wartość ErrorWrongValueForParameterX=Nieprawidłowa wartość dla parametru %s -ErrorNoRequestInError=Żadne życzenie nie jest w błędzie +ErrorNoRequestInError=Nie wykryto żadneog błednego zapytania. ErrorServiceUnavailableTryLater=Usługa nie jest dostępna w tej chwili. Spróbuj ponownie później. ErrorDuplicateField=Zduplikuj niepowtarzalną wartość w polu -ErrorSomeErrorWereFoundRollbackIsDone=Niektóre błędy znaleziono. Mamy cofnąć zmiany. -ErrorConfigParameterNotDefined=Parametr %s nie jest zdefiniowany wewnątrz Dolibarr plik konfiguracyjny conf.php. -ErrorCantLoadUserFromDolibarrDatabase=Nie można znaleźć użytkownika %s Dolibarr w bazie danych. +ErrorSomeErrorWereFoundRollbackIsDone=Znaleziono błedy. Cofam zmiany +ErrorConfigParameterNotDefined=Parametr %s nie jest zdefiniowany wewnątrz pliku konfiguracyjnego conf.php. Dollibara +ErrorCantLoadUserFromDolibarrDatabase=Nie można znaleźć użytkownika %s Dolibarra w bazie danych. ErrorNoVATRateDefinedForSellerCountry=Błąd, nie określono stawki VAT dla kraju " %s". -ErrorNoSocialContributionForSellerCountry=Błąd, nie typ społeczny wkład określone dla kraju "%s". +ErrorNoSocialContributionForSellerCountry=Błąd, społeczny wkład określony dla kraju %s niezdefiniowany. ErrorFailedToSaveFile=Błąd, nie udało się zapisać pliku. -SetDate=Set date -SelectDate=Select a date -SeeAlso=See also %s -SeeHere=See here +SetDate=Ustaw datę +SelectDate=Wybierz datę +SeeAlso=Zobacz także %s +SeeHere=Zobacz tutaj BackgroundColorByDefault=domyślny kolor tła -FileNotUploaded=The file was not uploaded -FileUploaded=The file was successfully uploaded -FileWasNotUploaded=Wybraniu pliku do zamocowania, ale jeszcze nie wysłał. Kliknij na "Dołącz plik" w tej sprawie. -NbOfEntries=Uwaga wpisów -GoToWikiHelpPage=Przeczytaj pomoc online (potrzeba dostępu do Internetu) +FileNotUploaded=Plik nie został wysłany +FileUploaded=Plik został pomyślnie przesłany +FileWasNotUploaded=Wybrano pliku do zamontowaia, ale jeszcze nie wysłano. W tym celu wybierz opcję "dołącz plik". +NbOfEntries=Liczba wejść +GoToWikiHelpPage=Przeczytaj pomoc online GoToHelpPage=Przeczytaj pomoc -RecordSaved=Zapis zapisane -RecordDeleted=Record deleted -LevelOfFeature=Poziom funkcje +RecordSaved=Rekord zapisany +RecordDeleted=Rekord usunięty +LevelOfFeature=możliwości funkcji NotDefined=Nie zdefiniowany -DefinedAndHasThisValue=Zdefiniowane i wartości -IsNotDefined=undefined -DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr uwierzytelniania w trybie %s do konfiguracji w pliku konfiguracyjnym conf.php.
Oznacza to, że hasło do bazy danych jest extern Dolibarr, więc zmianę tej dziedzinie może mieć skutki. +DefinedAndHasThisValue=Zdefiniowao i przeliczono +IsNotDefined=Nie zdefiniowano +DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr uwierzytelnia w trybie %s do konfiguracji w pliku konfiguracyjnym conf.php.
Oznacza to, że hasło do bazy danych jest zewnętrzne Dolibarr, więc zmiany w tej dziedzinie mogą nie mieć skutków. Administrator=Administrator -Undefined=Niezdefiniowana +Undefined=Niezdefiniowano PasswordForgotten=Zapomniałeś hasła? SeeAbove=Patrz wyżej HomeArea=Strona Startowa LastConnexion=Ostatnie połączenia PreviousConnexion=Poprzednie połączenia -ConnectedOnMultiCompany=Połączenie na podmiot -ConnectedSince=Połączenie od -AuthenticationMode=Autentyczności trybie -RequestedUrl=Żądanego adresu -DatabaseTypeManager=Database Type Manager -RequestLastAccess=Wniosek o ostatnim dostępu do baz danych -RequestLastAccessInError=Wniosek o ostatnim dostępu do baz danych w wyniku błędu -ReturnCodeLastAccessInError=Kod powrotu do ostatniego dostępu do baz danych w błąd -InformationLastAccessInError=Informacje dla ostatniego dostępu do baz danych w błąd -DolibarrHasDetectedError=Dolibarr wykrył błędu technicznego -InformationToHelpDiagnose=To informacje, które mogą pomóc w diagnozowaniu +ConnectedOnMultiCompany=Podłączono do środowiska +ConnectedSince=Połączeno od +AuthenticationMode=Tryb autentycznośći +RequestedUrl=Zażądano adresu URL +DatabaseTypeManager=Typ managera bazy danych +RequestLastAccess=Zapytanie o ostatni dostęp do baz danych +RequestLastAccessInError=Zapytanie o ostatni dostęp do baz danych w wyniku błędu +ReturnCodeLastAccessInError=Kod powrotu ostatniego dostępu do baz danych w błędzie +InformationLastAccessInError=Informacje ostatniego dostępu do baz danych w błędzie +DolibarrHasDetectedError=Dolibarr wykrył błąd techniczny +InformationToHelpDiagnose=Informacje, które mogą pomóc w diagnozowaniu MoreInformation=Więcej informacji -TechnicalInformation=Technical information -NotePublic=Uwaga (publiczne) -NotePrivate=Uwaga (prywatne) -PrecisionUnitIsLimitedToXDecimals=Dolibarr był konfiguracji do ograniczenia dokładności cen jednostkowych do %s miejsc po przecinku. +TechnicalInformation=Informację techniczne +NotePublic=Uwaga (publiczna) +NotePrivate=Uwaga (prywatna) +PrecisionUnitIsLimitedToXDecimals=Dolibarr ustawił ograniczenia dokładności cen jednostkowych do %s miejsc po przecinku. DoTest=Test ToFilter=Filtr -WarningYouHaveAtLeastOneTaskLate=Ostrzeżenie, masz co najmniej jeden element, który przekroczył tolerancji zwłoki. +WarningYouHaveAtLeastOneTaskLate=Ostrzeżenie! masz co najmniej jeden element, który przekroczył tolerancje zwłoki. yes=tak Yes=Tak no=nie @@ -116,41 +116,42 @@ Always=Zawsze Never=Nigdy Under=pod Period=Okres -PeriodEndDate=Datę zakończenia okresu +PeriodEndDate=Data zakończenia okresu Activate=Uaktywnij Activated=Aktywowany Closed=Zamknięte Closed2=Zamknięte -Enabled=Włączone -Deprecated=Deprecated -Disable=Wyłączyć -Disabled=Niepełnosprawnych +Enabled=Dostępne +Deprecated=Nieaktualne +Disable=Niedostępne +Disabled=Niedostępne/Wyłączone Add=Dodać AddLink=Dodaj link Update=Uaktualnić -AddActionToDo=Dodaj do działania -AddActionDone=Dodaj działania zrobienia -Close=Blisko -Close2=Blisko +AddActionToDo=Dodaj działanie do +AddActionDone=Dodaj działania zrobiene +Close=Zamknij +Close2=Zamknij Confirm=Potwierdź -ConfirmSendCardByMail=Czy na pewno chcesz wysłać tę kartę pocztą? -Delete=Usunąć +ConfirmSendCardByMail=Czy na pewno chcesz wysłać tą treść mailem do %s? +Delete=Skasować Remove=Usunąć -Resiliate=Resiliate +Resiliate=Wypowiedzenie Cancel=Zrezygnuj Modify=Modyfikuj Edit=Edytuj -Validate=Validate +Validate=Potwierdz +ValidateAndApprove=Validate and Approve ToValidate=Aby potwierdzić Save=Zapisać SaveAs=Zapisz jako TestConnection=Test połączenia -ToClone=Clone -ConfirmClone=Wybierz dane, które chcesz klon: -NoCloneOptionsSpecified=Brak danych na klon zdefiniowane. +ToClone=Duplikuj +ConfirmClone=Wybierz dane, które chcesz zduplikować +NoCloneOptionsSpecified=Brak zdefiniowanych danych do zduplikowania. Of=z -Go=Go -Run=Run +Go=Idź +Run=Uruchom CopyOf=Kopia Show=Pokazać ShowCardHere=Pokaż kartę @@ -158,20 +159,21 @@ Search=Wyszukaj SearchOf=Szukaj Valid=Aktualny Approve=Zatwierdź -ReOpen=Re-Open +Disapprove=Disapprove +ReOpen=Otwórz ponownie Upload=Wyślij plik -ToLink=Link +ToLink=Łącze Select=Wybierz Choose=Wybrać ChooseLangage=Proszę wybrać język Resize=Zmiana rozmiaru -Recenter=Recenter +Recenter=Wyśrodkuj Author=Autor User=Użytkownik Users=Użytkownicy Group=Grupa Groups=Grupy -NoUserGroupDefined=No user group defined +NoUserGroupDefined=Niezdefiniowano grup użytkowników Password=Hasło PasswordRetype=Powtórz hasło NoteSomeFeaturesAreDisabled=Należy pamiętać, że wiele funkcji / modułów są wyłączone w tej demonstracji. @@ -180,36 +182,36 @@ Person=Osoba Parameter=Parametr Parameters=Parametry Value=Wartość -GlobalValue=Global Value +GlobalValue=Globalna wartość PersonalValue=Osobiste wartości NewValue=Nowa wartość CurrentValue=Aktualna wartość Code=Kod Type=Typ Language=Język -MultiLanguage=Multi-language +MultiLanguage=Wielo-językowość Note=Uwaga CurrentNote=Aktualna uwaga Title=Tytuł Label=Etykieta RefOrLabel=Nr ref. lub etykieta -Info=Zaloguj +Info=Log Family=Rodzina Description=Opis Designation=Opis Model=Model -DefaultModel=Domyślne modelu +DefaultModel=Domyślny model Action=Działanie About=O Number=Liczba NumberByMonth=Ilość na miesiąc -AmountByMonth=Kwota, o miesiąc -Numero=Numero +AmountByMonth=Kwota na miesiąc +Numero=Numer Limit=Limit Limits=Limity DevelopmentTeam=Development Team Logout=Wyloguj -NoLogoutProcessWithAuthMode=No applicative disconnect feature with authentication mode %s +NoLogoutProcessWithAuthMode=żadna aplikacja nierozłączona w skutek uwierzytelniania trybu %s Connection=Połączenie Setup=Konfiguracja Alert=Sygnał @@ -219,60 +221,61 @@ Cards=Kartki Card=Karta Now=Teraz Date=Data +DateAndHour=Date and hour DateStart=Data rozpoczęcia DateEnd=Data zakończenia DateCreation=Data utworzenia DateModification=Zmiana daty -DateModificationShort=Modif. data +DateModificationShort=Modyfik. daty DateLastModification=Ostatnia zmiana daty -DateValidation=Walidacja daty +DateValidation=Zatwierdzenie daty DateClosing=Ostateczny termin -DateDue=Termin +DateDue=W trakcie terminu DateValue=Wartość daty DateValueShort=Wartość daty DateOperation=Data operacji -DateOperationShort=OPE. Data +DateOperationShort=Data operacji DateLimit=Limit daty -DateRequest=Wniosek daty +DateRequest=Żądanie daty DateProcess=Proces daty -DatePlanShort=Data strugane -DateRealShort=Data rzeczywistym. -DateBuild=Sprawozdanie budować daty +DatePlanShort=Planowana data +DateRealShort=Rzeczywista data +DateBuild=Raport stworzenia daty DatePayment=Data płatności DurationYear=rok DurationMonth=miesiąc DurationWeek=tydzień DurationDay=dzień DurationYears=lat -DurationMonths=miesiąc -DurationWeeks=tydzień -DurationDays=dzień +DurationMonths=miesięcy +DurationWeeks=tygodni +DurationDays=dni Year=Rok Month=Miesiąc Week=Tydzień Day=Dzień Hour=Godzina Minute=Minute -Second=Po drugie +Second=Sekund Years=Lata Months=Miesiące Days=Dni -days=dzień +days=dni Hours=Godziny -Minutes=Protokoły +Minutes=Minut Seconds=Sekund -Weeks=Weeks +Weeks=Tygodnie Today=Dzisiaj Yesterday=Wczoraj Tomorrow=Jutro -Morning=Morning -Afternoon=Afternoon -Quadri=Quadri -MonthOfDay=Miesiąc dzień -HourShort=O +Morning=Rano +Afternoon=Popołudniu +Quadri=Kwadrans +MonthOfDay=Dzień miesiąca +HourShort=H MinuteShort=mn -Rate=Tempo -UseLocalTax=Include tax +Rate=Stawka +UseLocalTax=Zawiera podatek Bytes=Bajty KiloBytes=Kilobajtów MegaBytes=MB @@ -283,55 +286,56 @@ Kb=Kb Mb=Mb Gb=Gb Tb=Tb -Cut=Ciąć +Cut=Wytnij Copy=Kopiowanie Paste=Wklej Default=Domyślny DefaultValue=Wartość domyślna -DefaultGlobalValue=Global Value +DefaultGlobalValue=Wartość globalna Price=Cena UnitPrice=Cena jednostkowa UnitPriceHT=Cena jednostkowa (netto) UnitPriceTTC=Cena jednostkowa -PriceU=UP -PriceUHT=UP (netto) -PriceUTTC=UP +PriceU=cen/szt. +PriceUHT=cen/szt (netto) +AskPriceSupplierUHT=P.U. HT Requested +PriceUTTC=cena/szt. Amount=Ilość AmountInvoice=Kwota faktury AmountPayment=Kwota płatności AmountHTShort=Kwota (netto) -AmountTTCShort=Kwota (Inc podatkowych) -AmountHT=Kwoty (po odliczeniu podatku) -AmountTTC=Kwota (Inc podatkowych) +AmountTTCShort=Kwota (zawierająca VAT) +AmountHT=Kwota (netto bez podatku) +AmountTTC=Kwota (zawierająca VAT) AmountVAT=Kwota podatku VAT -AmountLT1=Amount tax 2 -AmountLT2=Amount tax 3 -AmountLT1ES=Kwoty RE +AmountLT1=Wartość podatku 2 +AmountLT2=Wartość podatku 3 +AmountLT1ES=Kwota RE AmountLT2ES=Kwota IRPF AmountTotal=Całkowita kwota AmountAverage=Średnia kwota -PriceQtyHT=Cena za tę ilość (po odliczeniu podatku) -PriceQtyMinHT=Cena ilości min. (po odliczeniu podatku) -PriceQtyTTC=Cena za tę ilość (Inc podatkowych) -PriceQtyMinTTC=Cena ilości min. (Inc podatkowych) -Percentage=Pourcentage +PriceQtyHT=Cena za tę ilość (netto) +PriceQtyMinHT=Cena ilości min. (netto) +PriceQtyTTC=Cena za tę ilość (z VAT) +PriceQtyMinTTC=Cena ilości min. (z VAT) +Percentage=Procentowo Total=Razem -SubTotal=Razem +SubTotal=Po podliczeniu TotalHTShort=Ogółem (netto) -TotalTTCShort=Ogółem (Inc podatkowych) +TotalTTCShort=Ogółem (z VAT) TotalHT=Razem (po odliczeniu podatku) -TotalHTforthispage=Total (net of tax) for this page -TotalTTC=Ogółem (Inc podatkowych) -TotalTTCToYourCredit=Ogółem (Inc podatku) na konto kredytowe -TotalVAT=Razem z VAT -TotalLT1=Total tax 2 -TotalLT2=Total tax 3 +TotalHTforthispage=Razem (po odliczeniu podatku) dla tej strony +TotalTTC=Ogółem (z VAT) +TotalTTCToYourCredit=Ogółem (z VAT) na twoje konto +TotalVAT=Razem VAT +TotalLT1=Podatek całkowity 2 +TotalLT2=Podatek całkowity 3 TotalLT1ES=Razem RE TotalLT2ES=Razem IRPF -IncludedVAT=Zaliczenie podatku VAT -HT=Bez podatku -TTC=Inc VAT -VAT=VAT +IncludedVAT=Zawiera VAT +HT=Bez VAT +TTC=z VAT +VAT=Sprzedaż opodatkowana VAT LT1ES=RE LT2ES=IRPF VATRate=Stawka VAT @@ -345,47 +349,47 @@ FullList=Pełna lista Statistics=Statystyki OtherStatistics=Inne statystyki Status=Stan -Favorite=Favorite +Favorite=Ulubiony ShortInfo=Info. Ref=Nr ref. RefSupplier=Nr ref. Dostawca RefPayment=Nr ref. płatności -CommercialProposalsShort=Commercial propozycje +CommercialProposalsShort=Propozycje komercyjne Comment=Komentarz Comments=Komentarze -ActionsToDo=Działania mające na celu nie -ActionsDone=Działania zrobić -ActionsToDoShort=Aby to zrobić -ActionsRunningshort=Rozpoczęcie +ActionsToDo=Działania do zrobienia +ActionsDone=Działania zrobione +ActionsToDoShort=Do zrobienia +ActionsRunningshort=Rozpoczęto ActionsDoneShort=Zrobione ActionNotApplicable=Nie dotyczy -ActionRunningNotStarted=Nie rozpoczęto -ActionRunningShort=Rozpoczęcie +ActionRunningNotStarted=By rozpocząć +ActionRunningShort=Rozpoczęte ActionDoneShort=Zakończone -ActionUncomplete=Uncomplete +ActionUncomplete=Niekompletne CompanyFoundation=Firma / Fundacja -ContactsForCompany=Kontakty na ten trzeciej -ContactsAddressesForCompany=Contacts/addresses for this third party -AddressesForCompany=Addresses for this third party -ActionsOnCompany=Działania na temat tej osoby trzeciej -ActionsOnMember=Wydarzenia O tego użytkownika -NActions=%s działania +ContactsForCompany=Kontakty dla tego zamówienia +ContactsAddressesForCompany=Kontakt/adres dla tej części/zamówienia/ +AddressesForCompany=Adressy dla części trzeciej +ActionsOnCompany=Działania na temat tego zamówienia +ActionsOnMember=Informacje o wydarzeniach dla tego uzytkownika +NActions=%s wydarzeń NActionsLate=%s późno -RequestAlreadyDone=Request already recorded +RequestAlreadyDone=Żądanie już wysłane Filter=Filtr RemoveFilter=Usuń filtr -ChartGenerated=Wykres generowany -ChartNotGenerated=Wykres nie powstały -GeneratedOn=Budować na %s +ChartGenerated=Wykres wygenerowany +ChartNotGenerated=Wykres niewygenerowany +GeneratedOn=Zbuduj na %s Generate=Wygeneruj Duration=Czas trwania TotalDuration=Łączny czas trwania Summary=Podsumowanie MyBookmarks=Moje zakładki OtherInformationsBoxes=Inne informacje -DolibarrBoard=Dolibarr pokładzie +DolibarrBoard=Załoga Dollibara DolibarrStateBoard=Statystyki -DolibarrWorkBoard=Pracy zadań pokładzie +DolibarrWorkBoard=Zadania załogi Available=Dostępny NotYetAvailable=Nie są jeszcze dostępne NotAvailable=Niedostępne @@ -394,7 +398,7 @@ Categories=Kategorie Category=Kategoria By=Przez From=Od -to=by +to=do and=i or=lub Other=Inny @@ -403,11 +407,11 @@ OtherInformations=Inne informacje Quantity=Ilość Qty=Ilosc ChangedBy=Zmieniona przez -ReCalculate=Recalculate +ReCalculate=Przelicz ResultOk=Sukces ResultKo=Porażka -Reporting=Sprawozdawczość -Reportings=Sprawozdawczość +Reporting=Raportowanie +Reportings=Raportowanie Draft=Szkic Drafts=Robocze Validated=Zatwierdzona @@ -418,26 +422,26 @@ Unknown=Nieznany General=Ogólne Size=Rozmiar Received=Odebrane -Paid=Paid -Topic=SUJET -ByCompanies=Według firm -ByUsers=Przez użytkowników +Paid=Zapłacone +Topic=Temat +ByCompanies=Według zamówień +ByUsers=Według użytkowników Links=Linki -Link=Łącze +Link=Link Receipts=Wpływy -Rejects=Odrzuca +Rejects=Odrzucone Preview=Podgląd NextStep=Następny krok PreviousStep=Poprzedni krok -Datas=Danych +Datas=Dane None=Żaden NoneF=Żaden Late=Późno -Photo=Obrazek -Photos=Foto -AddPhoto=Dodaj zdjęcie +Photo=Obraz +Photos=Obrazy +AddPhoto=Dodaj obraz Login=Login -CurrentLogin=Aktualna logowania +CurrentLogin=Aktualny login January=Styczeń February=Luty March=Marzec @@ -450,23 +454,23 @@ September=Wrzesień October=Październik November=Listopad December=Grudzień -JanuaryMin=Jan -FebruaryMin=Luty +JanuaryMin=Sty +FebruaryMin=Lut MarchMin=Mar -AprilMin=Kwietnia +AprilMin=Kwi MayMin=Maj -JuneMin=Czerwca -JulyMin=Lipca -AugustMin=Sierpnia -SeptemberMin=Września -OctoberMin=Października -NovemberMin=Listopada -DecemberMin=Grudzień +JuneMin=Cze +JulyMin=Lip +AugustMin=Sier +SeptemberMin=Wrz +OctoberMin=Paź +NovemberMin=Lis +DecemberMin=Gru Month01=styczeń Month02=luty Month03=marzec Month04=kwiecień -Month05=może +Month05=maj Month06=cze Month07=lipiec Month08=sierpień @@ -474,53 +478,54 @@ Month09=wrzesień Month10=październik Month11=listopad Month12=grudzień -MonthShort01=styczeń -MonthShort02=luty +MonthShort01=sty +MonthShort02=lut MonthShort03=mar -MonthShort04=kwiecień -MonthShort05=może +MonthShort04=kwi +MonthShort05=maj MonthShort06=cze -MonthShort07=lipiec -MonthShort08=sierpień -MonthShort09=sep -MonthShort10=październik -MonthShort11=listopad -MonthShort12=grudzień +MonthShort07=lip +MonthShort08=sier +MonthShort09=wrz +MonthShort10=paź +MonthShort11=lis +MonthShort12=gru AttachedFiles=Dołączone pliki i dokumenty -FileTransferComplete=Plik został przesłany successfuly +FileTransferComplete=Plik został przesłany poprawnie DateFormatYYYYMM=RRRR-MM DateFormatYYYYMMDD=RRRR-MM-DD DateFormatYYYYMMDDHHMM=RRRR-MM-DD GG: SS ReportName=Nazwa raportu -ReportPeriod=Okresu sprawozdawczego +ReportPeriod=Raport z okresu ReportDescription=Opis Report=Sprawozdanie -Keyword=Mot cl +Keyword=brak odpowiednika/ cant be translated. Legend=Legenda -FillTownFromZip=Wypełnij miasta zip -Fill=Fill -Reset=Reset +FillTownFromZip=Wypełnij miasta po kodzie +Fill=Wypełnij +Reset=Wyczyść ShowLog=Pokaż dziennik File=Plik Files=Pliki NotAllowed=Niedozwolone -ReadPermissionNotAllowed=Czytaj zgody nie wolno +ReadPermissionNotAllowed=brak uprawnień odczytu AmountInCurrency=Kwota w walucie %s Example=Przykład Examples=Przykłady -NoExample=Nr przykład +NoExample=brak przykładu FindBug=Zgłoś błąd -NbOfThirdParties=Liczba osób trzecich +NbOfThirdParties=Liczba zamówień NbOfCustomers=Liczba klientów NbOfLines=Liczba linii NbOfObjects=Liczba obiektów NbOfReferers=Liczba stron odsyłających -Referers=Refering objects +Referers=Liczba objektów TotalQuantity=Całkowita ilość DateFromTo=Z %s do %s DateFrom=Z %s -DateUntil=Do %s +DateUntil=Dopuki %s Check=Sprawdzić +Uncheck=Uncheck Internal=Wewnętrzne External=Zewnętrzne Internals=Wewnętrzne @@ -528,19 +533,19 @@ Externals=Zewnętrzne Warning=Ostrzeżenie Warnings=Ostrzeżenia BuildPDF=Zbuduj PDF -RebuildPDF=Rebuild PDF +RebuildPDF=Popraw PDF BuildDoc=Zbuduj Doc -RebuildDoc=Rebuild Doc +RebuildDoc=Popraw Doc Entity=Podmiot Entities=Podmioty EventLogs=Logi -CustomerPreview=Klient podglądu -SupplierPreview=Dostawca podglądu -AccountancyPreview=Księgowość podglądu +CustomerPreview=Podgląd klienta +SupplierPreview=Podgląd dostawcy +AccountancyPreview=Podgląd księgowości ShowCustomerPreview=Pokaż podgląd klienta -ShowSupplierPreview=Pokaż dostawcy podglądu -ShowAccountancyPreview=Pokaż podgląd rachunkowych -ShowProspectPreview=Pokaż perspektywa podglądu +ShowSupplierPreview=Pokaż podląd dostawcy +ShowAccountancyPreview=Pokaż podgląd rachunkowy +ShowProspectPreview=Pokaż podgląd prospektu RefCustomer=Nr ref. klient Currency=Waluta InfoAdmin=Informacje dla administratorów @@ -556,57 +561,57 @@ Response=Odpowiedź Priority=Priorytet SendByMail=Wyślij przez email MailSentBy=E-mail został wysłany przez -TextUsedInTheMessageBody=Email ciała -SendAcknowledgementByMail=Wyślij Ack. przez e-mail +TextUsedInTheMessageBody=Zawartość emaila +SendAcknowledgementByMail=Wyślij potwierdzenie przez e-mail NoEMail=Brak e-mail -NoMobilePhone=No mobile phone +NoMobilePhone=Brak telefonu komórkowego Owner=Właściciel -DetectedVersion=Wykryto wersji -FollowingConstantsWillBeSubstituted=Po stałych będzie zastąpić o odpowiedniej wartości. +DetectedVersion=Wykryto wersje +FollowingConstantsWillBeSubstituted=Kolejna zawartość będzie zastąpiona wartością z korespondencji. Refresh=Odśwież BackToList=Powrót do listy GoBack=Wróć -CanBeModifiedIfOk=Mogą być zmienione, jeśli ważnych -CanBeModifiedIfKo=Mogą być zmienione, jeśli nie obowiązuje +CanBeModifiedIfOk=Mogą być zmienione jeśli ważne +CanBeModifiedIfKo=Mogą być zmienione, jeśli nie ważne RecordModifiedSuccessfully=Zapis zmodyfikowany pomyślnie -RecordsModified=%s records modified -AutomaticCode=Automatyczne kod -NotManaged=Nie udało +RecordsModified=%s zmodyfikowanych rekordów +AutomaticCode=Automatyczny kod +NotManaged=Nie zarządzono FeatureDisabled=Funkcja wyłączona MoveBox=Przenieś pole %s -Offered=Bezpłatny +Offered=Oferowany NotEnoughPermissions=Nie masz uprawnień do tego działania -SessionName=Sesja nazwa +SessionName=Nazwa sesji Method=Metoda Receive=Odbiór -PartialWoman=Częściowe -PartialMan=Częściowe +PartialWoman=Część +PartialMan=Część TotalWoman=Razem TotalMan=Razem NeverReceived=Nigdy nie otrzymała -Canceled=Odwołany -YouCanChangeValuesForThisListFromDictionarySetup=You can change values for this list from menu setup - dictionary +Canceled=Anulowany +YouCanChangeValuesForThisListFromDictionarySetup=Możesz zmieniać wartości dla tej listy z menu setup - słownik Color=Kolor -Documents=Związany plików -DocumentsNb=Dołączonych plików (%s) +Documents=Związanych plików +DocumentsNb=Związanych plików (%s) Documents2=Dokumenty BuildDocuments=Wygenerowano dokumentów -UploadDisabled=Prześlij niepełnosprawnych +UploadDisabled=Prześlij nieaktywne MenuECM=Dokumenty MenuAWStats=AWStats MenuMembers=Członkowie -MenuAgendaGoogle=Google porządku -ThisLimitIsDefinedInSetup=Dolibarr limit (Menu Start-setup-bezpieczeństwa): %s KB, PHP, limit: %s KB -NoFileFound=Żadnych dokumentów zapisanych w tym katalogu +MenuAgendaGoogle=Google agenda +ThisLimitIsDefinedInSetup=Limit Dollibara (Menu główne-setup-bezpieczeństwo): %s KB, PHP, limit: %s KB +NoFileFound=Brak dokumentów zapisanych w tym katalogu CurrentUserLanguage=Język bieżący CurrentTheme=Aktualny temat -CurrentMenuManager=Current menu manager -DisabledModules=Niepełnosprawnych modules +CurrentMenuManager=Aktualny Menu menager +DisabledModules=Nieaktywnych modułów For=Dla ForCustomer=Dla klienta Signature=Podpis -HidePassword=Pokaż polecenie hasłem ukryte -UnHidePassword=Pokaż prawdziwe polecenia z jasnymi hasło +HidePassword=Pokaż polecenie z ukrytym hasłem +UnHidePassword=Pokaż prawdziwe polecenie z otwartym hasłem Root=Root Informations=Informacje Page=Strona @@ -614,20 +619,20 @@ Notes=Uwagi AddNewLine=Dodaj nowy wiersz AddFile=Dodaj plik ListOfFiles=Lista dostępnych plików -FreeZone=Free entry -FreeLineOfType=Free entry of type -CloneMainAttributes=Clone obiektu z jej głównych atrybutów -PDFMerge=PDF Merge -Merge=Scalanie +FreeZone=wolność wyboru +FreeLineOfType=Wolność wyboru typu +CloneMainAttributes=Skopiuj obiekt z jego głównymi atrybutami +PDFMerge=Scalanie/ dzielenie PDF +Merge=Scalanie/ dzielenie PrintContentArea=Pokaż stronę do wydruku głównej treści -MenuManager=Menu manager -NoMenu=Nie podmenu -WarningYouAreInMaintenanceMode=Uwaga, jesteś w trybie konserwacji, więc tylko logowanie %s może używać aplikacji w danym momencie. +MenuManager=Menu menager +NoMenu=Brak podmenu +WarningYouAreInMaintenanceMode=Uwaga, jesteś w trybie konserwacji, więc tylko zalogowani %s mogą używać aplikacji w danym momencie. CoreErrorTitle=Błąd systemu -CoreErrorMessage=Przepraszamy, wystąpił błąd. Sprawdź dzienniki lub skontaktuj się z administratorem systemu. -CreditCard=kart kredytowych -FieldsWithAreMandatory=%s pola są obowiązkowe -FieldsWithIsForPublic=Pola %s są wyświetlane na publiczną listę członków. Jeśli nie chcesz, zaznacz opcję "publicznych" polu. +CoreErrorMessage=Przepraszamy, wystąpił błąd. Sprawdź dzienniki błedu lub skontaktuj się z administratorem systemu. +CreditCard=Karta kredytowa +FieldsWithAreMandatory=Pola %s są obowiązkowe +FieldsWithIsForPublic=Pola %s są wyświetlane na publiczną listę członków. Jeśli nie chcesz, odznacz opcję "publiczny". AccordingToGeoIPDatabase=(Zgodnie z konwersji GeoIP) Line=Linia NotSupported=Nie są obsługiwane @@ -645,49 +650,50 @@ Before=Przed After=Po IPAddress=Adres IP Frequency=Częstotliwość -IM=Komunikatory +IM=Ciągła wiadomość NewAttribute=Nowy atrybut AttributeCode=Kod atrybut OptionalFieldsSetup=Dodatkowa konfiguracja atrybutów -URLPhoto=Url zdjęciem / logo -SetLinkToThirdParty=Link do innych stron trzecich -CreateDraft=Utwórz projekt -SetToDraft=Back to draft -ClickToEdit=Kliknij, aby edytować +URLPhoto=Url ze zdjęciem / logo +SetLinkToThirdParty=Link do zamówień +CreateDraft=Utwórz Szic +SetToDraft=Wróć do szkicu +ClickToEdit=Kliknij by edytować ObjectDeleted=%s obiekt usunięty ByCountry=Według kraju -ByTown=Przez miasto +ByTown=Według miasta ByDate=Według daty -ByMonthYear=Przez miesiąc / rok -ByYear=Przez rok -ByMonth=przez miesiąc -ByDay=Na dzień -BySalesRepresentative=Przez przedstawiciela handlowego -LinkedToSpecificUsers=Linked to a particular user contact -DeleteAFile=Delete a file -ConfirmDeleteAFile=Are you sure you want to delete file -NoResults=No results -ModulesSystemTools=Modules tools +ByMonthYear=Według miesiąc / rok +ByYear=Według roku +ByMonth=Według miesiąca +ByDay=Według dnia +BySalesRepresentative=Według przedstawiciela handlowego +LinkedToSpecificUsers=Podpięty do kontaktu współużytkownika +DeleteAFile=Usuń plik +ConfirmDeleteAFile=Czy na pewno chcesz usunąć ten plik? +NoResults=Brak wyników +ModulesSystemTools=Narzędzia modułów Test=Test Element=Element -NoPhotoYet=No pictures available yet -HomeDashboard=Home summary -Deductible=Deductible -from=from -toward=toward -Access=Access -HelpCopyToClipboard=Use Ctrl+C to copy to clipboard -SaveUploadedFileWithMask=Save file on server with name "%s" (otherwise "%s") -OriginFileName=Original filename -SetDemandReason=Set source -SetBankAccount=Define Bank Account -AccountCurrency=Account Currency -ViewPrivateNote=View notes -XMoreLines=%s line(s) hidden -PublicUrl=Public URL -AddBox=Add box -SelectElementAndClickRefresh=Select an element and click Refresh -PrintFile=Print File %s +NoPhotoYet=Brak obrazów +HomeDashboard=Podsumowanie całościowe +Deductible=Odliczenie +from=od +toward=kierunek +Access=Dostęp +HelpCopyToClipboard=Użyj Ctrl+C by skopiować +SaveUploadedFileWithMask=Zapisz plik na serwerze z nazwą "%s" (w innym wypadku "%s") +OriginFileName=Oryginalna nazwa pliku +SetDemandReason=Wybierz źródło +SetBankAccount=Przypisz konto bankowe +AccountCurrency=Waluta konta +ViewPrivateNote=Wyświetl notatki +XMoreLines=%s lini(e) ukryte +PublicUrl=Publiczny URL +AddBox=Dodaj skrzynke +SelectElementAndClickRefresh=Zaznacz element i kliknij Odśwież +PrintFile=Wydrukuj plik %s +ShowTransaction=Show transaction # Week day Monday=Poniedziałek Tuesday=Wtorek @@ -696,13 +702,13 @@ Thursday=Czwartek Friday=Piątek Saturday=Sobota Sunday=Niedziela -MondayMin=Mo -TuesdayMin=Tu -WednesdayMin=My -ThursdayMin=Th -FridayMin=O. -SaturdayMin=Sa -SundayMin=Ni +MondayMin=Pon +TuesdayMin=Wt +WednesdayMin=Śr +ThursdayMin=Czw +FridayMin=Pią +SaturdayMin=Sob +SundayMin=Nie Day1=Poniedziałek Day2=Wtorek Day3=Środa @@ -710,10 +716,10 @@ Day4=Czwartek Day5=Piątek Day6=Sobota Day0=Niedziela -ShortMonday=M -ShortTuesday=T -ShortWednesday=W -ShortThursday=T -ShortFriday=F -ShortSaturday=S -ShortSunday=S +ShortMonday=Po +ShortTuesday=W +ShortWednesday=Śr +ShortThursday=Cz +ShortFriday=Pi +ShortSaturday=So +ShortSunday=Ni diff --git a/htdocs/langs/pl_PL/orders.lang b/htdocs/langs/pl_PL/orders.lang index 235096ce352..86ff6886783 100644 --- a/htdocs/langs/pl_PL/orders.lang +++ b/htdocs/langs/pl_PL/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Odwołany StatusOrderDraft=Projekt (musi zostać zatwierdzone) StatusOrderValidated=Zatwierdzona StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Przetworzone StatusOrderToBill=Do rachunku StatusOrderToBill2=Do rachunku @@ -58,6 +59,7 @@ MenuOrdersToBill=Zamówienia na rachunku MenuOrdersToBill2=Billable orders SearchOrder=Szukaj celu SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Statek produktu Discount=Rabat CreateOrder=Tworzenie Zamówienie diff --git a/htdocs/langs/pl_PL/other.lang b/htdocs/langs/pl_PL/other.lang index fe2b5107356..fb8f7bab39f 100644 --- a/htdocs/langs/pl_PL/other.lang +++ b/htdocs/langs/pl_PL/other.lang @@ -54,12 +54,13 @@ MaxSize=Maksymalny rozmiar AttachANewFile=Załącz nowy plik / dokument LinkedObject=Związany obiektu Miscellaneous=Różne -NbOfActiveNotifications=Liczba zgłoszeń +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Dette er en test post. \\ NDe to linjer er atskilt med en vognretur. PredefinedMailTestHtml=Dette er en test mail (ordet testen må være i fet skrift).
De to linjene er skilt med en vognretur. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/pl_PL/paybox.lang b/htdocs/langs/pl_PL/paybox.lang index 9d629ea7e16..a23a037fc83 100644 --- a/htdocs/langs/pl_PL/paybox.lang +++ b/htdocs/langs/pl_PL/paybox.lang @@ -1,40 +1,40 @@ # Dolibarr language file - Source file is en_US - paybox PayBoxSetup=PayBox konfiguracji modułu -PayBoxDesc=Moduł ten oferują strony, aby umożliwić płatności na Paybox przez klientów. Może to być wykorzystane do swobodnego zapłatę lub płatność w szczególności Dolibarr obiektu (faktury, zamówienia, ...) -FollowingUrlAreAvailableToMakePayments=Po adresy są dostępne na stronie ofertę do klienta, aby dokonać płatności na Dolibarr obiektów +PayBoxDesc=Moduł ten oferują strony, umożliwiające płatności na Paybox przez klientów. Może to być wykorzystane do swobodnej zapłaty lub płatności w szczególności obiektu Dolibara np za faktury, zamówienia, ... +FollowingUrlAreAvailableToMakePayments=Nastepujące adresy są dostępne dla klienta, by mógł dokonać płatności za faktury zamówienia PaymentForm=Forma płatności -WelcomeOnPaymentPage=Witamy na naszej usługi płatności online +WelcomeOnPaymentPage=Witamy w naszej usłudze płatności online ThisScreenAllowsYouToPay=Ten ekran pozwala na dokonanie płatności on-line do %s. -ThisIsInformationOnPayment=To jest informacja o płatności do +ThisIsInformationOnPayment=To jest informacja o płatności do zrobienia ToComplete=Aby zakończyć -YourEMail=E-mail z potwierdzeniem zapłaty +YourEMail=E-mail by otrzymać potwierdzenie zapłaty Creditor=Wierzyciel -PaymentCode=Płatność kod -PayBoxDoPayment=Przejdź na płatności -YouWillBeRedirectedOnPayBox=Zostaniesz przekierowany na zabezpieczone Paybox stronę wejścia ci karty kredytowej informacje +PaymentCode=Kod płatności +PayBoxDoPayment=Przejdź do płatności +YouWillBeRedirectedOnPayBox=Zostaniesz przekierowany na zabezpieczoną stronę Paybox bys mógł podać informację z karty kredytowej. PleaseBePatient=Proszę, bądź cierpliwy -Continue=Następny +Continue=Dalej ToOfferALinkForOnlinePayment=URL %s płatności -ToOfferALinkForOnlinePaymentOnOrder=URL zaoferowania %s płatności online interfejsu użytkownika na zamówienie -ToOfferALinkForOnlinePaymentOnInvoice=URL zaoferowania %s płatności online interfejsu użytkownika na fakturze -ToOfferALinkForOnlinePaymentOnContractLine=URL zaoferować płatności online %s interfejs użytkownika do umowy linii -ToOfferALinkForOnlinePaymentOnFreeAmount=URL zaoferować płatności online %s interfejs użytkownika w celu utworzenia bezpłatnego kwotę +ToOfferALinkForOnlinePaymentOnOrder=URL zaoferowania %s płatności online interfejsu użytkownika za zamówienie +ToOfferALinkForOnlinePaymentOnInvoice=URL zaoferowania %s płatności online interfejsu użytkownika za fakture +ToOfferALinkForOnlinePaymentOnContractLine=URL zaoferowania płatności online %s interfejsu użytkownika do umowy +ToOfferALinkForOnlinePaymentOnFreeAmount=URL zaoferowania płatności online %s interfejsu użytkownika w celu utworzenia dowolnej kwoty. ToOfferALinkForOnlinePaymentOnMemberSubscription=Adres URL do zaoferowania płatności online %s interfejs użytkownika jest członkiem subskrypcji -YouCanAddTagOnUrl=Możesz również dodać parametr & url = wartość tagu do żadnej z tych adresów URL (wymagany tylko za darmo płatności), aby dodać swój komentarz płatności tag. -SetupPayBoxToHavePaymentCreatedAutomatically=Skonfiguruj PayBox url z %s do zapłaty tworzone automatycznie, gdy zatwierdzone przez paybox. -YourPaymentHasBeenRecorded=Ta strona potwierdza, że ​​płatność została nagrana. Dziękuję. -YourPaymentHasNotBeenRecorded=Jesteś płatność nie została nagrana i transakcja została anulowana. Dziękuję. +YouCanAddTagOnUrl=Możesz również dodać parametr & url = wartość tagu do żadnej z tych adresów URL (wymagany tylko dla bezpłatnych), aby dodać swój komentarz płatności tag. +SetupPayBoxToHavePaymentCreatedAutomatically=Skonfiguruj PayBox url z %s do opłay stworzonych automatycznie, gdy są zatwierdzone przez paybox. +YourPaymentHasBeenRecorded=Ta strona potwierdza, że ​​płatność została wprowadzona. Dziękuję. +YourPaymentHasNotBeenRecorded=Twoja płatność nie została wprowadzona i transakcja została anulowana. Dziękuję. AccountParameter=Parametry konta UsageParameter=Parametry serwera -InformationToFindParameters=Pomoc znaleźć %s informacje o koncie +InformationToFindParameters=Pomóż znaleźć %s informacje o koncie PAYBOX_CGI_URL_V2=Url Paybox moduł CGI płatności VendorName=Nazwa dostawcy -CSSUrlForPaymentForm=CSS url arkusz dla formy płatności -MessageOK=Wiadomość na zatwierdzonych strony powrót płatności -MessageKO=Wiadomość na odwołana strony powrotnej płatności -NewPayboxPaymentReceived=New Paybox payment received -NewPayboxPaymentFailed=New Paybox payment tried but failed -PAYBOX_PAYONLINE_SENDEMAIL=EMail to warn after a payment (success or failed) -PAYBOX_PBX_SITE=Value for PBX SITE -PAYBOX_PBX_RANG=Value for PBX Rang -PAYBOX_PBX_IDENTIFIANT=Value for PBX ID +CSSUrlForPaymentForm=Styl CSS arkuszy dla form płatności +MessageOK=Wiadomość dla zatwierdzonych stron. Powrót do płatności +MessageKO=Wiadomość dla odwołanych stron. Powrót do płatności +NewPayboxPaymentReceived=Nowa płatnośc Paybox otrzymana +NewPayboxPaymentFailed=Nowa płatnośc Paybox - próba nie udana. +PAYBOX_PAYONLINE_SENDEMAIL=Mail ostrzegający po płatności (sukces lub porażka) +PAYBOX_PBX_SITE=Wartośc dla strony PBX +PAYBOX_PBX_RANG=Wartość dla zasięgu PBX +PAYBOX_PBX_IDENTIFIANT=Wartośc dla PBX ID diff --git a/htdocs/langs/pl_PL/productbatch.lang b/htdocs/langs/pl_PL/productbatch.lang index 864782023a0..4455da495cd 100644 --- a/htdocs/langs/pl_PL/productbatch.lang +++ b/htdocs/langs/pl_PL/productbatch.lang @@ -1,21 +1,21 @@ # ProductBATCH language file - en_US - ProductBATCH -ManageLotSerial=Use batch/serial number -ProductStatusOnBatch=Yes (Batch/serial required) -ProductStatusNotOnBatch=No (Batch/serial not used) -ProductStatusOnBatchShort=Yes -ProductStatusNotOnBatchShort=No -Batch=Batch/Serial -atleast1batchfield=Eat-by date or Sell-by date or Batch number -batch_number=Batch/Serial number -l_eatby=Eat-by date -l_sellby=Sell-by date -DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) -printBatch=Batch: %s -printEatby=Eat-by: %s -printSellby=Sell-by: %s -printQty=Qty: %d -AddDispatchBatchLine=Add a line for Shelf Life dispatching -BatchDefaultNumber=Undefined -WhenProductBatchModuleOnOptionAreForced=When module Batch/Serial is on, increase/decrease stock mode is forced to last choice and can't be edited. Other options can be defined as you want. -ProductDoesNotUseBatchSerial=This product does not use batch/serial number +ManageLotSerial=Użyj plik/wsad/numer seryjny +ProductStatusOnBatch=Tak ('plik/wsad//nr seryjny' wymagany) +ProductStatusNotOnBatch=Nie ('plik/wsad//nr seryjny' nie użyty) +ProductStatusOnBatchShort=Tak +ProductStatusNotOnBatchShort=Nie +Batch=plik/wsad//numer seryjny +atleast1batchfield=Data wykorzystania lub data sprzedaży lub numer pliku/wsadu +batch_number=Plik/wsad/numer seryjny +l_eatby=Wykorzystaj - po dacie +l_sellby=Sprzedaj - po dacie +DetailBatchNumber=Detale pliku/wsadu/ nr seryjnego +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) +printBatch=Plik/Wsad: %s +printEatby=Wykorzystaj po: %s +printSellby=Sprzedaj po: %s +printQty=Ilość: %d +AddDispatchBatchLine=Dodaj linię dla przedłużenia wysyłki +BatchDefaultNumber=Niezdefiniowano +WhenProductBatchModuleOnOptionAreForced=Gdy moduł Batch / Serial jest , zwiększony/ zmniejszony Tryb czasu jest zmuszony do ostatniego wyboru i nie może być edytowany . Inne opcje można określić jak chcesz . +ProductDoesNotUseBatchSerial=Ten produkt nie używa pliku/wsadu/numeru seryjnego diff --git a/htdocs/langs/pl_PL/products.lang b/htdocs/langs/pl_PL/products.lang index 3db6a921c2d..aadbe802a8f 100644 --- a/htdocs/langs/pl_PL/products.lang +++ b/htdocs/langs/pl_PL/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/pl_PL/projects.lang b/htdocs/langs/pl_PL/projects.lang index 08e1f21fcd9..2c0a3ee7470 100644 --- a/htdocs/langs/pl_PL/projects.lang +++ b/htdocs/langs/pl_PL/projects.lang @@ -8,8 +8,10 @@ SharedProject=Współużytkowane projektu PrivateProject=Kontakt z projektu MyProjectsDesc=Ten widok jest ograniczony do projektów jesteś kontaktu (cokolwiek to typ). ProjectsPublicDesc=Ten widok przedstawia wszystkie projekty, które możesz przeczytać. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Ten widok przedstawia wszystkie projekty (uprawnień użytkownika przyznać uprawnienia do wyświetlania wszystko). MyTasksDesc=Ten widok jest ograniczony do projektów i zadań, które są do kontaktu (cokolwiek to typ). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Ten widok przedstawia wszystkich projektów i zadań, które możesz przeczytać. TasksDesc=Ten widok przedstawia wszystkich projektów i zadań (uprawnień użytkownika przyznać uprawnienia do wyświetlania wszystko). ProjectsArea=Projekty obszaru @@ -29,6 +31,8 @@ NoProject=Projekt zdefiniowane NbOpenTasks=Nb otwartych zadań NbOfProjects=Nb projektów TimeSpent=Czas spędzony +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Czas spędzony RefTask=Nr ref. zadanie LabelTask=Wytwórnia zadanie @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Lista dostawców zamówień związanych z pr ListSupplierInvoicesAssociatedProject=Lista dostawców faktur związanych z projektem ListContractAssociatedProject=Wykaz umów związanych z projektem ListFichinterAssociatedProject=Wykaz interwencji związanych z projektem -ListTripAssociatedProject=Lista wycieczek i wydatków związanych z projektem +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Wykaz działań związanych z projektem ActivityOnProjectThisWeek=Aktywność na projekt w tym tygodniu ActivityOnProjectThisMonth=Aktywność w sprawie projektu w tym miesiącu @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/pl_PL/propal.lang b/htdocs/langs/pl_PL/propal.lang index ad137b77146..ac6d41946be 100644 --- a/htdocs/langs/pl_PL/propal.lang +++ b/htdocs/langs/pl_PL/propal.lang @@ -16,7 +16,7 @@ Prospect=Prospect ProspectList=Prospect listy DeleteProp=Usuń handlowych wniosku ValidateProp=Validate handlowych wniosku -AddProp=Dodaj projekt +AddProp=Utwórz wniosek ConfirmDeleteProp=Czy na pewno chcesz usunąć tę propozycję handlową? ConfirmValidateProp=Czy na pewno chcesz, aby potwierdzić tę propozycję handlową? LastPropals=Ostatnia %s propozycje @@ -55,8 +55,6 @@ NoOpenedPropals=Nie otworzył propozycji NoOtherOpenedPropals=Żadne inne otwarte propozycji RefProposal=Commercial wniosku ref SendPropalByMail=Wyślij handlowych wniosku pocztą -FileNotUploaded=Plik nie został wysłany -FileUploaded=Plik został pomyślnie przesłany AssociatedDocuments=Dokumenty związane z projektem: ErrorCantOpenDir=Nie można otworzyć katalogu DatePropal=Data wniosku @@ -70,8 +68,8 @@ ErrorPropalNotFound=Propal %s nie znaleziono Estimate=Prognoza: EstimateShort=Prognoza OtherPropals=Inne propozycje -# AddToDraftProposals=Add to draft proposal -# NoDraftProposals=No draft proposals +AddToDraftProposals=Dodaj do szkicu wniosku +NoDraftProposals=Brak szkiców wniosku CopyPropalFrom=Tworzenie komercyjnych wniosek kopiowanie istniejących wniosku CreateEmptyPropal=Utwórz pusty propozycji Vierge lub z wykazu produktów / usług DefaultProposalDurationValidity=Domyślny czas ważności wniosku handlowych (w dniach) @@ -97,6 +95,6 @@ TypeContact_propal_external_CUSTOMER=kontakt klienta w ślad za wniosek # Document models DocModelAzurDescription=Kompletny wniosek modelu (logo. ..) DocModelJauneDescription=Jaune propozycję modelu -# DefaultModelPropalCreate=Default model creation -# DefaultModelPropalToBill=Default template when closing a business proposal (to be invoiced) -# DefaultModelPropalClosed=Default template when closing a business proposal (unbilled) +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 ) diff --git a/htdocs/langs/pl_PL/resource.lang b/htdocs/langs/pl_PL/resource.lang index 32bdd92f884..ce83505c83c 100644 --- a/htdocs/langs/pl_PL/resource.lang +++ b/htdocs/langs/pl_PL/resource.lang @@ -1,34 +1,34 @@ -MenuResourceIndex=Resources -MenuResourceAdd=New resource -MenuResourcePlanning=Resource planning -DeleteResource=Delete resource -ConfirmDeleteResourceElement=Confirm delete the resource for this element -NoResourceInDatabase=No resource in database. -NoResourceLinked=No resource linked +MenuResourceIndex=Zasoby +MenuResourceAdd=Nowe zasoby +MenuResourcePlanning=Planowane Zasoby +DeleteResource=Usuń zasoby +ConfirmDeleteResourceElement=Potwierdz usunięcie zasobów dla tego elementu +NoResourceInDatabase=Brak zasobów w bazie danych +NoResourceLinked=Brak podliknowanych zasobów -ResourcePageIndex=Resources list -ResourceSingular=Resource -ResourceCard=Resource card -AddResource=Create a resource -ResourceFormLabel_ref=Resource name -ResourceType=Resource type -ResourceFormLabel_description=Resource description +ResourcePageIndex=Lista zasobów +ResourceSingular=Zasoby +ResourceCard=Karta zasobów +AddResource=Utwórz zasoby +ResourceFormLabel_ref=Nazwa zasobów +ResourceType=Typ zasobów +ResourceFormLabel_description=Opis zasobów -ResourcesLinkedToElement=Resources linked to element +ResourcesLinkedToElement=Zasaby połączone z elementem -ShowResourcePlanning=Show resource planning -GotoDate=Go to date +ShowResourcePlanning=Pokaż zasoby planowane +GotoDate=Idz do daty -ResourceElementPage=Element resources -ResourceCreatedWithSuccess=Resource successfully created -RessourceLineSuccessfullyDeleted=Resource line successfully deleted -RessourceLineSuccessfullyUpdated=Resource line successfully updated -ResourceLinkedWithSuccess=Resource linked with success +ResourceElementPage=Element zasobów +ResourceCreatedWithSuccess=Zasoby poprawnie utworzone +RessourceLineSuccessfullyDeleted=Linia zasobów poprawnie usunięta +RessourceLineSuccessfullyUpdated=Linia zasobów poprawnie uaktualniona +ResourceLinkedWithSuccess=Zasoby podlinkowane poprawnie -TitleResourceCard=Resource card -ConfirmDeleteResource=Confirm to delete this resource -RessourceSuccessfullyDeleted=Resource successfully deleted -DictionaryResourceType=Type of resources +TitleResourceCard=Karta zasobów +ConfirmDeleteResource=Potwierdz by usunąc te zasoby +RessourceSuccessfullyDeleted=Zasoby usunięte poprawnie +DictionaryResourceType=Typ zasobów -SelectResource=Select resource +SelectResource=Wybierz zasoby diff --git a/htdocs/langs/pl_PL/salaries.lang b/htdocs/langs/pl_PL/salaries.lang index edca71a1829..43b8413af9a 100644 --- a/htdocs/langs/pl_PL/salaries.lang +++ b/htdocs/langs/pl_PL/salaries.lang @@ -1,8 +1,13 @@ # Dolibarr language file - Source file is en_US - users -Salary=Salary -Salaries=Salaries -Employee=Employee -NewSalaryPayment=New salary payment -SalaryPayment=Salary payment -SalariesPayments=Salaries payments -ShowSalaryPayment=Show salary payment +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Kod rachunkowości dla wypłat +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Kod rachunkowości dla obciązeń finansowych +Salary=Wypłata +Salaries=Wypłaty +Employee=Zatrudnienie +NewSalaryPayment=Nowa wypłata +SalaryPayment=Wypłata wynagrodzenia +SalariesPayments=Wypłaty wynagordzeń +ShowSalaryPayment=Pokaż wypłaty wynagrodzeń +THM=Średnia cena za godzine +TJM=Średnia cena za dzień +CurrentSalary=Current salary diff --git a/htdocs/langs/pl_PL/sendings.lang b/htdocs/langs/pl_PL/sendings.lang index a93c41f5c23..4626b302570 100644 --- a/htdocs/langs/pl_PL/sendings.lang +++ b/htdocs/langs/pl_PL/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Ilosc sortowane QtyShipped=Ilosc wysłane QtyToShip=Ilosc do statku QtyReceived=Ilość otrzymanych -KeepToShip=Lek na statku +KeepToShip=Remain to ship OtherSendingsForSameOrder=Inne sendings do tego celu DateSending=Data wysłania porządku DateSendingShort=Data wysłania porządku diff --git a/htdocs/langs/pl_PL/stocks.lang b/htdocs/langs/pl_PL/stocks.lang index e1d1314519c..9ce3327dd7d 100644 --- a/htdocs/langs/pl_PL/stocks.lang +++ b/htdocs/langs/pl_PL/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Wartość PMPValueShort=WAP EnhancedValueOfWarehouses=Magazyny wartości UserWarehouseAutoCreate=Tworzenie stanie automatycznie podczas tworzenia użytkownika +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Ilość wysyłanych QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/pl_PL/suppliers.lang b/htdocs/langs/pl_PL/suppliers.lang index 0ae0e045149..bcf12754ec4 100644 --- a/htdocs/langs/pl_PL/suppliers.lang +++ b/htdocs/langs/pl_PL/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Dostawcy -Supplier=Dostawca AddSupplier=Create a supplier SupplierRemoved=Dostawca usunięty SuppliersInvoice=Faktury dostawców @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Faktury i płatności dostawcy ExportDataset_fournisseur_3=Zamówienia dostawcy i pozycje na zamówieniu ApproveThisOrder=Zatwierdź to zamówienie ConfirmApproveThisOrder=Czy na pewno chcesz zatwierdzić zamówienie %s ? -DenyingThisOrder=Odrzuć to zamówienie +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Czy na pewno chcesz odrzucić zamówienie %s ? ConfirmCancelThisOrder=Czy na pewno chcesz anulować zamówienie %s ? AddCustomerOrder=Stwórz zamówienie Klienta diff --git a/htdocs/langs/pl_PL/trips.lang b/htdocs/langs/pl_PL/trips.lang index 526bdf77d25..126fe2dda63 100644 --- a/htdocs/langs/pl_PL/trips.lang +++ b/htdocs/langs/pl_PL/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Wycieczka -Trips=Wycieczki -TripsAndExpenses=Wycieczki i koszty -TripsAndExpensesStatistics=Koszty podróży i statystyki -TripCard=Wycieczka karty -AddTrip=Dodaj podróż -ListOfTrips=Lista wyjazdów +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Wykaz opłat -NewTrip=Nowa podróż -CompanyVisited=Firma / fundacji odwiedzili -Kilometers=Kilometers -FeesKilometersOrAmout=Kwota lub km -DeleteTrip=Usuń podróży -ConfirmDeleteTrip=Czy na pewno chcesz usunąć tę wycieczkę? +NewTrip=New expense report +CompanyVisited=Firm / fundacji odwiedzonych +Kilometers=Kilometrów +FeesKilometersOrAmout=Kwota lub kilometry +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report +ClassifyRefunded=Zakfalifikowano do refundacji. +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line TF_OTHER=Inny -TF_LUNCH=Lunch -TF_TRIP=Wycieczka -ListTripsAndExpenses=Lista wycieczek i wydatków -ExpensesArea=Wycieczki i obszar wydatki -SearchATripAndExpense=Szukaj w podróż i wydatki -ClassifyRefunded=Classify 'Refunded' +TF_TRANSPORTATION=Transportation +TF_LUNCH=Obiad +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/pt_BR/admin.lang b/htdocs/langs/pt_BR/admin.lang index 82d5c26f1bd..0a86251af87 100644 --- a/htdocs/langs/pt_BR/admin.lang +++ b/htdocs/langs/pt_BR/admin.lang @@ -73,7 +73,6 @@ Activation=Ativação SetupShort=Configuracao OtherSetup=Outras configuracoes CurrentValueSeparatorThousand=Separador milhar -Destination=Destino IdModule=Módulo ID IdPermissions=Permissão ID ModulesCommon=Módulos Principais @@ -346,7 +345,6 @@ Module200Desc=sincronização com um anuário LDAP Module310Desc=Administração de Membros de uma associação Module330Desc=Administração de Favoritos Module410Desc=Interface com calendário Webcalendar -Module500Name=Despesas especiais (impostos, contribuições sociais, dividendos) Module500Desc=Gestão de despesas especiais, como impostos, contribuição social, dividendos e salários Module510Desc=Gestão de funcionários salários e pagamentos Module600Desc=Enviar notificação via EMail para terceiros sobre algums eventos do Dolibarr ( configurado para cada terceiro) @@ -542,7 +540,6 @@ LocalTax2IsUsed=Use terceiro imposto LocalTax2IsNotUsed=Não use terceiro imposto LocalTax2IsUsedDesc=Use um terceiro tipo de impostos (excepto o VAT) LocalTax2IsNotUsedDesc=Não use outro tipo de impostos (excepto o VAT) -LocalTax2Management=Terceiro tipo de imposto LocalTax1IsUsedDescES=A taxa de RE por padrão ao criar perspectivas, notas fiscais, ordens etc seguir a regra padrão ativo:
Se te comprador não está sujeito a RE, RP por default = 0. Fim da regra.
Se o comprador está sujeito a RE então o RE por padrão. Fim da regra.
LocalTax1IsUsedExampleES=Na Espanha, eles são profissionais sujeitos a algumas seções específicas do IAE espanhol. LocalTax1IsNotUsedExampleES=Na Espanha, eles são profissionais e sociedades e sujeito a determinadas seções do IAE espanhol. @@ -552,11 +549,8 @@ LocalTax2IsNotUsedDescES=Por padrão, o IRPF proposta é 0. Fim da regra. LocalTax2IsUsedExampleES=Na Espanha, freelancers e profissionais independentes que prestam serviços e empresas que escolheram o sistema fiscal de módulos. LocalTax2IsNotUsedExampleES=Na Espanha, eles são bussines não sujeitas ao regime fiscal dos módulos. CalcLocaltax=Relatorio -CalcLocaltax1ES=Vendas - Compras CalcLocaltax1Desc=Relatorios de taxas locais são calculados pela differença entre taxas locais de venda e taxas locais de compra -CalcLocaltax2ES=Compras CalcLocaltax2Desc=Relatorio de taxas locais e o total de taxas locais nas compras -CalcLocaltax3ES=Vendas CalcLocaltax3Desc=Relatorio de taxas locais e o total de taxas locais de vendas NbOfDays=N� de Dias AlwaysActive=Sempre Ativo @@ -893,7 +887,6 @@ FilesOfTypeNotCached=Arquivos do tipo não são armazenados em cache pelo servid FilesOfTypeCompressed=Arquivos do tipo são comprimidas pelo servidor HTTP FilesOfTypeNotCompressed=Arquivos do tipo não são compactados pelo servidor HTTP CacheByServer=Cache por servidor -CacheByClient=Cache pelo navegador CompressionOfResources=A compressão das respostas HTTP ProductSetup=configuração do módulo produtos ServiceSetup=Configuração do módulo Serviços @@ -1029,10 +1022,6 @@ ECMAutoTree =Pasta árvore automática e documento FiscalYears=Anos fiscais FiscalYear=Ano fiscal FiscalYearCard=Ficha ano fiscal -EditFiscalYear=Editar ano fiscal -OpenFiscalYear=Abrir ano fiscal -CloseFiscalYear=Fechar ano fiscal DeleteFiscalYear=Remover ano fiscal ConfirmDeleteFiscalYear=Voçê tem certeza que quer deleitar este ano fical ? -Format=Formato TypePaymentDesc=0: Pagamento para Cliente, 1: Pagamento para Fornecedor, 2: Pagamentos para Clientes e Fornecedores diff --git a/htdocs/langs/pt_BR/bills.lang b/htdocs/langs/pt_BR/bills.lang index 730cdb1ee6d..a807b965562 100644 --- a/htdocs/langs/pt_BR/bills.lang +++ b/htdocs/langs/pt_BR/bills.lang @@ -196,8 +196,6 @@ SetMode=Definir Modo de Pagamento Billed=Faturado RepeatableInvoice=Modelo fatura RepeatableInvoices=Modelos da fatura -Repeatable=Modelo -Repeatables=Modelos ChangeIntoRepeatableInvoice=Converter para modelo de fatura CreateRepeatableInvoice=Criar modelo de fatura CreateFromRepeatableInvoice=Criar da fatura modelo @@ -212,7 +210,6 @@ EditRelativeDiscount=Alterar Desconto Relativo AddGlobalDiscount=Adicionar Desconto Fixo EditGlobalDiscounts=Alterar Descontos Globais ShowDiscount=Ver o Desconto -ShowReduc=Mostrar a dedução RelativeDiscount=Desconto Relativo GlobalDiscount=Desconto Fixo CreditNote=Depósito diff --git a/htdocs/langs/pt_BR/compta.lang b/htdocs/langs/pt_BR/compta.lang index d59bdbfeb77..064c999d7fd 100644 --- a/htdocs/langs/pt_BR/compta.lang +++ b/htdocs/langs/pt_BR/compta.lang @@ -34,7 +34,6 @@ LT1CustomerES=RE vendas LT1SupplierES=RE compras VATCollected=ICMS Recuperado ToGet=Para restituir -SpecialExpensesArea=Área para todos os pagamentos especiais MenuSpecialExpenses=Despesas especiais PaymentCustomerInvoice=Pagamento de fatura do cliente PaymentSupplierInvoice=Pagamento de fatura do fornecedor @@ -125,7 +124,6 @@ Pcg_subtype=PCG subtipo InvoiceLinesToDispatch=Linhas de nota fiscal para envio InvoiceDispatched=Faturas remetidas AccountancyDashboard=Resumo Contabilidade -ByProductsAndServices=Por produtos e serviços RefExt=Ref externo ToCreateAPredefinedInvoice=Para criar uma Fatura predefinida, criar uma fatura padrão, em seguida, sem validá-la, clique no botão "Converter para fatura pré-definida". LinkedOrder=Atalho para ordem diff --git a/htdocs/langs/pt_BR/donations.lang b/htdocs/langs/pt_BR/donations.lang index 60c851b3eaf..2d8c7d33d13 100644 --- a/htdocs/langs/pt_BR/donations.lang +++ b/htdocs/langs/pt_BR/donations.lang @@ -7,7 +7,6 @@ Donors=Dadores ShowDonation=Mostrar doaçaõ DonationsPaid=Doações pagas DonationStatusPaid=Doaçaõ recebida -DonationStatusPaidShort=Recebido DonationReceipt=Recibo doaçaõ LastModifiedDonations=As ultimas %s doações modificadaas SearchADonation=Buscar doaçaõ diff --git a/htdocs/langs/pt_BR/projects.lang b/htdocs/langs/pt_BR/projects.lang index 8b8a231b494..1b32494e7c8 100644 --- a/htdocs/langs/pt_BR/projects.lang +++ b/htdocs/langs/pt_BR/projects.lang @@ -32,7 +32,6 @@ ProgressDeclared=o progresso declarado ProgressCalculated=calculado do progresso ListOrdersAssociatedProject=Lista de Pedidos Associados ao Projeto ListSupplierInvoicesAssociatedProject=Lista de Faturas de Fornecedor Associados ao Projeto -ListTripAssociatedProject=Lista de viagens e despesas associadas com o projeto ActivityOnProjectThisWeek=Atividade ao Projeto esta Semana ActivityOnProjectThisMonth=Atividade ao Projeto este Mês ActivityOnProjectThisYear=Atividade ao Projeto este Ano @@ -63,7 +62,6 @@ CloneNotes=Copiar notas CloneProjectFiles=Copiar arquivos do projetos CloneTaskFiles=Copia(s) do(s) arquivo(s) do projeto(s) finalizado ConfirmCloneProject=Tem certeza que deseja copiar este projeto? -ProjectReportDate=Alterar a data da tarefa de acordo com a data de início do projeto ErrorShiftTaskDate=Impossível mudar data da tarefa de acordo com a nova data de início do projeto TaskCreatedInDolibarr=Tarefa %s criada TaskModifiedInDolibarr=Tarefa %s alterada diff --git a/htdocs/langs/pt_PT/admin.lang b/htdocs/langs/pt_PT/admin.lang index 306b940d879..4822d5d1436 100644 --- a/htdocs/langs/pt_PT/admin.lang +++ b/htdocs/langs/pt_PT/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimental VersionDevelopment=Desenvolvimento VersionUnknown=Desconhecida VersionRecommanded=Recomendada +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Id. da Sessão SessionSaveHandler=Gestor para guardar as sessões SessionSavePath=Localização para guardar a sessão @@ -45,8 +50,8 @@ ErrorModuleRequireDolibarrVersion=Erro, este módulo requer a versão %s ou supe ErrorDecimalLargerThanAreForbidden=Erro, as casas decimais superiores a %s não são suportadas. DictionarySetup=Configurar Dicionário Dictionary=Dicionários -Chartofaccounts=Chart of accounts -Fiscalyear=Fiscal years +Chartofaccounts=Gráfico de contas +Fiscalyear=Anos fiscais ErrorReservedTypeSystemSystemAuto=Value 'system' and 'systemauto' for type is reserved. You can use 'user' as value to add your own record ErrorCodeCantContainZero=O código não pode conter o valor 0 DisableJavascript=Disable JavaScript and Ajax functions (Recommended for blind person or text browsers) @@ -69,7 +74,7 @@ ShowPreview=Ver Vista Prévia PreviewNotAvailable=Visualização não disponível ThemeCurrentlyActive=Tema Actualmente Activo CurrentTimeZone=Zona Horaria Actual -MySQLTimeZone=TimeZone MySql (database) +MySQLTimeZone=Zona Horária MySql (database) TZHasNoEffect=Dates are stored and returned by database server as if they were kept as submited string. The timezone has effect only when using UNIX_TIMESTAMP function (that should not be used by Dolibarr, so database TZ should have no effect, even if changed after data was entered). Space=Área Table=Tabela @@ -79,8 +84,8 @@ Mask=Máscara NextValue=Próximo Valor NextValueForInvoices=Próximo Valor (Facturas) NextValueForCreditNotes=Próximo Valor (Notas de Entregas) -NextValueForDeposit=Next value (deposit) -NextValueForReplacements=Next value (replacements) +NextValueForDeposit=Valor seguinte (depósito) +NextValueForReplacements=Valor seguinte (restituições) MustBeLowerThanPHPLimit=Observação: Parametros PHP limita o tamanho a %s %s de máximo, qualquer que seja o valor deste parametro NoMaxSizeByPHPLimit=Nenhuma limitação interna no servidor PHP MaxSizeForUploadedFiles=Tamanho máximo dos documentos a carregar (0 para proibir o carregamento) @@ -108,9 +113,9 @@ OtherOptions=Outras Opções OtherSetup=Várias Configurações CurrentValueSeparatorDecimal=Separador decimal CurrentValueSeparatorThousand=Separador dos milhares -Destination=Destination -IdModule=Module ID -IdPermissions=Permissions ID +Destination=Destino +IdModule=Id. do Módulo +IdPermissions=Id. das Autorizações Modules=Módulos ModulesCommon=Módulos standard ModulesOther=Outros módulos @@ -242,7 +247,7 @@ OfficialWiki=Wiki ERP OfficialDemo=Demo em linha ERP/CRM OfficialMarketPlace=Mercado Oficial externo para os módulos / addons OfficialWebHostingService=Referenced web hosting services (Cloud hosting) -ReferencedPreferredPartners=Preferred Partners +ReferencedPreferredPartners=Parceiros Preferidos OtherResources=Autres ressources ForDocumentationSeeWiki=Para a documentação de utilizador, programador ou Perguntas Frequentes (FAQ), consulte o wiki do ERP:
%s SetupIsReadyForUse=A Instalação está finalizada e o ERP/CRM está disponivel com o novo componente. NotExistsDirect=A diretoria raiz alternativa não está definida.
@@ -399,7 +404,7 @@ LinkToTest=Clickable link generated for user %s (click phone nu KeepEmptyToUseDefault=Deixar em branco para usar o valor por omissão DefaultLink=Hiperligação predefinida ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s +ExternalModule=Módulo externo - Instalado na diretoria %s BarcodeInitForThirdparties=Mass barcode init for thirdparties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Atualmente, tem %s registos em %s %s sem código de barras definido. @@ -485,7 +490,7 @@ Module400Name=Projetos/Oportunidades/Chefias Module400Desc=Management of projects, opportunities or leads. You can then assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. Module410Name=Webcalendar Module410Desc=Interface com calendario Webcalendar -Module500Name=Special expenses (tax, social contributions, dividends) +Module500Name=Despesas especiais (impostos, contribuições sociais, dividendos) Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries Module510Name=Salários Module510Desc=Management of employees salaries and payments @@ -493,10 +498,16 @@ Module600Name=Notificações Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Bolsas Module700Desc=Gestão de Bolsas +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Interface com o sistema de seguimento de incidencias Mantis Module1400Name=Perito de Contabilidade Module1400Desc=Perido de gestão da Contabilidade (dupla posição) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Categorías Module1780Desc=Gestão de categorías (produtos, Fornecedores e clientes) Module2000Name=FCKeditor @@ -524,7 +535,7 @@ Module5000Name=Multi-empresa Module5000Desc=Permite-lhe gerir várias empresas Module6000Name=Fluxo de Trabalho Module6000Desc=Gestão do fluxo de trabalho -Module20000Name=Leave Requests management +Module20000Name=Deixar gestão de Pedidos Module20000Desc=Declare and follow employees leaves requests Module39000Name=Product batch Module39000Desc=Batch or serial number, eat-by and sell-by date management on products @@ -575,7 +586,7 @@ Permission67=Exportar Intervenções Permission71=Consultar Membros Permission72=Criar/Modificar Membros Permission74=Eliminar Membros -Permission75=Setup types of membership +Permission75=Configure os tipos de membros Permission76=Exportar Bolsas Permission78=Consultar honorários Permission79=Criar/Modificar honorários @@ -599,7 +610,7 @@ Permission109=Eliminar envios Permission111=Consultar contas financeiras (contas bancarias, caixas) Permission112=Criar/Modificar quantidade/eliminar registos bancarios Permission113=Setup financial accounts (create, manage categories) -Permission114=Reconciliate transactions +Permission114=Reconciliar transações Permission115=Exportar transacções e extractos Permission116=Captar transferencias entre contas Permission117=Gerir envío de cheques @@ -624,14 +635,14 @@ Permission165=Apagar contractos/subscrições Permission171=Read trips and expenses (own and his subordinates) Permission172=Criar/modificar viagens e despesas Permission173=Apagar viagens e despesas -Permission174=Read all trips and expenses +Permission174=Ler todas as viagens e despesas Permission178=Exportar viagens e despesas Permission180=Consultar Fornecedores Permission181=Consultar pedidos a Fornecedores Permission182=Criar/Modificar pedidos a Fornecedores Permission183=Confirmar pedidos a Fornecedores Permission184=Aprovar pedidos a Fornecedores -Permission185=Enviar pedidos a Fornecedores +Permission185=Order or cancel supplier orders Permission186=Receber pedidos de Fornecedores Permission187=Fechar pedidos a Fornecedores Permission188=Anular pedidos a Fornecedores @@ -653,8 +664,8 @@ Permission222=Criar/Modificar E-Mails (assunto, destinatarios, etc.) Permission223=Confirmar E-Mails (permite o envío) Permission229=Eliminar E-Mails Permission237=Ver destinatários e informação -Permission238=Manually send mailings -Permission239=Delete mailings after validation or sent +Permission238=Envie correio manualmente +Permission239=Apagar o correio depois da validação ou envio Permission241=Consultar categorías Permission242=Criar/Modificar categorías Permission243=Eliminar categorías @@ -700,9 +711,9 @@ Permission402=Criar/Modificar activos Permission403=Confirmar activos Permission404=Eliminar activos Permission510=Read Salaries -Permission512=Create/modify salaries -Permission514=Delete salaries -Permission517=Export salaries +Permission512=Criar/modificar salários +Permission514=Apagar salários +Permission517=Exportar salários Permission531=Ler serviços Permission532=Criar / modificar serviços Permission534=Apagar serviços @@ -711,6 +722,13 @@ Permission538=Exportação de serviços Permission701=Consultar Bolsas Permission702=Criar/Modificar Bolsas Permission703=Eliminar Bolsas +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Consultar stocks Permission1002=Criar/modificar armazéns Permission1003=Apagar armazéns @@ -774,7 +792,7 @@ DictionaryCountry=Países DictionaryCurrency=Moedas DictionaryCivility=Civility title DictionaryActions=Type of agenda events -DictionarySocialContributions=Social contributions types +DictionarySocialContributions=Tipos de contribuições sociais DictionaryVAT=VAT Rates or Sales Tax Rates DictionaryRevenueStamp=Amount of revenue stamps DictionaryPaymentConditions=Condições de Pagamento @@ -788,9 +806,9 @@ DictionaryStaff=Empregados DictionaryAvailability=Atraso na entrega DictionaryOrderMethods=Métodos de encomenda DictionarySource=Origem das propostas/ordens -DictionaryAccountancyplan=Chart of accounts -DictionaryAccountancysystem=Models for chart of accounts -DictionaryEMailTemplates=Emails templates +DictionaryAccountancyplan=Gráfico de contas +DictionaryAccountancysystem=Modelos para o gráfíco de contas +DictionaryEMailTemplates=Modelos de Mensagens SetupSaved=Configuração guardada BackToModuleList=Voltar à lista de módulos BackToDictionaryList=Voltar à lista de dicionários @@ -813,7 +831,7 @@ LocalTax2IsUsed=Utilizar um terceiro imposto LocalTax2IsNotUsed=Não utilizar um terceiro imposto LocalTax2IsUsedDesc=Use a third type of tax (other than VAT) LocalTax2IsNotUsedDesc=Do not use other type of tax (other than VAT) -LocalTax2Management=Third type of tax +LocalTax2Management=Terceiro tipo de imposto LocalTax2IsUsedExample= LocalTax2IsNotUsedExample= LocalTax1ManagementES= RE Gestão @@ -826,12 +844,12 @@ LocalTax2IsUsedDescES= A taxa de RE por padrão, quando as perspectivas de cria LocalTax2IsNotUsedDescES= Por padrão, o IRPF proposto é 0. Fim da regra. LocalTax2IsUsedExampleES= Em Espanha, os freelancers e profissionais liberais que prestam serviços e empresas que escolheram o regime fiscal dos módulos. LocalTax2IsNotUsedExampleES= Em Espanha, eles não são negócios sujeitas ao regime fiscal dos módulos. -CalcLocaltax=Reports -CalcLocaltax1ES=Sales - Purchases +CalcLocaltax=Relatórios +CalcLocaltax1ES=Vendas - Compras CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases -CalcLocaltax2ES=Purchases +CalcLocaltax2ES=Compras CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases -CalcLocaltax3ES=Sales +CalcLocaltax3ES=Vendas CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales LabelUsedByDefault=Etiqueta que se utilizará se não se encontra tradução para este código LabelOnDocuments=Etiqueta sobre documentos @@ -951,7 +969,7 @@ InfoWebServer=Detalhes do servidor web InfoDatabase=Detalhes da base de dados InfoPHP=Detalhes do PHP InfoPerf=Detalhes de Performance -BrowserName=Browser name +BrowserName=Nome do Navegador BrowserOS=Browser OS ListEvents=Auditoría de eventos ListOfSecurityEvents=Listagem de eventos de segurança ERP/CRM @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Senha para usar o servidor proxy DefineHereComplementaryAttributes=Defina aqui todos os atributos complementares, que não estejam disponiveis por padrão, e que deseja ser suporte para %s. ExtraFields=Atributos complementares ExtraFieldsLines=Atributos complementares (linhas) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Atributos complementares (terceiro) ExtraFieldsContacts=Atributos complementares (contato/morada) ExtraFieldsMember=Atributos complementares (membro) @@ -1035,7 +1055,7 @@ ExtraFieldsSupplierOrders=Atributos complementares (encomendas) ExtraFieldsSupplierInvoices=Atributos complementares (faturas) ExtraFieldsProject=Atributos complementares (projetos) ExtraFieldsProjectTask=Atributos complementares (tarefas) -ExtraFieldHasWrongValue=Attribute %s has a wrong value. +ExtraFieldHasWrongValue=O atributo %s tem um valor errado. AlphaNumOnlyCharsAndNoSpace=apenas caracteres alfanuméricos sem espaços AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space SendingMailSetup=Configuração de envios por correio eletrónico @@ -1047,11 +1067,11 @@ TranslationSetup=Configuração da tradução TranslationDesc=Choice of language visible on screen can be modified:
* Globally from menu Home - Setup - Display
* For user only from tab User display of user card (click on login on top of screen). TotalNumberOfActivatedModules=Total de módulos de funcionalidades ativos: %s YouMustEnableOneModule=Deve ativar, pelo menos, 1 módulo -ClassNotFoundIntoPathWarning=Class %s not found into PHP path +ClassNotFoundIntoPathWarning=Classe %s não encontrada no caminho PHP YesInSummer=Sim no verão OnlyFollowingModulesAreOpenedToExternalUsers=Note, only following modules are opened to external users (whatever are permission of such users): SuhosinSessionEncrypt=Session storage encrypted by Suhosin -ConditionIsCurrently=Condition is currently %s +ConditionIsCurrently=A condição está atualmente %s YouUseBestDriver=You use driver %s that is best driver available currently. YouDoNotUseBestDriver=You use drive %s but driver %s is recommended. NbOfProductIsLowerThanNoPb=You have only %s products/services into database. This does not required any particular optimization. @@ -1059,10 +1079,10 @@ SearchOptim=Optimização da pesquisa YouHaveXProductUseSearchOptim=You have %s product into database. You should add the constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 into Home-Setup-Other, you limit the search to the beginning of strings making possible for database to use index and you should get an immediate response. BrowserIsOK=You are using the web browser %s. This browser is ok for security and performance. BrowserIsKO=You are using the web browser %s. This browser is known to be a bad choice for security, performance and reliability. We recommand you to use Firefox, Chrome, Opera or Safari. -XDebugInstalled=XDebug is loaded. -XCacheInstalled=XCache is loaded. +XDebugInstalled=XDebug está carregado. +XCacheInstalled=XCache está carregada. AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". -FieldEdition=Edition of field %s +FieldEdition=Edição do campo %s FixTZ=Corrigir Fuso Horário FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced) GetBarCode=Obter código de barras @@ -1089,7 +1109,7 @@ ModuleCompanyCodeDigitaria=Devolve um código contabilistico composto por o cód UseNotifications=Usar Notificações NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined:
* per third parties contacts (customers or suppliers), one third party at time.
* or by setting a global target email address on module setup page. ModelModules=Documentos modelos -DocumentModelOdt=Generate documents from OpenDocuments templates (.ODT or .ODS files for OpenOffice, KOffice, TextEdit,...) +DocumentModelOdt=Crie documentos a partir dos modelos OpenDocuments (ficheiros .ODT ou .ODS para o KOffice, OpenOffice, TextEdit,...) WatermarkOnDraft=Marca d' JSOnPaimentBill=Activate feature to autofill payment lines on payment form CompanyIdProfChecker=Identidade profissional única @@ -1137,7 +1157,7 @@ EnableEditDeleteValidInvoice=Activar a possibilidade de editar/eliminar uma fact SuggestPaymentByRIBOnAccount=Sugerir o pagamento por transfência para a conta SuggestPaymentByChequeToAddress=Sugerir o pagamento por cheque a FreeLegalTextOnInvoices=Texto livre em facturas -WatermarkOnDraftInvoices=Watermark on draft invoices (none if empty) +WatermarkOnDraftInvoices=Marca d'água nas faturas provisórias (nenhuma se em branco) ##### Proposals ##### PropalSetup=Configuração do módulo Orçamentos CreateForm=Criação formulario @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Uma linha de producto/serviço que tem uma quantidade FreeLegalTextOnProposal=Texto livre em Orçamentos WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Configuração do módulo pedidos OrdersNumberingModules=Módulos de numeração dos pedidos @@ -1159,7 +1186,7 @@ OrdersModelModule=Modelos de documentos dos pedidos HideTreadedOrders=Hide the treated or cancelled orders in the list ValidOrderAfterPropalClosed=Confirmar o pedido depois de fechar o orçamento, permite não passar por um pedido provisório FreeLegalTextOnOrders=Texto livre em pedidos -WatermarkOnDraftOrders=Watermark on draft orders (none if empty) +WatermarkOnDraftOrders=Marca d'água nas encomendas provisórias (nenhuma se em branco) ShippableOrderIconInList=Add an icon in Orders list which indicate if order is shippable BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ask for bank account destination of order ##### Clicktodial ##### @@ -1174,7 +1201,7 @@ FicheinterNumberingModules=Módulos de numeração das fichas de intervenção TemplatePDFInterventions=Modelo de documentos das fichas de intervenção WatermarkOnDraftInterventionCards=Watermark on intervention card documents (none if empty) ##### Contracts ##### -ContractsSetup=Contracts/Subscriptions module setup +ContractsSetup=Configurar módulo de Contractos/Subscricões ContractsNumberingModules=Contratos de numeração módulos TemplatePDFContracts=Contracts documents models FreeLegalTextOnContracts=Free text on contracts @@ -1255,7 +1282,7 @@ LDAPTCPConnectOK=Ligação TCP ao servidor LDAP efectuada (Servidor LDAPTCPConnectKO=Falha de ligação TCP ao servidor LDAP (Servidor LDAPBindOK=Connect/Authentificate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s) LDAPBindKO=Fallo de ligação/autenticação ao servidor LDAP (Servidor -LDAPUnbindSuccessfull=Disconnect successful +LDAPUnbindSuccessfull=Desligado com sucesso LDAPUnbindFailed=Saida falhada LDAPConnectToDNSuccessfull=Ligação a DN (%s) realizada LDAPConnectToDNFailed=Conecção ao DN (%s) falhada @@ -1324,19 +1351,19 @@ ForANonAnonymousAccess=Para um acesso autentificado PerfDolibarr=Performance setup/optimizing report YouMayFindPerfAdviceHere=You will find on this page some checks or advices related to performance. NotInstalled=Não instalado, o servidor não está mais lento por isso. -ApplicativeCache=Applicative cache +ApplicativeCache=Cache aplicativa 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. MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled. -OPCodeCache=OPCode cache +OPCodeCache=Cache de OPCode NoOPCodeCacheFound=No OPCode cache found. May be you use another OPCode cache than XCache or eAccelerator (good), may be you don't have OPCode cache (very bad). HTTPCacheStaticResources=Cache HTTP para recursos estáticos (css, img, javascript) FilesOfTypeCached=Ficheiros do tipo %s são guardados na cache do servidor HTTP FilesOfTypeNotCached=Ficheiros do tipo %s não são guardados na cache do servidor HTTP FilesOfTypeCompressed=Ficheiros do tipo %s são comprimidos pelo servidor HTTP FilesOfTypeNotCompressed=Ficheiros do tipo %s não são comprimidos pelo servidor HTTP -CacheByServer=Cache by server -CacheByClient=Cache by browser +CacheByServer=Cache pelo servidor +CacheByClient=Cache pelo navegador CompressionOfResources=Compressão das respostas HTTP TestNotPossibleWithCurrentBrowsers=Such an automatic detection is not possible with current browsers ##### Products ##### @@ -1365,7 +1392,7 @@ SyslogSimpleFile=Ficheiro SyslogFilename=Nome e caminho do Ficheiro YouCanUseDOL_DATA_ROOT=Pode utilizar DOL_DATA_ROOT/dolibarr.log para um log na pasta 'documentos' de Dolibarr. ErrorUnknownSyslogConstant=A constante %s não é uma constante syslog conhecida -OnlyWindowsLOG_USER=Windows only supports LOG_USER +OnlyWindowsLOG_USER=O Windows suporta apenas LOG_USER ##### Donations ##### DonationsSetup=Configuração do módulo Bolsas DonationsReceiptModel=Modelo de recibo de doação @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Códigos de barras tipo UPC BarcodeDescISBN=Códigos de barras tipo ISBN BarcodeDescC39=Códigos de barras tipo C39 BarcodeDescC128=Códigos de barras tipo C128 -GenbarcodeLocation=Ferramenta de geração de código de barras em linha de pedido (utilizado por o motor phpbar para determinados tipos de códigos barra) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Motor interno BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1399,7 +1426,7 @@ MailingEMailFrom=E-Mail emissor (From) dos correios enviados por E-Mailing MailingEMailError=Retorno EMail (Erros a) para e-mails com erros MailingDelay=Seconds to wait after sending next message ##### Notification ##### -NotificationSetup=EMail notification module setup +NotificationSetup=Configurar módulo da notificação de mensagem NotificationEMailFrom=E-Mail emissor (From) dos correios enviados a traves de Notificações ListOfAvailableNotifications=List of events you can set notification on, for each thirdparty (go into thirdparty card to setup) or by setting a fixed email (List depends on activated modules) FixedEmailTarget=Fixed email target @@ -1482,8 +1509,8 @@ Sell=Vender InvoiceDateUsed=Data da factura usada YourCompanyDoesNotUseVAT=Sua empresa não tem configuração definida para usar o IVA (Home - Setup - Empresa / Fundação), pelo que não há opções de configuração do IVA. AccountancyCode=Código de Contabilidade -AccountancyCodeSell=Sale account. code -AccountancyCodeBuy=Purchase account. code +AccountancyCodeSell=Código da conta de Vendas +AccountancyCodeBuy=Código da conta de Compras ##### Agenda ##### AgendaSetup=Módulo configuração de acções e agenda PasswordTogetVCalExport=Chave de autorização para exportação do link vcal. @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Conta de efectivo que se utilizará para as vendas CashDeskBankAccountForCheque= Conta a ser usada para receber pagamentos através de cheques CashDeskBankAccountForCB= Conta a ser usada para receber pagamentos em dinheiro ou por cartões de crédito -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Configuração do Modulo de Favoritos @@ -1546,26 +1574,30 @@ TaskModelModule=Tasks reports document model ECMSetup = Configuração GED ECMAutoTree = Automatic tree folder and document ##### Fiscal Year ##### -FiscalYears=Fiscal years -FiscalYear=Fiscal year +FiscalYears=Anos Fiscais +FiscalYear=Ano Fiscal FiscalYearCard=Fiscal year card -NewFiscalYear=New fiscal year -EditFiscalYear=Edit fiscal year -OpenFiscalYear=Open fiscal year -CloseFiscalYear=Close fiscal year -DeleteFiscalYear=Delete fiscal year -ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ? -Opened=Opened -Closed=Closed -AlwaysEditable=Can always be edited +NewFiscalYear=Novo ano fiscal +EditFiscalYear=Editar ano fiscal +OpenFiscalYear=Abrir ano fiscal +CloseFiscalYear=Fechar ano fiscal +DeleteFiscalYear=Apagar ano fiscal +ConfirmDeleteFiscalYear=Tem a certeza de que deseja apagar este ano fiscal? +Opened=Aberto +Closed=Fechado +AlwaysEditable=Pode ser sempre editado MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) -NbMajMin=Minimum number of uppercase characters -NbNumMin=Minimum number of numeric characters -NbSpeMin=Minimum number of special characters -NbIteConsecutive=Maximum number of repeating same characters +NbMajMin=Número máximo de carateres maiúsculos +NbNumMin=Número mínimod de carateres numéricos +NbSpeMin=Número mínimo de carateres especiais +NbIteConsecutive=Número máximo para repetir os mesmos carateres NoAmbiCaracAutoGeneration=Do not use ambiguous characters ("1","l","i","|","0","O") for automatic generation -SalariesSetup=Setup of module salaries -SortOrder=Sort order -Format=Format +SalariesSetup=Configuração do módulo de salários +SortOrder=Ordenação +Format=Formato TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/pt_PT/banks.lang b/htdocs/langs/pt_PT/banks.lang index 18e2a01c67f..aefc7e59618 100644 --- a/htdocs/langs/pt_PT/banks.lang +++ b/htdocs/langs/pt_PT/banks.lang @@ -33,7 +33,11 @@ AllTime=Do início Reconciliation=Conciliação RIB=Conta bancária IBAN=Identificador IBAN +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=Identificador BIC/SWIFT +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Débitos Directos StandingOrder=Domiciliação Withdrawals=Reembolsos @@ -148,7 +152,7 @@ BackToAccount=Voltar à Conta ShowAllAccounts=Mostrar para todas as Contas FutureTransaction=Transacção futura. Não há forma de conciliar. SelectChequeTransactionAndGenerate=Selecione o que pretende incluir no recibo de depósito e clique em "Criar". -InputReceiptNumber=Escolha o extrato bancário relacionadas com a conciliação. Use um valor numérico ordenável (como, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventualmente, especifique uma categoria que deseja classificar os movimentos ToConciliate=Para conciliar? ThenCheckLinesAndConciliate=Em seguida, verifique as linhas presentes no extrato bancário e clique diff --git a/htdocs/langs/pt_PT/bills.lang b/htdocs/langs/pt_PT/bills.lang index be47a167a5e..8a28a423f86 100644 --- a/htdocs/langs/pt_PT/bills.lang +++ b/htdocs/langs/pt_PT/bills.lang @@ -1,16 +1,16 @@ # Dolibarr language file - Source file is en_US - bills Bill=Factura Bills=Facturas -BillsCustomers=Customers invoices -BillsCustomer=Customers invoice -BillsSuppliers=Suppliers invoices -BillsCustomersUnpaid=Unpaid customers invoices +BillsCustomers=Facturas de Clientes +BillsCustomer=Fatura do Cliente +BillsSuppliers=Facturas de Fornecedores +BillsCustomersUnpaid=Facturas de Clientes a Receber BillsCustomersUnpaidForCompany=Facturas a Clientes Pendentes de Cobrança de %s BillsSuppliersUnpaid=Facturas de Fornecedores Pendentes de Pagamento BillsSuppliersUnpaidForCompany=Facturas de fornecedores não remunerado para a %s BillsLate=Os pagamentos em atraso -BillsStatistics=Customers invoices statistics -BillsStatisticsSuppliers=Suppliers invoices statistics +BillsStatistics=Estatísticas das faturas de clientes +BillsStatisticsSuppliers=Estatísticas das faturas de fornecedores DisabledBecauseNotErasable=Desactivada porque não podem ser apagados InvoiceStandard=Factura Standard InvoiceStandardAsk=Factura Standard @@ -87,7 +87,7 @@ ClassifyCanceled=Classificar 'Abandonado' ClassifyClosed=Classificar 'Fechado' ClassifyUnBilled=Classify 'Unbilled' CreateBill=Criar Factura -AddBill=Create invoice or credit note +AddBill=Criar Factura ou Nota de Crédito AddToDraftInvoices=Adicionar à fatura rascunho DeleteBill=Eliminar Factura SearchACustomerInvoice=Procurar uma factura de cliente @@ -189,15 +189,15 @@ AlreadyPaid=Já e AlreadyPaidBack=Já reembolsado AlreadyPaidNoCreditNotesNoDeposits=Já pagas (sem notas de crédito e depósitos) Abandoned=Abandonada -RemainderToPay=Remaining unpaid +RemainderToPay=Restante a receber RemainderToTake=Remaining amount to take RemainderToPayBack=Remaining amount to pay back Rest=Pendente AmountExpected=Montante reclamado ExcessReceived=Recebido em excesso EscompteOffered=Desconto (Pronto pagamento) -SendBillRef=Submission of invoice %s -SendReminderBillRef=Submission of invoice %s (reminder) +SendBillRef=Submissão da fatura %s +SendReminderBillRef=Submissão da fatura %s (lembrete) StandingOrders=Débitos Directos StandingOrder=Domiciliação NoDraftBills=Nenhuma factura rascunho @@ -222,13 +222,13 @@ NonPercuRecuperable=Não recuperável SetConditions=Definir Condições de pagamento SetMode=Definir modo de pagamento Billed=Facturado -RepeatableInvoice=Template invoice -RepeatableInvoices=Template invoices -Repeatable=Template -Repeatables=Templates -ChangeIntoRepeatableInvoice=Convert into template invoice -CreateRepeatableInvoice=Create template invoice -CreateFromRepeatableInvoice=Create from template invoice +RepeatableInvoice=Fatura Modelo +RepeatableInvoices=Faturas Modelo +Repeatable=Modelo +Repeatables=Modelos +ChangeIntoRepeatableInvoice=Converter em fatura modelo +CreateRepeatableInvoice=Criar fatura modelo +CreateFromRepeatableInvoice=Criar a partir da fatura modelo CustomersInvoicesAndInvoiceLines=Facturas a clientes e linhas de facturas CustomersInvoicesAndPayments=Facturas a clientes e pagamentos ExportDataset_invoice_1=Facturas a clientes e linhas de factura @@ -247,7 +247,7 @@ AddGlobalDiscount=Adicionar Desconto fixo EditGlobalDiscounts=Editar descontos absolutos AddCreditNote=Criar nota de crédito ShowDiscount=Ver o deposito -ShowReduc=Show the deduction +ShowReduc=Mostrar a dedução RelativeDiscount=Desconto relativo GlobalDiscount=Desconto fixo CreditNote=Deposito @@ -293,8 +293,8 @@ TotalOfTwoDiscountMustEqualsOriginal=Total de dois novos desconto deve ser igual ConfirmRemoveDiscount=Tem certeza de que deseja remover este desconto? RelatedBill=factura relacionados RelatedBills=facturas relacionadas -LatestRelatedBill=Latest related invoice -WarningBillExist=Warning, one or more invoice already exist +LatestRelatedBill=Última fatura relacionada +WarningBillExist=Aviso, já existe uma ou mais faturas # PaymentConditions PaymentConditionShortRECEP=Pronto Pagamento @@ -313,7 +313,7 @@ PaymentConditionShortPT_ORDER=On order PaymentConditionPT_ORDER=On order PaymentConditionShortPT_5050=50-50 PaymentConditionPT_5050=50%% adiantado, 50%% na entrega -FixAmount=Fix amount +FixAmount=Valor fixo VarAmount=Quantidade variável (%% total.) # PaymentType PaymentTypeVIR=Transferência bancaria @@ -348,7 +348,7 @@ ChequeNumber=Cheque nº ChequeOrTransferNumber=Cheque/Transferência nº ChequeMaker=Emissor do cheque ChequeBank=Banco do cheque -CheckBank=Check +CheckBank=Verificar NetToBePaid=Neto a pagar PhoneNumber=Tel. FullPhoneNumber=telefone @@ -419,12 +419,12 @@ InvoiceSituationAsk=Invoice following the situation InvoiceSituationDesc=Create a new situation following an already existing one SituationAmount=Situation invoice amount(net) SituationDeduction=Situation subtraction -Progress=Progress -ModifyAllLines=Modify all lines +Progress=Progresso +ModifyAllLines=Modificar todas as linhas CreateNextSituationInvoice=Create next situation NotLastInCycle=This invoice in not the last in cycle and must not be modified. DisabledBecauseNotLastInCycle=The next situation already exists. -DisabledBecauseFinal=This situation is final. +DisabledBecauseFinal=Esta situação é final. CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation. NoSituations=No opened situations -InvoiceSituationLast=Final and general invoice +InvoiceSituationLast=Fatura geral e final diff --git a/htdocs/langs/pt_PT/boxes.lang b/htdocs/langs/pt_PT/boxes.lang index 7bf37e00221..7c35e34c5e4 100644 --- a/htdocs/langs/pt_PT/boxes.lang +++ b/htdocs/langs/pt_PT/boxes.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - boxes BoxLastRssInfos=Informação RSS BoxLastProducts=Últimos %s produtos/serviços -BoxProductsAlertStock=Products in stock alert +BoxProductsAlertStock=Produtos no alerta de stock BoxLastProductsInContract=Últimos %s produtos/serviços contratados BoxLastSupplierBills=Últimas faturas dos fornecedores BoxLastCustomerBills=Últimas faturas a clientes @@ -27,7 +27,7 @@ BoxTitleLastBooks=Os %s últimos Favoritos registados BoxTitleNbOfCustomers=Número de clientes BoxTitleLastRssInfos=As %s últimas notícias de %s BoxTitleLastProducts=Os %s últimos produtos/serviços modificados -BoxTitleProductsAlertStock=Products in stock alert +BoxTitleProductsAlertStock=Produtos no alerta de stock BoxTitleLastCustomerOrders=Last %s customer orders BoxTitleLastModifiedCustomerOrders=Last %s modified customer orders BoxTitleLastSuppliers=Os %s últimos Fornecedores modificados @@ -88,7 +88,7 @@ BoxSuppliersInvoicesPerMonth=Facturas de fornecedores por mês BoxCustomersOrdersPerMonth=Encomendas de clientes por mês BoxSuppliersOrdersPerMonth=Encomendas de Fornecedores por mês BoxProposalsPerMonth=Propostas por mês -NoTooLowStockProducts=Nenhum produto abaixo do limite inferior de stock +NoTooLowStockProducts=Nenhum produto abaixo do limite mínimo de stock BoxProductDistribution=Distribuição de Produtos/Serviços BoxProductDistributionFor=Distribuição de %s para %s ForCustomersInvoices=Facturas de Clientes diff --git a/htdocs/langs/pt_PT/commercial.lang b/htdocs/langs/pt_PT/commercial.lang index 21fd2165145..4e3973d67b1 100644 --- a/htdocs/langs/pt_PT/commercial.lang +++ b/htdocs/langs/pt_PT/commercial.lang @@ -9,9 +9,9 @@ Prospect=Cliente Potencial Prospects=Clientes Potenciais DeleteAction=Eliminar uma Acção NewAction=Nova Acção -AddAction=Criar Acção -AddAnAction=Criar uma Acção -AddActionRendezVous=Criar uma Reunião +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Reunião ConfirmDeleteAction=Está seguro de querer eliminar esta acção? CardAction=Ficha da Acção @@ -44,8 +44,8 @@ DoneActions=Lista de acções realizadas DoneActionsFor=Lista de acções realizadas por %s ToDoActions=Lista de acções incompletas ToDoActionsFor=Lista de acções incompletas de %s -SendPropalRef=Enviar orçamento %s -SendOrderRef=Enviar pedido %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Não aplicável StatusActionToDo=A realizar StatusActionDone=Realizado @@ -62,7 +62,7 @@ LastProspectContactDone=Clientes potenciais contactados DateActionPlanned=Data planificação DateActionDone=Data realização ActionAskedBy=Acção questionada por -ActionAffectedTo=Acção assignada a +ActionAffectedTo=Event assigned to ActionDoneBy=Acção realizada por ActionUserAsk=Registada por ErrorStatusCantBeZeroIfStarted=Se o campo 'Ficha de Realização' tiver dados a acção está em curso, por isso o campo 'Estado' não pode ser 0%%. diff --git a/htdocs/langs/pt_PT/compta.lang b/htdocs/langs/pt_PT/compta.lang index 8098ab7c1d5..c43f8cdc695 100644 --- a/htdocs/langs/pt_PT/compta.lang +++ b/htdocs/langs/pt_PT/compta.lang @@ -4,7 +4,7 @@ AccountancyCard=Ficha Contabilidade Treasury=Tesouraria MenuFinancial=Financeira TaxModuleSetupToModifyRules=Go to Taxes module setup to modify rules for calculation -TaxModuleSetupToModifyRulesLT=Go to Company setup to modify rules for calculation +TaxModuleSetupToModifyRulesLT=Ir para configurar Empresa para modificar as regras de cálculo OptionMode=Opção de Gestão Contabilidade OptionModeTrue=Opção Depósitos/Despesas OptionModeVirtual=Opção Créditos/Dividas @@ -19,8 +19,8 @@ AmountToBeCharged=Montante total a pagar: AccountsGeneral=Contas Gerais Account=Conta Accounts=Contas -Accountparent=Account parent -Accountsparent=Accounts parent +Accountparent=Conta original +Accountsparent=Contas originais BillsForSuppliers=Facturas de Fornecedores Income=Depósitos Outcome=Despesas @@ -33,7 +33,7 @@ AccountingResult=Accounting result Balance=Saldo Debit=Débito Credit=Crédito -Piece=Accounting Doc. +Piece=Doc. Contabilístico Withdrawal=Retirada Withdrawals=Retiradas AmountHTVATRealReceived=Total Recebido @@ -55,7 +55,7 @@ LT1SupplierES=RE purchases VATCollected=IVA Recuperado ToPay=A Pagar ToGet=Para Voltar -SpecialExpensesArea=Area for all special payments +SpecialExpensesArea=Área para todos os pagamentos especiais TaxAndDividendsArea=Área Impostos, gastos sociais e dividendos SocialContribution=Gasto social SocialContributions=Gastos sociais @@ -131,13 +131,13 @@ CalcModeLT1Rec= Mode %sRE on suppliers invoices%s CalcModeLT2= Mode %sIRPF on customer invoices - suppliers invoices%s CalcModeLT2Debt=Mode %sIRPF on customer invoices%s CalcModeLT2Rec= Mode %sIRPF on suppliers invoices%s -AnnualSummaryDueDebtMode=Balance of income and expenses, annual summary -AnnualSummaryInputOutputMode=Balance of income and expenses, annual summary +AnnualSummaryDueDebtMode=Balanço da receita e despesas, resumo anual +AnnualSummaryInputOutputMode=Balanço da receita e despesas, resumo anual AnnualByCompaniesDueDebtMode=Balanço de depósitos e despesas, quebrado por Terceiros, em modo%sCréditos-dividas%s chamada Contabilidade de compromisso. AnnualByCompaniesInputOutputMode=Balanço de depósitos e despesas, quebrado por Terceiros, em modo %sdepositos-despesas%s chamada Contabilidade de Caixa. SeeReportInInputOutputMode=Ver o Relatório %sdepositos-despesas%s chamado Contabilidade de Caixa para um cálculo sobre as facturas pagas SeeReportInDueDebtMode=Ver o Relatório %sCréditos-dividas%s chamada Contabilidade de compromisso para um cálculo das facturas Pendentes de pagamento -RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included +RulesAmountWithTaxIncluded=- Os montantes exibidos contêm todas as taxas incluídas RulesResultDue=- Os montantes mostrados são montantes totais
- Inclui as facturas, gastos e IVA devido, que estão pagas ou não.
- Se baseia na data de validação para as facturas e o IVA e na data de vencimento para as gastos.
RulesResultInOut=- It includes the real payments made on invoices, expenses and VAT.
- It is based on the payment dates of the invoices, expenses and VAT. RulesCADue=- Inclui as facturas a clientes, estejam pagas ou não.
- Se baseia na data de validação das mesmas.
@@ -186,10 +186,10 @@ Pcg_subtype=Pcg subtype InvoiceLinesToDispatch=Invoice lines to dispatch InvoiceDispatched=Dispatched invoices AccountancyDashboard=Accountancy summary -ByProductsAndServices=By products and services +ByProductsAndServices=Por produtos e serviços RefExt=Ref externa ToCreateAPredefinedInvoice=To create a predefined invoice, create a standard invoice then, without validating it, click onto button "Convert to predefined invoice". -LinkedOrder=Link to order +LinkedOrder=Hiperligação para encomendar ReCalculate=Recalcular Mode1=Método 1 Mode2=Método 2 @@ -202,6 +202,6 @@ ACCOUNTING_VAT_ACCOUNT=Default accountancy code for collecting VAT ACCOUNTING_VAT_BUY_ACCOUNT=Default accountancy code for paying VAT ACCOUNTING_ACCOUNT_CUSTOMER=Accountancy code by default for customer thirdparties ACCOUNTING_ACCOUNT_SUPPLIER=Accountancy code by default for supplier thirdparties -CloneTax=Clone a social contribution -ConfirmCloneTax=Confirm the clone of a social contribution -CloneTaxForNextMonth=Clone it for next month +CloneTax=Clonar uma contribuição social +ConfirmCloneTax=Confirme a clonagem de uma contribuição social +CloneTaxForNextMonth=Cloná-la para o mês seguinte diff --git a/htdocs/langs/pt_PT/contracts.lang b/htdocs/langs/pt_PT/contracts.lang index 2c51fe50855..331cdf7a972 100644 --- a/htdocs/langs/pt_PT/contracts.lang +++ b/htdocs/langs/pt_PT/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expirado ServiceStatusClosed=Fechado ServicesLegend=Legenda para os serviços Contracts=contractos +ContractsAndLine=Contracts and line of contracts Contract=Contrato NoContracts=Sem contractos MenuServices=Serviços diff --git a/htdocs/langs/pt_PT/cron.lang b/htdocs/langs/pt_PT/cron.lang index d3cf487ddd2..9c45da9a4da 100644 --- a/htdocs/langs/pt_PT/cron.lang +++ b/htdocs/langs/pt_PT/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Aceda a "Home - Ferramentas dos Módulos" para visualizar e editar as tarefas agendadas. +TaskDisabled=Task disabled diff --git a/htdocs/langs/pt_PT/donations.lang b/htdocs/langs/pt_PT/donations.lang index 7a31ae91628..0c3c915fb2f 100644 --- a/htdocs/langs/pt_PT/donations.lang +++ b/htdocs/langs/pt_PT/donations.lang @@ -4,35 +4,35 @@ Donations=Donativos DonationRef=Ref. do donativo Donor=Doador Donors=Doadores -AddDonation=Create a donation -NewDonation=Nova Doação +AddDonation=Crie uma donativo +NewDonation=Novo Donativo ShowDonation=Mostrar Donativo DonationPromise=Promessa de Doação PromisesNotValid=Promessas Não Validadas PromisesValid=Promessas Validadas -DonationsPaid=Doações Pagas -DonationsReceived=Doações Recebidas -PublicDonation=Doação Pública -DonationsNumber=Número de Doações -DonationsArea=Área de Doações +DonationsPaid=Donativos Pagos +DonationsReceived=Donativos Recebidos +PublicDonation=Donativo Público +DonationsNumber=Número de Donativos +DonationsArea=Área de Donativos DonationStatusPromiseNotValidated=Promessa Não Validada DonationStatusPromiseValidated=Promessa Validada -DonationStatusPaid=Doação Paga +DonationStatusPaid=Donativo Recebido DonationStatusPromiseNotValidatedShort=Não Validada -DonationStatusPromiseValidatedShort=Validada -DonationStatusPaidShort=Paga +DonationStatusPromiseValidatedShort=Validado +DonationStatusPaidShort=Recebido ValidPromess=Validar promessa -DonationReceipt=Recibo do donativo +DonationReceipt=Recibo do Donativo BuildDonationReceipt=Criar Recibo -DonationsModels=Modelo de documento de recepção de Doação -LastModifiedDonations=%s Última modificação doações -SearchADonation=Procure uma doação -DonationRecipient=Destinatário do donativo +DonationsModels=Modelos de documentos dos recibos de donativos +LastModifiedDonations=%s Última modificação de donativos +SearchADonation=Procure um donativo +DonationRecipient=Destinatário do Donativo ThankYou=Obrigado -IConfirmDonationReception=O destinatário acusou a recepção, como um donativo, do seguinte montante -MinimumAmount=Minimum amount is %s -FreeTextOnDonations=Free text to show in footer -FrenchOptions=Options for France +IConfirmDonationReception=O destinatário declarou a recepção, como um donativo, do seguinte montante +MinimumAmount=O montante mínimo é %s +FreeTextOnDonations=Texto livre para mostrar no rodapé +FrenchOptions=Opções para França DONATION_ART200=Show article 200 from CGI if you are concerned DONATION_ART238=Show article 238 from CGI if you are concerned DONATION_ART885=Show article 885 from CGI if you are concerned diff --git a/htdocs/langs/pt_PT/errors.lang b/htdocs/langs/pt_PT/errors.lang index d7d6a8f61f0..6ebfe918305 100644 --- a/htdocs/langs/pt_PT/errors.lang +++ b/htdocs/langs/pt_PT/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=A conta origem e destino devem ser diferentes. ErrorBadThirdPartyName=Nome de Terceiro incorrecto ErrorProdIdIsMandatory=O %s é obrigatório ErrorBadCustomerCodeSyntax=A sintaxis do código cliente é incorrecta -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Código cliente obrigatório ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Código de cliente já utilizado @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript não deve ser desativado para que este r ErrorPasswordsMustMatch=Ambas as senhas digitadas devem corresponder entre si ErrorContactEMail=Um erro técnico ocorreu. Por favor, contacte o administrador para seguir %s e-mail em fornecer os %s código de erro na sua mensagem, ou melhor ainda pela adição de uma cópia de tela da página. ErrorWrongValueForField=Valor errado para o número %s campo (valor "%s" não coincide com %s regra regex) -ErrorFieldValueNotIn=Valor errado para %s campo de número ("%s" de valor não é um valor disponível em %s %s campo de tabela) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Valor errado para %s número de campo ("%s" valor não é um ref %s existente) ErrorsOnXLines=%s sobre as linhas das fontes de erros ErrorFileIsInfectedWithAVirus=O programa antivírus não foi capaz de validar o arquivo (arquivo pode ser infectado por um vírus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Os parâmetros de configuração obrigatórios ainda não estão definidos diff --git a/htdocs/langs/pt_PT/holiday.lang b/htdocs/langs/pt_PT/holiday.lang index 2f8cd8f23f1..63bb32c1033 100644 --- a/htdocs/langs/pt_PT/holiday.lang +++ b/htdocs/langs/pt_PT/holiday.lang @@ -1,30 +1,30 @@ # Dolibarr language file - Source file is en_US - holiday HRM=RH -Holidays=Folgas -CPTitreMenu=Folgas -MenuReportMonth=Monthly statement -MenuAddCP=Faça uma requesição de folgas -NotActiveModCP=Deve ativar o modulo de folgas para ver esta página -NotConfigModCP=Você deve configurar o módulo de folgas para ver esta página. Para fazer isso, click here . -NoCPforUser=Não tem nenhum dia disponivel -AddCP=Faça uma requisição de folga -Employe=Empregado +Holidays=Licenças +CPTitreMenu=Licenças +MenuReportMonth=Comunicado mensal +MenuAddCP=Efetue um pedido de licença +NotActiveModCP=Deve ativar o módulo de Licenças para ver esta página. +NotConfigModCP=Deve configurar o módulo de Licenças para ver esta página. Para o efetuar, clique aqui . +NoCPforUser=Não tem nenhum dia disponivel. +AddCP=Efetue um pedido de licença +Employe=Funcionário DateDebCP=Data de início DateFinCP=Data de fim DateCreateCP=Data de criação DraftCP=Rascunho ToReviewCP=Aguarda aprovação -ApprovedCP=Aprovado -CancelCP=Cancelado -RefuseCP=Recusado -ValidatorCP=Approbator -ListeCP=Lista de folgas -ReviewedByCP=Será analisado por +ApprovedCP=Aprovada +CancelCP=Cancelada +RefuseCP=Recusada +ValidatorCP=Autorizada por +ListeCP=Lista de Licenças +ReviewedByCP=Será revista por DescCP=Descrição -SendRequestCP=Criar requisição de folga -DelayToRequestCP=Requisição de folga de ser feita pelo menos %s dia(s) antes de. -MenuConfCP=Editar balanço de folgas -UpdateAllCP=Atualisar folgas +SendRequestCP=Criar requisição de licença +DelayToRequestCP=Os pedidos de licença devem ser efetuados com pelo menos %s dia(s) de antecedência. +MenuConfCP=Editar balanço das licenças +UpdateAllCP=Atualize as licenças SoldeCPUser=Balanço de folgas é %s dias ErrorEndDateCP=You must select an end date greater than the start date. ErrorSQLCreateCP=Ocorreu um erro de SQL durante a criação: diff --git a/htdocs/langs/pt_PT/install.lang b/htdocs/langs/pt_PT/install.lang index 2a038935c53..e281ee14d50 100644 --- a/htdocs/langs/pt_PT/install.lang +++ b/htdocs/langs/pt_PT/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Último passo: Defina aqui o login ea senha que vo ActivateModule=Ative o módulo %s ShowEditTechnicalParameters=Clique aqui para mostrar/editar os parâmetros avançados (modo avançado) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/pt_PT/languages.lang b/htdocs/langs/pt_PT/languages.lang index 473dd490106..67f384c4152 100644 --- a/htdocs/langs/pt_PT/languages.lang +++ b/htdocs/langs/pt_PT/languages.lang @@ -13,7 +13,7 @@ Language_de_AT=Alemão (Áustria) Language_de_CH=Alemão (Suíça) Language_el_GR=Grego Language_en_AU=Inglês (Austrália) -Language_en_CA=English (Canada) +Language_en_CA=Inglês (Canadá) Language_en_GB=Inglês (Reino Unido) Language_en_IN=Inglês (Índia) Language_en_NZ=Inglês (Nova Zelândia) diff --git a/htdocs/langs/pt_PT/main.lang b/htdocs/langs/pt_PT/main.lang index 23c51af82a8..b017d2c856e 100644 --- a/htdocs/langs/pt_PT/main.lang +++ b/htdocs/langs/pt_PT/main.lang @@ -141,6 +141,7 @@ Cancel=Cancelar Modify=Modificar Edit=Editar Validate=Validar +ValidateAndApprove=Validate and Approve ToValidate=Para validar Save=Guardar SaveAs=Guardar Como @@ -158,6 +159,7 @@ Search=Procurar SearchOf=Procurar Valid=Confirmar Approve=Aprovar +Disapprove=Disapprove ReOpen=Reabrir Upload=Enviar Ficheiro ToLink=Link @@ -219,6 +221,7 @@ Cards=Fichas Card=Ficha Now=Ahora Date=Data +DateAndHour=Date and hour DateStart=Data de Início DateEnd=Data de Fim DateCreation=Data de Criação @@ -295,6 +298,7 @@ UnitPriceHT=Preço Base (base) UnitPriceTTC=Preço Unitário PriceU=P.U. PriceUHT=P.U. (base) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=P.U. Amount=Montante AmountInvoice=Montante da Fatura @@ -521,6 +525,7 @@ DateFromTo=De %s a %s DateFrom=A partir de %s DateUntil=Até %s Check=Verificar +Uncheck=Uncheck Internal=Interno External=Externo Internals=Internos @@ -688,6 +693,7 @@ PublicUrl=URL público AddBox=Adicionar Caixa SelectElementAndClickRefresh=Selecione um elemento e actualize a pagina PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Segunda-feira Tuesday=Terça-feira diff --git a/htdocs/langs/pt_PT/orders.lang b/htdocs/langs/pt_PT/orders.lang index 781be21e4db..31dde51f16a 100644 --- a/htdocs/langs/pt_PT/orders.lang +++ b/htdocs/langs/pt_PT/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Anulado StatusOrderDraft=Rascunho (a Confirmar) StatusOrderValidated=Validado StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Processado StatusOrderToBill=A Facturar StatusOrderToBill2=A facturar @@ -58,6 +59,7 @@ MenuOrdersToBill=Pedidos por Facturar MenuOrdersToBill2=Billable orders SearchOrder=Procurar um Pedido SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Enviar Produto Discount=Desconto CreateOrder=Criar Pedido diff --git a/htdocs/langs/pt_PT/other.lang b/htdocs/langs/pt_PT/other.lang index 6df1475eb17..764d37222a5 100644 --- a/htdocs/langs/pt_PT/other.lang +++ b/htdocs/langs/pt_PT/other.lang @@ -54,12 +54,13 @@ MaxSize=Tamanho Máximo AttachANewFile=Adicionar Novo Ficheiro/documento LinkedObject=Objecto adjudicado Miscellaneous=Diversos -NbOfActiveNotifications=Número Notificações +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Este é um email de teste. \\ NO duas linhas são separadas por um enter. PredefinedMailTestHtml=Este é um email de teste (o teste de palavra deve ser em negrito).
As duas linhas são separadas por um enter. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/pt_PT/productbatch.lang b/htdocs/langs/pt_PT/productbatch.lang index ff72b80058d..c65bb2b7247 100644 --- a/htdocs/langs/pt_PT/productbatch.lang +++ b/htdocs/langs/pt_PT/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Número de Lote/Série l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Detalhes de Lote/Série -DetailBatchFormat=Lote/Série: %s - E:%s - S: %s (Qt. : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Lote: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/pt_PT/products.lang b/htdocs/langs/pt_PT/products.lang index 15842116ed5..a543f3549d6 100644 --- a/htdocs/langs/pt_PT/products.lang +++ b/htdocs/langs/pt_PT/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/pt_PT/projects.lang b/htdocs/langs/pt_PT/projects.lang index f969b074f3f..31d5119f907 100644 --- a/htdocs/langs/pt_PT/projects.lang +++ b/htdocs/langs/pt_PT/projects.lang @@ -3,13 +3,15 @@ RefProject=Ref. do projeto ProjectId=Id. do Projeto Project=Projeto Projects=Projetos -ProjectStatus=Project status +ProjectStatus=Estado do projeto SharedProject=Toda a Gente PrivateProject=Contactos do projeto MyProjectsDesc=Esta visualização está limitada a projetos onde é um contacto para (seja qual for o tipo). ProjectsPublicDesc=Esta visualização apresenta todos os projetos que está autorizado a ler. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Esta visualização apresenta todos os projetos (as suas permissões de utilizador concedem-lhe a permissão para ver tudo). MyTasksDesc=Esta visualização está limitada aos projetos ou tarefas em que é um contacto para (seja qual for o tipo). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Esta visualização apresenta todos os projetos e tarefas que está autorizado a ler. TasksDesc=Esta visualização apresenta todos os projetos e tarefas (as suas permissões de utilizador concedem-lhe permissão para ver tudo). ProjectsArea=Área de Projetos @@ -29,6 +31,8 @@ NoProject=Nenhum projeto definido ou possuído NbOpenTasks=Nr. de Tarefas Abertas NbOfProjects=Nr. de Projetos TimeSpent=Tempo Dispendido +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Tempos Dispendidos RefTask=Ref. da Tarefa LabelTask=Etiqueta de Tarefa @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Lista de Pedidos a Fornecedores Associados a ListSupplierInvoicesAssociatedProject=Lista de Faturas de Fornecedores Associados ao Projeto ListContractAssociatedProject=Lista de Contratos Associados ao Projeto ListFichinterAssociatedProject=Lista de intervenções associadas ao projeto -ListTripAssociatedProject=Lista de viagens e despesas associadas ao projeto +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Lista de eventos associados ao projeto ActivityOnProjectThisWeek=Atividade do Projeto nesta Semana ActivityOnProjectThisMonth=Actividade do Projecto neste Mês @@ -87,7 +91,7 @@ ActionsOnProject=Ações sobre o projeto YouAreNotContactOfProject=Não é um contato deste projeto privado DeleteATimeSpent=Excluir o tempo gasto ConfirmDeleteATimeSpent=Tem certeza que quer eliminar este tempo dispensado? -DoNotShowMyTasksOnly=See also tasks not assigned to me +DoNotShowMyTasksOnly=Ver também as tarefas não me atribuidas ShowMyTasksOnly=Ver só as tarefas que me foram atribuídas TaskRessourceLinks=Recursos ProjectsDedicatedToThisThirdParty=Projetos dedicados a este terceiro @@ -103,9 +107,9 @@ CloneContacts=Clonar contactos CloneNotes=Clonar notas CloneProjectFiles=Clone project joined files CloneTaskFiles=Clone task(s) joined files (if task(s) cloned) -CloneMoveDate=Update project/tasks dates from now ? +CloneMoveDate=Atualizar as datas do projeto/tarefas a partir de agora? ConfirmCloneProject=Tem a certeza para clonar este projeto? -ProjectReportDate=Change task date according project start date +ProjectReportDate=Alterar a data da tarefa de acordo com a data de início do projeto ErrorShiftTaskDate=Impossible to shift task date according to new project start date ProjectsAndTasksLines=Projetos e tarefas ProjectCreatedInDolibarr=Projeto %s criado @@ -130,6 +134,9 @@ PlannedWorkload = Carga de trabalho planeada WorkloadOccupation= Afectação da carga de trabalho ProjectReferers=Refering objects SearchAProject=Procurar um projeto -ProjectMustBeValidatedFirst=Project must be validated first +ProjectMustBeValidatedFirst=Primeiro deve validar o projeto ProjectDraft=Esboço de projetos FirstAddRessourceToAllocateTime=Associar um recuirso para alocar a hora +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/pt_PT/salaries.lang b/htdocs/langs/pt_PT/salaries.lang index 5966b69f13b..9c699574cc0 100644 --- a/htdocs/langs/pt_PT/salaries.lang +++ b/htdocs/langs/pt_PT/salaries.lang @@ -10,3 +10,4 @@ SalariesPayments=Pagamentos de Salários ShowSalaryPayment=Mostrar pagamento de salário THM=Preço médio da hora TJM=Preço médio diário +CurrentSalary=Current salary diff --git a/htdocs/langs/pt_PT/sendings.lang b/htdocs/langs/pt_PT/sendings.lang index ad26c2228cd..ca9bf9bce91 100644 --- a/htdocs/langs/pt_PT/sendings.lang +++ b/htdocs/langs/pt_PT/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Quant. Pedida QtyShipped=Quant. Enviada QtyToShip=Quant. a Enviar QtyReceived=Quant. Recebida -KeepToShip=Manter por Enviar +KeepToShip=Remain to ship OtherSendingsForSameOrder=Outros Envios deste Pedido DateSending=Data de Expedição DateSendingShort=Data de Expedição diff --git a/htdocs/langs/pt_PT/stocks.lang b/htdocs/langs/pt_PT/stocks.lang index 7211c46b431..d3fda31b63e 100644 --- a/htdocs/langs/pt_PT/stocks.lang +++ b/htdocs/langs/pt_PT/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Valor (PMP) PMPValueShort=PMP EnhancedValueOfWarehouses=Valor de stocks UserWarehouseAutoCreate=Criar existencias automáticamente na criação de um utilizador +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Quantidade desagregada QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=Para este armazém ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/pt_PT/suppliers.lang b/htdocs/langs/pt_PT/suppliers.lang index 1e0e55d1422..b57b823e0fd 100644 --- a/htdocs/langs/pt_PT/suppliers.lang +++ b/htdocs/langs/pt_PT/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Fornecedores -Supplier=Fornecedor AddSupplier=Create a supplier SupplierRemoved=Fornecedor Eliminado SuppliersInvoice=Facturas do Fornecedor @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Facturas Fornecedores e Pagamentos ExportDataset_fournisseur_3=Pedidos a fornecedores e linhas de pedido ApproveThisOrder=Aprovar este Pedido ConfirmApproveThisOrder=Está seguro de querer aprovar este pedido? -DenyingThisOrder=Negar este Pedido +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Está seguro de querer negar este pedido? ConfirmCancelThisOrder=Está seguro de querer cancelar este pedido? AddCustomerOrder=Criar Pedido do Cliente diff --git a/htdocs/langs/pt_PT/trips.lang b/htdocs/langs/pt_PT/trips.lang index 09f269a57e1..1733fe86dc2 100644 --- a/htdocs/langs/pt_PT/trips.lang +++ b/htdocs/langs/pt_PT/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Deslocação -Trips=Deslocações -TripsAndExpenses=Deslocações e Despesas -TripsAndExpensesStatistics=Viagens e estatísticas despesas -TripCard=Ficha de Deslocação -AddTrip=Adicionar Deslocação -ListOfTrips=Lista de Deslocações +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Lista de Taxas -NewTrip=Nova Deslocação +NewTrip=New expense report CompanyVisited=Empresa/Instituição Visitada Kilometers=Quilómetros FeesKilometersOrAmout=Quantidade de Quilómetros -DeleteTrip=Eliminar Deslocação -ConfirmDeleteTrip=Deseja mesmo eliminar esta deslocação? -TF_OTHER=Outro -TF_LUNCH=Alimentação -TF_TRIP=Viagem -ListTripsAndExpenses=Lista de viagens e despesas -ExpensesArea=Viagens e área de despesas -SearchATripAndExpense=Procure uma viagem e despesas +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Outro +TF_TRANSPORTATION=Transportation +TF_LUNCH=Alimentação +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/ro_RO/admin.lang b/htdocs/langs/ro_RO/admin.lang index ed875d3ec11..d91192821e9 100644 --- a/htdocs/langs/ro_RO/admin.lang +++ b/htdocs/langs/ro_RO/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimental VersionDevelopment=Dezvoltare VersionUnknown=Necunoscut VersionRecommanded=Recomandat +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=ID Sesiune SessionSaveHandler=Handler pentru a salva sesiunile SessionSavePath=Storage sesiune localizare @@ -294,7 +299,7 @@ DoNotUseInProduction=Nu utilizaţi în producţie ThisIsProcessToFollow=Acesta este procesul de configurare pentru a: StepNb=Pasul %s FindPackageFromWebSite=Găsiţi un pachet care ofera facilitate dorit (de exemplu, pe site-ul web %s). -DownloadPackageFromWebSite=Download package %s. +DownloadPackageFromWebSite=Descărcaţi pachetul %s. UnpackPackageInDolibarrRoot=Unpack pachet de fişiere în directorul rădăcină Dolibarr lui %s SetupIsReadyForUse=Instalarea este terminat şi Dolibarr este gata pentru a fi utilizate cu această nouă componentă. NotExistsDirect=Nu este definit directorroot alternativ.
@@ -383,12 +388,12 @@ ExtrafieldSelectList = Select din tabel ExtrafieldSeparator=Separator ExtrafieldCheckBox=Checkbox ExtrafieldRadio=Radio buton -ExtrafieldCheckBoxFromList= Checkbox from table +ExtrafieldCheckBoxFromList= Checkbox din tabel ExtrafieldParamHelpselect=Lista de parametri trebuie să fie ca cheie, valoare

pentru exemplul:
1, valoare1
2, valoare2
3, value3
...

Pentru a avea listă în funcție de o alta:
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key ExtrafieldParamHelpcheckbox=Lista de parametri trebuie să fie de tip cheie, valoare

pentru exemplul:
1, valoare1
2, valoare2
3, value3
... ExtrafieldParamHelpradio=Lista de parametri trebuie să fie de tip cheie, valoare

pentru exemplul:
1, valoare1
2, valoare2
3, value3
... ExtrafieldParamHelpsellist=Lista de parametri a venit de la tabelul
Sintaxa: able_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filtru poate fi un test simplu (de exemplu, activ = 1), pentru a afișa doar valoare activă
dacă doriți să filtrați pe extracâmpuri folosi sintaxa extra.fieldcode=... (unde codul de câmp este codul de extracâmp)

În scopul de avea lista depinzând de alta :
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelpchkbxlst=Lista de parametri a venit de la tabelul
Sintaxa: able_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filtru poate fi un test simplu (de exemplu, activ = 1), pentru a afișa doar valoare activă
dacă doriți să filtrați pe extracâmpuri folosi sintaxa extra.fieldcode=... (unde codul de câmp este codul de extracâmp)

În scopul de avea lista depinzând de alta :
c_typent:libelle:id:parent_list_code|parent_column:filter LibraryToBuildPDF=Librairie utilizată la construirea PDF ului WarningUsingFPDF=Atenție: conf.php contine Directiva dolibarr_pdf_force_fpdf = 1. Acest lucru înseamnă că utilizați biblioteca FPDF pentru a genera fișiere PDF. Această bibliotecă este vechi și nu suportă o mulțime de caracteristici (Unicode, transparența imagine, cu litere chirilice, limbi arabe și asiatice, ...), astfel încât este posibil să apară erori în timpul generație PDF.
Pentru a rezolva acest lucru și au un suport complet de generare PDF, vă rugăm să descărcați
biblioteca TCPDF , atunci comentariu sau elimina linia $ dolibarr_pdf_force_fpdf = 1, și se adaugă în schimb $ dolibarr_lib_TCPDF_PATH = 'path_to_TCPDF_dir' LocalTaxDesc=Unele țări aplică 2 sau 3 impozite la fiecare linie de factura. Dacă este cazul, alege tipul al doilea și al treilea de taxă și ratele lor. Tipuri posibile sunt:
1: Taxa hoteliera se aplică pe produse și servicii, fără TVA (TVA nu este aplicată la taxa locala)
2: taxa locala pe produse și servicii fără TVA (TVA-ul este calculat la suma + localtax)
3: Taxa locală se aplică la produsele fara TVA (TVA nu se aplică la taxa locala)
4: Taxa locală se aplică la produsele fără TVA (TVA-ul este calculat la suma + localtax)
5: Taxa locală se aplică pe servicii fara TVA (TVA nu este aplicată la taxa locala)
6: Taxa locală se aplică pe servicii fără TVA (TVA-ul este calculat la suma + localtax) @@ -493,10 +498,16 @@ Module600Name=Notificări Module600Desc=Trimite notificări prin email la unele evenimente de afaceri Dolibarr la contactele terților (configurare definită pe fiecare terţ) Module700Name=Donatii Module700Desc=MAnagementul Donaţiilor +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integrare Module1400Name=Contabilitate Module1400Desc=Management Contabilitate de gestiune (partidă dublă) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Categorii Module1780Desc=Categorii de "management (produse, furnizori şi clienţi) Module2000Name=Fckeditor @@ -575,7 +586,7 @@ Permission67=Export intervenţii Permission71=Citeşte membrii Permission72=Creare / Modificare membri Permission74=Ştergere membri -Permission75=Setup types of membership +Permission75=Configurare tipuri membri Permission76=Export Date Permission78=Citeşte abonamente Permission79=Creare / Modificare abonamente @@ -598,8 +609,8 @@ Permission106=Export livrări Permission109=Ştergere sendings Permission111=Citeşte conturile financiare Permission112=Crea / modifica / delete şi compara tranzacţiile -Permission113=Setup financial accounts (create, manage categories) -Permission114=Reconciliate transactions +Permission113=Configurare conturi financiare( creare, gestionare categorii) +Permission114=Tranzactii Reconciliate Permission115=Tranzacţii de export şi în declaraţiile Permission116=Transferuri între conturile Permission117=Gestionare cecuri de expediţie @@ -631,7 +642,7 @@ Permission181=Citeşte furnizor ordinelor Permission182=Creare / Modificare furnizor ordinelor Permission183=Validate furnizor ordinelor Permission184=Aprobaţi furnizor ordinelor -Permission185=Comanda furnizor ordinelor +Permission185=Order or cancel supplier orders Permission186=Furnizor de a primi comenzi Permission187=Inchide furnizor ordinelor Permission188=Anulare furnizor ordinelor @@ -711,6 +722,13 @@ Permission538=Exportul de servicii Permission701=Citiţi donaţii Permission702=Creare / Modificare donaţii Permission703=Ştergere donaţii +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Citeşte stocuri Permission1002=Creare / modificare depozite Permission1003=Ștergere depozite @@ -764,7 +782,7 @@ Permission55001=Cieşte sondaje Permission55002=Creare / Modificare sondaje Permission59001=Citeşte marje comerciale Permission59002=Defineşte marje comerciale -Permission59003=Read every user margin +Permission59003=Citeşte marjele fiecarui utilizator DictionaryCompanyType=Tip Terţ DictionaryCompanyJuridicalType=Tipuri juridice terţi DictionaryProspectLevel=Nivel potenţial Prospect @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Parolă pentru a utiliza server proxy DefineHereComplementaryAttributes=Definiţi aici toate atributele, care nu sunt deja disponibile în mod implicit, şi că doriţi să fie sprijinite pentru %s. ExtraFields=Atribute complementare ExtraFieldsLines=Atribute complementare (linii) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Atribute complementare ( terţi) ExtraFieldsContacts=Atribute complementare (contact/addresă ) ExtraFieldsMember=Atribute complementare (membri) @@ -1042,7 +1062,7 @@ SendingMailSetup=Setup de trimiteri prin e-mail SendmailOptionNotComplete=Atenţie, pe unele sisteme Linux, pentru a trimite e-mail de la e-mail, sendmail configurare execuţie trebuie să conatins optiunea-ba (mail.force_extra_parameters parametri în fişierul php.ini). Dacă nu unor destinatari a primi e-mailuri, încercaţi să editaţi acest parametru PHP cu mail.force_extra_parameters =-BA). PathToDocuments=Cale de acces documente PathDirectory=Director -SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail direct" will generate a mail message that might be not correctly parsed by some receiving mail servers. Result is that some mails can't be read by people hosted by those bugged platforms. It's case for some Internet providers (Ex: Orange in France). This is not a problem into Dolibarr nor into PHP but onto receiving mail server. You can however add option MAIN_FIX_FOR_BUGGED_MTA to 1 into setup - other to modify Dolibarr to avoid this. However, you may experience problem with other servers that respect strictly the SMTP standard. The other solution (recommended) is to use the method "SMTP socket library" that has no disadvantages. +SendmailOptionMayHurtBuggedMTA=Functionalitate pentru a trimite mesaje utilizând metoda "mail PHP direct" va genera un mesaj e-mail care nu s-ar putea să fie corect interpretat de către unele servere de e-mail . Rezultatul este că unele mail-uri nu pot fi citite de unele persoane . Este cazul unor furnizori de Internet (Ex: Orange în Franţa). Aceasta nu este o problemă în Dolibarr nici în PHP, dar primesc pe serverul de poştă electronică. Puteţi adăuga toate acestea, opţiunea MAIN_FIX_FOR_BUGGED_MTA la 1 în configurare - pentru a modifica alte Dolibarr pentru a evita acest lucru. Cu toate acestea, este posibil să aveţi probleme cu alte servere care sens strict standard SMTP. Altă soluţie (recommanded) este de a utiliza metoda "SMTP socket bibliotecă", care nu are dezavantaje. TranslationSetup=Configurarea traducerii TranslationDesc=Alegerea limbiilor vizibile pe ecran pot fi modificate:
* La nivel global din meniul Home - Configurare - Afişare
* Pe utilizator numai ,la Tabul Afișare utilizator al fişei de utilizator (click pe login din partea de sus a ecranului). TotalNumberOfActivatedModules=Numărul total al modulelor funcţionale activate: %s @@ -1061,7 +1081,7 @@ BrowserIsOK=Folosiţi navigatorul web %s. Acest navigator este ok pentru perform BrowserIsKO=Folosiţi browser-ul % s. Acest browser-ul pare a fi o alegere proasta pentru securitate, performanță și fiabilitate. Noi recomandam sa folositi Firefox, Chrome, Opera sau Safari. XDebugInstalled=XDebug este încărcat. XCacheInstalled=XCache este încărcată. -AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". +AddRefInList=Afișează ref client / furnizor în lista (listă select sau combobox) și mai multe hyperlinkuri. Terții vor apare cu numele "CC12345 - SC45678 - The big company coorp", în loc de "The big company coorp". FieldEdition=Editarea campului %s FixTZ=Fixează TimeZone FillThisOnlyIfRequired=Exemplu: +2 (completați numai dacă problemele decalajjului fusului orar sunt cunoscute) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=O linie de produse / servicii cu o suma de zero este c FreeLegalTextOnProposal=Text liber pe ofertele comerciale WatermarkOnDraftProposal=Filigranul pe ofertele comerciale schiţă (niciunul daca e gol) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Cere contul bancar destinație al ofertei +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Ordinele de gestionare setup OrdersNumberingModules=Ordinele de numerotare module @@ -1161,7 +1188,7 @@ ValidOrderAfterPropalClosed=Pentru a valida comanda după închiderea ofertei, FreeLegalTextOnOrders=Free text de pe ordinele de WatermarkOnDraftOrders=Filigranul pe comenzile schiţă (niciunul daca e gol) ShippableOrderIconInList=Adaugă un icon în lista Comenzilor care indica daca comanda este expediabilă -BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ask for bank account destination of order +BANK_ASK_PAYMENT_BANK_DURING_ORDER=Cere contul bancar destinație al comenzii ##### Clicktodial ##### ClickToDialSetup=Click pentru a Dial modul setup ClickToDialUrlDesc=Url called when a click on phone picto is done. Dans l'url, vous pouvez utiliser les balises
__PHONETO__ qui sera remplac� par le t�l�phone de l'appel�
__PHONEFROM__ qui sera remplac� par le t�l�phone de l'appelant (le votre)
__LOGIN__ qui sera remplac� par votre login clicktodial (d�fini sur votre fiche utilisateur)
__PASS__ qui sera remplac� par votre mot de passe clicktodial (d�fini sur votre fiche utilisateur). @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Coduri de bare de tip UPC BarcodeDescISBN=Coduri de bare de tip ISBN BarcodeDescC39=Coduri de bare de tip C39 BarcodeDescC128=Coduri de bare de tip C128 -GenbarcodeLocation=Coduri de bare generaţie în linie de comandă (utilizat de către phpbarcode motor pentru anumite tipuri de coduri de bare) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Motor intern BarCodeNumberManager=Manager pentru autodefinire numere coduri bare ##### Prelevements ##### @@ -1397,7 +1424,7 @@ RSSUrlExample=Un interesant RSS feed MailingSetup=Să trimiteţi un email la modul de instalare MailingEMailFrom=Expeditorul e-mail (la) pentru e-mail-uri trimise prin email-uri de module MailingEMailError=Întoarcere Email (Erori-a) pentru e-mailuri cu erori -MailingDelay=Seconds to wait after sending next message +MailingDelay=Secunde de asteptare pentru trimiterea urmatorului mesaj ##### Notification ##### NotificationSetup=Configurare Modul Notificări Email NotificationEMailFrom=Expeditorul e-mail (la) pentru e-mail-uri trimise pentru notificări @@ -1407,9 +1434,9 @@ FixedEmailTarget=Targhet email fixat SendingsSetup=Trimiterea de modul de configurare SendingsReceiptModel=Trimiterea primirea model SendingsNumberingModules=Trimiteri de numerotare module -SendingsAbility=Support shipment sheets for customer deliveries +SendingsAbility=Avize expediere suport pentru livrari clienti NoNeedForDeliveryReceipts=În cele mai multe cazuri, sendings încasări sunt utilizate atât ca foi de client pentru livrări (lista de produse pentru a trimite) şi foi de faptul că este recevied şi semnat de către client. Deci, livrările de produse încasări este un duplicat caracteristică şi este rareori activat. -FreeLegalTextOnShippings=Free text on shipments +FreeLegalTextOnShippings=Text liber pe livrari ##### Deliveries ##### DeliveryOrderNumberingModules=Produse livrările primirea modul de numerotare DeliveryOrderModel=Produse livrările primirea model @@ -1420,7 +1447,7 @@ AdvancedEditor=Editor avansat ActivateFCKeditor=Activaţi FCKeditor pentru: FCKeditorForCompany=WYSIWIG crearea / editie a companiilor şi de note descriere FCKeditorForProduct=WYSIWIG crearea / editie a produselor / serviciilor "descrierea şi nota -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 formating when building PDF files. +FCKeditorForProductDetails=WYSIWIG creare / editare detalii linii de produse pentru toate entităţile (propuneri, comenzilor, facturilor, etc ..) Atenţie: Folosind această opţiune nu este recommanda deoarece astfel pot apare probleme la caracterele speciale şi paginare atunci când se creaza fişiere PDF. FCKeditorForMailing= WYSIWIG crearea / ediţie de mailing FCKeditorForUserSignature=Creare/editare WYSIWIG a semnăturii utilizatorilor FCKeditorForMail=Creare/editare WYSIWIG a tuturor emailurilor (exceptând Outils->eMailing) @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Terț generic implicit utilizat pentru vânzări CashDeskBankAccountForSell=Case de cont pentru a utiliza pentru vinde CashDeskBankAccountForCheque= Cont pentru a utiliza pentru a primi plăţi prin cec CashDeskBankAccountForCB= Cont pentru a folosi pentru a primi plăţi în numerar de carduri de credit -CashDeskDoNotDecreaseStock=Dezactivați scădere stoc atunci când o vinzare se face de la Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Forţează și limitează depozitul să folosească scăderea stocului StockDecreaseForPointOfSaleDisabled=Scădere stoc de la Point of Sale dezactivat +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=Nu ai dezactivați scăderea de stocului atunci când se face o vinzare de la Point Of Sale. Astfel, este necesar un depozit. ##### Bookmark ##### BookmarkSetup=Bookmark modul de configurare @@ -1568,4 +1596,8 @@ SalariesSetup=Configurare modul salarii SortOrder=Ordine sortare Format=Format TypePaymentDesc=0:Tip plata Client, 1:Tip plata Furnizor, 2:Ambele tipuri plata Client sau Furnizor -IncludePath=Include path (defined into variable %s) +IncludePath=Include calea (definita in variabila %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/ro_RO/agenda.lang b/htdocs/langs/ro_RO/agenda.lang index 8f109cb5e98..50ca3ae994c 100644 --- a/htdocs/langs/ro_RO/agenda.lang +++ b/htdocs/langs/ro_RO/agenda.lang @@ -69,7 +69,7 @@ DateActionDoneEnd= Data reală a terminării DateActionStart= Data începerii DateActionEnd= Data terminării AgendaUrlOptions1=Puteţi, de asemenea, să adăugaţi următorii parametri pentru filtrarea rezultatelor: -AgendaUrlOptions2=login=%s to restrict output to actions created by or assigned to user %s. +AgendaUrlOptions2=login=%s ​​pentru a limita exportul de acțiuni create de, sau atribuite utilizatorului%s. AgendaUrlOptions3=logind=%s ​​pentru a limita exportul de acțiuni deţinute de utilizatorul %s AgendaUrlOptions4=logint=% s ​​pentru a limita exportul de acțiuni atribuite utilizatorului % s. AgendaUrlOptionsProject=project=PROJECT_ID pentru a limita exportul de acțiuni asociate la proiectul PROJECT_ID. diff --git a/htdocs/langs/ro_RO/banks.lang b/htdocs/langs/ro_RO/banks.lang index ce9ea8d39b4..c090ed31326 100644 --- a/htdocs/langs/ro_RO/banks.lang +++ b/htdocs/langs/ro_RO/banks.lang @@ -8,7 +8,7 @@ FinancialAccount=Cont FinancialAccounts=Conturi BankAccount=Cont bancar BankAccounts=Conturi bancare -ShowAccount=Show Account +ShowAccount=Arată Cont AccountRef=Contul financiar ref AccountLabel=Contul financiar etichetă CashAccount=Cont Casa @@ -33,7 +33,11 @@ AllTime=De la inceput Reconciliation=Reconciliere RIB=Număr Cont Bancă IBAN=Cod IBAN +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=Cod BIC / SWIFT +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Ordine de plată StandingOrder=Ordin plată Withdrawals=Retrageri @@ -148,7 +152,7 @@ BackToAccount=Inapoi la cont ShowAllAccounts=Arată pentru toate conturile FutureTransaction=Tranzacţie viitoare. In nici un caz de decontat. SelectChequeTransactionAndGenerate=Selectaţi/ filtraţi cecurile pentru a le include în borderoul de remise şi faceţi clic pe "Crează". -InputReceiptNumber=Alegeți extrasul de cont privitor la conciliere. Folosiţi o valoare numerică sortabile (cum ar fi, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=În cele din urmă, precizează o categorie în care să clasezi înregistrările ToConciliate=De decontat ? ThenCheckLinesAndConciliate=Apoi, verifică liniile prezente în extrasul de bancă şi click diff --git a/htdocs/langs/ro_RO/bills.lang b/htdocs/langs/ro_RO/bills.lang index 5885b7a76a8..2365a67dac4 100644 --- a/htdocs/langs/ro_RO/bills.lang +++ b/htdocs/langs/ro_RO/bills.lang @@ -412,19 +412,19 @@ TypeContact_invoice_supplier_external_BILLING=Contact facturare furnizor TypeContact_invoice_supplier_external_SHIPPING=Contact livrare furnizor TypeContact_invoice_supplier_external_SERVICE=Contact service furnizor # Situation invoices -InvoiceFirstSituationAsk=First situation invoice -InvoiceFirstSituationDesc=The situation invoices are tied to situations related to a progression, for example the progression of a construction. Each situation is tied to an invoice. +InvoiceFirstSituationAsk=Situatie initiala factura +InvoiceFirstSituationDesc= Situația facturilor este legata de situații legate de o progresie, de exemplu progresia unei construcții. Fiecare situație este legată de o factură. InvoiceSituation=Situatie factura -InvoiceSituationAsk=Invoice following the situation -InvoiceSituationDesc=Create a new situation following an already existing one -SituationAmount=Situation invoice amount(net) -SituationDeduction=Situation subtraction +InvoiceSituationAsk=Factura urmarind situatia +InvoiceSituationDesc=Creaza o situatie noua urmarind una existenta deja +SituationAmount=Situatie valoare(neta) factura +SituationDeduction=Situatie scadere Progress=Progres ModifyAllLines=Modifica toate liniile CreateNextSituationInvoice=Creaza urmatoarea situatie -NotLastInCycle=This invoice in not the last in cycle and must not be modified. +NotLastInCycle=Aceasta factura ce nu se afla in ultimul ciclu si nu poate fi modificata, DisabledBecauseNotLastInCycle=URmatoarea situatie deja exista DisabledBecauseFinal=Aceasta situatie este finala -CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation. +CantBeLessThanMinPercent=Progresul nu poate fi mai mic decat valoarea lui in precedenta situatie NoSituations=Nicio situatie deschisa InvoiceSituationLast=Factura finala si generala diff --git a/htdocs/langs/ro_RO/commercial.lang b/htdocs/langs/ro_RO/commercial.lang index 78eb9aecfc7..14370ebe680 100644 --- a/htdocs/langs/ro_RO/commercial.lang +++ b/htdocs/langs/ro_RO/commercial.lang @@ -62,7 +62,7 @@ LastProspectContactDone=Prospecte contactate DateActionPlanned=Dată realizare prevăzută DateActionDone=Dată realizare efectivă ActionAskedBy=Eveniment înregistrat de -ActionAffectedTo=Evenimente aparţinând de +ActionAffectedTo=Event assigned to ActionDoneBy=Eveniment realizat de către ActionUserAsk=Raportat de ErrorStatusCantBeZeroIfStarted=Dacă câmpul "Data reală debut realizare" este completat, acţiunea este începută (sau terminată), astfel câmpul "Status" nu poate fi 0%%. diff --git a/htdocs/langs/ro_RO/compta.lang b/htdocs/langs/ro_RO/compta.lang index e400f9eab79..71204246fb0 100644 --- a/htdocs/langs/ro_RO/compta.lang +++ b/htdocs/langs/ro_RO/compta.lang @@ -29,7 +29,7 @@ ReportTurnover=Cifra de afaceri PaymentsNotLinkedToInvoice=Plăţile nu sunt legate de orice factură, astfel încât nu au legătură cu o terţă parte PaymentsNotLinkedToUser=Plăţile nu sunt legate de orice utilizator Profit=Profit -AccountingResult=Accounting result +AccountingResult=Rezultatl contabil Balance=Sold Debit=Debit Credit=Credit diff --git a/htdocs/langs/ro_RO/contracts.lang b/htdocs/langs/ro_RO/contracts.lang index c90c961b9b9..7f300527533 100644 --- a/htdocs/langs/ro_RO/contracts.lang +++ b/htdocs/langs/ro_RO/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expirat ServiceStatusClosed=Închis ServicesLegend=Legendă Servicii Contracts=Contracte +ContractsAndLine=Contracts and line of contracts Contract=Contract NoContracts=Niciun contract MenuServices=Servicii diff --git a/htdocs/langs/ro_RO/cron.lang b/htdocs/langs/ro_RO/cron.lang index 173adce646a..381d59c19bc 100644 --- a/htdocs/langs/ro_RO/cron.lang +++ b/htdocs/langs/ro_RO/cron.lang @@ -14,8 +14,8 @@ URLToLaunchCronJobs=URL-ul pentru a verifica și a lansa joburi cron, dacă este OrToLaunchASpecificJob=Sau pentru a verifica și a lansa un anumit job KeyForCronAccess=Cheie de securitate pentru URL de lansare a joburilor cron FileToLaunchCronJobs=Linie de comandă pentru lansare joburi cron -CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes -CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes +CronExplainHowToRunUnix=Pe mediul Unix veţi utiliza instrumentul crontab pentru a rula urmatoarea linia de comanda la fiecare 5 minute +CronExplainHowToRunWin=Pe mediul Microsoft(tm) Windows puteţi utiliza instrumentul Scheduled task pentru a rula linia de comanda la fiecare 5 minute # Menu CronJobs=Joburi programate CronListActive=Lista activelor/programatelor joburi @@ -84,3 +84,4 @@ CronType_command=Comandă shell CronMenu=Cron CronCannotLoadClass=Nu pot încărca clasa %s sau obiectul %s UseMenuModuleToolsToAddCronJobs=Intrați în meniul ''Acasă - Instrumentele modulelor - Lista de job-uri'' pentru a vedea și edita job-urile programate. +TaskDisabled=Task disabled diff --git a/htdocs/langs/ro_RO/errors.lang b/htdocs/langs/ro_RO/errors.lang index 943cfbc57d5..8e73996c24d 100644 --- a/htdocs/langs/ro_RO/errors.lang +++ b/htdocs/langs/ro_RO/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Sursa obiective şi conturi bancare trebuie să f ErrorBadThirdPartyName=Bad valoarea de terţă parte nume ErrorProdIdIsMandatory=%s este obligatoriu ErrorBadCustomerCodeSyntax=Bad sintaxă pentru codul de client -ErrorBadBarCodeSyntax=Bad sintaxă pentru furnizor cod +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Clientul codul necesar ErrorBarCodeRequired=Cod de bare cerut ErrorCustomerCodeAlreadyUsed=Clientul codul folosit deja @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript nu trebuie să fie dezactivate pentru a ErrorPasswordsMustMatch=Ambele parolele tastate trebuie să se potrivească reciproc ErrorContactEMail=O eroare de tehnică avut loc. Vă rugăm, contactaţi administratorul de a urma %s de e-mail ro oferi %s cod de eroare în mesajul Dvs., sau chiar mai bine prin adăugarea o copie ecran a acestei pagini. ErrorWrongValueForField=Valoarea greşit pentru %s numărul de câmp (valoarea "%s" nu se potriveste cu regula %s regex) -ErrorFieldValueNotIn=Valoare greşită pentru %s numărul de câmp ("%s" valoare nu este o valoare disponibile în %s teren de %s de masă) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Valoare greşită pentru %s numărul de câmp ("%s" valoarea nu este o ref %s existente) ErrorsOnXLines=Erori pe liniile sursă %s ErrorFileIsInfectedWithAVirus=Programul antivirus nu a validet fisierul (fisierul ar putea fi infectat cu un virus) @@ -159,7 +159,8 @@ ErrorPriceExpression22=Rezultat negativ '%s' ErrorPriceExpressionInternal=Eroare internă '%s' ErrorPriceExpressionUnknown=Eroare Necunoscută '%s' ErrorSrcAndTargetWarehouseMustDiffers=Depozitul sursă și țintă trebuie să difere -ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorTryToMakeMoveOnProductRequiringBatchData=Eroare, se incerarca să se facă o mișcare de stoc, fără informații de lot / serie, pe un produs care necesită informații de lot /serie +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Parametri de setare obligatorii nu sunt încă definiţi diff --git a/htdocs/langs/ro_RO/install.lang b/htdocs/langs/ro_RO/install.lang index e74102c3b63..c4a8956bc4d 100644 --- a/htdocs/langs/ro_RO/install.lang +++ b/htdocs/langs/ro_RO/install.lang @@ -155,7 +155,8 @@ MigrationFinished=Migraţia terminată LastStepDesc=Ultimul pas: Definirea aici nume de utilizator şi parola pe care intenţionaţi să îl utilizaţi pentru conectarea la software-ul. Nu pierde aceasta ca este cont pentru a administra toate celelalte. ActivateModule=Activaţi modul %s ShowEditTechnicalParameters=Click aici pentru a vedea / edita parametrii avansaţi (mod expert) -WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +WarningUpgrade=Avertisment:\nAti facut o copie de rezervă a bazei de date mai întâi? \nAcest lucru este foarte recomandat: de exemplu, din cauza unor bug-uri în sistemele de baze de date (de exemplu, mysql versiune 5.5.40), unele date sau tabele pot fi pierdute în timpul acestui proces, de aceea este foarte recomandat să aveți o copie completa a bazei de date înaintea pornirii migrariii.\n\nFaceți clic pe OK pentru a începe procesul de migrare ... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade @@ -207,7 +208,7 @@ MigrationProjectTaskTime=Actualizare de timp petrecut în secunde MigrationActioncommElement=Actualizare date pe acţiuni MigrationPaymentMode=Migrare de date pentru modul de plată MigrationCategorieAssociation=Migrarea categoriilor -MigrationEvents=Migration of events to add event owner into assignement table +MigrationEvents=Migrația evenimentelor pentru a adăuga proprietarului evenimentul în tabelul de atribuire ShowNotAvailableOptions=Afişează opţiunile nedisponibile HideNotAvailableOptions=Acunde opţiunile nedisponibile diff --git a/htdocs/langs/ro_RO/languages.lang b/htdocs/langs/ro_RO/languages.lang index d2edf76d388..483e5b1caa3 100644 --- a/htdocs/langs/ro_RO/languages.lang +++ b/htdocs/langs/ro_RO/languages.lang @@ -13,7 +13,7 @@ Language_de_AT=Germană (Austria) Language_de_CH=Germană (Elveţia) Language_el_GR=Greacă Language_en_AU=Engleză (Australia) -Language_en_CA=English (Canada) +Language_en_CA=Engleză (Canada) Language_en_GB=Engleză (Marea Britanie) Language_en_IN=Engleză (India) Language_en_NZ=Engleză (Noua Zeelandă) diff --git a/htdocs/langs/ro_RO/main.lang b/htdocs/langs/ro_RO/main.lang index c540d9d4dc2..0b2b2e1411c 100644 --- a/htdocs/langs/ro_RO/main.lang +++ b/htdocs/langs/ro_RO/main.lang @@ -141,6 +141,7 @@ Cancel=Anulează Modify=Modifică Edit=Editează Validate=Validează +ValidateAndApprove=Validate and Approve ToValidate=De validat Save=Salvează SaveAs=Salvează ca @@ -158,6 +159,7 @@ Search=Caută SearchOf=Căutare Valid=Validează Approve=Aprobaţi +Disapprove=Disapprove ReOpen=Redeaschide Upload=Trimite fişier ToLink=Link @@ -219,6 +221,7 @@ Cards=Fişe Card=Fişă Now=Acum Date=Dată +DateAndHour=Date and hour DateStart=Dată început DateEnd=Dată sfârşit DateCreation=Dată creare @@ -295,6 +298,7 @@ UnitPriceHT=Preț unitar (net) UnitPriceTTC=Preț unitar PriceU=UP PriceUHT=UP (net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=UP Amount=Valoare AmountInvoice=Valoare Factură @@ -521,6 +525,7 @@ DateFromTo=De la %s la %s DateFrom=Începând cu %s DateUntil=Până în %s Check=Verifică +Uncheck=Uncheck Internal=Intern External=Extern Internals=Interne @@ -688,6 +693,7 @@ PublicUrl=URL Public AddBox=Adauga box SelectElementAndClickRefresh=Selectează un element şi click Refresh PrintFile=Printeaza Fisierul %s +ShowTransaction=Show transaction # Week day Monday=Luni Tuesday=Marţi diff --git a/htdocs/langs/ro_RO/orders.lang b/htdocs/langs/ro_RO/orders.lang index e1604cf5fd4..90ef9c964c1 100644 --- a/htdocs/langs/ro_RO/orders.lang +++ b/htdocs/langs/ro_RO/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Anulată StatusOrderDraft=Schiţă (de validat) StatusOrderValidated=Validată StatusOrderOnProcess=Comandate - receptie standby +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Procesată StatusOrderToBill=Livrată StatusOrderToBill2=De facturat @@ -58,6 +59,7 @@ MenuOrdersToBill=Comenzi livrate MenuOrdersToBill2=Comenzi facturabile SearchOrder=Caută Comanda SearchACustomerOrder=Caută o comandă client +SearchASupplierOrder=Search a supplier order ShipProduct=Expediază produs Discount=Discount CreateOrder=Crează Comanda diff --git a/htdocs/langs/ro_RO/other.lang b/htdocs/langs/ro_RO/other.lang index b5114764699..123684dfc4e 100644 --- a/htdocs/langs/ro_RO/other.lang +++ b/htdocs/langs/ro_RO/other.lang @@ -54,12 +54,13 @@ MaxSize=Mărimea maximă a AttachANewFile=Ataşaţi un fişier nou / document LinkedObject=Legate de obiectul Miscellaneous=Diverse -NbOfActiveNotifications=Număr de notificări +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Acesta este un e-mail de test. \\ NMesajul două linii sunt separate printr-un retur de car. PredefinedMailTestHtml=Acesta este un e-mail de testare (test de cuvânt trebuie să fie în aldine).
Cele două linii sunt separate printr-un retur de car. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nVeţi găsi aici factura __FACREF__\n\n__PERSONALIZED__Cu respect\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__ \n\n Am dori să vă avertizăm că factura __FACREF__ pare a nu fi platită. Deci, vă ataşăm din nou factura, ca un memento. \n\n__PERSONALIZED__ Cu respect \n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nVeţi găsi aici oferta comercială__PROPREF__\n\n__PERSONALIZED__Cu respect\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nVeţi găsi aici comanda __ORDERREF__\n\n__PERSONALIZED__Cu respect\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYVeţi găsi aici comanda noastră__ORDERREF__\n\n__PERSONALIZED__Cu respect\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nVeţi găsi aici factura __FACREF__\n\n__PERSONALIZED__Cu respect\n\n__SIGNATURE__ diff --git a/htdocs/langs/ro_RO/productbatch.lang b/htdocs/langs/ro_RO/productbatch.lang index 3adfd9dfc8d..0be80ae35d4 100644 --- a/htdocs/langs/ro_RO/productbatch.lang +++ b/htdocs/langs/ro_RO/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Lot / Număr de serie l_eatby=Data expirare l_sellby=Data vânzare DetailBatchNumber=Detalii Lot / Serie -DetailBatchFormat=Lot / Serie:%s - E:%s - S:%s (Cant.: %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Lot: %s printEatby=Expiră : %s printSellby=Vanzare: %s diff --git a/htdocs/langs/ro_RO/products.lang b/htdocs/langs/ro_RO/products.lang index be764a715a5..35cd6613d46 100644 --- a/htdocs/langs/ro_RO/products.lang +++ b/htdocs/langs/ro_RO/products.lang @@ -22,16 +22,16 @@ ProductAccountancySellCode=Cont Contabilitate (vânzare) ProductOrService=Produs sau serviciu ProductsAndServices=Produse si Servicii ProductsOrServices=Produse sau servicii -ProductsAndServicesOnSell=Products and Services for sale or for purchase -ProductsAndServicesNotOnSell=Products and Services out of sale +ProductsAndServicesOnSell=Produse si Servicii supuse vânzării sau cumpărării +ProductsAndServicesNotOnSell=Produse si Servicii neoferite ProductsAndServicesStatistics=Statistici Produse si Servicii ProductsStatistics=Statistici Produse -ProductsOnSell=Product for sale or for pruchase -ProductsNotOnSell=Product out of sale and out of purchase -ProductsOnSellAndOnBuy=Products for sale and for purchase -ServicesOnSell=Services for sale or for purchase -ServicesNotOnSell=Services out of sale -ServicesOnSellAndOnBuy=Services for sale and for purchase +ProductsOnSell=Produs supus vânzării sau cumpărării +ProductsNotOnSell=Produs nesupus vânzării sau cumpărării +ProductsOnSellAndOnBuy=Produse supuse vânzării sau cumpărării +ServicesOnSell=Servicii supuse vânzării sau cumpărării +ServicesNotOnSell=Servicii neoferite prestarii +ServicesOnSellAndOnBuy=Servicii supuse vânzării sau cumpărării InternalRef=Referinţă internă LastRecorded=Ultimele produse / servicii disponibile înregistrate LastRecordedProductsAndServices=Ultimele %s produse / servicii înregistrate @@ -198,7 +198,7 @@ HelpAddThisServiceCard=Această opţiune vă permite să creaţi sau clonaţi un CurrentProductPrice=Preţ curent AlwaysUseNewPrice=Întotdeauna foloseşte preţul curent al produsului/serviciului AlwaysUseFixedPrice=Foloseşte preţul fix -PriceByQuantity=Different prices by quantity +PriceByQuantity=Preţuri diferite pe cantitate PriceByQuantityRange=Interval cantitate ProductsDashboard=Sumar Produse/Servicii UpdateOriginalProductLabel=Modifică eticheta originală @@ -234,7 +234,7 @@ DefinitionOfBarCodeForThirdpartyNotComplete=Definiția tipului sau valoarea codu BarCodeDataForProduct=Informaţii cod bare al produsului %s : BarCodeDataForThirdparty=Informaţii cod bare al terţului %s : ResetBarcodeForAllRecords=Defineşte valoare coduri de bare pentru toate înregistrările (aceasta va reseta, de asemenea, valorile deja definite, cu valori noi) -PriceByCustomer=Different price for each customer +PriceByCustomer=Preţuri diferite pentru fiecare client PriceCatalogue=Preţ unic pe produs/serviciu PricingRule=Reguli pentru preţuri clienţi AddCustomerPrice=Adaugă Preţ pe client @@ -244,9 +244,13 @@ MinimumPriceLimit=Preţul minim nu poate fi mai mic decat %s MinimumRecommendedPrice=Preţul minim recomandat este: %s PriceExpressionEditor=Editor expresie preț PriceExpressionSelected=Expresie preț selectatată -PriceExpressionEditorHelp1="price = 2 + 2" or "2 + 2" for setting the price. Use ; to separate expressions -PriceExpressionEditorHelp2=You can access ExtraFields with variables like #options_myextrafieldkey# -PriceExpressionEditorHelp3=In both product/service and supplier prices there are these variables available:
#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min# -PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# +PriceExpressionEditorHelp1="pret = 2 + 2" sau "2 + 2" pentru setarea pretului. Foloseste ; tpentru separarea expresiilor +PriceExpressionEditorHelp2=Puteți accesa ExtraFields cu variabile, cum ar fi #options_myextrafieldkey# +PriceExpressionEditorHelp3=In ambele preturi produs/serviciu si furnizori sunt disponibile variabilele:
#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min# +PriceExpressionEditorHelp4=In pret produs/serviciu numai: #supplier_min_price#
In pret furnizor numai: #supplier_quantity# and #supplier_tva_tx# PriceMode=Mod preț PriceNumeric=Număr +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/ro_RO/projects.lang b/htdocs/langs/ro_RO/projects.lang index 52938a5e6eb..143ed2e0a43 100644 --- a/htdocs/langs/ro_RO/projects.lang +++ b/htdocs/langs/ro_RO/projects.lang @@ -3,13 +3,15 @@ RefProject=Ref. proiect ProjectId=ID proiect Project=Proiect Projects=Proiecte -ProjectStatus=Project status +ProjectStatus=Statut Proiect SharedProject=Toată lumea PrivateProject=Contacte proiect MyProjectsDesc=Această vedere este limitată la proiecte sau sarcini pentru care sunteţi contact(indiferent de tip). ProjectsPublicDesc=Această vedere prezintă toate proiectele la care aveţi permisiunea să le citiţi. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Această vedere prezintă toate proiectele (permisiuni de utilizator va acorda permisiunea de a vizualiza totul). MyTasksDesc=Această vedere este limitată la proiecte sau sarcini pentru care sunteţi contact(indiferent de tip). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Această vedere prezintă toate proiectele şi activităţile care sunt permise să le citiţi. TasksDesc=Această vedere prezintă toate proiectele şi sarcinile (permisiuni de utilizator va acorda permisiunea de a vizualiza totul). ProjectsArea=Proiecte @@ -29,6 +31,8 @@ NoProject=Niciun proiect definit sau responsabil NbOpenTasks=Nr taskuri deschise NbOfProjects=Nr proiecte TimeSpent=Timp comsumat +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Timpi consumaţi RefTask=Ref. Task LabelTask=Eticheta Task @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Lista comenzi furnizori asociate la proie ListSupplierInvoicesAssociatedProject=Lista facturi furnizori asociate la proiect ListContractAssociatedProject=Lista contracte asociate la proiect ListFichinterAssociatedProject=Lista intervenţii asociate la proiectului -ListTripAssociatedProject=Lista note de cheltuieli asociate la proiect +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Lista evenimentelor asociate la proiectului ActivityOnProjectThisWeek=Activitatea de pe proiect în această săptămână ActivityOnProjectThisMonth=Activitatea de pe proiect în această lună @@ -103,7 +107,7 @@ CloneContacts=Clonează contacte CloneNotes=Clonează note CloneProjectFiles=Clonează proiect fişiere ataşate CloneTaskFiles=Clonează task(uri) fişiere ataşate (dacă task (urile) clonate) -CloneMoveDate=Update project/tasks dates from now ? +CloneMoveDate=Actualizeaza datele proiectului/ taskului din acest moment ? ConfirmCloneProject=Sigur vreţi să clonaţi acest proiect? ProjectReportDate=Schimbă data taskului conform cu data de debut a proiectului ErrorShiftTaskDate=Imposibil de schimbat data taskului conform cu noua data de debut a proiectului @@ -133,3 +137,6 @@ SearchAProject=Cauta proiect ProjectMustBeValidatedFirst=Proiectul trebuie validat mai întâi ProjectDraft=Proiecte schiţă FirstAddRessourceToAllocateTime=Asociază o resursă la timpul alocat +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/ro_RO/salaries.lang b/htdocs/langs/ro_RO/salaries.lang index 3dde850405b..75c0b1969d3 100644 --- a/htdocs/langs/ro_RO/salaries.lang +++ b/htdocs/langs/ro_RO/salaries.lang @@ -10,3 +10,4 @@ SalariesPayments=Plati salarii ShowSalaryPayment=Arata plata salariu THM=Pret mediu pe ora TJM=Pret mediu zilnic +CurrentSalary=Current salary diff --git a/htdocs/langs/ro_RO/sendings.lang b/htdocs/langs/ro_RO/sendings.lang index b023dbc1610..fd669e5577a 100644 --- a/htdocs/langs/ro_RO/sendings.lang +++ b/htdocs/langs/ro_RO/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Cant. comandată QtyShipped=Cant. livrată QtyToShip=Cant. de livrat QtyReceived=Cant. primită -KeepToShip=Rest de livrat +KeepToShip=Remain to ship OtherSendingsForSameOrder=Alte livrări pentru această comandă DateSending=Data dispoziţiei de livrare DateSendingShort=Data disp. de livrare @@ -62,12 +62,12 @@ ShipmentCreationIsDoneFromOrder=Pentru moment, crearea unei noi livrări se face RelatedShippings=Livrări asociate ShipmentLine=Linie de livrare CarrierList=Lista transportatori -SendingRunning=Product from ordered customer orders -SuppliersReceiptRunning=Product from ordered supplier orders -ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders -ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders -ProductQtyInShipmentAlreadySent=Product quantity from opended customer order already sent -ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received +SendingRunning=Produs din comenzile clientului comandate +SuppliersReceiptRunning=Produs din comenzile furnizorului comandate +ProductQtyInCustomersOrdersRunning=Cantitate produs in comenzile clientilor deschise +ProductQtyInSuppliersOrdersRunning=Cantitate produs in comenzile furnizorilor deschise +ProductQtyInShipmentAlreadySent=Cantitate produs din comenzile clientilor deschise deja trimise +ProductQtyInSuppliersShipmentAlreadyRecevied=Cantitate produs din comenzile furnizorilor deschise deja primite # Sending methods SendingMethodCATCH=Colectată de client diff --git a/htdocs/langs/ro_RO/stocks.lang b/htdocs/langs/ro_RO/stocks.lang index 24a5083aae4..394853cb355 100644 --- a/htdocs/langs/ro_RO/stocks.lang +++ b/htdocs/langs/ro_RO/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Valoric PMP PMPValueShort=WAP EnhancedValueOfWarehouses=Stoc valoric UserWarehouseAutoCreate=Creaţi un stoc în mod automat atunci când se creează un utilizator +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Cantitate dipecerizată QtyDispatchedShort=Cant Expediate QtyToDispatchShort=Cant de expediat @@ -110,7 +111,7 @@ WarehouseForStockDecrease=Depozitul %s va fi utilizat pentru scăderea st WarehouseForStockIncrease=Depozitul %s va fi utilizat pentru creşterea stocului ForThisWarehouse=Pentru acest depozit ReplenishmentStatusDesc=Aceasta este lista cu toate produsele având stocul mai mic decât stocul dorit (sau valoarea de alertă dacă casuţa "doar alertă " este bifată) și sugerăm să vă creaţi comenzi furnizor pentru a completa diferența. -ReplenishmentOrdersDesc=Aceasta este lista cu toate comenzile furnizor deschise +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Reaprovizionări NbOfProductBeforePeriod=Cantitatea de produs %s în stoc înainte de perioada selectată (< %s) NbOfProductAfterPeriod=Cantitatea de produs %s în stoc după perioada selectată (> %s) @@ -130,3 +131,4 @@ IsInPackage=Continute in pachet ShowWarehouse=Arată depozit MovementCorrectStock=Corectie continut stoc pentru produsul %s MovementTransferStock=Transfer stoc al produsului %s in alt depozit +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/ro_RO/suppliers.lang b/htdocs/langs/ro_RO/suppliers.lang index 057f6dab55f..19ea854686f 100644 --- a/htdocs/langs/ro_RO/suppliers.lang +++ b/htdocs/langs/ro_RO/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Furnizori -Supplier=Furnizor AddSupplier=Crează un furnizor SupplierRemoved=Furnizor şters SuppliersInvoice=Factură furnizor @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Facturi Furnizor şi plăţi ExportDataset_fournisseur_3=Comenzi furnizori si lini comenzi ApproveThisOrder=Aprobă această comandă ConfirmApproveThisOrder=Sigur doriţi să aprobaţi această comandă %s? -DenyingThisOrder=Refuză comanda +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Sigur doriţi să refuzaţi această comandă %s? ConfirmCancelThisOrder=Sigur doriţi să anulaţi această comandă %s? AddCustomerOrder=Crează comandă client @@ -42,5 +41,5 @@ NoneOrBatchFileNeverRan=Nici una sau tratate %s ne executate recent SentToSuppliers=Trimite la furnizori ListOfSupplierOrders=Lista comenzi furnizori MenuOrdersSupplierToBill=Comenzi Furnizor de facturat -NbDaysToDelivery=Delivery delay in days -DescNbDaysToDelivery=The biggest delay is display among order product list +NbDaysToDelivery= Intârziere Livrare in zile +DescNbDaysToDelivery=Cea mai mare intarziere este afisata in lista produsului comandat diff --git a/htdocs/langs/ro_RO/trips.lang b/htdocs/langs/ro_RO/trips.lang index a606801617c..f32deae8693 100644 --- a/htdocs/langs/ro_RO/trips.lang +++ b/htdocs/langs/ro_RO/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Deplasare -Trips=Deplasări -TripsAndExpenses=Deplasări şi cheltuieli -TripsAndExpensesStatistics=Statistici Deplasări şi cheltuieli -TripCard=Fişă Deplasare -AddTrip=Creare deplasare -ListOfTrips=Lista deplasări +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Lista note cheltuieli -NewTrip=Deplasare nouă +NewTrip=New expense report CompanyVisited=Societatea / Instituţia vizitată Kilometers=Kilometri FeesKilometersOrAmout=Valoarea sau km -DeleteTrip=Şterge Deplasare -ConfirmDeleteTrip=Sigur doriţi să ştergeţi aceasăt Deplasarei ? -TF_OTHER=Altele -TF_LUNCH=Prânz -TF_TRIP=Deplasare -ListTripsAndExpenses=Lista Deplasări şi cheltuieli -ExpensesArea=Deplasări şi cheltuieli -SearchATripAndExpense=Caută o deplasare şi cheltuială +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Clasează "Rambursată" +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Altele +TF_TRANSPORTATION=Transportation +TF_LUNCH=Prânz +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/ro_RO/withdrawals.lang b/htdocs/langs/ro_RO/withdrawals.lang index 73cb1153bd5..28dd4d7d3c9 100644 --- a/htdocs/langs/ro_RO/withdrawals.lang +++ b/htdocs/langs/ro_RO/withdrawals.lang @@ -79,7 +79,7 @@ CreditDate=Credit pe WithdrawalFileNotCapable=Imposibil de a genera fișierul chitanţă de retragere pentru țara dvs %s (Țara dvs. nu este acceptată) ShowWithdraw=Arată Retragere IfInvoiceNeedOnWithdrawPaymentWontBeClosed=Cu toate acestea, dacă factura are cel puțin o plată de retragere încă neprelucrată, aceasta nu va fi setată ca plătită permite în prealabil gestionarea retragerii. -DoStandingOrdersBeforePayments=This tab allows you to request a standing order. Once done, go into menu Bank->Withdrawal to manage the standing order. When standing order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null. +DoStandingOrdersBeforePayments=Acest tab vă permite să solicitaţi un ordin de plată. Odată ce este dat intră în meniul Bancă-> Retragere pentru a gestiona ordinul de plată. Când ordinul de plată este închis, plata pe factura va fi înregistrată în mod automat, iar factura închisă dacă restul de plata este nul. WithdrawalFile=Fişier Retragere SetToStatusSent=Setează statusul "Fişier Trimis" ThisWillAlsoAddPaymentOnInvoice=Aceasta se va aplica, de asemenea, plății facturilor și vor fi clasificate ca "Plătit" diff --git a/htdocs/langs/ro_RO/workflow.lang b/htdocs/langs/ro_RO/workflow.lang index 2f1ffaae228..4dc8c56927b 100644 --- a/htdocs/langs/ro_RO/workflow.lang +++ b/htdocs/langs/ro_RO/workflow.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin WorkflowSetup=Configurare Modul Flux de Lucru -WorkflowDesc=This module is designed to modify the behaviour of automatic actions into application. By default, workflow is opened (you make thing in order you want). You can activate the automatic actions that you are interesting in. +WorkflowDesc=Acest modul vă permite modificarea comportamentului acțiunilor automate în aplicaţie. În mod implicit, fluxul de lucru este deschis (puteţi face ce doriţi în ordinea dorită). Puteți activa acțiunile automate de care sunteti interesat ThereIsNoWorkflowToModify=Nu există nici un flux de lucru modificabil pentru modulele activate. descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Crează o comandă client automat, după ce o ofertă comercială este semnată descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Crează o factură client automat, după ce o ofertă comercială este semnată diff --git a/htdocs/langs/ru_RU/admin.lang b/htdocs/langs/ru_RU/admin.lang index 505b6b9dce2..9a7af148909 100644 --- a/htdocs/langs/ru_RU/admin.lang +++ b/htdocs/langs/ru_RU/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Экспериментальная VersionDevelopment=Разработка VersionUnknown=Неизвестно VersionRecommanded=Рекомендуемые +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=ID сессии SessionSaveHandler=Обработчик для сохранения сессий SessionSavePath=Хранение сессии локализации @@ -493,10 +498,16 @@ Module600Name=Уведомления Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Пожертвования Module700Desc=Пожертвования управления +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis интеграции Module1400Name=Бухгалтерия эксперт Module1400Desc=Бухгалтерия управления для экспертов (двойная сторон) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Категории Module1780Desc=Категории управления (продукции, поставщиков и заказчиков) Module2000Name=FCKeditor @@ -631,7 +642,7 @@ Permission181=Читать поставщик заказов Permission182=Создать / изменить поставщика заказы Permission183=Проверка поставщиком заказов Permission184=Одобрить поставщик заказов -Permission185=Заказ поставщику заказов +Permission185=Order or cancel supplier orders Permission186=Прием заказов поставщику Permission187=Закрыть поставщик заказов Permission188=Отмена заказов поставщику @@ -711,6 +722,13 @@ Permission538=Экспорт услуг Permission701=Читать пожертвований Permission702=Создать / изменить пожертвований Permission703=Удалить пожертвований +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Читать запасов Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Пароль для использования прокси-се DefineHereComplementaryAttributes=Определить здесь все атрибуты, а не уже доступны по умолчанию, и что вы хотите быть поддерживается %s. ExtraFields=Дополнительные атрибуты ExtraFieldsLines=Дополнительные атрибуты (строки) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Дополнительные атрибуты (контрагенты) ExtraFieldsContacts=Дополнительные атрибуты (контакт/адрес) ExtraFieldsMember=Дополнительные атрибуты (Участник) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Соответствие продукта / услуг FreeLegalTextOnProposal=Свободный текст на коммерческие предложения WatermarkOnDraftProposal=Водяные знаки на черновиках Коммерческих предложений ("Нет" если пусто) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Приказ 'Management Setup OrdersNumberingModules=Приказы нумерации модулей @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Штрих-код типа СКП BarcodeDescISBN=Штрих-код типа ISBN BarcodeDescC39=Штрих-код типа C39 BarcodeDescC128=Штрих-код типа C128 -GenbarcodeLocation=Штрих-код поколения утилиту командной строки (используется phpbarcode двигателя для некоторых типов штрих-кодов) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Денежные счета, используемого для продает CashDeskBankAccountForCheque= Счет будет использоваться для получения выплат чеком CashDeskBankAccountForCB= Учетной записи для использования на получение денежных выплат по кредитным картам -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Закладка Настройка модуля @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Формат TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/ru_RU/banks.lang b/htdocs/langs/ru_RU/banks.lang index a2601286314..7325c4e6538 100644 --- a/htdocs/langs/ru_RU/banks.lang +++ b/htdocs/langs/ru_RU/banks.lang @@ -33,7 +33,11 @@ AllTime=Сначала Reconciliation=Примирение RIB=Bank Account Number IBAN=IBAN номера +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC / SWIFT число +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Постоянные заказы StandingOrder=Постоянная порядка Withdrawals=Снятие @@ -148,7 +152,7 @@ BackToAccount=Перейти к ответу ShowAllAccounts=Шоу для всех учетных записей FutureTransaction=Сделки в Futur. Ни в коем случае к согласительной процедуре. SelectChequeTransactionAndGenerate=Выбор / фильтр проверяет, включать в получении депозита проверки и нажмите кнопку "Создать". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/ru_RU/commercial.lang b/htdocs/langs/ru_RU/commercial.lang index ff6852de0f2..f60182a8f80 100644 --- a/htdocs/langs/ru_RU/commercial.lang +++ b/htdocs/langs/ru_RU/commercial.lang @@ -9,9 +9,9 @@ Prospect=Проспект Prospects=Перспективы DeleteAction=Удалить действия / задачи NewAction=Новые меры / задачи -AddAction=Добавить действия / задачи -AddAnAction=Добавить меры / задачи -AddActionRendezVous=Добавить рандеву задачи +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Свидание ConfirmDeleteAction=Вы уверены, что хотите удалить эту задачу? CardAction=Действия карточки @@ -44,8 +44,8 @@ DoneActions=Совершено действия DoneActionsFor=Совершено меры для %s ToDoActions=Неполные действия ToDoActionsFor=Неполные действия %s -SendPropalRef=Отправить коммерческое предложение %s -SendOrderRef=Отправить заказ %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Не применяется StatusActionToDo=Чтобы сделать StatusActionDone=Готово @@ -62,7 +62,7 @@ LastProspectContactDone=Контакт сделали DateActionPlanned=Сроки действия, запланированные на DateActionDone=Сроки действия сделали ActionAskedBy=Действий, заданных -ActionAffectedTo=Действий для пострадавших +ActionAffectedTo=Event assigned to ActionDoneBy=Действий, проделанную ActionUserAsk=Зарегистрировано ErrorStatusCantBeZeroIfStarted=Если поле 'Дата сделали' заполнен, действие начинается (или закончили), так что поле "Статус" не может быть 0%%. diff --git a/htdocs/langs/ru_RU/contracts.lang b/htdocs/langs/ru_RU/contracts.lang index 16b0b7d4c85..d64ad647ab7 100644 --- a/htdocs/langs/ru_RU/contracts.lang +++ b/htdocs/langs/ru_RU/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Истек ServiceStatusClosed=Закрытые ServicesLegend=Услуги легенда Contracts=Договоры +ContractsAndLine=Contracts and line of contracts Contract=Договор NoContracts=Нет договоров MenuServices=Услуги diff --git a/htdocs/langs/ru_RU/cron.lang b/htdocs/langs/ru_RU/cron.lang index 0646dce05fb..9cfdaf5e1d9 100644 --- a/htdocs/langs/ru_RU/cron.lang +++ b/htdocs/langs/ru_RU/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/ru_RU/errors.lang b/htdocs/langs/ru_RU/errors.lang index 8b096b83105..839f620bd6c 100644 --- a/htdocs/langs/ru_RU/errors.lang +++ b/htdocs/langs/ru_RU/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Источник и цели банковског ErrorBadThirdPartyName=Неправильное значение для имени контрагента ErrorProdIdIsMandatory=%s является обязательным ErrorBadCustomerCodeSyntax=Плохо синтаксис для заказчика код -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Требуется код клиента ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Код клиента уже используется @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript не должна быть отключ ErrorPasswordsMustMatch=Оба введенных пароля должны совпадать друг с другом ErrorContactEMail=Техническая ошибка. Пожалуйста, обратитесь к администратору следующую электронную почту %s ан обеспечить %s код ошибки в ваше сообщение, или даже лучше, добавив экран копию этой страницы. ErrorWrongValueForField=Неверное значение для области количество %s (значение %s "не соответствует регулярное %s правило) -ErrorFieldValueNotIn=Неверное значение для %s номер поля %s значение не является значением доступны в поле %s таблицы %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Неверное значение для %s номер поля («%s" значение не является %s существующих ссылка) ErrorsOnXLines=Ошибки на источник %s линий ErrorFileIsInfectedWithAVirus=Антивирусная программа не смогла проверить файл (файл может быть заражен вирусом) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Обязательные параметры не определены diff --git a/htdocs/langs/ru_RU/install.lang b/htdocs/langs/ru_RU/install.lang index a2512709918..2d2279104f8 100644 --- a/htdocs/langs/ru_RU/install.lang +++ b/htdocs/langs/ru_RU/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Последний шаг: Определить з ActivateModule=Активировать модуль %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/ru_RU/main.lang b/htdocs/langs/ru_RU/main.lang index 8e120892b47..e98cf570ed8 100644 --- a/htdocs/langs/ru_RU/main.lang +++ b/htdocs/langs/ru_RU/main.lang @@ -141,6 +141,7 @@ Cancel=Отмена Modify=Изменить Edit=Редактировать Validate=Проверить +ValidateAndApprove=Validate and Approve ToValidate=На проверке Save=Сохранить SaveAs=Сохранить как @@ -158,6 +159,7 @@ Search=Поиск SearchOf=Поиск Valid=Действительный Approve=Одобрить +Disapprove=Disapprove ReOpen=Переоткрыть Upload=Отправить файл ToLink=Ссылка @@ -219,6 +221,7 @@ Cards=Карточки Card=Карточка Now=Сейчас Date=Дата +DateAndHour=Date and hour DateStart=Дата начала DateEnd=Дата окончания DateCreation=Дата создания @@ -295,6 +298,7 @@ UnitPriceHT=Цена за единицу (нетто) UnitPriceTTC=Цена за единицу PriceU=Цена ед. PriceUHT=Цена ед. (нетто) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=Цена ед. Amount=Сумма AmountInvoice=Сумма счета-фактуры @@ -521,6 +525,7 @@ DateFromTo=С %s по %s DateFrom=С %s DateUntil=До %s Check=Проверить +Uncheck=Uncheck Internal=Внутренний External=Внешний Internals=Внутренние @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Понедельник Tuesday=Вторник diff --git a/htdocs/langs/ru_RU/orders.lang b/htdocs/langs/ru_RU/orders.lang index 41bf0b62e66..aec90dd9d16 100644 --- a/htdocs/langs/ru_RU/orders.lang +++ b/htdocs/langs/ru_RU/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Отменен StatusOrderDraft=Проект (должно быть подтверждено) StatusOrderValidated=Подтвержденные StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Обработано StatusOrderToBill=В законопроекте StatusOrderToBill2=Для выставления @@ -58,6 +59,7 @@ MenuOrdersToBill=Заказы на законопроект MenuOrdersToBill2=Billable orders SearchOrder=Поиск тем SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Судно продукта Discount=Скидка CreateOrder=Создать заказ diff --git a/htdocs/langs/ru_RU/other.lang b/htdocs/langs/ru_RU/other.lang index 62d309beae8..867240f9b84 100644 --- a/htdocs/langs/ru_RU/other.lang +++ b/htdocs/langs/ru_RU/other.lang @@ -54,12 +54,13 @@ MaxSize=Максимальный размер AttachANewFile=Присоединить новый файл / документ LinkedObject=Связанные объект Miscellaneous=Разное -NbOfActiveNotifications=Количество уведомлений +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Dette er en test post. \\ NDe to linjer er atskilt med en vognretur. PredefinedMailTestHtml=Dette er en test mail (ordet testen må være i fet skrift).
De to linjene er skilt med en vognretur. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/ru_RU/productbatch.lang b/htdocs/langs/ru_RU/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/ru_RU/productbatch.lang +++ b/htdocs/langs/ru_RU/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/ru_RU/products.lang b/htdocs/langs/ru_RU/products.lang index a8b06bf9c23..b777ee9ed23 100644 --- a/htdocs/langs/ru_RU/products.lang +++ b/htdocs/langs/ru_RU/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/ru_RU/projects.lang b/htdocs/langs/ru_RU/projects.lang index 23b620b3ce4..91a4da8d284 100644 --- a/htdocs/langs/ru_RU/projects.lang +++ b/htdocs/langs/ru_RU/projects.lang @@ -8,8 +8,10 @@ SharedProject=Общий проект PrivateProject=Контакты проекта MyProjectsDesc=Эта точка зрения ограничена проекты, которые Вы контакте (что бы это тип). ProjectsPublicDesc=Эта точка зрения представлены все проекты, которые Вы позволили читать. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Эта точка зрения представляет все проекты (разрешений пользователей предоставить вам разрешение для просмотра всего). MyTasksDesc=Эта точка зрения ограничена на проекты или задачи, которые являются для контакта (что бы это тип). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Эта точка зрения представляет всех проектов и задач, которые могут читать. TasksDesc=Эта точка зрения представляет всех проектов и задач (разрешений пользователей предоставить вам разрешение для просмотра всего). ProjectsArea=Проекты области @@ -29,6 +31,8 @@ NoProject=Нет проекта определена NbOpenTasks=Nb открытых задач NbOfProjects=Nb проектов TimeSpent=Время, затраченное +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Время, проведенное RefTask=Ref. задача LabelTask=Этикетка задачи @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Список поставщиков зака ListSupplierInvoicesAssociatedProject=Список поставщиков счетов-фактур, связанных с проектом ListContractAssociatedProject=Перечень договоров, связанных с проектом ListFichinterAssociatedProject=Список мероприятий, связанных с проектом -ListTripAssociatedProject=Список поездки и расходы, связанные с проектом +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Список мероприятий, связанных с проектом ActivityOnProjectThisWeek=Деятельность по проекту на этой неделе ActivityOnProjectThisMonth=Деятельность по проектам в этом месяце @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/ru_RU/salaries.lang b/htdocs/langs/ru_RU/salaries.lang index 88e94f1e024..6ec5eaae2fd 100644 --- a/htdocs/langs/ru_RU/salaries.lang +++ b/htdocs/langs/ru_RU/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Зарплата Salaries=Зарплаты Employee=Сотрудник @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/ru_RU/sendings.lang b/htdocs/langs/ru_RU/sendings.lang index 154a05a98d6..efb3246b409 100644 --- a/htdocs/langs/ru_RU/sendings.lang +++ b/htdocs/langs/ru_RU/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Количество заказанных QtyShipped=Количество отгружен QtyToShip=Количество судов QtyReceived=Количество получил -KeepToShip=Держите на корабль +KeepToShip=Remain to ship OtherSendingsForSameOrder=Другие отправок с этой целью DateSending=Дата отправки порядка DateSendingShort=Дата отправки порядка diff --git a/htdocs/langs/ru_RU/stocks.lang b/htdocs/langs/ru_RU/stocks.lang index 4a5e5c6071f..d89cb572fa1 100644 --- a/htdocs/langs/ru_RU/stocks.lang +++ b/htdocs/langs/ru_RU/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Значение PMPValueShort=WAP EnhancedValueOfWarehouses=Склады стоимости UserWarehouseAutoCreate=Создать запас автоматически при создании пользователя +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Количество направил QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=Склад %s будет использован WarehouseForStockIncrease=Склад %s будет использован для увеличения остатка ForThisWarehouse=Для этого склада ReplenishmentStatusDesc=Это список всех продуктов с остатками меньше лимита (или меньше чем значение для оповещения если отмечен чекбокс "только оповещение"), и рекомендуем вам сформировать заказ поставщикам чтобы восполнить разницу -ReplenishmentOrdersDesc=Это список всех открытых заказов Поставщикам +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Пополнения NbOfProductBeforePeriod=Количество продукта %s в остатке на начало выбранного периода (< %s) NbOfProductAfterPeriod=Количество продукта %s в остатке на конец выбранного периода (< %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/ru_RU/suppliers.lang b/htdocs/langs/ru_RU/suppliers.lang index 02adddbc84c..cb0690f2bdf 100644 --- a/htdocs/langs/ru_RU/suppliers.lang +++ b/htdocs/langs/ru_RU/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Поставщики -Supplier=Поставщик AddSupplier=Create a supplier SupplierRemoved=Поставщик удален SuppliersInvoice=Счета-фактуры от поставщиков @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Поставщиком счета-фактуры и ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Утвердить этот заказ ConfirmApproveThisOrder=Вы уверены, что хотите утвердить этот порядок? -DenyingThisOrder=Отказ в таком порядке +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Вы уверены, что хотите лишить этого заказа? ConfirmCancelThisOrder=Вы уверены, что хотите отменить этот заказ? AddCustomerOrder=Создать клиента порядка diff --git a/htdocs/langs/ru_RU/trips.lang b/htdocs/langs/ru_RU/trips.lang index f72d0e09b18..ceb0857662a 100644 --- a/htdocs/langs/ru_RU/trips.lang +++ b/htdocs/langs/ru_RU/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Поездка -Trips=Поездки -TripsAndExpenses=Поездки и расходы -TripsAndExpensesStatistics=Статистика поездок и расходов -TripCard=Карточка поездки -AddTrip=Добавить поездку -ListOfTrips=Список поездок +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Список сборов -NewTrip=Новая Поездка +NewTrip=New expense report CompanyVisited=Посещенная организация Kilometers=Километры FeesKilometersOrAmout=Сумма или километры -DeleteTrip=Удалить поездку -ConfirmDeleteTrip=Вы уверены, что хотите удалить эту поездку? -TF_OTHER=Другое -TF_LUNCH=Обед -TF_TRIP=Поездка -ListTripsAndExpenses=Список поездок и расходов -ExpensesArea=Область поездок и расходов -SearchATripAndExpense=Поиск поездок и расходов +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Другое +TF_TRANSPORTATION=Transportation +TF_LUNCH=Обед +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/ru_UA/contracts.lang b/htdocs/langs/ru_UA/contracts.lang index 74b462d5a7b..47e2f92dae0 100644 --- a/htdocs/langs/ru_UA/contracts.lang +++ b/htdocs/langs/ru_UA/contracts.lang @@ -1,7 +1,6 @@ # Dolibarr language file - Source file is en_US - contracts ContractsArea=Контракты области ListOfContracts=Список контрактов -LastContracts=Последнее изменение %s контрактов AllContracts=Все контракты ContractCard=Договор карты ContractStatus=Договор статус @@ -23,6 +22,7 @@ ListOfInactiveServices=Список услуг не активны ListOfExpiredServices=Список истек активные службы ListOfClosedServices=Список закрытых услуг ListOfRunningContractsLines=Список бегущие строки контракта +LastContracts=Последнее изменение %s контрактов NbOfServices=Кол-услуг DeleteContractLine=Удалить контракт линии ConfirmDeleteContractLine=Вы действительно хотите удалить этот контракт линии? diff --git a/htdocs/langs/ru_UA/install.lang b/htdocs/langs/ru_UA/install.lang index e097ba6161a..b4a3228f330 100644 --- a/htdocs/langs/ru_UA/install.lang +++ b/htdocs/langs/ru_UA/install.lang @@ -39,7 +39,6 @@ PasswordAgain=Введите пароль еще раз во второй раз CheckToCreateUser=Флажок, если владелец базы данных не существует, и должен быть создан.
В этом случае, вы должны выбрать его Логин и пароль, а также заполнить Логин / пароль для суперпользователя в нижней части этой страницы. Если этот флажок не установлен, владелец базы данных и ее пароли должны существует. Experimental=(Экспериментальная) DatabaseRootLoginDescription=Войти на пользователя позволили создать новые базы данных или новых пользователей, бесполезны, если ваша база данных и база данных Войти уже существует (например, когда вы организовано провайдера веб-хостинг). -SaveConfigurationFile=Сохранить значения ServerConnection=Соединение с сервером UserCreation=Пользователь создания AdminAccountCreation=Администратор Войти создания @@ -56,7 +55,6 @@ ThisPHPDoesNotSupportTypeBase=Эта система PHP не поддержив FunctionNotAvailableInThisPHP=Не доступно для этого PHP MigrateScript=Миграция сценариев ChoosedMigrateScript=Выберите сценарий миграции -DataMigration=Миграция данных ChooseYourSetupMode=Выберите режим настройки и нажмите кнопку "Пуск" ... FreshInstall=Свежая установка FreshInstallDesc=Используйте этот режим, если это ваша первая установка. Если нет, то этот режим может восстановить неполной предыдущей версии, но если вы хотите обновить версию, выберите "Обновить" режиме. diff --git a/htdocs/langs/ru_UA/main.lang b/htdocs/langs/ru_UA/main.lang index 9e92814a6a4..4d6b3876288 100644 --- a/htdocs/langs/ru_UA/main.lang +++ b/htdocs/langs/ru_UA/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=dd.MM.yyyy FormatDateShortJavaInput=dd.MM.yyyy FormatDateShortJQuery=dd.mm.yy FormatDateShortJQueryInput=dd.mm.yy +FormatHourShortJQuery=HH:MI FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y diff --git a/htdocs/langs/sk_SK/admin.lang b/htdocs/langs/sk_SK/admin.lang index e1e17cfe342..93790b6a9c3 100644 --- a/htdocs/langs/sk_SK/admin.lang +++ b/htdocs/langs/sk_SK/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimentálne VersionDevelopment=Vývoj VersionUnknown=Neznámy VersionRecommanded=Odporúčané +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=ID relácie SessionSaveHandler=Handler pre uloženie sedenia SessionSavePath=Skladovanie zasadnutie lokalizácia @@ -493,10 +498,16 @@ Module600Name=Upozornenie Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Dary Module700Desc=Darovanie riadenie +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integrácia Module1400Name=Účtovníctvo Module1400Desc=Vedenie účtovníctva (dvojité strany) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Kategórie Module1780Desc=Category management (produkty, dodávatelia a odberatelia) Module2000Name=WYSIWYG editor @@ -631,7 +642,7 @@ Permission181=Prečítajte si dodávateľských objednávok Permission182=Vytvoriť / upraviť dodávateľskej objednávky Permission183=Overiť dodávateľských objednávok Permission184=Schváliť dodávateľských objednávok -Permission185=Objednávky Objednať dodávateľ +Permission185=Order or cancel supplier orders Permission186=Príjem objednávok s dodávateľmi Permission187=Zavrieť dodávateľské objednávky Permission188=Zrušiť dodávateľských objednávok @@ -711,6 +722,13 @@ Permission538=Export služieb Permission701=Prečítajte si dary Permission702=Vytvoriť / upraviť dary Permission703=Odstrániť dary +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Prečítajte si zásoby Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Heslo používať proxy server DefineHereComplementaryAttributes=Definujte tu všetky atribúty, ktoré ešte nie sú k dispozícii v predvolenom nastavení, a že chcete byť podporované %s. ExtraFields=Doplnkové atribúty ExtraFieldsLines=Doplnkové atribúty (linky) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Doplnkové atribúty (thirdparty) ExtraFieldsContacts=Doplnkové atribúty (kontakt / adresa) ExtraFieldsMember=Doplnkové atribúty (člen) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Rad výrobkov / služieb s nulovej hodnoty je považov FreeLegalTextOnProposal=Voľný text o obchodných návrhov WatermarkOnDraftProposal=Vodoznak na predlôh návrhov komerčných (none ak prázdny) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Objednať riadenie nastavenia OrdersNumberingModules=Objednávky číslovanie modelov @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Čiarových kódov typu UPC BarcodeDescISBN=Čiarový kód typu ISBN BarcodeDescC39=Čiarový kód typu C39 BarcodeDescC128=Čiarový kód typu C128 -GenbarcodeLocation=Bar generovanie kódu nástroj pre príkazový riadok (používaný motorom s vnútorným u niektorých typov čiarových kódov) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Vnútorná motor BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Predvolený účet použiť na príjem platieb v hotovosti CashDeskBankAccountForCheque= Predvolený účet použiť pre príjem platieb šekom CashDeskBankAccountForCB= Predvolený účet použiť pre príjem platieb prostredníctvom kreditnej karty -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Záložka Nastavenie modulu @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/sk_SK/banks.lang b/htdocs/langs/sk_SK/banks.lang index ef5bfa2db54..b1c325a49e3 100644 --- a/htdocs/langs/sk_SK/banks.lang +++ b/htdocs/langs/sk_SK/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Zmierenie RIB=Číslo bankového účtu IBAN=IBAN +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC / SWIFT číslo +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Trvalé príkazy StandingOrder=Trvalý príkaz Withdrawals=Výbery @@ -148,7 +152,7 @@ BackToAccount=Späť na účte ShowAllAccounts=Zobraziť pre všetky účty FutureTransaction=Transakcie v Futur. Žiadny spôsob, ako sa zmieriť. SelectChequeTransactionAndGenerate=Výber / filter, aby kontroly zahŕňali do obdržaní šeku vkladov a kliknite na "Vytvoriť". -InputReceiptNumber=Vyberte si výpis z účtu súvisiace s zmierovacom konaní. Použite Sortable číselnú hodnotu (napríklad RRRRMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Nakoniec určiť kategóriu, v ktorej chcete klasifikovať záznamy ToConciliate=Zmieriť? ThenCheckLinesAndConciliate=Potom skontrolujte, či riadky, ktoré sú vo výpise z účtu a potom kliknite na tlačidlo diff --git a/htdocs/langs/sk_SK/commercial.lang b/htdocs/langs/sk_SK/commercial.lang index 4fe069876c1..7be1dd39c7f 100644 --- a/htdocs/langs/sk_SK/commercial.lang +++ b/htdocs/langs/sk_SK/commercial.lang @@ -9,9 +9,9 @@ Prospect=Vyhliadka Prospects=Vyhliadky DeleteAction=Odstrániť udalosť / úlohu NewAction=Nová udalosť / úlohu -AddAction=Pridať udalosť / úlohu -AddAnAction=Pridať udalosť / úlohu -AddActionRendezVous=Pridať Rendez-vous udalosti +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Schôdzka ConfirmDeleteAction=Ste si istí, že chcete zmazať túto udalosť / úlohu? CardAction=Udalosť karty @@ -44,8 +44,8 @@ DoneActions=Dokončenej akcie DoneActionsFor=Dokončenej akcie pre %s ToDoActions=Neúplné udalosti ToDoActionsFor=Neúplné akcie pre %s -SendPropalRef=Poslať komerčné návrhu %s -SendOrderRef=Pošli objednávku %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Nevzťahuje sa StatusActionToDo=Ak chcete StatusActionDone=Dokončiť @@ -62,7 +62,7 @@ LastProspectContactDone=Spojiť sa vykonáva DateActionPlanned=Dátum Akcie plánované na DateActionDone=Dátum Akcia vykonané ActionAskedBy=Akcia hlásené -ActionAffectedTo=Udalosť priradená +ActionAffectedTo=Event assigned to ActionDoneBy=Udalosť vykonáva ActionUserAsk=Spracoval ErrorStatusCantBeZeroIfStarted=Ak pole 'Dátum urobiť "je naplnený, je akcia zahájená (alebo hotový), tak pole" Stav "nemôže byť 0%%. diff --git a/htdocs/langs/sk_SK/contracts.lang b/htdocs/langs/sk_SK/contracts.lang index 9ed7ccf7da6..25cf7fc7e01 100644 --- a/htdocs/langs/sk_SK/contracts.lang +++ b/htdocs/langs/sk_SK/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Vypršala ServiceStatusClosed=Zatvorené ServicesLegend=Služby legenda Contracts=Zmluvy +ContractsAndLine=Contracts and line of contracts Contract=Zmluva NoContracts=Žiadne zmluvy MenuServices=Služby diff --git a/htdocs/langs/sk_SK/cron.lang b/htdocs/langs/sk_SK/cron.lang index 4e1717149a8..5161517c219 100644 --- a/htdocs/langs/sk_SK/cron.lang +++ b/htdocs/langs/sk_SK/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell príkaz CronMenu=Cron CronCannotLoadClass=Nemožno načítať triedu alebo objekt %s %s UseMenuModuleToolsToAddCronJobs=Choďte do menu "Home - Moduly náradie - Zoznam úloh" vidieť a upravovať naplánované úlohy. +TaskDisabled=Task disabled diff --git a/htdocs/langs/sk_SK/errors.lang b/htdocs/langs/sk_SK/errors.lang index 17b73f827fd..dc5032cc33a 100644 --- a/htdocs/langs/sk_SK/errors.lang +++ b/htdocs/langs/sk_SK/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Zdrojovej a cieľovej bankové účty musí byť ErrorBadThirdPartyName=Nesprávna hodnota pre tretie strany menom ErrorProdIdIsMandatory=%s je povinné ErrorBadCustomerCodeSyntax=Bad syntaxe pre zákazníka kódu -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Zákazník požadoval kód ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Zákaznícky kód už používaný @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript musí byť vypnutá, že táto funkcia p ErrorPasswordsMustMatch=Obaja napísaný hesla sa musia zhodovať sa navzájom ErrorContactEMail=Technické chybe. Prosím, obráťte sa na správcu, aby e-mailovú %s en poskytovať %s kód chyby v správe, alebo ešte lepšie pridaním obrazovky kópiu tejto stránky. ErrorWrongValueForField=Chybná hodnota %s číslo poľa (hodnota "%s 'nezodpovedá regex pravidiel %s) -ErrorFieldValueNotIn=Chybná hodnota %s číslo poľa (hodnota "%s 'nie je dostupná hodnota do poľa %s stolových %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Chybná hodnota %s číslo poľa (hodnota "%s" nie je %s existujúce ref) ErrorsOnXLines=Chyby na %s zdrojovom zázname (s) ErrorFileIsInfectedWithAVirus=Antivírusový program nebol schopný overiť súbor (súbor môže byť napadnutý vírusom) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Povinné parametre sú doteraz stanovené diff --git a/htdocs/langs/sk_SK/install.lang b/htdocs/langs/sk_SK/install.lang index 23665b14d23..f3ebf70457a 100644 --- a/htdocs/langs/sk_SK/install.lang +++ b/htdocs/langs/sk_SK/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Posledný krok: Definujte tu prihlasovacie meno a ActivateModule=Aktivácia modulu %s ShowEditTechnicalParameters=Kliknite tu pre zobrazenie / editovať pokročilé parametre (expertný režim) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/sk_SK/main.lang b/htdocs/langs/sk_SK/main.lang index 9774b798099..12ea65a49b3 100644 --- a/htdocs/langs/sk_SK/main.lang +++ b/htdocs/langs/sk_SK/main.lang @@ -141,6 +141,7 @@ Cancel=Zrušiť Modify=Upraviť Edit=Upraviť Validate=Potvrdiť +ValidateAndApprove=Validate and Approve ToValidate=Ak chcete overiť Save=Uložiť SaveAs=Uložiť ako @@ -158,6 +159,7 @@ Search=Vyhľadávanie SearchOf=Vyhľadávanie Valid=Platný Approve=Schvaľovať +Disapprove=Disapprove ReOpen=Znovu otvoriť Upload=Odoslať súbor ToLink=Odkaz @@ -219,6 +221,7 @@ Cards=Karty Card=Karta Now=Teraz Date=Dátum +DateAndHour=Date and hour DateStart=Dátum začiatku DateEnd=Dátum ukončenia DateCreation=Dátum vytvorenia @@ -295,6 +298,7 @@ UnitPriceHT=Jednotková cena (bez DPH) UnitPriceTTC=Jednotková cena PriceU=UP PriceUHT=UP (bez DPH) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=UP Amount=Množstvo AmountInvoice=Fakturovaná čiastka @@ -521,6 +525,7 @@ DateFromTo=Od %s na %s DateFrom=Od %s DateUntil=Do %s Check=Kontrola +Uncheck=Uncheck Internal=Vnútorné External=Externé Internals=Vnútorné @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Pondelok Tuesday=Utorok diff --git a/htdocs/langs/sk_SK/orders.lang b/htdocs/langs/sk_SK/orders.lang index 519ef09d036..baa18258b8c 100644 --- a/htdocs/langs/sk_SK/orders.lang +++ b/htdocs/langs/sk_SK/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Zrušený StatusOrderDraft=Návrh (musí byť overená) StatusOrderValidated=Overené StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Spracované StatusOrderToBill=Dodáva sa StatusOrderToBill2=K účtu @@ -58,6 +59,7 @@ MenuOrdersToBill=Objednávky dodaný MenuOrdersToBill2=Billable orders SearchOrder=Hľadať účelom SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Loď produkt Discount=Zľava CreateOrder=Vytvoriť objednávku diff --git a/htdocs/langs/sk_SK/other.lang b/htdocs/langs/sk_SK/other.lang index 113f2d7dc2e..f89916a11c2 100644 --- a/htdocs/langs/sk_SK/other.lang +++ b/htdocs/langs/sk_SK/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximálny rozmer AttachANewFile=Pripojte nový súbor / dokument LinkedObject=Prepojený objekt Miscellaneous=Zmiešaný -NbOfActiveNotifications=Počet oznámení +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Toto je test e-mailom. \\ NAk dva riadky sú oddelené znakom konca riadku. \n\n __ SIGNATURE__ PredefinedMailTestHtml=Toto je test-mail (slovo test musí byť tučne).
Dva riadky sú oddelené znakom konca riadku.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/sk_SK/productbatch.lang b/htdocs/langs/sk_SK/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/sk_SK/productbatch.lang +++ b/htdocs/langs/sk_SK/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/sk_SK/products.lang b/htdocs/langs/sk_SK/products.lang index 45d5006cb75..667875f4e17 100644 --- a/htdocs/langs/sk_SK/products.lang +++ b/htdocs/langs/sk_SK/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/sk_SK/projects.lang b/htdocs/langs/sk_SK/projects.lang index ae27e1348b2..8963a13c602 100644 --- a/htdocs/langs/sk_SK/projects.lang +++ b/htdocs/langs/sk_SK/projects.lang @@ -8,8 +8,10 @@ SharedProject=Všetci PrivateProject=Kontakty na projekte MyProjectsDesc=Tento pohľad je obmedzená na projekty, ste kontakt (nech je to typ). ProjectsPublicDesc=Tento názor predstavuje všetky projekty, ktoré sú prístupné pre čítanie. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Tento názor predstavuje všetky projekty (užívateľského oprávnenia udeliť oprávnenie k nahliadnutiu všetko). MyTasksDesc=Tento pohľad je obmedzená na projekty alebo úlohy, ktoré sú pre kontakt (nech je to typ). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Tento názor predstavuje všetky projekty a úlohy, ktoré sú prístupné pre čítanie. TasksDesc=Tento názor predstavuje všetky projekty a úlohy (vaše užívateľské oprávnenia udeliť oprávnenie k nahliadnutiu všetko). ProjectsArea=Projekty oblasť @@ -29,6 +31,8 @@ NoProject=Žiadny projekt definovaný alebo vlastné NbOpenTasks=Nb otvorených úloh NbOfProjects=Nb projektov TimeSpent=Čas strávený +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Čas strávený RefTask=Ref úloha LabelTask=Label úloha @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Zoznam dodávateľa zákaziek súvisiace s p ListSupplierInvoicesAssociatedProject=Zoznam dodávateľských faktúr súvisiace s projektom ListContractAssociatedProject=Zoznam zákaziek súvisiacich s projektom ListFichinterAssociatedProject=Zoznam výkonov spojených s projektom -ListTripAssociatedProject=Zoznam ciest a nákladov spojených s projektom +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Zoznam udalostí spojených s projektom ActivityOnProjectThisWeek=Aktivita na projekte tento týždeň ActivityOnProjectThisMonth=Aktivita na projekte tento mesiac @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/sk_SK/salaries.lang b/htdocs/langs/sk_SK/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/sk_SK/salaries.lang +++ b/htdocs/langs/sk_SK/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/sk_SK/sendings.lang b/htdocs/langs/sk_SK/sendings.lang index a28b7441b89..1d57822a222 100644 --- a/htdocs/langs/sk_SK/sendings.lang +++ b/htdocs/langs/sk_SK/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Množstvo objednať QtyShipped=Množstvo odoslané QtyToShip=Množstvo na loď QtyReceived=Množstvo prijatej -KeepToShip=Majte na loď +KeepToShip=Remain to ship OtherSendingsForSameOrder=Ďalšie zásielky pre túto objednávku DateSending=Dátum odoslania, aby DateSendingShort=Dátum odoslania, aby diff --git a/htdocs/langs/sk_SK/stocks.lang b/htdocs/langs/sk_SK/stocks.lang index 80d09deb48a..80cf13a58f0 100644 --- a/htdocs/langs/sk_SK/stocks.lang +++ b/htdocs/langs/sk_SK/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Vážená priemerná cena PMPValueShort=WAP EnhancedValueOfWarehouses=Sklady hodnota UserWarehouseAutoCreate=Vytvorte sklad automaticky pri vytváraní užívateľa +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Množstvo odoslané QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=Skladová %s budú použité pre zníženie skl WarehouseForStockIncrease=Skladová %s budú použité pre zvýšenie stavu zásob ForThisWarehouse=Z tohto skladu ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=Toto je zoznam všetkých otvorených dodávateľských objednávok +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Splátky NbOfProductBeforePeriod=Množstvo produktov %s na sklade, než zvolené obdobie (<%s) NbOfProductAfterPeriod=Množstvo produktov %s na sklade po zvolené obdobie (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/sk_SK/suppliers.lang b/htdocs/langs/sk_SK/suppliers.lang index 5d04f2d96fd..8917cbe8b4e 100644 --- a/htdocs/langs/sk_SK/suppliers.lang +++ b/htdocs/langs/sk_SK/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Dodávatelia -Supplier=Dodávateľ AddSupplier=Create a supplier SupplierRemoved=Dodávateľ odstráni SuppliersInvoice=Dodávatelia faktúra @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Dodávateľ faktúry a platby ExportDataset_fournisseur_3=Dodávateľ objednávky a objednávka linky ApproveThisOrder=Schváliť túto objednávku ConfirmApproveThisOrder=Ste si istí, že chcete schváliť poradí %s? -DenyingThisOrder=Popierať túto objednávku +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Ste si istí, že chcete popierať objednávky %s? ConfirmCancelThisOrder=Ste si istí, že chcete zrušiť túto objednávku %s? AddCustomerOrder=Vytvorenie objednávky zákazníka diff --git a/htdocs/langs/sk_SK/trips.lang b/htdocs/langs/sk_SK/trips.lang index 1367186b021..aa91658f502 100644 --- a/htdocs/langs/sk_SK/trips.lang +++ b/htdocs/langs/sk_SK/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Výlet -Trips=Výlety -TripsAndExpenses=Výlety a výdavky -TripsAndExpensesStatistics=Výlety a výdavky štatistiky -TripCard=Výlet karty -AddTrip=Pridať výlet -ListOfTrips=Zoznam ciest +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Sadzobník poplatkov -NewTrip=Nová cesta +NewTrip=New expense report CompanyVisited=Firma / nadácie navštívil Kilometers=Kilometre FeesKilometersOrAmout=Množstvo alebo kilometrov -DeleteTrip=Odstrániť výlet -ConfirmDeleteTrip=Ste si istí, že chcete zmazať túto cestu? -TF_OTHER=Ostatné -TF_LUNCH=Obed -TF_TRIP=Výlet -ListTripsAndExpenses=Zoznam ciest a nákladov -ExpensesArea=Výlety a náklady oblasť -SearchATripAndExpense=Hľadať na výlet a náklady +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Ostatné +TF_TRANSPORTATION=Transportation +TF_LUNCH=Obed +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/sl_SI/admin.lang b/htdocs/langs/sl_SI/admin.lang index 74e7506e000..e214389ecea 100644 --- a/htdocs/langs/sl_SI/admin.lang +++ b/htdocs/langs/sl_SI/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Preizkusna VersionDevelopment=Razvojna VersionUnknown=Neznana VersionRecommanded=Priporočena +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=ID seje SessionSaveHandler=Rutina za shranjevanje seje SessionSavePath=Lokalizacija shranjevanja seje @@ -493,10 +498,16 @@ Module600Name=Obvestila Module600Desc=Pošiljanje obvestil o nekaterih Dolibarr dogodkih po e-mailu kontaktom pri partnerjih (nastavitev je določena za vsakega partnerja) Module700Name=Donacije Module700Desc=Upravljanje donacij +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integracija Module1400Name=Računovodstvo Module1400Desc=Upravljanje računovodstva (dvostavno) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Kategorije Module1780Desc=Upravljanje kategorij (proizvodi, dobavitelji in kupci) Module2000Name=Fck urejevalnik @@ -631,7 +642,7 @@ Permission181=Branje naročil pri dobaviteljih Permission182=Kreiranje/spreminjanje naročil pri dobaviteljih Permission183=Potrjevanje naročil pri dobaviteljih Permission184=Odobritev naročil pri dobaviteljih -Permission185=Naročanje naročil pri dobaviteljih +Permission185=Order or cancel supplier orders Permission186=Prejem naročil pri dobaviteljih Permission187=Zaključek naročil pri dobaviteljih Permission188=Preklic naročil pri dobaviteljih @@ -711,6 +722,13 @@ Permission538=Izvoz storitev Permission701=Branje donacij Permission702=Kreiranje/spreminjanje donacij Permission703=Delete donacij +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Branje zalog Permission1002=Kreiranje/spreminjanje skladišč Permission1003=Brisanje skladišč @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Geslo za uporabo proxy strežnika DefineHereComplementaryAttributes=Tukaj doloćite vse atribute, ki niso na voljo kot privzeti, vendar želite da so podprti za %s. ExtraFields=Koplementarni atributi ExtraFieldsLines=Koplementarni atributi (postavke) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Koplementarni atributi (partner) ExtraFieldsContacts=Koplementarni atributi (kontakt/naslov) ExtraFieldsMember=Koplementarni atributi (član) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Vrstica proizvoda/storitve z vrednostjo 0 se smatra ko FreeLegalTextOnProposal=Poljubno besedilo na komercialni ponudbi WatermarkOnDraftProposal=Vodni tisk na osnutkih komercialnih ponudb (brez, če je prazno) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Vprašajte za ciljni bančni račun ponudbe +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Nastavitve upravljanja z naročili OrdersNumberingModules=Moduli za številčenje naročil @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Črtna koda tipa UPC BarcodeDescISBN=Črtna koda tipa ISBN BarcodeDescC39=Črtna koda tipa C39 BarcodeDescC128=Črtna koda tipa C128 -GenbarcodeLocation=Orodje za generiranje črtne kode preko komandne vrstice (uporablja ga 'phpbarcode engine' za nekatere tipe črtnih kod) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Interno orodje BarCodeNumberManager=Upravljanje avtomatskega določanja številk črtnih kod ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Privzet generični partner, ki se uporabi za prodajo CashDeskBankAccountForSell=Račun, ki se uporabi za prejem gotovinskih plačil CashDeskBankAccountForCheque= Račun, ki se uporabi za prejem plačil s čeki CashDeskBankAccountForCB= Račun, ki se uporabi za prejem plačil s kreditnimi karticami -CashDeskDoNotDecreaseStock=Onemogoči zmanjšanje zaloge, če je prodaja izvršena s prodajnega mesta POS +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Prisilite ali blokirajte skladišče, uporabljeno za zmanjšanje zalog StockDecreaseForPointOfSaleDisabled=Onemogočeno zmanjševanje zaloge s prodajnega mesta POS +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=Niste omogočili zmanjšanje zaloge ob prodaji na prodajnem mestu POS. Potrebno je skladišče. ##### Bookmark ##### BookmarkSetup=Nastavitev modula za zaznamke @@ -1569,3 +1597,7 @@ SortOrder=Sortiraj naročilo Format=Format TypePaymentDesc=0:Tip plačila stranke, 1:Tip plačila dobavitelju, 2:Tip plačila stranke in dobavitelju IncludePath=Vključi pot (definirana v spremenljivki %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/sl_SI/banks.lang b/htdocs/langs/sl_SI/banks.lang index fdf87b11e54..a74dde0ed85 100644 --- a/htdocs/langs/sl_SI/banks.lang +++ b/htdocs/langs/sl_SI/banks.lang @@ -33,7 +33,11 @@ AllTime=Od začetka Reconciliation=Usklajevanje RIB=Transakcijski račun IBAN=IBAN številka +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT številka +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Trajni nalogi StandingOrder=Trajni nalog Withdrawals=Dvigi @@ -148,7 +152,7 @@ BackToAccount=Nazaj na račun ShowAllAccounts=Prikaži vse račune FutureTransaction=Bodoča transakcija. Ni možna uskladitev. SelectChequeTransactionAndGenerate=Izberi/filtriraj čeke za vključitev v prevzemnico čekovnih nakazil in klikni na "Ustvari" -InputReceiptNumber=Izberi bančni izpisek, povezan s posredovanjem. Uporabi numerično vrednost, ki se lahko sortira (npr.: YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventuelno določi kategorijo, v katero se razvrsti zapis ToConciliate=Za posredovanje? ThenCheckLinesAndConciliate=Nato preveri vrstice na bančnem izpisku in klikni diff --git a/htdocs/langs/sl_SI/commercial.lang b/htdocs/langs/sl_SI/commercial.lang index b5ffccdb1e1..d69651c6025 100644 --- a/htdocs/langs/sl_SI/commercial.lang +++ b/htdocs/langs/sl_SI/commercial.lang @@ -9,9 +9,9 @@ Prospect=Možna stranka Prospects=Možne stranke DeleteAction=Brisanje aktivnosti/naloge NewAction=Nova aktivnost/naloga -AddAction=Dodaj aktivnost/nalogo -AddAnAction=Dodajanje aktivnosti/naloge -AddActionRendezVous=Dodaj nalogo/srečanje +AddAction=Ustvari dogodek/nalogo +AddAnAction=Ustvari dogodek/nalogo +AddActionRendezVous=Ustvari srečanje Rendez-Vous=Srečanje ConfirmDeleteAction=Ali zares želite izbrisati to nalogo? CardAction=Kartica aktivnosti @@ -44,8 +44,8 @@ DoneActions=Dokončane aktivnosti DoneActionsFor=Dokončane aktivnosti za %s ToDoActions=Nedokončane aktivnosti ToDoActionsFor=Nedokončane aktivnosti za %s -SendPropalRef=Poslana komercialna ponudba %s -SendOrderRef=Poslano naročilo %s +SendPropalRef=Oddaja komercialne ponudbe %s +SendOrderRef=Oddaja naročila %s StatusNotApplicable=Ni veljaven StatusActionToDo=Odprto StatusActionDone=Dokončano @@ -62,7 +62,7 @@ LastProspectContactDone=Kontakt izveden DateActionPlanned=Datum planirane aktivnosti za DateActionDone=Datum izvedene aktivnosti ActionAskedBy=Aktivnost zahteval -ActionAffectedTo=Aktivnost, ki se tiče +ActionAffectedTo=Event assigned to ActionDoneBy=Aktivnost izvedel ActionUserAsk=Zabeležil ErrorStatusCantBeZeroIfStarted=Če je polje 'Date done' izpolnjeno, je aktivnost začeta (ali končana), zato polje 'Status' ne more biti 0%%. diff --git a/htdocs/langs/sl_SI/contracts.lang b/htdocs/langs/sl_SI/contracts.lang index 8f74a40c7c8..60ef9ee1b04 100644 --- a/htdocs/langs/sl_SI/contracts.lang +++ b/htdocs/langs/sl_SI/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Potekla ServiceStatusClosed=Zaključena ServicesLegend=Legenda storitev Contracts=Pogodbe +ContractsAndLine=Contracts and line of contracts Contract=Pogodba NoContracts=Ni pogodb MenuServices=Storitve diff --git a/htdocs/langs/sl_SI/cron.lang b/htdocs/langs/sl_SI/cron.lang index 298acce66f0..a6e87be5cfe 100644 --- a/htdocs/langs/sl_SI/cron.lang +++ b/htdocs/langs/sl_SI/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/sl_SI/errors.lang b/htdocs/langs/sl_SI/errors.lang index 78f2fc71dba..8417f316e28 100644 --- a/htdocs/langs/sl_SI/errors.lang +++ b/htdocs/langs/sl_SI/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Plačilni in ciljni bančni račun morata biti ra ErrorBadThirdPartyName=Napačno ime partnerja ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Napačna koda kupca -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Obvezna koda kupca ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Koda kupca je že uporabljena @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript ne sme biti izklopljen, če želite da t ErrorPasswordsMustMatch=Obe vneseni gesli se morata ujemati ErrorContactEMail=Prišlo je do tehnične napake. Prosimo, obrnite se na administratorja na naslednji Email %s in mu sporočite kodo napake %s, Še bolje pa je, če priložite kopijo strani z napako. ErrorWrongValueForField=Napačna vrednost v polju številka %s (vrednost '%s' ne ustreza pravilu %s) -ErrorFieldValueNotIn=Napačna vrednost v polju številka%s (vrednost '%s' ni vrednost, ki je na voljo v polju %s tabele %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Napačna vrednost za %s številka polja (Vrednost '%s "ni %s obstoječe ref) ErrorsOnXLines=Napake v %s vrsticah izvorne kode ErrorFileIsInfectedWithAVirus=Antivirusni program ni mogel potrditi datoteke (datoteka je morda okužena) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/sl_SI/install.lang b/htdocs/langs/sl_SI/install.lang index ca1de1fe210..05e51e48ef4 100644 --- a/htdocs/langs/sl_SI/install.lang +++ b/htdocs/langs/sl_SI/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Zadnji korak: Tukaj določite uporabniško ime in ActivateModule=Vključite modul %s ShowEditTechnicalParameters=Kliknite tukaj za prikaz/popravek naprednih parametrov (expertni način) WarningUpgrade=Pozor:\nAli ste najprej naredili varnostno kopijo baze podatkov ?\nTo je zelo priporočeno: na primer zaradi nekaterih hroščev v sistemu baze podatkov (na primer mysql verzija 5.5.40), lahko med tem postopkom izgubite nekatere podatke ali tabele, zato je priporočeno imeti celotno kopijo vaše baze podatkov pred začetkom migracije.\n\nKliknite OK za začetek procesa migracije... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/sl_SI/main.lang b/htdocs/langs/sl_SI/main.lang index fce08c4ae5f..a41f62aba48 100644 --- a/htdocs/langs/sl_SI/main.lang +++ b/htdocs/langs/sl_SI/main.lang @@ -141,6 +141,7 @@ Cancel=Razveljavi Modify=Spremeni Edit=Uredi Validate=Potrdi +ValidateAndApprove=Validate and Approve ToValidate=Za potrditev Save=Shrani SaveAs=Shrani kot @@ -158,6 +159,7 @@ Search=Išči SearchOf=Iskanje Valid=Veljaven Approve=Potrdi +Disapprove=Disapprove ReOpen=Ponovno odpri Upload=Dodaj datoteko ToLink=Povezava @@ -219,6 +221,7 @@ Cards=Kartice Card=Kartica Now=Zdaj Date=Datum +DateAndHour=Date and hour DateStart=Začetni datum DateEnd=Končni datum DateCreation=Datum kreiranja @@ -295,6 +298,7 @@ UnitPriceHT=Cena enote (neto) UnitPriceTTC=Cena enote PriceU=C.E. PriceUHT=C.E. (neto) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=C.E. Amount=Znesek AmountInvoice=Znesek računa @@ -521,6 +525,7 @@ DateFromTo=Od %s do %s DateFrom=Od %s DateUntil=Do %s Check=Preveri +Uncheck=Uncheck Internal=Interno External=Eksterno Internals=Interni @@ -688,6 +693,7 @@ PublicUrl=Javni URL AddBox=Dodaj okvir SelectElementAndClickRefresh=Izberi element in klikni osveži PrintFile=Natisni datoteko %s +ShowTransaction=Show transaction # Week day Monday=Ponedeljek Tuesday=Torek diff --git a/htdocs/langs/sl_SI/orders.lang b/htdocs/langs/sl_SI/orders.lang index 876d57cf02b..eb4d92ac319 100644 --- a/htdocs/langs/sl_SI/orders.lang +++ b/htdocs/langs/sl_SI/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Preklicano StatusOrderDraft=Osnutek (potrebno potrditi) StatusOrderValidated=Potrjeno StatusOrderOnProcess=Naročeno - čaka na prevzem +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Obdelano StatusOrderToBill=Za fakturiranje StatusOrderToBill2=Za fakturiranje @@ -58,6 +59,7 @@ MenuOrdersToBill=Naročila za fakturiranje MenuOrdersToBill2=Naročila za fakturiranje SearchOrder=Iskanje naročila SearchACustomerOrder=Iskanje naročila kupca +SearchASupplierOrder=Search a supplier order ShipProduct=Pošlji izdelek Discount=Popust CreateOrder=Kreiraj naročilo diff --git a/htdocs/langs/sl_SI/other.lang b/htdocs/langs/sl_SI/other.lang index 20246977b5e..7b22d4ec296 100644 --- a/htdocs/langs/sl_SI/other.lang +++ b/htdocs/langs/sl_SI/other.lang @@ -54,12 +54,13 @@ MaxSize=Največja velikost AttachANewFile=Pripni novo datoteko/dokument LinkedObject=Povezani objekti Miscellaneous=Razno -NbOfActiveNotifications=Število sporočil +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=To je testni mail.\nDve vrstici sta ločeni z carriage return. PredefinedMailTestHtml=To je test mail (beseda test mora biti v krepkem tisku).
Dve vrstici sta ločeni z carriage return. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nV prilogi je račun __FACREF__\n\n__PERSONALIZED__S spoštovanjem\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nŽelimo vas opozoriti, da račun __FACREF__ ni bil poravnan. Zato vam račun še enkrat pošiljamo v prilogi.\n\n__PERSONALIZED__S spoštovanjem\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nV prilogi je ponudba __PROPREF__\n\n__PERSONALIZED__S spoštovanjem\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nV prilogi je potrditev naročila __ORDERREF__\n\n__PERSONALIZED__S spoštovanjem\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nV prilogi je naše naročilo __ORDERREF__\n\n__PERSONALIZED__S spoštovanjem\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nV prilogi je račun __FACREF__\n\n__PERSONALIZED__S spoštovanjem\n\n__SIGNATURE__ diff --git a/htdocs/langs/sl_SI/productbatch.lang b/htdocs/langs/sl_SI/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/sl_SI/productbatch.lang +++ b/htdocs/langs/sl_SI/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/sl_SI/products.lang b/htdocs/langs/sl_SI/products.lang index 1af1122f798..66b438442e1 100644 --- a/htdocs/langs/sl_SI/products.lang +++ b/htdocs/langs/sl_SI/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=Tako za proizvode/storitve, kot za nabavne cene, so n PriceExpressionEditorHelp4=Samo za cene proizvodov/storitev: #supplier_min_price#
Samo za nabavne cene: #supplier_quantity# in #supplier_tva_tx# PriceMode=Način cene PriceNumeric=Številka +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/sl_SI/projects.lang b/htdocs/langs/sl_SI/projects.lang index 114bd850d0f..86aa5c2da19 100644 --- a/htdocs/langs/sl_SI/projects.lang +++ b/htdocs/langs/sl_SI/projects.lang @@ -8,8 +8,10 @@ SharedProject=Projekti v skupni rabi PrivateProject=Privatni projekti MyProjectsDesc=Ta pogled je omejen na projekte za katere ste vi kontaktna oseba (ne glede na vrsto). ProjectsPublicDesc=To pogled predstavlja vse projekte, za katere imate dovoljenje za branje. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Ta pogled predstavlja vse projekte (vaše uporabniško dovoljenje vam omogoča ogled vseh). MyTasksDesc=Ta pogled je omejen na projekte ali naloge, za katere ste kontaktna oseba (ne glede na vrsto). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Ta pogled predstavlja vse projekte in naloge, za katere imate dovoljenje za branje. TasksDesc=Ta pogled predstavlja vse projekte in naloge (vaše uporabniško dovoljenje vam omogoča ogled vseh). ProjectsArea=Področje projektov @@ -29,6 +31,8 @@ NoProject=Nimate definiranega ali lastnega projekta NbOpenTasks=Število odprtih nalog NbOfProjects=Število projektov TimeSpent=Porabljen čas +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Porabljen čas RefTask=Referenčna naloga LabelTask=Naziv naloge @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Seznam naročil pri dobaviteljih, povezanih ListSupplierInvoicesAssociatedProject=Seznam računov dobaviteljev, povezanih s projektom ListContractAssociatedProject=Seznam pogodb, povezanih s projektom ListFichinterAssociatedProject=Seznam intervencij, povezanih s projektom -ListTripAssociatedProject=Seznam potovanj in stroškov, povezanih s projektom +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Seznam aktivnosti, povezanih s projektom ActivityOnProjectThisWeek=Aktivnosti na projektu v tem tednu ActivityOnProjectThisMonth=Aktivnosti na projektu v tem mesecu @@ -133,3 +137,6 @@ SearchAProject=Iskanje projekta ProjectMustBeValidatedFirst=Projekt mora biti najprej potrjen ProjectDraft=Osnutek projekta FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/sl_SI/salaries.lang b/htdocs/langs/sl_SI/salaries.lang index 28358cd23ec..6ac11760aea 100644 --- a/htdocs/langs/sl_SI/salaries.lang +++ b/htdocs/langs/sl_SI/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Plača Salaries=Plače Employee=Zaposleni @@ -6,3 +8,6 @@ NewSalaryPayment=Novo izplačilo plače SalaryPayment=Izplačilo plače SalariesPayments=Izplačila plač ShowSalaryPayment=Prikaži izplačilo plač +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/sl_SI/sendings.lang b/htdocs/langs/sl_SI/sendings.lang index 527162ad3d9..5a318a13eb8 100644 --- a/htdocs/langs/sl_SI/sendings.lang +++ b/htdocs/langs/sl_SI/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Naročena količina QtyShipped=Poslana količina QtyToShip=Količina za pošiljanje QtyReceived=Prejeta količina -KeepToShip=Zadrži pošiljanje +KeepToShip=Remain to ship OtherSendingsForSameOrder=Ostale pošiljke za to naročilo DateSending=Datum pošiljanja naročila DateSendingShort=Datum pošiljanja diff --git a/htdocs/langs/sl_SI/stocks.lang b/htdocs/langs/sl_SI/stocks.lang index 3f37e27fd3b..ff1eed42243 100644 --- a/htdocs/langs/sl_SI/stocks.lang +++ b/htdocs/langs/sl_SI/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Uravnotežena povprečna cena PMPValueShort=UPC EnhancedValueOfWarehouses=Vrednost skladišč UserWarehouseAutoCreate=Avtomatsko ustvari zalogo, ko kreirate uporabnika +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Odposlana količina QtyDispatchedShort=Odposlana količina QtyToDispatchShort=Količina za odpošiljanje @@ -110,7 +111,7 @@ WarehouseForStockDecrease=Skladiščee %s bo uporabljeno za zmanjšanje z WarehouseForStockIncrease=Skladišče %s bo uporabljeno za povečanje zaloge ForThisWarehouse=Za to skladišče ReplenishmentStatusDesc=Seznam vseh proizvodov, ki imajo nižje stanje zaloge od želenega (ali nižje od opozorilne vrednosti, če je kvadratek "samo opozorilo" odkljukan) in predlog za kreiranje naročila pri dobavitelju za dopolnitev razlike. -ReplenishmentOrdersDesc=To je seznam vseh odprtih naročil pri dobavitelju +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Obnovitve NbOfProductBeforePeriod=Količina proizvoda %s na zalogi pred izbranim obdobjem (< %s) NbOfProductAfterPeriod=Količina proizvoda %s na zalogi po izbranem obdobju (> %s) @@ -130,3 +131,4 @@ IsInPackage=Vsebina paketa ShowWarehouse=Prikaži skladišče MovementCorrectStock=Popravek količine zaloge za proizvod %s MovementTransferStock=Skladiščni prenos proizvoda %s v drugo skladišče +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/sl_SI/suppliers.lang b/htdocs/langs/sl_SI/suppliers.lang index a19e3dab7e5..ef34fc2ba1b 100644 --- a/htdocs/langs/sl_SI/suppliers.lang +++ b/htdocs/langs/sl_SI/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Dobavitelji -Supplier=Dobavitelj AddSupplier=Ustvari dobavitelja SupplierRemoved=Dobavitelj odstranjen SuppliersInvoice=Računi dobavitelja @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Računi dobaviteljev in plačila ExportDataset_fournisseur_3=Naročila pri dobaviteljih in vrstice naročila ApproveThisOrder=Odobri to naročilo ConfirmApproveThisOrder=Ali zares želite odobriti to naročilo ? -DenyingThisOrder=Zavrni to naročilo +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Ali zares želite zavrniti to naročilo? ConfirmCancelThisOrder=Ali zares želite preklicati to naročilo? AddCustomerOrder=Kreirajte naročilo kupca diff --git a/htdocs/langs/sl_SI/trips.lang b/htdocs/langs/sl_SI/trips.lang index ae053137a54..9b9729b3d9e 100644 --- a/htdocs/langs/sl_SI/trips.lang +++ b/htdocs/langs/sl_SI/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Pot -Trips=Poti -TripsAndExpenses=Poti in stroški -TripsAndExpensesStatistics=Statistika poti in stroškov -TripCard=Kartica poti -AddTrip=Dodaj pot -ListOfTrips=Seznam poti +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Seznam stroškov -NewTrip=Nova pot +NewTrip=New expense report CompanyVisited=Obiskano podjetje/ustanova Kilometers=Kilometri FeesKilometersOrAmout=Količina kilometrov -DeleteTrip=Izbriši pot -ConfirmDeleteTrip=Ali zares želite izbrisati to pot ? +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report +ClassifyRefunded=Označi kot "Povrnjeno" +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line TF_OTHER=Ostalo +TF_TRANSPORTATION=Transportation TF_LUNCH=Kosilo -TF_TRIP=Pot -ListTripsAndExpenses=Seznam poti in stroškov -ExpensesArea=Področje poti in stroškov -SearchATripAndExpense=Iskanje poti in stroška -ClassifyRefunded=Classify 'Refunded' +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/sq_AL/admin.lang b/htdocs/langs/sq_AL/admin.lang index 38634cbd497..9782c2ea27f 100644 --- a/htdocs/langs/sq_AL/admin.lang +++ b/htdocs/langs/sq_AL/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimental VersionDevelopment=Development VersionUnknown=Unknown VersionRecommanded=Recommended +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Session ID SessionSaveHandler=Handler to save sessions SessionSavePath=Storage session localization @@ -493,10 +498,16 @@ Module600Name=Notifications Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Donations Module700Desc=Donation management +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1400Name=Accounting Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Categories Module1780Desc=Category management (products, suppliers and customers) Module2000Name=WYSIWYG editor @@ -631,7 +642,7 @@ Permission181=Read supplier orders Permission182=Create/modify supplier orders Permission183=Validate supplier orders Permission184=Approve supplier orders -Permission185=Order supplier orders +Permission185=Order or cancel supplier orders Permission186=Receive supplier orders Permission187=Close supplier orders Permission188=Cancel supplier orders @@ -711,6 +722,13 @@ Permission538=Export services Permission701=Read donations Permission702=Create/modify donations Permission703=Delete donations +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Read stocks Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Password to use the proxy server DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s. ExtraFields=Complementary attributes ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=A line of product/service with a zero amount is consid FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Order management setup OrdersNumberingModules=Orders numbering models @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barcode of type UPC BarcodeDescISBN=Barcode of type ISBN BarcodeDescC39=Barcode of type C39 BarcodeDescC128=Barcode of type C128 -GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Default account to use to receive cash payments CashDeskBankAccountForCheque= Default account to use to receive payments by cheque CashDeskBankAccountForCB= Default account to use to receive payments by credit cards -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Bookmark module setup @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/sq_AL/banks.lang b/htdocs/langs/sq_AL/banks.lang index 10a5f5b3c14..a2306950fb4 100644 --- a/htdocs/langs/sq_AL/banks.lang +++ b/htdocs/langs/sq_AL/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Reconciliation RIB=Bank Account Number IBAN=IBAN number +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Standing orders StandingOrder=Standing order Withdrawals=Withdrawals @@ -148,7 +152,7 @@ BackToAccount=Back to account ShowAllAccounts=Show for all accounts FutureTransaction=Transaction in futur. No way to conciliate. SelectChequeTransactionAndGenerate=Select/filter checks to include into the check deposit receipt and click on "Create". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/sq_AL/commercial.lang b/htdocs/langs/sq_AL/commercial.lang index e7d2de76503..7acdc7bd7e6 100644 --- a/htdocs/langs/sq_AL/commercial.lang +++ b/htdocs/langs/sq_AL/commercial.lang @@ -9,9 +9,9 @@ Prospect=Prospect Prospects=Prospects DeleteAction=Delete an event/task NewAction=New event/task -AddAction=Add event/task -AddAnAction=Add an event/task -AddActionRendezVous=Add a Rendez-vous event +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Rendezvous ConfirmDeleteAction=Are you sure you want to delete this event/task ? CardAction=Event card @@ -44,8 +44,8 @@ DoneActions=Completed events DoneActionsFor=Completed events for %s ToDoActions=Incomplete events ToDoActionsFor=Incomplete events for %s -SendPropalRef=Send commercial proposal %s -SendOrderRef=Send order %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Not applicable StatusActionToDo=To do StatusActionDone=Complete diff --git a/htdocs/langs/sq_AL/contracts.lang b/htdocs/langs/sq_AL/contracts.lang index 57ba3bb15d8..d1be0e6513f 100644 --- a/htdocs/langs/sq_AL/contracts.lang +++ b/htdocs/langs/sq_AL/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expired ServiceStatusClosed=Closed ServicesLegend=Services legend Contracts=Contracts +ContractsAndLine=Contracts and line of contracts Contract=Contract NoContracts=No contracts MenuServices=Services diff --git a/htdocs/langs/sq_AL/cron.lang b/htdocs/langs/sq_AL/cron.lang index 82f4574b223..28dfc7770b2 100644 --- a/htdocs/langs/sq_AL/cron.lang +++ b/htdocs/langs/sq_AL/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/sq_AL/errors.lang b/htdocs/langs/sq_AL/errors.lang index 497ddd814e4..700e6344d7d 100644 --- a/htdocs/langs/sq_AL/errors.lang +++ b/htdocs/langs/sq_AL/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be differen ErrorBadThirdPartyName=Bad value for third party name ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Customer code already used @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript must not be disabled to have this featur ErrorPasswordsMustMatch=Both typed passwords must match each other ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) -ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) ErrorsOnXLines=Errors on %s source record(s) ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/sq_AL/install.lang b/htdocs/langs/sq_AL/install.lang index 5a494156672..dcd8df6e7db 100644 --- a/htdocs/langs/sq_AL/install.lang +++ b/htdocs/langs/sq_AL/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Last step: Define here login and password you plan ActivateModule=Activate module %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/sq_AL/main.lang b/htdocs/langs/sq_AL/main.lang index ea91cfb3438..c9794e8b2ed 100644 --- a/htdocs/langs/sq_AL/main.lang +++ b/htdocs/langs/sq_AL/main.lang @@ -141,6 +141,7 @@ Cancel=Cancel Modify=Modify Edit=Edit Validate=Validate +ValidateAndApprove=Validate and Approve ToValidate=To validate Save=Save SaveAs=Save As @@ -158,6 +159,7 @@ Search=Search SearchOf=Search Valid=Valid Approve=Approve +Disapprove=Disapprove ReOpen=Re-Open Upload=Send file ToLink=Link @@ -219,6 +221,7 @@ Cards=Cards Card=Card Now=Now Date=Date +DateAndHour=Date and hour DateStart=Date start DateEnd=Date end DateCreation=Creation date @@ -295,6 +298,7 @@ UnitPriceHT=Unit price (net) UnitPriceTTC=Unit price PriceU=U.P. PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=U.P. Amount=Amount AmountInvoice=Invoice amount @@ -521,6 +525,7 @@ DateFromTo=From %s to %s DateFrom=From %s DateUntil=Until %s Check=Check +Uncheck=Uncheck Internal=Internal External=External Internals=Internal @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/sq_AL/orders.lang b/htdocs/langs/sq_AL/orders.lang index 34792ae1eb2..8efafa5e94e 100644 --- a/htdocs/langs/sq_AL/orders.lang +++ b/htdocs/langs/sq_AL/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Canceled StatusOrderDraft=Draft (needs to be validated) StatusOrderValidated=Validated StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Processed StatusOrderToBill=Delivered StatusOrderToBill2=To bill @@ -58,6 +59,7 @@ MenuOrdersToBill=Orders delivered MenuOrdersToBill2=Billable orders SearchOrder=Search order SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Ship product Discount=Discount CreateOrder=Create Order diff --git a/htdocs/langs/sq_AL/other.lang b/htdocs/langs/sq_AL/other.lang index 88991888183..08747ea884b 100644 --- a/htdocs/langs/sq_AL/other.lang +++ b/htdocs/langs/sq_AL/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximum size AttachANewFile=Attach a new file/document LinkedObject=Linked object Miscellaneous=Miscellaneous -NbOfActiveNotifications=Number of notifications +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/sq_AL/productbatch.lang b/htdocs/langs/sq_AL/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/sq_AL/productbatch.lang +++ b/htdocs/langs/sq_AL/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/sq_AL/products.lang b/htdocs/langs/sq_AL/products.lang index 3a29639b12b..3a18cda69e7 100644 --- a/htdocs/langs/sq_AL/products.lang +++ b/htdocs/langs/sq_AL/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/sq_AL/projects.lang b/htdocs/langs/sq_AL/projects.lang index b3c150d1687..0a12f4c64b7 100644 --- a/htdocs/langs/sq_AL/projects.lang +++ b/htdocs/langs/sq_AL/projects.lang @@ -8,8 +8,10 @@ SharedProject=Everybody PrivateProject=Contacts of project MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=This view presents all projects and tasks you are allowed to read. TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). ProjectsArea=Projects area @@ -29,6 +31,8 @@ NoProject=No project defined or owned NbOpenTasks=Nb of opened tasks NbOfProjects=Nb of projects TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Time spent RefTask=Ref. task LabelTask=Label task @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=List of supplier's orders associated with th ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated with the project ListContractAssociatedProject=List of contracts associated with the project ListFichinterAssociatedProject=List of interventions associated with the project -ListTripAssociatedProject=List of trips and expenses associated with the project +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=List of events associated with the project ActivityOnProjectThisWeek=Activity on project this week ActivityOnProjectThisMonth=Activity on project this month @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/sq_AL/salaries.lang b/htdocs/langs/sq_AL/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/sq_AL/salaries.lang +++ b/htdocs/langs/sq_AL/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/sq_AL/sendings.lang b/htdocs/langs/sq_AL/sendings.lang index 794c9019c86..b1ff55f71c1 100644 --- a/htdocs/langs/sq_AL/sendings.lang +++ b/htdocs/langs/sq_AL/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Qty ordered QtyShipped=Qty shipped QtyToShip=Qty to ship QtyReceived=Qty received -KeepToShip=Keep to ship +KeepToShip=Remain to ship OtherSendingsForSameOrder=Other shipments for this order DateSending=Date sending order DateSendingShort=Date sending order diff --git a/htdocs/langs/sq_AL/stocks.lang b/htdocs/langs/sq_AL/stocks.lang index 9de2e5a4dbe..29706d17615 100644 --- a/htdocs/langs/sq_AL/stocks.lang +++ b/htdocs/langs/sq_AL/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Weighted average price PMPValueShort=WAP EnhancedValueOfWarehouses=Warehouses value UserWarehouseAutoCreate=Create a warehouse automatically when creating a user +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Quantity dispatched QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/sq_AL/suppliers.lang b/htdocs/langs/sq_AL/suppliers.lang index 7b4d4acb244..baf573c66ac 100644 --- a/htdocs/langs/sq_AL/suppliers.lang +++ b/htdocs/langs/sq_AL/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Suppliers -Supplier=Supplier AddSupplier=Create a supplier SupplierRemoved=Supplier removed SuppliersInvoice=Suppliers invoice @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Supplier invoices and payments ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Approve this order ConfirmApproveThisOrder=Are you sure you want to approve order %s ? -DenyingThisOrder=Denying this order +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? AddCustomerOrder=Create customer order diff --git a/htdocs/langs/sq_AL/trips.lang b/htdocs/langs/sq_AL/trips.lang index 4b0501a8346..ba36fc9b07b 100644 --- a/htdocs/langs/sq_AL/trips.lang +++ b/htdocs/langs/sq_AL/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Trip -Trips=Trips -TripsAndExpenses=Trips and expenses -TripsAndExpensesStatistics=Trips and expenses statistics -TripCard=Trip card -AddTrip=Add trip -ListOfTrips=List of trips +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=List of fees -NewTrip=New trip +NewTrip=New expense report CompanyVisited=Company/foundation visited Kilometers=Kilometers FeesKilometersOrAmout=Amount or kilometers -DeleteTrip=Delete trip -ConfirmDeleteTrip=Are you sure you want to delete this trip ? -TF_OTHER=Other -TF_LUNCH=Lunch -TF_TRIP=Trip -ListTripsAndExpenses=List of trips and expenses -ExpensesArea=Trips and expenses area -SearchATripAndExpense=Search a trip and expense +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/sv_SE/accountancy.lang b/htdocs/langs/sv_SE/accountancy.lang index 953962457db..a0f32ed0aa5 100644 --- a/htdocs/langs/sv_SE/accountancy.lang +++ b/htdocs/langs/sv_SE/accountancy.lang @@ -15,7 +15,7 @@ JournalFinancial=Finansiella journaler Exports=Export Export=Export Modelcsv=Modell av export -OptionsDeactivatedForThisExportModel=For this export model, options are deactivated +OptionsDeactivatedForThisExportModel=För denna exportmodell är tillval inaktiverade Selectmodelcsv=Välj en modell av export Modelcsv_normal=Klassisk export Modelcsv_CEGID=Export mot CEGID Expert @@ -68,7 +68,7 @@ Lineofinvoice=Line of faktura VentilatedinAccount=Ventilerade framgångsrikt i redovisningskonto NotVentilatedinAccount=Inte ventilerad i redovisningskonto -ACCOUNTING_SEPARATORCSV=Column separator in export file +ACCOUNTING_SEPARATORCSV=Kolumnseparator i exportfil ACCOUNTING_LIMIT_LIST_VENTILATION=Antal element att vara uppdelning framgår av sidan (max rekommenderad: 50) ACCOUNTING_LIST_SORT_VENTILATION_TODO=Börja sortering av nedbrytnings sidor "Måste uppdelning" av de senaste element diff --git a/htdocs/langs/sv_SE/admin.lang b/htdocs/langs/sv_SE/admin.lang index 07f6a21ef83..ae34d563120 100644 --- a/htdocs/langs/sv_SE/admin.lang +++ b/htdocs/langs/sv_SE/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimentell VersionDevelopment=Utveckling VersionUnknown=Okänd VersionRecommanded=Rekommenderad +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Session ID SessionSaveHandler=Handler för att spara sessioner SessionSavePath=Lagring session lokalisering @@ -294,7 +299,7 @@ DoNotUseInProduction=Använd inte i poroduktion ThisIsProcessToFollow=Detta är inställd för att behandla: StepNb=Steg %s FindPackageFromWebSite=Hitta ett paket som ger funktionen du vill ha (till exempel om %s webbplats). -DownloadPackageFromWebSite=Download package %s. +DownloadPackageFromWebSite=Ladda hem paket %s. UnpackPackageInDolibarrRoot=Packa upp paketet fil till Dolibarr s katalog %s rot SetupIsReadyForUse=Installera är klar och Dolibarr är klar att användas med den nya komponenten. NotExistsDirect=Den alternativa rotkatalogen är inte definierad.
@@ -304,7 +309,7 @@ YouCanSubmitFile=Välj modul: CurrentVersion=Dolibarr nuvarande version CallUpdatePage=Gå till sidan som uppdaterar databasen struktur och data: %s. LastStableVersion=Senaste stabila version -UpdateServerOffline=Update server offline +UpdateServerOffline=Uppdatera server offline GenericMaskCodes=Du kan ange någon numrering mask. I denna mask skulle följande taggar användas:
(000000) motsvarar ett antal som kommer att ökas på varje %s. Ange så många nollor som den önskade längden på disken. Räknaren kommer att fyllas ut med nollor från vänster för att få så många nollor som masken.
(000000 000) samma som tidigare men en kompensation som motsvarar det antal till höger om tecknet + tillämpas med början den första %s.
(000000 @ x) samma som tidigare, men räknaren återställs till noll när månaden x uppnås (x mellan 1 och 12). Om detta alternativ används och x är 2 eller högre, då sekvensen (yy) (mm) eller (ÅÅÅÅ) (mm) krävs också.
(Dd) dag (01 till 31).
(Mm) månad (01 till 12).
(Yy), (ÅÅÅÅ) eller (y) år under 2, 4 eller ett nummer.
GenericMaskCodes2={Cccc} klientkoden på n tecken
{Cccc000} klientkoden på n tecken följs av en räknare dedikerad för kunden. Denna räknare tillägnad kund återställs vid samma tidpunkt än den globala räknare.
{Tttt} Koden för tredjeparts typ på n tecken (se ordlistan-tredjeparts typer).
GenericMaskCodes3=Alla andra tecken i masken förblir intakt.
Blanksteg är inte tillåtna.
@@ -383,12 +388,12 @@ ExtrafieldSelectList = Välj från tabell ExtrafieldSeparator=Avskiljare ExtrafieldCheckBox=Kryssruta ExtrafieldRadio=Radioknapp -ExtrafieldCheckBoxFromList= Checkbox from table +ExtrafieldCheckBoxFromList= Kryssruta från tabell ExtrafieldParamHelpselect=Parametrar listan måste vara som nyckel, värde

till exempel:
1, value1
2, värde2
3, value3
...

För att få en lista beroende på en annan:
1, value1 | parent_list_code: parent_key
2, värde2 | parent_list_code: parent_key ExtrafieldParamHelpcheckbox=Parametrar listan måste vara som nyckel, värde

till exempel:
1, value1
2, värde2
3, value3
... ExtrafieldParamHelpradio=Parametrar listan måste vara som nyckel, värde

till exempel:
1, value1
2, värde2
3, value3
... ExtrafieldParamHelpsellist=Parametrar lista kommer från en tabell
Syntax: tabellnamn: label_field: id_field :: filtrering
Exempel: c_typent: libelle: id :: filter

Filtret kan vara ett enkelt test (t.ex. aktiv = 1) för att visa endast aktiv värde
Om du vill filtrera på extrafields använder syntaxt extra.fieldcode = ... (där fältkoden är koden för Mig &)

För att få en lista beroende på en annan:
c_typent: libelle: id: parent_list_code | parent_column: filter -ExtrafieldParamHelpchkbxlst=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelpchkbxlst=Parameterlista från en tabell
Syntax : table_name:label_field:id_field::filter
Exempel: c_typent:libelle:id::filter

filter kan vara ett enkelt test (t.ex. active=1) för att visa enbart aktiva värden
Använd extra.fieldcode=... (där fältkod är extrafält) syntax för att filtrera på extrafält.

För att få listan beroende en annan:
c_typent:libelle:id:parent_list_code|parent_column:filter LibraryToBuildPDF=Katalog som används för att skapa PDF WarningUsingFPDF=Varning: Din conf.php innehåller direktiv dolibarr_pdf_force_fpdf = 1. Detta innebär att du använder fpdf bibliotek för att generera PDF-filer. Detta bibliotek är gammalt och inte stöder en mängd funktioner (Unicode, bild öppenhet, kyrilliska, arabiska och asiatiska språk, ...), så att du kan uppleva fel under PDF generation.
För att lösa detta och ha ett fullt stöd för PDF-generering, ladda ner TCPDF bibliotek , sedan kommentera eller ta bort linjen $ dolibarr_pdf_force_fpdf = 1, och lägg istället $ dolibarr_lib_TCPDF_PATH = 'path_to_TCPDF_dir' LocalTaxDesc=Vissa länder tillämpar 2 eller 3 skatter på varje fakturarad. Om så är fallet, välj typ för andra och tredje skatte- och dess hastighet. Möjlig typ är:
1: lokal skatt tillämpas på produkter och tjänster utan moms (moms inte tillämpas på lokal skatt)
2: lokal skatt tillämpas på produkter och tjänster innan moms (moms beräknas på beloppet + localtax)
3: lokal skatt tillämpas på produkter utan moms (moms inte tillämpas på lokal skatt)
4: lokal skatt tillämpas på produkter innan moms (moms beräknas på beloppet + localtax)
5: lokal skatt tillämpas på tjänster utan moms (moms inte tillämpas på lokal skatt)
6: lokal skatt tillämpas på tjänster innan moms (moms beräknas på beloppet + localtax) @@ -493,10 +498,16 @@ Module600Name=Anmälningar Module600Desc=Skicka e-postmeddelanden på vissa Dolibarr affärshändelser till kontakter tredjeparts (inställnings definieras på varje tredjeparts) Module700Name=Donationer Module700Desc=Donation ledning +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1400Name=Bokföring Module1400Desc=Bokföring och redovisning (dubbel part) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Kategorier Module1780Desc=Categorie ledning (produkter, leverantörer och kunder) Module2000Name=FCKeditor @@ -575,7 +586,7 @@ Permission67=Export insatser Permission71=Läs medlemmar Permission72=Skapa / modifiera medlemmar Permission74=Ta bort medlemmar -Permission75=Setup types of membership +Permission75=Definera typer av medlemskap Permission76=Exportera data seten Permission78=Läs prenumerationer Permission79=Skapa / ändra abonnemang @@ -598,8 +609,8 @@ Permission106=Exportsend Permission109=Ta bort sendings Permission111=Läs finansiella räkenskaper Permission112=Skapa / ändra / radera och jämför transaktioner -Permission113=Setup financial accounts (create, manage categories) -Permission114=Reconciliate transactions +Permission113=Ställ upp finansiella konton (skapa, handha kategorier) +Permission114=Avstämning av transaktioner Permission115=Exporttransaktioner och kontoutdrag Permission116=Överföringar mellan konton Permission117=Hantera kontroller avsändning @@ -631,7 +642,7 @@ Permission181=Läs leverantör order Permission182=Skapa / ändra leverantör order Permission183=Validate leverantör order Permission184=Godkänn leverantör order -Permission185=Beställ leverantör order +Permission185=Order or cancel supplier orders Permission186=Ta emot leverantör order Permission187=Stäng leverantör order Permission188=Avbryt leverantör order @@ -711,6 +722,13 @@ Permission538=Exportera tjänster Permission701=Läs donationer Permission702=Skapa / ändra donationer Permission703=Ta bort donationer +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Läs lager Permission1002=Skapa / ändra lager Permission1003=Radera lager @@ -764,7 +782,7 @@ Permission55001=Läs omröstningar Permission55002=Skapa / ändra omröstningar Permission59001=Läs kommersiella marginaler Permission59002=Definiera kommersiella marginaler -Permission59003=Read every user margin +Permission59003=Läs varje användaremarginal DictionaryCompanyType=Thirdparties typ DictionaryCompanyJuridicalType=Juridiska sorters thirdparties DictionaryProspectLevel=Prospect potentiella nivå @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Lösenord för att använda proxyservern DefineHereComplementaryAttributes=Här definierar du alla atributes inte redan finns tillgänglig som standard, och att du vill bli stöd för %s. ExtraFields=Komplementära egenskaper ExtraFieldsLines=Kompletterande attribut (rader) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Kompletterande attribut (tredjeparts) ExtraFieldsContacts=Kompletterande attribut (kontaktperson / adress) ExtraFieldsMember=Kompletterande attribut (medlem) @@ -1042,7 +1062,7 @@ SendingMailSetup=Inställning av sändningarna via e-post SendmailOptionNotComplete=Varning, på vissa Linux-system, för att skicka e-post från e-post, sendmail utförande inställning måste conatins Alternativ-ba (parameter mail.force_extra_parameters i din php.ini-fil). Om vissa mottagare inte emot e-post, försök att redigera den här PHP parameter med mail.force_extra_parameters =-BA). PathToDocuments=Sökväg till handlingar PathDirectory=Directory -SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail direct" will generate a mail message that might be not correctly parsed by some receiving mail servers. Result is that some mails can't be read by people hosted by those bugged platforms. It's case for some Internet providers (Ex: Orange in France). This is not a problem into Dolibarr nor into PHP but onto receiving mail server. You can however add option MAIN_FIX_FOR_BUGGED_MTA to 1 into setup - other to modify Dolibarr to avoid this. However, you may experience problem with other servers that respect strictly the SMTP standard. The other solution (recommended) is to use the method "SMTP socket library" that has no disadvantages. +SendmailOptionMayHurtBuggedMTA=Funktion för att skicka e-post med hjälp av metoden "PHP mail direct" genererar ett e-postmeddelande som kanske inte tolkas korrekt av vissa e-postservrar. Resultatet är att viss epost inte kan läsas av användare som hostas på sådana system som tolkar fel. Det är fallet för vissa internetleverantörer (t.ex. Orange i Frankrike). Detta är inte ett Dolibarr- eller PHP-problem men fel på inkommande e-post server. Du kan sätta MAIN_FIX_FOR_BUGGED_MTA till 1 i "Setup - andra" för att Dolibarr ska undvika detta. Du kan dock uppleva problem med andra servrar som strikt följer SMTP standard. Den andra lösningen (Rekomenderad) är att använda metoden "SMTP socket library" som inte har några nackdelar. TranslationSetup=Konfigurera översättning TranslationDesc=Val av språk visas på skärmen kan ändras:
* Globalt från menyn Hem - Inställningar - Display
* För användaren endast från fliken Användar visning av användarkort (klicka på inloggning på toppen av skärmen). TotalNumberOfActivatedModules=Totalt antal aktiverade funktionsmoduler:% s @@ -1061,7 +1081,7 @@ BrowserIsOK=Du använder webbläsaren %s. Denna webbläsare är ok för säkerhe BrowserIsKO=Du använder webbläsaren %s. Denna webbläsare är känt för att vara ett dåligt val för säkerhet, prestanda och tillförlitlighet. Vi rekommendera att du använder Firefox, Chrome, Opera eller Safari. XDebugInstalled=Xdebug är laddad. XCacheInstalled=Xcache är laddad. -AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". +AddRefInList=Visa kund- / leverantörreferens i lista (välj lista eller combobox) och del av hyperlink. Tredjepart visas med namn "CC12345 - SC45678 - Stor AB" istället för "Stor AB". FieldEdition=Edition av fält %s FixTZ=Timezone fix FillThisOnlyIfRequired=Exempel: +2 (fyll endast om tidszon offset problem är erfarna) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=En rad av produkt / tjänst med en nolla belopp anses FreeLegalTextOnProposal=Fri text på affärsförslag WatermarkOnDraftProposal=Vattenstämpel på utkast till affärsförslag (ingen om tom) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Be om bankkonto destination förslag +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Beställ ledning setup OrdersNumberingModules=Beställningar numrering moduler @@ -1161,7 +1188,7 @@ ValidOrderAfterPropalClosed=Att godkänna beställningen efter förslaget närma FreeLegalTextOnOrders=Fri text på order WatermarkOnDraftOrders=Vattenstämpel på utkast till beställningar (ingen om tom) ShippableOrderIconInList=Lägg en ikon i Order lista som anger om beställningen är shippable -BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ask for bank account destination of order +BANK_ASK_PAYMENT_BANK_DURING_ORDER=Fråga om målbankkonto för order ##### Clicktodial ##### ClickToDialSetup=Klicka för att Dial modul setup ClickToDialUrlDesc=Url anropas när ett klick på telefon picto görs. I URL kan du använda taggar
__PHONETO__ Som kommer att ersättas med telefonnumret för personen att ringa
__PHONEFROM__ Som ska ersättas med telefonnummer att ringa person (er)
__LOGIN__ Som ska ersättas med clicktodial inloggning (definierad på ditt användarnamn kort)
__PASS__ Som ska ersättas med ditt clicktodial lösenord (definierad på ditt användarnamn kort). @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barcode av typ UPC BarcodeDescISBN=Barcode av typ ISBN BarcodeDescC39=Streckkod av typen C39 BarcodeDescC128=Barcode av typ C128 -GenbarcodeLocation=Bar kodgenerering kommandoradsverktyg (som används av phpbarcode motor för vissa typer streckkod) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Intern motor BarCodeNumberManager=Manager för att automatiskt definiera streckkodsnummer ##### Prelevements ##### @@ -1397,7 +1424,7 @@ RSSUrlExample=En intressant RSS-flöde MailingSetup=E-post modul setup MailingEMailFrom=Avsändare Epost (från) för e-post skickas via e-post modul MailingEMailError=Retur-e (fel-till) för e-post med fel -MailingDelay=Seconds to wait after sending next message +MailingDelay=Sekunder fördröjning efter sändning av nästa meddelande ##### Notification ##### NotificationSetup=EMail modul anmälan inställnings NotificationEMailFrom=Avsändare Epost (från) för e-post som skickas till anmälningar @@ -1407,9 +1434,9 @@ FixedEmailTarget=Fast e målet SendingsSetup=Sända modul setup SendingsReceiptModel=Att skicka kvitto modell SendingsNumberingModules=Sänts numrering moduler -SendingsAbility=Support shipment sheets for customer deliveries +SendingsAbility=Stöd fraktsedlar för kundleveranser. NoNeedForDeliveryReceipts=I de flesta fall är sendings kvitton användas både som ark för kundleveranser (förteckning över produkter för att skicka) och ark som är recevied och undertecknas av kunden. Så produktleveranser intäkter är en dubbel funktion och är sällan aktiveras. -FreeLegalTextOnShippings=Free text on shipments +FreeLegalTextOnShippings=Fritext på fraktsedlar ##### Deliveries ##### DeliveryOrderNumberingModules=Produkter leveranser kvitto numrering modul DeliveryOrderModel=Produkter leveranser kvitto modell @@ -1420,7 +1447,7 @@ AdvancedEditor=Avancerad redaktör ActivateFCKeditor=Aktivera FCKeditor för: FCKeditorForCompany=WYSIWYG skapande / upplaga av Companie beskrivning och notera FCKeditorForProduct=WYSIWYG skapande / upplaga av produkter / tjänster: s beskrivning och anteckning -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 formating when building PDF files. +FCKeditorForProductDetails=WYSIWYG skapande / redigering av artikeldetaljrader för alla enheter (offertar, order, fakturor mm). Varning: Användning av detta alternativ är inte rekommenderat då det kan leda till problem med speciella tecken och sidformatering vid framställning av PDF-filer. FCKeditorForMailing= WYSIWYG skapande / utgåva av försändelser FCKeditorForUserSignature=WYSIWYG skapande / upplaga av signatur FCKeditorForMail=WYSIWYG skapande / utgåva för alla mail (utom Outils-> mejla) @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Standard generiska tredje part att använda för Sells CashDeskBankAccountForSell=Konto som ska användas för att ta emot kontant betalning CashDeskBankAccountForCheque= Konto som ska användas för att ta emot betalningar med check CashDeskBankAccountForCB= Konto som ska användas för att ta emot kontant betalning med kreditkort -CashDeskDoNotDecreaseStock=Inaktivera lager minskning när en sälja görs från Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Tvinga och begränsa lager att använda för aktie minskning StockDecreaseForPointOfSaleDisabled=Stock minskning från Point of Sale inaktiv +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=Du har inte inaktivera lager minskning när du gör en sälja från Point of Sale. Så ett lager krävs. ##### Bookmark ##### BookmarkSetup=Bokmärk modul setup @@ -1568,4 +1596,8 @@ SalariesSetup=Inställning av modul löner SortOrder=Sorteringsordning Format=Format TypePaymentDesc=0: Kundbetalning typ, 1: Leverantörsbetalnings typ, 2: Både kunder och leverantörer betalnings typ -IncludePath=Include path (defined into variable %s) +IncludePath=Inkludera sökväg (definerad i variabel %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/sv_SE/agenda.lang b/htdocs/langs/sv_SE/agenda.lang index 8d888af7945..fce76b40e62 100644 --- a/htdocs/langs/sv_SE/agenda.lang +++ b/htdocs/langs/sv_SE/agenda.lang @@ -58,9 +58,9 @@ OrderSentByEMail=Kundorderprojekt %s via e-post InvoiceSentByEMail=Kundfaktura %s via e-post SupplierOrderSentByEMail=Leverantör beställa %s via e-post SupplierInvoiceSentByEMail=Leverantörsfaktura %s via e-post -ShippingSentByEMail=Shipment %s sent by EMail -ShippingValidated= Shipment %s validated -InterventionSentByEMail=Intervention %s sent by EMail +ShippingSentByEMail=Leverans %s skickat per epost +ShippingValidated= Leverans %s validerad +InterventionSentByEMail=Ärende %s skickat per epost NewCompanyToDolibarr= Tredje part har skapats DateActionPlannedStart= Planerat startdatum DateActionPlannedEnd= Planerat slutdatum @@ -69,7 +69,7 @@ DateActionDoneEnd= Real slutdatum DateActionStart= Startdatum DateActionEnd= Slutdatum AgendaUrlOptions1=Du kan också lägga till följande parametrar för att filtrera utgång: -AgendaUrlOptions2=login=%s to restrict output to actions created by or assigned to user %s. +AgendaUrlOptions2=login=%s för att begränsa utdata till händelser skapade av eller tilldelade användare %s. AgendaUrlOptions3=Logina =%s ​​att begränsa produktionen till åtgärder som ägs av en användare%s. AgendaUrlOptions4=logint = %s att begränsa produktionen till handlande påverkade användarnas %s. AgendaUrlOptionsProject=projekt = PROJECT_ID att begränsa produktionen till åtgärder i samband med projektet PROJECT_ID. diff --git a/htdocs/langs/sv_SE/banks.lang b/htdocs/langs/sv_SE/banks.lang index ad874db18e7..2f6dc103262 100644 --- a/htdocs/langs/sv_SE/banks.lang +++ b/htdocs/langs/sv_SE/banks.lang @@ -8,7 +8,7 @@ FinancialAccount=Konto FinancialAccounts=Konton BankAccount=Bankkonto BankAccounts=Bankkonton -ShowAccount=Show Account +ShowAccount=Visa konto AccountRef=Finansiell balans ref AccountLabel=Finansiell balans etikett CashAccount=Cash konto @@ -33,7 +33,11 @@ AllTime=Från början Reconciliation=Avstämning RIB=Bankkontonummer IBAN=IBAN-nummer +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC / SWIFT nummer +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Stående order StandingOrder=Stående order Withdrawals=Uttag @@ -148,7 +152,7 @@ BackToAccount=Tillbaka till konto ShowAllAccounts=Visa för alla konton FutureTransaction=Transaktioner i Futur. Inget sätt att blidka. SelectChequeTransactionAndGenerate=Välj / Filtret kontrollerar att inkludera i kontrollen insättning kvittot och klicka på "Skapa". -InputReceiptNumber=Välj kontoutdrag samband med förlikningen. Använd en sorterbar numeriskt värde (t.ex., ÅÅÅÅMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Så småningom, ange en kategori där för att klassificera de register ToConciliate=För att förena? ThenCheckLinesAndConciliate=Kontrollera sedan linjerna som finns i kontoutdraget och klicka diff --git a/htdocs/langs/sv_SE/bills.lang b/htdocs/langs/sv_SE/bills.lang index 58ce46d83f5..2228c0a85ef 100644 --- a/htdocs/langs/sv_SE/bills.lang +++ b/htdocs/langs/sv_SE/bills.lang @@ -1,16 +1,16 @@ # Dolibarr language file - Source file is en_US - bills Bill=Faktura Bills=Fakturor -BillsCustomers=Customers invoices -BillsCustomer=Customers invoice -BillsSuppliers=Suppliers invoices -BillsCustomersUnpaid=Unpaid customers invoices +BillsCustomers=Kundfakturor +BillsCustomer=Kundfaktura +BillsSuppliers=Leverantörsfakturor +BillsCustomersUnpaid=Obetalda kundfakturor BillsCustomersUnpaidForCompany=Obetalda kundens fakturor för %s BillsSuppliersUnpaid=Obetalda leverantörs fakturor BillsSuppliersUnpaidForCompany=Obetald leverantörens fakturor för %s BillsLate=Sena betalningar -BillsStatistics=Customers invoices statistics -BillsStatisticsSuppliers=Suppliers invoices statistics +BillsStatistics=Kundfakturor statistik +BillsStatisticsSuppliers=Leverantörsfakturor statistik DisabledBecauseNotErasable=Inaktiverats på grund kan inte raderas InvoiceStandard=Standard faktura InvoiceStandardAsk=Standard faktura @@ -389,7 +389,7 @@ DisabledBecausePayments=Inte möjlig eftersom det inte finns några betalningar CantRemovePaymentWithOneInvoicePaid=Kan inte ta bort betalning eftersom det inte finns åtminstone på fakturan klassificeras betalt ExpectedToPay=Förväntad utbetalning PayedByThisPayment=Betalas av denna betalning -ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid. +ClosePaidInvoicesAutomatically=Klassificera "Betald" alla standard-, löpande och ersättningsfakturor som är fullständigt betalda. ClosePaidCreditNotesAutomatically=Beteckna "Betalda" alla fullständigt återbetalda kreditnotor. AllCompletelyPayedInvoiceWillBeClosed=Alla fakturor utan återstående att betala kommer automatiskt stängd för status "betald". ToMakePayment=Betala @@ -412,19 +412,19 @@ TypeContact_invoice_supplier_external_BILLING=Leverantörsfaktura kontakt TypeContact_invoice_supplier_external_SHIPPING=Leverantör Frakt Kontakta TypeContact_invoice_supplier_external_SERVICE=Leverantör tjänst kontakt # Situation invoices -InvoiceFirstSituationAsk=First situation invoice -InvoiceFirstSituationDesc=The situation invoices are tied to situations related to a progression, for example the progression of a construction. Each situation is tied to an invoice. -InvoiceSituation=Situation invoice -InvoiceSituationAsk=Invoice following the situation -InvoiceSituationDesc=Create a new situation following an already existing one -SituationAmount=Situation invoice amount(net) -SituationDeduction=Situation subtraction -Progress=Progress -ModifyAllLines=Modify all lines -CreateNextSituationInvoice=Create next situation -NotLastInCycle=This invoice in not the last in cycle and must not be modified. -DisabledBecauseNotLastInCycle=The next situation already exists. -DisabledBecauseFinal=This situation is final. -CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation. -NoSituations=No opened situations -InvoiceSituationLast=Final and general invoice +InvoiceFirstSituationAsk=Första löpande faktura +InvoiceFirstSituationDesc=Löpande fakturor avser delfakturor vid pågående arbeten, t.ex. vid ett bygge. +InvoiceSituation=Löpande faktura +InvoiceSituationAsk=Faktura på löpande räkning +InvoiceSituationDesc=Skapa en avstämning / faktura på löpande räkning, följande en tidigare +SituationAmount=Löpande faktura belopp (netto) +SituationDeduction=Löpande räkning avdrag +Progress=Framsteg +ModifyAllLines=Ändra alla rader +CreateNextSituationInvoice=Skapa nästa löpande faktura +NotLastInCycle=Denna faktura är inte den sista i en serie och får inte ändras. +DisabledBecauseNotLastInCycle=Påföljande avstämning finns redan. +DisabledBecauseFinal=Denna avstämning är slutlig. +CantBeLessThanMinPercent=Framsteget kan inte vara mindre än dess värde vid förra avstämningen. +NoSituations=Inga öppnade löpande räkningar +InvoiceSituationLast=Slutlig sammanställningsfaktura. diff --git a/htdocs/langs/sv_SE/commercial.lang b/htdocs/langs/sv_SE/commercial.lang index 4e4fd7f51aa..350e80a0cb9 100644 --- a/htdocs/langs/sv_SE/commercial.lang +++ b/htdocs/langs/sv_SE/commercial.lang @@ -62,7 +62,7 @@ LastProspectContactDone=Kontakta gjort DateActionPlanned=Datum planerade åtgärder för DateActionDone=Datum insatser görs ActionAskedBy=Åtgärd bad -ActionAffectedTo=Händelse som ägs av +ActionAffectedTo=Event assigned to ActionDoneBy=Åtgärder som utförs av ActionUserAsk=Registrerats av ErrorStatusCantBeZeroIfStarted=Om fältet "Datum gjort" är fylld, är arbetet igång (eller färdiga), så fältet "Status" kan inte 0%%. diff --git a/htdocs/langs/sv_SE/compta.lang b/htdocs/langs/sv_SE/compta.lang index 9c425408904..f412350b869 100644 --- a/htdocs/langs/sv_SE/compta.lang +++ b/htdocs/langs/sv_SE/compta.lang @@ -29,7 +29,7 @@ ReportTurnover=Omsättning PaymentsNotLinkedToInvoice=Betalningar inte kopplade till någon faktura, så inte är kopplade till någon tredje part PaymentsNotLinkedToUser=Betalningar inte är kopplade till alla användare Profit=Resultat -AccountingResult=Accounting result +AccountingResult=Bokföring resultat Balance=Balans Debit=Debet Credit=Credit diff --git a/htdocs/langs/sv_SE/contracts.lang b/htdocs/langs/sv_SE/contracts.lang index 8fc4e33c6e3..3d72d8709f1 100644 --- a/htdocs/langs/sv_SE/contracts.lang +++ b/htdocs/langs/sv_SE/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Utgångna ServiceStatusClosed=Stängt ServicesLegend=Tjänster legend Contracts=Kontrakt +ContractsAndLine=Contracts and line of contracts Contract=Kontrakt NoContracts=Inga kontrakt MenuServices=Tjänster diff --git a/htdocs/langs/sv_SE/cron.lang b/htdocs/langs/sv_SE/cron.lang index dda29874c43..1bb38438cc9 100644 --- a/htdocs/langs/sv_SE/cron.lang +++ b/htdocs/langs/sv_SE/cron.lang @@ -14,8 +14,8 @@ URLToLaunchCronJobs=URL för att kontrollera och starta cron-jobb om det behövs OrToLaunchASpecificJob=Eller för att kontrollera och starta ett specifikt arbete KeyForCronAccess=Säkerhetsnyckel för URL för att lansera cron-jobb FileToLaunchCronJobs=Kommandorad för att starta cron jobb -CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes -CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes +CronExplainHowToRunUnix=I en Unix-miljö bör följande rad läggas i crontab så kommandot exekveras var 5:e minut. +CronExplainHowToRunWin=I Microsoft(tm) Windows-miljö kan schemalagd aktivitet användas för att exekvera kommandoraden var 5:e minut # Menu CronJobs=Schemalagda jobb CronListActive=Lista över aktiva / schemalagda jobb @@ -84,3 +84,4 @@ CronType_command=Skalkommando CronMenu=Cron CronCannotLoadClass=Det går inte att läsa in klassen% s eller objekt% s UseMenuModuleToolsToAddCronJobs=Gå in på menyn "Home - Moduler verktyg - Job list" för att se och redigera schemalagda jobb. +TaskDisabled=Task disabled diff --git a/htdocs/langs/sv_SE/ecm.lang b/htdocs/langs/sv_SE/ecm.lang index d257d6e4f60..19b3f75848e 100644 --- a/htdocs/langs/sv_SE/ecm.lang +++ b/htdocs/langs/sv_SE/ecm.lang @@ -43,8 +43,8 @@ ECMDocsByContracts=Handlingar som är kopplade till kontrakt ECMDocsByInvoices=Dokument med koppling till kunderna fakturor ECMDocsByProducts=Dokument med koppling till produkter ECMDocsByProjects=Handlingar som är kopplade till projekt -ECMDocsByUsers=Documents linked to users -ECMDocsByInterventions=Documents linked to interventions +ECMDocsByUsers=Dokument länkade till användare +ECMDocsByInterventions=Dokument länkade till ärenden ECMNoDirectoryYet=Ingen katalog skapas ShowECMSection=Visa katalog DeleteSection=Ta bort katalog diff --git a/htdocs/langs/sv_SE/errors.lang b/htdocs/langs/sv_SE/errors.lang index 06034972e09..2dfe10cfa08 100644 --- a/htdocs/langs/sv_SE/errors.lang +++ b/htdocs/langs/sv_SE/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Källa och mål bankkonton måste vara olika. ErrorBadThirdPartyName=Felaktigt värde för tredje part namn ErrorProdIdIsMandatory=%s är obligatoriskt ErrorBadCustomerCodeSyntax=Dålig syntax för kundkod -ErrorBadBarCodeSyntax=Dålig syntax för streckkod +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Kunden som erfordras ErrorBarCodeRequired=Streckkod krävs ErrorCustomerCodeAlreadyUsed=Kund-kod som används redan @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript måste inte avaktiveras att ha denna fun ErrorPasswordsMustMatch=Båda skrivit lösenord måste matcha varandra ErrorContactEMail=Ett tekniskt fel uppstod. Vänligen kontakta administratören att följa e-%s en ge %s felkod i ditt meddelande, eller ännu bättre genom att lägga till en skärm kopia av denna sida. ErrorWrongValueForField=Felaktigt värde för antalet %s området (värde "%s" inte matchar regex regel %s) -ErrorFieldValueNotIn=Fel värde för %s fältnummer (värde "%s" är inte ett värde tillgängligt i fält %s av tabell %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Fel värde för %s fältnummer (värde "%s" är inte ett %s befintlig ref) ErrorsOnXLines=Fel på %s källrader ErrorFileIsInfectedWithAVirus=Antivirusprogrammet inte har kunnat validera (fil kan vara smittade av ett virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internt fel '%s' ErrorPriceExpressionUnknown=Okänt fel '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Obligatoriska inställningsparametrarna har ännu inte definierat diff --git a/htdocs/langs/sv_SE/install.lang b/htdocs/langs/sv_SE/install.lang index 385ac6e854c..c5380d1f831 100644 --- a/htdocs/langs/sv_SE/install.lang +++ b/htdocs/langs/sv_SE/install.lang @@ -155,7 +155,8 @@ MigrationFinished=Migration färdiga LastStepDesc=Sista steget: Definiera här login och lösenord som du planerar att använda för att ansluta till programmet. Tappa inte detta eftersom det är det konto för att administrera alla andra. ActivateModule=Aktivera modul %s ShowEditTechnicalParameters=Klicka här för att visa / redigera avancerade parametrar (expertläge) -WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +WarningUpgrade=Varning:\nHar du säkerhetskopierat databasen?\nDet är starkt rekommenderat att säkerhetskopiera databasen. På grund av fel i databassystemen (t.ex. mysql version 5.5.40) kan tabeller gå förlorade. Det är därför rekommenderat att ta en full dump av databasen innan migreringen påbörjas.\n\nKlicka OK för att starta migreringen... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade @@ -207,7 +208,7 @@ MigrationProjectTaskTime=Uppdatera tid i sekunder MigrationActioncommElement=Uppdatera uppgifter om åtgärder MigrationPaymentMode=Datamigrering betalning mode MigrationCategorieAssociation=Migreringskategorier -MigrationEvents=Migration of events to add event owner into assignement table +MigrationEvents=Överföring av händelser för att lägga till händelseägaren i uppdragslista ShowNotAvailableOptions=Visa ej tillgängliga val HideNotAvailableOptions=Dölj ej tillgängliga val diff --git a/htdocs/langs/sv_SE/languages.lang b/htdocs/langs/sv_SE/languages.lang index 6c909af19fd..031b70fc398 100644 --- a/htdocs/langs/sv_SE/languages.lang +++ b/htdocs/langs/sv_SE/languages.lang @@ -13,7 +13,7 @@ Language_de_AT=Tyska (Österrike) Language_de_CH=Tyska (Schweiz) Language_el_GR=Grekiska Language_en_AU=Engelska (Australien) -Language_en_CA=English (Canada) +Language_en_CA=Engelska (Kanada) Language_en_GB=Engelska (Storbritannien) Language_en_IN=Engelska (Indien) Language_en_NZ=Engelska (Nya Zeeland) diff --git a/htdocs/langs/sv_SE/main.lang b/htdocs/langs/sv_SE/main.lang index eaaca274910..2c1bb7d593e 100644 --- a/htdocs/langs/sv_SE/main.lang +++ b/htdocs/langs/sv_SE/main.lang @@ -14,7 +14,7 @@ FormatDateShortJava=yyyy-MM-dd FormatDateShortJavaInput=yyyy-MM-dd FormatDateShortJQuery=yy-mm-dd FormatDateShortJQueryInput=yy-mm-dd -FormatHourShortJQuery=HH:MI +FormatHourShortJQuery=tt:mm FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%b %d %Y @@ -62,7 +62,7 @@ ErrorFailedToSaveFile=Fel, kunde inte spara filen. SetDate=Ställ in datum SelectDate=Välj datum SeeAlso=Se även %s -SeeHere=See here +SeeHere=Se hänvisning BackgroundColorByDefault=Standard bakgrundsfärg FileNotUploaded=Filen har inte laddats upp FileUploaded=Filen har laddats upp @@ -141,6 +141,7 @@ Cancel=Avbryt Modify=Ändra Edit=Redigera Validate=Validera +ValidateAndApprove=Validate and Approve ToValidate=Att validera Save=Spara SaveAs=Spara som @@ -158,6 +159,7 @@ Search=Sök SearchOf=Sök Valid=Giltig Approve=Godkänn +Disapprove=Disapprove ReOpen=Öppnar igen Upload=Skicka fil ToLink=Länk @@ -171,7 +173,7 @@ User=Användare Users=Användare Group=Grupp Groups=Grupper -NoUserGroupDefined=No user group defined +NoUserGroupDefined=Ingen användargrupp är definerad Password=Lösenord PasswordRetype=Ange ditt lösenord NoteSomeFeaturesAreDisabled=Observera att en hel del funktioner / moduler är inaktiverade i denna demonstration. @@ -219,6 +221,7 @@ Cards=Kort Card=Kort Now=Nu Date=Datum +DateAndHour=Date and hour DateStart=Startdatum DateEnd=Slutdatum DateCreation=Datum för skapande @@ -261,7 +264,7 @@ days=dagar Hours=Timmar Minutes=Minuter Seconds=Sekunder -Weeks=Weeks +Weeks=Veckor Today=I dag Yesterday=I går Tomorrow=I morgon @@ -295,6 +298,7 @@ UnitPriceHT=Pris per enhet (netto) UnitPriceTTC=Pris per enhet PriceU=Styckpris PriceUHT=St.pris(net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=St.pris Amount=Belopp AmountInvoice=Fakturabelopp @@ -521,6 +525,7 @@ DateFromTo=Från %s till %s DateFrom=Från %s DateUntil=Fram %s Check=Kontrollera +Uncheck=Uncheck Internal=Interna External=Extern Internals=Interna @@ -687,7 +692,8 @@ XMoreLines=%s rader osynliga PublicUrl=Offentlig webbadress AddBox=Lägg till låda SelectElementAndClickRefresh=Välj ett element och klicka på uppdatera -PrintFile=Print File %s +PrintFile=Skriv ut fil %s +ShowTransaction=Show transaction # Week day Monday=Måndag Tuesday=Tisdag diff --git a/htdocs/langs/sv_SE/orders.lang b/htdocs/langs/sv_SE/orders.lang index 9cc8eb7d001..6b67e495d3f 100644 --- a/htdocs/langs/sv_SE/orders.lang +++ b/htdocs/langs/sv_SE/orders.lang @@ -16,20 +16,20 @@ SupplierOrder=Leverantör för SuppliersOrders=Leverantörens order SuppliersOrdersRunning=Nuvarande leverantörens order CustomerOrder=Kundorder -CustomersOrders=Customers orders +CustomersOrders=Kundorder CustomersOrdersRunning=Nuvarande kundens order CustomersOrdersAndOrdersLines=Kundorder och ordning: s linjer -OrdersToValid=Customers orders to validate -OrdersToBill=Customers orders delivered -OrdersInProcess=Customers orders in process -OrdersToProcess=Customers orders to process +OrdersToValid=Kundorder att validera +OrdersToBill=Levererade kundorder +OrdersInProcess=Kundorder under behandling +OrdersToProcess=Kundorder att behandla SuppliersOrdersToProcess=Leverantörens order att behandla StatusOrderCanceledShort=Annullerad StatusOrderDraftShort=Förslag StatusOrderValidatedShort=Validerad StatusOrderSentShort=I processen StatusOrderSent=Sändning pågår -StatusOrderOnProcessShort=Ordered +StatusOrderOnProcessShort=Beställda StatusOrderProcessedShort=Bearbetade StatusOrderToBillShort=Till Bill StatusOrderToBill2Short=Till Bill @@ -41,7 +41,8 @@ StatusOrderReceivedAllShort=Allt fick StatusOrderCanceled=Annullerad StatusOrderDraft=Utkast (måste valideras) StatusOrderValidated=Validerad -StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcess=Beställda, väntar på inleverans +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Bearbetade StatusOrderToBill=Till Bill StatusOrderToBill2=Till Bill @@ -50,14 +51,15 @@ StatusOrderRefused=Refused StatusOrderReceivedPartially=Delvis fått StatusOrderReceivedAll=Allt fick ShippingExist=En sändning föreligger -ProductQtyInDraft=Product quantity into draft orders -ProductQtyInDraftOrWaitingApproved=Product quantity into draft or approved orders, not yet ordered +ProductQtyInDraft=Produktmängd till beställningsutkast +ProductQtyInDraftOrWaitingApproved=Produktmnängd till beställningsutkast eller godkända beställningar, ännu ej lagda DraftOrWaitingApproved=Förslag eller godkänts ännu ej beställas DraftOrWaitingShipped=Förslag eller godkännas ännu inte sändas MenuOrdersToBill=Order till faktura MenuOrdersToBill2=Fakturerbara order SearchOrder=Sök ordning SearchACustomerOrder=Sök en kundorder +SearchASupplierOrder=Search a supplier order ShipProduct=Ship produkt Discount=Rabatt CreateOrder=Skapa ordning diff --git a/htdocs/langs/sv_SE/other.lang b/htdocs/langs/sv_SE/other.lang index 326d05f3b36..3144d5f7412 100644 --- a/htdocs/langs/sv_SE/other.lang +++ b/htdocs/langs/sv_SE/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximal storlek AttachANewFile=Bifoga en ny fil / dokument LinkedObject=Länkat objekt Miscellaneous=Diverse -NbOfActiveNotifications=Antal anmälningar +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Detta är en test post. \nDet två linjerna är åtskilda av en vagnretur.\n\n__SIGNATURE__ PredefinedMailTestHtml=Detta är en test post (ordet Provningen skall i fetstil).
De två linjerna är åtskilda av en vagnretur. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__ Här hittar du fakturan __FACREF__ __PERSONALIZED__Sincerely __SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__ Vi vill varna er att fakturan __FACREF__ tycks inte betalt. Så detta är fakturan i bilagan igen, som en påminnelse. __PERSONALIZED__Sincerely __SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__ \nHär hittar du det kommersiella förslaget __PROPREF__\n__PERSONALIZED__mvh\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__ Här hittar ordern __ORDERREF__ __PERSONALIZED__Sincerely __SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__ Här hittar du vår ordning __ORDERREF__ __PERSONALIZED__Sincerely __SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__ Här hittar du fakturan __FACREF__ __PERSONALIZED__Sincerely __SIGNATURE__ diff --git a/htdocs/langs/sv_SE/productbatch.lang b/htdocs/langs/sv_SE/productbatch.lang index 97c10290bfe..df95cb13bea 100644 --- a/htdocs/langs/sv_SE/productbatch.lang +++ b/htdocs/langs/sv_SE/productbatch.lang @@ -1,16 +1,16 @@ # ProductBATCH language file - en_US - ProductBATCH -ManageLotSerial=Use batch/serial number -ProductStatusOnBatch=Yes (Batch/serial required) -ProductStatusNotOnBatch=No (Batch/serial not used) -ProductStatusOnBatchShort=Yes -ProductStatusNotOnBatchShort=No +ManageLotSerial=Använd batch- / serienummer +ProductStatusOnBatch=Ja (batch- / serienr krävs) +ProductStatusNotOnBatch=Nej (batch- / serienr används inte) +ProductStatusOnBatchShort=Ja +ProductStatusNotOnBatchShort=Nej Batch=Batch / Serial atleast1batchfield=Ät före-datum eller bäst före-datum eller batchnummer batch_number=Batch / Serienummer l_eatby=Ät efter datum l_sellby=Sälj före-datum DetailBatchNumber=Batch / Serial detaljer -DetailBatchFormat=Batch / Serial: %s - E:%s - S:%s (Antal: %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Sats: %s printEatby=Äter med:%s printSellby=Sälj-med :%s @@ -18,4 +18,4 @@ printQty=Antal: %d AddDispatchBatchLine=Lägg en linje för Hållbarhet avsändning BatchDefaultNumber=Odefinierat WhenProductBatchModuleOnOptionAreForced=När modulen Batch / Serial är på, öka / minska aktieläget tvingas senaste val och kan inte redigeras. Andra alternativ kan definieras som du vill. -ProductDoesNotUseBatchSerial=This product does not use batch/serial number +ProductDoesNotUseBatchSerial=Denna artikel använder inte batch- / serienummer diff --git a/htdocs/langs/sv_SE/products.lang b/htdocs/langs/sv_SE/products.lang index cce8a3064cc..e8f20528c1c 100644 --- a/htdocs/langs/sv_SE/products.lang +++ b/htdocs/langs/sv_SE/products.lang @@ -22,16 +22,16 @@ ProductAccountancySellCode=Bokföring kod (sälja) ProductOrService=Produkt eller tjänst ProductsAndServices=Produkter och tjänster ProductsOrServices=Produkter eller tjänster -ProductsAndServicesOnSell=Products and Services for sale or for purchase -ProductsAndServicesNotOnSell=Products and Services out of sale +ProductsAndServicesOnSell=Produkter och tjänster till försäljning eller inköp +ProductsAndServicesNotOnSell=Utgångna produkter och tjänster m.a.p. försäljning ProductsAndServicesStatistics=Produkter och tjänster statistik ProductsStatistics=Produkter statistik -ProductsOnSell=Product for sale or for pruchase -ProductsNotOnSell=Product out of sale and out of purchase -ProductsOnSellAndOnBuy=Products for sale and for purchase -ServicesOnSell=Services for sale or for purchase -ServicesNotOnSell=Services out of sale -ServicesOnSellAndOnBuy=Services for sale and for purchase +ProductsOnSell=Produkter till försäljning eller inköp +ProductsNotOnSell=Utgångna produkter m.a.p. försäljning och inköp +ProductsOnSellAndOnBuy=Produkter till försäljning och inköp +ServicesOnSell=Tjänster till försäljning eller inköp +ServicesNotOnSell=Utgångna tjänster m.a.p. försäljning +ServicesOnSellAndOnBuy=Tjänster till försäljning och inköp InternalRef=Intern hänvisning LastRecorded=Senaste produkter / tjänster att sälja in LastRecordedProductsAndServices=Senaste %s inspelade produkter / tjänster @@ -198,7 +198,7 @@ HelpAddThisServiceCard=Detta alternativ medger att skapa eller klona en tjänst CurrentProductPrice=Nuvarande pris AlwaysUseNewPrice=Använd alltid nuvarande pris för produkt / tjänst AlwaysUseFixedPrice=Använd fast pris -PriceByQuantity=Different prices by quantity +PriceByQuantity=Olika priser m.a.p. mängd PriceByQuantityRange=Pris för mängdgaffel ProductsDashboard=Sammanfattning produkter / tjänster UpdateOriginalProductLabel=Ändra ursprunglig märkning @@ -234,9 +234,9 @@ DefinitionOfBarCodeForThirdpartyNotComplete=Angivelse av typ och värde för str BarCodeDataForProduct=Streckkodsinfo för produkt %s: BarCodeDataForThirdparty=Streckkodsinfo för tredje part %s: ResetBarcodeForAllRecords=Definiera streckkodsvärde för alla poster (detta kommer även att återställa streckkodsvärden som redan är definierade med nya värden) -PriceByCustomer=Different price for each customer +PriceByCustomer=Olika pris m.a.p. kund PriceCatalogue=Unikt pris för produkt eller tjänst -PricingRule=Rules for customer prices +PricingRule=Regler för kundpriser AddCustomerPrice=Lägg till pris per kund ForceUpdateChildPriceSoc=Sätt samma pris på kunds filialer PriceByCustomerLog=Pris per kundlogg @@ -244,9 +244,13 @@ MinimumPriceLimit=Minimipris kan inte vara lägre än %s MinimumRecommendedPrice=Minsta rekommenderade priset är : %s PriceExpressionEditor=Pris uttryck redigerare PriceExpressionSelected=Valda pris uttryck -PriceExpressionEditorHelp1="price = 2 + 2" or "2 + 2" for setting the price. Use ; to separate expressions -PriceExpressionEditorHelp2=You can access ExtraFields with variables like #options_myextrafieldkey# -PriceExpressionEditorHelp3=In both product/service and supplier prices there are these variables available:
#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min# -PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# +PriceExpressionEditorHelp1="pris = 2 + 2" eller "2 + 2" för att sätta pris. Använd ; för att skilja uttryck +PriceExpressionEditorHelp2=För att använda ExtraFields använd variabler som #options_myextrafieldkey# +PriceExpressionEditorHelp3=I både produkt- / tjänste- och leverantörspriser är följande variabler tillgängliga:
#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min# +PriceExpressionEditorHelp4=Endast i produkt- / tjänstepris: #supplier_min_price#
Endast i leverantörspris: #supplier_quantity# och #supplier_tva_tx# PriceMode=Prisläge PriceNumeric=Nummer +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/sv_SE/projects.lang b/htdocs/langs/sv_SE/projects.lang index 664a33fd4d5..cdec5ad6557 100644 --- a/htdocs/langs/sv_SE/projects.lang +++ b/htdocs/langs/sv_SE/projects.lang @@ -3,13 +3,15 @@ RefProject=Ref. projekt ProjectId=Projekt Id Project=Projekt Projects=Projekt -ProjectStatus=Project status +ProjectStatus=Projektstatus SharedProject=Alla PrivateProject=Kontakter av projekt MyProjectsDesc=Denna syn är begränsad till projekt du en kontakt för (allt som är "typ"). ProjectsPublicDesc=Denna uppfattning presenterar alla projekt du har rätt att läsa. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Denna uppfattning presenterar alla projekt (din användarbehörighet tillåta dig att visa allt). MyTasksDesc=Denna syn är begränsad till projekt eller uppdrag du en kontakt för (allt som är "typ"). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Denna uppfattning presenterar alla projekt och uppgifter som du får läsa. TasksDesc=Denna uppfattning presenterar alla projekt och uppgifter (din användarbehörighet tillåta dig att visa allt). ProjectsArea=Projekt område @@ -29,6 +31,8 @@ NoProject=Inget projekt definieras eller ägs NbOpenTasks=Nb i öppnade uppgifter NbOfProjects=Nb av projekt TimeSpent=Tid som tillbringas +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Tid RefTask=Ref. uppgift LabelTask=Label uppgift @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Lista över leverantörens order i samband m ListSupplierInvoicesAssociatedProject=Lista över leverantörens fakturor i samband med projektet ListContractAssociatedProject=Förteckning över avtal i samband med projektet ListFichinterAssociatedProject=Lista över åtgärder i samband med projektet -ListTripAssociatedProject=Förteckning över resor och kostnader i samband med projektet +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Förteckning över åtgärder i samband med projektet ActivityOnProjectThisWeek=Aktivitet på projekt den här veckan ActivityOnProjectThisMonth=Aktivitet på projekt denna månad @@ -103,7 +107,7 @@ CloneContacts=Klon kontakter CloneNotes=Klon anteckningar CloneProjectFiles=Klon projekt fogade filer CloneTaskFiles=Klon uppgift(er) anslöt filer (om uppgiften(s) klonad) -CloneMoveDate=Update project/tasks dates from now ? +CloneMoveDate=Uppdatera projekt- / uppgiftdatum från nu? ConfirmCloneProject=Är du säker på att klona detta projekt? ProjectReportDate=Ändra uppgift datum enligt projektets startdatum ErrorShiftTaskDate=Omöjligt att flytta datum på uppgiften enligt nytt projekt startdatum @@ -133,3 +137,6 @@ SearchAProject=Sök ett projekt ProjectMustBeValidatedFirst=Projekt måste valideras först ProjectDraft=Utkast projekt FirstAddRessourceToAllocateTime=Associera en resurse att avsätta tid +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/sv_SE/salaries.lang b/htdocs/langs/sv_SE/salaries.lang index f2fc8c20068..93545569c2f 100644 --- a/htdocs/langs/sv_SE/salaries.lang +++ b/htdocs/langs/sv_SE/salaries.lang @@ -10,3 +10,4 @@ SalariesPayments=Löneutbetalningar ShowSalaryPayment=Visa löneutbetalning THM=Genomsnitt timpris TJM=Genomsnittlig dagligt pris +CurrentSalary=Current salary diff --git a/htdocs/langs/sv_SE/sendings.lang b/htdocs/langs/sv_SE/sendings.lang index d723d2da074..1f32d5bebb4 100644 --- a/htdocs/langs/sv_SE/sendings.lang +++ b/htdocs/langs/sv_SE/sendings.lang @@ -4,8 +4,8 @@ Sending=Sändning Sendings=Transporter Shipment=Sändning Shipments=Transporter -ShowSending=Show Sending -Receivings=Receipts +ShowSending=Visa skickade +Receivings=Kvitto SendingsArea=Transporter område ListOfSendings=Lista över transporter SendingMethod=Frakt metod @@ -15,7 +15,7 @@ SearchASending=Sök efter transport StatisticsOfSendings=Statistik för transporter NbOfSendings=Antal transporter NumberOfShipmentsByMonth=Antal leveranser per månad -SendingCard=Shipment card +SendingCard=Fraktkort NewSending=Ny leverans CreateASending=Skapa en sändning CreateSending=Skapa leverans @@ -23,7 +23,7 @@ QtyOrdered=Antal beställda QtyShipped=Antal sändas QtyToShip=Antal till-fartyg QtyReceived=Antal mottagna -KeepToShip=Håll dig till fartyg +KeepToShip=Remain to ship OtherSendingsForSameOrder=Andra sändningar för denna beställning DateSending=Datum skicka ordning DateSendingShort=Datum skicka ordning @@ -38,7 +38,7 @@ StatusSendingCanceledShort=Annullerad StatusSendingDraftShort=Förslag StatusSendingValidatedShort=Validerad StatusSendingProcessedShort=Bearbetade -SendingSheet=Shipment sheet +SendingSheet=Packsedel Carriers=Bärare Carrier=Carrier CarriersArea=Bärare område @@ -59,15 +59,15 @@ SendShippingRef=Inlämning av leveransen %s ActionsOnShipping=Evenemang på leverans LinkToTrackYourPackage=Länk till spåra ditt paket ShipmentCreationIsDoneFromOrder=För närvarande är skapandet av en ny leverans sker från ordern kortet. -RelatedShippings=Related shipments +RelatedShippings=Hänförliga leveranser ShipmentLine=Transport linje CarrierList=Lista över transportörer -SendingRunning=Product from ordered customer orders -SuppliersReceiptRunning=Product from ordered supplier orders -ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders -ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders -ProductQtyInShipmentAlreadySent=Product quantity from opended customer order already sent -ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received +SendingRunning=Produkt från beställda kundorder +SuppliersReceiptRunning=Produkt från beställda leverantörsorder +ProductQtyInCustomersOrdersRunning=Produktkvantitet till öppnade kundorder +ProductQtyInSuppliersOrdersRunning=Produktkvantitet till öppnade leverantörsorder +ProductQtyInShipmentAlreadySent=Produktkvantitet från öppnade kundorder är redan skickade +ProductQtyInSuppliersShipmentAlreadyRecevied=Produktkvantitet från öppnade leverantörsorder är redan skickade # Sending methods SendingMethodCATCH=Fångst av kunden diff --git a/htdocs/langs/sv_SE/stocks.lang b/htdocs/langs/sv_SE/stocks.lang index c8c742d154a..ac0a569d542 100644 --- a/htdocs/langs/sv_SE/stocks.lang +++ b/htdocs/langs/sv_SE/stocks.lang @@ -47,9 +47,10 @@ PMPValue=Vägda genomsnittliga priset PMPValueShort=WAP EnhancedValueOfWarehouses=Lagervärde UserWarehouseAutoCreate=Skapa ett lager automatiskt när du skapar en användare +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Sänd kvantitet -QtyDispatchedShort=Qty dispatched -QtyToDispatchShort=Qty to dispatch +QtyDispatchedShort=Antal skickade +QtyToDispatchShort=Antal att skicka OrderDispatch=Stock avsändning RuleForStockManagementDecrease=Regel för lagerminskning RuleForStockManagementIncrease=Regel för lagerökning @@ -61,7 +62,7 @@ ReStockOnValidateOrder=Öka befintligt lager vid godkänd leverantörsorder ReStockOnDispatchOrder=Öka befintligt lager vid manuell sändning till lager, efter mottagande av leverantörsorder ReStockOnDeleteInvoice=Öka befintligt lager vid radering av faktura OrderStatusNotReadyToDispatch=Beställningen har ännu inte / inte längre status som tillåter sändning av produkter till lager. -StockDiffPhysicTeoric=Explanation for difference between physical and theoretical stock +StockDiffPhysicTeoric=Förklaring för skillnad mellan verkligt och beräknat lagersaldo NoPredefinedProductToDispatch=Inga fördefinierade produkter för det här objektet. Så ingen sändning till lager krävs. DispatchVerb=Sändning StockLimitShort=Gräns ​​för varning @@ -110,7 +111,7 @@ WarehouseForStockDecrease=Lager %s kommer att användas för lagerminskni WarehouseForStockIncrease=Lager %s kommer att användas för lagerökning ForThisWarehouse=För detta lager ReplenishmentStatusDesc=Detta är en lista över allla produkter med lägre lagersaldo än önskat lager (eller lägre än larmvärde om "Endast larm" är markerad). Föreslagen åtgärd är att skapa leverantörsordrar för att fylla på lagren. -ReplenishmentOrdersDesc=Detta är en lista över alla öppna leverantörsorder +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Påfyllningar NbOfProductBeforePeriod=Antal av produkt %s i lager före vald period (< %s) NbOfProductAfterPeriod=Antal av produkt %s i lager efter vald period (> %s) @@ -118,15 +119,16 @@ MassMovement=Massrörelse MassStockMovement=Mass lager rörelse SelectProductInAndOutWareHouse=Välj produkt, antal, ursprungslager och mållager och klicka "%s". När det är gjort för alla lageröverföringar klicka på "%s". RecordMovement=Spela in överföring -ReceivingForSameOrder=Receipts for this order +ReceivingForSameOrder=Kvitton för denna beställning StockMovementRecorded=Sparade lageröverföringar RuleForStockAvailability=Regler om krav på lagerhållning StockMustBeEnoughForInvoice=Lagernivå måste vara tillräckligt för att lägga produkten / tjänsten i faktura StockMustBeEnoughForOrder=Lagernivå måste vara tillräckligt för att lägga produkten / tjänsten i beställning StockMustBeEnoughForShipment= Lagernivå måste vara tillräckligt för att lägga produkten / tjänsten i transporten -MovementLabel=Label of movement -InventoryCode=Movement or inventory code -IsInPackage=Contained into package -ShowWarehouse=Show warehouse -MovementCorrectStock=Stock content correction for product %s -MovementTransferStock=Stock transfer of product %s into another warehouse +MovementLabel=Etikett för lagerrörelse +InventoryCode=Lagerrörelse- eller inventeringskod +IsInPackage=Ingår i förpackning +ShowWarehouse=Visa lagret +MovementCorrectStock=Lagerrättelse för produkt %s +MovementTransferStock=Lagerförflyttning av produkt %s till ett annat lager +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/sv_SE/suppliers.lang b/htdocs/langs/sv_SE/suppliers.lang index 5dd3f4020da..34e27b7955e 100644 --- a/htdocs/langs/sv_SE/suppliers.lang +++ b/htdocs/langs/sv_SE/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Leverantörer -Supplier=Leverantör AddSupplier=Skapa en leverantör SupplierRemoved=Leverantör bort SuppliersInvoice=Leverantörer faktura @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Leverantörsfakturor och betalningar ExportDataset_fournisseur_3=Leverantörs order och orderrader ApproveThisOrder=Godkänna denna ordning ConfirmApproveThisOrder=Är du säker på att du vill godkänna att %s? -DenyingThisOrder=Att förneka denna beställning +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Är du säker på att du vill förneka detta syfte %s? ConfirmCancelThisOrder=Är du säker på att du vill avbryta denna order %s? AddCustomerOrder=Skapa kundorder @@ -42,5 +41,5 @@ NoneOrBatchFileNeverRan=Ingen eller parti %s sprang inte nyligen SentToSuppliers=Skickas till leverantörer ListOfSupplierOrders=Lista över leverantörsorder MenuOrdersSupplierToBill=Leverantörs order att fakturera -NbDaysToDelivery=Delivery delay in days -DescNbDaysToDelivery=The biggest delay is display among order product list +NbDaysToDelivery=Leveransförsening, dagar +DescNbDaysToDelivery=Den största förseningen visas med produktbeställningslista diff --git a/htdocs/langs/sv_SE/trips.lang b/htdocs/langs/sv_SE/trips.lang index 888f20ddd2d..758ffaa367b 100644 --- a/htdocs/langs/sv_SE/trips.lang +++ b/htdocs/langs/sv_SE/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Trip -Trips=Resor -TripsAndExpenses=Resor och kostnader -TripsAndExpensesStatistics=Resor och kostnader statistik -TripCard=Trip-kort -AddTrip=Skapa resa -ListOfTrips=Förteckning över resor +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Prislista för -NewTrip=Ny resa +NewTrip=New expense report CompanyVisited=Företag / stiftelse besökt Kilometers=Kilometer FeesKilometersOrAmout=Belopp eller kilometer -DeleteTrip=Radera resa -ConfirmDeleteTrip=Är du säker på att du vill ta bort denna resa? -TF_OTHER=Andra -TF_LUNCH=Lunch -TF_TRIP=Trip -ListTripsAndExpenses=Förteckning över resor och kostnader -ExpensesArea=Resor och kostnader område -SearchATripAndExpense=Sök en resa och kostnader +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Klassificerad 'Återbetalas' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Andra +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/sv_SE/withdrawals.lang b/htdocs/langs/sv_SE/withdrawals.lang index ee0ceb8ecee..724d7766e0c 100644 --- a/htdocs/langs/sv_SE/withdrawals.lang +++ b/htdocs/langs/sv_SE/withdrawals.lang @@ -79,7 +79,7 @@ CreditDate=Krediter på WithdrawalFileNotCapable=Det går inte att skapa uttags kvitto fil för ditt land %s (ditt land stöds inte) ShowWithdraw=Visa Dra IfInvoiceNeedOnWithdrawPaymentWontBeClosed=Om faktura har minst ett uttag betalning som ännu inte behandlats, kommer det inte anges som betalas för att hantera uttag innan. -DoStandingOrdersBeforePayments=This tab allows you to request a standing order. Once done, go into menu Bank->Withdrawal to manage the standing order. When standing order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null. +DoStandingOrdersBeforePayments=Denna flik ger möjlighet att begära en stående order. Väl utförd, gå till meny Bank->Uttag för att ställa in stående order. När en stående order stängs kommer betalning på faktura att registreras automatiskt och fakturorna att stängas om restbelopp är noll. WithdrawalFile=Utträde fil SetToStatusSent=Ställ in på status "File Skickat" ThisWillAlsoAddPaymentOnInvoice=Detta kommer också att gälla utbetalningar till fakturor och kommer att klassificera dem som "Paid" diff --git a/htdocs/langs/sv_SE/workflow.lang b/htdocs/langs/sv_SE/workflow.lang index efefbb03c97..fd2d15713bd 100644 --- a/htdocs/langs/sv_SE/workflow.lang +++ b/htdocs/langs/sv_SE/workflow.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin WorkflowSetup=Arbetsflöde modul konfiguration -WorkflowDesc=This module is designed to modify the behaviour of automatic actions into application. By default, workflow is opened (you make thing in order you want). You can activate the automatic actions that you are interesting in. +WorkflowDesc=Denna modul ändrar beteendet av automatiska händelser i tillämpningar. Standardbeteende är att arbetsflöde öppnas (du gör saker i den ordning du vill). Automatiska händelser kan aktiveras för de händelser som önskas. ThereIsNoWorkflowToModify=Det finns ingen arbetsflöde du kan ändra för modul du har aktiverat. descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Skapa en kundorder automatiskt efter en kommersiell förslag undertecknas descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Skapa en kundfaktura automatiskt efter en kommersiell förslag undertecknas diff --git a/htdocs/langs/th_TH/admin.lang b/htdocs/langs/th_TH/admin.lang index 2460fb1167f..ed6d1b2709c 100644 --- a/htdocs/langs/th_TH/admin.lang +++ b/htdocs/langs/th_TH/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimental VersionDevelopment=การพัฒนา VersionUnknown=ไม่มีข้อมูล VersionRecommanded=แนะนำ +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Session ID SessionSaveHandler=Handler to save sessions SessionSavePath=Storage session localization @@ -493,10 +498,16 @@ Module600Name=Notifications Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Donations Module700Desc=Donation management +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1400Name=Accounting Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Categories Module1780Desc=Category management (products, suppliers and customers) Module2000Name=WYSIWYG editor @@ -631,7 +642,7 @@ Permission181=Read supplier orders Permission182=Create/modify supplier orders Permission183=Validate supplier orders Permission184=Approve supplier orders -Permission185=Order supplier orders +Permission185=Order or cancel supplier orders Permission186=Receive supplier orders Permission187=Close supplier orders Permission188=Cancel supplier orders @@ -711,6 +722,13 @@ Permission538=Export services Permission701=Read donations Permission702=Create/modify donations Permission703=Delete donations +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Read stocks Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Password to use the proxy server DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s. ExtraFields=Complementary attributes ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=A line of product/service with a zero amount is consid FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Order management setup OrdersNumberingModules=Orders numbering models @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barcode of type UPC BarcodeDescISBN=Barcode of type ISBN BarcodeDescC39=Barcode of type C39 BarcodeDescC128=Barcode of type C128 -GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Default account to use to receive cash payments CashDeskBankAccountForCheque= Default account to use to receive payments by cheque CashDeskBankAccountForCB= Default account to use to receive payments by credit cards -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Bookmark module setup @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/th_TH/banks.lang b/htdocs/langs/th_TH/banks.lang index 10a5f5b3c14..a2306950fb4 100644 --- a/htdocs/langs/th_TH/banks.lang +++ b/htdocs/langs/th_TH/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Reconciliation RIB=Bank Account Number IBAN=IBAN number +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Standing orders StandingOrder=Standing order Withdrawals=Withdrawals @@ -148,7 +152,7 @@ BackToAccount=Back to account ShowAllAccounts=Show for all accounts FutureTransaction=Transaction in futur. No way to conciliate. SelectChequeTransactionAndGenerate=Select/filter checks to include into the check deposit receipt and click on "Create". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/th_TH/commercial.lang b/htdocs/langs/th_TH/commercial.lang index e7d2de76503..7acdc7bd7e6 100644 --- a/htdocs/langs/th_TH/commercial.lang +++ b/htdocs/langs/th_TH/commercial.lang @@ -9,9 +9,9 @@ Prospect=Prospect Prospects=Prospects DeleteAction=Delete an event/task NewAction=New event/task -AddAction=Add event/task -AddAnAction=Add an event/task -AddActionRendezVous=Add a Rendez-vous event +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Rendezvous ConfirmDeleteAction=Are you sure you want to delete this event/task ? CardAction=Event card @@ -44,8 +44,8 @@ DoneActions=Completed events DoneActionsFor=Completed events for %s ToDoActions=Incomplete events ToDoActionsFor=Incomplete events for %s -SendPropalRef=Send commercial proposal %s -SendOrderRef=Send order %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Not applicable StatusActionToDo=To do StatusActionDone=Complete diff --git a/htdocs/langs/th_TH/contracts.lang b/htdocs/langs/th_TH/contracts.lang index 57ba3bb15d8..d1be0e6513f 100644 --- a/htdocs/langs/th_TH/contracts.lang +++ b/htdocs/langs/th_TH/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expired ServiceStatusClosed=Closed ServicesLegend=Services legend Contracts=Contracts +ContractsAndLine=Contracts and line of contracts Contract=Contract NoContracts=No contracts MenuServices=Services diff --git a/htdocs/langs/th_TH/cron.lang b/htdocs/langs/th_TH/cron.lang index 82f4574b223..28dfc7770b2 100644 --- a/htdocs/langs/th_TH/cron.lang +++ b/htdocs/langs/th_TH/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/th_TH/errors.lang b/htdocs/langs/th_TH/errors.lang index 497ddd814e4..700e6344d7d 100644 --- a/htdocs/langs/th_TH/errors.lang +++ b/htdocs/langs/th_TH/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be differen ErrorBadThirdPartyName=Bad value for third party name ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Customer code already used @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript must not be disabled to have this featur ErrorPasswordsMustMatch=Both typed passwords must match each other ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) -ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) ErrorsOnXLines=Errors on %s source record(s) ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/th_TH/install.lang b/htdocs/langs/th_TH/install.lang index 5a494156672..dcd8df6e7db 100644 --- a/htdocs/langs/th_TH/install.lang +++ b/htdocs/langs/th_TH/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Last step: Define here login and password you plan ActivateModule=Activate module %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/th_TH/main.lang b/htdocs/langs/th_TH/main.lang index e06e7c12e29..18fbfefd1dd 100644 --- a/htdocs/langs/th_TH/main.lang +++ b/htdocs/langs/th_TH/main.lang @@ -141,6 +141,7 @@ Cancel=Cancel Modify=Modify Edit=Edit Validate=Validate +ValidateAndApprove=Validate and Approve ToValidate=To validate Save=Save SaveAs=Save As @@ -158,6 +159,7 @@ Search=Search SearchOf=Search Valid=Valid Approve=Approve +Disapprove=Disapprove ReOpen=Re-Open Upload=Send file ToLink=Link @@ -219,6 +221,7 @@ Cards=Cards Card=Card Now=Now Date=Date +DateAndHour=Date and hour DateStart=Date start DateEnd=Date end DateCreation=Creation date @@ -295,6 +298,7 @@ UnitPriceHT=Unit price (net) UnitPriceTTC=Unit price PriceU=U.P. PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=U.P. Amount=Amount AmountInvoice=Invoice amount @@ -521,6 +525,7 @@ DateFromTo=From %s to %s DateFrom=From %s DateUntil=Until %s Check=Check +Uncheck=Uncheck Internal=Internal External=External Internals=Internal @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/th_TH/orders.lang b/htdocs/langs/th_TH/orders.lang index 34792ae1eb2..8efafa5e94e 100644 --- a/htdocs/langs/th_TH/orders.lang +++ b/htdocs/langs/th_TH/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Canceled StatusOrderDraft=Draft (needs to be validated) StatusOrderValidated=Validated StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Processed StatusOrderToBill=Delivered StatusOrderToBill2=To bill @@ -58,6 +59,7 @@ MenuOrdersToBill=Orders delivered MenuOrdersToBill2=Billable orders SearchOrder=Search order SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Ship product Discount=Discount CreateOrder=Create Order diff --git a/htdocs/langs/th_TH/other.lang b/htdocs/langs/th_TH/other.lang index 88991888183..08747ea884b 100644 --- a/htdocs/langs/th_TH/other.lang +++ b/htdocs/langs/th_TH/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximum size AttachANewFile=Attach a new file/document LinkedObject=Linked object Miscellaneous=Miscellaneous -NbOfActiveNotifications=Number of notifications +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/th_TH/productbatch.lang b/htdocs/langs/th_TH/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/th_TH/productbatch.lang +++ b/htdocs/langs/th_TH/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/th_TH/products.lang b/htdocs/langs/th_TH/products.lang index 3a29639b12b..3a18cda69e7 100644 --- a/htdocs/langs/th_TH/products.lang +++ b/htdocs/langs/th_TH/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/th_TH/projects.lang b/htdocs/langs/th_TH/projects.lang index b3c150d1687..0a12f4c64b7 100644 --- a/htdocs/langs/th_TH/projects.lang +++ b/htdocs/langs/th_TH/projects.lang @@ -8,8 +8,10 @@ SharedProject=Everybody PrivateProject=Contacts of project MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=This view presents all projects and tasks you are allowed to read. TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). ProjectsArea=Projects area @@ -29,6 +31,8 @@ NoProject=No project defined or owned NbOpenTasks=Nb of opened tasks NbOfProjects=Nb of projects TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Time spent RefTask=Ref. task LabelTask=Label task @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=List of supplier's orders associated with th ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated with the project ListContractAssociatedProject=List of contracts associated with the project ListFichinterAssociatedProject=List of interventions associated with the project -ListTripAssociatedProject=List of trips and expenses associated with the project +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=List of events associated with the project ActivityOnProjectThisWeek=Activity on project this week ActivityOnProjectThisMonth=Activity on project this month @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/th_TH/salaries.lang b/htdocs/langs/th_TH/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/th_TH/salaries.lang +++ b/htdocs/langs/th_TH/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/th_TH/sendings.lang b/htdocs/langs/th_TH/sendings.lang index 794c9019c86..b1ff55f71c1 100644 --- a/htdocs/langs/th_TH/sendings.lang +++ b/htdocs/langs/th_TH/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Qty ordered QtyShipped=Qty shipped QtyToShip=Qty to ship QtyReceived=Qty received -KeepToShip=Keep to ship +KeepToShip=Remain to ship OtherSendingsForSameOrder=Other shipments for this order DateSending=Date sending order DateSendingShort=Date sending order diff --git a/htdocs/langs/th_TH/stocks.lang b/htdocs/langs/th_TH/stocks.lang index 9de2e5a4dbe..29706d17615 100644 --- a/htdocs/langs/th_TH/stocks.lang +++ b/htdocs/langs/th_TH/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Weighted average price PMPValueShort=WAP EnhancedValueOfWarehouses=Warehouses value UserWarehouseAutoCreate=Create a warehouse automatically when creating a user +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Quantity dispatched QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/th_TH/suppliers.lang b/htdocs/langs/th_TH/suppliers.lang index 7b4d4acb244..baf573c66ac 100644 --- a/htdocs/langs/th_TH/suppliers.lang +++ b/htdocs/langs/th_TH/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Suppliers -Supplier=Supplier AddSupplier=Create a supplier SupplierRemoved=Supplier removed SuppliersInvoice=Suppliers invoice @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Supplier invoices and payments ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Approve this order ConfirmApproveThisOrder=Are you sure you want to approve order %s ? -DenyingThisOrder=Denying this order +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? AddCustomerOrder=Create customer order diff --git a/htdocs/langs/th_TH/trips.lang b/htdocs/langs/th_TH/trips.lang index 4b0501a8346..ba36fc9b07b 100644 --- a/htdocs/langs/th_TH/trips.lang +++ b/htdocs/langs/th_TH/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Trip -Trips=Trips -TripsAndExpenses=Trips and expenses -TripsAndExpensesStatistics=Trips and expenses statistics -TripCard=Trip card -AddTrip=Add trip -ListOfTrips=List of trips +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=List of fees -NewTrip=New trip +NewTrip=New expense report CompanyVisited=Company/foundation visited Kilometers=Kilometers FeesKilometersOrAmout=Amount or kilometers -DeleteTrip=Delete trip -ConfirmDeleteTrip=Are you sure you want to delete this trip ? -TF_OTHER=Other -TF_LUNCH=Lunch -TF_TRIP=Trip -ListTripsAndExpenses=List of trips and expenses -ExpensesArea=Trips and expenses area -SearchATripAndExpense=Search a trip and expense +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/tr_TR/admin.lang b/htdocs/langs/tr_TR/admin.lang index 221e8331c9f..17bc48b1142 100644 --- a/htdocs/langs/tr_TR/admin.lang +++ b/htdocs/langs/tr_TR/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Deneysel VersionDevelopment=Geliştirme VersionUnknown=Bilinmeyen VersionRecommanded=Önerilen +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Oturum Kimliği SessionSaveHandler=Oturum kayıt yürütücüsü SessionSavePath=Oturum kayıt konumu @@ -493,10 +498,16 @@ Module600Name=Duyurlar Module600Desc=Üçüncü parti kişilerine bazı Dolibarr iş etkinlikleriyle ilgili Eposta bildirimleri gönderin (her üçüncü parti için ayarlar tanımlanmıştır) Module700Name=Bağışlar Module700Desc=Bağış yönetimi +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis entegrasyonu Module1400Name=Muhasebe Module1400Desc=Muhasebe yönetimi (her iki parti için) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Kategoriler Module1780Desc=Kategori yönetimi (ürünler, tedarikçiler ve müşteriler) Module2000Name=FCKdüzenleyici (FCKeditor) @@ -631,7 +642,7 @@ Permission181=Tedarikçi siparişi oku Permission182=Tedarikçi siparişi oluştur/değiştir Permission183=Tedarikçi siparişi doğrula Permission184=Tedarikçi siparişi onayla -Permission185=Tedarikçi siparişi ver +Permission185=Order or cancel supplier orders Permission186=Tedarikçi siparişi al Permission187=Tedarikçi siparişi kapat Permission188=Tedarikçi siparişi iptal et @@ -711,6 +722,13 @@ Permission538=Hizmet dışaaktar Permission701=Bağış oluştur/değiştir Permission702=Bağış sil Permission703=Bağış sil +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Stok oku Permission1002=Depo oluştur/değiştir Permission1003=Depo sil @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Proxy sunucusunu kullanacak parola DefineHereComplementaryAttributes=Burada bütün öznitelikleri tanımlayın, yalnızca mevcut varsayılanları değil desteklenmenizi istediğiniz %s leri de. ExtraFields=Tamamlayıcı öznitelikler ExtraFieldsLines=Tamamlayıcı öznitelikler (satırlar) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Ek öznitelikler (üçüncüparti) ExtraFieldsContacts=Ek öznitelikler (kişi/adres) ExtraFieldsMember=Tamamlayıcı öznitelikler (üye) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Sıfır tutarında olan ürün/hizmet satırını bir FreeLegalTextOnProposal=Teklifler üzerinde serbest metin WatermarkOnDraftProposal=Taslak tekliflerde filigran (boşsa yoktur) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Teklif için banka hesabı iste +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Sipariş yönetimi kurulumu OrdersNumberingModules=Sipariş numaralandırma modülü @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barkod türü UPC BarcodeDescISBN=Barkod türü ISBN BarcodeDescC39=Barkod türü C39 BarcodeDescC128=Barkod türü C128 -GenbarcodeLocation=Bar kod oluşturma komut satırı aracı (phpbarcode motoru tarafından bazı barkod tipleri için kullanılır) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=İç motor BarCodeNumberManager=Barkod sayılarını otomatik olarak tanımlayacak yönetici ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Satışlar için kullanılacak varsayılan genel üç CashDeskBankAccountForSell=Nakit ödemeleri almak için kullanılan varsayılan hesap CashDeskBankAccountForCheque= Ödemeleri çek ile almak için kullanılan varsayılan hesap CashDeskBankAccountForCB= Nakit ödemeleri kredi kartıyla almak için kullanılan varsayılan hesap -CashDeskDoNotDecreaseStock=Satış Noktasından satış yapıldığında stok eksiltilmesini engelle +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Depoyu stok azaltmada kullanmak için zorla ve sınırla StockDecreaseForPointOfSaleDisabled=Satış Noktasından stok eksiltme engelli +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=Satış Noktasından satış yapılırken stok eksiltilmesini engellemediniz. Bu durumda depo gereklidir. ##### Bookmark ##### BookmarkSetup=Yerimi modülü kurulumu @@ -1569,3 +1597,7 @@ SortOrder=Sıralama düzeni Format=Biçim TypePaymentDesc=0:Müşteri ödeme türü, 1:Tedarikçi ödeme türü, 2:Hem müşteri hem de tedarikçi ödeme türü IncludePath=Yolu içerir (%s değişlende tanımlanır) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/tr_TR/banks.lang b/htdocs/langs/tr_TR/banks.lang index 45459c215f6..4f843b6a57b 100644 --- a/htdocs/langs/tr_TR/banks.lang +++ b/htdocs/langs/tr_TR/banks.lang @@ -33,7 +33,11 @@ AllTime=Başlangıç Reconciliation=Uzlaşma RIB=Banka Hesap Numarası IBAN=IBAN numarası +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT numarası +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Ödeme talimatları StandingOrder=Ödeme talimatı Withdrawals=Para çekmeler @@ -148,7 +152,7 @@ BackToAccount=Hesaba geri dön ShowAllAccounts=Tüm hesaplar için göster FutureTransaction=Gelecekteki işlem. Hiçbir şekilde uzlaştırılamaz. SelectChequeTransactionAndGenerate=Çek tahsilat makbuzunun içereceği çekleri seç/süz ve “Oluştur” a tıkla. -InputReceiptNumber=Uzlaşma ile ilgili banka hesap özetini seçin. Sıralanabilir bir sayısal değer kullanın (YYYYMM gibi) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Sonunda, kayıtları sınıflandırmak için bir kategori belirtin ToConciliate=Uzlaştırılacak mı? ThenCheckLinesAndConciliate=Sonra, banka hesap özetindeki kalemleri işaretleyin ve tıklayın diff --git a/htdocs/langs/tr_TR/commercial.lang b/htdocs/langs/tr_TR/commercial.lang index dc040a6d77c..88f8c321083 100644 --- a/htdocs/langs/tr_TR/commercial.lang +++ b/htdocs/langs/tr_TR/commercial.lang @@ -39,7 +39,7 @@ LastDoneTasks=Tamamlanan son %s görev LastRecordedTasks=Son kaydedilen görevler LastActionsToDo=Tamamlanmamış son %s en eski işlem DoneAndToDoActionsFor=%s için tamamlanan ve yapılacak etkinlikler -DoneAndToDoActions=Tamamlanan ve yapılacak görevler +DoneAndToDoActions=Tamamlanan ve yapılacak etkinlikler DoneActions=Tamamlanan etkinlikler DoneActionsFor=%s için tamamlanan etkinlikler ToDoActions=Tamamlanmamış etkinlikler @@ -61,8 +61,8 @@ LastProspectContactInProcess=Kişi işlemde LastProspectContactDone=Görüşme yapıldı DateActionPlanned=Planlanan etkinlik tarihi DateActionDone=Etkinliğin yapıldığı tarih -ActionAskedBy=Etkinliği sunan -ActionAffectedTo=Etkinlik sahibi +ActionAskedBy=Etkinliği bildiren +ActionAffectedTo=Event assigned to ActionDoneBy=Etkinliği yapan ActionUserAsk=Raporlayan ErrorStatusCantBeZeroIfStarted=Eğer Yapıldığı tarih alanı doluysa, etkinlik başlamıştır (veya bitmiştir), bu durumda 'Durum' alanı 0%% olamaz. @@ -81,7 +81,7 @@ ActionAC_SHIP=Sevkiyatı postayla gönder ActionAC_SUP_ORD=Tedarikçi siparişini postayla gönder ActionAC_SUP_INV=Tedarikçi faturasını postayla gönder ActionAC_OTH=Diğer -ActionAC_OTH_AUTO=Diğer otomatikman eklenen etkinlikler) +ActionAC_OTH_AUTO=Diğer (otomatikman eklenen etkinlikler) ActionAC_MANUAL=Elle eklenen etkinlikler ActionAC_AUTO=Otomatikman eklenen etkinlikler Stats=Satış istatistikleri @@ -92,5 +92,5 @@ RecapAnnee=Yıl özeti NoData=Veri yok StatusProsp=Aday durumu DraftPropals=Taslak teklifler -SearchPropal=Bir teklif ara +SearchPropal=Teklif ara CommercialDashboard=Ticaret özeti diff --git a/htdocs/langs/tr_TR/contracts.lang b/htdocs/langs/tr_TR/contracts.lang index 69cb8b4606c..ef18a5fb522 100644 --- a/htdocs/langs/tr_TR/contracts.lang +++ b/htdocs/langs/tr_TR/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Süresi dolmuş ServiceStatusClosed=Kapalı ServicesLegend=Hizmetler göstergesi Contracts=Sözleşmeler +ContractsAndLine=Contracts and line of contracts Contract=Sözleşme NoContracts=Sözleşme yok MenuServices=Hizmetler diff --git a/htdocs/langs/tr_TR/cron.lang b/htdocs/langs/tr_TR/cron.lang index 7dc15f232c9..3a55dd2b134 100644 --- a/htdocs/langs/tr_TR/cron.lang +++ b/htdocs/langs/tr_TR/cron.lang @@ -84,3 +84,4 @@ CronType_command=Kabuk komutu CronMenu=Kron CronCannotLoadClass=%s sınıfı ya da %s nesnesi yüklenemiyor UseMenuModuleToolsToAddCronJobs=Planlı işleri görmek ve düzenlemek için "Giriş - Modül araçları - İş listesi" menüsüne gidin. +TaskDisabled=Task disabled diff --git a/htdocs/langs/tr_TR/errors.lang b/htdocs/langs/tr_TR/errors.lang index e4e9eb9eb3c..269f6173807 100644 --- a/htdocs/langs/tr_TR/errors.lang +++ b/htdocs/langs/tr_TR/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Kaynak ve hedef banka hesapları farklı olmalıd ErrorBadThirdPartyName=Üçüncü parti adı için hatalı değer ErrorProdIdIsMandatory=Bu %s zorunludur ErrorBadCustomerCodeSyntax=Hatalı müşteri kodu -ErrorBadBarCodeSyntax=Bar kodu için hatalı sözdizimi +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Müşteri kodu gereklidir ErrorBarCodeRequired=Bar kod gerekli ErrorCustomerCodeAlreadyUsed=Müşteri kodu zaten kullanılmış @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Bu özelliğin çalışması için Javascript engel ErrorPasswordsMustMatch=Her iki yazdığınız şifrenin birbiriyle eşleşmesi gerekir ErrorContactEMail=Teknik bir hata oluştu. Lütfen, aşağıdaki %s Eposta ile yöneticiye danışın, mesajınızda %s hata kodunu belirtin ve hatta bir ekran görünümünü de eklerseniz daha iyi olur. ErrorWrongValueForField=%s alan numarası için yanlış değer ('%s' değeri '%s' regex kuralı ile uyuşmuyor) -ErrorFieldValueNotIn=%s alan numarası için yanlış değer ('%s' değeri %s tablosunun %s alanı için uygun bir değer değildir) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Alan numarası %s için yanlış değer (değer '%s' bir %s ref mevcut değildir) ErrorsOnXLines=% kaynak satırlarındaki hatalar ErrorFileIsInfectedWithAVirus=Virüs koruma programı dosyayı doğrulayamıyor (dosyaya bir virüs bulaşmış olabilir) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=İç hata '%s' ErrorPriceExpressionUnknown=Bilinmeyen hata '%s' ErrorSrcAndTargetWarehouseMustDiffers=Kaynak ve hedef depolar farklı olmalı ErrorTryToMakeMoveOnProductRequiringBatchData=Hata, parti/seri bilgisi gerektiren ürün için parti/seri bilgisi olmadan stok hareketi yapılmaya çalışılıyor. +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Zorunlu kurulum parametreleri henüz tanımlanmamış diff --git a/htdocs/langs/tr_TR/install.lang b/htdocs/langs/tr_TR/install.lang index cd980985987..731c1b2d344 100644 --- a/htdocs/langs/tr_TR/install.lang +++ b/htdocs/langs/tr_TR/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Son adım: Burada yazılıma bağlanmayı düşün ActivateModule=%s modülünü etkinleştir ShowEditTechnicalParameters=Gelişmiş parametreleri (uzman modu) göstermek/düzenlemek için burayı tıklayın WarningUpgrade=Uyarı:\nÖnce bir veritabanı yedeklemesi yaptınız mı?\nBu son derece önerilir: örneğin; veritabanı sistemindeki bazı hatalar nedeniyle (örneğin mysql sürüm 5.5.40) bu işlem sırasında bazı veriler ve tablolar kaybolabilir. Bu yüzden taşımaya başlamadan önce veritabanının tam bir dökümünün olması son derece önerilir.\n\nTaşıma işlemini başlatmak için Tamam'a tıklayın... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/tr_TR/main.lang b/htdocs/langs/tr_TR/main.lang index 204406547b2..36d6a87625e 100644 --- a/htdocs/langs/tr_TR/main.lang +++ b/htdocs/langs/tr_TR/main.lang @@ -141,6 +141,7 @@ Cancel=İptal Modify=Değiştir Edit=Düzenle Validate=Doğrula +ValidateAndApprove=Validate and Approve ToValidate=Doğrulanacak Save=Kaydet SaveAs=Farklı kaydet @@ -158,6 +159,7 @@ Search=Ara SearchOf=Ara Valid=Geçerli Approve=Onayla +Disapprove=Disapprove ReOpen=Yeniden aç Upload=Dosya gönder ToLink=Bağlantı @@ -219,6 +221,7 @@ Cards=Kartlar Card=Kart Now=Şimdi Date=Tarih +DateAndHour=Date and hour DateStart=Başlama tarihi DateEnd=Bitiş tarih DateCreation=Oluşturma tarihi @@ -295,6 +298,7 @@ UnitPriceHT=Birim fiyat (net) UnitPriceTTC=Birim fiyat PriceU=B.F. PriceUHT=B.F. (net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=B.F. Amount=Tutar AmountInvoice=Fatura tutarı @@ -521,6 +525,7 @@ DateFromTo=%s den %s e kadar DateFrom=%s den DateUntil=%s e Kadar Check=Denetle +Uncheck=Uncheck Internal=İç External=Dış Internals=İçler @@ -688,6 +693,7 @@ PublicUrl=Genel URL AddBox=Kutu ekle SelectElementAndClickRefresh=Bir öğe seçin ve Yenile'ye tıkla PrintFile=%s Dosyasını Yazdır +ShowTransaction=Show transaction # Week day Monday=Pazartesi Tuesday=Salı diff --git a/htdocs/langs/tr_TR/orders.lang b/htdocs/langs/tr_TR/orders.lang index 17254bf7a3d..d203ffa5a23 100644 --- a/htdocs/langs/tr_TR/orders.lang +++ b/htdocs/langs/tr_TR/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=İptal edilmiş StatusOrderDraft=Taslak (doğrulanması gerekir) StatusOrderValidated=Doğrulanmış StatusOrderOnProcess=Sipariş edildi - Teslime hazır +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=İşlenmiş StatusOrderToBill=Teslim edildi StatusOrderToBill2=Faturalanacak @@ -58,6 +59,7 @@ MenuOrdersToBill=Teslim edilen siparişler MenuOrdersToBill2=Faturalanabilir siparişler SearchOrder=Sipariş ara SearchACustomerOrder=Müşteri siparişi ara +SearchASupplierOrder=Search a supplier order ShipProduct=Ürünü sevket Discount=İndirim CreateOrder=Sipariş oluştur diff --git a/htdocs/langs/tr_TR/other.lang b/htdocs/langs/tr_TR/other.lang index 666bfc89754..f8f84232e9d 100644 --- a/htdocs/langs/tr_TR/other.lang +++ b/htdocs/langs/tr_TR/other.lang @@ -54,12 +54,13 @@ MaxSize=Ençok boyut AttachANewFile=Yeni bir dosya/belge ekle LinkedObject=Bağlantılı nesne Miscellaneous=Çeşitli -NbOfActiveNotifications=Number of notifications +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Bu bir deneme postasıdır.\nİki satır enter tuşu ile ayrılmıştır. PredefinedMailTestHtml=Bu bir deneme postası (deneme sözcüğü koyu olmalı).
İki satır enter tuşu ile ayrılmıştır. PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nFaturanız buradadır __FACREF__\n\n__PERSONALIZED__Saygılar\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nSize faturanız __FACREF__ için ödeme yapılmamış göründüğünü belirtmek isteriz. Anımsatma amacıyla ilgili fatura ekte sunulmuştur.\n\n__PERSONALIZED__Saygılar\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nTeklifiniz bilgilerinize sunulmuştur __PROPREF__\n\n__PERSONALIZED__Saygılarımızla\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nSiparişiniz buradadır __ORDERREF__\n\n__PERSONALIZED__Saygılar\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nSiparişimiz buradadır __ORDERREF__\n\n__PERSONALIZED__Saygılar\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nFatura buradadır __FACREF__\n\n__PERSONALIZED__Saygılar\n\n__SIGNATURE__ diff --git a/htdocs/langs/tr_TR/productbatch.lang b/htdocs/langs/tr_TR/productbatch.lang index e6fc79ade2c..24ea291a110 100644 --- a/htdocs/langs/tr_TR/productbatch.lang +++ b/htdocs/langs/tr_TR/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Parti/Seri numarası l_eatby=Son yenme tarihi l_sellby=Son satış tarihi DetailBatchNumber=Parti/Seri ayrıntıları -DetailBatchFormat=Parti/Seri: %s - Y: %s - S: %s (Mik : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Parti: %s printEatby=Son Yenme: %s printSellby=Son satış: %s diff --git a/htdocs/langs/tr_TR/products.lang b/htdocs/langs/tr_TR/products.lang index 2c3a9bf0d86..fdf8b1a3b98 100644 --- a/htdocs/langs/tr_TR/products.lang +++ b/htdocs/langs/tr_TR/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=Ürün/hizmet ve tedarikçi fiyatlarının her ikisin PriceExpressionEditorHelp4=Ürün/hizmet fiyatında yalnızca: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Fiyat biçimi PriceNumeric=Sayı +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/tr_TR/projects.lang b/htdocs/langs/tr_TR/projects.lang index 208dad079bb..b9531646c0b 100644 --- a/htdocs/langs/tr_TR/projects.lang +++ b/htdocs/langs/tr_TR/projects.lang @@ -8,8 +8,10 @@ SharedProject=Herkes PrivateProject=Proje ilgilileri MyProjectsDesc=Bu görünüm ilgilisi olduğunuz projelerle sınırlıdır (türü ne olursa olsun). ProjectsPublicDesc=Bu görünüm okuma izininiz olan tüm projeleri içerir. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Bu görünüm tüm projeleri içerir (size verilen kullanıcı izinleri her şeyi görmenizi sağlar). MyTasksDesc=Bu görünüm ilgilisi olduğunuz projelerle ya da görevlerle sınırlıdır (türü ne olursa olsun). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Bu görünüm okuma izininiz olan tüm projeleri ve görevleri içerir. TasksDesc=Bu görünüm tüm projeleri ve görevleri içerir (size verilen kullanıcı izinleri her şeyi görmenizi sağlar). ProjectsArea=Projeler alanı @@ -29,6 +31,8 @@ NoProject=Tanımlı ya da sahip olunan hiçbir proje yok NbOpenTasks=Açık görev sayısı NbOfProjects=Proje sayısı TimeSpent=Harcanan süre +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Harcanan süre RefTask=Görev ref. LabelTask=Görev etiketi @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Proje ile ilgili tedarikçi siparişlerinin ListSupplierInvoicesAssociatedProject=Proje ile ilgili tedarikçi faturalarının listesi ListContractAssociatedProject=Proje ile ilgili sözleşmelerin listesi ListFichinterAssociatedProject=Proje ile ilgili müdahalelerin listesi -ListTripAssociatedProject=Proje ile ilgili geziler ve giderlerin listesi +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Proje ile ilgili etkinliklerin listesi ActivityOnProjectThisWeek=Projede bu haftaki etkinlik ActivityOnProjectThisMonth=Projede bu ayki etkinlik @@ -133,3 +137,6 @@ SearchAProject=Bir proje ara ProjectMustBeValidatedFirst=Projeler önce doğrulanmalıdır ProjectDraft=Taslak projeler FirstAddRessourceToAllocateTime=Zaman ayırmak için bir kaynak ilişkilendirin +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/tr_TR/salaries.lang b/htdocs/langs/tr_TR/salaries.lang index 61c1db446e8..1d5aa85d140 100644 --- a/htdocs/langs/tr_TR/salaries.lang +++ b/htdocs/langs/tr_TR/salaries.lang @@ -10,3 +10,4 @@ SalariesPayments=Ücret ödemeleri ShowSalaryPayment=Ücret ödemesi göster THM=Ortalama saat ücreti TJM=Ortalama günlük ücret +CurrentSalary=Current salary diff --git a/htdocs/langs/tr_TR/sendings.lang b/htdocs/langs/tr_TR/sendings.lang index c7b30cba846..9a202a374f2 100644 --- a/htdocs/langs/tr_TR/sendings.lang +++ b/htdocs/langs/tr_TR/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Sipariş mikt. QtyShipped=Sevkedilen mikt. QtyToShip=Sevk edilecek mikt. QtyReceived=Alınan mikt. -KeepToShip=Sevkiyat için tut +KeepToShip=Remain to ship OtherSendingsForSameOrder=Bu sipariş için diğer sevkiyatlar DateSending=Sipariş gönderme tarihi DateSendingShort=Sipariş gönderme tarihi diff --git a/htdocs/langs/tr_TR/stocks.lang b/htdocs/langs/tr_TR/stocks.lang index 4e458e00129..8856d87badd 100644 --- a/htdocs/langs/tr_TR/stocks.lang +++ b/htdocs/langs/tr_TR/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Ağırlıklı ortalama fiyat PMPValueShort=AOF EnhancedValueOfWarehouses=Depolar değeri UserWarehouseAutoCreate=Bir kullanıcı oluştururken otomatik olarak bir stok oluştur +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Sevkedilen miktar QtyDispatchedShort=Dağıtılan mik QtyToDispatchShort=Dağıtılacak mik @@ -110,7 +111,7 @@ WarehouseForStockDecrease=%s deposu stok eksiltme için kullanılacaktır WarehouseForStockIncrease=%s deposu stok arttırma için kullanılacaktır ForThisWarehouse=Bu depo için ReplenishmentStatusDesc=Bu liste istenen stoktan daha az stoklu bütün ürünler içindir (ya da eğer onay kutusunda "yalnızca uyarı" işaretliyse, uyarı değerinden az olan) ve bu farkı kapatmanız için tedarikçi siparişi oluşturmanızı önerir. -ReplenishmentOrdersDesc=Bu liste tüm açık tedarikçi siparişlerinindir +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=İkmal NbOfProductBeforePeriod=Stoktaki %s ürününün, seçilen dönemden (<%s) önceki miktarıdır NbOfProductAfterPeriod=Stoktaki %s ürününün, seçilen dönemden (<%s) sonraki miktarıdır @@ -130,3 +131,4 @@ IsInPackage=Pakette içerilir ShowWarehouse=Depo göster MovementCorrectStock=%s ürünü için stok içeriği düzeltmesi MovementTransferStock=%s ürününün başka bir depoya stok aktarılması +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/tr_TR/suppliers.lang b/htdocs/langs/tr_TR/suppliers.lang index 585a82d5f80..b4b16859cc1 100644 --- a/htdocs/langs/tr_TR/suppliers.lang +++ b/htdocs/langs/tr_TR/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Tedarikçiler -Supplier=Tedarikçi AddSupplier=Bir tedarikçi oluştur SupplierRemoved=Tedarikçi kaldırıldı SuppliersInvoice=Tedarikçi faturası @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Tedarikçi faturaları ve ödemeleri ExportDataset_fournisseur_3=Tedarikçi siparişleri ve sipariş satırları ApproveThisOrder=Bu siparişi onayla ConfirmApproveThisOrder=%s siparişini onaylamak istediğinizden emin misiniz? -DenyingThisOrder=Bu siparişi reddet +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=%s siparişini reddetmek istediğinizden emin misiniz? ConfirmCancelThisOrder=%s siparişini iptal etmek istediğinizden emin misiniz? AddCustomerOrder=Müşteri siparişi oluştur diff --git a/htdocs/langs/tr_TR/trips.lang b/htdocs/langs/tr_TR/trips.lang index bd709af9859..30c0831f5ac 100644 --- a/htdocs/langs/tr_TR/trips.lang +++ b/htdocs/langs/tr_TR/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Gezi -Trips=Geziler -TripsAndExpenses=Geziler ve giderler -TripsAndExpensesStatistics=Gezi ve gider istatistikleri -TripCard=Gezi kartı -AddTrip=Gezi ekle -ListOfTrips=Gezi listesi +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Ücretler listesi -NewTrip=Yeni gezi +NewTrip=New expense report CompanyVisited=Ziyaret edilen firma/kuruluş Kilometers=Kilometre FeesKilometersOrAmout=Tutar ya da kilometre -DeleteTrip=Gezi sil -ConfirmDeleteTrip=Bu geziyi silmek istediğinizden emin misiniz? -TF_OTHER=Diğer -TF_LUNCH=Öğle yemeği -TF_TRIP=Gezi -ListTripsAndExpenses=Geziler ve giderler listesi -ExpensesArea=Geziler ve giderler alanı -SearchATripAndExpense=Bir gezi ve gider ara +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Sınıflandırma 'İade edildi' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Diğer +TF_TRANSPORTATION=Transportation +TF_LUNCH=Öğle yemeği +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/uk_UA/admin.lang b/htdocs/langs/uk_UA/admin.lang index f9049def3dd..c244a6aacf4 100644 --- a/htdocs/langs/uk_UA/admin.lang +++ b/htdocs/langs/uk_UA/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Експериментальна VersionDevelopment=Розробча VersionUnknown=Невизначена VersionRecommanded=Рекомендована +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=ID Сессії SessionSaveHandler=Handler to save sessions SessionSavePath=Storage session localization @@ -493,10 +498,16 @@ Module600Name=Notifications Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Donations Module700Desc=Donation management +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1400Name=Accounting Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Categories Module1780Desc=Category management (products, suppliers and customers) Module2000Name=WYSIWYG editor @@ -631,7 +642,7 @@ Permission181=Read supplier orders Permission182=Create/modify supplier orders Permission183=Validate supplier orders Permission184=Approve supplier orders -Permission185=Order supplier orders +Permission185=Order or cancel supplier orders Permission186=Receive supplier orders Permission187=Close supplier orders Permission188=Cancel supplier orders @@ -711,6 +722,13 @@ Permission538=Export services Permission701=Read donations Permission702=Create/modify donations Permission703=Delete donations +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Read stocks Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Password to use the proxy server DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s. ExtraFields=Complementary attributes ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=A line of product/service with a zero amount is consid FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Order management setup OrdersNumberingModules=Orders numbering models @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barcode of type UPC BarcodeDescISBN=Barcode of type ISBN BarcodeDescC39=Barcode of type C39 BarcodeDescC128=Barcode of type C128 -GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Default account to use to receive cash payments CashDeskBankAccountForCheque= Default account to use to receive payments by cheque CashDeskBankAccountForCB= Default account to use to receive payments by credit cards -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Bookmark module setup @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/uk_UA/banks.lang b/htdocs/langs/uk_UA/banks.lang index 10a5f5b3c14..a2306950fb4 100644 --- a/htdocs/langs/uk_UA/banks.lang +++ b/htdocs/langs/uk_UA/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Reconciliation RIB=Bank Account Number IBAN=IBAN number +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Standing orders StandingOrder=Standing order Withdrawals=Withdrawals @@ -148,7 +152,7 @@ BackToAccount=Back to account ShowAllAccounts=Show for all accounts FutureTransaction=Transaction in futur. No way to conciliate. SelectChequeTransactionAndGenerate=Select/filter checks to include into the check deposit receipt and click on "Create". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/uk_UA/commercial.lang b/htdocs/langs/uk_UA/commercial.lang index e7d2de76503..7acdc7bd7e6 100644 --- a/htdocs/langs/uk_UA/commercial.lang +++ b/htdocs/langs/uk_UA/commercial.lang @@ -9,9 +9,9 @@ Prospect=Prospect Prospects=Prospects DeleteAction=Delete an event/task NewAction=New event/task -AddAction=Add event/task -AddAnAction=Add an event/task -AddActionRendezVous=Add a Rendez-vous event +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Rendezvous ConfirmDeleteAction=Are you sure you want to delete this event/task ? CardAction=Event card @@ -44,8 +44,8 @@ DoneActions=Completed events DoneActionsFor=Completed events for %s ToDoActions=Incomplete events ToDoActionsFor=Incomplete events for %s -SendPropalRef=Send commercial proposal %s -SendOrderRef=Send order %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Not applicable StatusActionToDo=To do StatusActionDone=Complete diff --git a/htdocs/langs/uk_UA/contracts.lang b/htdocs/langs/uk_UA/contracts.lang index 57ba3bb15d8..d1be0e6513f 100644 --- a/htdocs/langs/uk_UA/contracts.lang +++ b/htdocs/langs/uk_UA/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expired ServiceStatusClosed=Closed ServicesLegend=Services legend Contracts=Contracts +ContractsAndLine=Contracts and line of contracts Contract=Contract NoContracts=No contracts MenuServices=Services diff --git a/htdocs/langs/uk_UA/cron.lang b/htdocs/langs/uk_UA/cron.lang index 82f4574b223..28dfc7770b2 100644 --- a/htdocs/langs/uk_UA/cron.lang +++ b/htdocs/langs/uk_UA/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/uk_UA/errors.lang b/htdocs/langs/uk_UA/errors.lang index 497ddd814e4..700e6344d7d 100644 --- a/htdocs/langs/uk_UA/errors.lang +++ b/htdocs/langs/uk_UA/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be differen ErrorBadThirdPartyName=Bad value for third party name ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Customer code already used @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript must not be disabled to have this featur ErrorPasswordsMustMatch=Both typed passwords must match each other ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) -ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) ErrorsOnXLines=Errors on %s source record(s) ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/uk_UA/install.lang b/htdocs/langs/uk_UA/install.lang index 5a494156672..dcd8df6e7db 100644 --- a/htdocs/langs/uk_UA/install.lang +++ b/htdocs/langs/uk_UA/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Last step: Define here login and password you plan ActivateModule=Activate module %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/uk_UA/main.lang b/htdocs/langs/uk_UA/main.lang index 31e70c2b72a..05b5f395001 100644 --- a/htdocs/langs/uk_UA/main.lang +++ b/htdocs/langs/uk_UA/main.lang @@ -141,6 +141,7 @@ Cancel=Cancel Modify=Modify Edit=Edit Validate=Validate +ValidateAndApprove=Validate and Approve ToValidate=To validate Save=Save SaveAs=Save As @@ -158,6 +159,7 @@ Search=Search SearchOf=Search Valid=Valid Approve=Approve +Disapprove=Disapprove ReOpen=Re-Open Upload=Send file ToLink=Link @@ -219,6 +221,7 @@ Cards=Cards Card=Card Now=Now Date=Date +DateAndHour=Date and hour DateStart=Date start DateEnd=Date end DateCreation=Creation date @@ -295,6 +298,7 @@ UnitPriceHT=Unit price (net) UnitPriceTTC=Unit price PriceU=U.P. PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=U.P. Amount=Amount AmountInvoice=Invoice amount @@ -521,6 +525,7 @@ DateFromTo=From %s to %s DateFrom=From %s DateUntil=Until %s Check=Check +Uncheck=Uncheck Internal=Internal External=External Internals=Internal @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/uk_UA/orders.lang b/htdocs/langs/uk_UA/orders.lang index 34792ae1eb2..8efafa5e94e 100644 --- a/htdocs/langs/uk_UA/orders.lang +++ b/htdocs/langs/uk_UA/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Canceled StatusOrderDraft=Draft (needs to be validated) StatusOrderValidated=Validated StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Processed StatusOrderToBill=Delivered StatusOrderToBill2=To bill @@ -58,6 +59,7 @@ MenuOrdersToBill=Orders delivered MenuOrdersToBill2=Billable orders SearchOrder=Search order SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Ship product Discount=Discount CreateOrder=Create Order diff --git a/htdocs/langs/uk_UA/other.lang b/htdocs/langs/uk_UA/other.lang index 88991888183..08747ea884b 100644 --- a/htdocs/langs/uk_UA/other.lang +++ b/htdocs/langs/uk_UA/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximum size AttachANewFile=Attach a new file/document LinkedObject=Linked object Miscellaneous=Miscellaneous -NbOfActiveNotifications=Number of notifications +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/uk_UA/productbatch.lang b/htdocs/langs/uk_UA/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/uk_UA/productbatch.lang +++ b/htdocs/langs/uk_UA/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/uk_UA/products.lang b/htdocs/langs/uk_UA/products.lang index 3a29639b12b..3a18cda69e7 100644 --- a/htdocs/langs/uk_UA/products.lang +++ b/htdocs/langs/uk_UA/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/uk_UA/projects.lang b/htdocs/langs/uk_UA/projects.lang index b3c150d1687..0a12f4c64b7 100644 --- a/htdocs/langs/uk_UA/projects.lang +++ b/htdocs/langs/uk_UA/projects.lang @@ -8,8 +8,10 @@ SharedProject=Everybody PrivateProject=Contacts of project MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=This view presents all projects and tasks you are allowed to read. TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). ProjectsArea=Projects area @@ -29,6 +31,8 @@ NoProject=No project defined or owned NbOpenTasks=Nb of opened tasks NbOfProjects=Nb of projects TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Time spent RefTask=Ref. task LabelTask=Label task @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=List of supplier's orders associated with th ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated with the project ListContractAssociatedProject=List of contracts associated with the project ListFichinterAssociatedProject=List of interventions associated with the project -ListTripAssociatedProject=List of trips and expenses associated with the project +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=List of events associated with the project ActivityOnProjectThisWeek=Activity on project this week ActivityOnProjectThisMonth=Activity on project this month @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/uk_UA/salaries.lang b/htdocs/langs/uk_UA/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/uk_UA/salaries.lang +++ b/htdocs/langs/uk_UA/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/uk_UA/sendings.lang b/htdocs/langs/uk_UA/sendings.lang index 794c9019c86..b1ff55f71c1 100644 --- a/htdocs/langs/uk_UA/sendings.lang +++ b/htdocs/langs/uk_UA/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Qty ordered QtyShipped=Qty shipped QtyToShip=Qty to ship QtyReceived=Qty received -KeepToShip=Keep to ship +KeepToShip=Remain to ship OtherSendingsForSameOrder=Other shipments for this order DateSending=Date sending order DateSendingShort=Date sending order diff --git a/htdocs/langs/uk_UA/stocks.lang b/htdocs/langs/uk_UA/stocks.lang index 9de2e5a4dbe..29706d17615 100644 --- a/htdocs/langs/uk_UA/stocks.lang +++ b/htdocs/langs/uk_UA/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Weighted average price PMPValueShort=WAP EnhancedValueOfWarehouses=Warehouses value UserWarehouseAutoCreate=Create a warehouse automatically when creating a user +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Quantity dispatched QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/uk_UA/suppliers.lang b/htdocs/langs/uk_UA/suppliers.lang index 7b4d4acb244..baf573c66ac 100644 --- a/htdocs/langs/uk_UA/suppliers.lang +++ b/htdocs/langs/uk_UA/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Suppliers -Supplier=Supplier AddSupplier=Create a supplier SupplierRemoved=Supplier removed SuppliersInvoice=Suppliers invoice @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Supplier invoices and payments ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Approve this order ConfirmApproveThisOrder=Are you sure you want to approve order %s ? -DenyingThisOrder=Denying this order +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? AddCustomerOrder=Create customer order diff --git a/htdocs/langs/uk_UA/trips.lang b/htdocs/langs/uk_UA/trips.lang index 4b0501a8346..ba36fc9b07b 100644 --- a/htdocs/langs/uk_UA/trips.lang +++ b/htdocs/langs/uk_UA/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Trip -Trips=Trips -TripsAndExpenses=Trips and expenses -TripsAndExpensesStatistics=Trips and expenses statistics -TripCard=Trip card -AddTrip=Add trip -ListOfTrips=List of trips +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=List of fees -NewTrip=New trip +NewTrip=New expense report CompanyVisited=Company/foundation visited Kilometers=Kilometers FeesKilometersOrAmout=Amount or kilometers -DeleteTrip=Delete trip -ConfirmDeleteTrip=Are you sure you want to delete this trip ? -TF_OTHER=Other -TF_LUNCH=Lunch -TF_TRIP=Trip -ListTripsAndExpenses=List of trips and expenses -ExpensesArea=Trips and expenses area -SearchATripAndExpense=Search a trip and expense +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/uz_UZ/admin.lang b/htdocs/langs/uz_UZ/admin.lang index 38634cbd497..9782c2ea27f 100644 --- a/htdocs/langs/uz_UZ/admin.lang +++ b/htdocs/langs/uz_UZ/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Experimental VersionDevelopment=Development VersionUnknown=Unknown VersionRecommanded=Recommended +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Session ID SessionSaveHandler=Handler to save sessions SessionSavePath=Storage session localization @@ -493,10 +498,16 @@ Module600Name=Notifications Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=Donations Module700Desc=Donation management +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1400Name=Accounting Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Categories Module1780Desc=Category management (products, suppliers and customers) Module2000Name=WYSIWYG editor @@ -631,7 +642,7 @@ Permission181=Read supplier orders Permission182=Create/modify supplier orders Permission183=Validate supplier orders Permission184=Approve supplier orders -Permission185=Order supplier orders +Permission185=Order or cancel supplier orders Permission186=Receive supplier orders Permission187=Close supplier orders Permission188=Cancel supplier orders @@ -711,6 +722,13 @@ Permission538=Export services Permission701=Read donations Permission702=Create/modify donations Permission703=Delete donations +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Read stocks Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Password to use the proxy server DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s. ExtraFields=Complementary attributes ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=A line of product/service with a zero amount is consid FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Order management setup OrdersNumberingModules=Orders numbering models @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Barcode of type UPC BarcodeDescISBN=Barcode of type ISBN BarcodeDescC39=Barcode of type C39 BarcodeDescC128=Barcode of type C128 -GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Default account to use to receive cash payments CashDeskBankAccountForCheque= Default account to use to receive payments by cheque CashDeskBankAccountForCB= Default account to use to receive payments by credit cards -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Bookmark module setup @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/uz_UZ/banks.lang b/htdocs/langs/uz_UZ/banks.lang index 10a5f5b3c14..a2306950fb4 100644 --- a/htdocs/langs/uz_UZ/banks.lang +++ b/htdocs/langs/uz_UZ/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=Reconciliation RIB=Bank Account Number IBAN=IBAN number +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Standing orders StandingOrder=Standing order Withdrawals=Withdrawals @@ -148,7 +152,7 @@ BackToAccount=Back to account ShowAllAccounts=Show for all accounts FutureTransaction=Transaction in futur. No way to conciliate. SelectChequeTransactionAndGenerate=Select/filter checks to include into the check deposit receipt and click on "Create". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/uz_UZ/commercial.lang b/htdocs/langs/uz_UZ/commercial.lang index e7d2de76503..7acdc7bd7e6 100644 --- a/htdocs/langs/uz_UZ/commercial.lang +++ b/htdocs/langs/uz_UZ/commercial.lang @@ -9,9 +9,9 @@ Prospect=Prospect Prospects=Prospects DeleteAction=Delete an event/task NewAction=New event/task -AddAction=Add event/task -AddAnAction=Add an event/task -AddActionRendezVous=Add a Rendez-vous event +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=Rendezvous ConfirmDeleteAction=Are you sure you want to delete this event/task ? CardAction=Event card @@ -44,8 +44,8 @@ DoneActions=Completed events DoneActionsFor=Completed events for %s ToDoActions=Incomplete events ToDoActionsFor=Incomplete events for %s -SendPropalRef=Send commercial proposal %s -SendOrderRef=Send order %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=Not applicable StatusActionToDo=To do StatusActionDone=Complete diff --git a/htdocs/langs/uz_UZ/contracts.lang b/htdocs/langs/uz_UZ/contracts.lang index 57ba3bb15d8..d1be0e6513f 100644 --- a/htdocs/langs/uz_UZ/contracts.lang +++ b/htdocs/langs/uz_UZ/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Expired ServiceStatusClosed=Closed ServicesLegend=Services legend Contracts=Contracts +ContractsAndLine=Contracts and line of contracts Contract=Contract NoContracts=No contracts MenuServices=Services diff --git a/htdocs/langs/uz_UZ/cron.lang b/htdocs/langs/uz_UZ/cron.lang index 82f4574b223..28dfc7770b2 100644 --- a/htdocs/langs/uz_UZ/cron.lang +++ b/htdocs/langs/uz_UZ/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/uz_UZ/errors.lang b/htdocs/langs/uz_UZ/errors.lang index 497ddd814e4..700e6344d7d 100644 --- a/htdocs/langs/uz_UZ/errors.lang +++ b/htdocs/langs/uz_UZ/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be differen ErrorBadThirdPartyName=Bad value for third party name ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=Customer code already used @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript must not be disabled to have this featur ErrorPasswordsMustMatch=Both typed passwords must match each other ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) -ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) ErrorsOnXLines=Errors on %s source record(s) ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/uz_UZ/install.lang b/htdocs/langs/uz_UZ/install.lang index 5a494156672..dcd8df6e7db 100644 --- a/htdocs/langs/uz_UZ/install.lang +++ b/htdocs/langs/uz_UZ/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Last step: Define here login and password you plan ActivateModule=Activate module %s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/uz_UZ/main.lang b/htdocs/langs/uz_UZ/main.lang index ea5bebeaebf..f34681e8530 100644 --- a/htdocs/langs/uz_UZ/main.lang +++ b/htdocs/langs/uz_UZ/main.lang @@ -141,6 +141,7 @@ Cancel=Cancel Modify=Modify Edit=Edit Validate=Validate +ValidateAndApprove=Validate and Approve ToValidate=To validate Save=Save SaveAs=Save As @@ -158,6 +159,7 @@ Search=Search SearchOf=Search Valid=Valid Approve=Approve +Disapprove=Disapprove ReOpen=Re-Open Upload=Send file ToLink=Link @@ -219,6 +221,7 @@ Cards=Cards Card=Card Now=Now Date=Date +DateAndHour=Date and hour DateStart=Date start DateEnd=Date end DateCreation=Creation date @@ -295,6 +298,7 @@ UnitPriceHT=Unit price (net) UnitPriceTTC=Unit price PriceU=U.P. PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=U.P. Amount=Amount AmountInvoice=Invoice amount @@ -521,6 +525,7 @@ DateFromTo=From %s to %s DateFrom=From %s DateUntil=Until %s Check=Check +Uncheck=Uncheck Internal=Internal External=External Internals=Internal @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/langs/uz_UZ/orders.lang b/htdocs/langs/uz_UZ/orders.lang index 34792ae1eb2..8efafa5e94e 100644 --- a/htdocs/langs/uz_UZ/orders.lang +++ b/htdocs/langs/uz_UZ/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Canceled StatusOrderDraft=Draft (needs to be validated) StatusOrderValidated=Validated StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Processed StatusOrderToBill=Delivered StatusOrderToBill2=To bill @@ -58,6 +59,7 @@ MenuOrdersToBill=Orders delivered MenuOrdersToBill2=Billable orders SearchOrder=Search order SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=Ship product Discount=Discount CreateOrder=Create Order diff --git a/htdocs/langs/uz_UZ/other.lang b/htdocs/langs/uz_UZ/other.lang index 88991888183..08747ea884b 100644 --- a/htdocs/langs/uz_UZ/other.lang +++ b/htdocs/langs/uz_UZ/other.lang @@ -54,12 +54,13 @@ MaxSize=Maximum size AttachANewFile=Attach a new file/document LinkedObject=Linked object Miscellaneous=Miscellaneous -NbOfActiveNotifications=Number of notifications +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/uz_UZ/products.lang b/htdocs/langs/uz_UZ/products.lang index 3a29639b12b..3a18cda69e7 100644 --- a/htdocs/langs/uz_UZ/products.lang +++ b/htdocs/langs/uz_UZ/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/uz_UZ/projects.lang b/htdocs/langs/uz_UZ/projects.lang index b3c150d1687..0a12f4c64b7 100644 --- a/htdocs/langs/uz_UZ/projects.lang +++ b/htdocs/langs/uz_UZ/projects.lang @@ -8,8 +8,10 @@ SharedProject=Everybody PrivateProject=Contacts of project MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=This view presents all projects and tasks you are allowed to read. TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). ProjectsArea=Projects area @@ -29,6 +31,8 @@ NoProject=No project defined or owned NbOpenTasks=Nb of opened tasks NbOfProjects=Nb of projects TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Time spent RefTask=Ref. task LabelTask=Label task @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=List of supplier's orders associated with th ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated with the project ListContractAssociatedProject=List of contracts associated with the project ListFichinterAssociatedProject=List of interventions associated with the project -ListTripAssociatedProject=List of trips and expenses associated with the project +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=List of events associated with the project ActivityOnProjectThisWeek=Activity on project this week ActivityOnProjectThisMonth=Activity on project this month @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/uz_UZ/sendings.lang b/htdocs/langs/uz_UZ/sendings.lang index 794c9019c86..b1ff55f71c1 100644 --- a/htdocs/langs/uz_UZ/sendings.lang +++ b/htdocs/langs/uz_UZ/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Qty ordered QtyShipped=Qty shipped QtyToShip=Qty to ship QtyReceived=Qty received -KeepToShip=Keep to ship +KeepToShip=Remain to ship OtherSendingsForSameOrder=Other shipments for this order DateSending=Date sending order DateSendingShort=Date sending order diff --git a/htdocs/langs/uz_UZ/stocks.lang b/htdocs/langs/uz_UZ/stocks.lang index 9de2e5a4dbe..29706d17615 100644 --- a/htdocs/langs/uz_UZ/stocks.lang +++ b/htdocs/langs/uz_UZ/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Weighted average price PMPValueShort=WAP EnhancedValueOfWarehouses=Warehouses value UserWarehouseAutoCreate=Create a warehouse automatically when creating a user +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Quantity dispatched QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/uz_UZ/suppliers.lang b/htdocs/langs/uz_UZ/suppliers.lang index 7b4d4acb244..baf573c66ac 100644 --- a/htdocs/langs/uz_UZ/suppliers.lang +++ b/htdocs/langs/uz_UZ/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Suppliers -Supplier=Supplier AddSupplier=Create a supplier SupplierRemoved=Supplier removed SuppliersInvoice=Suppliers invoice @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Supplier invoices and payments ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=Approve this order ConfirmApproveThisOrder=Are you sure you want to approve order %s ? -DenyingThisOrder=Denying this order +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? AddCustomerOrder=Create customer order diff --git a/htdocs/langs/uz_UZ/trips.lang b/htdocs/langs/uz_UZ/trips.lang index 4b0501a8346..ba36fc9b07b 100644 --- a/htdocs/langs/uz_UZ/trips.lang +++ b/htdocs/langs/uz_UZ/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Trip -Trips=Trips -TripsAndExpenses=Trips and expenses -TripsAndExpensesStatistics=Trips and expenses statistics -TripCard=Trip card -AddTrip=Add trip -ListOfTrips=List of trips +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=List of fees -NewTrip=New trip +NewTrip=New expense report CompanyVisited=Company/foundation visited Kilometers=Kilometers FeesKilometersOrAmout=Amount or kilometers -DeleteTrip=Delete trip -ConfirmDeleteTrip=Are you sure you want to delete this trip ? -TF_OTHER=Other -TF_LUNCH=Lunch -TF_TRIP=Trip -ListTripsAndExpenses=List of trips and expenses -ExpensesArea=Trips and expenses area -SearchATripAndExpense=Search a trip and expense +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/vi_VN/admin.lang b/htdocs/langs/vi_VN/admin.lang index fb7efc64748..a88043962f5 100644 --- a/htdocs/langs/vi_VN/admin.lang +++ b/htdocs/langs/vi_VN/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=Thử nghiệm VersionDevelopment=Phát triển VersionUnknown=Chưa rõ VersionRecommanded=Khuyên dùng +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Số thứ tự phiên làm việc SessionSaveHandler=Quản lý lưu phiên làm việc SessionSavePath=Chuyển ngữ phiên làm việc lưu trữ @@ -493,10 +498,16 @@ Module600Name=Thông báo Module600Desc=Gửi thông báo EMail trên một số sự kiện kinh doanh Dolibarr để liên hệ của bên thứ ba (thiết lập được xác định trên mỗi thirdparty) Module700Name=Tài trợ Module700Desc=Quản lý tài trợ +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis hội nhập Module1400Name=Kế toán Module1400Desc=Kế toán quản trị (đôi bên) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=Loại Module1780Desc=Quản lý danh mục (sản phẩm, nhà cung cấp và khách hàng) Module2000Name=Trình soạn thảo WYSIWYG @@ -631,7 +642,7 @@ Permission181=Đọc đơn đặt hàng nhà cung cấp Permission182=Tạo / chỉnh sửa đơn đặt hàng nhà cung cấp Permission183=Xác nhận đơn đặt hàng nhà cung cấp Permission184=Phê duyệt đơn đặt hàng nhà cung cấp -Permission185=Đơn đặt hàng nhà cung cấp thứ tự +Permission185=Order or cancel supplier orders Permission186=Nhận đặt hàng cung cấp Permission187=Đóng cửa các đơn đặt hàng nhà cung cấp Permission188=Hủy bỏ đơn đặt hàng nhà cung cấp @@ -711,6 +722,13 @@ Permission538=Xuất dữ liệu Dịch vụ Permission701=Đọc thông tin Tài trợ Permission702=Tạo / sửa đổi hiến Permission703=Xóa tài trợ +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=Đọc tồn kho Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=Mật khẩu để sử dụng máy chủ proxy DefineHereComplementaryAttributes=Xác định đây tất cả các thuộc tính, không phải đã có sẵn theo mặc định, và bạn muốn được hỗ trợ cho%s. ExtraFields=Thuộc tính bổ sung ExtraFieldsLines=Thuộc tính bổ sung (dòng) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Thuộc tính bổ sung (của bên thứ ba) ExtraFieldsContacts=Thuộc tính bổ sung (liên lạc / địa chỉ) ExtraFieldsMember=Thuộc tính bổ sung (thành viên) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=Một dòng sản phẩm / dịch vụ với một s FreeLegalTextOnProposal=Miễn phí văn bản trên đề xuất thương mại WatermarkOnDraftProposal=Watermark về dự thảo đề xuất thương mại (nếu không có sản phẩm nào) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=Thiết lập quản lý đơn hàng OrdersNumberingModules=Mô hình đánh số đơn hàng @@ -1383,7 +1410,7 @@ BarcodeDescUPC=Mã vạch UPC loại BarcodeDescISBN=Barcode loại ISBN BarcodeDescC39=Barcode loại C39 BarcodeDescC128=Barcode loại C128 -GenbarcodeLocation=Thanh công cụ dòng lệnh thế hệ mã (sử dụng động cơ nội bộ đối với một số loại mã vạch) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Động cơ nội bộ BarCodeNumberManager=Manager để tự động xác định số mã vạch ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=Tài khoản mặc định để sử dụng để nhận thanh toán bằng tiền mặt CashDeskBankAccountForCheque= Tài khoản mặc định để sử dụng để nhận thanh toán bằng séc CashDeskBankAccountForCB= Tài khoản mặc định để sử dụng để nhận thanh toán bằng thẻ tín dụng -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=Thiết lập mô-đun Bookmark @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Định dạng TypePaymentDesc=0: Loại khách hàng thanh toán 1: Nhà cung cấp phương thức thanh toán, 2: Cả hai khách hàng và nhà cung cấp loại hình thanh toán IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/vi_VN/banks.lang b/htdocs/langs/vi_VN/banks.lang index 284f998d741..0c65a74d4cb 100644 --- a/htdocs/langs/vi_VN/banks.lang +++ b/htdocs/langs/vi_VN/banks.lang @@ -33,7 +33,11 @@ AllTime=Từ đầu Reconciliation=Hòa giải RIB=Số tài khoản ngân hàng IBAN=Số IBAN +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=BIC / SWIFT số +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=Đứng đơn đặt hàng StandingOrder=Lệnh chuyển tiền định Withdrawals=Tiền thu hồi @@ -148,7 +152,7 @@ BackToAccount=Trở lại vào tài khoản ShowAllAccounts=Hiển thị cho tất cả tài khoản FutureTransaction=Giao dịch trong futur. Không có cách nào để hoà giải. SelectChequeTransactionAndGenerate=Chọn / kiểm tra bộ lọc để đưa vào nhận tiền gửi kiểm tra và bấm vào "Create". -InputReceiptNumber=Chọn kê ngân hàng liên quan đến hoà giải. Sử dụng một giá trị số có thể phân loại (ví dụ như, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Cuối cùng, chỉ định một danh mục trong đó để phân loại các hồ sơ ToConciliate=Hoà giải? ThenCheckLinesAndConciliate=Sau đó, kiểm tra những dòng hiện trong báo cáo ngân hàng và nhấp diff --git a/htdocs/langs/vi_VN/commercial.lang b/htdocs/langs/vi_VN/commercial.lang index 438fc7048a3..d905b474831 100644 --- a/htdocs/langs/vi_VN/commercial.lang +++ b/htdocs/langs/vi_VN/commercial.lang @@ -62,7 +62,7 @@ LastProspectContactDone=Liên hệ với thực hiện DateActionPlanned=Ngày lên kế hoạch cho sự kiện DateActionDone=Ngày thực hiện sự kiện ActionAskedBy=Tổ chức sự kiện báo cáo của -ActionAffectedTo=Tổ chức sự kiện thuộc sở hữu của +ActionAffectedTo=Event assigned to ActionDoneBy=Sự kiện được thực hiện bởi ActionUserAsk=Báo cáo của ErrorStatusCantBeZeroIfStarted=Nếu trường 'ngày thực hiện "được làm đầy, hành động được bắt đầu (hoặc hoàn thành), do đó lĩnh vực' Trạng thái 'không thể là 0 %%. diff --git a/htdocs/langs/vi_VN/contracts.lang b/htdocs/langs/vi_VN/contracts.lang index e5d7db9f1bb..b1434177727 100644 --- a/htdocs/langs/vi_VN/contracts.lang +++ b/htdocs/langs/vi_VN/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=Hết hạn ServiceStatusClosed=Đóng ServicesLegend=Dịch vụ truyền thuyết Contracts=Hợp đồng +ContractsAndLine=Contracts and line of contracts Contract=Hợp đồng NoContracts=Không có hợp đồng MenuServices=Dịch vụ diff --git a/htdocs/langs/vi_VN/cron.lang b/htdocs/langs/vi_VN/cron.lang index e72c787d499..20956d32a97 100644 --- a/htdocs/langs/vi_VN/cron.lang +++ b/htdocs/langs/vi_VN/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell lệnh CronMenu=Cron CronCannotLoadClass=Không thể tải lớp% s hoặc đối tượng% s UseMenuModuleToolsToAddCronJobs=Đi vào menu "Trang chủ - module công cụ - danh sách công việc" để xem và chỉnh sửa các công việc theo lịch trình. +TaskDisabled=Task disabled diff --git a/htdocs/langs/vi_VN/errors.lang b/htdocs/langs/vi_VN/errors.lang index ae106155037..2f1ec444337 100644 --- a/htdocs/langs/vi_VN/errors.lang +++ b/htdocs/langs/vi_VN/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=Nguồn tài khoản ngân hàng và các mục t ErrorBadThirdPartyName=Bad giá trị so với tên của bên thứ ba ErrorProdIdIsMandatory=% S là bắt buộc ErrorBadCustomerCodeSyntax=Bad cú pháp cho mã khách hàng -ErrorBadBarCodeSyntax=Bad cú pháp mã vạch +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Mã khách hàng yêu cầu ErrorBarCodeRequired=Mã vạch yêu cầu ErrorCustomerCodeAlreadyUsed=Mã số khách hàng đã sử dụng @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript không được vô hiệu hóa để l ErrorPasswordsMustMatch=Cả hai mật khẩu gõ phải phù hợp với nhau ErrorContactEMail=Một lỗi kỹ thuật xảy ra. Xin vui lòng liên hệ với quản trị viên để sau email% s en cung cấp các mã lỗi% s trong thông điệp của bạn, hoặc thậm chí tốt hơn bằng cách thêm một bản sao màn hình của trang này. ErrorWrongValueForField=Giá trị sai số cho lĩnh vực% s (giá trị '% s' không phù hợp với quy tắc regex% s) -ErrorFieldValueNotIn=Giá trị sai số cho lĩnh vực% s (giá trị '% s' không phải là một giá trị có sẵn vào lĩnh vực% s của bảng% s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Giá trị sai số cho lĩnh vực% s (giá trị '% s' không phải là ref hiện% s) ErrorsOnXLines=Lỗi được ghi nhận nguồn% s (s) ErrorFileIsInfectedWithAVirus=Các chương trình chống virus đã không thể xác nhận các tập tin (tập tin có thể bị nhiễm bởi một loại virus) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Thiết lập các thông số bắt buộc chưa được xác định diff --git a/htdocs/langs/vi_VN/install.lang b/htdocs/langs/vi_VN/install.lang index efc226e1a58..168fcac4a45 100644 --- a/htdocs/langs/vi_VN/install.lang +++ b/htdocs/langs/vi_VN/install.lang @@ -156,6 +156,7 @@ LastStepDesc=Bước cuối cùng: Xác định đây đăng nh ActivateModule=Kích hoạt module %s ShowEditTechnicalParameters=Click vào đây để hiển thị các thông số tiên tiến / chỉnh sửa (chế độ chuyên môn) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/vi_VN/main.lang b/htdocs/langs/vi_VN/main.lang index 363fd296611..62ee8e2af29 100644 --- a/htdocs/langs/vi_VN/main.lang +++ b/htdocs/langs/vi_VN/main.lang @@ -141,6 +141,7 @@ Cancel=Hủy bỏ Modify=Sửa đổi Edit=Chỉnh sửa Validate=Xác nhận +ValidateAndApprove=Validate and Approve ToValidate=Để xác nhận Save=Lưu SaveAs=Save As @@ -158,6 +159,7 @@ Search=Tìm kiếm SearchOf=Tìm kiếm Valid=Hợp lệ Approve=Phê duyệt +Disapprove=Disapprove ReOpen=Re-Open Upload=Gửi tập tin ToLink=Liên kết @@ -219,6 +221,7 @@ Cards=Thẻ Card=Thẻ Now=Bây giờ Date=Ngày +DateAndHour=Date and hour DateStart=Ngày bắt đầu DateEnd=Ngày kết thúc DateCreation=Ngày tạo @@ -295,6 +298,7 @@ UnitPriceHT=Đơn giá (net) UnitPriceTTC=Đơn giá PriceU=UP PriceUHT=UP (net) +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=UP Amount=Số tiền AmountInvoice=Lượng hóa đơn @@ -521,6 +525,7 @@ DateFromTo=Từ %s đến %s DateFrom=Từ% s DateUntil=Cho đến% s Check=Kiểm tra +Uncheck=Uncheck Internal=Nội bộ External=Bên ngoài Internals=Nội bộ @@ -688,6 +693,7 @@ PublicUrl=URL công cộng AddBox=Thêm vào hộp SelectElementAndClickRefresh=Chọn một phần tử và nhấn Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=Thứ hai Tuesday=Thứ ba diff --git a/htdocs/langs/vi_VN/orders.lang b/htdocs/langs/vi_VN/orders.lang index 735f5774e4f..16df451c547 100644 --- a/htdocs/langs/vi_VN/orders.lang +++ b/htdocs/langs/vi_VN/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=Đã bị hủy StatusOrderDraft=Nháp (cần phải được xác nhận) StatusOrderValidated=Xác nhận StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=Đã xử lý StatusOrderToBill=Đã giao hàng StatusOrderToBill2=Thanh toán @@ -58,6 +59,7 @@ MenuOrdersToBill=Đơn hàng đã giao MenuOrdersToBill2=Billable orders SearchOrder=Tìm kiếm đơn hàng SearchACustomerOrder=Tìm kiếm một đơn đặt hàng +SearchASupplierOrder=Search a supplier order ShipProduct=Ship product Discount=Giảm giá CreateOrder=Tạo đơn hàng diff --git a/htdocs/langs/vi_VN/other.lang b/htdocs/langs/vi_VN/other.lang index a87e0bbfbcb..7bbe0059342 100644 --- a/htdocs/langs/vi_VN/other.lang +++ b/htdocs/langs/vi_VN/other.lang @@ -54,12 +54,13 @@ MaxSize=Kích thước tối đa AttachANewFile=Đính kèm một tập tin mới / tài liệu LinkedObject=Đối tượng liên quan Miscellaneous=Linh tinh -NbOfActiveNotifications=Số thông báo +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=Đây là một email thử nghiệm. Hai dòng được phân cách bằng một trở về vận chuyển. __SIGNATURE__ PredefinedMailTestHtml=Đây là một thư kiểm tra (kiểm tra từ phải được in đậm).
Hai dòng được phân cách bằng một trở về vận chuyển.

__SIGNATURE__ PredefinedMailContentSendInvoice=__CONTACTCIVNAME__ Bạn sẽ tìm thấy ở đây các hóa đơn __FACREF__ __PERSONALIZED__Sincerely __SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__ Chúng tôi muốn cảnh báo bạn rằng __FACREF__ hóa đơn dường như không được payed. Vì vậy, đây là hóa đơn kèm một lần nữa, như một lời nhắc nhở. __PERSONALIZED__Sincerely __SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__ Bạn sẽ tìm thấy ở đây đề nghị thương mại __PROPREF__ __PERSONALIZED__Sincerely __SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__ Bạn sẽ tìm thấy ở đây thứ tự __ORDERREF__ __PERSONALIZED__Sincerely __SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__ Bạn sẽ tìm thấy ở đây để chúng tôi __ORDERREF__ __PERSONALIZED__Sincerely __SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__ Bạn sẽ tìm thấy ở đây các hóa đơn __FACREF__ __PERSONALIZED__Sincerely __SIGNATURE__ diff --git a/htdocs/langs/vi_VN/productbatch.lang b/htdocs/langs/vi_VN/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/vi_VN/productbatch.lang +++ b/htdocs/langs/vi_VN/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/vi_VN/products.lang b/htdocs/langs/vi_VN/products.lang index ec161d09574..4278c8abe94 100644 --- a/htdocs/langs/vi_VN/products.lang +++ b/htdocs/langs/vi_VN/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/vi_VN/projects.lang b/htdocs/langs/vi_VN/projects.lang index d06e3d14f88..13576931acd 100644 --- a/htdocs/langs/vi_VN/projects.lang +++ b/htdocs/langs/vi_VN/projects.lang @@ -8,8 +8,10 @@ SharedProject=Mọi người PrivateProject=Liên lạc về dự án MyProjectsDesc=Phần xem này được giới hạn với từng dự án phụ thuộc vào phần bạn có liên hệ với (đối với bất kỳ loại dự án nào). ProjectsPublicDesc=Phần xem này hiển thị tất cả các dự án mà bạn đã theo dõi. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=Phần xem này hiển thị tất cả các dự án (quyền người dùng hiện tại của bạn được phép xem chi tiết mọi thứ). MyTasksDesc=Phần xem này bị giới hạn với các dự án hoặc tác vụ mà bạn có mối liên hệ với (bất kỳ loại dự án nào). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=Phần xem này hiển thị tất cả dự án và tác vụ mà bạn được phép theo dõi. TasksDesc=Phần xem này hiển thị tất cả các dự án và tác vụ (quyền người dùng của bạn hiện đang cho phép bạn xem tất cả thông tin). ProjectsArea=Khu vực dự án @@ -29,6 +31,8 @@ NoProject=Không có dự án nào được định lược hoặc sở hữu NbOpenTasks=Nb của tác vụ được mở NbOfProjects=Nb của dự án TimeSpent=Thời gian đã qua +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=Thời gian đã qua RefTask=Tác vụ tham chiếu LabelTask=Nhãn của tác vụ @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Danh sách các đơn đặt hàng từ nhà ListSupplierInvoicesAssociatedProject=Danh sách các hóa đơn của nhà cung cấp được gắn với dự án ListContractAssociatedProject=Danh sách các hợp đồng được gắn với dự án ListFichinterAssociatedProject=Danh sách các sự can thiệp được gắn với dự án -ListTripAssociatedProject=Danh sách các chuyến đi và chi phí công tác gắn với dự án +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=Danh sách các hoạt động được gắn với dự án ActivityOnProjectThisWeek=Các hoạt động của dự án trong tuần này ActivityOnProjectThisMonth=Các hoạt động của dự án trong tháng này @@ -133,3 +137,6 @@ SearchAProject=Tìm kiếm một dự án ProjectMustBeValidatedFirst=Dự án phải được xác nhận đầu tiên ProjectDraft=Dự thảo dự án FirstAddRessourceToAllocateTime=Kết hợp một ressource để phân bổ thời gian +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/vi_VN/salaries.lang b/htdocs/langs/vi_VN/salaries.lang index a709c52f7a5..0568daa4efe 100644 --- a/htdocs/langs/vi_VN/salaries.lang +++ b/htdocs/langs/vi_VN/salaries.lang @@ -10,3 +10,4 @@ SalariesPayments=Lương thanh toán ShowSalaryPayment=Hiện thanh toán tiền lương THM=Giá trung bình theo giờ TJM=Giá trung bình hàng ngày +CurrentSalary=Current salary diff --git a/htdocs/langs/vi_VN/sendings.lang b/htdocs/langs/vi_VN/sendings.lang index 94e807f91b5..c6581043f86 100644 --- a/htdocs/langs/vi_VN/sendings.lang +++ b/htdocs/langs/vi_VN/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=Số lượng đặt hàng QtyShipped=Số lượng vận chuyển QtyToShip=Số lượng xuất xưởng QtyReceived=Số lượng nhận được -KeepToShip=Giữ tàu +KeepToShip=Remain to ship OtherSendingsForSameOrder=Lô hàng khác về đơn hàng này DateSending=Ngày gửi đơn đặt hàng DateSendingShort=Ngày gửi đơn đặt hàng diff --git a/htdocs/langs/vi_VN/stocks.lang b/htdocs/langs/vi_VN/stocks.lang index a78e65a63b8..656a87714c5 100644 --- a/htdocs/langs/vi_VN/stocks.lang +++ b/htdocs/langs/vi_VN/stocks.lang @@ -47,6 +47,7 @@ PMPValue=Giá bình quân gia quyền PMPValueShort=WAP EnhancedValueOfWarehouses=Các kho hàng giá trị UserWarehouseAutoCreate=Tạo một kho tự động khi tạo một người sử dụng +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=Số lượng cử QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=Kho% s sẽ được sử dụng cho kho giảm WarehouseForStockIncrease=Kho% s sẽ được sử dụng cho kho tăng ForThisWarehouse=Đối với kho này ReplenishmentStatusDesc=Đây là danh sách của tất cả các sản phẩm với một tồn kho thấp hơn so với tồn kho mong muốn (hoặc thấp hơn giá trị cảnh báo nếu hộp kiểm "cảnh báo chỉ" được chọn), và đề nghị bạn để tạo ra các đơn đặt hàng nhà cung cấp để lấp đầy sự khác biệt. -ReplenishmentOrdersDesc=Đây là danh sách của tất cả các đơn đặt hàng nhà cung cấp mở +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Số lượng sản phẩm% s trong kho trước khi thời gian được lựa chọn (<% s) NbOfProductAfterPeriod=Số lượng sản phẩm% s trong kho sau khi được lựa chọn thời gian (>% s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/vi_VN/suppliers.lang b/htdocs/langs/vi_VN/suppliers.lang index 44feaea27fe..bd00d3e0e7b 100644 --- a/htdocs/langs/vi_VN/suppliers.lang +++ b/htdocs/langs/vi_VN/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Nhà cung cấp -Supplier=Nhà cung cấp AddSupplier=Tạo một nhà cung cấp SupplierRemoved=Nhà cung cấp loại bỏ SuppliersInvoice=Nhà cung cấp hóa đơn @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=Hoá đơn và các khoản thanh toán nhà cung c ExportDataset_fournisseur_3=Đơn đặt hàng nhà cung cấp và các dòng lệnh ApproveThisOrder=Chấp thuận đơn hàng này ConfirmApproveThisOrder=Bạn Bạn có chắc chắn muốn chấp nhận để% s? -DenyingThisOrder=Phủ nhận thứ tự này +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Bạn có chắc chắn bạn muốn từ chối lệnh này% s? ConfirmCancelThisOrder=Bạn có chắc chắn bạn muốn hủy bỏ lệnh này% s? AddCustomerOrder=Tạo đơn đặt hàng diff --git a/htdocs/langs/vi_VN/trips.lang b/htdocs/langs/vi_VN/trips.lang index 98314aea027..10710992222 100644 --- a/htdocs/langs/vi_VN/trips.lang +++ b/htdocs/langs/vi_VN/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Chuyến đi -Trips=Các chuyến đi -TripsAndExpenses=Các chuyến đi và các chi phí -TripsAndExpensesStatistics=Các chuyến đi và các chi phí thống kê -TripCard=Thẻ đi -AddTrip=Thêm chuyến đi -ListOfTrips=Danh sách các chuyến đi +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=Danh sách phí -NewTrip=Chuyến đi mới +NewTrip=New expense report CompanyVisited=Công ty / cơ sở thăm Kilometers=Km FeesKilometersOrAmout=Số tiền hoặc km -DeleteTrip=Xóa đi -ConfirmDeleteTrip=Bạn Bạn có chắc chắn muốn xóa chuyến đi này? -TF_OTHER=Khác -TF_LUNCH=Ăn trưa -TF_TRIP=Chuyến đi -ListTripsAndExpenses=Danh sách các chuyến đi và các chi phí -ExpensesArea=Chi phí chuyến đi và khu vực -SearchATripAndExpense=Tìm kiếm một chuyến đi và chi phí +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Phân loại 'hoàn trả' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Khác +TF_TRANSPORTATION=Transportation +TF_LUNCH=Ăn trưa +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/zh_CN/admin.lang b/htdocs/langs/zh_CN/admin.lang index ed3f62b3a6c..150b021dcae 100644 --- a/htdocs/langs/zh_CN/admin.lang +++ b/htdocs/langs/zh_CN/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=试验性 VersionDevelopment=开发 VersionUnknown=未知 VersionRecommanded=推荐项目 +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=会话 ID SessionSaveHandler=会话保存处理程序 SessionSavePath=存储会话本地化 @@ -493,10 +498,16 @@ Module600Name=通知 Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=捐赠 Module700Desc=捐款的管理 +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis 整合 Module1400Name=会计 Module1400Desc=会计管理(双方) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=分类 Module1780Desc=分类的管理(产品、供应商和客户) Module2000Name=所见即所得编辑器 @@ -631,7 +642,7 @@ Permission181=读取采购订单 Permission182=建立/修改采购订单 Permission183=确认供采购订单 Permission184=批准采购订单 -Permission185=整理采购订单 +Permission185=Order or cancel supplier orders Permission186=接收采购订单 Permission187=关闭采购订单 Permission188=取消采购订单 @@ -711,6 +722,13 @@ Permission538=导出服务 Permission701=读取捐款资讯 Permission702=建立/修改捐款资讯 Permission703=删除捐款资讯 +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=读取库存资讯 Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=使用代理服务器的密码 DefineHereComplementaryAttributes=此处定义所有默认安装中没有,但您又希望能在 %s 中使用的属性。 ExtraFields=自定义增补属性 ExtraFieldsLines=增补属性 (行列) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=增补属性 (往来单位) ExtraFieldsContacts=增补属性 (联系人/地址) ExtraFieldsMember=增补属性 (成员) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=定量为0的产品或服务项视为可选项* FreeLegalTextOnProposal=报价单中的额外说明文本 WatermarkOnDraftProposal=为商业计划书草案添加水印(如果空) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=订单管理设置 OrdersNumberingModules=订单编号模块 @@ -1383,7 +1410,7 @@ BarcodeDescUPC=通用产品条码(UPC) BarcodeDescISBN=ISBN 书籍条码 BarcodeDescC39=Code 39 条码 BarcodeDescC128=Code 128 条码 -GenbarcodeLocation=条形码生成用的命令行工具 (内部引擎用来生成某些类型的条码) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=内部引擎 BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=接收现金付款的默认帐户 CashDeskBankAccountForCheque= 接收支票付款的默认帐户 CashDeskBankAccountForCB= 接收信用卡支付的默认帐户 -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=书签模块设置 @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=格式 TypePaymentDesc=0:客户支付类型,1:供应商支付类型,2:客户和供应商的付款方式 IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/zh_CN/banks.lang b/htdocs/langs/zh_CN/banks.lang index a5c26c5a4ac..906138fb720 100644 --- a/htdocs/langs/zh_CN/banks.lang +++ b/htdocs/langs/zh_CN/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=和解 RIB=银行帐号 IBAN=IBAN号码 +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=的BIC / SWIFT的号码 +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=常年订单 StandingOrder=长期订单 Withdrawals=提款 @@ -148,7 +152,7 @@ BackToAccount=回到帐户 ShowAllAccounts=显示所有帐户 FutureTransaction=在FUTUR的交易。调解没有办法。 SelectChequeTransactionAndGenerate=选择/过滤器检查纳入支票存款收据,并单击“创建”。 -InputReceiptNumber=选择用于调解的银行对帐单。使用排序的数值(如YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=最后,指定一个范畴对其中的记录进行分类 ToConciliate=取得谅解? ThenCheckLinesAndConciliate=然后按一下,连线检查银行对账单。 diff --git a/htdocs/langs/zh_CN/commercial.lang b/htdocs/langs/zh_CN/commercial.lang index 13a864bb130..6a88865a84e 100644 --- a/htdocs/langs/zh_CN/commercial.lang +++ b/htdocs/langs/zh_CN/commercial.lang @@ -9,9 +9,9 @@ Prospect=展望 Prospects=前途 DeleteAction=删除一个动作/任务 NewAction=新的行动/任务 -AddAction=新增行动/任务 -AddAnAction=添加一个动作/任务 -AddActionRendezVous=添加交会任务 +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=会合 ConfirmDeleteAction=你确定要删除这个任务吗? CardAction=行动卡 @@ -44,8 +44,8 @@ DoneActions=已完成的行动 DoneActionsFor=为%完成01-0014-03 ToDoActions=不完整的行动 ToDoActionsFor=不完全对%01-0014-03 -SendPropalRef=%s的发送商业建议 -SendOrderRef=发送命令%s的 +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=不适用 StatusActionToDo=要做到 StatusActionDone=完成 @@ -62,7 +62,7 @@ LastProspectContactDone=联系工作 DateActionPlanned=日期行动计划 DateActionDone=日期行动完成 ActionAskedBy=行动问 -ActionAffectedTo=受影响的行动 +ActionAffectedTo=Event assigned to ActionDoneBy=行动方面所做的 ActionUserAsk=记录 ErrorStatusCantBeZeroIfStarted=如果字段' 日期做 '是充满行动启动(或成品),所以外地的状态 '不能为0%%。 diff --git a/htdocs/langs/zh_CN/contracts.lang b/htdocs/langs/zh_CN/contracts.lang index b5ccca60cad..6e3696d7cb2 100644 --- a/htdocs/langs/zh_CN/contracts.lang +++ b/htdocs/langs/zh_CN/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=过期 ServiceStatusClosed=关闭 ServicesLegend=服务的传说 Contracts=合同 +ContractsAndLine=Contracts and line of contracts Contract=合同 NoContracts=没有合同 MenuServices=服务 diff --git a/htdocs/langs/zh_CN/cron.lang b/htdocs/langs/zh_CN/cron.lang index 6c5880d43a0..2cc313aad59 100644 --- a/htdocs/langs/zh_CN/cron.lang +++ b/htdocs/langs/zh_CN/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/zh_CN/errors.lang b/htdocs/langs/zh_CN/errors.lang index bae0d3f806d..e4adeba918d 100644 --- a/htdocs/langs/zh_CN/errors.lang +++ b/htdocs/langs/zh_CN/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=源和目标的银行帐户必须是不同的。 ErrorBadThirdPartyName=坏第三者名义价值 ErrorProdIdIsMandatory=%s 是强制性的 ErrorBadCustomerCodeSyntax=坏客户代码的语法 -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=客户代码需要 ErrorBarCodeRequired=需要条形码 ErrorCustomerCodeAlreadyUsed=客户代码已被使用 @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=不能禁用JavaScript必须有此功能的工作 ErrorPasswordsMustMatch=这两种类型的密码必须相互匹配 ErrorContactEMail=一个技术性错误发生。请联系管理员,以下连接提供错误代码%s在您的邮件,甚至更好,加入了这个页面的屏幕拷贝的电子邮件%s。 ErrorWrongValueForField=s'的领域的一些错误值的%s(价值'%不匹配正则表达式规则%s) -ErrorFieldValueNotIn=场数%s错误值(值'%s'是不是一个值到领域表%s %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=错场数%s值(值'%s'是不是一个的%s现有文献) ErrorsOnXLines=%误差源上线 ErrorFileIsInfectedWithAVirus=防病毒程序无法验证文件(文件可能被病毒感染) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=强制设置参数尚未定义 diff --git a/htdocs/langs/zh_CN/install.lang b/htdocs/langs/zh_CN/install.lang index fa94910fb70..9b2b50d9249 100644 --- a/htdocs/langs/zh_CN/install.lang +++ b/htdocs/langs/zh_CN/install.lang @@ -156,6 +156,7 @@ LastStepDesc=最后一步 :此处定义的登录名和密码 ActivateModule=激活模块%s ShowEditTechnicalParameters=点击此处显示/编辑高级参数(专家模式) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/zh_CN/main.lang b/htdocs/langs/zh_CN/main.lang index e46b3e779e3..ecfa96b7692 100644 --- a/htdocs/langs/zh_CN/main.lang +++ b/htdocs/langs/zh_CN/main.lang @@ -141,6 +141,7 @@ Cancel=取消 Modify=修改 Edit=编辑 Validate=验证 +ValidateAndApprove=Validate and Approve ToValidate=为了验证 Save=保存 SaveAs=另存为 @@ -158,6 +159,7 @@ Search=搜索 SearchOf=搜索 Valid=有效 Approve=批准 +Disapprove=Disapprove ReOpen=重新开放 Upload=发送文件 ToLink=Link @@ -219,6 +221,7 @@ Cards=牌 Card=卡 Now=现在 Date=日期 +DateAndHour=Date and hour DateStart=开始日期 DateEnd=结束日期 DateCreation=创建日期 @@ -295,6 +298,7 @@ UnitPriceHT=单位价格(净值) UnitPriceTTC=单价 PriceU=向上 PriceUHT=不含税价格 +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=向上 Amount=金额 AmountInvoice=发票金额 @@ -521,6 +525,7 @@ DateFromTo=从%s到%s DateFrom=第05期从% DateUntil=直到%s的 Check=支票 +Uncheck=Uncheck Internal=内部 External=外部 Internals=内部 @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=星期一 Tuesday=星期二 diff --git a/htdocs/langs/zh_CN/orders.lang b/htdocs/langs/zh_CN/orders.lang index 280b701742f..973b5713bb8 100644 --- a/htdocs/langs/zh_CN/orders.lang +++ b/htdocs/langs/zh_CN/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=已取消 StatusOrderDraft=草案(需要验证) StatusOrderValidated=已验证 StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=已处理 StatusOrderToBill=已递送 StatusOrderToBill2=待付账 @@ -58,6 +59,7 @@ MenuOrdersToBill=已发货订单 MenuOrdersToBill2=Billable orders SearchOrder=搜索订单 SearchACustomerOrder=搜索一个客户订单 +SearchASupplierOrder=Search a supplier order ShipProduct=航运产品 Discount=折扣 CreateOrder=创建订单 diff --git a/htdocs/langs/zh_CN/other.lang b/htdocs/langs/zh_CN/other.lang index 87e6584b4d6..e775c8b18fb 100644 --- a/htdocs/langs/zh_CN/other.lang +++ b/htdocs/langs/zh_CN/other.lang @@ -54,12 +54,13 @@ MaxSize=最大尺寸 AttachANewFile=附加一个新的文件/文件 LinkedObject=链接对象 Miscellaneous=杂项 -NbOfActiveNotifications=号码的通知 +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=这是一个测试邮件。\\ n该两行是由一个回车分隔。 PredefinedMailTestHtml=这是一个测试邮件(单词测试必须大胆)。
这两条线隔开,回车。 PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/zh_CN/productbatch.lang b/htdocs/langs/zh_CN/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/zh_CN/productbatch.lang +++ b/htdocs/langs/zh_CN/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/zh_CN/products.lang b/htdocs/langs/zh_CN/products.lang index 5ee6af20ff5..2ac2df060d9 100644 --- a/htdocs/langs/zh_CN/products.lang +++ b/htdocs/langs/zh_CN/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/zh_CN/projects.lang b/htdocs/langs/zh_CN/projects.lang index 7ce7b5665e7..b8326f1613d 100644 --- a/htdocs/langs/zh_CN/projects.lang +++ b/htdocs/langs/zh_CN/projects.lang @@ -8,8 +8,10 @@ SharedProject=每个人 PrivateProject=项目联系人 MyProjectsDesc=这种观点是有限的项目你是一个接触(不管是类型)。 ProjectsPublicDesc=这种观点提出了所有你被允许阅读的项目。 +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=这种观点提出的所有项目(你的用户权限批准你认为一切)。 MyTasksDesc=这种观点是有限的项目或任务你是一个接触(不管是类型)。 +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=这种观点提出的所有项目,您可阅读任务。 TasksDesc=这种观点提出的所有项目和任务(您的用户权限批准你认为一切)。 ProjectsArea=项目领域 @@ -29,6 +31,8 @@ NoProject=没有项目或拥有的定义 NbOpenTasks=铌打开任务 NbOfProjects=铌项目 TimeSpent=花费的时间 +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=所花费的时间 RefTask=号。任务 LabelTask=标签任务 @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=名单与项目相关的供应商的订单 ListSupplierInvoicesAssociatedProject=名单与项目相关的供应商的发票 ListContractAssociatedProject=名单与项目有关的合同 ListFichinterAssociatedProject=名单与项目相关的干预措施 -ListTripAssociatedProject=名单旅行和与项目有关的费用 +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=名单与项目有关的行动 ActivityOnProjectThisWeek=对项目活动周 ActivityOnProjectThisMonth=本月初对项目活动 @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/zh_CN/salaries.lang b/htdocs/langs/zh_CN/salaries.lang index 6e5624fd475..1aab039ba50 100644 --- a/htdocs/langs/zh_CN/salaries.lang +++ b/htdocs/langs/zh_CN/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=雇员 @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/zh_CN/sendings.lang b/htdocs/langs/zh_CN/sendings.lang index d498aa8ead8..2b316b2c21d 100644 --- a/htdocs/langs/zh_CN/sendings.lang +++ b/htdocs/langs/zh_CN/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=订购数量 QtyShipped=出货数量 QtyToShip=出货数量 QtyReceived=收到的数量 -KeepToShip=保持对船舶 +KeepToShip=Remain to ship OtherSendingsForSameOrder=这个命令的其他货物 DateSending=为了发送日期 DateSendingShort=为了发送日期 diff --git a/htdocs/langs/zh_CN/stocks.lang b/htdocs/langs/zh_CN/stocks.lang index b9a37e83685..f78f8468b67 100644 --- a/htdocs/langs/zh_CN/stocks.lang +++ b/htdocs/langs/zh_CN/stocks.lang @@ -47,6 +47,7 @@ PMPValue=加权平均价格 PMPValueShort=的WAP EnhancedValueOfWarehouses=仓库价值 UserWarehouseAutoCreate=创建一个股票时自动创建一个用户 +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=派出数量 QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/zh_CN/suppliers.lang b/htdocs/langs/zh_CN/suppliers.lang index e03729ca861..fb95ba7355c 100644 --- a/htdocs/langs/zh_CN/suppliers.lang +++ b/htdocs/langs/zh_CN/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=供应商 -Supplier=供应商 AddSupplier=Create a supplier SupplierRemoved=供应商删除 SuppliersInvoice=供应商发票 @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=供应商发票和付款 ExportDataset_fournisseur_3=供应商的订单和订单行 ApproveThisOrder=批准这一命令 ConfirmApproveThisOrder=你确定要批准了这项命令? -DenyingThisOrder=否认这种秩序 +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=你确定要否认这个秩序? ConfirmCancelThisOrder=您确定要取消此订单? AddCustomerOrder=创建客户订单 diff --git a/htdocs/langs/zh_CN/trips.lang b/htdocs/langs/zh_CN/trips.lang index 239e2d1265c..4962abe8c28 100644 --- a/htdocs/langs/zh_CN/trips.lang +++ b/htdocs/langs/zh_CN/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=旅程 -Trips=旅游 -TripsAndExpenses=旅游和费用 -TripsAndExpensesStatistics=旅行和费用统计 -TripCard=旅卡 -AddTrip=添加行程 -ListOfTrips=旅行名单 +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=费用清单 -NewTrip=新旅程 +NewTrip=New expense report CompanyVisited=公司/基础访问 Kilometers=公里 FeesKilometersOrAmout=金额或公里 -DeleteTrip=删除行 -ConfirmDeleteTrip=你确定要删除此行? -TF_OTHER=其他 -TF_LUNCH=午餐 -TF_TRIP=旅程 -ListTripsAndExpenses=旅行和费用清单 -ExpensesArea=与贸易有关的知识产权协定“和开支面积 -SearchATripAndExpense=寻找旅行和费用 +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=其他 +TF_TRANSPORTATION=Transportation +TF_LUNCH=午餐 +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/zh_TW/admin.lang b/htdocs/langs/zh_TW/admin.lang index 7c22ab166f0..5ce0072aebb 100644 --- a/htdocs/langs/zh_TW/admin.lang +++ b/htdocs/langs/zh_TW/admin.lang @@ -8,6 +8,11 @@ VersionExperimental=實驗 VersionDevelopment=發展 VersionUnknown=未知 VersionRecommanded=推薦 +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=會話ID SessionSaveHandler=處理程序,以節省會議 SessionSavePath=本地化存儲會議 @@ -493,10 +498,16 @@ Module600Name=通知 Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) Module700Name=捐贈 Module700Desc=捐款的管理 +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=螂 Module1200Desc=螳螂一體化 Module1400Name=會計 Module1400Desc=會計管理(雙方) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation Module1780Name=分類 Module1780Desc=分類的管理(產品,供應商和客戶) Module2000Name=fckeditor的 @@ -631,7 +642,7 @@ Permission181=讀取供應商訂單 Permission182=建立/修改供應商訂單 Permission183=驗證供應商訂單 Permission184=核准供應商訂單 -Permission185=整理供應商訂單 +Permission185=Order or cancel supplier orders Permission186=接收供應商訂單 Permission187=關閉供應商訂單 Permission188=取消供應商訂單 @@ -711,6 +722,13 @@ Permission538=出口服務 Permission701=閲讀捐款 Permission702=建立/修改捐款 Permission703=刪除捐款 +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports Permission1001=讀取庫存資訊 Permission1002=Create/modify warehouses Permission1003=Delete warehouses @@ -1025,6 +1043,8 @@ MAIN_PROXY_PASS=使用代理服務器的密碼 DefineHereComplementaryAttributes=請再這裡新增客制化欄位,以便讓 %s 模組可以支援顯示。 ExtraFields=新增客制化欄位 ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) ExtraFieldsThirdParties=Complementary attributes (thirdparty) ExtraFieldsContacts=Complementary attributes (contact/address) ExtraFieldsMember=Complementary attributes (member) @@ -1152,6 +1172,13 @@ UseOptionLineIfNoQuantity=一個產品線/服務的,是作為一個選項視 FreeLegalTextOnProposal=可在下面輸入額外的建議書資訊 WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request ##### Orders ##### OrdersSetup=設定訂單管理模組 OrdersNumberingModules=訂單編號模組 @@ -1383,7 +1410,7 @@ BarcodeDescUPC=通用產品條碼(UPC) BarcodeDescISBN=書籍條碼類型 BarcodeDescC39=Code 39 條碼 BarcodeDescC128=Code 128 條碼 -GenbarcodeLocation=條碼生成命令行工具(由phpbarcode引擎用於某些類型的條形碼) +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### @@ -1501,9 +1528,10 @@ CashDeskThirdPartyForSell=Default generic third party to use for sells CashDeskBankAccountForSell=帳戶用於接收現金付款 CashDeskBankAccountForCheque= 帳戶用於接收支票付款 CashDeskBankAccountForCB= 帳戶用於接收信用卡支付現金 -CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. ##### Bookmark ##### BookmarkSetup=模組設置書籤 @@ -1569,3 +1597,7 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/zh_TW/banks.lang b/htdocs/langs/zh_TW/banks.lang index 7a6b5d7355f..93639850ef2 100644 --- a/htdocs/langs/zh_TW/banks.lang +++ b/htdocs/langs/zh_TW/banks.lang @@ -33,7 +33,11 @@ AllTime=From start Reconciliation=和解 RIB=銀行帳號 IBAN=IBAN號碼 +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid BIC=的BIC / SWIFT的號碼 +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid StandingOrders=常年訂單 StandingOrder=長期訂單 Withdrawals=提款 @@ -148,7 +152,7 @@ BackToAccount=回到帳戶 ShowAllAccounts=顯示所有帳戶 FutureTransaction=在FUTUR的交易。調解沒有辦法。 SelectChequeTransactionAndGenerate=選擇/篩選器檢查納入支票存款收據,並單擊“創建”。 -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=To conciliate? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click diff --git a/htdocs/langs/zh_TW/commercial.lang b/htdocs/langs/zh_TW/commercial.lang index 465a6118291..bf96053a8ec 100644 --- a/htdocs/langs/zh_TW/commercial.lang +++ b/htdocs/langs/zh_TW/commercial.lang @@ -9,9 +9,9 @@ Prospect=展望 Prospects=潛在 DeleteAction=刪除一個動作/任務 NewAction=新的行動/任務 -AddAction=新增行動/任務 -AddAnAction=添加一個動作/任務 -AddActionRendezVous=添加交會任務 +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event Rendez-Vous=會合 ConfirmDeleteAction=你確定要刪除這個任務嗎? CardAction=行動卡 @@ -44,8 +44,8 @@ DoneActions=已完成的行動 DoneActionsFor=為%s完成01-0014-03 ToDoActions=不完整的行動 ToDoActionsFor=不完全對%01-0014-03 -SendPropalRef=%s的發送商業建議 -SendOrderRef=發送訂單 %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s StatusNotApplicable=不適用 StatusActionToDo=要做到 StatusActionDone=完成 @@ -62,7 +62,7 @@ LastProspectContactDone=聯絡完成 DateActionPlanned=日期行動計劃 DateActionDone=日期行動完成 ActionAskedBy=行動問 -ActionAffectedTo=受影響的行動 +ActionAffectedTo=Event assigned to ActionDoneBy=行動方面所做的 ActionUserAsk=記錄 ErrorStatusCantBeZeroIfStarted=如果字段' 日期做 '是充滿行動啟動(或成品),所以外地的狀態 '不能為0%%。 diff --git a/htdocs/langs/zh_TW/contracts.lang b/htdocs/langs/zh_TW/contracts.lang index d513a4f4b35..63b5742cf83 100644 --- a/htdocs/langs/zh_TW/contracts.lang +++ b/htdocs/langs/zh_TW/contracts.lang @@ -19,6 +19,7 @@ ServiceStatusLateShort=過期 ServiceStatusClosed=關閉 ServicesLegend=服務的傳說 Contracts=合同 +ContractsAndLine=Contracts and line of contracts Contract=合同 NoContracts=沒有合同 MenuServices=服務 diff --git a/htdocs/langs/zh_TW/cron.lang b/htdocs/langs/zh_TW/cron.lang index c8e534528f5..a2b5296ad01 100644 --- a/htdocs/langs/zh_TW/cron.lang +++ b/htdocs/langs/zh_TW/cron.lang @@ -84,3 +84,4 @@ CronType_command=Shell command CronMenu=Cron CronCannotLoadClass=Cannot load class %s or object %s UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/zh_TW/errors.lang b/htdocs/langs/zh_TW/errors.lang index 2f8a6e35c64..4245e06fb04 100644 --- a/htdocs/langs/zh_TW/errors.lang +++ b/htdocs/langs/zh_TW/errors.lang @@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=源和目標的銀行帳戶必須是不同的。 ErrorBadThirdPartyName=錯誤的客戶/供應商名稱 ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=壞客戶代碼的語法 -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=客戶代碼需要 ErrorBarCodeRequired=Bar code required ErrorCustomerCodeAlreadyUsed=客戶代碼已被使用 @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=不能禁用JavaScript必須有此功能的工作 ErrorPasswordsMustMatch=這兩種類型的密碼必須相互匹配 ErrorContactEMail=一個技術性錯誤發生。請聯系管理員,以下連接提供錯誤代碼%s在您的郵件,甚至更好,加入了這個頁面的屏幕拷貝的電子郵件%s。 ErrorWrongValueForField=s'的領域的一些錯誤值的%s(價值'%不匹配正則表達式規則%s) -ErrorFieldValueNotIn=場數%s錯誤值(值'%s'是不是一個值到領域表%s %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=錯場數%s值(值'%s'是不是一個的%s現有文獻) ErrorsOnXLines=%誤差源上線 ErrorFileIsInfectedWithAVirus=防病毒程序無法驗證文件(文件可能被病毒感染) @@ -160,6 +160,7 @@ ErrorPriceExpressionInternal=Internal error '%s' ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/zh_TW/install.lang b/htdocs/langs/zh_TW/install.lang index 51a93e88a66..0d8db02acc2 100644 --- a/htdocs/langs/zh_TW/install.lang +++ b/htdocs/langs/zh_TW/install.lang @@ -156,6 +156,7 @@ LastStepDesc=最後一步 :此處定義的登錄名和密碼 ActivateModule=激活模塊%s ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) ######### # upgrade diff --git a/htdocs/langs/zh_TW/main.lang b/htdocs/langs/zh_TW/main.lang index dcc25276db5..825700c91da 100644 --- a/htdocs/langs/zh_TW/main.lang +++ b/htdocs/langs/zh_TW/main.lang @@ -141,6 +141,7 @@ Cancel=取消 Modify=修改 Edit=編輯 Validate=驗證 +ValidateAndApprove=Validate and Approve ToValidate=為了驗證 Save=儲存 SaveAs=另存為 @@ -158,6 +159,7 @@ Search=搜尋 SearchOf=搜尋 Valid=有效 Approve=批準 +Disapprove=Disapprove ReOpen=重新開放 Upload=發送文件 ToLink=Link @@ -219,6 +221,7 @@ Cards=資訊卡 Card=資訊卡 Now=現在 Date=日期 +DateAndHour=Date and hour DateStart=開始日期 DateEnd=結束日期 DateCreation=建立日期 @@ -295,6 +298,7 @@ UnitPriceHT=單位價格(凈值) UnitPriceTTC=單價 PriceU=向上 PriceUHT=不含稅價格 +AskPriceSupplierUHT=P.U. HT Requested PriceUTTC=向上 Amount=總額 AmountInvoice=發票金額 @@ -521,6 +525,7 @@ DateFromTo=從%s到%s DateFrom=第05期從%s DateUntil=直到%s的 Check=支票 +Uncheck=Uncheck Internal=內部 External=非內部 Internals=內部 @@ -688,6 +693,7 @@ PublicUrl=Public URL AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s +ShowTransaction=Show transaction # Week day Monday=星期一 Tuesday=星期二 diff --git a/htdocs/langs/zh_TW/orders.lang b/htdocs/langs/zh_TW/orders.lang index 105a3209321..acf0e5c9696 100644 --- a/htdocs/langs/zh_TW/orders.lang +++ b/htdocs/langs/zh_TW/orders.lang @@ -42,6 +42,7 @@ StatusOrderCanceled=取消 StatusOrderDraft=草案(等待驗證) StatusOrderValidated=驗證階段 StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation StatusOrderProcessed=處理完畢 StatusOrderToBill=等待帳單 StatusOrderToBill2=為了法案 @@ -58,6 +59,7 @@ MenuOrdersToBill=訂單To帳單 MenuOrdersToBill2=Billable orders SearchOrder=搜尋訂單 SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order ShipProduct=船舶產品 Discount=折扣 CreateOrder=創建訂單 diff --git a/htdocs/langs/zh_TW/other.lang b/htdocs/langs/zh_TW/other.lang index 227494058af..49b687412d6 100644 --- a/htdocs/langs/zh_TW/other.lang +++ b/htdocs/langs/zh_TW/other.lang @@ -54,12 +54,13 @@ MaxSize=檔案最大 AttachANewFile=附加一個新的檔案/文件 LinkedObject=鏈接對象 Miscellaneous=雜項 -NbOfActiveNotifications=號碼的通知 +NbOfActiveNotifications=Number of notifications (nb of recipient emails) PredefinedMailTest=這是一個測試郵件。\\ n該兩行是由一個回車分隔。 PredefinedMailTestHtml=這是一個測試郵件(單詞測試必須大膽)。
這兩條線隔開,回車。 PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ diff --git a/htdocs/langs/zh_TW/productbatch.lang b/htdocs/langs/zh_TW/productbatch.lang index 864782023a0..45263681965 100644 --- a/htdocs/langs/zh_TW/productbatch.lang +++ b/htdocs/langs/zh_TW/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Batch/Serial number l_eatby=Eat-by date l_sellby=Sell-by date DetailBatchNumber=Batch/Serial details -DetailBatchFormat=Batch/Serial: %s - E:%s - S: %s (Qty : %d) +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) printBatch=Batch: %s printEatby=Eat-by: %s printSellby=Sell-by: %s diff --git a/htdocs/langs/zh_TW/products.lang b/htdocs/langs/zh_TW/products.lang index e18d6416532..60d05dae9f0 100644 --- a/htdocs/langs/zh_TW/products.lang +++ b/htdocs/langs/zh_TW/products.lang @@ -250,3 +250,7 @@ PriceExpressionEditorHelp3=In both product/service and supplier prices there are PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# PriceMode=Price mode PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/zh_TW/projects.lang b/htdocs/langs/zh_TW/projects.lang index 2970d7c4481..4c29cb68aad 100644 --- a/htdocs/langs/zh_TW/projects.lang +++ b/htdocs/langs/zh_TW/projects.lang @@ -8,8 +8,10 @@ SharedProject=每個人 PrivateProject=項目聯系人 MyProjectsDesc=這種觀點是有限的項目你是一個接觸(不管是類型)。 ProjectsPublicDesc=這種觀點提出了所有你被允許閱讀的項目。 +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=這種觀點提出的所有項目(你的用戶權限批準你認為一切)。 MyTasksDesc=這種觀點是有限的項目或任務你是一個接觸(不管是類型)。 +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=這種觀點提出的所有項目,您可閱讀任務。 TasksDesc=這種觀點提出的所有項目和任務(您的用戶權限批準你認為一切)。 ProjectsArea=項目領域 @@ -29,6 +31,8 @@ NoProject=沒有項目或擁有的定義 NbOpenTasks=鈮打開任務 NbOfProjects=鈮項目 TimeSpent=花費的時間 +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user TimesSpent=所花費的時間 RefTask=任務編號 LabelTask=標簽任務 @@ -67,7 +71,7 @@ ListSupplierOrdersAssociatedProject=名單與項目相關的供應商的訂單 ListSupplierInvoicesAssociatedProject=名單與項目相關的供應商的發票 ListContractAssociatedProject=名單與項目有關的合同 ListFichinterAssociatedProject=名單與項目相關的幹預措施 -ListTripAssociatedProject=名單旅行和與項目有關的費用 +ListExpenseReportsAssociatedProject=List of expense reports associated with the project ListActionsAssociatedProject=名單與項目有關的行動 ActivityOnProjectThisWeek=對項目活動周 ActivityOnProjectThisMonth=本月初對項目活動 @@ -133,3 +137,6 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/zh_TW/salaries.lang b/htdocs/langs/zh_TW/salaries.lang index edca71a1829..28c21adfad3 100644 --- a/htdocs/langs/zh_TW/salaries.lang +++ b/htdocs/langs/zh_TW/salaries.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary Salaries=Salaries Employee=Employee @@ -6,3 +8,6 @@ NewSalaryPayment=New salary payment SalaryPayment=Salary payment SalariesPayments=Salaries payments ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/zh_TW/sendings.lang b/htdocs/langs/zh_TW/sendings.lang index 8cd48f0d71f..55380896853 100644 --- a/htdocs/langs/zh_TW/sendings.lang +++ b/htdocs/langs/zh_TW/sendings.lang @@ -23,7 +23,7 @@ QtyOrdered=訂購數量 QtyShipped=出貨數量 QtyToShip=出貨數量 QtyReceived=收到的數量 -KeepToShip=持續出貨 +KeepToShip=Remain to ship OtherSendingsForSameOrder=此訂單的其他出貨清單 DateSending=出貨日期 DateSendingShort=出貨日期 diff --git a/htdocs/langs/zh_TW/stocks.lang b/htdocs/langs/zh_TW/stocks.lang index a0973e97c5b..9c1b117b91e 100644 --- a/htdocs/langs/zh_TW/stocks.lang +++ b/htdocs/langs/zh_TW/stocks.lang @@ -47,6 +47,7 @@ PMPValue=加權平均價格 PMPValueShort=的WAP EnhancedValueOfWarehouses=倉庫價值 UserWarehouseAutoCreate=當建立一個用戶時,自動建立一個倉庫 +IndependantSubProductStock=Product stock and subproduct stock are independant QtyDispatched=派出數量 QtyDispatchedShort=Qty dispatched QtyToDispatchShort=Qty to dispatch @@ -110,7 +111,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) @@ -130,3 +131,4 @@ IsInPackage=Contained into package ShowWarehouse=Show warehouse MovementCorrectStock=Stock content correction for product %s MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/zh_TW/suppliers.lang b/htdocs/langs/zh_TW/suppliers.lang index 8ad3d74c0b0..b7f31a8d40a 100644 --- a/htdocs/langs/zh_TW/suppliers.lang +++ b/htdocs/langs/zh_TW/suppliers.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=供應商 -Supplier=供應商 AddSupplier=Create a supplier SupplierRemoved=供應商刪除 SuppliersInvoice=供應商的發票 @@ -30,7 +29,7 @@ ExportDataset_fournisseur_2=供應商發票和付款 ExportDataset_fournisseur_3=Supplier orders and order lines ApproveThisOrder=批準這個訂單 ConfirmApproveThisOrder=你確定要批準這個訂單? -DenyingThisOrder=否認這個訂單 +DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=你確定要否認這個訂單? ConfirmCancelThisOrder=您確定要取消此訂單? AddCustomerOrder=創建客戶訂單 diff --git a/htdocs/langs/zh_TW/trips.lang b/htdocs/langs/zh_TW/trips.lang index 4d4375cbb3e..fc99f600d25 100644 --- a/htdocs/langs/zh_TW/trips.lang +++ b/htdocs/langs/zh_TW/trips.lang @@ -1,22 +1,126 @@ # Dolibarr language file - Source file is en_US - trips -Trip=旅程 -Trips=旅遊 -TripsAndExpenses=旅遊和費用 -TripsAndExpensesStatistics=旅行和費用統計 -TripCard=旅卡 -AddTrip=添加行程 -ListOfTrips=旅行名單 +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report ListOfFees=費用清單 -NewTrip=新旅程 +NewTrip=New expense report CompanyVisited=公司/基礎訪問 Kilometers=公裏 FeesKilometersOrAmout=金額或公裏 -DeleteTrip=刪除行 -ConfirmDeleteTrip=你確定要刪除此行? -TF_OTHER=其他 -TF_LUNCH=午餐 -TF_TRIP=旅程 -ListTripsAndExpenses=旅行和費用清單 -ExpensesArea=與貿易有關的知識產權協定“和開支面積 -SearchATripAndExpense=尋找旅行和費用 +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=其他 +TF_TRANSPORTATION=Transportation +TF_LUNCH=午餐 +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. From 971f9b0c30bbd01a79a15da9adf81036f8a070dd Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 13 Mar 2015 22:08:24 +0100 Subject: [PATCH 261/429] Fix: Migration script --- htdocs/install/mysql/migration/3.7.0-3.8.0.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index 73ace187708..b7475d88f91 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -368,5 +368,5 @@ INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('DAP', 'Delivered At INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('DDP', 'Delivered Duty Paid, marchandises (non déchargées) livrées à destination finale, dédouanement import et taxes à la charge du vendeur ; l''acheteur prend en charge uniquement le déchargement (si exclusion des taxes type TVA, le préciser clairement)', 1); -- Extrafields fk_object must be unique (1-1 relation) -ALTER TABLE llx_societe_extrafields DROP INDEX idx_societe_extrafields +ALTER TABLE llx_societe_extrafields DROP INDEX idx_societe_extrafields; ALTER TABLE llx_societe_extrafields ADD UNIQUE INDEX uk_societe_extrafields (fk_object); From 7a877e9cfbdad0be652145e1fe27b35b180d897c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Mar 2015 00:51:12 +0100 Subject: [PATCH 262/429] Restore correct keys --- htdocs/langs/pl_PL/main.lang | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/langs/pl_PL/main.lang b/htdocs/langs/pl_PL/main.lang index edc327913a3..4cc0afc76c2 100644 --- a/htdocs/langs/pl_PL/main.lang +++ b/htdocs/langs/pl_PL/main.lang @@ -8,12 +8,12 @@ FONTFORPDF=DejaVuSans FONTSIZEFORPDF=10 SeparatorDecimal=, SeparatorThousand=Space -FormatDateShort=%d-%m-%r -FormatDateShortInput=%d-%m-%r -FormatDateShortJava=dd-MM-rrrr -FormatDateShortJavaInput=dd-MM-rrrr -FormatDateShortJQuery=dd-mm-rr -FormatDateShortJQueryInput=dd-mm-rr +FormatDateShort=%d-%m-%Y +FormatDateShortInput=%d-%m-%Y +FormatDateShortJava=dd-MM-yyyy +FormatDateShortJavaInput=dd-MM-yyyy +FormatDateShortJQuery=dd-mm-yy +FormatDateShortJQueryInput=dd-mm-yy FormatHourShortJQuery=HH:MM FormatHourShort=%I:%M %p FormatHourShortDuration=%H:%M From 0ef2369399ac31584c44c23ea8d89341af580bcb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Mar 2015 02:37:18 +0100 Subject: [PATCH 263/429] Enhance tools to make transifex sync --- .tx/config | 2 +- dev/fixaltlanguages.sh | 12 +- dev/translation/strip_language_file.php | 75 +- dev/translation/txpull.sh | 20 +- htdocs/langs/de_AT/admin.lang | 5 - htdocs/langs/de_AT/bills.lang | 1 - htdocs/langs/de_AT/companies.lang | 15 - htdocs/langs/de_AT/dict.lang | 17 - htdocs/langs/de_AT/donations.lang | 1 - htdocs/langs/de_AT/ftp.lang | 1 - htdocs/langs/de_AT/main.lang | 1 - htdocs/langs/de_AT/other.lang | 1 - htdocs/langs/de_AT/products.lang | 3 - htdocs/langs/de_AT/propal.lang | 2 - htdocs/langs/de_CH/companies.lang | 1 - htdocs/langs/{nl_BE => en_GB}/commercial.lang | 1 + htdocs/langs/en_GB/cron.lang | 3 + htdocs/langs/en_GB/exports.lang | 1 - htdocs/langs/en_GB/orders.lang | 3 + htdocs/langs/en_GB/suppliers.lang | 2 + htdocs/langs/en_GB/trips.lang | 14 + htdocs/langs/en_US/productbatch.lang | 12 +- htdocs/langs/en_ZA/companies.lang | 1 - htdocs/langs/en_ZA/compta.lang | 1 - htdocs/langs/es_AR/cron.lang | 3 + htdocs/langs/es_AR/main.lang | 21 + htdocs/langs/es_AR/orders.lang | 3 + htdocs/langs/es_AR/trips.lang | 13 + htdocs/langs/es_CO/admin.lang | 5 + htdocs/langs/es_CO/bills.lang | 2 + htdocs/langs/es_CO/companies.lang | 29 + htdocs/langs/es_CO/cron.lang | 3 + htdocs/langs/es_CO/main.lang | 21 + htdocs/langs/es_CO/orders.lang | 3 + htdocs/langs/es_CO/trips.lang | 13 + htdocs/langs/es_ES/trips.lang | 26 +- htdocs/langs/fr_FR/admin.lang | 12 +- htdocs/langs/fr_FR/banks.lang | 10 +- htdocs/langs/fr_FR/commercial.lang | 2 +- htdocs/langs/fr_FR/contracts.lang | 2 +- htdocs/langs/fr_FR/cron.lang | 2 +- htdocs/langs/fr_FR/errors.lang | 2 +- htdocs/langs/fr_FR/trips.lang | 52 +- htdocs/langs/kn_IN/accountancy.lang | 160 ++ htdocs/langs/kn_IN/admin.lang | 1603 +++++++++++++++++ htdocs/langs/kn_IN/agenda.lang | 93 + htdocs/langs/kn_IN/banks.lang | 165 ++ htdocs/langs/kn_IN/bills.lang | 430 +++++ htdocs/langs/kn_IN/bookmarks.lang | 19 + htdocs/langs/kn_IN/boxes.lang | 96 + htdocs/langs/kn_IN/cashdesk.lang | 40 + htdocs/langs/kn_IN/categories.lang | 112 ++ htdocs/langs/kn_IN/commercial.lang | 96 + htdocs/langs/kn_IN/companies.lang | 414 +++++ htdocs/langs/kn_IN/compta.lang | 207 +++ htdocs/langs/kn_IN/contracts.lang | 103 ++ htdocs/langs/kn_IN/cron.lang | 87 + htdocs/langs/kn_IN/deliveries.lang | 28 + htdocs/langs/kn_IN/dict.lang | 327 ++++ htdocs/langs/kn_IN/donations.lang | 38 + htdocs/langs/kn_IN/ecm.lang | 57 + htdocs/langs/kn_IN/errors.lang | 183 ++ htdocs/langs/kn_IN/exports.lang | 134 ++ htdocs/langs/kn_IN/externalsite.lang | 5 + htdocs/langs/kn_IN/ftp.lang | 12 + htdocs/langs/kn_IN/help.lang | 28 + htdocs/langs/kn_IN/holiday.lang | 148 ++ htdocs/langs/kn_IN/install.lang | 214 +++ htdocs/langs/kn_IN/interventions.lang | 53 + htdocs/langs/kn_IN/languages.lang | 72 + htdocs/langs/kn_IN/ldap.lang | 29 + htdocs/langs/{pt_BR => kn_IN}/link.lang | 5 +- htdocs/langs/kn_IN/mailmanspip.lang | 27 + htdocs/langs/kn_IN/mails.lang | 141 ++ htdocs/langs/kn_IN/main.lang | 725 ++++++++ htdocs/langs/kn_IN/margins.lang | 45 + htdocs/langs/kn_IN/members.lang | 206 +++ htdocs/langs/kn_IN/opensurvey.lang | 66 + htdocs/langs/kn_IN/orders.lang | 166 ++ htdocs/langs/kn_IN/other.lang | 238 +++ htdocs/langs/kn_IN/paybox.lang | 40 + htdocs/langs/kn_IN/paypal.lang | 25 + htdocs/langs/kn_IN/printipp.lang | 14 + htdocs/langs/kn_IN/productbatch.lang | 21 + htdocs/langs/kn_IN/products.lang | 256 +++ htdocs/langs/kn_IN/projects.lang | 142 ++ htdocs/langs/kn_IN/propal.lang | 100 + htdocs/langs/kn_IN/resource.lang | 34 + htdocs/langs/kn_IN/salaries.lang | 13 + htdocs/langs/kn_IN/sendings.lang | 85 + htdocs/langs/kn_IN/sms.lang | 53 + htdocs/langs/kn_IN/stocks.lang | 134 ++ htdocs/langs/kn_IN/suppliers.lang | 45 + htdocs/langs/kn_IN/trips.lang | 126 ++ htdocs/langs/kn_IN/users.lang | 122 ++ htdocs/langs/kn_IN/withdrawals.lang | 97 + htdocs/langs/kn_IN/workflow.lang | 11 + htdocs/langs/lo_LA/accountancy.lang | 160 ++ htdocs/langs/lo_LA/admin.lang | 1603 +++++++++++++++++ htdocs/langs/lo_LA/agenda.lang | 93 + htdocs/langs/lo_LA/banks.lang | 165 ++ htdocs/langs/lo_LA/bills.lang | 430 +++++ htdocs/langs/lo_LA/bookmarks.lang | 19 + htdocs/langs/lo_LA/boxes.lang | 96 + htdocs/langs/lo_LA/cashdesk.lang | 40 + htdocs/langs/lo_LA/categories.lang | 112 ++ htdocs/langs/lo_LA/commercial.lang | 96 + htdocs/langs/lo_LA/companies.lang | 414 +++++ htdocs/langs/lo_LA/compta.lang | 207 +++ htdocs/langs/lo_LA/contracts.lang | 103 ++ htdocs/langs/lo_LA/cron.lang | 87 + htdocs/langs/lo_LA/deliveries.lang | 28 + htdocs/langs/lo_LA/dict.lang | 327 ++++ htdocs/langs/lo_LA/donations.lang | 38 + htdocs/langs/lo_LA/ecm.lang | 57 + htdocs/langs/lo_LA/errors.lang | 183 ++ htdocs/langs/lo_LA/exports.lang | 134 ++ htdocs/langs/lo_LA/externalsite.lang | 5 + htdocs/langs/lo_LA/ftp.lang | 12 + htdocs/langs/lo_LA/help.lang | 28 + htdocs/langs/lo_LA/holiday.lang | 148 ++ htdocs/langs/lo_LA/install.lang | 214 +++ htdocs/langs/lo_LA/interventions.lang | 53 + htdocs/langs/lo_LA/languages.lang | 72 + htdocs/langs/lo_LA/ldap.lang | 29 + htdocs/langs/lo_LA/link.lang | 8 + htdocs/langs/lo_LA/mailmanspip.lang | 27 + htdocs/langs/lo_LA/mails.lang | 141 ++ htdocs/langs/lo_LA/main.lang | 725 ++++++++ htdocs/langs/lo_LA/margins.lang | 45 + htdocs/langs/lo_LA/members.lang | 206 +++ htdocs/langs/lo_LA/opensurvey.lang | 66 + htdocs/langs/lo_LA/orders.lang | 166 ++ htdocs/langs/lo_LA/other.lang | 238 +++ htdocs/langs/lo_LA/paybox.lang | 40 + htdocs/langs/lo_LA/paypal.lang | 25 + htdocs/langs/lo_LA/printipp.lang | 14 + htdocs/langs/lo_LA/productbatch.lang | 21 + htdocs/langs/lo_LA/products.lang | 256 +++ htdocs/langs/lo_LA/projects.lang | 142 ++ htdocs/langs/lo_LA/propal.lang | 100 + htdocs/langs/lo_LA/resource.lang | 34 + htdocs/langs/lo_LA/salaries.lang | 13 + htdocs/langs/lo_LA/sendings.lang | 85 + htdocs/langs/lo_LA/sms.lang | 53 + htdocs/langs/lo_LA/stocks.lang | 134 ++ htdocs/langs/lo_LA/suppliers.lang | 45 + htdocs/langs/lo_LA/trips.lang | 126 ++ htdocs/langs/lo_LA/users.lang | 122 ++ htdocs/langs/lo_LA/withdrawals.lang | 97 + htdocs/langs/lo_LA/workflow.lang | 11 + htdocs/langs/nl_BE/banks.lang | 2 - htdocs/langs/nl_BE/bills.lang | 6 - htdocs/langs/nl_BE/boxes.lang | 1 - htdocs/langs/nl_BE/companies.lang | 1 - htdocs/langs/nl_BE/compta.lang | 2 - htdocs/langs/nl_BE/dict.lang | 4 - htdocs/langs/nl_BE/ecm.lang | 1 - htdocs/langs/nl_BE/errors.lang | 7 - htdocs/langs/nl_BE/exports.lang | 6 - htdocs/langs/nl_BE/ftp.lang | 1 - htdocs/langs/nl_BE/help.lang | 1 - htdocs/langs/nl_BE/install.lang | 6 - htdocs/langs/nl_BE/languages.lang | 1 - htdocs/langs/nl_BE/mails.lang | 1 - htdocs/langs/nl_BE/main.lang | 21 - htdocs/langs/nl_BE/orders.lang | 1 - htdocs/langs/nl_BE/other.lang | 3 - htdocs/langs/nl_BE/paybox.lang | 1 - htdocs/langs/nl_BE/products.lang | 5 - htdocs/langs/pl_PL/main.lang | 2 +- htdocs/langs/pt_BR/accountancy.lang | 78 - htdocs/langs/pt_BR/admin.lang | 8 - htdocs/langs/pt_BR/companies.lang | 19 - htdocs/langs/pt_BR/holiday.lang | 42 - htdocs/langs/pt_BR/install.lang | 2 - htdocs/langs/pt_BR/languages.lang | 1 - htdocs/langs/pt_BR/main.lang | 13 - htdocs/langs/pt_BR/members.lang | 1 - htdocs/langs/pt_BR/orders.lang | 2 - htdocs/langs/pt_BR/other.lang | 3 - htdocs/langs/pt_BR/printipp.lang | 10 + htdocs/langs/pt_BR/productbatch.lang | 3 + htdocs/langs/pt_PT/orders.lang | 2 +- htdocs/langs/ru_UA/banks.lang | 1 - htdocs/langs/ru_UA/cron.lang | 1 - htdocs/langs/ru_UA/holiday.lang | 1 - htdocs/langs/ru_UA/mailmanspip.lang | 1 - htdocs/langs/ru_UA/margins.lang | 1 - htdocs/langs/ru_UA/opensurvey.lang | 1 - htdocs/langs/ru_UA/users.lang | 1 - htdocs/langs/sw_SW/accountancy.lang | 160 ++ htdocs/langs/sw_SW/admin.lang | 1603 +++++++++++++++++ htdocs/langs/sw_SW/agenda.lang | 93 + htdocs/langs/sw_SW/banks.lang | 165 ++ htdocs/langs/sw_SW/bills.lang | 430 +++++ htdocs/langs/sw_SW/bookmarks.lang | 19 + htdocs/langs/sw_SW/boxes.lang | 96 + htdocs/langs/sw_SW/cashdesk.lang | 40 + htdocs/langs/sw_SW/categories.lang | 112 ++ htdocs/langs/sw_SW/commercial.lang | 96 + htdocs/langs/sw_SW/companies.lang | 414 +++++ htdocs/langs/sw_SW/compta.lang | 207 +++ htdocs/langs/sw_SW/contracts.lang | 103 ++ htdocs/langs/sw_SW/cron.lang | 87 + htdocs/langs/sw_SW/deliveries.lang | 28 + htdocs/langs/sw_SW/dict.lang | 327 ++++ htdocs/langs/sw_SW/donations.lang | 38 + htdocs/langs/sw_SW/ecm.lang | 57 + htdocs/langs/sw_SW/errors.lang | 183 ++ htdocs/langs/sw_SW/exports.lang | 134 ++ htdocs/langs/sw_SW/externalsite.lang | 5 + htdocs/langs/sw_SW/ftp.lang | 12 + htdocs/langs/sw_SW/help.lang | 28 + htdocs/langs/sw_SW/holiday.lang | 148 ++ htdocs/langs/sw_SW/install.lang | 214 +++ htdocs/langs/sw_SW/interventions.lang | 53 + htdocs/langs/sw_SW/languages.lang | 72 + htdocs/langs/sw_SW/ldap.lang | 29 + htdocs/langs/sw_SW/link.lang | 8 + htdocs/langs/sw_SW/mailmanspip.lang | 27 + htdocs/langs/sw_SW/mails.lang | 141 ++ htdocs/langs/sw_SW/main.lang | 725 ++++++++ htdocs/langs/sw_SW/margins.lang | 45 + htdocs/langs/sw_SW/members.lang | 206 +++ htdocs/langs/sw_SW/opensurvey.lang | 66 + htdocs/langs/sw_SW/orders.lang | 166 ++ htdocs/langs/sw_SW/other.lang | 238 +++ htdocs/langs/sw_SW/paybox.lang | 40 + htdocs/langs/sw_SW/paypal.lang | 25 + htdocs/langs/sw_SW/printipp.lang | 14 + htdocs/langs/sw_SW/productbatch.lang | 21 + htdocs/langs/sw_SW/products.lang | 256 +++ htdocs/langs/sw_SW/projects.lang | 142 ++ htdocs/langs/sw_SW/propal.lang | 100 + htdocs/langs/sw_SW/resource.lang | 34 + htdocs/langs/sw_SW/salaries.lang | 13 + htdocs/langs/sw_SW/sendings.lang | 85 + htdocs/langs/sw_SW/sms.lang | 53 + htdocs/langs/sw_SW/stocks.lang | 134 ++ htdocs/langs/sw_SW/suppliers.lang | 45 + htdocs/langs/sw_SW/trips.lang | 126 ++ htdocs/langs/sw_SW/users.lang | 122 ++ htdocs/langs/sw_SW/withdrawals.lang | 97 + htdocs/langs/sw_SW/workflow.lang | 11 + htdocs/langs/uz_UZ/accountancy.lang | 160 ++ htdocs/langs/uz_UZ/link.lang | 8 + htdocs/langs/uz_UZ/printipp.lang | 14 + htdocs/langs/uz_UZ/productbatch.lang | 21 + htdocs/langs/uz_UZ/resource.lang | 34 + htdocs/langs/uz_UZ/salaries.lang | 13 + 251 files changed, 24237 insertions(+), 372 deletions(-) delete mode 100644 htdocs/langs/de_AT/donations.lang delete mode 100644 htdocs/langs/de_AT/ftp.lang delete mode 100644 htdocs/langs/de_CH/companies.lang rename htdocs/langs/{nl_BE => en_GB}/commercial.lang (63%) create mode 100644 htdocs/langs/en_GB/cron.lang delete mode 100644 htdocs/langs/en_GB/exports.lang create mode 100644 htdocs/langs/en_GB/orders.lang create mode 100644 htdocs/langs/en_GB/suppliers.lang create mode 100644 htdocs/langs/en_GB/trips.lang delete mode 100644 htdocs/langs/en_ZA/companies.lang delete mode 100644 htdocs/langs/en_ZA/compta.lang create mode 100644 htdocs/langs/es_AR/cron.lang create mode 100644 htdocs/langs/es_AR/main.lang create mode 100644 htdocs/langs/es_AR/orders.lang create mode 100644 htdocs/langs/es_AR/trips.lang create mode 100644 htdocs/langs/es_CO/admin.lang create mode 100644 htdocs/langs/es_CO/bills.lang create mode 100644 htdocs/langs/es_CO/companies.lang create mode 100644 htdocs/langs/es_CO/cron.lang create mode 100644 htdocs/langs/es_CO/main.lang create mode 100644 htdocs/langs/es_CO/orders.lang create mode 100644 htdocs/langs/es_CO/trips.lang create mode 100644 htdocs/langs/kn_IN/accountancy.lang create mode 100644 htdocs/langs/kn_IN/admin.lang create mode 100644 htdocs/langs/kn_IN/agenda.lang create mode 100644 htdocs/langs/kn_IN/banks.lang create mode 100644 htdocs/langs/kn_IN/bills.lang create mode 100644 htdocs/langs/kn_IN/bookmarks.lang create mode 100644 htdocs/langs/kn_IN/boxes.lang create mode 100644 htdocs/langs/kn_IN/cashdesk.lang create mode 100644 htdocs/langs/kn_IN/categories.lang create mode 100644 htdocs/langs/kn_IN/commercial.lang create mode 100644 htdocs/langs/kn_IN/companies.lang create mode 100644 htdocs/langs/kn_IN/compta.lang create mode 100644 htdocs/langs/kn_IN/contracts.lang create mode 100644 htdocs/langs/kn_IN/cron.lang create mode 100644 htdocs/langs/kn_IN/deliveries.lang create mode 100644 htdocs/langs/kn_IN/dict.lang create mode 100644 htdocs/langs/kn_IN/donations.lang create mode 100644 htdocs/langs/kn_IN/ecm.lang create mode 100644 htdocs/langs/kn_IN/errors.lang create mode 100644 htdocs/langs/kn_IN/exports.lang create mode 100644 htdocs/langs/kn_IN/externalsite.lang create mode 100644 htdocs/langs/kn_IN/ftp.lang create mode 100644 htdocs/langs/kn_IN/help.lang create mode 100644 htdocs/langs/kn_IN/holiday.lang create mode 100644 htdocs/langs/kn_IN/install.lang create mode 100644 htdocs/langs/kn_IN/interventions.lang create mode 100644 htdocs/langs/kn_IN/languages.lang create mode 100644 htdocs/langs/kn_IN/ldap.lang rename htdocs/langs/{pt_BR => kn_IN}/link.lang (59%) create mode 100644 htdocs/langs/kn_IN/mailmanspip.lang create mode 100644 htdocs/langs/kn_IN/mails.lang create mode 100644 htdocs/langs/kn_IN/main.lang create mode 100644 htdocs/langs/kn_IN/margins.lang create mode 100644 htdocs/langs/kn_IN/members.lang create mode 100644 htdocs/langs/kn_IN/opensurvey.lang create mode 100644 htdocs/langs/kn_IN/orders.lang create mode 100644 htdocs/langs/kn_IN/other.lang create mode 100644 htdocs/langs/kn_IN/paybox.lang create mode 100644 htdocs/langs/kn_IN/paypal.lang create mode 100644 htdocs/langs/kn_IN/printipp.lang create mode 100644 htdocs/langs/kn_IN/productbatch.lang create mode 100644 htdocs/langs/kn_IN/products.lang create mode 100644 htdocs/langs/kn_IN/projects.lang create mode 100644 htdocs/langs/kn_IN/propal.lang create mode 100644 htdocs/langs/kn_IN/resource.lang create mode 100644 htdocs/langs/kn_IN/salaries.lang create mode 100644 htdocs/langs/kn_IN/sendings.lang create mode 100644 htdocs/langs/kn_IN/sms.lang create mode 100644 htdocs/langs/kn_IN/stocks.lang create mode 100644 htdocs/langs/kn_IN/suppliers.lang create mode 100644 htdocs/langs/kn_IN/trips.lang create mode 100644 htdocs/langs/kn_IN/users.lang create mode 100644 htdocs/langs/kn_IN/withdrawals.lang create mode 100644 htdocs/langs/kn_IN/workflow.lang create mode 100644 htdocs/langs/lo_LA/accountancy.lang create mode 100644 htdocs/langs/lo_LA/admin.lang create mode 100644 htdocs/langs/lo_LA/agenda.lang create mode 100644 htdocs/langs/lo_LA/banks.lang create mode 100644 htdocs/langs/lo_LA/bills.lang create mode 100644 htdocs/langs/lo_LA/bookmarks.lang create mode 100644 htdocs/langs/lo_LA/boxes.lang create mode 100644 htdocs/langs/lo_LA/cashdesk.lang create mode 100644 htdocs/langs/lo_LA/categories.lang create mode 100644 htdocs/langs/lo_LA/commercial.lang create mode 100644 htdocs/langs/lo_LA/companies.lang create mode 100644 htdocs/langs/lo_LA/compta.lang create mode 100644 htdocs/langs/lo_LA/contracts.lang create mode 100644 htdocs/langs/lo_LA/cron.lang create mode 100644 htdocs/langs/lo_LA/deliveries.lang create mode 100644 htdocs/langs/lo_LA/dict.lang create mode 100644 htdocs/langs/lo_LA/donations.lang create mode 100644 htdocs/langs/lo_LA/ecm.lang create mode 100644 htdocs/langs/lo_LA/errors.lang create mode 100644 htdocs/langs/lo_LA/exports.lang create mode 100644 htdocs/langs/lo_LA/externalsite.lang create mode 100644 htdocs/langs/lo_LA/ftp.lang create mode 100644 htdocs/langs/lo_LA/help.lang create mode 100644 htdocs/langs/lo_LA/holiday.lang create mode 100644 htdocs/langs/lo_LA/install.lang create mode 100644 htdocs/langs/lo_LA/interventions.lang create mode 100644 htdocs/langs/lo_LA/languages.lang create mode 100644 htdocs/langs/lo_LA/ldap.lang create mode 100644 htdocs/langs/lo_LA/link.lang create mode 100644 htdocs/langs/lo_LA/mailmanspip.lang create mode 100644 htdocs/langs/lo_LA/mails.lang create mode 100644 htdocs/langs/lo_LA/main.lang create mode 100644 htdocs/langs/lo_LA/margins.lang create mode 100644 htdocs/langs/lo_LA/members.lang create mode 100644 htdocs/langs/lo_LA/opensurvey.lang create mode 100644 htdocs/langs/lo_LA/orders.lang create mode 100644 htdocs/langs/lo_LA/other.lang create mode 100644 htdocs/langs/lo_LA/paybox.lang create mode 100644 htdocs/langs/lo_LA/paypal.lang create mode 100644 htdocs/langs/lo_LA/printipp.lang create mode 100644 htdocs/langs/lo_LA/productbatch.lang create mode 100644 htdocs/langs/lo_LA/products.lang create mode 100644 htdocs/langs/lo_LA/projects.lang create mode 100644 htdocs/langs/lo_LA/propal.lang create mode 100644 htdocs/langs/lo_LA/resource.lang create mode 100644 htdocs/langs/lo_LA/salaries.lang create mode 100644 htdocs/langs/lo_LA/sendings.lang create mode 100644 htdocs/langs/lo_LA/sms.lang create mode 100644 htdocs/langs/lo_LA/stocks.lang create mode 100644 htdocs/langs/lo_LA/suppliers.lang create mode 100644 htdocs/langs/lo_LA/trips.lang create mode 100644 htdocs/langs/lo_LA/users.lang create mode 100644 htdocs/langs/lo_LA/withdrawals.lang create mode 100644 htdocs/langs/lo_LA/workflow.lang delete mode 100644 htdocs/langs/nl_BE/companies.lang delete mode 100644 htdocs/langs/nl_BE/ftp.lang delete mode 100644 htdocs/langs/nl_BE/help.lang delete mode 100644 htdocs/langs/nl_BE/languages.lang delete mode 100644 htdocs/langs/nl_BE/paybox.lang create mode 100644 htdocs/langs/pt_BR/printipp.lang create mode 100644 htdocs/langs/pt_BR/productbatch.lang delete mode 100644 htdocs/langs/ru_UA/cron.lang delete mode 100644 htdocs/langs/ru_UA/holiday.lang delete mode 100644 htdocs/langs/ru_UA/mailmanspip.lang delete mode 100644 htdocs/langs/ru_UA/margins.lang delete mode 100644 htdocs/langs/ru_UA/opensurvey.lang delete mode 100644 htdocs/langs/ru_UA/users.lang create mode 100644 htdocs/langs/sw_SW/accountancy.lang create mode 100644 htdocs/langs/sw_SW/admin.lang create mode 100644 htdocs/langs/sw_SW/agenda.lang create mode 100644 htdocs/langs/sw_SW/banks.lang create mode 100644 htdocs/langs/sw_SW/bills.lang create mode 100644 htdocs/langs/sw_SW/bookmarks.lang create mode 100644 htdocs/langs/sw_SW/boxes.lang create mode 100644 htdocs/langs/sw_SW/cashdesk.lang create mode 100644 htdocs/langs/sw_SW/categories.lang create mode 100644 htdocs/langs/sw_SW/commercial.lang create mode 100644 htdocs/langs/sw_SW/companies.lang create mode 100644 htdocs/langs/sw_SW/compta.lang create mode 100644 htdocs/langs/sw_SW/contracts.lang create mode 100644 htdocs/langs/sw_SW/cron.lang create mode 100644 htdocs/langs/sw_SW/deliveries.lang create mode 100644 htdocs/langs/sw_SW/dict.lang create mode 100644 htdocs/langs/sw_SW/donations.lang create mode 100644 htdocs/langs/sw_SW/ecm.lang create mode 100644 htdocs/langs/sw_SW/errors.lang create mode 100644 htdocs/langs/sw_SW/exports.lang create mode 100644 htdocs/langs/sw_SW/externalsite.lang create mode 100644 htdocs/langs/sw_SW/ftp.lang create mode 100644 htdocs/langs/sw_SW/help.lang create mode 100644 htdocs/langs/sw_SW/holiday.lang create mode 100644 htdocs/langs/sw_SW/install.lang create mode 100644 htdocs/langs/sw_SW/interventions.lang create mode 100644 htdocs/langs/sw_SW/languages.lang create mode 100644 htdocs/langs/sw_SW/ldap.lang create mode 100644 htdocs/langs/sw_SW/link.lang create mode 100644 htdocs/langs/sw_SW/mailmanspip.lang create mode 100644 htdocs/langs/sw_SW/mails.lang create mode 100644 htdocs/langs/sw_SW/main.lang create mode 100644 htdocs/langs/sw_SW/margins.lang create mode 100644 htdocs/langs/sw_SW/members.lang create mode 100644 htdocs/langs/sw_SW/opensurvey.lang create mode 100644 htdocs/langs/sw_SW/orders.lang create mode 100644 htdocs/langs/sw_SW/other.lang create mode 100644 htdocs/langs/sw_SW/paybox.lang create mode 100644 htdocs/langs/sw_SW/paypal.lang create mode 100644 htdocs/langs/sw_SW/printipp.lang create mode 100644 htdocs/langs/sw_SW/productbatch.lang create mode 100644 htdocs/langs/sw_SW/products.lang create mode 100644 htdocs/langs/sw_SW/projects.lang create mode 100644 htdocs/langs/sw_SW/propal.lang create mode 100644 htdocs/langs/sw_SW/resource.lang create mode 100644 htdocs/langs/sw_SW/salaries.lang create mode 100644 htdocs/langs/sw_SW/sendings.lang create mode 100644 htdocs/langs/sw_SW/sms.lang create mode 100644 htdocs/langs/sw_SW/stocks.lang create mode 100644 htdocs/langs/sw_SW/suppliers.lang create mode 100644 htdocs/langs/sw_SW/trips.lang create mode 100644 htdocs/langs/sw_SW/users.lang create mode 100644 htdocs/langs/sw_SW/withdrawals.lang create mode 100644 htdocs/langs/sw_SW/workflow.lang create mode 100644 htdocs/langs/uz_UZ/accountancy.lang create mode 100644 htdocs/langs/uz_UZ/link.lang create mode 100644 htdocs/langs/uz_UZ/printipp.lang create mode 100644 htdocs/langs/uz_UZ/productbatch.lang create mode 100644 htdocs/langs/uz_UZ/resource.lang create mode 100644 htdocs/langs/uz_UZ/salaries.lang diff --git a/.tx/config b/.tx/config index e4d1fc65732..67c7b863f37 100644 --- a/.tx/config +++ b/.tx/config @@ -1,6 +1,6 @@ [main] host = https://www.transifex.com -lang_map = uz: uz_UZ +lang_map = uz: uz_UZ, sw: sw_SW [dolibarr.accountancy] file_filter = htdocs/langs//accountancy.lang diff --git a/dev/fixaltlanguages.sh b/dev/fixaltlanguages.sh index eec9df4b88f..bfb9aa900b6 100755 --- a/dev/fixaltlanguages.sh +++ b/dev/fixaltlanguages.sh @@ -32,6 +32,7 @@ then for dir in `find htdocs/langs/$3* -type d` do dirshort=`basename $dir` + #echo $dirshort export aa=`echo $dirshort | nawk -F"_" '{ print $1 }'` @@ -42,7 +43,7 @@ then aaupper="US" fi bblower=`echo $dirshort | nawk -F"_" '{ print tolower($2) }'` - if [ "$aa" != "$bblower" -a "$bblower" != "us" ] + if [ "$aa" != "$bblower" -a "$dirshort" != "en_US" ] then reflang="htdocs/langs/"$aa"_"$aaupper if [ -d $reflang ] @@ -52,6 +53,15 @@ then echo ./dev/translation/strip_language_file.php $aa"_"$aaupper $aa"_"$bb $2 ./dev/translation/strip_language_file.php $aa"_"$aaupper $aa"_"$bb $2 for fic in `ls htdocs/langs/${aa}_${bb}/*.delta`; do f=`echo $fic | sed -e 's/\.delta//'`; echo $f; mv $f.delta $f; done + for fic in `ls htdocs/langs/${aa}_${bb}/*.lang`; + do f=`cat $fic | wc -l`; + #echo $f lines into file $fic; + if [ $f = 1 ] + then + echo Only one line remainging into file $fic, we delete it; + rm $fic + fi; + done fi fi done; diff --git a/dev/translation/strip_language_file.php b/dev/translation/strip_language_file.php index e3c31b89b58..6102ed3826c 100755 --- a/dev/translation/strip_language_file.php +++ b/dev/translation/strip_language_file.php @@ -60,6 +60,7 @@ $rc = 0; $lPrimary = isset($argv[1])?$argv[1]:''; $lSecondary = isset($argv[2])?$argv[2]:''; +$lEnglish = 'en_US'; $filesToProcess = isset($argv[3])?$argv[3]:''; if (empty($lPrimary) || empty($lSecondary) || empty($filesToProcess)) @@ -73,6 +74,7 @@ if (empty($lPrimary) || empty($lSecondary) || empty($filesToProcess)) $aPrimary = array(); $aSecondary = array(); +$aEnglish = array(); // Define array $filesToProcess if ($filesToProcess == 'all') @@ -96,6 +98,7 @@ foreach($filesToProcess as $fileToProcess) { $lPrimaryFile = 'htdocs/langs/'.$lPrimary.'/'.$fileToProcess; $lSecondaryFile = 'htdocs/langs/'.$lSecondary.'/'.$fileToProcess; + $lEnglishFile = 'htdocs/langs/'.$lEnglish.'/'.$fileToProcess; $output = $lSecondaryFile . '.delta'; print "---- Process language file ".$lSecondaryFile."\n"; @@ -114,6 +117,13 @@ foreach($filesToProcess as $fileToProcess) continue; } + if ( ! is_readable($lEnglishFile) ) { + $rc = 3; + $msg = "Cannot read english language file $lEnglishFile. We discard this file."; + print $msg . "\n"; + continue; + } + // Start reading and parsing Secondary if ( $handle = fopen($lSecondaryFile, 'r') ) @@ -172,6 +182,65 @@ foreach($filesToProcess as $fileToProcess) } + // Start reading and parsing English + + if ( $handle = fopen($lEnglishFile, 'r') ) + { + print "Read English File $lEnglishFile:\n"; + $cnt = 0; + while (($line = fgets($handle)) !== false) + { + $cnt++; + + // strip comments + if ( preg_match("/^\w*#/", $line) ) { + continue; + } + // strip empty lines + if ( preg_match("/^\w*$/", $line) ) { + continue; + } + + $a = mb_split('=', trim($line), 2); + if ( count($a) != 2 ) { + print "ERROR in file $lEnglishFile, line $cnt: " . trim($line) . "\n"; + continue; + } + + list($key, $value) = $a; + + // key is redundant + if ( array_key_exists($key, $aEnglish) ) { + print "Key $key is redundant in file $lEnglishFile (line: $cnt).\n"; + continue; + } + + // String has no value + if ( $value == '' ) { + print "Key $key has no value in file $lEnglishFile (line: $cnt).\n"; + continue; + } + + $aEnglish[$key] = trim($value); + } + if ( ! feof($handle) ) + { + $rc = 5; + $msg = "Unexpected fgets() fail"; + print $msg . " (rc=$rc).\n"; + exit($rc); + } + fclose($handle); + } + else { + $rc = 6; + $msg = "Cannot open file $lEnglishFile"; + print $msg . " (rc=$rc).\n"; + exit($rc); + } + + + // Start reading and parsing Primary. See rules in header! $arrayofkeytoalwayskeep=array('DIRECTION','FONTFORPDF','FONTSIZEFORPDF','SeparatorDecimal','SeparatorThousand'); @@ -246,7 +315,11 @@ foreach($filesToProcess as $fileToProcess) } // String exists in both files and does not match - if ((! empty($aSecondary[$key]) && $aSecondary[$key] != $aPrimary[$key]) || in_array($key, $arrayofkeytoalwayskeep) || preg_match('/^FormatDate/',$key) || preg_match('/^FormatHour/',$key)) + if ( + (! empty($aSecondary[$key]) && $aSecondary[$key] != $aPrimary[$key] + && ! empty($aEnglish[$key]) && $aSecondary[$key] != $aEnglish[$key]) + || in_array($key, $arrayofkeytoalwayskeep) || preg_match('/^FormatDate/',$key) || preg_match('/^FormatHour/',$key) + ) { //print "Key $key differs so we add it into new secondary language (line: $cnt).\n"; fwrite($oh, $key."=".(empty($aSecondary[$key])?$aPrimary[$key]:$aSecondary[$key])."\n"); diff --git a/dev/translation/txpull.sh b/dev/translation/txpull.sh index 2e4470111e6..0154fb14c72 100755 --- a/dev/translation/txpull.sh +++ b/dev/translation/txpull.sh @@ -13,7 +13,7 @@ then echo "This pull remote transifex files to local dir." echo "Note: If you pull a language file (not source), file will be skipped if local file is newer." echo " Using -f will overwrite local file (does not work with 'all')." - echo "Usage: ./dev/translation/txpull.sh (all|xx_XX) [-r dolibarr.file] [-f]" + echo "Usage: ./dev/translation/txpull.sh (all|xx_XX) [-r dolibarr.file] [-f] [-s]" exit fi @@ -26,13 +26,21 @@ fi if [ "x$1" = "xall" ] then - for fic in ar_SA bg_BG bs_BA ca_ES cs_CZ da_DK de_DE el_GR es_ES et_EE eu_ES fa_IR fi_FI fr_FR he_IL hr_HR hu_HU id_ID is_IS it_IT ja_JP ka_GE ko_KR lt_LT lv_LV mk_MK nb_NO nl_NL pl_PL pt_PT ro_RO ru_RU ru_UA sk_SK sl_SI sq_AL sv_SE th_TH tr_TR uk_UA uz_UZ vi_VN zh_CN zh_TW + cd htdocs/lang + for dir in `find htdocs/langs/* -type d` do - echo "tx pull -l $fic $2 $3" - tx pull -l $fic $2 $3 + fic=`basename $dir` + if [ $fic != "en_US" ] + then + echo "tx pull -l $fic $2 $3" + tx pull -l $fic $2 $3 + fi done + cd - else - echo "tx pull -l $1 $2 $3 $4" - tx pull -l $1 $2 $3 $4 + echo "tx pull -l $1 $2 $3 $4 $5" + tx pull -l $1 $2 $3 $4 $5 fi +echo Think to launch also: +echo "> dev/fixaltlanguages.sh fix all" diff --git a/htdocs/langs/de_AT/admin.lang b/htdocs/langs/de_AT/admin.lang index 72053d81e4b..fbde76477d8 100644 --- a/htdocs/langs/de_AT/admin.lang +++ b/htdocs/langs/de_AT/admin.lang @@ -9,7 +9,6 @@ GenericMaskCodes2=(cccc) den Client-Code
() cccc000 den Clien GenericMaskCodes5=ABC (yy) (mm) - (000000) wird ABC0701-000099
(0000 +100)-ZZZ / tt () / XXX wird 0199-ZZZ/31/XXX NumberOfModelFilesFound=Anzahl der in diesen Verzeichnissen gefundenen .odt-Dokumentvorlagen ExampleOfDirectoriesForModelGen=Beispiele für Syntax:
c:\mydir
/Home/mydir
DOL_DATA_ROOT/ecm/ecmdir -Module53Name=Services Module53Desc=Services-Verwaltung Module70Name=Eingriffe Module70Desc=Eingriffsverwaltung @@ -73,16 +72,12 @@ DictionaryCompanyJuridicalType=Rechtsform DictionaryCanton=Bundesland VATReceivedOnly=Nur Mehtwertsteuererhalt VATIsNotUsedDesc=Die vorgeschlagene MwSt. ist standardmäßig 0 für alle Fälle wie Stiftungen, Einzelpersonen oder Kleinunternehmen- -VATIsUsedExampleFR=In France, it means companies or organisations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. -VATIsNotUsedExampleFR=In France, it means associations that are non VAT declared or companies, organisations or liberal professions that have chosen the micro enterprise fiscal system (VAT in franchise) and paid a franchise VAT without any VAT declaration. This choice will display the reference "Non applicable VAT - art-293B of CGI" on invoices. VirtualServerName=Virtual Server Name -PhpConf=Conf PhpWebLink=Php Web-Link DatabaseName=Datenbankname DatabasePort=Datenbank-Port DatabaseUser=Datenbankbenutzer DatabasePassword=Datenbankpasswort -Constraints=Constraints ConstraintsType=Constraint-Typ ConstraintsToShowOrNotEntry=Constraint zeigen oder nicht - Menü-Eintrag AllMustBeOk=Alle erfordern eine Überprüfung diff --git a/htdocs/langs/de_AT/bills.lang b/htdocs/langs/de_AT/bills.lang index 135854c6022..5ff216e9fd4 100644 --- a/htdocs/langs/de_AT/bills.lang +++ b/htdocs/langs/de_AT/bills.lang @@ -10,7 +10,6 @@ InvoiceProFormaAsk=Proforma Rechnung InvoiceProFormaDesc=Proforma Rechnung ist ein Bild eines echten Rechnung, hat aber keine Buchhaltung Wert. ConsumedBy=Consumed von CardBill=Rechnungskarte -Abandoned=Abandoned CustomerBillsUnpaid=Kunden wegen eines nicht bezahlten Rechnungen NewRelativeDiscount=Neue relative Rabatt DescTaxAndDividendsArea=Dieser Bereich stellt eine Übersicht über alle Zahlungen, die für die Steuer-oder Sozialabgaben. Nur Datensätze mit der Bezahlung während der festgesetzten Jahr hier. diff --git a/htdocs/langs/de_AT/companies.lang b/htdocs/langs/de_AT/companies.lang index eccdf9bd2cb..5d03cea798a 100644 --- a/htdocs/langs/de_AT/companies.lang +++ b/htdocs/langs/de_AT/companies.lang @@ -8,23 +8,8 @@ Web=Webadresse LocalTax1IsUsedES=RE wird LocalTax2IsUsedES=IRPF verwendet wird ProfId1AR=Prof Id 1 (CUIL) -ProfId2AU=- -ProfId3AU=- -ProfId4AU=- -ProfId2BE=- -ProfId3BE=- -ProfId4BE=- -ProfId1CH=- -ProfId2CH=- -ProfId1DE=Prof Id 1 (USt.-IdNr) -ProfId2DE=Prof Id 2 (USt.-Nr) -ProfId3DE=Prof Id 3 (Handelsregister-Nr.) -ProfId4DE=- -ProfId2GB=- -ProfId4GB=- CustomerCode=Kunden-Code CapitalOf=Hauptstadt von %s NorProspectNorCustomer=Weder Lead noch Kunde OthersNotLinkedToThirdParty=Andere, nicht mit einem Partner verknüpfte -TE_UNKNOWN=- ExportDataset_company_1=Partner und Eigenschaften diff --git a/htdocs/langs/de_AT/dict.lang b/htdocs/langs/de_AT/dict.lang index adc324ae56a..eb8aea115d5 100644 --- a/htdocs/langs/de_AT/dict.lang +++ b/htdocs/langs/de_AT/dict.lang @@ -1,45 +1,28 @@ # Dolibarr language file - Source file is en_US - dict CountryCI=Ivoiry Küste CountryAX=Land-Inseln -CountryAI=Anguilla CountryBW=Botsuana CountryCV=Kap Verde -CountryKY=Cayman Islands -CountryCX=Christmas Island CountryCC=Cocos (Keeling) Inseln CountryHT=Hati CountryHM=Heard und McDonald CountryVA=Heiliger Stuhl (Staat Vatikanstadt) -CountryIS=Icelande -CountryKG=Kyrghyztan CountryLA=Laotisch CountryLY=Libysch -CountryLT=Lituania CountryMK=Mazedonien, die ehemalige jugoslawische der CountryMD=Republik Moldau CountryMM=Birma (Myanmar) -CountryNF=Norfolk Island CountryKN=Saint Kitts und Nevis -CountryLC=Saint Lucia CountryGS=Süd-Georgien und Süd-Sandwich-Inseln CivilityMLE=Frau CivilityMTRE=Mag. CurrencyCAD=CAN-Dollar CurrencySingCAD=CAN-Dollar -CurrencySingCHF=Swiss Franc CurrencyFRF=Französische Franken CurrencyGBP=GB Pfund -CurrencySingGBP=GB Pound -CurrencyMAD=Dirham -CurrencySingMAD=Dirham -CurrencyMGA=Ariary -CurrencySingMGA=Ariary -CurrencyNOK=Norwegian krones CurrencyTND=TND CurrencyUSD=US-Dollar CurrencySingUSD=US-Dollar -CurrencyUAH=Hryvnia -CurrencySingUAH=Hryvnia CurrencyXAF=CFA-Franc BEAC DemandReasonTypeSRC_CAMP_MAIL=Mailing-Kampagne DemandReasonTypeSRC_CAMP_EMAIL=Emailing Kampagne diff --git a/htdocs/langs/de_AT/donations.lang b/htdocs/langs/de_AT/donations.lang deleted file mode 100644 index 2d4eb63c1fd..00000000000 --- a/htdocs/langs/de_AT/donations.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - donations diff --git a/htdocs/langs/de_AT/ftp.lang b/htdocs/langs/de_AT/ftp.lang deleted file mode 100644 index 66407cca057..00000000000 --- a/htdocs/langs/de_AT/ftp.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp diff --git a/htdocs/langs/de_AT/main.lang b/htdocs/langs/de_AT/main.lang index ebda6905a62..0cfce637f4a 100644 --- a/htdocs/langs/de_AT/main.lang +++ b/htdocs/langs/de_AT/main.lang @@ -37,7 +37,6 @@ PasswordRetype=Geben Sie das Passwort erneut ein DateRequest=Verlange Datum DurationDays=Tag days=Tag -Quadri=Quadri UnitPriceHT=Nettopreis (Stk.) UnitPriceTTC=Bruttopreis (Stk.) AmountAverage=Durchnschnittsbetrag diff --git a/htdocs/langs/de_AT/other.lang b/htdocs/langs/de_AT/other.lang index 5243fcaad9d..3504dd431ff 100644 --- a/htdocs/langs/de_AT/other.lang +++ b/htdocs/langs/de_AT/other.lang @@ -28,7 +28,6 @@ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__ \n\n Hier finden Sie PredefinedMailContentSendShipping=__CONTACTCIVNAME__ \n\n Hier finden Sie die Versandkosten __SHIPPINGREF__ \n\nSincerely \n\n__SIGNATURE__ PredefinedMailContentSendFichInter=__CONTACTCIVNAME__ \n\n Hier finden Sie die Intervention __FICHINTERREF__ \n\nSincerely \n\n__SIGNATURE__ FeatureNotYetAvailableShort=Erhältlich in einer der nächsten Versionen -Top=Top Bottom=Boden Right=Recht CalculatedWeight=Errechnetes Gewicht diff --git a/htdocs/langs/de_AT/products.lang b/htdocs/langs/de_AT/products.lang index 20e306719ed..9e4f09d628c 100644 --- a/htdocs/langs/de_AT/products.lang +++ b/htdocs/langs/de_AT/products.lang @@ -24,16 +24,13 @@ ConfirmDeleteProduct=Möchten Sie dieses Produkt/Service wirklich löschen? ProductDeleted=Produkt/Service "%s" aus der Datenbank gelöscht. DeletePicture=Bild löschen ExportDataset_produit_1=Produkte und Services -ExportDataset_service_1=Services NoProductMatching=Kein Produkt/Service entspricht Ihren Suchkriterien MatchingProducts=Passende Produkte/Services Restock=Bestandserinnerung -ProductSpecial=Special QtyMin=Mindestabnahme PriceQty=Preis für Mindestabnahme PriceQtyMin=Gesamtpreis Mindestabnahme RecordedProductsAndServices=Erfasste Produkte/Services -ServiceNb=Service #%s ListProductServiceByPopularity=Liste der Produkte/Services nach Beliebtheit ListProductByPopularity=Liste der Produkte/Services nach Beliebtheit ListServiceByPopularity=Liste der Services nach Beliebtheit diff --git a/htdocs/langs/de_AT/propal.lang b/htdocs/langs/de_AT/propal.lang index 190907aebe3..a91f5399aef 100644 --- a/htdocs/langs/de_AT/propal.lang +++ b/htdocs/langs/de_AT/propal.lang @@ -6,8 +6,6 @@ PropalsDraft=Entwurf PropalStatusSigned=Unterzeichnet (auf Rechnung) NoOtherOpenedPropals=Keine offenen Angebote Anderer RefProposal=Angebots Nr. -FileNotUploaded=Datei nicht hochgeladen -FileUploaded=Datei erfolgreich hochgeladen DatePropal=Datum des Angebots DateEndPropal=Ablauf der Bindefrist ValidityDuration=Bindefrist diff --git a/htdocs/langs/de_CH/companies.lang b/htdocs/langs/de_CH/companies.lang deleted file mode 100644 index 70564679d5f..00000000000 --- a/htdocs/langs/de_CH/companies.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - companies diff --git a/htdocs/langs/nl_BE/commercial.lang b/htdocs/langs/en_GB/commercial.lang similarity index 63% rename from htdocs/langs/nl_BE/commercial.lang rename to htdocs/langs/en_GB/commercial.lang index b881117de93..18d8db06801 100644 --- a/htdocs/langs/nl_BE/commercial.lang +++ b/htdocs/langs/en_GB/commercial.lang @@ -1 +1,2 @@ # Dolibarr language file - Source file is en_US - commercial +ActionAffectedTo=Event assigned to diff --git a/htdocs/langs/en_GB/cron.lang b/htdocs/langs/en_GB/cron.lang new file mode 100644 index 00000000000..3f755fc725d --- /dev/null +++ b/htdocs/langs/en_GB/cron.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - cron +CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes +CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes diff --git a/htdocs/langs/en_GB/exports.lang b/htdocs/langs/en_GB/exports.lang deleted file mode 100644 index 982dcc4bca9..00000000000 --- a/htdocs/langs/en_GB/exports.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - exports diff --git a/htdocs/langs/en_GB/orders.lang b/htdocs/langs/en_GB/orders.lang new file mode 100644 index 00000000000..2c71fc66ccc --- /dev/null +++ b/htdocs/langs/en_GB/orders.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - orders +StatusOrderOnProcessShort=Ordered +StatusOrderOnProcess=Ordered - Standby reception diff --git a/htdocs/langs/en_GB/suppliers.lang b/htdocs/langs/en_GB/suppliers.lang new file mode 100644 index 00000000000..5213cec4e07 --- /dev/null +++ b/htdocs/langs/en_GB/suppliers.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - suppliers +DenyingThisOrder=Deny this order diff --git a/htdocs/langs/en_GB/trips.lang b/htdocs/langs/en_GB/trips.lang new file mode 100644 index 00000000000..f5e6f1a92eb --- /dev/null +++ b/htdocs/langs/en_GB/trips.lang @@ -0,0 +1,14 @@ +# Dolibarr language file - Source file is en_US - trips +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report +NewTrip=New expense report +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report diff --git a/htdocs/langs/en_US/productbatch.lang b/htdocs/langs/en_US/productbatch.lang index ded965131de..45263681965 100644 --- a/htdocs/langs/en_US/productbatch.lang +++ b/htdocs/langs/en_US/productbatch.lang @@ -1,10 +1,9 @@ # ProductBATCH language file - en_US - ProductBATCH -CHARSET= UTF-8 -ManageLotSerial=Manage lot or serial -ProductStatusOnBatch=Managed -ProductStatusNotOnBatch=Not Managed -ProductStatusOnBatchShort=Managed -ProductStatusNotOnBatchShort=Not Managed +ManageLotSerial=Use batch/serial number +ProductStatusOnBatch=Yes (Batch/serial required) +ProductStatusNotOnBatch=No (Batch/serial not used) +ProductStatusOnBatchShort=Yes +ProductStatusNotOnBatchShort=No Batch=Batch/Serial atleast1batchfield=Eat-by date or Sell-by date or Batch number batch_number=Batch/Serial number @@ -19,3 +18,4 @@ printQty=Qty: %d AddDispatchBatchLine=Add a line for Shelf Life dispatching BatchDefaultNumber=Undefined WhenProductBatchModuleOnOptionAreForced=When module Batch/Serial is on, increase/decrease stock mode is forced to last choice and can't be edited. Other options can be defined as you want. +ProductDoesNotUseBatchSerial=This product does not use batch/serial number diff --git a/htdocs/langs/en_ZA/companies.lang b/htdocs/langs/en_ZA/companies.lang deleted file mode 100644 index 70564679d5f..00000000000 --- a/htdocs/langs/en_ZA/companies.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - companies diff --git a/htdocs/langs/en_ZA/compta.lang b/htdocs/langs/en_ZA/compta.lang deleted file mode 100644 index 1738634c769..00000000000 --- a/htdocs/langs/en_ZA/compta.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - compta diff --git a/htdocs/langs/es_AR/cron.lang b/htdocs/langs/es_AR/cron.lang new file mode 100644 index 00000000000..3f755fc725d --- /dev/null +++ b/htdocs/langs/es_AR/cron.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - cron +CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes +CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes diff --git a/htdocs/langs/es_AR/main.lang b/htdocs/langs/es_AR/main.lang new file mode 100644 index 00000000000..2e691473326 --- /dev/null +++ b/htdocs/langs/es_AR/main.lang @@ -0,0 +1,21 @@ +# Dolibarr language file - Source file is en_US - main +DIRECTION=ltr +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 +SeparatorDecimal=. +SeparatorThousand=, +FormatDateShort=%m/%d/%Y +FormatDateShortInput=%m/%d/%Y +FormatDateShortJava=MM/dd/yyyy +FormatDateShortJavaInput=MM/dd/yyyy +FormatDateShortJQuery=mm/dd/yy +FormatDateShortJQueryInput=mm/dd/yy +FormatHourShortJQuery=HH:MI +FormatHourShort=%I:%M %p +FormatHourShortDuration=%H:%M +FormatDateTextShort=%b %d, %Y +FormatDateText=%B %d, %Y +FormatDateHourShort=%m/%d/%Y %I:%M %p +FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p +FormatDateHourTextShort=%b %d, %Y, %I:%M %p +FormatDateHourText=%B %d, %Y, %I:%M %p diff --git a/htdocs/langs/es_AR/orders.lang b/htdocs/langs/es_AR/orders.lang new file mode 100644 index 00000000000..2c71fc66ccc --- /dev/null +++ b/htdocs/langs/es_AR/orders.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - orders +StatusOrderOnProcessShort=Ordered +StatusOrderOnProcess=Ordered - Standby reception diff --git a/htdocs/langs/es_AR/trips.lang b/htdocs/langs/es_AR/trips.lang new file mode 100644 index 00000000000..b4a068e21c4 --- /dev/null +++ b/htdocs/langs/es_AR/trips.lang @@ -0,0 +1,13 @@ +# Dolibarr language file - Source file is en_US - trips +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report +NewTrip=New expense report +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ExpensesArea=Expense reports area diff --git a/htdocs/langs/es_CO/admin.lang b/htdocs/langs/es_CO/admin.lang new file mode 100644 index 00000000000..d43134a3f9c --- /dev/null +++ b/htdocs/langs/es_CO/admin.lang @@ -0,0 +1,5 @@ +# Dolibarr language file - Source file is en_US - admin +AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan +AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir +MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) diff --git a/htdocs/langs/es_CO/bills.lang b/htdocs/langs/es_CO/bills.lang new file mode 100644 index 00000000000..f1e67a676c3 --- /dev/null +++ b/htdocs/langs/es_CO/bills.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - bills +ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid. diff --git a/htdocs/langs/es_CO/companies.lang b/htdocs/langs/es_CO/companies.lang new file mode 100644 index 00000000000..35eea56e886 --- /dev/null +++ b/htdocs/langs/es_CO/companies.lang @@ -0,0 +1,29 @@ +# Dolibarr language file - Source file is en_US - companies +ConfirmDeleteCompany=¿Está seguro de querer eliminar esta empresa y toda la información contenida? +ConfirmDeleteContact=¿Está seguro de querer eliminar este contacto y toda la información contenida? +NewSocGroup=Nueva alianza de empresas +SocGroup=Alianza de empresas +ParentCompany=Sede principal +Subsidiary=Sucursal +Subsidiaries=Sucursales +NoSubsidiary=Ninguna sucursal +RegisteredOffice=Domicilio principal +PostOrFunction=Cargo/función +State=Departamento +PhonePerso=Teléf. personal +ProfId2CO=Identificación (CC, NIT, CE) +ProfId3CO=CIIU +VATIntra=NIT +VATIntraShort=NIT +VATIntraVeryShort=NIT +NoContactForAnyProposal=Este contacto no es contacto de ningúna cotización +VATIntraCheckDesc=El link %s permite consultar al servicio RUES el NIT. Se requiere acceso a internet para que el servicio funcione +VATIntraCheckURL=http://www.rues.org.co/RUES_Web/Consultas#tabs-3 +VATIntraCheckableOnEUSite=Verificar en la web +VATIntraManualCheck=Puede también realizar una verificación manual en la web %s +ConfirmDeleteDeliveryAddress=¿Está seguro que quiere eliminar esta dirección de envío? +AddDeliveryAddress=Añadir la dirección +ConfirmDeleteFile=¿Está seguro que quiere eliminar este archivo? +ThirdPartiesArea=Área Terceros +ManagingDirectors=Administrador(es) (CEO, gerente, director, presidente, etc.) +SearchThirdparty=Buscar terceros diff --git a/htdocs/langs/es_CO/cron.lang b/htdocs/langs/es_CO/cron.lang new file mode 100644 index 00000000000..3f755fc725d --- /dev/null +++ b/htdocs/langs/es_CO/cron.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - cron +CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes +CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes diff --git a/htdocs/langs/es_CO/main.lang b/htdocs/langs/es_CO/main.lang new file mode 100644 index 00000000000..2e691473326 --- /dev/null +++ b/htdocs/langs/es_CO/main.lang @@ -0,0 +1,21 @@ +# Dolibarr language file - Source file is en_US - main +DIRECTION=ltr +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 +SeparatorDecimal=. +SeparatorThousand=, +FormatDateShort=%m/%d/%Y +FormatDateShortInput=%m/%d/%Y +FormatDateShortJava=MM/dd/yyyy +FormatDateShortJavaInput=MM/dd/yyyy +FormatDateShortJQuery=mm/dd/yy +FormatDateShortJQueryInput=mm/dd/yy +FormatHourShortJQuery=HH:MI +FormatHourShort=%I:%M %p +FormatHourShortDuration=%H:%M +FormatDateTextShort=%b %d, %Y +FormatDateText=%B %d, %Y +FormatDateHourShort=%m/%d/%Y %I:%M %p +FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p +FormatDateHourTextShort=%b %d, %Y, %I:%M %p +FormatDateHourText=%B %d, %Y, %I:%M %p diff --git a/htdocs/langs/es_CO/orders.lang b/htdocs/langs/es_CO/orders.lang new file mode 100644 index 00000000000..2c71fc66ccc --- /dev/null +++ b/htdocs/langs/es_CO/orders.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - orders +StatusOrderOnProcessShort=Ordered +StatusOrderOnProcess=Ordered - Standby reception diff --git a/htdocs/langs/es_CO/trips.lang b/htdocs/langs/es_CO/trips.lang new file mode 100644 index 00000000000..b4a068e21c4 --- /dev/null +++ b/htdocs/langs/es_CO/trips.lang @@ -0,0 +1,13 @@ +# Dolibarr language file - Source file is en_US - trips +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report +NewTrip=New expense report +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ExpensesArea=Expense reports area diff --git a/htdocs/langs/es_ES/trips.lang b/htdocs/langs/es_ES/trips.lang index b75dbfd2bad..a3e5cf804bf 100644 --- a/htdocs/langs/es_ES/trips.lang +++ b/htdocs/langs/es_ES/trips.lang @@ -1,23 +1,23 @@ # Dolibarr language file - Source file is en_US - trips ExpenseReport=Expense report ExpenseReports=Expense reports -Trip=Expense report -Trips=Expense reports -TripsAndExpenses=Expenses reports -TripsAndExpensesStatistics=Expense reports statistics -TripCard=Expense report card -AddTrip=Create expense report -ListOfTrips=List of expense report +Trip=Informe de gastos +Trips=Informes de gastos +TripsAndExpenses=Informes de gastos +TripsAndExpensesStatistics=Estadísticas de gastos +TripCard=Ficha informe de gastos +AddTrip=Crear informe de gastos +ListOfTrips=Listado de informe de gastos ListOfFees=Listado notas de honorarios -NewTrip=New expense report +NewTrip=Nuevo informe de gastos CompanyVisited=Empresa/institución visitada Kilometers=Kilometros FeesKilometersOrAmout=Importe o kilómetros -DeleteTrip=Delete expense report -ConfirmDeleteTrip=Are you sure you want to delete this expense report ? -ListTripsAndExpenses=List of expense reports +DeleteTrip=Eliminar informe de gastos +ConfirmDeleteTrip=¿Está seguro de querer eliminar este informe de gastos? +ListTripsAndExpenses=Listado de informe de gastos ListToApprove=Waiting for approval -ExpensesArea=Expense reports area +ExpensesArea=Área informe de gastos SearchATripAndExpense=Search an expense report ClassifyRefunded=Clasificar 'Reembolsado' ExpenseReportWaitingForApproval=A new expense report has been submitted for approval @@ -44,7 +44,7 @@ TF_HOTEL=Hostel TF_TAXI=Taxi ErrorDoubleDeclaration=You have declared another expense report into a similar date range. -ListTripsAndExpenses=List of expense reports +ListTripsAndExpenses=Listado de informe de gastos AucuneNDF=No expense reports found for this criteria AucuneLigne=There is no expense report declared yet AddLine=Add a line diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 512b2f3133d..ddf5de96a89 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -10,8 +10,8 @@ VersionUnknown=Inconnue VersionRecommanded=Recommandé FileCheck=Files Integrity FilesMissing=Missing Files -FilesUpdated=Updated Files -FileCheckDolibarr=Check Dolibarr Files Integrity +FilesUpdated=Mettre à jour les fichiers +FileCheckDolibarr=Vérifier l'intégrité des fichiers XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=ID Session SessionSaveHandler=Modalité de sauvegarde des sessions @@ -642,7 +642,7 @@ Permission181=Consulter les commandes fournisseurs Permission182=Créer/modifier les commandes fournisseurs Permission183=Valider les commandes fournisseurs Permission184=Approuver les commandes fournisseurs -Permission185=Order or cancel supplier orders +Permission185=Commander ou annuler les commandes fournisseurs Permission186=Accuser réception des commandes fournisseurs Permission187=Clôturer les commandes fournisseurs Permission188=Annuler les commandes fournisseurs @@ -1410,7 +1410,7 @@ BarcodeDescUPC=code-barres de type UPC BarcodeDescISBN=code-barres de type ISBN BarcodeDescC39=code-barres de type C39 BarcodeDescC128=code-barres de type C128 -GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode +GenbarcodeLocation=Outil de génération de code-barres en ligne de commande (utilisé par le moteur interne pour certains types de codes-barres). Doit être compatible avec "genbarcode".
Par exemple: /usr/local/bin/genbarcode BarcodeInternalEngine=Moteur interne BarCodeNumberManager=Gestionnaire pour la génération automatique de numéro de code-barre ##### Prelevements ##### @@ -1597,7 +1597,7 @@ SortOrder=Ordre de tri Format=Format TypePaymentDesc=0:Type de paiement client, 1:Type de paiement fournisseur, 2:Paiement de type client et fournisseur IncludePath=Chemin Include (définir dans la variable %s) -ExpenseReportsSetup=Setup of module Expense Reports -TemplatePDFExpenseReports=Document templates to generate expense report document +ExpenseReportsSetup=Configuration du module Notes de frais +TemplatePDFExpenseReports=Modèles de documents pour générer les document de Notes de frais NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/fr_FR/banks.lang b/htdocs/langs/fr_FR/banks.lang index bd6c96ae3fd..84f2225b771 100644 --- a/htdocs/langs/fr_FR/banks.lang +++ b/htdocs/langs/fr_FR/banks.lang @@ -33,11 +33,11 @@ AllTime=Depuis le début Reconciliation=Rapprochement RIB=Numéro de compte bancaire IBAN=Identifiant IBAN -IbanValid=IBAN is Valid -IbanNotValid=IBAN is Not Valid +IbanValid=IBAN est valide +IbanNotValid=IBAN n'est pas valide BIC=Identifiant BIC/SWIFT -SwiftValid=BIC/SWIFT is Valid -SwiftNotValid=BIC/SWIFT is Not Valid +SwiftValid=BIC / SWIFT est valide +SwiftNotValid=BIC / SWIFT n'est pas valide StandingOrders=Prélèvements StandingOrder=Prélèvement Withdrawals=Retraits @@ -152,7 +152,7 @@ BackToAccount=Retour au compte ShowAllAccounts=Afficher pour tous les comptes FutureTransaction=Transaction future. Pas moyen de concilier. SelectChequeTransactionAndGenerate=Sélectionner/filtrer les chèques à inclure dans le bordereau de remise et cliquer sur "Créer". -InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD +InputReceiptNumber=Choisissez le relevé bancaire liés au rapprochement. Utilisez une valeur numérique triable: AAAAMM ou AAAAMMJJ EventualyAddCategory=Eventuellement, saisissez une catégorie dans laquelle classer les écritures ToConciliate=À rapprocher ? ThenCheckLinesAndConciliate=Ensuite, cochez les lignes présentes sur le relevé et cliquez sur diff --git a/htdocs/langs/fr_FR/commercial.lang b/htdocs/langs/fr_FR/commercial.lang index f4961a1e1c5..e4547c3b53d 100644 --- a/htdocs/langs/fr_FR/commercial.lang +++ b/htdocs/langs/fr_FR/commercial.lang @@ -62,7 +62,7 @@ LastProspectContactDone=Prospects contactés DateActionPlanned=Date réalisation prévue DateActionDone=Date réalisation effective ActionAskedBy=Action enregistrée par -ActionAffectedTo=Event assigned to +ActionAffectedTo=Événement assigné à ActionDoneBy=Action faite par ActionUserAsk=Enregistré par ErrorStatusCantBeZeroIfStarted=Si le champ 'Date début réalisation réelle' est renseigné alors l'action est commencée voire finie, aussi le champ 'État' ne peut être 0%%. diff --git a/htdocs/langs/fr_FR/contracts.lang b/htdocs/langs/fr_FR/contracts.lang index e305789f82d..a04821f85b7 100644 --- a/htdocs/langs/fr_FR/contracts.lang +++ b/htdocs/langs/fr_FR/contracts.lang @@ -19,7 +19,7 @@ ServiceStatusLateShort=Expiré ServiceStatusClosed=Fermé ServicesLegend=Légende pour les services Contracts=Contrats -ContractsAndLine=Contracts and line of contracts +ContractsAndLine=Contrats et lignes de contrats Contract=Contrat NoContracts=Pas de contrats MenuServices=Services diff --git a/htdocs/langs/fr_FR/cron.lang b/htdocs/langs/fr_FR/cron.lang index a94a7bafe3f..659113176be 100644 --- a/htdocs/langs/fr_FR/cron.lang +++ b/htdocs/langs/fr_FR/cron.lang @@ -84,4 +84,4 @@ CronType_command=Commande terminal CronMenu=Cron CronCannotLoadClass=Impossible de charger la classe %s ou l'objet %s UseMenuModuleToolsToAddCronJobs=Aller dans le menu "Accueil - Outils modules - Liste des travaux" pour voir et éditer les travaux planifiés. -TaskDisabled=Task disabled +TaskDisabled=Tâche désactivée diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index 7bcae13433a..ae65a532774 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Le javascript ne doit pas être désactivé pour qu ErrorPasswordsMustMatch=Les 2 mots de passe saisis doivent correspondre ErrorContactEMail=Une erreur technique est apparue. Merci de contacter l'administrateur à l'email suivant %s en lui indiquant le code erreur %s dans votre message ou mieux en fournissant une copie d'écran de cette page. ErrorWrongValueForField=Mauvaise valeur pour le champ numéro %s (la valeur '%s' ne respecte pas la règle %s) -ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) +ErrorFieldValueNotIn=Mauvaise valeur pour le champ numéro %s (la valeur '%s' n'est pas une valeure présente dans le champ %s de la table %s = %s) ErrorFieldRefNotIn=Mauvaise valeur pour le champ numéro %s (la valeur '%s' n'est pas une référence existante comme %s) ErrorsOnXLines=Erreurs sur %s enregistrement(s) source ErrorFileIsInfectedWithAVirus=L'antivirus n'a pas pu valider ce fichier (il est probablement infecté par un virus) ! diff --git a/htdocs/langs/fr_FR/trips.lang b/htdocs/langs/fr_FR/trips.lang index 1d9f41e09c9..3a11b7c4036 100644 --- a/htdocs/langs/fr_FR/trips.lang +++ b/htdocs/langs/fr_FR/trips.lang @@ -1,33 +1,33 @@ # Dolibarr language file - Source file is en_US - trips -ExpenseReport=Expense report -ExpenseReports=Expense reports -Trip=Expense report -Trips=Expense reports -TripsAndExpenses=Expenses reports -TripsAndExpensesStatistics=Expense reports statistics -TripCard=Expense report card -AddTrip=Create expense report -ListOfTrips=List of expense report +ExpenseReport=Note de frais +ExpenseReports=Notes de frais +Trip=Notes de frais +Trips=Note de frais +TripsAndExpenses=Notes de frais +TripsAndExpensesStatistics=Statistiques notes de frais +TripCard=Fiche note de frais +AddTrip=Créer note de frais +ListOfTrips=Liste des notes de frais ListOfFees=Liste des notes de frais -NewTrip=New expense report +NewTrip=Nouvelle note de frais CompanyVisited=Société/institution visitée Kilometers=Kilomètres FeesKilometersOrAmout=Montant ou kilomètres -DeleteTrip=Delete expense report -ConfirmDeleteTrip=Are you sure you want to delete this expense report ? -ListTripsAndExpenses=List of expense reports -ListToApprove=Waiting for approval -ExpensesArea=Expense reports area -SearchATripAndExpense=Search an expense report +DeleteTrip=Supprimer les notes de frais / déplacements +ConfirmDeleteTrip=Êtes-vous sûr de vouloir supprimer cette note de frais ? +ListTripsAndExpenses=Liste des notes de frais +ListToApprove=En attente d'approbation +ExpensesArea=Espace Notes de frais +SearchATripAndExpense=Rechercher une note de frais ClassifyRefunded=Classer 'Remboursé' -ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApproval=Une nouvelle note de frais a été soumise pour approbation ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s TripId=Id expense report AnyOtherInThisListCanValidate=Person to inform for validation. -TripSociete=Information company -TripSalarie=Informations user -TripNDF=Informations expense report -DeleteLine=Delete a ligne of the expense report +TripSociete=Information société +TripSalarie=Informations utilisateur +TripNDF=Informations note de frais +DeleteLine=Effacer une ligne de note de frais ConfirmDeleteLine=Are you sure you want to delete this line ? PDFStandardExpenseReports=Standard template to generate a PDF document for expense report ExpenseReportLine=Expense report line @@ -44,15 +44,15 @@ TF_HOTEL=Hostel TF_TAXI=Taxi ErrorDoubleDeclaration=You have declared another expense report into a similar date range. -ListTripsAndExpenses=List of expense reports +ListTripsAndExpenses=Liste des notes de frais AucuneNDF=No expense reports found for this criteria AucuneLigne=There is no expense report declared yet -AddLine=Add a line +AddLine=Ajout nouvelle ligne AddLineMini=Add -Date_DEBUT=Period date start -Date_FIN=Period date end -ModePaiement=Payment mode +Date_DEBUT=Date début +Date_FIN=Date fin +ModePaiement=Mode de paiement Note=Note Project=Project diff --git a/htdocs/langs/kn_IN/accountancy.lang b/htdocs/langs/kn_IN/accountancy.lang new file mode 100644 index 00000000000..bb9b358c045 --- /dev/null +++ b/htdocs/langs/kn_IN/accountancy.lang @@ -0,0 +1,160 @@ +# Dolibarr language file - en_US - Accounting Expert +CHARSET=UTF-8 + +Accounting=Accounting +Globalparameters=Global parameters +Chartofaccounts=Chart of accounts +Fiscalyear=Fiscal years +Menuaccount=Accounting accounts +Menuthirdpartyaccount=Thirdparty accounts +MenuTools=Tools + +ConfigAccountingExpert=Configuration of the module accounting expert +Journaux=Journals +JournalFinancial=Financial journals +Exports=Exports +Export=Export +Modelcsv=Model of export +OptionsDeactivatedForThisExportModel=For this export model, options are deactivated +Selectmodelcsv=Select a model of export +Modelcsv_normal=Classic export +Modelcsv_CEGID=Export towards CEGID Expert +BackToChartofaccounts=Return chart of accounts +Back=Return + +Definechartofaccounts=Define a chart of accounts +Selectchartofaccounts=Select a chart of accounts +Validate=Validate +Addanaccount=Add an accounting account +AccountAccounting=Accounting account +Ventilation=Breakdown +ToDispatch=To dispatch +Dispatched=Dispatched + +CustomersVentilation=Breakdown customers +SuppliersVentilation=Breakdown suppliers +TradeMargin=Trade margin +Reports=Reports +ByCustomerInvoice=By invoices customers +ByMonth=By Month +NewAccount=New accounting account +Update=Update +List=List +Create=Create +UpdateAccount=Modification of an accounting account +UpdateMvts=Modification of a movement +WriteBookKeeping=Record accounts in general ledger +Bookkeeping=General ledger +AccountBalanceByMonth=Account balance by month + +AccountingVentilation=Breakdown accounting +AccountingVentilationSupplier=Breakdown accounting supplier +AccountingVentilationCustomer=Breakdown accounting customer +Line=Line + +CAHTF=Total purchase supplier HT +InvoiceLines=Lines of invoice to be ventilated +InvoiceLinesDone=Ventilated lines of invoice +IntoAccount=In the accounting account + +Ventilate=Ventilate +VentilationAuto=Automatic breakdown + +Processing=Processing +EndProcessing=The end of processing +AnyLineVentilate=Any lines to ventilate +SelectedLines=Selected lines +Lineofinvoice=Line of invoice +VentilatedinAccount=Ventilated successfully in the accounting account +NotVentilatedinAccount=Not ventilated in the accounting account + +ACCOUNTING_SEPARATORCSV=Column separator in export file + +ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50) +ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements +ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the breakdown pages "Breakdown" by the most recent elements + +AccountLength=Length of the accounting accounts shown in Dolibarr +AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software. +ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounts +ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounts + +ACCOUNTING_SELL_JOURNAL=Sell journal +ACCOUNTING_PURCHASE_JOURNAL=Purchase journal +ACCOUNTING_BANK_JOURNAL=Bank journal +ACCOUNTING_CASH_JOURNAL=Cash journal +ACCOUNTING_MISCELLANEOUS_JOURNAL=Miscellaneous journal +ACCOUNTING_SOCIAL_JOURNAL=Social journal + +ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account of transfer +ACCOUNTING_ACCOUNT_SUSPENSE=Account of wait + +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for bought products (if not defined in the product sheet) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Accounting account by default for the sold products (if not defined in the product sheet) +ACCOUNTING_SERVICE_BUY_ACCOUNT=Accounting account by default for the bought services (if not defined in the service sheet) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Accounting account by default for the sold services (if not defined in the service sheet) + +Doctype=Type of document +Docdate=Date +Docref=Reference +Numerocompte=Account +Code_tiers=Thirdparty +Labelcompte=Label account +Debit=Debit +Credit=Credit +Amount=Amount +Sens=Sens +Codejournal=Journal + +DelBookKeeping=Delete the records of the general ledger + +SellsJournal=Sells journal +PurchasesJournal=Purchases journal +DescSellsJournal=Sells journal +DescPurchasesJournal=Purchases journal +BankJournal=Bank journal +DescBankJournal=Bank journal including all the types of payments other than cash +CashJournal=Cash journal +DescCashJournal=Cash journal including the type of payment cash + +CashPayment=Cash Payment + +SupplierInvoicePayment=Payment of invoice supplier +CustomerInvoicePayment=Payment of invoice customer + +ThirdPartyAccount=Thirdparty account + +NewAccountingMvt=New movement +NumMvts=Number of movement +ListeMvts=List of the movement +ErrorDebitCredit=Debit and Credit cannot have a value at the same time + +ReportThirdParty=List thirdparty account +DescThirdPartyReport=Consult here the list of the thirdparty customers and the suppliers and their accounting accounts + +ListAccounts=List of the accounting accounts + +Pcgversion=Version of the plan +Pcgtype=Class of account +Pcgsubtype=Under class of account +Accountparent=Root of the account +Active=Statement + +NewFiscalYear=New fiscal year + +DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers +TotalVente=Total turnover HT +TotalMarge=Total sales margin +DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their accounting account +DescVentilTodoCustomer=Ventilate your lines of customer invoice with an accounting account +ChangeAccount=Change the accounting account for lines selected by the account: +Vide=- +DescVentilSupplier=Consult here the annual breakdown accounting of your invoices suppliers +DescVentilTodoSupplier=Ventilate your lines of invoice supplier with an accounting account +DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account + +ValidateHistory=Validate Automatically + +ErrorAccountancyCodeIsAlreadyUse=Error, you cannot delete this accounting account because it is used + +FicheVentilation=Breakdown card diff --git a/htdocs/langs/kn_IN/admin.lang b/htdocs/langs/kn_IN/admin.lang new file mode 100644 index 00000000000..9782c2ea27f --- /dev/null +++ b/htdocs/langs/kn_IN/admin.lang @@ -0,0 +1,1603 @@ +# Dolibarr language file - Source file is en_US - admin +Foundation=Foundation +Version=Version +VersionProgram=Version program +VersionLastInstall=Version initial install +VersionLastUpgrade=Version last upgrade +VersionExperimental=Experimental +VersionDevelopment=Development +VersionUnknown=Unknown +VersionRecommanded=Recommended +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found +SessionId=Session ID +SessionSaveHandler=Handler to save sessions +SessionSavePath=Storage session localization +PurgeSessions=Purge of sessions +ConfirmPurgeSessions=Do you really want to purge all sessions ? This will disconnect every user (except yourself). +NoSessionListWithThisHandler=Save session handler configured in your PHP does not allow to list all running sessions. +LockNewSessions=Lock new connections +ConfirmLockNewSessions=Are you sure you want to restrict any new Dolibarr connection to yourself. Only user %s will be able to connect after that. +UnlockNewSessions=Remove connection lock +YourSession=Your session +Sessions=Users session +WebUserGroup=Web server user/group +NoSessionFound=Your PHP seems to not allow to list active sessions. Directory used to save sessions (%s) might be protected (For example, by OS permissions or by PHP directive open_basedir). +HTMLCharset=Charset for generated HTML pages +DBStoringCharset=Database charset to store data +DBSortingCharset=Database charset to sort data +WarningModuleNotActive=Module %s must be enabled +WarningOnlyPermissionOfActivatedModules=Only permissions related to activated modules are shown here. You can activate other modules in the Home->Setup->Modules page. +DolibarrSetup=Dolibarr install or upgrade +DolibarrUser=Dolibarr user +InternalUser=Internal user +ExternalUser=External user +InternalUsers=Internal users +ExternalUsers=External users +GlobalSetup=Global setup +GUISetup=Display +SetupArea=Setup area +FormToTestFileUploadForm=Form to test file upload (according to setup) +IfModuleEnabled=Note: yes is effective only if module %s is enabled +RemoveLock=Remove file %s if it exists to allow usage of the update tool. +RestoreLock=Restore file %s, with read permission only, to disable any usage of update tool. +SecuritySetup=Security setup +ErrorModuleRequirePHPVersion=Error, this module requires PHP version %s or higher +ErrorModuleRequireDolibarrVersion=Error, this module requires Dolibarr version %s or higher +ErrorDecimalLargerThanAreForbidden=Error, a precision higher than %s is not supported. +DictionarySetup=Dictionary setup +Dictionary=Dictionaries +Chartofaccounts=Chart of accounts +Fiscalyear=Fiscal years +ErrorReservedTypeSystemSystemAuto=Value 'system' and 'systemauto' for type is reserved. You can use 'user' as value to add your own record +ErrorCodeCantContainZero=Code can't contain value 0 +DisableJavascript=Disable JavaScript and Ajax functions (Recommended for blind person or text browsers) +ConfirmAjax=Use Ajax confirmation popups +UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. +UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box. +ActivityStateToSelectCompany= Add a filter option to show/hide thirdparties which are currently in activity or has ceased it +UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. +UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box). +DelaiedFullListToSelectCompany=Wait you press a key before loading content of thirdparties combo list (This may increase performance if you have a large number of thirdparties) +DelaiedFullListToSelectContact=Wait you press a key before loading content of contact combo list (This may increase performance if you have a large number of contact) +SearchFilter=Search filters options +NumberOfKeyToSearch=Nbr of characters to trigger search: %s +ViewFullDateActions=Show full dates events in the third sheet +NotAvailableWhenAjaxDisabled=Not available when Ajax disabled +JavascriptDisabled=JavaScript disabled +UsePopupCalendar=Use popup for dates input +UsePreviewTabs=Use preview tabs +ShowPreview=Show preview +PreviewNotAvailable=Preview not available +ThemeCurrentlyActive=Theme currently active +CurrentTimeZone=TimeZone PHP (server) +MySQLTimeZone=TimeZone MySql (database) +TZHasNoEffect=Dates are stored and returned by database server as if they were kept as submited string. The timezone has effect only when using UNIX_TIMESTAMP function (that should not be used by Dolibarr, so database TZ should have no effect, even if changed after data was entered). +Space=Space +Table=Table +Fields=Fields +Index=Index +Mask=Mask +NextValue=Next value +NextValueForInvoices=Next value (invoices) +NextValueForCreditNotes=Next value (credit notes) +NextValueForDeposit=Next value (deposit) +NextValueForReplacements=Next value (replacements) +MustBeLowerThanPHPLimit=Note: your PHP limits each file upload's size to %s %s, whatever this parameter's value is +NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration +MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) +UseCaptchaCode=Use graphical code (CAPTCHA) on login page +UseAvToScanUploadedFiles=Use anti-virus to scan uploaded files +AntiVirusCommand= Full path to antivirus command +AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan +AntiVirusParam= More parameters on command line +AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +ComptaSetup=Accounting module setup +UserSetup=User management setup +MenuSetup=Menu management setup +MenuLimits=Limits and accuracy +MenuIdParent=Parent menu ID +DetailMenuIdParent=ID of parent menu (empty for a top menu) +DetailPosition=Sort number to define menu position +PersonalizedMenusNotSupported=Personalized menus not supported +AllMenus=All +NotConfigured=Module not configured +Setup=Setup +Activation=Activation +Active=Active +SetupShort=Setup +OtherOptions=Other options +OtherSetup=Other setup +CurrentValueSeparatorDecimal=Decimal separator +CurrentValueSeparatorThousand=Thousand separator +Destination=Destination +IdModule=Module ID +IdPermissions=Permissions ID +Modules=Modules +ModulesCommon=Main modules +ModulesOther=Other modules +ModulesInterfaces=Interfaces modules +ModulesSpecial=Modules very specific +ParameterInDolibarr=Parameter %s +LanguageParameter=Language parameter %s +LanguageBrowserParameter=Parameter %s +LocalisationDolibarrParameters=Localisation parameters +ClientTZ=Client Time Zone (user) +ClientHour=Client time (user) +OSTZ=Server OS Time Zone +PHPTZ=PHP server Time Zone +PHPServerOffsetWithGreenwich=PHP server offset width Greenwich (seconds) +ClientOffsetWithGreenwich=Client/Browser offset width Greenwich (seconds) +DaylingSavingTime=Daylight saving time +CurrentHour=PHP Time (server) +CompanyTZ=Company Time Zone (main company) +CompanyHour=Company Time (main company) +CurrentSessionTimeOut=Current session timeout +YouCanEditPHPTZ=To set a different PHP timezone (not required), you can try to add a file .htacces with a line like this "SetEnv TZ Europe/Paris" +OSEnv=OS Environment +Box=Box +Boxes=Boxes +MaxNbOfLinesForBoxes=Max number of lines for boxes +PositionByDefault=Default order +Position=Position +MenusDesc=Menus managers define content of the 2 menu bars (horizontal bar and vertical bar). +MenusEditorDesc=The menu editor allow you to define personalized entries in menus. Use it carefully to avoid making dolibarr unstable and menu entries permanently unreachable.
Some modules add entries in the menus (in menu All in most cases). If you removed some of these entries by mistake, you can restore them by disabling and reenabling the module. +MenuForUsers=Menu for users +LangFile=.lang file +System=System +SystemInfo=System information +SystemTools=System tools +SystemToolsArea=System tools area +SystemToolsAreaDesc=This area provides administration features. Use the menu to choose the feature you're looking for. +Purge=Purge +PurgeAreaDesc=This page allows you to delete all files built or stored by Dolibarr (temporary files or all files in %s directory). Using this feature is not necessary. It is provided for users whose Dolibarr is hosted by a provider that does not offer permissions to delete files built by the web server. +PurgeDeleteLogFile=Delete log file %s defined for Syslog module (no risk to loose data) +PurgeDeleteTemporaryFiles=Delete all temporary files (no risk to loose data) +PurgeDeleteAllFilesInDocumentsDir=Delete all files in directory %s. Temporary files but also database backup dumps, files attached to elements (third parties, invoices, ...) and uploaded into the ECM module will be deleted. +PurgeRunNow=Purge now +PurgeNothingToDelete=No directory or file to delete. +PurgeNDirectoriesDeleted=%s files or directories deleted. +PurgeAuditEvents=Purge all security events +ConfirmPurgeAuditEvents=Are you sure you want to purge all security events ? All security logs will be deleted, no other data will be removed. +NewBackup=New backup +GenerateBackup=Generate backup +Backup=Backup +Restore=Restore +RunCommandSummary=Backup has been launched with the following command +RunCommandSummaryToLaunch=Backup can be launched with the following command +WebServerMustHavePermissionForCommand=Your web server must have the permission to run such commands +BackupResult=Backup result +BackupFileSuccessfullyCreated=Backup file successfully generated +YouCanDownloadBackupFile=Generated files can now be downloaded +NoBackupFileAvailable=No backup files available. +ExportMethod=Export method +ImportMethod=Import method +ToBuildBackupFileClickHere=To build a backup file, click here. +ImportMySqlDesc=To import a backup file, you must use mysql command from command line: +ImportPostgreSqlDesc=To import a backup file, you must use pg_restore command from command line: +ImportMySqlCommand=%s %s < mybackupfile.sql +ImportPostgreSqlCommand=%s %s mybackupfile.sql +FileNameToGenerate=File name to generate +Compression=Compression +CommandsToDisableForeignKeysForImport=Command to disable foreign keys on import +CommandsToDisableForeignKeysForImportWarning=Mandatory if you want to be able to restore your sql dump later +ExportCompatibility=Compatibility of generated export file +MySqlExportParameters=MySQL export parameters +PostgreSqlExportParameters= PostgreSQL export parameters +UseTransactionnalMode=Use transactional mode +FullPathToMysqldumpCommand=Full path to mysqldump command +FullPathToPostgreSQLdumpCommand=Full path to pg_dump command +ExportOptions=Export Options +AddDropDatabase=Add DROP DATABASE command +AddDropTable=Add DROP TABLE command +ExportStructure=Structure +Datas=Data +NameColumn=Name columns +ExtendedInsert=Extended INSERT +NoLockBeforeInsert=No lock commands around INSERT +DelayedInsert=Delayed insert +EncodeBinariesInHexa=Encode binary data in hexadecimal +IgnoreDuplicateRecords=Ignore errors of duplicate records (INSERT IGNORE) +Yes=Yes +No=No +AutoDetectLang=Autodetect (browser language) +FeatureDisabledInDemo=Feature disabled in demo +Rights=Permissions +BoxesDesc=Boxes are screen area that show a piece of information on some pages. You can choose between showing the box or not by selecting target page and clicking 'Activate', or by clicking the dustbin to disable it. +OnlyActiveElementsAreShown=Only elements from enabled modules are shown. +ModulesDesc=Dolibarr modules define which functionality is enabled in software. Some modules require permissions you must grant to users, after enabling module. Click on button on/off in column "Status" to enable a module/feature. +ModulesInterfaceDesc=The Dolibarr modules interface allows you to add features depending on external software, systems or services. +ModulesSpecialDesc=Special modules are very specific or seldom used modules. +ModulesJobDesc=Business modules provide simple predefined setup of Dolibarr for a particular business. +ModulesMarketPlaceDesc=You can find more modules to download on external web sites on the Internet... +ModulesMarketPlaces=More modules... +DoliStoreDesc=DoliStore, the official market place for Dolibarr ERP/CRM external modules +DoliPartnersDesc=List with some companies that can provide/develop on-demand modules or features (Note: any Open Source company knowning PHP language can provide you specific development) +WebSiteDesc=Web site providers you can search to find more modules... +URL=Link +BoxesAvailable=Boxes available +BoxesActivated=Boxes activated +ActivateOn=Activate on +ActiveOn=Activated on +SourceFile=Source file +AutomaticIfJavascriptDisabled=Automatic if Javascript is disabled +AvailableOnlyIfJavascriptNotDisabled=Available only if JavaScript is not disabled +AvailableOnlyIfJavascriptAndAjaxNotDisabled=Available only if JavaScript is not disabled +Required=Required +UsedOnlyWithTypeOption=Used by some agenda option only +Security=Security +Passwords=Passwords +DoNotStoreClearPassword=Do no store clear passwords in database but store only encrypted value (Activated recommended) +MainDbPasswordFileConfEncrypted=Database password encrypted in conf.php (Activated recommended) +InstrucToEncodePass=To have password encoded into the conf.php file, replace the line
$dolibarr_main_db_pass="..."
by
$dolibarr_main_db_pass="crypted:%s" +InstrucToClearPass=To have password decoded (clear) into the conf.php file, replace the line
$dolibarr_main_db_pass="crypted:..."
by
$dolibarr_main_db_pass="%s" +ProtectAndEncryptPdfFiles=Protection of generated pdf files (Activated NOT recommended, breaks mass pdf generation) +ProtectAndEncryptPdfFilesDesc=Protection of a PDF document keeps it available to read and print with any PDF browser. However, editing and copying is not possible anymore. Note that using this feature make building of a global cumulated pdf not working (like unpaid invoices). +Feature=Feature +DolibarrLicense=License +DolibarrProjectLeader=Project leader +Developpers=Developers/contributors +OtherDeveloppers=Other developers/contributors +OfficialWebSite=Dolibarr international official web site +OfficialWebSiteFr=French official web site +OfficialWiki=Dolibarr documentation on Wiki +OfficialDemo=Dolibarr online demo +OfficialMarketPlace=Official market place for external modules/addons +OfficialWebHostingService=Referenced web hosting services (Cloud hosting) +ReferencedPreferredPartners=Preferred Partners +OtherResources=Autres ressources +ForDocumentationSeeWiki=For user or developer documentation (Doc, FAQs...),
take a look at the Dolibarr Wiki:
%s +ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:
%s +HelpCenterDesc1=This area can help you to get a Help support service on Dolibarr. +HelpCenterDesc2=Some part of this service are available in english only. +CurrentTopMenuHandler=Current top menu handler +CurrentLeftMenuHandler=Current left menu handler +CurrentMenuHandler=Current menu handler +CurrentSmartphoneMenuHandler=Current smartphone menu handler +MeasuringUnit=Measuring unit +Emails=E-mails +EMailsSetup=E-mails setup +EMailsDesc=This page allows you to overwrite your PHP parameters for e-mails sending. In most cases on Unix/Linux OS, your PHP setup is correct and these parameters are useless. +MAIN_MAIL_SMTP_PORT=SMTP/SMTPS Port (By default in php.ini: %s) +MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (By default in php.ini: %s) +MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix like systems) +MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix like systems) +MAIN_MAIL_EMAIL_FROM=Sender e-mail for automatic emails (By default in php.ini: %s) +MAIN_MAIL_ERRORS_TO=Sender e-mail used for error returns emails sent +MAIN_MAIL_AUTOCOPY_TO= Send systematically a hidden carbon-copy of all sent emails to +MAIN_MAIL_AUTOCOPY_PROPOSAL_TO= Send systematically a hidden carbon-copy of proposals sent by email to +MAIN_MAIL_AUTOCOPY_ORDER_TO= Send systematically a hidden carbon-copy of orders sent by email to +MAIN_MAIL_AUTOCOPY_INVOICE_TO= Send systematically a hidden carbon-copy of invoice sent by emails to +MAIN_DISABLE_ALL_MAILS=Disable all e-mails sendings (for test purposes or demos) +MAIN_MAIL_SENDMODE=Method to use to send EMails +MAIN_MAIL_SMTPS_ID=SMTP ID if authentication required +MAIN_MAIL_SMTPS_PW=SMTP Password if authentication required +MAIN_MAIL_EMAIL_TLS= Use TLS (SSL) encrypt +MAIN_DISABLE_ALL_SMS=Disable all SMS sendings (for test purposes or demos) +MAIN_SMS_SENDMODE=Method to use to send SMS +MAIN_MAIL_SMS_FROM=Default sender phone number for Sms sending +FeatureNotAvailableOnLinux=Feature not available on Unix like systems. Test your sendmail program locally. +SubmitTranslation=If translation for this language is not complete or you find errors, you can correct this by editing files into directory langs/%s and submit modified files on www.dolibarr.org forum. +ModuleSetup=Module setup +ModulesSetup=Modules setup +ModuleFamilyBase=System +ModuleFamilyCrm=Customer Relation Management (CRM) +ModuleFamilyProducts=Products Management +ModuleFamilyHr=Human Resource Management +ModuleFamilyProjects=Projects/Collaborative work +ModuleFamilyOther=Other +ModuleFamilyTechnic=Multi-modules tools +ModuleFamilyExperimental=Experimental modules +ModuleFamilyFinancial=Financial Modules (Accounting/Treasury) +ModuleFamilyECM=Electronic Content Management (ECM) +MenuHandlers=Menu handlers +MenuAdmin=Menu editor +DoNotUseInProduction=Do not use in production +ThisIsProcessToFollow=This is setup to process: +StepNb=Step %s +FindPackageFromWebSite=Find a package that provides feature you want (for example on official web site %s). +DownloadPackageFromWebSite=Download package %s. +UnpackPackageInDolibarrRoot=Unpack package file into Dolibarr's root directory %s +SetupIsReadyForUse=Install is finished and Dolibarr is ready to use with this new component. +NotExistsDirect=The alternative root directory is not defined.
+InfDirAlt=Since version 3 it is possible to define an alternative root directory.This allows you to store, same place, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
+InfDirExample=
Then declare it in the file conf.php
$dolibarr_main_url_root_alt='http://myserver/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
*These lines are commented with "#", to uncomment only remove the character. +YouCanSubmitFile=Select module: +CurrentVersion=Dolibarr current version +CallUpdatePage=Go to the page that updates the database structure and datas: %s. +LastStableVersion=Last stable version +UpdateServerOffline=Update server offline +GenericMaskCodes=You may enter any numbering mask. In this mask, the following tags could 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 previous but an offset corresponding to the number to the right of the + sign is applied starting on first %s.
{000000@x} same as previous 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 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 for customer. This counter dedicated to customer is reset at same time than global counter.
{tttt} The code of thirdparty type on n characters (see dictionary-thirdparty types).
+GenericMaskCodes3=All other characters in the mask will remain intact.
Spaces are not allowed.
+GenericMaskCodes4a=Example on the 99th %s of the third party TheCompany done 2007-01-31:
+GenericMaskCodes4b=Example on third party created on 2007-03-01:
+GenericMaskCodes4c=Example on product created on 2007-03-01:
+GenericMaskCodes5=ABC{yy}{mm}-{000000} will give ABC0701-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX +GenericNumRefModelDesc=Returns a customizable number according to a defined mask. +ServerAvailableOnIPOrPort=Server is available at address %s on port %s +ServerNotAvailableOnIPOrPort=Server is not available at address %s on port %s +DoTestServerAvailability=Test server connectivity +DoTestSend=Test sending +DoTestSendHTML=Test sending HTML +ErrorCantUseRazIfNoYearInMask=Error, can't use option @ to reset counter each year if sequence {yy} or {yyyy} is not in mask. +ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Error, can't use option @ if sequence {yy}{mm} or {yyyy}{mm} is not in mask. +UMask=UMask parameter for new files on Unix/Linux/BSD/Mac file system. +UMaskExplanation=This parameter allow you to define permissions set by default on files created by Dolibarr on server (during upload for example).
It must be the octal value (for example, 0666 means read and write for everyone).
This parameter is useless on a Windows server. +SeeWikiForAllTeam=Take a look at the wiki page for full list of all actors and their organisation +UseACacheDelay= Delay for caching export response in seconds (0 or empty for no cache) +DisableLinkToHelpCenter=Hide link "Need help or support" on login page +DisableLinkToHelp=Hide link "%s Online help" on left menu +AddCRIfTooLong=There is no automatic wrapping, so if line is out of page on documents because too long, you must add yourself carriage returns in the textarea. +ModuleDisabled=Module disabled +ModuleDisabledSoNoEvent=Module disabled so event never created +ConfirmPurge=Are you sure you want to execute this purge ?
This will delete definitely all your data files with no way to restore them (ECM files, attached files...). +MinLength=Minimum length +LanguageFilesCachedIntoShmopSharedMemory=Files .lang loaded in shared memory +ExamplesWithCurrentSetup=Examples with current running setup +ListOfDirectories=List of OpenDocument templates directories +ListOfDirectoriesForModelGenODT=List of directories containing templates files with OpenDocument format.

Put here full path of directories.
Add a carriage return between eah directory.
To add a directory of the GED module, add here DOL_DATA_ROOT/ecm/yourdirectoryname.

Files in those directories must end with .odt. +NumberOfModelFilesFound=Number of ODT/ODS templates files found in those directories +ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir +FollowingSubstitutionKeysCanBeUsed=
To know how to create your odt document templates, before storing them in those directories, read wiki documentation: +FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template +FirstnameNamePosition=Position of Name/Lastname +DescWeather=The following pictures will be shown on dashboard when number of late actions reach the following values: +KeyForWebServicesAccess=Key to use Web Services (parameter "dolibarrkey" in webservices) +TestSubmitForm=Input test form +ThisForceAlsoTheme=Using this menu manager will also use its own theme whatever is user choice. Also this menu manager specialized for smartphones does not works on all smartphone. Use another menu manager if you experience problems on yours. +ThemeDir=Skins directory +ConnectionTimeout=Connexion timeout +ResponseTimeout=Response timeout +SmsTestMessage=Test message from __PHONEFROM__ to __PHONETO__ +ModuleMustBeEnabledFirst=Module %s must be enabled first before using this feature. +SecurityToken=Key to secure URLs +NoSmsEngine=No SMS sender manager available. SMS sender manager are not installed with default distribution (because they depends on an external supplier) but you can find some on %s +PDF=PDF +PDFDesc=You can set each global options related to the PDF generation +PDFAddressForging=Rules to forge address boxes +HideAnyVATInformationOnPDF=Hide all information related to VAT on generated PDF +HideDescOnPDF=Hide products description on generated PDF +HideRefOnPDF=Hide products ref. on generated PDF +HideDetailsOnPDF=Hide products lines details on generated PDF +Library=Library +UrlGenerationParameters=Parameters to secure URLs +SecurityTokenIsUnique=Use a unique securekey parameter for each URL +EnterRefToBuildUrl=Enter reference for object %s +GetSecuredUrl=Get calculated URL +ButtonHideUnauthorized=Hide buttons for unauthorized actions instead of showing disabled buttons +OldVATRates=Old VAT rate +NewVATRates=New VAT rate +PriceBaseTypeToChange=Modify on prices with base reference value defined on +MassConvert=Launch mass convert +String=String +TextLong=Long text +Int=Integer +Float=Float +DateAndTime=Date and hour +Unique=Unique +Boolean=Boolean (Checkbox) +ExtrafieldPhone = Phone +ExtrafieldPrice = Price +ExtrafieldMail = Email +ExtrafieldSelect = Select list +ExtrafieldSelectList = Select from table +ExtrafieldSeparator=Separator +ExtrafieldCheckBox=Checkbox +ExtrafieldRadio=Radio button +ExtrafieldCheckBoxFromList= Checkbox from table +ExtrafieldParamHelpselect=Parameters list have to be like key,value

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

In order to have the list depending on another :
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key +ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value

for example :
1,value1
2,value2
3,value3
... +ExtrafieldParamHelpradio=Parameters list have to be like key,value

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

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

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

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter +LibraryToBuildPDF=Library used to build PDF +WarningUsingFPDF=Warning: Your conf.php contains directive dolibarr_pdf_force_fpdf=1. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.
To solve this and have a full support of PDF generation, please download TCPDF library, then comment or remove the line $dolibarr_pdf_force_fpdf=1, and add instead $dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir' +LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:
1 : local tax apply on products and services without vat (vat is not applied on local tax)
2 : local tax apply on products and services before vat (vat is calculated on amount + localtax)
3 : local tax apply on products without vat (vat is not applied on local tax)
4 : local tax apply on products before vat (vat is calculated on amount + localtax)
5 : local tax apply on services without vat (vat is not applied on local tax)
6 : local tax apply on services before vat (vat is calculated on amount + localtax) +SMS=SMS +LinkToTestClickToDial=Enter a phone number to call to show a link to test the ClickToDial url for user %s +RefreshPhoneLink=Refresh link +LinkToTest=Clickable link generated for user %s (click phone number to test) +KeepEmptyToUseDefault=Keep empty to use default value +DefaultLink=Default link +ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) +ExternalModule=External module - Installed into directory %s +BarcodeInitForThirdparties=Mass barcode init for thirdparties +BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services +CurrentlyNWithoutBarCode=Currently, you have %s records on %s %s without barcode defined. +InitEmptyBarCode=Init value for next %s empty records +EraseAllCurrentBarCode=Erase all current barcode values +ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values ? +AllBarcodeReset=All barcode values have been removed +NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup. +NoRecordWithoutBarcodeDefined=No record with no barcode value defined. + +# Modules +Module0Name=Users & groups +Module0Desc=Users and groups management +Module1Name=Third parties +Module1Desc=Companies and contact management (customers, prospects...) +Module2Name=Commercial +Module2Desc=Commercial management +Module10Name=Accounting +Module10Desc=Simple accounting reports (journals, turnover) based onto database content. No dispatching. +Module20Name=Proposals +Module20Desc=Commercial proposal management +Module22Name=Mass E-mailings +Module22Desc=Mass E-mailing management +Module23Name= Energy +Module23Desc= Monitoring the consumption of energies +Module25Name=Customer Orders +Module25Desc=Customer order management +Module30Name=Invoices +Module30Desc=Invoice and credit note management for customers. Invoice management for suppliers +Module40Name=Suppliers +Module40Desc=Supplier management and buying (orders and invoices) +Module42Name=Logs +Module42Desc=Logging facilities (file, syslog, ...) +Module49Name=Editors +Module49Desc=Editor management +Module50Name=Products +Module50Desc=Product management +Module51Name=Mass mailings +Module51Desc=Mass paper mailing management +Module52Name=Stocks +Module52Desc=Stock management (products) +Module53Name=Services +Module53Desc=Service management +Module54Name=Contracts/Subscriptions +Module54Desc=Management of contracts (services or reccuring subscriptions) +Module55Name=Barcodes +Module55Desc=Barcode management +Module56Name=Telephony +Module56Desc=Telephony integration +Module57Name=Standing orders +Module57Desc=Standing orders and withdrawal management. Also includes generation of SEPA file for european countries. +Module58Name=ClickToDial +Module58Desc=Integration of a ClickToDial system (Asterisk, ...) +Module59Name=Bookmark4u +Module59Desc=Add function to generate Bookmark4u account from a Dolibarr account +Module70Name=Interventions +Module70Desc=Intervention management +Module75Name=Expense and trip notes +Module75Desc=Expense and trip notes management +Module80Name=Shipments +Module80Desc=Shipments and delivery order management +Module85Name=Banks and cash +Module85Desc=Management of bank or cash accounts +Module100Name=External site +Module100Desc=This module include an external web site or page into Dolibarr menus and view it into a Dolibarr frame +Module105Name=Mailman and SPIP +Module105Desc=Mailman or SPIP interface for member module +Module200Name=LDAP +Module200Desc=LDAP directory synchronisation +Module210Name=PostNuke +Module210Desc=PostNuke integration +Module240Name=Data exports +Module240Desc=Tool to export Dolibarr datas (with assistants) +Module250Name=Data imports +Module250Desc=Tool to import datas in Dolibarr (with assistants) +Module310Name=Members +Module310Desc=Foundation members management +Module320Name=RSS Feed +Module320Desc=Add RSS feed inside Dolibarr screen pages +Module330Name=Bookmarks +Module330Desc=Bookmark management +Module400Name=Projects/Opportunities/Leads +Module400Desc=Management of projects, opportunities or leads. You can then assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. +Module410Name=Webcalendar +Module410Desc=Webcalendar integration +Module500Name=Special expenses (tax, social contributions, dividends) +Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries +Module510Name=Salaries +Module510Desc=Management of employees salaries and payments +Module600Name=Notifications +Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) +Module700Name=Donations +Module700Desc=Donation management +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices +Module1200Name=Mantis +Module1200Desc=Mantis integration +Module1400Name=Accounting +Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation +Module1780Name=Categories +Module1780Desc=Category management (products, suppliers and customers) +Module2000Name=WYSIWYG editor +Module2000Desc=Allow to edit some text area using an advanced editor +Module2200Name=Dynamic Prices +Module2200Desc=Enable the usage of math expressions for prices +Module2300Name=Cron +Module2300Desc=Scheduled task management +Module2400Name=Agenda +Module2400Desc=Events/tasks and agenda management +Module2500Name=Electronic Content Management +Module2500Desc=Save and share documents +Module2600Name=WebServices +Module2600Desc=Enable the Dolibarr web services server +Module2650Name=WebServices (client) +Module2650Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Supplier orders supported only for the moment) +Module2700Name=Gravatar +Module2700Desc=Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Need an internet access +Module2800Desc=FTP Client +Module2900Name=GeoIPMaxmind +Module2900Desc=GeoIP Maxmind conversions capabilities +Module3100Name=Skype +Module3100Desc=Add a Skype button into card of adherents / third parties / contacts +Module5000Name=Multi-company +Module5000Desc=Allows you to manage multiple companies +Module6000Name=Workflow +Module6000Desc=Workflow management +Module20000Name=Leave Requests management +Module20000Desc=Declare and follow employees leaves requests +Module39000Name=Product batch +Module39000Desc=Batch or serial number, eat-by and sell-by date management on products +Module50000Name=PayBox +Module50000Desc=Module to offer an online payment page by credit card with PayBox +Module50100Name=Point of sales +Module50100Desc=Point of sales module +Module50200Name=Paypal +Module50200Desc=Module to offer an online payment page by credit card with Paypal +Module50400Name=Accounting (advanced) +Module50400Desc=Accounting management (double parties) +Module54000Name=PrintIPP +Module54000Desc=Direct print (without opening the documents) using Cups IPP interface (Printer must be visible from server, and CUPS must be installe on server). +Module55000Name=Open Poll +Module55000Desc=Module to make online polls (like Doodle, Studs, Rdvz, ...) +Module59000Name=Margins +Module59000Desc=Module to manage margins +Module60000Name=Commissions +Module60000Desc=Module to manage commissions +Module150010Name=Batch number, eat-by date and sell-by date +Module150010Desc=batch number, eat-by date and sell-by date management for product +Permission11=Read customer invoices +Permission12=Create/modify customer invoices +Permission13=Unvalidate customer invoices +Permission14=Validate customer invoices +Permission15=Send customer invoices by email +Permission16=Create payments for customer invoices +Permission19=Delete customer invoices +Permission21=Read commercial proposals +Permission22=Create/modify commercial proposals +Permission24=Validate commercial proposals +Permission25=Send commercial proposals +Permission26=Close commercial proposals +Permission27=Delete commercial proposals +Permission28=Export commercial proposals +Permission31=Read products +Permission32=Create/modify products +Permission34=Delete products +Permission36=See/manage hidden products +Permission38=Export products +Permission41=Read projects (shared project and projects i'm contact for) +Permission42=Create/modify projects (shared project and projects i'm contact for) +Permission44=Delete projects (shared project and projects i'm contact for) +Permission61=Read interventions +Permission62=Create/modify interventions +Permission64=Delete interventions +Permission67=Export interventions +Permission71=Read members +Permission72=Create/modify members +Permission74=Delete members +Permission75=Setup types of membership +Permission76=Export datas +Permission78=Read subscriptions +Permission79=Create/modify subscriptions +Permission81=Read customers orders +Permission82=Create/modify customers orders +Permission84=Validate customers orders +Permission86=Send customers orders +Permission87=Close customers orders +Permission88=Cancel customers orders +Permission89=Delete customers orders +Permission91=Read social contributions and vat +Permission92=Create/modify social contributions and vat +Permission93=Delete social contributions and vat +Permission94=Export social contributions +Permission95=Read reports +Permission101=Read sendings +Permission102=Create/modify sendings +Permission104=Validate sendings +Permission106=Export sendings +Permission109=Delete sendings +Permission111=Read financial accounts +Permission112=Create/modify/delete and compare transactions +Permission113=Setup financial accounts (create, manage categories) +Permission114=Reconciliate transactions +Permission115=Export transactions and account statements +Permission116=Transfers between accounts +Permission117=Manage cheques dispatching +Permission121=Read third parties linked to user +Permission122=Create/modify third parties linked to user +Permission125=Delete third parties linked to user +Permission126=Export third parties +Permission141=Read projects (also private i am not contact for) +Permission142=Create/modify projects (also private i am not contact for) +Permission144=Delete projects (also private i am not contact for) +Permission146=Read providers +Permission147=Read stats +Permission151=Read standing orders +Permission152=Create/modify a standing orders request +Permission153=Transmission standing orders receipts +Permission154=Credit/refuse standing orders receipts +Permission161=Read contracts/subscriptions +Permission162=Create/modify contracts/subscriptions +Permission163=Activate a service/subscription of a contract +Permission164=Disable a service/subscription of a contract +Permission165=Delete contracts/subscriptions +Permission171=Read trips and expenses (own and his subordinates) +Permission172=Create/modify trips and expenses +Permission173=Delete trips and expenses +Permission174=Read all trips and expenses +Permission178=Export trips and expenses +Permission180=Read suppliers +Permission181=Read supplier orders +Permission182=Create/modify supplier orders +Permission183=Validate supplier orders +Permission184=Approve supplier orders +Permission185=Order or cancel supplier orders +Permission186=Receive supplier orders +Permission187=Close supplier orders +Permission188=Cancel supplier orders +Permission192=Create lines +Permission193=Cancel lines +Permission194=Read the bandwith lines +Permission202=Create ADSL connections +Permission203=Order connections orders +Permission204=Order connections +Permission205=Manage connections +Permission206=Read connections +Permission211=Read Telephony +Permission212=Order lines +Permission213=Activate line +Permission214=Setup Telephony +Permission215=Setup providers +Permission221=Read emailings +Permission222=Create/modify emailings (topic, recipients...) +Permission223=Validate emailings (allows sending) +Permission229=Delete emailings +Permission237=View recipients and info +Permission238=Manually send mailings +Permission239=Delete mailings after validation or sent +Permission241=Read categories +Permission242=Create/modify categories +Permission243=Delete categories +Permission244=See the contents of the hidden categories +Permission251=Read other users and groups +PermissionAdvanced251=Read other users +Permission252=Read permissions of other users +Permission253=Create/modify other users, groups and permisssions +PermissionAdvanced253=Create/modify internal/external users and permissions +Permission254=Create/modify external users only +Permission255=Modify other users password +Permission256=Delete or disable other users +Permission262=Extend access to all third parties (not only those linked to user). Not effective for external users (always limited to themselves). +Permission271=Read CA +Permission272=Read invoices +Permission273=Issue invoices +Permission281=Read contacts +Permission282=Create/modify contacts +Permission283=Delete contacts +Permission286=Export contacts +Permission291=Read tariffs +Permission292=Set permissions on the tariffs +Permission293=Modify costumers tariffs +Permission300=Read bar codes +Permission301=Create/modify bar codes +Permission302=Delete bar codes +Permission311=Read services +Permission312=Assign service/subscription to contract +Permission331=Read bookmarks +Permission332=Create/modify bookmarks +Permission333=Delete bookmarks +Permission341=Read its own permissions +Permission342=Create/modify his own user information +Permission343=Modify his own password +Permission344=Modify its own permissions +Permission351=Read groups +Permission352=Read groups permissions +Permission353=Create/modify groups +Permission354=Delete or disable groups +Permission358=Export users +Permission401=Read discounts +Permission402=Create/modify discounts +Permission403=Validate discounts +Permission404=Delete discounts +Permission510=Read Salaries +Permission512=Create/modify salaries +Permission514=Delete salaries +Permission517=Export salaries +Permission531=Read services +Permission532=Create/modify services +Permission534=Delete services +Permission536=See/manage hidden services +Permission538=Export services +Permission701=Read donations +Permission702=Create/modify donations +Permission703=Delete donations +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports +Permission1001=Read stocks +Permission1002=Create/modify warehouses +Permission1003=Delete warehouses +Permission1004=Read stock movements +Permission1005=Create/modify stock movements +Permission1101=Read delivery orders +Permission1102=Create/modify delivery orders +Permission1104=Validate delivery orders +Permission1109=Delete delivery orders +Permission1181=Read suppliers +Permission1182=Read supplier orders +Permission1183=Create/modify supplier orders +Permission1184=Validate supplier orders +Permission1185=Approve supplier orders +Permission1186=Order supplier orders +Permission1187=Acknowledge receipt of supplier orders +Permission1188=Delete supplier orders +Permission1201=Get result of an export +Permission1202=Create/Modify an export +Permission1231=Read supplier invoices +Permission1232=Create/modify supplier invoices +Permission1233=Validate supplier invoices +Permission1234=Delete supplier invoices +Permission1235=Send supplier invoices by email +Permission1236=Export supplier invoices, attributes and payments +Permission1237=Export supplier orders and their details +Permission1251=Run mass imports of external data into database (data load) +Permission1321=Export customer invoices, attributes and payments +Permission1421=Export customer orders and attributes +Permission23001 = Read Scheduled task +Permission23002 = Create/update Scheduled task +Permission23003 = Delete Scheduled task +Permission23004 = Execute Scheduled task +Permission2401=Read actions (events or tasks) linked to his account +Permission2402=Create/modify actions (events or tasks) linked to his account +Permission2403=Delete actions (events or tasks) linked to his account +Permission2411=Read actions (events or tasks) of others +Permission2412=Create/modify actions (events or tasks) of others +Permission2413=Delete actions (events or tasks) of others +Permission2501=Read/Download documents +Permission2502=Download documents +Permission2503=Submit or delete documents +Permission2515=Setup documents directories +Permission2801=Use FTP client in read mode (browse and download only) +Permission2802=Use FTP client in write mode (delete or upload files) +Permission50101=Use Point of sales +Permission50201=Read transactions +Permission50202=Import transactions +Permission54001=Print +Permission55001=Read polls +Permission55002=Create/modify polls +Permission59001=Read commercial margins +Permission59002=Define commercial margins +Permission59003=Read every user margin +DictionaryCompanyType=Thirdparties type +DictionaryCompanyJuridicalType=Juridical kinds of thirdparties +DictionaryProspectLevel=Prospect potential level +DictionaryCanton=State/Cantons +DictionaryRegion=Regions +DictionaryCountry=Countries +DictionaryCurrency=Currencies +DictionaryCivility=Civility title +DictionaryActions=Type of agenda events +DictionarySocialContributions=Social contributions types +DictionaryVAT=VAT Rates or Sales Tax Rates +DictionaryRevenueStamp=Amount of revenue stamps +DictionaryPaymentConditions=Payment terms +DictionaryPaymentModes=Payment modes +DictionaryTypeContact=Contact/Address types +DictionaryEcotaxe=Ecotax (WEEE) +DictionaryPaperFormat=Paper formats +DictionaryFees=Type of fees +DictionarySendingMethods=Shipping methods +DictionaryStaff=Staff +DictionaryAvailability=Delivery delay +DictionaryOrderMethods=Ordering methods +DictionarySource=Origin of proposals/orders +DictionaryAccountancyplan=Chart of accounts +DictionaryAccountancysystem=Models for chart of accounts +DictionaryEMailTemplates=Emails templates +SetupSaved=Setup saved +BackToModuleList=Back to modules list +BackToDictionaryList=Back to dictionaries list +VATReceivedOnly=Special rate not charged +VATManagement=VAT Management +VATIsUsedDesc=The VAT rate by default when creating prospects, invoices, orders etc follow the active standard rule:
If the seller is not subjected to VAT, then VAT by default=0. End of rule.
If the (selling country= buying country), then the VAT by default=VAT of the product in the selling country. End of rule.
If seller and buyer in the European Community and goods are transport products (car, ship, plane), the default VAT=0 ( The VAT should be paid by the buyer at the customoffice of his country and not at the seller). End of rule.
If seller and buyer in the European Community and buyer is not a company, then the VAT by default=VAT of product sold. End of rule.
If seller and buyer in the European Community and buyer is a company, then the VAT by default=0. End of rule.
Else the proposed default VAT=0. End of rule. +VATIsNotUsedDesc=By default the proposed VAT is 0 which can be used for cases like associations, individuals ou small companies. +VATIsUsedExampleFR=In France, it means companies or organisations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. +VATIsNotUsedExampleFR=In France, it means associations that are non VAT declared or companies, organisations or liberal professions that have chosen the micro enterprise fiscal system (VAT in franchise) and paid a franchise VAT without any VAT declaration. This choice will display the reference "Non applicable VAT - art-293B of CGI" on invoices. +##### Local Taxes ##### +LTRate=Rate +LocalTax1IsUsed=Use second tax +LocalTax1IsNotUsed=Do not use second tax +LocalTax1IsUsedDesc=Use a second type of tax (other than VAT) +LocalTax1IsNotUsedDesc=Do not use other type of tax (other than VAT) +LocalTax1Management=Second type of tax +LocalTax1IsUsedExample= +LocalTax1IsNotUsedExample= +LocalTax2IsUsed=Use third tax +LocalTax2IsNotUsed=Do not use third tax +LocalTax2IsUsedDesc=Use a third type of tax (other than VAT) +LocalTax2IsNotUsedDesc=Do not use other type of tax (other than VAT) +LocalTax2Management=Third type of tax +LocalTax2IsUsedExample= +LocalTax2IsNotUsedExample= +LocalTax1ManagementES= RE Management +LocalTax1IsUsedDescES= The RE rate by default when creating prospects, invoices, orders etc follow the active standard rule:
If te buyer is not subjected to RE, RE by default=0. End of rule.
If the buyer is subjected to RE then the RE by default. End of rule.
+LocalTax1IsNotUsedDescES= By default the proposed RE is 0. End of rule. +LocalTax1IsUsedExampleES= In Spain they are professionals subject to some specific sections of the Spanish IAE. +LocalTax1IsNotUsedExampleES= In Spain they are professional and societies and subject to certain sections of the Spanish IAE. +LocalTax2ManagementES= IRPF Management +LocalTax2IsUsedDescES= The RE rate by default when creating prospects, invoices, orders etc follow the active standard rule:
If the seller is not subjected to IRPF, then IRPF by default=0. End of rule.
If the seller is subjected to IRPF then the IRPF by default. End of rule.
+LocalTax2IsNotUsedDescES= By default the proposed IRPF is 0. End of rule. +LocalTax2IsUsedExampleES= In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. +LocalTax2IsNotUsedExampleES= In Spain they are bussines not subject to tax system of modules. +CalcLocaltax=Reports +CalcLocaltax1ES=Sales - Purchases +CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases +CalcLocaltax2ES=Purchases +CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases +CalcLocaltax3ES=Sales +CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +LabelUsedByDefault=Label used by default if no translation can be found for code +LabelOnDocuments=Label on documents +NbOfDays=Nb of days +AtEndOfMonth=At end of month +Offset=Offset +AlwaysActive=Always active +UpdateRequired=Your system needs to be updated. To do this, click on Update now. +Upgrade=Upgrade +MenuUpgrade=Upgrade / Extend +AddExtensionThemeModuleOrOther=Add extension (theme, module, ...) +WebServer=Web server +DocumentRootServer=Web server's root directory +DataRootServer=Data files directory +IP=IP +Port=Port +VirtualServerName=Virtual server name +AllParameters=All parameters +OS=OS +PhpEnv=Env +PhpModules=Modules +PhpConf=Conf +PhpWebLink=Web-Php link +Pear=Pear +PearPackages=Pear Packages +Browser=Browser +Server=Server +Database=Database +DatabaseServer=Database host +DatabaseName=Database name +DatabasePort=Database port +DatabaseUser=Database user +DatabasePassword=Database password +DatabaseConfiguration=Database setup +Tables=Tables +TableName=Table name +TableLineFormat=Line format +NbOfRecord=Nb of records +Constraints=Constraints +ConstraintsType=Constraints type +ConstraintsToShowOrNotEntry=Constraint to show or not the menu entry +AllMustBeOk=All of these must be checked +Host=Server +DriverType=Driver type +SummarySystem=System information summary +SummaryConst=List of all Dolibarr setup parameters +SystemUpdate=System update +SystemSuccessfulyUpdate=Your system has been updated successfuly +MenuCompanySetup=Company/Foundation +MenuNewUser=New user +MenuTopManager=Top menu manager +MenuLeftManager=Left menu manager +MenuManager=Menu manager +MenuSmartphoneManager=Smartphone menu manager +DefaultMenuTopManager=Top menu manager +DefaultMenuLeftManager=Left menu manager +DefaultMenuManager= Standard menu manager +DefaultMenuSmartphoneManager=Smartphone menu manager +Skin=Skin theme +DefaultSkin=Default skin theme +MaxSizeList=Max length for list +DefaultMaxSizeList=Default max length for list +MessageOfDay=Message of the day +MessageLogin=Login page message +PermanentLeftSearchForm=Permanent search form on left menu +DefaultLanguage=Default language to use (language code) +EnableMultilangInterface=Enable multilingual interface +EnableShowLogo=Show logo on left menu +EnableHtml5=Enable Html5 (Developement - Only available on Eldy template) +SystemSuccessfulyUpdated=Your system has been updated successfully +CompanyInfo=Company/foundation information +CompanyIds=Company/foundation identities +CompanyName=Name +CompanyAddress=Address +CompanyZip=Zip +CompanyTown=Town +CompanyCountry=Country +CompanyCurrency=Main currency +Logo=Logo +DoNotShow=Do not show +DoNotSuggestPaymentMode=Do not suggest +NoActiveBankAccountDefined=No active bank account defined +OwnerOfBankAccount=Owner of bank account %s +BankModuleNotActive=Bank accounts module not enabled +ShowBugTrackLink=Show link "Report a bug" +ShowWorkBoard=Show "workbench" on homepage +Alerts=Alerts +Delays=Delays +DelayBeforeWarning=Delay before warning +DelaysBeforeWarning=Delays before warning +DelaysOfToleranceBeforeWarning=Tolerance delays before warning +DelaysOfToleranceDesc=This screen allows you to define the tolerated delays before an alert is reported on screen with picto %s for each late element. +Delays_MAIN_DELAY_ACTIONS_TODO=Delay tolerance (in days) before alert on planned events not yet realised +Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on orders not yet processed +Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on suppliers orders not yet processed +Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Delay tolerance (in days) before alert on proposals to close +Delays_MAIN_DELAY_PROPALS_TO_BILL=Delay tolerance (in days) before alert on proposals not billed +Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Tolerance delay (in days) before alert on services to activate +Delays_MAIN_DELAY_RUNNING_SERVICES=Tolerance delay (in days) before alert on expired services +Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Tolerance delay (in days) before alert on unpaid supplier invoices +Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Tolerence delay (in days) before alert on unpaid client invoices +Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Tolerance delay (in days) before alert on pending bank reconciliation +Delays_MAIN_DELAY_MEMBERS=Tolerance delay (in days) before alert on delayed membership fee +Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Tolerance delay (in days) before alert for cheques deposit to do +SetupDescription1=All parameters available in the setup area allow you to setup Dolibarr before starting using it. +SetupDescription2=The 2 most important setup steps are the 2 first ones in the left setup menu, this means Company/foundation setup page and Modules setup page: +SetupDescription3=Parameters in menu Setup -> Company/foundation are required because input information is used on Dolibarr displays and to modify Dolibarr behaviour (for example for features related to your country). +SetupDescription4=Parameters in menu Setup -> Modules are required because Dolibarr is not a fixed ERP/CRM but a sum of several modules, all more or less independant. It's only after activating modules you're interesting in that you will see features appeared in menus. +SetupDescription5=Other menu entries manage optional parameters. +EventsSetup=Setup for events logs +LogEvents=Security audit events +Audit=Audit +InfoDolibarr=Infos Dolibarr +InfoBrowser=Infos Browser +InfoOS=Infos OS +InfoWebServer=Infos web server +InfoDatabase=Infos database +InfoPHP=Infos PHP +InfoPerf=Infos performances +BrowserName=Browser name +BrowserOS=Browser OS +ListEvents=Audit events +ListOfSecurityEvents=List of Dolibarr security events +SecurityEventsPurged=Security events purged +LogEventDesc=You can enable here the logging for Dolibarr security events. Administrators can then see its content via menu System tools - Audit. Warning, this feature can consume a large amount of data in database. +AreaForAdminOnly=Those features can be used by administrator users only. +SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. +SystemAreaForAdminOnly=This area is available for administrator users only. None of the Dolibarr permissions can reduce this limit. +CompanyFundationDesc=Edit on this page all known information of the company or foundation you need to manage (For this, click on "Modify" button at bottom of page) +DisplayDesc=You can choose each parameter related to the Dolibarr look and feel here +AvailableModules=Available modules +ToActivateModule=To activate modules, go on setup Area (Home->Setup->Modules). +SessionTimeOut=Time out for session +SessionExplanation=This number guarantee that session will never expire before this delay, if the session cleaner is done by Internal PHP session cleaner (and nothing else). Internal PHP session cleaner does not guaranty that session will expire just after this delay. It will expire, after this delay, and when the session cleaner is ran, so every %s/%s access, but only during access made by other sessions.
Note: on some servers with an external session cleaning mechanism (cron under debian, ubuntu ...), the sessions can be destroyed after a period defined by the default session.gc_maxlifetime, no matter what the value entered here. +TriggersAvailable=Available triggers +TriggersDesc=Triggers are files that will modify the behaviour of Dolibarr workflow once copied into the directory htdocs/core/triggers. They realised new actions, activated on Dolibarr events (new company creation, invoice validation, ...). +TriggerDisabledByName=Triggers in this file are disabled by the -NORUN suffix in their name. +TriggerDisabledAsModuleDisabled=Triggers in this file are disabled as module %s is disabled. +TriggerAlwaysActive=Triggers in this file are always active, whatever are the activated Dolibarr modules. +TriggerActiveAsModuleActive=Triggers in this file are active as module %s is enabled. +GeneratedPasswordDesc=Define here which rule you want to use to generate new password if you ask to have auto generated password +DictionaryDesc=Define here all reference datas. You can complete predefined value with yours. +ConstDesc=This page allows you to edit all other parameters not available in previous pages. They are reserved parameters for advanced developers or for troubleshouting. +OnceSetupFinishedCreateUsers=Warning, you are a Dolibarr administrator user. Administrator users are used to setup Dolibarr. For a usual usage of Dolibarr, it is recommended to use a non administrator user created from Users & Groups menu. +MiscellaneousDesc=Define here all other parameters related to security. +LimitsSetup=Limits/Precision setup +LimitsDesc=You can define limits, precisions and optimisations used by Dolibarr here +MAIN_MAX_DECIMALS_UNIT=Max decimals for unit prices +MAIN_MAX_DECIMALS_TOT=Max decimals for total prices +MAIN_MAX_DECIMALS_SHOWN=Max decimals for prices shown on screen (Add ... after this number if you want to see ... when number is truncated when shown on screen) +MAIN_DISABLE_PDF_COMPRESSION=Use PDF compression for generated PDF files. +MAIN_ROUNDING_RULE_TOT= Size of rounding range (for rare countries where rounding is done on something else than base 10) +UnitPriceOfProduct=Net unit price of a product +TotalPriceAfterRounding=Total price (net/vat/incl tax) after rounding +ParameterActiveForNextInputOnly=Parameter effective for next input only +NoEventOrNoAuditSetup=No security event has been recorded yet. This can be normal if audit has not been enabled on "setup - security - audit" page. +NoEventFoundWithCriteria=No security event has been found for such search criterias. +SeeLocalSendMailSetup=See your local sendmail setup +BackupDesc=To make a complete backup of Dolibarr, you must: +BackupDesc2=* Save content of documents directory (%s) that contains all uploaded and generated files (you can make a zip for example). +BackupDesc3=* Save content of your database into a dump file. For this, you can use following assistant. +BackupDescX=Archived directory should be stored in a secure place. +BackupDescY=The generated dump file should be stored in a secure place. +BackupPHPWarning=Backup can't be guaranted with this method. Prefer previous one +RestoreDesc=To restore a Dolibarr backup, you must: +RestoreDesc2=* Restore archive file (zip file for example) of documents directory to extract tree of files in documents directory of a new Dolibarr installation or into this current documents directoy (%s). +RestoreDesc3=* Restore the data, from a backup dump file, into the database of the new Dolibarr installation or into the database of this current installation. Warning, once restore is finished, you must use a login/password, that existed when backup was made, to connect again. To restore a backup database into this current installation, you can follow this assistant. +RestoreMySQL=MySQL import +ForcedToByAModule= This rule is forced to %s by an activated module +PreviousDumpFiles=Available database backup dump files +WeekStartOnDay=First day of week +RunningUpdateProcessMayBeRequired=Running the upgrade process seems to be required (Programs version %s differs from database version %s) +YouMustRunCommandFromCommandLineAfterLoginToUser=You must run this command from command line after login to a shell with user %s or you must add -W option at end of command line to provide %s password. +YourPHPDoesNotHaveSSLSupport=SSL functions not available in your PHP +DownloadMoreSkins=More skins to download +SimpleNumRefModelDesc=Returns the reference number with format %syymm-nnnn where yy is year, mm is month and nnnn is a sequence without hole and with no reset +ShowProfIdInAddress=Show professionnal id with addresses on documents +ShowVATIntaInAddress=Hide VAT Intra num with addresses on documents +TranslationUncomplete=Partial translation +SomeTranslationAreUncomplete=Some languages may be partially translated or may contains errors. If you detect some, you can fix language files registering to http://transifex.com/projects/p/dolibarr/. +MenuUseLayout=Make vertical menu hidable (option javascript must not be disabled) +MAIN_DISABLE_METEO=Disable meteo view +TestLoginToAPI=Test login to API +ProxyDesc=Some features of Dolibarr need to have an Internet access to work. Define here parameters for this. If the Dolibarr server is behind a Proxy server, those parameters tells Dolibarr how to access Internet through it. +ExternalAccess=External access +MAIN_PROXY_USE=Use a proxy server (otherwise direct access to internet) +MAIN_PROXY_HOST=Name/Address of proxy server +MAIN_PROXY_PORT=Port of proxy server +MAIN_PROXY_USER=Login to use the proxy server +MAIN_PROXY_PASS=Password to use the proxy server +DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s. +ExtraFields=Complementary attributes +ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) +ExtraFieldsThirdParties=Complementary attributes (thirdparty) +ExtraFieldsContacts=Complementary attributes (contact/address) +ExtraFieldsMember=Complementary attributes (member) +ExtraFieldsMemberType=Complementary attributes (member type) +ExtraFieldsCustomerOrders=Complementary attributes (orders) +ExtraFieldsCustomerInvoices=Complementary attributes (invoices) +ExtraFieldsSupplierOrders=Complementary attributes (orders) +ExtraFieldsSupplierInvoices=Complementary attributes (invoices) +ExtraFieldsProject=Complementary attributes (projects) +ExtraFieldsProjectTask=Complementary attributes (tasks) +ExtraFieldHasWrongValue=Attribute %s has a wrong value. +AlphaNumOnlyCharsAndNoSpace=only alphanumericals characters without space +AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space +SendingMailSetup=Setup of sendings by email +SendmailOptionNotComplete=Warning, on some Linux systems, to send email from your email, sendmail execution setup must contains option -ba (parameter mail.force_extra_parameters into your php.ini file). If some recipients never receive emails, try to edit this PHP parameter with mail.force_extra_parameters = -ba). +PathToDocuments=Path to documents +PathDirectory=Directory +SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail direct" will generate a mail message that might be not correctly parsed by some receiving mail servers. Result is that some mails can't be read by people hosted by those bugged platforms. It's case for some Internet providers (Ex: Orange in France). This is not a problem into Dolibarr nor into PHP but onto receiving mail server. You can however add option MAIN_FIX_FOR_BUGGED_MTA to 1 into setup - other to modify Dolibarr to avoid this. However, you may experience problem with other servers that respect strictly the SMTP standard. The other solution (recommended) is to use the method "SMTP socket library" that has no disadvantages. +TranslationSetup=Configuration de la traduction +TranslationDesc=Choice of language visible on screen can be modified:
* Globally from menu Home - Setup - Display
* For user only from tab User display of user card (click on login on top of screen). +TotalNumberOfActivatedModules=Total number of activated feature modules: %s +YouMustEnableOneModule=You must at least enable 1 module +ClassNotFoundIntoPathWarning=Class %s not found into PHP path +YesInSummer=Yes in summer +OnlyFollowingModulesAreOpenedToExternalUsers=Note, only following modules are opened to external users (whatever are permission of such users): +SuhosinSessionEncrypt=Session storage encrypted by Suhosin +ConditionIsCurrently=Condition is currently %s +YouUseBestDriver=You use driver %s that is best driver available currently. +YouDoNotUseBestDriver=You use drive %s but driver %s is recommended. +NbOfProductIsLowerThanNoPb=You have only %s products/services into database. This does not required any particular optimization. +SearchOptim=Search optimization +YouHaveXProductUseSearchOptim=You have %s product into database. You should add the constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 into Home-Setup-Other, you limit the search to the beginning of strings making possible for database to use index and you should get an immediate response. +BrowserIsOK=You are using the web browser %s. This browser is ok for security and performance. +BrowserIsKO=You are using the web browser %s. This browser is known to be a bad choice for security, performance and reliability. We recommand you to use Firefox, Chrome, Opera or Safari. +XDebugInstalled=XDebug is loaded. +XCacheInstalled=XCache is loaded. +AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". +FieldEdition=Edition of field %s +FixTZ=TimeZone fix +FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced) +GetBarCode=Get barcode +EmptyNumRefModelDesc=The code is free. This code can be modified at any time. +##### Module password generation +PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: 8 characters containing shared numbers and characters in lowercase. +PasswordGenerationNone=Do not suggest any generated password. Password must be type in manually. +##### Users setup ##### +UserGroupSetup=Users and groups module setup +GeneratePassword=Suggest a generated password +RuleForGeneratedPasswords=Rule to generate suggested passwords or validate passwords +DoNotSuggest=Do not suggest any password +EncryptedPasswordInDatabase=To allow the encryption of the passwords in the database +DisableForgetPasswordLinkOnLogonPage=Do not show the link "Forget password" on login page +UsersSetup=Users module setup +UserMailRequired=EMail required to create a new user +##### Company setup ##### +CompanySetup=Companies module setup +CompanyCodeChecker=Module for third parties code generation and checking (customer or supplier) +AccountCodeManager=Module for accountancy code generation (customer or supplier) +ModuleCompanyCodeAquarium=Return an accountancy code built by:
%s followed by third party supplier code for a supplier accountancy code,
%s followed by third party customer code for a customer accountancy code. +ModuleCompanyCodePanicum=Return an empty accountancy code. +ModuleCompanyCodeDigitaria=Accountancy code depends on third party code. The code is composed of the character "C" in the first position followed by the first 5 characters of the third party code. +UseNotifications=Use notifications +NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined:
* per third parties contacts (customers or suppliers), one third party at time.
* or by setting a global target email address on module setup page. +ModelModules=Documents templates +DocumentModelOdt=Generate documents from OpenDocuments templates (.ODT or .ODS files for OpenOffice, KOffice, TextEdit,...) +WatermarkOnDraft=Watermark on draft document +JSOnPaimentBill=Activate feature to autofill payment lines on payment form +CompanyIdProfChecker=Rules on Professional Ids +MustBeUnique=Must be unique ? +MustBeMandatory=Mandatory to create third parties ? +MustBeInvoiceMandatory=Mandatory to validate invoices ? +Miscellaneous=Miscellaneous +##### Webcal setup ##### +WebCalSetup=Webcalendar link setup +WebCalSyncro=Add Dolibarr events to WebCalendar +WebCalAllways=Always, no asking +WebCalYesByDefault=On demand (yes by default) +WebCalNoByDefault=On demand (no by default) +WebCalNever=Never +WebCalURL=URL for calendar access +WebCalServer=Server hosting calendar database +WebCalDatabaseName=Database name +WebCalUser=User to access database +WebCalSetupSaved=Webcalendar setup saved successfully. +WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successful. +WebCalTestKo1=Connection to server '%s' succeed but database '%s' could not be reached. +WebCalTestKo2=Connection to server '%s' with user '%s' failed. +WebCalErrorConnectOkButWrongDatabase=Connection succeeded but database doesn't look to be a Webcalendar database. +WebCalAddEventOnCreateActions=Add calendar event on actions create +WebCalAddEventOnCreateCompany=Add calendar event on companies create +WebCalAddEventOnStatusPropal=Add calendar event on commercial proposals status change +WebCalAddEventOnStatusContract=Add calendar event on contracts status change +WebCalAddEventOnStatusBill=Add calendar event on bills status change +WebCalAddEventOnStatusMember=Add calendar event on members status change +WebCalUrlForVCalExport=An export link to %s format is available at following link: %s +WebCalCheckWebcalSetup=Maybe the Webcal module setup is not correct. +##### Invoices ##### +BillsSetup=Invoices module setup +BillsDate=Invoices date +BillsNumberingModule=Invoices and credit notes numbering model +BillsPDFModules=Invoice documents models +CreditNoteSetup=Credit note module setup +CreditNotePDFModules=Credit note document models +CreditNote=Credit note +CreditNotes=Credit notes +ForceInvoiceDate=Force invoice date to validation date +DisableRepeatable=Disable repeatable invoices +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +EnableEditDeleteValidInvoice=Enable the possibility to edit/delete valid invoice with no payment +SuggestPaymentByRIBOnAccount=Suggest payment by withdraw on account +SuggestPaymentByChequeToAddress=Suggest payment by cheque to +FreeLegalTextOnInvoices=Free text on invoices +WatermarkOnDraftInvoices=Watermark on draft invoices (none if empty) +##### Proposals ##### +PropalSetup=Commercial proposals module setup +CreateForm=Create forms +NumberOfProductLines=Number of product lines +ProposalsNumberingModules=Commercial proposal numbering models +ProposalsPDFModules=Commercial proposal documents models +ClassifiedInvoiced=Classified invoiced +HideTreadedPropal=Hide the treated commercial proposals in the list +AddShippingDateAbility=Add shipping date ability +AddDeliveryAddressAbility=Add delivery date ability +UseOptionLineIfNoQuantity=A line of product/service with a zero amount is considered as an option +FreeLegalTextOnProposal=Free text on commercial proposals +WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request +##### Orders ##### +OrdersSetup=Order management setup +OrdersNumberingModules=Orders numbering models +OrdersModelModule=Order documents models +HideTreadedOrders=Hide the treated or cancelled orders in the list +ValidOrderAfterPropalClosed=To validate the order after proposal closer, makes it possible not to step by the provisional order +FreeLegalTextOnOrders=Free text on orders +WatermarkOnDraftOrders=Watermark on draft orders (none if empty) +ShippableOrderIconInList=Add an icon in Orders list which indicate if order is shippable +BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ask for bank account destination of order +##### Clicktodial ##### +ClickToDialSetup=Click To Dial module setup +ClickToDialUrlDesc=Url called when a click on phone picto is done. In URL, you can use tags
__PHONETO__ that will be replaced with the phone number of person to call
__PHONEFROM__ that will be replaced with phone number of calling person (yours)
__LOGIN__ that will be replaced with your clicktodial login (defined on your user card)
__PASS__ that will be replaced with your clicktodial password (defined on your user card). +##### Bookmark4u ##### +Bookmark4uSetup=Bookmark4u module setup +##### Interventions ##### +InterventionsSetup=Interventions module setup +FreeLegalTextOnInterventions=Free text on intervention documents +FicheinterNumberingModules=Intervention numbering models +TemplatePDFInterventions=Intervention card documents models +WatermarkOnDraftInterventionCards=Watermark on intervention card documents (none if empty) +##### Contracts ##### +ContractsSetup=Contracts/Subscriptions module setup +ContractsNumberingModules=Contracts numbering modules +TemplatePDFContracts=Contracts documents models +FreeLegalTextOnContracts=Free text on contracts +WatermarkOnDraftContractCards=Watermark on draft contracts (none if empty) +##### Members ##### +MembersSetup=Members module setup +MemberMainOptions=Main options +AddSubscriptionIntoAccount=Suggest by default to create a bank transaction, in bank module, when adding a new payed subscription +AdherentLoginRequired= Manage a Login for each member +AdherentMailRequired=EMail required to create a new member +MemberSendInformationByMailByDefault=Checkbox to send mail confirmation to members (validation or new subscription) is on by default +##### LDAP setup ##### +LDAPSetup=LDAP Setup +LDAPGlobalParameters=Global parameters +LDAPUsersSynchro=Users +LDAPGroupsSynchro=Groups +LDAPContactsSynchro=Contacts +LDAPMembersSynchro=Members +LDAPSynchronization=LDAP synchronisation +LDAPFunctionsNotAvailableOnPHP=LDAP functions are not available on your PHP +LDAPToDolibarr=LDAP -> Dolibarr +DolibarrToLDAP=Dolibarr -> LDAP +LDAPNamingAttribute=Key in LDAP +LDAPSynchronizeUsers=Organization of users in LDAP +LDAPSynchronizeGroups=Organization of groups in LDAP +LDAPSynchronizeContacts=Organization of contacts in LDAP +LDAPSynchronizeMembers=Organization of foundation's members in LDAP +LDAPTypeExample=OpenLdap, Egroupware or Active Directory +LDAPPrimaryServer=Primary server +LDAPSecondaryServer=Secondary server +LDAPServerPort=Server port +LDAPServerPortExample=Default port : 389 +LDAPServerProtocolVersion=Protocol version +LDAPServerUseTLS=Use TLS +LDAPServerUseTLSExample=Your LDAP server use TLS +LDAPServerDn=Server DN +LDAPAdminDn=Administrator DN +LDAPAdminDnExample=Complete DN (ex: cn=admin,dc=example,dc=com) +LDAPPassword=Administrator password +LDAPUserDn=Users' DN +LDAPUserDnExample=Complete DN (ex: ou=users,dc=example,dc=com) +LDAPGroupDn=Groups' DN +LDAPGroupDnExample=Complete DN (ex: ou=groups,dc=example,dc=com) +LDAPServerExample=Server address (ex: localhost, 192.168.0.2, ldaps://ldap.example.com/) +LDAPServerDnExample=Complete DN (ex: dc=example,dc=com) +LDAPPasswordExample=Admin password +LDAPDnSynchroActive=Users and groups synchronization +LDAPDnSynchroActiveExample=LDAP to Dolibarr or Dolibarr to LDAP synchronization +LDAPDnContactActive=Contacts' synchronization +LDAPDnContactActiveYes=Activated synchronization +LDAPDnContactActiveExample=Activated/Unactivated synchronization +LDAPDnMemberActive=Members' synchronization +LDAPDnMemberActiveExample=Activated/Unactivated synchronization +LDAPContactDn=Dolibarr contacts' DN +LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=example,dc=com) +LDAPMemberDn=Dolibarr members DN +LDAPMemberDnExample=Complete DN (ex: ou=members,dc=example,dc=com) +LDAPMemberObjectClassList=List of objectClass +LDAPMemberObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) +LDAPUserObjectClassList=List of objectClass +LDAPUserObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) +LDAPGroupObjectClassList=List of objectClass +LDAPGroupObjectClassListExample=List of objectClass defining record attributes (ex: top,groupOfUniqueNames) +LDAPContactObjectClassList=List of objectClass +LDAPContactObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) +LDAPMemberTypeDn=Dolibarr members type DN +LDAPMemberTypeDnExample=Complete DN (ex: ou=type_members,dc=example,dc=com) +LDAPTestConnect=Test LDAP connection +LDAPTestSynchroContact=Test contacts synchronization +LDAPTestSynchroUser=Test user synchronization +LDAPTestSynchroGroup=Test group synchronization +LDAPTestSynchroMember=Test member synchronization +LDAPTestSearch= Test a LDAP search +LDAPSynchroOK=Synchronization test successful +LDAPSynchroKO=Failed synchronization test +LDAPSynchroKOMayBePermissions=Failed synchronization test. Check that connexion to server is correctly configured and allows LDAP udpates +LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=%s) +LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=%s) +LDAPBindOK=Connect/Authentificate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPBindKO=Connect/Authentificate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPUnbindSuccessfull=Disconnect successful +LDAPUnbindFailed=Disconnect failed +LDAPConnectToDNSuccessfull=Connection to DN (%s) successful +LDAPConnectToDNFailed=Connection to DN (%s) failed +LDAPSetupForVersion3=LDAP server configured for version 3 +LDAPSetupForVersion2=LDAP server configured for version 2 +LDAPDolibarrMapping=Dolibarr Mapping +LDAPLdapMapping=LDAP Mapping +LDAPFieldLoginUnix=Login (unix) +LDAPFieldLoginExample=Example : uid +LDAPFilterConnection=Search filter +LDAPFilterConnectionExample=Example : &(objectClass=inetOrgPerson) +LDAPFieldLoginSamba=Login (samba, activedirectory) +LDAPFieldLoginSambaExample=Example : samaccountname +LDAPFieldFullname=Full name +LDAPFieldFullnameExample=Example : cn +LDAPFieldPassword=Password +LDAPFieldPasswordNotCrypted=Password not crypted +LDAPFieldPasswordCrypted=Password crypted +LDAPFieldPasswordExample=Example : userPassword +LDAPFieldCommonName=Common name +LDAPFieldCommonNameExample=Example : cn +LDAPFieldName=Name +LDAPFieldNameExample=Example : sn +LDAPFieldFirstName=First name +LDAPFieldFirstNameExample=Example : givenName +LDAPFieldMail=Email address +LDAPFieldMailExample=Example : mail +LDAPFieldPhone=Professional phone number +LDAPFieldPhoneExample=Example : telephonenumber +LDAPFieldHomePhone=Personal phone number +LDAPFieldHomePhoneExample=Example : homephone +LDAPFieldMobile=Cellular phone +LDAPFieldMobileExample=Example : mobile +LDAPFieldFax=Fax number +LDAPFieldFaxExample=Example : facsimiletelephonenumber +LDAPFieldAddress=Street +LDAPFieldAddressExample=Example : street +LDAPFieldZip=Zip +LDAPFieldZipExample=Example : postalcode +LDAPFieldTown=Town +LDAPFieldTownExample=Example : l +LDAPFieldCountry=Country +LDAPFieldCountryExample=Example : c +LDAPFieldDescription=Description +LDAPFieldDescriptionExample=Example : description +LDAPFieldGroupMembers= Group members +LDAPFieldGroupMembersExample= Example : uniqueMember +LDAPFieldBirthdate=Birthdate +LDAPFieldBirthdateExample=Example : +LDAPFieldCompany=Company +LDAPFieldCompanyExample=Example : o +LDAPFieldSid=SID +LDAPFieldSidExample=Example : objectsid +LDAPFieldEndLastSubscription=Date of subscription end +LDAPFieldTitle=Post/Function +LDAPFieldTitleExample=Example: title +LDAPParametersAreStillHardCoded=LDAP parameters are still hardcoded (in contact class) +LDAPSetupNotComplete=LDAP setup not complete (go on others tabs) +LDAPNoUserOrPasswordProvidedAccessIsReadOnly=No administrator or password provided. LDAP access will be anonymous and in read only mode. +LDAPDescContact=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr contacts. +LDAPDescUsers=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr users. +LDAPDescGroups=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr groups. +LDAPDescMembers=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr members module. +LDAPDescValues=Example values are designed for OpenLDAP with following loaded schemas: core.schema, cosine.schema, inetorgperson.schema). If you use thoose values and OpenLDAP, modify your LDAP config file slapd.conf to have all thoose schemas loaded. +ForANonAnonymousAccess=For an authenticated access (for a write access for example) +PerfDolibarr=Performance setup/optimizing report +YouMayFindPerfAdviceHere=You will find on this page some checks or advices related to performance. +NotInstalled=Not installed, so your server is not slow down by this. +ApplicativeCache=Applicative cache +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. +MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled. +OPCodeCache=OPCode cache +NoOPCodeCacheFound=No OPCode cache found. May be you use another OPCode cache than XCache or eAccelerator (good), may be you don't have OPCode cache (very bad). +HTTPCacheStaticResources=HTTP cache for static resources (css, img, javascript) +FilesOfTypeCached=Files of type %s are cached by HTTP server +FilesOfTypeNotCached=Files of type %s are not cached by HTTP server +FilesOfTypeCompressed=Files of type %s are compressed by HTTP server +FilesOfTypeNotCompressed=Files of type %s are not compressed by HTTP server +CacheByServer=Cache by server +CacheByClient=Cache by browser +CompressionOfResources=Compression of HTTP responses +TestNotPossibleWithCurrentBrowsers=Such an automatic detection is not possible with current browsers +##### Products ##### +ProductSetup=Products module setup +ServiceSetup=Services module setup +ProductServiceSetup=Products and Services modules setup +NumberOfProductShowInSelect=Max number of products in combos select lists (0=no limit) +ConfirmDeleteProductLineAbility=Confirmation when removing product lines in forms +ModifyProductDescAbility=Personalization of product descriptions in forms +ViewProductDescInFormAbility=Visualization of product descriptions in the forms (otherwise as popup tooltip) +ViewProductDescInThirdpartyLanguageAbility=Visualization of products descriptions in the thirdparty language +UseSearchToSelectProductTooltip=Also if you have a large number of product (> 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=Use a search form to choose a product (rather than a drop-down list). +UseEcoTaxeAbility=Support Eco-Taxe (WEEE) +SetDefaultBarcodeTypeProducts=Default barcode type to use for products +SetDefaultBarcodeTypeThirdParties=Default barcode type to use for third parties +ProductCodeChecker= Module for product code generation and checking (product or service) +ProductOtherConf= Product / Service configuration +##### Syslog ##### +SyslogSetup=Logs module setup +SyslogOutput=Logs outputs +SyslogSyslog=Syslog +SyslogFacility=Facility +SyslogLevel=Level +SyslogSimpleFile=File +SyslogFilename=File name and path +YouCanUseDOL_DATA_ROOT=You can use DOL_DATA_ROOT/dolibarr.log for a log file in Dolibarr "documents" directory. You can set a different path to store this file. +ErrorUnknownSyslogConstant=Constant %s is not a known Syslog constant +OnlyWindowsLOG_USER=Windows only supports LOG_USER +##### Donations ##### +DonationsSetup=Donation module setup +DonationsReceiptModel=Template of donation receipt +##### Barcode ##### +BarcodeSetup=Barcode setup +PaperFormatModule=Print format module +BarcodeEncodeModule=Barcode encoding type +UseBarcodeInProductModule=Use bar codes for products +CodeBarGenerator=Barcode generator +ChooseABarCode=No generator defined +FormatNotSupportedByGenerator=Format not supported by this generator +BarcodeDescEAN8=Barcode of type EAN8 +BarcodeDescEAN13=Barcode of type EAN13 +BarcodeDescUPC=Barcode of type UPC +BarcodeDescISBN=Barcode of type ISBN +BarcodeDescC39=Barcode of type C39 +BarcodeDescC128=Barcode of type C128 +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode +BarcodeInternalEngine=Internal engine +BarCodeNumberManager=Manager to auto define barcode numbers +##### Prelevements ##### +WithdrawalsSetup=Withdrawal module setup +##### ExternalRSS ##### +ExternalRSSSetup=External RSS imports setup +NewRSS=New RSS Feed +RSSUrl=RSS URL +RSSUrlExample=An interesting RSS feed +##### Mailing ##### +MailingSetup=EMailing module setup +MailingEMailFrom=Sender EMail (From) for emails sent by emailing module +MailingEMailError=Return EMail (Errors-to) for emails with errors +MailingDelay=Seconds to wait after sending next message +##### Notification ##### +NotificationSetup=EMail notification module setup +NotificationEMailFrom=Sender EMail (From) for emails sent for notifications +ListOfAvailableNotifications=List of events you can set notification on, for each thirdparty (go into thirdparty card to setup) or by setting a fixed email (List depends on activated modules) +FixedEmailTarget=Fixed email target +##### Sendings ##### +SendingsSetup=Sending module setup +SendingsReceiptModel=Sending receipt model +SendingsNumberingModules=Sendings numbering modules +SendingsAbility=Support shipment sheets for customer deliveries +NoNeedForDeliveryReceipts=In most cases, sendings receipts are used both as sheets for customer deliveries (list of products to send) and sheets that is recevied and signed by customer. So product deliveries receipts is a duplicated feature and is rarely activated. +FreeLegalTextOnShippings=Free text on shipments +##### Deliveries ##### +DeliveryOrderNumberingModules=Products deliveries receipt numbering module +DeliveryOrderModel=Products deliveries receipt model +DeliveriesOrderAbility=Support products deliveries receipts +FreeLegalTextOnDeliveryReceipts=Free text on delivery receipts +##### FCKeditor ##### +AdvancedEditor=Advanced editor +ActivateFCKeditor=Activate advanced editor for: +FCKeditorForCompany=WYSIWIG creation/edition of elements description and note (except products/services) +FCKeditorForProduct=WYSIWIG creation/edition of products/services description and note +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 formating when building PDF files. +FCKeditorForMailing= WYSIWIG creation/edition for mass eMailings (Tools->eMailing) +FCKeditorForUserSignature=WYSIWIG creation/edition of user signature +FCKeditorForMail=WYSIWIG creation/edition for all mail (except Outils->eMailing) +##### OSCommerce 1 ##### +OSCommerceErrorConnectOkButWrongDatabase=Connection succeeded but database doesn't look to be an OSCommerce database (Key %s not found in table %s). +OSCommerceTestOk=Connection to server '%s' on database '%s' with user '%s' successfull. +OSCommerceTestKo1=Connection to server '%s' succeed but database '%s' could not be reached. +OSCommerceTestKo2=Connection to server '%s' with user '%s' failed. +##### Stock ##### +StockSetup=Warehouse module setup +UserWarehouse=Use user personal warehouses +IfYouUsePointOfSaleCheckModule=If you use a Point of Sale module (POS module provided by default or another external module), this setup may be ignored by your Point Of Sale module. Most point of sales modules are designed to create immediatly an invoice and decrease stock by default whatever are options here. So, if you need or not to have a stock decrease when registering a sell from your Point Of Sale, check also your POS module set up. +##### Menu ##### +MenuDeleted=Menu deleted +TreeMenu=Tree menus +Menus=Menus +TreeMenuPersonalized=Personalized menus +NewMenu=New menu +MenuConf=Menus setup +Menu=Selection of menu +MenuHandler=Menu handler +MenuModule=Source module +HideUnauthorizedMenu= Hide unauthorized menus (gray) +DetailId=Id menu +DetailMenuHandler=Menu handler where to show new menu +DetailMenuModule=Module name if menu entry come from a module +DetailType=Type of menu (top or left) +DetailTitre=Menu label or label code for translation +DetailMainmenu=Group for which it belongs (obsolete) +DetailUrl=URL where menu send you (Absolute URL link or external link with http://) +DetailLeftmenu=Display condition or not (obsolete) +DetailEnabled=Condition to show or not entry +DetailRight=Condition to display unauthorized grey menus +DetailLangs=Lang file name for label code translation +DetailUser=Intern / Extern / All +Target=Target +DetailTarget=Target for links (_blank top open a new window) +DetailLevel=Level (-1:top menu, 0:header menu, >0 menu and sub menu) +ModifMenu=Menu change +DeleteMenu=Delete menu entry +ConfirmDeleteMenu=Are you sure you want to delete menu entry %s ? +DeleteLine=Delete line +ConfirmDeleteLine=Are you sure you want to delete this line ? +##### Tax ##### +TaxSetup=Taxes, social contributions and dividends module setup +OptionVatMode=VAT due +OptionVATDefault=Cash basis +OptionVATDebitOption=Accrual basis +OptionVatDefaultDesc=VAT is due:
- on delivery for goods (we use invoice date)
- on payments for services +OptionVatDebitOptionDesc=VAT is due:
- on delivery for goods (we use invoice date)
- on invoice (debit) for services +SummaryOfVatExigibilityUsedByDefault=Time of VAT exigibility by default according to chosen option: +OnDelivery=On delivery +OnPayment=On payment +OnInvoice=On invoice +SupposedToBePaymentDate=Payment date used +SupposedToBeInvoiceDate=Invoice date used +Buy=Buy +Sell=Sell +InvoiceDateUsed=Invoice date used +YourCompanyDoesNotUseVAT=Your company has been defined to not use VAT (Home - Setup - Company/Foundation), so there is no VAT options to setup. +AccountancyCode=Accountancy Code +AccountancyCodeSell=Sale account. code +AccountancyCodeBuy=Purchase account. code +##### Agenda ##### +AgendaSetup=Events and agenda module setup +PasswordTogetVCalExport=Key to authorize export link +PastDelayVCalExport=Do not export event older than +AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionary -> Type of agenda events) +AGENDA_DEFAULT_FILTER_TYPE=Set automatically this type of event into search filter of agenda view +AGENDA_DEFAULT_FILTER_STATUS=Set automatically this status for events into search filter of agenda view +AGENDA_DEFAULT_VIEW=Which tab do you want to open by default when selecting menu Agenda +##### ClickToDial ##### +ClickToDialDesc=This module allows to add an icon after phone numbers. A click on this icon will call a server with a particular URL you define below. This can be used to call a call center system from Dolibarr that can call the phone number on a SIP system for example. +##### Point Of Sales (CashDesk) ##### +CashDesk=Point of sales +CashDeskSetup=Point of sales module setup +CashDeskThirdPartyForSell=Default generic third party to use for sells +CashDeskBankAccountForSell=Default account to use to receive cash payments +CashDeskBankAccountForCheque= Default account to use to receive payments by cheque +CashDeskBankAccountForCB= Default account to use to receive payments by credit cards +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). +CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease +StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management +CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. +##### Bookmark ##### +BookmarkSetup=Bookmark module setup +BookmarkDesc=This module allows you to manage bookmarks. You can also add shortcuts to any Dolibarr pages or externale web sites on your left menu. +NbOfBoomarkToShow=Maximum number of bookmarks to show in left menu +##### WebServices ##### +WebServicesSetup=Webservices module setup +WebServicesDesc=By enabling this module, Dolibarr become a web service server to provide miscellaneous web services. +WSDLCanBeDownloadedHere=WSDL descriptor files of provided services can be download here +EndPointIs=SOAP clients must send their requests to the Dolibarr endpoint available at Url +##### Bank ##### +BankSetupModule=Bank module setup +FreeLegalTextOnChequeReceipts=Free text on cheque receipts +BankOrderShow=Display order of bank accounts for countries using "detailed bank number" +BankOrderGlobal=General +BankOrderGlobalDesc=General display order +BankOrderES=Spanish +BankOrderESDesc=Spanish display order +##### Multicompany ##### +MultiCompanySetup=Multi-company module setup +##### Suppliers ##### +SuppliersSetup=Supplier module setup +SuppliersCommandModel=Complete template of supplier order (logo...) +SuppliersInvoiceModel=Complete template of supplier invoice (logo...) +SuppliersInvoiceNumberingModel=Supplier invoices numbering models +##### GeoIPMaxmind ##### +GeoIPMaxmindSetup=GeoIP Maxmind module setup +PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.
Examples:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat +NoteOnPathLocation=Note that your ip to country data file must be inside a directory your PHP can read (Check your PHP open_basedir setup and filesystem permissions). +YouCanDownloadFreeDatFileTo=You can download a free demo version of the Maxmind GeoIP country file at %s. +YouCanDownloadAdvancedDatFileTo=You can also download a more complete version, with updates, of the Maxmind GeoIP country file at %s. +TestGeoIPResult=Test of a conversion IP -> country +##### Projects ##### +ProjectsNumberingModules=Projects numbering module +ProjectsSetup=Project module setup +ProjectsModelModule=Project reports document model +TasksNumberingModules=Tasks numbering module +TaskModelModule=Tasks reports document model +##### ECM (GED) ##### +ECMSetup = GED Setup +ECMAutoTree = Automatic tree folder and document +##### Fiscal Year ##### +FiscalYears=Fiscal years +FiscalYear=Fiscal year +FiscalYearCard=Fiscal year card +NewFiscalYear=New fiscal year +EditFiscalYear=Edit fiscal year +OpenFiscalYear=Open fiscal year +CloseFiscalYear=Close fiscal year +DeleteFiscalYear=Delete fiscal year +ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ? +Opened=Opened +Closed=Closed +AlwaysEditable=Can always be edited +MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) +NbMajMin=Minimum number of uppercase characters +NbNumMin=Minimum number of numeric characters +NbSpeMin=Minimum number of special characters +NbIteConsecutive=Maximum number of repeating same characters +NoAmbiCaracAutoGeneration=Do not use ambiguous characters ("1","l","i","|","0","O") for automatic generation +SalariesSetup=Setup of module salaries +SortOrder=Sort order +Format=Format +TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type +IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/kn_IN/agenda.lang b/htdocs/langs/kn_IN/agenda.lang new file mode 100644 index 00000000000..04e2ae30de8 --- /dev/null +++ b/htdocs/langs/kn_IN/agenda.lang @@ -0,0 +1,93 @@ +# Dolibarr language file - Source file is en_US - agenda +IdAgenda=ID event +Actions=Events +ActionsArea=Events area (Actions and tasks) +Agenda=Agenda +Agendas=Agendas +Calendar=Calendar +Calendars=Calendars +LocalAgenda=Internal calendar +ActionsOwnedBy=Event owned by +AffectedTo=Assigned to +DoneBy=Done by +Event=Event +Events=Events +EventsNb=Number of events +MyEvents=My events +OtherEvents=Other events +ListOfActions=List of events +Location=Location +EventOnFullDay=Event on all day(s) +SearchAnAction= Search an event/task +MenuToDoActions=All incomplete events +MenuDoneActions=All terminated events +MenuToDoMyActions=My incomplete events +MenuDoneMyActions=My terminated events +ListOfEvents=List of events (internal calendar) +ActionsAskedBy=Events reported by +ActionsToDoBy=Events assigned to +ActionsDoneBy=Events done by +ActionsForUser=Events for user +ActionsForUsersGroup=Events for all users of group +ActionAssignedTo=Event assigned to +AllMyActions= All my events/tasks +AllActions= All events/tasks +ViewList=List view +ViewCal=Month view +ViewDay=Day view +ViewWeek=Week view +ViewPerUser=Per user view +ViewWithPredefinedFilters= View with predefined filters +AutoActions= Automatic filling +AgendaAutoActionDesc= Define here events for which you want Dolibarr to create automatically an event in agenda. If nothing is checked (by default), only manual actions will be included in agenda. +AgendaSetupOtherDesc= This page provides options to allow export of your Dolibarr events into an external calendar (thunderbird, google calendar, ...) +AgendaExtSitesDesc=This page allows to declare external sources of calendars to see their events into Dolibarr agenda. +ActionsEvents=Events for which Dolibarr will create an action in agenda automatically +PropalValidatedInDolibarr=Proposal %s validated +InvoiceValidatedInDolibarr=Invoice %s validated +InvoiceValidatedInDolibarrFromPos=Invoice %s validated from POS +InvoiceBackToDraftInDolibarr=Invoice %s go back to draft status +InvoiceDeleteDolibarr=Invoice %s deleted +OrderValidatedInDolibarr= Order %s validated +OrderApprovedInDolibarr=Order %s approved +OrderRefusedInDolibarr=Order %s refused +OrderBackToDraftInDolibarr=Order %s go back to draft status +OrderCanceledInDolibarr=Order %s canceled +ProposalSentByEMail=Commercial proposal %s sent by EMail +OrderSentByEMail=Customer order %s sent by EMail +InvoiceSentByEMail=Customer invoice %s sent by EMail +SupplierOrderSentByEMail=Supplier order %s sent by EMail +SupplierInvoiceSentByEMail=Supplier invoice %s sent by EMail +ShippingSentByEMail=Shipment %s sent by EMail +ShippingValidated= Shipment %s validated +InterventionSentByEMail=Intervention %s sent by EMail +NewCompanyToDolibarr= Third party created +DateActionPlannedStart= Planned start date +DateActionPlannedEnd= Planned end date +DateActionDoneStart= Real start date +DateActionDoneEnd= Real end date +DateActionStart= Start date +DateActionEnd= End date +AgendaUrlOptions1=You can also add following parameters to filter output: +AgendaUrlOptions2=login=%s to restrict output to actions created by or assigned to user %s. +AgendaUrlOptions3=logina=%s to restrict output to actions owned by a user %s. +AgendaUrlOptions4=logint=%s to restrict output to actions assigned to user %s. +AgendaUrlOptionsProject=project=PROJECT_ID to restrict output to actions associated to project PROJECT_ID. +AgendaShowBirthdayEvents=Show birthday's contacts +AgendaHideBirthdayEvents=Hide birthday's contacts +Busy=Busy +ExportDataset_event1=List of agenda events +DefaultWorkingDays=Default working days range in week (Example: 1-5, 1-6) +DefaultWorkingHours=Default working hours in day (Example: 9-18) +# External Sites ical +ExportCal=Export calendar +ExtSites=Import external calendars +ExtSitesEnableThisTool=Show external calendars (defined into global setup) into agenda. Does not affect external calendars defined by users. +ExtSitesNbOfAgenda=Number of calendars +AgendaExtNb=Calendar nb %s +ExtSiteUrlAgenda=URL to access .ical file +ExtSiteNoLabel=No Description +WorkingTimeRange=Working time range +WorkingDaysRange=Working days range +AddEvent=Create event +MyAvailability=My availability diff --git a/htdocs/langs/kn_IN/banks.lang b/htdocs/langs/kn_IN/banks.lang new file mode 100644 index 00000000000..a2306950fb4 --- /dev/null +++ b/htdocs/langs/kn_IN/banks.lang @@ -0,0 +1,165 @@ +# Dolibarr language file - Source file is en_US - banks +Bank=Bank +Banks=Banks +MenuBankCash=Bank/Cash +MenuSetupBank=Bank/Cash setup +BankName=Bank name +FinancialAccount=Account +FinancialAccounts=Accounts +BankAccount=Bank account +BankAccounts=Bank accounts +ShowAccount=Show Account +AccountRef=Financial account ref +AccountLabel=Financial account label +CashAccount=Cash account +CashAccounts=Cash accounts +MainAccount=Main account +CurrentAccount=Current account +CurrentAccounts=Current accounts +SavingAccount=Savings account +SavingAccounts=Savings accounts +ErrorBankLabelAlreadyExists=Financial account label already exists +BankBalance=Balance +BankBalanceBefore=Balance before +BankBalanceAfter=Balance after +BalanceMinimalAllowed=Minimum allowed balance +BalanceMinimalDesired=Minimum desired balance +InitialBankBalance=Initial balance +EndBankBalance=End balance +CurrentBalance=Current balance +FutureBalance=Future balance +ShowAllTimeBalance=Show balance from start +AllTime=From start +Reconciliation=Reconciliation +RIB=Bank Account Number +IBAN=IBAN number +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid +BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid +StandingOrders=Standing orders +StandingOrder=Standing order +Withdrawals=Withdrawals +Withdrawal=Withdrawal +AccountStatement=Account statement +AccountStatementShort=Statement +AccountStatements=Account statements +LastAccountStatements=Last account statements +Rapprochement=Reconciliate +IOMonthlyReporting=Monthly reporting +BankAccountDomiciliation=Account address +BankAccountCountry=Account country +BankAccountOwner=Account owner name +BankAccountOwnerAddress=Account owner address +RIBControlError=Integrity check of values fails. This means information for this account number are not complete or wrong (check country, numbers and IBAN). +CreateAccount=Create account +NewAccount=New account +NewBankAccount=New bank account +NewFinancialAccount=New financial account +MenuNewFinancialAccount=New financial account +NewCurrentAccount=New current account +NewSavingAccount=New savings account +NewCashAccount=New cash account +EditFinancialAccount=Edit account +AccountSetup=Financial accounts setup +SearchBankMovement=Search bank movement +Debts=Debts +LabelBankCashAccount=Bank or cash label +AccountType=Account type +BankType0=Savings account +BankType1=Current or credit card account +BankType2=Cash account +IfBankAccount=If bank account +AccountsArea=Accounts area +AccountCard=Account card +DeleteAccount=Delete account +ConfirmDeleteAccount=Are you sure you want to delete this account ? +Account=Account +ByCategories=By categories +ByRubriques=By categories +BankTransactionByCategories=Bank transactions by categories +BankTransactionForCategory=Bank transactions for category %s +RemoveFromRubrique=Remove link with category +RemoveFromRubriqueConfirm=Are you sure you want to remove link between the transaction and the category ? +ListBankTransactions=List of bank transactions +IdTransaction=Transaction ID +BankTransactions=Bank transactions +SearchTransaction=Search transaction +ListTransactions=List transactions +ListTransactionsByCategory=List transaction/category +TransactionsToConciliate=Transactions to reconcile +Conciliable=Can be reconciled +Conciliate=Reconcile +Conciliation=Reconciliation +ConciliationForAccount=Reconcile this account +IncludeClosedAccount=Include closed accounts +OnlyOpenedAccount=Only opened accounts +AccountToCredit=Account to credit +AccountToDebit=Account to debit +DisableConciliation=Disable reconciliation feature for this account +ConciliationDisabled=Reconciliation feature disabled +StatusAccountOpened=Opened +StatusAccountClosed=Closed +AccountIdShort=Number +EditBankRecord=Edit record +LineRecord=Transaction +AddBankRecord=Add transaction +AddBankRecordLong=Add transaction manually +ConciliatedBy=Reconciled by +DateConciliating=Reconcile date +BankLineConciliated=Transaction reconciled +CustomerInvoicePayment=Customer payment +CustomerInvoicePaymentBack=Customer payment back +SupplierInvoicePayment=Supplier payment +WithdrawalPayment=Withdrawal payment +SocialContributionPayment=Social contribution payment +FinancialAccountJournal=Financial account journal +BankTransfer=Bank transfer +BankTransfers=Bank transfers +TransferDesc=Transfer from one account to another one, Dolibarr will write two records (a debit in source account and a credit in target account, of the same amount. The same label and date will be used for this transaction) +TransferFrom=From +TransferTo=To +TransferFromToDone=A transfer from %s to %s of %s %s has been recorded. +CheckTransmitter=Transmitter +ValidateCheckReceipt=Validate this check receipt ? +ConfirmValidateCheckReceipt=Are you sure you want to validate this check receipt, no change will be possible once this is done ? +DeleteCheckReceipt=Delete this check receipt ? +ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt ? +BankChecks=Bank checks +BankChecksToReceipt=Checks waiting for deposit +ShowCheckReceipt=Show check deposit receipt +NumberOfCheques=Nb of check +DeleteTransaction=Delete transaction +ConfirmDeleteTransaction=Are you sure you want to delete this transaction ? +ThisWillAlsoDeleteBankRecord=This will also delete generated bank transactions +BankMovements=Movements +CashBudget=Cash budget +PlannedTransactions=Planned transactions +Graph=Graphics +ExportDataset_banque_1=Bank transactions and account statement +ExportDataset_banque_2=Deposit slip +TransactionOnTheOtherAccount=Transaction on the other account +TransactionWithOtherAccount=Account transfer +PaymentNumberUpdateSucceeded=Payment number updated succesfully +PaymentNumberUpdateFailed=Payment number could not be updated +PaymentDateUpdateSucceeded=Payment date update succesfully +PaymentDateUpdateFailed=Payment date could not be updated +Transactions=Transactions +BankTransactionLine=Bank transaction +AllAccounts=All bank/cash accounts +BackToAccount=Back to account +ShowAllAccounts=Show for all accounts +FutureTransaction=Transaction in futur. No way to conciliate. +SelectChequeTransactionAndGenerate=Select/filter checks to include into the check deposit receipt and click on "Create". +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD +EventualyAddCategory=Eventually, specify a category in which to classify the records +ToConciliate=To conciliate? +ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click +BankDashboard=Bank accounts summary +DefaultRIB=Default BAN +AllRIB=All BAN +LabelRIB=BAN Label +NoBANRecord=No BAN record +DeleteARib=Delete BAN record +ConfirmDeleteRib=Are you sure you want to delete this BAN record ? diff --git a/htdocs/langs/kn_IN/bills.lang b/htdocs/langs/kn_IN/bills.lang new file mode 100644 index 00000000000..7232f00e91c --- /dev/null +++ b/htdocs/langs/kn_IN/bills.lang @@ -0,0 +1,430 @@ +# Dolibarr language file - Source file is en_US - bills +Bill=Invoice +Bills=Invoices +BillsCustomers=Customers invoices +BillsCustomer=Customers invoice +BillsSuppliers=Suppliers invoices +BillsCustomersUnpaid=Unpaid customers invoices +BillsCustomersUnpaidForCompany=Unpaid customer's invoices for %s +BillsSuppliersUnpaid=Unpaid supplier's invoices +BillsSuppliersUnpaidForCompany=Unpaid supplier's invoices for %s +BillsLate=Late payments +BillsStatistics=Customers invoices statistics +BillsStatisticsSuppliers=Suppliers invoices statistics +DisabledBecauseNotErasable=Disabled because can not be erased +InvoiceStandard=Standard invoice +InvoiceStandardAsk=Standard invoice +InvoiceStandardDesc=This kind of invoice is the common invoice. +InvoiceDeposit=Deposit invoice +InvoiceDepositAsk=Deposit invoice +InvoiceDepositDesc=This kind of invoice is done when a deposit has been received. +InvoiceProForma=Proforma invoice +InvoiceProFormaAsk=Proforma invoice +InvoiceProFormaDesc=Proforma invoice is an image of a true invoice but has no accountancy value. +InvoiceReplacement=Replacement invoice +InvoiceReplacementAsk=Replacement invoice for invoice +InvoiceReplacementDesc=Replacement invoice is used to cancel and replace completely an invoice with no payment already received.

Note: Only invoices with no payment on it can be replaced. If the invoice you replace is not yet closed, it will be automatically closed to 'abandoned'. +InvoiceAvoir=Credit note +InvoiceAvoirAsk=Credit note to correct invoice +InvoiceAvoirDesc=The credit note is a negative invoice used to solve fact that an invoice has an amount that differs than amount really paid (because customer paid too much by error, or will not paid completely since he returned some products for example). +invoiceAvoirWithLines=Create Credit Note with lines from the origin invoice +invoiceAvoirWithPaymentRestAmount=Create Credit Note with remaining unpaid of origin invoice +invoiceAvoirLineWithPaymentRestAmount=Credit Note for remaining unpaid amount +ReplaceInvoice=Replace invoice %s +ReplacementInvoice=Replacement invoice +ReplacedByInvoice=Replaced by invoice %s +ReplacementByInvoice=Replaced by invoice +CorrectInvoice=Correct invoice %s +CorrectionInvoice=Correction invoice +UsedByInvoice=Used to pay invoice %s +ConsumedBy=Consumed by +NotConsumed=Not consumed +NoReplacableInvoice=No replacable invoices +NoInvoiceToCorrect=No invoice to correct +InvoiceHasAvoir=Corrected by one or several invoices +CardBill=Invoice card +PredefinedInvoices=Predefined Invoices +Invoice=Invoice +Invoices=Invoices +InvoiceLine=Invoice line +InvoiceCustomer=Customer invoice +CustomerInvoice=Customer invoice +CustomersInvoices=Customers invoices +SupplierInvoice=Supplier invoice +SuppliersInvoices=Suppliers invoices +SupplierBill=Supplier invoice +SupplierBills=suppliers invoices +Payment=Payment +PaymentBack=Payment back +Payments=Payments +PaymentsBack=Payments back +PaidBack=Paid back +DatePayment=Payment date +DeletePayment=Delete payment +ConfirmDeletePayment=Are you sure you want to delete this payment ? +ConfirmConvertToReduc=Do you want to convert this credit note or deposit into an absolute discount ?
The amount will so be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. +SupplierPayments=Suppliers payments +ReceivedPayments=Received payments +ReceivedCustomersPayments=Payments received from customers +PayedSuppliersPayments=Payments payed to suppliers +ReceivedCustomersPaymentsToValid=Received customers payments to validate +PaymentsReportsForYear=Payments reports for %s +PaymentsReports=Payments reports +PaymentsAlreadyDone=Payments already done +PaymentsBackAlreadyDone=Payments back already done +PaymentRule=Payment rule +PaymentMode=Payment type +PaymentConditions=Payment term +PaymentConditionsShort=Payment term +PaymentAmount=Payment amount +ValidatePayment=Validate payment +PaymentHigherThanReminderToPay=Payment higher than reminder to pay +HelpPaymentHigherThanReminderToPay=Attention, the payment amount of one or more bills is higher than the rest to pay.
Edit your entry, otherwise confirm and think about creating a credit note of the excess received for each overpaid invoices. +HelpPaymentHigherThanReminderToPaySupplier=Attention, the payment amount of one or more bills is higher than the rest to pay.
Edit your entry, otherwise confirm. +ClassifyPaid=Classify 'Paid' +ClassifyPaidPartially=Classify 'Paid partially' +ClassifyCanceled=Classify 'Abandoned' +ClassifyClosed=Classify 'Closed' +ClassifyUnBilled=Classify 'Unbilled' +CreateBill=Create Invoice +AddBill=Create invoice or credit note +AddToDraftInvoices=Add to draft invoice +DeleteBill=Delete invoice +SearchACustomerInvoice=Search for a customer invoice +SearchASupplierInvoice=Search for a supplier invoice +CancelBill=Cancel an invoice +SendRemindByMail=Send reminder by EMail +DoPayment=Do payment +DoPaymentBack=Do payment back +ConvertToReduc=Convert into future discount +EnterPaymentReceivedFromCustomer=Enter payment received from customer +EnterPaymentDueToCustomer=Make payment due to customer +DisabledBecauseRemainderToPayIsZero=Disabled because remaining unpaid is zero +Amount=Amount +PriceBase=Price base +BillStatus=Invoice status +BillStatusDraft=Draft (needs to be validated) +BillStatusPaid=Paid +BillStatusPaidBackOrConverted=Paid or converted into discount +BillStatusConverted=Paid (ready for final invoice) +BillStatusCanceled=Abandoned +BillStatusValidated=Validated (needs to be paid) +BillStatusStarted=Started +BillStatusNotPaid=Not paid +BillStatusClosedUnpaid=Closed (unpaid) +BillStatusClosedPaidPartially=Paid (partially) +BillShortStatusDraft=Draft +BillShortStatusPaid=Paid +BillShortStatusPaidBackOrConverted=Processed +BillShortStatusConverted=Processed +BillShortStatusCanceled=Abandoned +BillShortStatusValidated=Validated +BillShortStatusStarted=Started +BillShortStatusNotPaid=Not paid +BillShortStatusClosedUnpaid=Closed +BillShortStatusClosedPaidPartially=Paid (partially) +PaymentStatusToValidShort=To validate +ErrorVATIntraNotConfigured=Intracommunautary VAT number not yet defined +ErrorNoPaiementModeConfigured=No default payment mode defined. Go to Invoice module setup to fix this. +ErrorCreateBankAccount=Create a bank account, then go to Setup panel of Invoice module to define payment modes +ErrorBillNotFound=Invoice %s does not exist +ErrorInvoiceAlreadyReplaced=Error, you try to validate an invoice to replace invoice %s. But this one has already been replaced by invoice %s. +ErrorDiscountAlreadyUsed=Error, discount already used +ErrorInvoiceAvoirMustBeNegative=Error, correct invoice must have a negative amount +ErrorInvoiceOfThisTypeMustBePositive=Error, this type of invoice must have a positive amount +ErrorCantCancelIfReplacementInvoiceNotValidated=Error, can't cancel an invoice that has been replaced by another invoice that is still in draft status +BillFrom=From +BillTo=To +ActionsOnBill=Actions on invoice +NewBill=New invoice +LastBills=Last %s invoices +LastCustomersBills=Last %s customers invoices +LastSuppliersBills=Last %s suppliers invoices +AllBills=All invoices +OtherBills=Other invoices +DraftBills=Draft invoices +CustomersDraftInvoices=Customers draft invoices +SuppliersDraftInvoices=Suppliers draft invoices +Unpaid=Unpaid +ConfirmDeleteBill=Are you sure you want to delete this invoice ? +ConfirmValidateBill=Are you sure you want to validate this invoice with reference %s ? +ConfirmUnvalidateBill=Are you sure you want to change invoice %s to draft status ? +ConfirmClassifyPaidBill=Are you sure you want to change invoice %s to status paid ? +ConfirmCancelBill=Are you sure you want to cancel invoice %s ? +ConfirmCancelBillQuestion=Why do you want to classify this invoice 'abandoned' ? +ConfirmClassifyPaidPartially=Are you sure you want to change invoice %s to status paid ? +ConfirmClassifyPaidPartiallyQuestion=This invoice has not been paid completely. What are reasons for you to close this invoice ? +ConfirmClassifyPaidPartiallyReasonAvoir=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I regularise the VAT with a credit note. +ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I accept to lose the VAT on this discount. +ConfirmClassifyPaidPartiallyReasonDiscountVat=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I recover the VAT on this discount without a credit note. +ConfirmClassifyPaidPartiallyReasonBadCustomer=Bad customer +ConfirmClassifyPaidPartiallyReasonProductReturned=Products partially returned +ConfirmClassifyPaidPartiallyReasonOther=Amount abandoned for other reason +ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=This choice is possible if your invoice have been provided with suitable comment. (Example «Only the tax corresponding to the price that have been actually paid gives rights to deduction») +ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=In some countries, this choice might be possible only if your invoice contains correct note. +ConfirmClassifyPaidPartiallyReasonAvoirDesc=Use this choice if all other does not suit +ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=A bad customer is a customer that refuse to pay his debt. +ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=This choice is used when payment is not complete because some of products were returned +ConfirmClassifyPaidPartiallyReasonOtherDesc=Use this choice if all other does not suit, 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=Other +ConfirmClassifyAbandonReasonOtherDesc=This choice will be used in all other cases. For example because you plan to create a replacing invoice. +ConfirmCustomerPayment=Do you confirm this payment input for %s %s ? +ConfirmSupplierPayment=Do you confirm this payment input for %s %s ? +ConfirmValidatePayment=Are you sure you want to validate this payment ? No change can be made once payment is validated. +ValidateBill=Validate invoice +UnvalidateBill=Unvalidate invoice +NumberOfBills=Nb of invoices +NumberOfBillsByMonth=Nb of invoices by month +AmountOfBills=Amount of invoices +AmountOfBillsByMonthHT=Amount of invoices by month (net of tax) +ShowSocialContribution=Show social contribution +ShowBill=Show invoice +ShowInvoice=Show invoice +ShowInvoiceReplace=Show replacing invoice +ShowInvoiceAvoir=Show credit note +ShowInvoiceDeposit=Show deposit invoice +ShowPayment=Show payment +File=File +AlreadyPaid=Already paid +AlreadyPaidBack=Already paid back +AlreadyPaidNoCreditNotesNoDeposits=Already paid (without credit notes and deposits) +Abandoned=Abandoned +RemainderToPay=Remaining unpaid +RemainderToTake=Remaining amount to take +RemainderToPayBack=Remaining amount to pay back +Rest=Pending +AmountExpected=Amount claimed +ExcessReceived=Excess received +EscompteOffered=Discount offered (payment before term) +SendBillRef=Submission of invoice %s +SendReminderBillRef=Submission of invoice %s (reminder) +StandingOrders=Standing orders +StandingOrder=Standing order +NoDraftBills=No draft invoices +NoOtherDraftBills=No other draft invoices +NoDraftInvoices=No draft invoices +RefBill=Invoice ref +ToBill=To bill +RemainderToBill=Remainder to bill +SendBillByMail=Send invoice by email +SendReminderBillByMail=Send reminder by email +RelatedCommercialProposals=Related commercial proposals +MenuToValid=To valid +DateMaxPayment=Payment due before +DateEcheance=Due date limit +DateInvoice=Invoice date +NoInvoice=No invoice +ClassifyBill=Classify invoice +SupplierBillsToPay=Suppliers invoices to pay +CustomerBillsUnpaid=Unpaid customers invoices +DispenseMontantLettres=The written invoices through mecanographic procedures are dispensed by the order in letters +NonPercuRecuperable=Non-recoverable +SetConditions=Set payment terms +SetMode=Set payment mode +Billed=Billed +RepeatableInvoice=Template invoice +RepeatableInvoices=Template invoices +Repeatable=Template +Repeatables=Templates +ChangeIntoRepeatableInvoice=Convert into template invoice +CreateRepeatableInvoice=Create template invoice +CreateFromRepeatableInvoice=Create from template invoice +CustomersInvoicesAndInvoiceLines=Customer invoices and invoice's lines +CustomersInvoicesAndPayments=Customer invoices and payments +ExportDataset_invoice_1=Customer invoices list and invoice's lines +ExportDataset_invoice_2=Customer invoices and payments +ProformaBill=Proforma Bill: +Reduction=Reduction +ReductionShort=Reduc. +Reductions=Reductions +ReductionsShort=Reduc. +Discount=Discount +Discounts=Discounts +AddDiscount=Create discount +AddRelativeDiscount=Create relative discount +EditRelativeDiscount=Edit relative discount +AddGlobalDiscount=Create absolute discount +EditGlobalDiscounts=Edit absolute discounts +AddCreditNote=Create credit note +ShowDiscount=Show discount +ShowReduc=Show the deduction +RelativeDiscount=Relative discount +GlobalDiscount=Global discount +CreditNote=Credit note +CreditNotes=Credit notes +Deposit=Deposit +Deposits=Deposits +DiscountFromCreditNote=Discount from credit note %s +DiscountFromDeposit=Payments from deposit invoice %s +AbsoluteDiscountUse=This kind of credit can be used on invoice before its validation +CreditNoteDepositUse=Invoice must be validated to use this king of credits +NewGlobalDiscount=New absolute discount +NewRelativeDiscount=New relative discount +NoteReason=Note/Reason +ReasonDiscount=Reason +DiscountOfferedBy=Granted by +DiscountStillRemaining=Discounts still remaining +DiscountAlreadyCounted=Discounts already counted +BillAddress=Bill address +HelpEscompte=This discount is a discount granted to customer because its payment was made before term. +HelpAbandonBadCustomer=This amount has been abandoned (customer said to be a bad customer) and is considered as an exceptional loose. +HelpAbandonOther=This amount has been abandoned since it was an error (wrong customer or invoice replaced by an other for example) +IdSocialContribution=Social contribution id +PaymentId=Payment id +InvoiceId=Invoice id +InvoiceRef=Invoice ref. +InvoiceDateCreation=Invoice creation date +InvoiceStatus=Invoice status +InvoiceNote=Invoice note +InvoicePaid=Invoice paid +PaymentNumber=Payment number +RemoveDiscount=Remove discount +WatermarkOnDraftBill=Watermark on draft invoices (nothing if empty) +InvoiceNotChecked=No invoice selected +CloneInvoice=Clone invoice +ConfirmCloneInvoice=Are you sure you want to clone this invoice %s ? +DisabledBecauseReplacedInvoice=Action disabled because invoice has been replaced +DescTaxAndDividendsArea=This area presents a summary of all payments made for special expenses. Only records with payment during the fixed year are included here. +NbOfPayments=Nb of payments +SplitDiscount=Split discount in two +ConfirmSplitDiscount=Are you sure you want to split this discount of %s %s into 2 lower discounts ? +TypeAmountOfEachNewDiscount=Input amount for each of two parts : +TotalOfTwoDiscountMustEqualsOriginal=Total of two new discount must be equal to original discount amount. +ConfirmRemoveDiscount=Are you sure you want to remove this discount ? +RelatedBill=Related invoice +RelatedBills=Related invoices +LatestRelatedBill=Latest related invoice +WarningBillExist=Warning, one or more invoice already exist + +# PaymentConditions +PaymentConditionShortRECEP=Immediate +PaymentConditionRECEP=Immediate +PaymentConditionShort30D=30 days +PaymentCondition30D=30 days +PaymentConditionShort30DENDMONTH=30 days end of month +PaymentCondition30DENDMONTH=30 days end of month +PaymentConditionShort60D=60 days +PaymentCondition60D=60 days +PaymentConditionShort60DENDMONTH=60 days end of month +PaymentCondition60DENDMONTH=60 days end of month +PaymentConditionShortPT_DELIVERY=Delivery +PaymentConditionPT_DELIVERY=On delivery +PaymentConditionShortPT_ORDER=On order +PaymentConditionPT_ORDER=On order +PaymentConditionShortPT_5050=50-50 +PaymentConditionPT_5050=50%% in advance, 50%% on delivery +FixAmount=Fix amount +VarAmount=Variable amount (%% tot.) +# PaymentType +PaymentTypeVIR=Bank deposit +PaymentTypeShortVIR=Bank deposit +PaymentTypePRE=Bank's order +PaymentTypeShortPRE=Bank's order +PaymentTypeLIQ=Cash +PaymentTypeShortLIQ=Cash +PaymentTypeCB=Credit card +PaymentTypeShortCB=Credit card +PaymentTypeCHQ=Check +PaymentTypeShortCHQ=Check +PaymentTypeTIP=TIP +PaymentTypeShortTIP=TIP +PaymentTypeVAD=On line payment +PaymentTypeShortVAD=On line payment +PaymentTypeTRA=Bill payment +PaymentTypeShortTRA=Bill +BankDetails=Bank details +BankCode=Bank code +DeskCode=Desk code +BankAccountNumber=Account number +BankAccountNumberKey=Key +Residence=Domiciliation +IBANNumber=IBAN number +IBAN=IBAN +BIC=BIC/SWIFT +BICNumber=BIC/SWIFT number +ExtraInfos=Extra infos +RegulatedOn=Regulated on +ChequeNumber=Check N° +ChequeOrTransferNumber=Check/Transfer N° +ChequeMaker=Check transmitter +ChequeBank=Bank of Check +CheckBank=Check +NetToBePaid=Net to be paid +PhoneNumber=Tel +FullPhoneNumber=Telephone +TeleFax=Fax +PrettyLittleSentence=Accept the amount of payments due by checks issued in my name as a Member of an accounting association approved by the Fiscal Administration. +IntracommunityVATNumber=Intracommunity number of VAT +PaymentByChequeOrderedTo=Check payment (including tax) are payable to %s send to +PaymentByChequeOrderedToShort=Check payment (including tax) are payable to +SendTo=sent to +PaymentByTransferOnThisBankAccount=Payment by transfer on the following bank account +VATIsNotUsedForInvoice=* Non applicable VAT art-293B of CGI +LawApplicationPart1=By application of the law 80.335 of 12/05/80 +LawApplicationPart2=the goods remain the property of +LawApplicationPart3=the seller until the complete cashing of +LawApplicationPart4=their price. +LimitedLiabilityCompanyCapital=SARL with Capital of +UseLine=Apply +UseDiscount=Use discount +UseCredit=Use credit +UseCreditNoteInInvoicePayment=Reduce amount to pay with this credit +MenuChequeDeposits=Checks deposits +MenuCheques=Checks +MenuChequesReceipts=Checks receipts +NewChequeDeposit=New deposit +ChequesReceipts=Checks receipts +ChequesArea=Checks deposits area +ChequeDeposits=Checks deposits +Cheques=Checks +CreditNoteConvertedIntoDiscount=This credit note or deposit invoice has been converted into %s +UsBillingContactAsIncoiveRecipientIfExist=Use customer billing contact address instead of third party address as recipient for invoices +ShowUnpaidAll=Show all unpaid invoices +ShowUnpaidLateOnly=Show late unpaid invoices only +PaymentInvoiceRef=Payment invoice %s +ValidateInvoice=Validate invoice +Cash=Cash +Reported=Delayed +DisabledBecausePayments=Not possible since there are some payments +CantRemovePaymentWithOneInvoicePaid=Can't remove payment since there is at least one invoice classified paid +ExpectedToPay=Expected payment +PayedByThisPayment=Paid by this payment +ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid. +ClosePaidCreditNotesAutomatically=Classify "Paid" all credit notes entirely paid back. +AllCompletelyPayedInvoiceWillBeClosed=All invoice with no remain to pay will be automatically closed to status "Paid". +ToMakePayment=Pay +ToMakePaymentBack=Pay back +ListOfYourUnpaidInvoices=List of unpaid invoices +NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. +RevenueStamp=Revenue stamp +YouMustCreateInvoiceFromThird=This option is only available when creating invoice from tab "customer" of thirdparty +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (recommended Template) +TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 +MarsNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for credit notes and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 +TerreNumRefModelError=A bill starting with $syymm already exists and is not compatible with this model of sequence. Remove it or rename it to activate this module. +##### Types de contacts ##### +TypeContact_facture_internal_SALESREPFOLL=Representative following-up customer invoice +TypeContact_facture_external_BILLING=Customer invoice contact +TypeContact_facture_external_SHIPPING=Customer shipping contact +TypeContact_facture_external_SERVICE=Customer service contact +TypeContact_invoice_supplier_internal_SALESREPFOLL=Representative following-up supplier invoice +TypeContact_invoice_supplier_external_BILLING=Supplier invoice contact +TypeContact_invoice_supplier_external_SHIPPING=Supplier shipping contact +TypeContact_invoice_supplier_external_SERVICE=Supplier service contact +# Situation invoices +InvoiceFirstSituationAsk=First situation invoice +InvoiceFirstSituationDesc=The situation invoices are tied to situations related to a progression, for example the progression of a construction. Each situation is tied to an invoice. +InvoiceSituation=Situation invoice +InvoiceSituationAsk=Invoice following the situation +InvoiceSituationDesc=Create a new situation following an already existing one +SituationAmount=Situation invoice amount(net) +SituationDeduction=Situation subtraction +Progress=Progress +ModifyAllLines=Modify all lines +CreateNextSituationInvoice=Create next situation +NotLastInCycle=This invoice in not the last in cycle and must not be modified. +DisabledBecauseNotLastInCycle=The next situation already exists. +DisabledBecauseFinal=This situation is final. +CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation. +NoSituations=No opened situations +InvoiceSituationLast=Final and general invoice diff --git a/htdocs/langs/kn_IN/bookmarks.lang b/htdocs/langs/kn_IN/bookmarks.lang new file mode 100644 index 00000000000..7acb946bb62 --- /dev/null +++ b/htdocs/langs/kn_IN/bookmarks.lang @@ -0,0 +1,19 @@ +# Dolibarr language file - Source file is en_US - marque pages +AddThisPageToBookmarks=Add this page to bookmarks +Bookmark=Bookmark +Bookmarks=Bookmarks +NewBookmark=New bookmark +ShowBookmark=Show bookmark +OpenANewWindow=Open a new window +ReplaceWindow=Replace current window +BookmarkTargetNewWindowShort=New window +BookmarkTargetReplaceWindowShort=Current window +BookmarkTitle=Bookmark title +UrlOrLink=URL +BehaviourOnClick=Behaviour when a URL is clicked +CreateBookmark=Create bookmark +SetHereATitleForLink=Set a title for the bookmark +UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external http URL or a relative Dolibarr URL +ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choose if a page opened by link must appear on current or new window +BookmarksManagement=Bookmarks management +ListOfBookmarks=List of bookmarks diff --git a/htdocs/langs/kn_IN/boxes.lang b/htdocs/langs/kn_IN/boxes.lang new file mode 100644 index 00000000000..bf118b9b88e --- /dev/null +++ b/htdocs/langs/kn_IN/boxes.lang @@ -0,0 +1,96 @@ +# Dolibarr language file - Source file is en_US - boxes +BoxLastRssInfos=Rss information +BoxLastProducts=Last %s products/services +BoxProductsAlertStock=Products in stock alert +BoxLastProductsInContract=Last %s contracted products/services +BoxLastSupplierBills=Last supplier's invoices +BoxLastCustomerBills=Last customer's invoices +BoxOldestUnpaidCustomerBills=Oldest unpaid customer's invoices +BoxOldestUnpaidSupplierBills=Oldest unpaid supplier's invoices +BoxLastProposals=Last commercial proposals +BoxLastProspects=Last modified prospects +BoxLastCustomers=Last modified customers +BoxLastSuppliers=Last modified suppliers +BoxLastCustomerOrders=Last customer orders +BoxLastValidatedCustomerOrders=Last validated customer orders +BoxLastBooks=Last books +BoxLastActions=Last actions +BoxLastContracts=Last contracts +BoxLastContacts=Last contacts/addresses +BoxLastMembers=Last members +BoxFicheInter=Last interventions +BoxCurrentAccounts=Opened accounts balance +BoxSalesTurnover=Sales turnover +BoxTotalUnpaidCustomerBills=Total unpaid customer's invoices +BoxTotalUnpaidSuppliersBills=Total unpaid supplier's invoices +BoxTitleLastBooks=Last %s recorded books +BoxTitleNbOfCustomers=Number of clients +BoxTitleLastRssInfos=Last %s news from %s +BoxTitleLastProducts=Last %s modified products/services +BoxTitleProductsAlertStock=Products in stock alert +BoxTitleLastCustomerOrders=Last %s customer orders +BoxTitleLastModifiedCustomerOrders=Last %s modified customer orders +BoxTitleLastSuppliers=Last %s recorded suppliers +BoxTitleLastCustomers=Last %s recorded customers +BoxTitleLastModifiedSuppliers=Last %s modified suppliers +BoxTitleLastModifiedCustomers=Last %s modified customers +BoxTitleLastCustomersOrProspects=Last %s customers or prospects +BoxTitleLastPropals=Last %s proposals +BoxTitleLastModifiedPropals=Last %s modified proposals +BoxTitleLastCustomerBills=Last %s customer's invoices +BoxTitleLastModifiedCustomerBills=Last %s modified customer invoices +BoxTitleLastSupplierBills=Last %s supplier's invoices +BoxTitleLastModifiedSupplierBills=Last %s modified supplier invoices +BoxTitleLastModifiedProspects=Last %s modified prospects +BoxTitleLastProductsInContract=Last %s products/services in a contract +BoxTitleLastModifiedMembers=Last %s members +BoxTitleLastFicheInter=Last %s modified intervention +BoxTitleOldestUnpaidCustomerBills=Oldest %s unpaid customer invoices +BoxTitleOldestUnpaidSupplierBills=Oldest %s unpaid supplier invoices +BoxTitleCurrentAccounts=Opened account's balances +BoxTitleSalesTurnover=Sales turnover +BoxTitleTotalUnpaidCustomerBills=Unpaid customer invoices +BoxTitleTotalUnpaidSuppliersBills=Unpaid supplier invoices +BoxTitleLastModifiedContacts=Last %s modified contacts/addresses +BoxMyLastBookmarks=My last %s bookmarks +BoxOldestExpiredServices=Oldest active expired services +BoxLastExpiredServices=Last %s oldest contacts with active expired services +BoxTitleLastActionsToDo=Last %s actions to do +BoxTitleLastContracts=Last %s contracts +BoxTitleLastModifiedDonations=Last %s modified donations +BoxTitleLastModifiedExpenses=Last %s modified expenses +BoxGlobalActivity=Global activity (invoices, proposals, orders) +FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Last successfull refresh date: %s +LastRefreshDate=Last refresh date +NoRecordedBookmarks=No bookmarks defined. +ClickToAdd=Click here to add. +NoRecordedCustomers=No recorded customers +NoRecordedContacts=No recorded contacts +NoActionsToDo=No actions to do +NoRecordedOrders=No recorded customer's orders +NoRecordedProposals=No recorded proposals +NoRecordedInvoices=No recorded customer's invoices +NoUnpaidCustomerBills=No unpaid customer's invoices +NoRecordedSupplierInvoices=No recorded supplier's invoices +NoUnpaidSupplierBills=No unpaid supplier's invoices +NoModifiedSupplierBills=No recorded supplier's invoices +NoRecordedProducts=No recorded products/services +NoRecordedProspects=No recorded prospects +NoContractedProducts=No products/services contracted +NoRecordedContracts=No recorded contracts +NoRecordedInterventions=No recorded interventions +BoxLatestSupplierOrders=Latest supplier orders +BoxTitleLatestSupplierOrders=Last %s supplier orders +BoxTitleLatestModifiedSupplierOrders=Last %s modified supplier orders +NoSupplierOrder=No recorded supplier order +BoxCustomersInvoicesPerMonth=Customer invoices per month +BoxSuppliersInvoicesPerMonth=Supplier invoices per month +BoxCustomersOrdersPerMonth=Customer orders per month +BoxSuppliersOrdersPerMonth=Supplier orders per month +BoxProposalsPerMonth=Proposals per month +NoTooLowStockProducts=No product under the low stock limit +BoxProductDistribution=Products/Services distribution +BoxProductDistributionFor=Distribution of %s for %s +ForCustomersInvoices=Customers invoices +ForCustomersOrders=Customers orders +ForProposals=Proposals diff --git a/htdocs/langs/kn_IN/cashdesk.lang b/htdocs/langs/kn_IN/cashdesk.lang new file mode 100644 index 00000000000..d3dcfb68e64 --- /dev/null +++ b/htdocs/langs/kn_IN/cashdesk.lang @@ -0,0 +1,40 @@ +# Language file - Source file is en_US - cashdesk +CashDeskMenu=Point of sale +CashDesk=Point of sale +CashDesks=Point of sales +CashDeskBank=Bank account +CashDeskBankCash=Bank account (cash) +CashDeskBankCB=Bank account (card) +CashDeskBankCheque=Bank account (cheque) +CashDeskWarehouse=Warehouse +CashdeskShowServices=Selling services +CashDeskProducts=Products +CashDeskStock=Stock +CashDeskOn=on +CashDeskThirdParty=Third party +CashdeskDashboard=Point of sale access +ShoppingCart=Shopping cart +NewSell=New sell +BackOffice=Back office +AddThisArticle=Add this article +RestartSelling=Go back on sell +SellFinished=Sell finished +PrintTicket=Print ticket +NoProductFound=No article found +ProductFound=product found +ProductsFound=products found +NoArticle=No article +Identification=Identification +Article=Article +Difference=Difference +TotalTicket=Total ticket +NoVAT=No VAT for this sale +Change=Excess received +CalTip=Click to view the calendar +CashDeskSetupStock=You ask to decrease stock on invoice creation but warehouse for this is was not defined
Change stock module setup, or choose a warehouse +BankToPay=Charge Account +ShowCompany=Show company +ShowStock=Show warehouse +DeleteArticle=Click to remove this article +FilterRefOrLabelOrBC=Search (Ref/Label) +UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock. diff --git a/htdocs/langs/kn_IN/categories.lang b/htdocs/langs/kn_IN/categories.lang new file mode 100644 index 00000000000..22914931db1 --- /dev/null +++ b/htdocs/langs/kn_IN/categories.lang @@ -0,0 +1,112 @@ +# Dolibarr language file - Source file is en_US - categories +Category=Category +Categories=Categories +Rubrique=Category +Rubriques=Categories +categories=categories +TheCategorie=The category +NoCategoryYet=No category of this type created +In=In +AddIn=Add in +modify=modify +Classify=Classify +CategoriesArea=Categories area +ProductsCategoriesArea=Products/Services categories area +SuppliersCategoriesArea=Suppliers categories area +CustomersCategoriesArea=Customers categories area +ThirdPartyCategoriesArea=Third parties categories area +MembersCategoriesArea=Members categories area +ContactsCategoriesArea=Contacts categories area +MainCats=Main categories +SubCats=Subcategories +CatStatistics=Statistics +CatList=List of categories +AllCats=All categories +ViewCat=View category +NewCat=Add category +NewCategory=New category +ModifCat=Modify category +CatCreated=Category created +CreateCat=Create category +CreateThisCat=Create this category +ValidateFields=Validate the fields +NoSubCat=No subcategory. +SubCatOf=Subcategory +FoundCats=Found categories +FoundCatsForName=Categories found for the name : +FoundSubCatsIn=Subcategories found in the category +ErrSameCatSelected=You selected the same category several times +ErrForgotCat=You forgot to choose the category +ErrForgotField=You forgot to inform the fields +ErrCatAlreadyExists=This name is already used +AddProductToCat=Add this product to a category? +ImpossibleAddCat=Impossible to add the category +ImpossibleAssociateCategory=Impossible to associate the category to +WasAddedSuccessfully=%s was added successfully. +ObjectAlreadyLinkedToCategory=Element is already linked to this category. +CategorySuccessfullyCreated=This category %s has been added with success. +ProductIsInCategories=Product/service owns to following categories +SupplierIsInCategories=Third party owns to following suppliers categories +CompanyIsInCustomersCategories=This third party owns to following customers/prospects categories +CompanyIsInSuppliersCategories=This third party owns to following suppliers categories +MemberIsInCategories=This member owns to following members categories +ContactIsInCategories=This contact owns to following contacts categories +ProductHasNoCategory=This product/service is not in any categories +SupplierHasNoCategory=This supplier is not in any categories +CompanyHasNoCategory=This company is not in any categories +MemberHasNoCategory=This member is not in any categories +ContactHasNoCategory=This contact is not in any categories +ClassifyInCategory=Classify in category +NoneCategory=None +NotCategorized=Without category +CategoryExistsAtSameLevel=This category already exists with this ref +ReturnInProduct=Back to product/service card +ReturnInSupplier=Back to supplier card +ReturnInCompany=Back to customer/prospect card +ContentsVisibleByAll=The contents will be visible by all +ContentsVisibleByAllShort=Contents visible by all +ContentsNotVisibleByAllShort=Contents not visible by all +CategoriesTree=Categories tree +DeleteCategory=Delete category +ConfirmDeleteCategory=Are you sure you want to delete this category ? +RemoveFromCategory=Remove link with categorie +RemoveFromCategoryConfirm=Are you sure you want to remove link between the transaction and the category ? +NoCategoriesDefined=No category defined +SuppliersCategoryShort=Suppliers category +CustomersCategoryShort=Customers category +ProductsCategoryShort=Products category +MembersCategoryShort=Members category +SuppliersCategoriesShort=Suppliers categories +CustomersCategoriesShort=Customers categories +CustomersProspectsCategoriesShort=Custo./Prosp. categories +ProductsCategoriesShort=Products categories +MembersCategoriesShort=Members categories +ContactCategoriesShort=Contacts categories +ThisCategoryHasNoProduct=This category does not contain any product. +ThisCategoryHasNoSupplier=This category does not contain any supplier. +ThisCategoryHasNoCustomer=This category does not contain any customer. +ThisCategoryHasNoMember=This category does not contain any member. +ThisCategoryHasNoContact=This category does not contain any contact. +AssignedToCustomer=Assigned to a customer +AssignedToTheCustomer=Assigned to the customer +InternalCategory=Internal category +CategoryContents=Category contents +CategId=Category id +CatSupList=List of supplier categories +CatCusList=List of customer/prospect categories +CatProdList=List of products categories +CatMemberList=List of members categories +CatContactList=List of contact categories and contact +CatSupLinks=Links between suppliers and categories +CatCusLinks=Links between customers/prospects and categories +CatProdLinks=Links between products/services and categories +CatMemberLinks=Links between members and categories +DeleteFromCat=Remove from category +DeletePicture=Picture delete +ConfirmDeletePicture=Confirm picture deletion? +ExtraFieldsCategories=Complementary attributes +CategoriesSetup=Categories setup +CategorieRecursiv=Link with parent category automatically +CategorieRecursivHelp=If activated, product will also linked to parent category when adding into a subcategory +AddProductServiceIntoCategory=Add the following product/service +ShowCategory=Show category diff --git a/htdocs/langs/kn_IN/commercial.lang b/htdocs/langs/kn_IN/commercial.lang new file mode 100644 index 00000000000..7acdc7bd7e6 --- /dev/null +++ b/htdocs/langs/kn_IN/commercial.lang @@ -0,0 +1,96 @@ +# Dolibarr language file - Source file is en_US - commercial +Commercial=Commercial +CommercialArea=Commercial area +CommercialCard=Commercial card +CustomerArea=Customers area +Customer=Customer +Customers=Customers +Prospect=Prospect +Prospects=Prospects +DeleteAction=Delete an event/task +NewAction=New event/task +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event +Rendez-Vous=Rendezvous +ConfirmDeleteAction=Are you sure you want to delete this event/task ? +CardAction=Event card +PercentDone=Percentage complete +ActionOnCompany=Task about company +ActionOnContact=Task about contact +TaskRDV=Meetings +TaskRDVWith=Meeting with %s +ShowTask=Show task +ShowAction=Show event +ActionsReport=Events report +ThirdPartiesOfSaleRepresentative=Thirdparties with sales representative +SalesRepresentative=Sales representative +SalesRepresentatives=Sales representatives +SalesRepresentativeFollowUp=Sales representative (follow-up) +SalesRepresentativeSignature=Sales representative (signature) +CommercialInterlocutor=Commercial interlocutor +ErrorWrongCode=Wrong code +NoSalesRepresentativeAffected=No particular sales representative assigned +ShowCustomer=Show customer +ShowProspect=Show prospect +ListOfProspects=List of prospects +ListOfCustomers=List of customers +LastDoneTasks=Last %s completed tasks +LastRecordedTasks=Last recorded tasks +LastActionsToDo=Last %s oldest actions not completed +DoneAndToDoActionsFor=Completed and To do events for %s +DoneAndToDoActions=Completed and To do events +DoneActions=Completed events +DoneActionsFor=Completed events for %s +ToDoActions=Incomplete events +ToDoActionsFor=Incomplete events for %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s +StatusNotApplicable=Not applicable +StatusActionToDo=To do +StatusActionDone=Complete +MyActionsAsked=Events I have recorded +MyActionsToDo=Events I have to do +MyActionsDone=Events assigned to me +StatusActionInProcess=In process +TasksHistoryForThisContact=Events for this contact +LastProspectDoNotContact=Do not contact +LastProspectNeverContacted=Never contacted +LastProspectToContact=To contact +LastProspectContactInProcess=Contact in process +LastProspectContactDone=Contact done +DateActionPlanned=Date event planned for +DateActionDone=Date event done +ActionAskedBy=Event reported by +ActionAffectedTo=Event assigned to +ActionDoneBy=Event done by +ActionUserAsk=Reported by +ErrorStatusCantBeZeroIfStarted=If field 'Date done' is filled, action is started (or finished), so field 'Status' can't be 0%%. +ActionAC_TEL=Phone call +ActionAC_FAX=Send fax +ActionAC_PROP=Send proposal by mail +ActionAC_EMAIL=Send Email +ActionAC_RDV=Meetings +ActionAC_INT=Intervention on site +ActionAC_FAC=Send customer invoice by mail +ActionAC_REL=Send customer invoice by mail (reminder) +ActionAC_CLO=Close +ActionAC_EMAILING=Send mass email +ActionAC_COM=Send customer order by mail +ActionAC_SHIP=Send shipping by mail +ActionAC_SUP_ORD=Send supplier order by mail +ActionAC_SUP_INV=Send supplier invoice by mail +ActionAC_OTH=Other +ActionAC_OTH_AUTO=Other (automatically inserted events) +ActionAC_MANUAL=Manually inserted events +ActionAC_AUTO=Automatically inserted events +Stats=Sales statistics +CAOrder=Sales volume (validated orders) +FromTo=from %s to %s +MargeOrder=Margins (validated orders) +RecapAnnee=Summary of the year +NoData=There is no data +StatusProsp=Prospect status +DraftPropals=Draft commercial proposals +SearchPropal=Search a commercial proposal +CommercialDashboard=Commercial summary diff --git a/htdocs/langs/kn_IN/companies.lang b/htdocs/langs/kn_IN/companies.lang new file mode 100644 index 00000000000..0195d7566b0 --- /dev/null +++ b/htdocs/langs/kn_IN/companies.lang @@ -0,0 +1,414 @@ +# Dolibarr language file - Source file is en_US - companies +ErrorCompanyNameAlreadyExists=ಸಂಸ್ಥೆ ಹೆಸರು %s ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ. ಮತ್ತೊಂದನ್ನು ಆಯ್ದುಕೊಳ್ಳಿರಿ. +ErrorPrefixAlreadyExists=ಪೂರ್ವಪ್ರತ್ಯಯ %s ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ. ಮತ್ತೊಂದನ್ನು ಆಯ್ದುಕೊಳ್ಳಿರಿ. +ErrorSetACountryFirst=ಮೊದಲು ದೇಶವನ್ನು ಹೊಂದಿಸಿ. +SelectThirdParty=ಮೂರನೇ ವ್ಯಕ್ತಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡಿರಿ. +DeleteThirdParty=ಮೂರನೇ ವ್ಯಕ್ತಿಯನ್ನು ಅಳಿಸಿ. +ConfirmDeleteCompany=ನೀವು ಈ ಕಂಪನಿ ಮತ್ತು ಎಲ್ಲಾ ಆನುವಂಶಿಕವಾಗಿ ಮಾಹಿತಿಯನ್ನು ಅಳಿಸಲು ಬಯಸುತ್ತೀರೇ? +DeleteContact=ಸಂಪರ್ಕ / ವಿಳಾಸವೊಂದನ್ನು ಅಳಿಸಿ. +ConfirmDeleteContact=ನೀವು ಈ ಸಂಪರ್ಕವನ್ನು ಮತ್ತು ಎಲ್ಲಾ ಆನುವಂಶಿಕವಾಗಿ ಮಾಹಿತಿಯನ್ನು ಅಳಿಸಲು ಬಯಸುತ್ತೀರೆ? +MenuNewThirdParty=ಹೊಸ ತೃತೀಯ ಪಕ್ಷ +MenuNewCompany=ಹೊಸ ಕಂಪನಿ +MenuNewCustomer=ಹೊಸ ಗ್ರಾಹಕ +MenuNewProspect=ಹೊಸ ನಿರೀಕ್ಷಿತರು +MenuNewSupplier=ಹೊಸ ಪೂರೈಕೆದಾರ +MenuNewPrivateIndividual=ಹೊಸ ಖಾಸಗಿ ವ್ಯಕ್ತಿ +MenuSocGroup=ಗುಂಪುಗಳು +NewCompany=ಹೊಸ ಕಂಪನಿ (ನಿರೀಕ್ಷಿತ, ಗ್ರಾಹಕ, ಪೂರೈಕೆದಾರ) +NewThirdParty=ಹೊಸ ತೃತೀಯ (ನಿರೀಕ್ಷಿತ, ಗ್ರಾಹಕ, ಪೂರೈಕೆದಾರ) +NewSocGroup=ಹೊಸ ಕಂಪನಿ ಗುಂಪು +NewPrivateIndividual=ಹೊಸ ಖಾಸಗಿ ವ್ಯಕ್ತಿ (ನಿರೀಕ್ಷಿತ, ಗ್ರಾಹಕ, ಪೂರೈಕೆದಾರ) +CreateDolibarrThirdPartySupplier=Create a third party (supplier) +ProspectionArea=Prospection ಪ್ರದೇಶ +SocGroup=ಕಂಪನಿಗಳ ಸಮೂಹ +IdThirdParty=ತೃತೀಯ ಪಕ್ಷದ ಗುರುತು +IdCompany=ಸಂಸ್ಥೆಯ ಗುರುತು +IdContact=ಸಂಪರ್ಕದ ಗುರುತು +Contacts=ಸಂಪರ್ಕಗಳು / ವಿಳಾಸಗಳು +ThirdPartyContacts=ತೃತೀಯ ಸಂಪರ್ಕಗಳು +ThirdPartyContact=ತೃತೀಯ ಸಂಪರ್ಕ / ವಿಳಾಸ +StatusContactValidated=ಸಂಪರ್ಕ / ವಿಳಾಸದ ಸ್ಥಿತಿ +Company=ಸಂಸ್ಥೆ +CompanyName=ಸಂಸ್ಥೆಯ ಹೆಸರು +Companies=ಕಂಪನಿಗಳು +CountryIsInEEC=ದೇಶವು ಯುರೋಪಿಯನ್ ಎಕನಾಮಿಕ್ ಕಮ್ಯುನಿಟಿಯಲ್ಲಿದೆ +ThirdPartyName=ಮೂರನೇ ಪಾರ್ಟಿ ಹೆಸರು +ThirdParty=ಮೂರನೇ ಪಾರ್ಟಿ +ThirdParties=ಮೂರನೇ ಪಕ್ಷಗಳು +ThirdPartyAll=ಮೂರನೇ ಪಕ್ಷಗಳು (ಎಲ್ಲಾ) +ThirdPartyProspects=ನಿರೀಕ್ಷಿತರು +ThirdPartyProspectsStats=ನಿರೀಕ್ಷಿತರು +ThirdPartyCustomers=ಗ್ರಾಹಕರು +ThirdPartyCustomersStats=ಗ್ರಾಹಕರು +ThirdPartyCustomersWithIdProf12=%s ಅಥವಾ %s ಇರುವ ಗ್ರಾಹಕರು +ThirdPartySuppliers=ಪೂರೈಕೆದಾರರು +ThirdPartyType=ತೃತೀಯ ಮಾದರಿ +Company/Fundation=ಕಂಪನಿ / ಫೌಂಡೇಶನ್ +Individual=ಖಾಸಗಿ ವ್ಯಕ್ತಿ +ToCreateContactWithSameName=ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅದೇ ವಿವರಗಳನ್ನುಪಯೋಗಿಸಿಕೊಂಡು ಸಂಪರ್ಕವೊಂದನ್ನು ರಚಿಸುತ್ತದೆ +ParentCompany=ಪೋಷಕ ಸಂಸ್ಥೆ +Subsidiary=ಅಂಗಸಂಸ್ಥೆ +Subsidiaries=ಅಂಗಸಂಸ್ಥೆಗಳು +NoSubsidiary=ಯಾವುದೇ ಅಂಗಸಂಸ್ಥೆಗಳಿಲ್ಲ +ReportByCustomers=ಗ್ರಾಹಕರ ವರದಿ +ReportByQuarter=ದರದ ವರದಿ +CivilityCode=ಸೌಜನ್ಯದ ಕೋಡ್ +RegisteredOffice=ನೋಂದಾಯಿತ ಕಚೇರಿ +Name=ಹೆಸರು +Lastname=ಕೊನೆಯ ಹೆಸರು +Firstname=ಮೊದಲ ಹೆಸರು +PostOrFunction=ಪೋಸ್ಟ್ / ಫಂಕ್ಷನ್ +UserTitle=ಶೀರ್ಷಿಕೆ +Surname=ಉಪನಾಮ / ಗುಪ್ತನಾಮ +Address=ವಿಳಾಸ +State=ರಾಜ್ಯ / ಪ್ರಾಂತ್ಯ +Region=ಪ್ರದೇಶ +Country=ದೇಶ +CountryCode=ದೇಶ ಕೋಡ್ +CountryId=ದೇಶ ಐಡಿ +Phone=ದೂರವಾಣಿ +Skype=ಸ್ಕೈಪ್ +Call=ಕರೆ +Chat=ಚಾಟ್ +PhonePro=ವೃತ್ತಿಪರ ದೂರವಾಣಿ +PhonePerso=ವೈಯಿಕ್ತಿಕ ದೂರವಾಣಿ +PhoneMobile=ಮೊಬೈಲ್ ಸಂಖ್ಯೆ +No_Email=ಸಾಮೂಹಿಕ ಇ ರವಾನೆ ಕಳುಹಿಸಬೇಡಿ +Fax=ಫ್ಯಾಕ್ಸ್ +Zip=ಪಿನ್ ಕೋಡ್ +Town=ನಗರ +Web=ವೆಬ್ +Poste= ಸ್ಥಾನ +DefaultLang=ಪೂರ್ವನಿಯೋಜಿತವಾದ ಭಾಷೆ +VATIsUsed=ವ್ಯಾಟ್ ಬಳಸಲಾಗುತ್ತದೆ +VATIsNotUsed=ವ್ಯಾಟ್ ಬಳಸಲಾಗುವುದಿಲ್ಲ +CopyAddressFromSoc=ಮೂರನೇ ಪಾರ್ಟಿ ವಿಲಾಸದೊಂದಿಗೆ ವಿಳಾಸವನ್ನು ತುಂಬಿರಿ +NoEmailDefined=ಇ-ಮೇಲ್ ನಮೂದಿಸಿಲ್ಲ +##### Local Taxes ##### +LocalTax1IsUsedES= RE ಬಳಸಲಾಗುತ್ತದೆ +LocalTax1IsNotUsedES= RE ಬಳಸಲಾಗುವುದಿಲ್ಲ +LocalTax2IsUsedES= IRPF ಬಳಸಲಾಗುತ್ತದೆ +LocalTax2IsNotUsedES= IRPF ಬಳಸಲಾಗುವುದಿಲ್ಲ +LocalTax1ES=RE +LocalTax2ES=IRPF +TypeLocaltax1ES=RE Type +TypeLocaltax2ES=IRPF Type +TypeES=Type +ThirdPartyEMail=%s +WrongCustomerCode=ಗ್ರಾಹಕ ಕೋಡ್ ಸರಿಯಾಗಿದ್ದಂತಿಲ್ಲ +WrongSupplierCode=ಸರಬರಾಜುದಾರ ಕೋಡ್ ಸರಿಯಾಗಿದ್ದಂತಿಲ್ಲ +CustomerCodeModel=ಗ್ರಾಹಕ ಕೋಡ್ ಮಾದರಿ +SupplierCodeModel=ಸರಬರಾಜುದಾರ ಕೋಡ್ ಮಾದರಿ +Gencod=ಬಾರ್ ಕೋಡ್ +##### Professional ID ##### +ProfId1Short=ವೃತ್ತಿಪರ ಐಡಿ 1 +ProfId2Short=ವೃತ್ತಿಪರ ಐಡಿ 2 +ProfId3Short=ವೃತ್ತಿಪರ ಐಡಿ 3 +ProfId4Short=ವೃತ್ತಿಪರ ಐಡಿ 4 +ProfId5Short=ವೃತ್ತಿಪರ ಐಡಿ 5 +ProfId6Short=ವೃತ್ತಿಪರ ಐಡಿ 5 +ProfId1=ವೃತ್ತಿಪರ ID 1 +ProfId2=ವೃತ್ತಿಪರ ID 2 +ProfId3=ವೃತ್ತಿಪರ ID 3 +ProfId4=ವೃತ್ತಿಪರ ID 4 +ProfId5=ವೃತ್ತಿಪರ ID 5 +ProfId6=ವೃತ್ತಿಪರ ID 6 +ProfId1AR=ಪ್ರೊಫೆಸರ್ ಸಂ 1 (CUIT / Cuil) +ProfId2AR=ಪ್ರೊಫೆಸರ್ ಸಂ 2 (Revenu brutes) +ProfId3AR=- +ProfId4AR=- +ProfId5AR=- +ProfId6AR=- +ProfId1AU=Prof Id 1 (ABN) +ProfId2AU=- +ProfId3AU=- +ProfId4AU=- +ProfId5AU=- +ProfId6AU=- +ProfId1BE=Prof Id 1 (Professional number) +ProfId2BE=- +ProfId3BE=- +ProfId4BE=- +ProfId5BE=- +ProfId6BE=- +ProfId1BR=- +ProfId2BR=IE (Inscricao Estadual) +ProfId3BR=IM (Inscricao Municipal) +ProfId4BR=CPF +#ProfId5BR=CNAE +#ProfId6BR=INSS +ProfId1CH=- +ProfId2CH=- +ProfId3CH=Prof Id 1 (Federal number) +ProfId4CH=Prof Id 2 (Commercial Record number) +ProfId5CH=- +ProfId6CH=- +ProfId1CL=Prof Id 1 (R.U.T.) +ProfId2CL=- +ProfId3CL=- +ProfId4CL=- +ProfId5CL=- +ProfId6CL=- +ProfId1CO=Prof Id 1 (R.U.T.) +ProfId2CO=- +ProfId3CO=- +ProfId4CO=- +ProfId5CO=- +ProfId6CO=- +ProfId1DE=Prof Id 1 (USt.-IdNr) +ProfId2DE=Prof Id 2 (USt.-Nr) +ProfId3DE=Prof Id 3 (Handelsregister-Nr.) +ProfId4DE=- +ProfId5DE=- +ProfId6DE=- +ProfId1ES=Prof Id 1 (CIF/NIF) +ProfId2ES=Prof Id 2 (Social security number) +ProfId3ES=Prof Id 3 (CNAE) +ProfId4ES=Prof Id 4 (Collegiate number) +ProfId5ES=- +ProfId6ES=- +ProfId1FR=Prof Id 1 (SIREN) +ProfId2FR=Prof Id 2 (SIRET) +ProfId3FR=Prof Id 3 (NAF, old APE) +ProfId4FR=Prof Id 4 (RCS/RM) +ProfId5FR=- +ProfId6FR=- +ProfId1GB=ನೋಂದಣಿ ಸಂಖ್ಯೆ +ProfId2GB=- +ProfId3GB=SIC +ProfId4GB=- +ProfId5GB=- +ProfId6GB=- +ProfId1HN=Id prof. 1 (RTN) +ProfId2HN=- +ProfId3HN=- +ProfId4HN=- +ProfId5HN=- +ProfId6HN=- +ProfId1IN=ವೃತ್ತಿಪರ ಗುರುತಿನ ಸಂ 1 (TIN) +ProfId2IN=ವೃತ್ತಿಪರ ಗುರುತಿನ ಸಂ 2 (PAN) +ProfId3IN=ವೃತ್ತಿಪರ ಗುರುತಿನ ಸಂಖ್ಯೆ 3 (STN) +ProfId4IN=Prof Id 4 +ProfId5IN=Prof Id 5 +ProfId6IN=- +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.) +ProfId5MA=- +ProfId6MA=- +ProfId1MX=Prof Id 1 (R.F.C). +ProfId2MX=Prof Id 2 (R..P. IMSS) +ProfId3MX=Prof Id 3 (Profesional Charter) +ProfId4MX=- +ProfId5MX=- +ProfId6MX=- +ProfId1NL=KVK nummer +ProfId2NL=- +ProfId3NL=- +ProfId4NL=Burgerservicenummer (BSN) +ProfId5NL=- +ProfId6NL=- +ProfId1PT=Prof Id 1 (NIPC) +ProfId2PT=Prof Id 2 (Social security number) +ProfId3PT=Prof Id 3 (Commercial Record number) +ProfId4PT=Prof Id 4 (Conservatory) +ProfId5PT=- +ProfId6PT=- +ProfId1SN=RC +ProfId2SN=NINEA +ProfId3SN=- +ProfId4SN=- +ProfId5SN=- +ProfId6SN=- +ProfId1TN=Prof Id 1 (RC) +ProfId2TN=Prof Id 2 (Fiscal matricule) +ProfId3TN=Prof Id 3 (Douane code) +ProfId4TN=Prof Id 4 (BAN) +ProfId5TN=- +ProfId6TN=- +ProfId1RU=Prof Id 1 (OGRN) +ProfId2RU=Prof Id 2 (INN) +ProfId3RU=Prof Id 3 (KPP) +ProfId4RU=Prof Id 4 (OKPO) +ProfId5RU=- +ProfId6RU=- +VATIntra=ಮೌಲ್ಯ ವರ್ಧಿತ ತೆರಿಗೆ (VAT) ಸಂಖ್ಯೆ +VATIntraShort=ಮೌಲ್ಯ ವರ್ಧಿತ ತೆರಿಗೆ (VAT) ಸಂಖ್ಯೆ +VATIntraVeryShort=ಮೌಲ್ಯ ವರ್ಧಿತ ತೆರಿಗೆ +VATIntraSyntaxIsValid=ಸಿಂಟ್ಯಾಕ್ಸ್ ಸರಿಯಿದ್ದಂತಿದೆ +VATIntraValueIsValid=ಮೌಲ್ಯ ಸರಿಯಿದ್ದಂತಿದೆ +ProspectCustomer=ನಿರೀಕ್ಷಿತ / ಗ್ರಾಹಕ +Prospect=ನಿರೀಕ್ಷಿತ +CustomerCard=ಗ್ರಾಹಕ ಕಾರ್ಡ್ +Customer=ಗ್ರಾಹಕ +CustomerDiscount=ಗ್ರಾಹಕ ಡಿಸ್ಕೌಂಟ್ +CustomerRelativeDiscount=ಸಾಪೇಕ್ಷ ಗ್ರಾಹಕ ರಿಯಾಯಿತಿ +CustomerAbsoluteDiscount=ಪರಮ ಗ್ರಾಹಕ ರಿಯಾಯಿತಿ +CustomerRelativeDiscountShort=ಸಾಪೇಕ್ಷ ರಿಯಾಯಿತಿ +CustomerAbsoluteDiscountShort=ಪರಮ ರಿಯಾಯಿತಿ +CompanyHasRelativeDiscount=ಈ ಗ್ರಾಹಕರಿಗೆ %s%% ರಿಯಾಯಿತಿ ಪೂರ್ವನಿಗದಿಯಾಗಿದೆ. +CompanyHasNoRelativeDiscount=ಈ ಗ್ರಾಹಕರಿಗೆ ಯಾವುದೇ ಸಾಪೇಕ್ಷ ರಿಯಾಯಿತಿ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿಲ್ಲ +CompanyHasAbsoluteDiscount=ಈ ಗ್ರಾಹಕ ಇನ್ನೂ %s%s ರಿಯಾಯಿತಿ ವಿನಾಯಿತಿಗಳನ್ನು ಅಥವಾ ಠೇವಣಿಯನ್ನು ಹೊಂದಿದ್ದಾರೆ. +CompanyHasCreditNote=ಈ ಗ್ರಾಹಕ ಇನ್ನೂ %s%sರಷ್ಟಕ್ಕೆ ಸಾಲದ ಟಿಪ್ಪಣಿಯನ್ನು ಹೊಂದಿದ್ದಾರೆ. +CompanyHasNoAbsoluteDiscount=ಈ ಗ್ರಾಹಕ ಯಾವುದೇ ರಿಯಾಯಿತಿ ಕ್ರೆಡಿಟ್ ಹೊಂದಿಲ್ಲ +CustomerAbsoluteDiscountAllUsers=ಪರಮ ರಿಯಾಯಿತಿಗಳು (ಎಲ್ಲಾ ಬಳಕೆದಾರರಿಂದ ಮಂಜೂರಾದ) +CustomerAbsoluteDiscountMy=ಪರಮ ರಿಯಾಯಿತಿಗಳು (ನಿಮ್ಮಿಂದ ಮಂಜೂರಾದ) +DefaultDiscount=ಪೂರ್ವನಿಯೋಜಿತ ರಿಯಾಯಿತಿ +AvailableGlobalDiscounts=ಲಭ್ಯವಿರುವ ಪರಮ ರಿಯಾಯಿತಿಗಳು +DiscountNone=ಯಾವುದೂ ಇಲ್ಲ +Supplier=ಪೂರೈಕೆದಾರ +CompanyList=ಸಂಸ್ಥೆಯ ಪಟ್ಟಿ +AddContact=Create contact +AddContactAddress=Create contact/address +EditContact=ಸಂಪರ್ಕವನ್ನು ತಿದ್ದಿ +EditContactAddress=ಸಂಪರ್ಕ / ವಿಳಾಸವನ್ನು ತಿದ್ದಿ +Contact=ಸಂಪರ್ಕ +ContactsAddresses=ಸಂಪರ್ಕಗಳು / ವಿಳಾಸಗಳು +NoContactDefinedForThirdParty=ಈ ತೃತೀಯ ಪಾರ್ಟಿಗೆ ಯಾವುದೇ ಸಂಪರ್ಕ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿಲ್ಲ +NoContactDefined=ಯಾವುದೇ ಸಂಪರ್ಕ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿಲ್ಲ +DefaultContact=ಡೀಫಾಲ್ಟ್ ಸಂಪರ್ಕ / ವಿಳಾಸ +AddCompany=Create company +AddThirdParty=Create third party +DeleteACompany=ಸಂಸ್ಥೆಯೊಂದನ್ನು ತೆಗೆದುಹಾಕಿ +PersonalInformations=ವೈಯಕ್ತಿಕ ದತ್ತಾಂಶ +AccountancyCode=ಅಕೌಂಟೆನ್ಸಿ ಕೋಡ್ +CustomerCode=ಗ್ರಾಹಕ ಕೋಡ್ +SupplierCode=ಪೂರೈಕೆದಾರರ ಕೋಡ್ +CustomerAccount=ಗ್ರಾಹಕ ಖಾತೆ +SupplierAccount=ಸರಬರಾಜುದಾರ ಖಾತೆ +CustomerCodeDesc=ಗ್ರಾಹಕ ಕೋಡ್, ಎಲ್ಲಾ ಗ್ರಾಹಕರಿಗೂ ಅನನ್ಯ +SupplierCodeDesc=ಸರಬರಾಜುದಾರ ಕೋಡ್, ಎಲ್ಲಾ ಪೂರೈಕೆದಾರರಿಗೂ ಅನನ್ಯ +RequiredIfCustomer=ತೃತೀಯ ಪಾರ್ಟಿಯು ಗ್ರಾಹಕ ಅಥವಾ ನಿರೀಕ್ಷಿತರಾಗಿದ್ದ ವೇಳೆ ಅಗತ್ಯ +RequiredIfSupplier=ತೃತೀಯ ಪಾರ್ಟಿಯು ಸರಬರಾಜುದಾರರಾದಲ್ಲಿ ಅಗತ್ಯ +ValidityControledByModule=ವಾಯಿದೆ ನಿಯಂತ್ರಿತ ಘಟಕ +ThisIsModuleRules=ಈ ಘಟಕಕ್ಕೆ ಅನ್ವಯವಾಗುವ ನೇಮಗಳು +LastProspect=ಕೊನೆಯ +ProspectToContact='ನಿರೀಕ್ಷಿತ'ದಿಂದ 'ಸಂಪರ್ಕ'ಕ್ಕೆ +CompanyDeleted="%s" ಸಂಸ್ಥೆಯನ್ನು ಡೇಟಾಬೇಸ್-ನಿಂದ ತೆಗೆಯಲಾಗಿದೆ. +ListOfContacts=ಸಂಪರ್ಕಗಳ / ವಿಳಾಸಗಳ ಪಟ್ಟಿ +ListOfContactsAddresses=ಸಂಪರ್ಕಗಳ / ವಿಳಾಸಗಳ ಪಟ್ಟಿ +ListOfProspectsContacts=ನಿರೀಕ್ಷಿತ ಸಂಪರ್ಕಗಳ ಪಟ್ಟಿ +ListOfCustomersContacts=ಗ್ರಾಹಕ ಸಂಪರ್ಕಗಳ ಪಟ್ಟಿ +ListOfSuppliersContacts=ಪೂರೈಕೆದಾರ ಸಂಪರ್ಕಗಳ ಪಟ್ಟಿ +ListOfCompanies=ಸಂಸ್ಥೆಗಳ ಪಟ್ಟಿ +ListOfThirdParties=ಮೂರನೇ ಪಕ್ಷಗಳ ಪಟ್ಟಿ +ShowCompany=ಸಂಸ್ಥೆಯನ್ನು ತೋರಿಸಿ +ShowContact=ಸಂಪರ್ಕವನ್ನು ತೋರಿಸಿ +ContactsAllShort=ಎಲ್ಲಾ (ಸೋಸಿಲ್ಲದ) +ContactType=ಸಂಪರ್ಕದ ಮಾದರಿ +ContactForOrders=ಆರ್ಡರ್ ಸಂಪರ್ಕ +ContactForProposals=ಪ್ರಸ್ತಾಪದ ಸಂಪರ್ಕ +ContactForContracts=ಗುತ್ತಿಗೆಯ ಸಂಪರ್ಕ +ContactForInvoices=ಸರಕುಪಟ್ಟಿ ಸಂಪರ್ಕ +NoContactForAnyOrder=ಈ ಸಂಪರ್ಕ ಯಾವುದೇ ಆರ್ಡರ್-ಗಾಗಿ ಅಲ್ಲ. +NoContactForAnyProposal=ಈ ಸಂಪರ್ಕ ಯಾವುದೇ ವಾಣಿಜ್ಯ ಪ್ರಸ್ತಾವನೆಗಾಗಿ ಅಲ್ಲ. +NoContactForAnyContract=ಈ ಸಂಪರ್ಕ ಯಾವುದೇ ಗುತ್ತಿಗೆಯಗಾಗಿ ಅಲ್ಲ. +NoContactForAnyInvoice=ಈ ಸಂಪರ್ಕ ಯಾವುದೇ ಸರಕುಪಟ್ಟಿಗಾಗಿ ಅಲ್ಲ. +NewContact=ಹೊಸ ಸಂಪರ್ಕ +NewContactAddress=ಹೊಸ ಸಂಪರ್ಕ / ವಿಳಾಸ +LastContacts=ಕೊನೆಯ ಸಂಪರ್ಕಗಳು +MyContacts=ನನ್ನ ಸಂಪರ್ಕಗಳು +Phones=ದೂರವಾಣಿಗಳು +Capital=ರಾಜಧಾನಿ +CapitalOf=%s ಕ್ಯಾಪಿಟಲ್ +EditCompany=ಸಂಸ್ಥೆಯನ್ನು ತಿದ್ದಿ +EditDeliveryAddress=ತಲುಪಿಸಬೇಕಾದ ವಿಳಾಸವನ್ನು ತಿದ್ದಿ +ThisUserIsNot=ಈ ಬಳಕೆದಾರ ಒಬ್ಬ ನಿರೀಕ್ಷಿತ, ಗ್ರಾಹಕ ಅಥವಾ ಪೂರೈಕೆದಾರ ಅಲ್ಲ +VATIntraCheck=ಪರಿಶೀಲಿಸಿ +VATIntraCheckDesc=The link %s allows to ask the european VAT checker service. An external internet access from server is required for this service to work. +VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do +VATIntraCheckableOnEUSite=Check Intracomunnautary VAT on European commision site +VATIntraManualCheck=You can also check manually from european web site %s +ErrorVATCheckMS_UNAVAILABLE=Check not possible. Check service is not provided by the member state (%s). +NorProspectNorCustomer=ನಿರೆಕ್ಷಿತರೂ ಅಲ್ಲ, ಗ್ರಾಹಕರೂ ಅಲ್ಲ. +JuridicalStatus=ನ್ಯಾಯಾಂಗ ಸ್ಥಿತಿ +Staff=ನೌಕರರು +ProspectLevelShort=ಸಂಭವನೀಯ +ProspectLevel=ಸಂಭಾವ್ಯ ನಿರೀಕ್ಷಿತರು +ContactPrivate=ಖಾಸಗಿ +ContactPublic=ಹಂಚಲ್ಪಟ್ಟ +ContactVisibility=ಕಾಣುವಂತಿರುವಿಕೆ +OthersNotLinkedToThirdParty=ಇತರೆ, ಮೂರನೇ ವ್ಯಕ್ತಿಗೆ ಕೂಡಿಸಲ್ಪಡದ +ProspectStatus=ನಿರೀಕ್ಷಿತರ ಸ್ಥಿತಿ +PL_NONE=ಯಾವುದೂ ಇಲ್ಲ +PL_UNKNOWN=ತಿಳಿದಿಲ್ಲ +PL_LOW=ಕಡಿಮೆ +PL_MEDIUM=ಮಧ್ಯಮ +PL_HIGH=ಹೆಚ್ಚು +TE_UNKNOWN=- +TE_STARTUP=ಆರಂಭಿಕ +TE_GROUP=ದೊಡ್ಡ ಸಂಸ್ಥೆ +TE_MEDIUM=ಸಾಧಾರಣ ಸಂಸ್ಥೆ +TE_ADMIN=ಸರ್ಕಾರೀ +TE_SMALL=ಸಣ್ಣ ಸಂಸ್ಥೆ +TE_RETAIL=ಚಿಲ್ಲರೆ ವ್ಯಾಪಾರಿ +TE_WHOLE=Wholeseller +TE_PRIVATE=ಖಾಸಗಿ ವ್ಯಕ್ತಿ +TE_OTHER=ಇತರ +StatusProspect-1=ಸಂಪರ್ಕಿಸಬೇಡಿ +StatusProspect0=ಈವರೆಗೆ ಸಂಪರ್ಕಿಸಲ್ಪಡದ +StatusProspect1=ಸಂಪರ್ಕಿಸಬೇಕಾದದ್ದು +StatusProspect2=ಸಂಪರ್ಕದ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ +StatusProspect3=ಸಂಪರ್ಕಿಸಲಾಗಿದೆ +ChangeDoNotContact=ಸ್ಥಿತಿಯನ್ನು 'ಸಂಪರ್ಕಿಸಬೇಡಿ' ಎಂಬುದಕ್ಕೆ ಬದಲಿಸಿ +ChangeNeverContacted=ಸ್ಥಿತಿಯನ್ನು 'ಸಂಪರ್ಕಿಸಿಲ್ಲ' ಎಂಬುದಕ್ಕೆ ಬದಲಾಯಿಸಿ +ChangeToContact=ಸ್ಥಿತಿಯನ್ನು 'ಸಂಪರ್ಕಿಸಬೇಕಾದದ್ದು' ಎಂಬುದಕ್ಕೆ ಬದಲಾಯಿಸಿ +ChangeContactInProcess=ಸ್ಥಿತಿಯನ್ನು 'ಸಂಪರ್ಕದ ಪ್ರಕ್ರಿಯಯಲ್ಲಿ' ಎಂಬುದಕ್ಕೆ ಬದಲಾಯಿಸಿ +ChangeContactDone=ಸ್ಥಿತಿಯನ್ನು 'ಸಂಪರ್ಕೈಸಲಾಗಿದೆ' ಎಂಬುದಕ್ಕೆ ಬದಲಾಯಿಸಿ +ProspectsByStatus=ಸ್ಥಿತಿಯಂತೆ ನಿರೀಕ್ಷಿತರು +BillingContact=ಬಿಲ್ಲಿಂಗ್ ಸಂಪರ್ಕ +NbOfAttachedFiles=ಲಗತ್ತಿಸಲಾದ ಕಡತಗಳ ಸಂಖ್ಯೆ +AttachANewFile=ಹೊಸ ಕಡತ ಲಗತ್ತಿಸಿ +NoRIB=BAN ವ್ಯಾಖ್ಯಾನಿಸಲ್ಪಟ್ಟಿಲ್ಲ +NoParentCompany=ಯಾವುದೂ ಇಲ್ಲ +ExportImport=ಆಮದು-ರಫ್ತು +ExportCardToFormat=ಕಾರ್ಡನ್ನು ಸ್ವರೂಪಕ್ಕೆ ರಫ್ತು ಮಾಡಿ +ContactNotLinkedToCompany=ಸಂಪರ್ಕವು ಯಾವುದೇ ಮೂರನೇ ಪಾರ್ಟಿಗೆ ಕೂಡಿಸಲ್ಪಟ್ಟಿಲ್ಲ. +DolibarrLogin=ಲಾಗಿನ್ ಆಗಿ +NoDolibarrAccess=ಪ್ರವೇಶವಿಲ್ಲ +ExportDataset_company_1=ಮೂರನೇ ಪಕ್ಷಗಳು (ಸಂಸ್ಥೆಗಳು / ಫೌಂಡೇಶನ್ / ಜನರು) ಮತ್ತು ವಿವರಗಳು +ExportDataset_company_2=ಸಂಪರ್ಕಗಳು ಮತ್ತು ವಿವರಗಳು +ImportDataset_company_1=ಮೂರನೇ ಪಕ್ಷಗಳು (ಸಂಸ್ಥೆಗಳು / ಫೌಂಡೇಶನ್ / ಜನರು) ಮತ್ತು ವಿವರಗಳು +ImportDataset_company_2=ಸಂಪರ್ಕಗಳು / ವಿಳಾಸಗಳು (ಮೂರನೇ ಪಾರ್ಟಿಗಳದ್ದಾಗಿರಬಹುದು, ಆಗಿಲ್ಲದಿರಬಹುದು) ಮತ್ತು ಲಕ್ಷಣಗಳು +ImportDataset_company_3=ಬ್ಯಾಂಕ್ ವಿವರಗಳು +PriceLevel=ಬೆಲೆ ಮಟ್ಟ +DeliveriesAddress=ತಲುಪಿಸುವ ವಿಳಾಸಗಳು +DeliveryAddress=ತಲುಪಿಸುವ ವಿಳಾಸ +DeliveryAddressLabel=ತಲುಪಿಸುವ ವಿಳಾಸದ ಲೇಬಲ್ +DeleteDeliveryAddress=ತಲುಪಿಸುವ ವಿಳಾಸವನ್ನು ತೆಗೆಯಿರಿ +ConfirmDeleteDeliveryAddress=ನೀವು ಈ ತಲುಪಿಸುವ ವಿಳಾಸವನ್ನು ಖಂಡಿತವಾಗಿಯೂ ಅಳಿಸಲು ಬಯಸುತ್ತೀರೇ? +NewDeliveryAddress=ಹೊಸ ತಲುಪಿಸುವ ವಿಳಾಸ +AddDeliveryAddress=Create address +AddAddress=Create address +NoOtherDeliveryAddress=ಯಾವುದೇ ಪರ್ಯಾಯ ತಲುಪಿಸುವ ವಿಳಾಸವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿಲ್ಲ. +SupplierCategory=ಸರಬರಾಜುದಾರ ವರ್ಗ +JuridicalStatus200=ಸ್ವತಂತ್ರ +DeleteFile=ಫೈಲ್ ತೆಗೆಯಿರಿ +ConfirmDeleteFile=ನೀವು ಈ ಫೈಲ್ಅನ್ನು ಖಂಡಿತವಾಗಿಯೂ ಶಾಶ್ವವವಾಗಿ ತೆಗೆದುಹಾಕಲು ಬಯಸುತ್ತೀರಾ? +AllocateCommercial=ಮಾರಾಟ ಪ್ರತಿನಿಧಿ ನಿಯೋಜಿಸಲಾಗಿದೆ +SelectCountry=ರಾಷ್ಟ್ರವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ +SelectCompany=ಮೂರನೇ ಪಾರ್ಟಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡಿ +Organization=ಸಂಘಟನೆ +AutomaticallyGenerated=ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿತವಾದ +FiscalYearInformation=ಹಣಕಾಸಿನ ವರ್ಷದ ಮಾಹಿತಿ +FiscalMonthStart=ಆರ್ಥಿಕ ವರ್ಷಾರಂಭದ ತಿಂಗಳು +YouMustCreateContactFirst=ಈ ಸಂಪರ್ಕವನ್ನು ಇ-ಮೇಲ್ ಅಧಿಸೂಚನಾ ಪಟ್ಟಿಗೆ ಸೇರಿಸುವ ಮುನ್ನ ಸಂಪರ್ಕದ ಇ-ಮೇಲ್ ವಿವರವನ್ನು ನಮೂದಿಸಿ. +ListSuppliersShort=ಪೂರೈಕೆದಾರರ ಪಟ್ಟಿ +ListProspectsShort=ನಿರೀಕ್ಷಿತರ ಪಟ್ಟಿ +ListCustomersShort=ಗ್ರಾಹಕರ ಪಟ್ಟಿ +ThirdPartiesArea=Third parties and contact area +LastModifiedThirdParties=ಕೊನೆಯ %sದಿಂದ ಬದಲಾಯಿಸಲಾದ ಮೂರನೇ ಪಕ್ಷಗಳು +UniqueThirdParties=ಒಟ್ಟು ಅನನ್ಯ ಮೂರನೇ ಪಾರ್ಟಿಗಳು +InActivity=ತೆರೆಯಲಾಗಿದೆ +ActivityCeased=ಮುಚ್ಚಲಾಗಿದೆ +ActivityStateFilter=ಚಟುವಟಿಕೆ ಸ್ಥಿತಿ +ProductsIntoElements=List of products into %s +CurrentOutstandingBill=ಪ್ರಸ್ತುತ ಬಾಕಿ ಉಳಿದಿರುವ ಬಿಲ್ +OutstandingBill=ಗರಿಷ್ಟ ಬಾಕಿ ಉಳಿದಿರುವ ಬಿಲ್ ಮೊತ್ತ +OutstandingBillReached=ಗರಿಷ್ಟ ಬಾಕಿ ಉಳಿಯಬಹುದಾದ ಬಿಲ್ ಮೊತ್ತ ತಲುಪಿದೆ +MonkeyNumRefModelDesc=ಫಾರ್ಮ್ಯಾಟ್% syymm-NNNN ಗ್ರಾಹಕ ಕೋಡ್ ಮತ್ತು% syymm-NNNN ವವ ವರ್ಷ ಅಲ್ಲಿ ಪೂರೈಕೆದಾರ ಕೋಡ್ ಫಾರ್ ಜೊತೆ ನ್ಯೂಮರೋ ಹಿಂತಿರುಗಿ, ಮಿಮೀ ತಿಂಗಳು ಮತ್ತು NNNN ಯಾವುದೇ ಬ್ರೇಕ್ ಮತ್ತು 0 ಯಾವುದೇ ಲಾಭ ಒಂದು ಅನುಕ್ರಮದ. +LeopardNumRefModelDesc=ಕೋಡ್ ಉಚಿತ. ಈ ಕೋಡ್ ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಮಾರ್ಪಡಿಸಬಹುದಾಗಿದೆ. +ManagingDirectors=ಮ್ಯಾನೇಜರ್ (ಗಳು) ಹೆಸರು (ಸಿಇಒ, ನಿರ್ದೇಶಕ, ಅಧ್ಯಕ್ಷ ...) +SearchThirdparty=Search thirdparty +SearchContact=Search contact diff --git a/htdocs/langs/kn_IN/compta.lang b/htdocs/langs/kn_IN/compta.lang new file mode 100644 index 00000000000..0d579a06ff1 --- /dev/null +++ b/htdocs/langs/kn_IN/compta.lang @@ -0,0 +1,207 @@ +# Dolibarr language file - Source file is en_US - compta +Accountancy=Accountancy +AccountancyCard=Accountancy card +Treasury=Treasury +MenuFinancial=Financial +TaxModuleSetupToModifyRules=Go to Taxes module setup to modify rules for calculation +TaxModuleSetupToModifyRulesLT=Go to Company setup to modify rules for calculation +OptionMode=Option for accountancy +OptionModeTrue=Option Incomes-Expenses +OptionModeVirtual=Option Claims-Debts +OptionModeTrueDesc=In this context, the turnover is calculated over payments (date of payments). The validity of the figures is assured only if the book-keeping is scrutinized through the input/output on the accounts via invoices. +OptionModeVirtualDesc=In this context, the turnover is calculated over invoices (date of validation). When these invoices are due, whether they have been paid or not, they are listed in the turnover output. +FeatureIsSupportedInInOutModeOnly=Feature only available in CREDITS-DEBTS accountancy mode (See Accountancy module configuration) +VATReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Tax module setup. +LTReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Company setup. +Param=Setup +RemainingAmountPayment=Amount payment remaining : +AmountToBeCharged=Total amount to pay : +AccountsGeneral=Accounts +Account=Account +Accounts=Accounts +Accountparent=Account parent +Accountsparent=Accounts parent +BillsForSuppliers=Bills for suppliers +Income=Income +Outcome=Expense +ReportInOut=Income / Expense +ReportTurnover=Turnover +PaymentsNotLinkedToInvoice=Payments not linked to any invoice, so not linked to any third party +PaymentsNotLinkedToUser=Payments not linked to any user +Profit=Profit +AccountingResult=Accounting result +Balance=Balance +Debit=Debit +Credit=Credit +Piece=Accounting Doc. +Withdrawal=Withdrawal +Withdrawals=Withdrawals +AmountHTVATRealReceived=Net collected +AmountHTVATRealPaid=Net paid +VATToPay=VAT sells +VATReceived=VAT received +VATToCollect=VAT purchases +VATSummary=VAT Balance +LT2SummaryES=IRPF Balance +LT1SummaryES=RE Balance +VATPaid=VAT paid +SalaryPaid=Salary paid +LT2PaidES=IRPF Paid +LT1PaidES=RE Paid +LT2CustomerES=IRPF sales +LT2SupplierES=IRPF purchases +LT1CustomerES=RE sales +LT1SupplierES=RE purchases +VATCollected=VAT collected +ToPay=To pay +ToGet=To get back +SpecialExpensesArea=Area for all special payments +TaxAndDividendsArea=Tax, social contributions and dividends area +SocialContribution=Social contribution +SocialContributions=Social contributions +MenuSpecialExpenses=Special expenses +MenuTaxAndDividends=Taxes and dividends +MenuSalaries=Salaries +MenuSocialContributions=Social contributions +MenuNewSocialContribution=New contribution +NewSocialContribution=New social contribution +ContributionsToPay=Contributions to pay +AccountancyTreasuryArea=Accountancy/Treasury area +AccountancySetup=Accountancy setup +NewPayment=New payment +Payments=Payments +PaymentCustomerInvoice=Customer invoice payment +PaymentSupplierInvoice=Supplier invoice payment +PaymentSocialContribution=Social contribution payment +PaymentVat=VAT payment +PaymentSalary=Salary payment +ListPayment=List of payments +ListOfPayments=List of payments +ListOfCustomerPayments=List of customer payments +ListOfSupplierPayments=List of supplier payments +DatePayment=Payment date +DateStartPeriod=Date start period +DateEndPeriod=Date end period +NewVATPayment=New VAT payment +newLT2PaymentES=New IRPF payment +newLT1PaymentES=New RE payment +LT2PaymentES=IRPF Payment +LT2PaymentsES=IRPF Payments +LT1PaymentES=RE Payment +LT1PaymentsES=RE Payments +VATPayment=VAT Payment +VATPayments=VAT Payments +SocialContributionsPayments=Social contributions payments +ShowVatPayment=Show VAT payment +TotalToPay=Total to pay +TotalVATReceived=Total VAT received +CustomerAccountancyCode=Customer accountancy code +SupplierAccountancyCode=Supplier accountancy code +AccountNumberShort=Account number +AccountNumber=Account number +NewAccount=New account +SalesTurnover=Sales turnover +SalesTurnoverMinimum=Minimum sales turnover +ByThirdParties=By third parties +ByUserAuthorOfInvoice=By invoice author +AccountancyExport=Accountancy export +ErrorWrongAccountancyCodeForCompany=Bad customer accountancy code for %s +SuppliersProductsSellSalesTurnover=The generated turnover by the sales of supplier's products. +CheckReceipt=Check deposit +CheckReceiptShort=Check deposit +LastCheckReceiptShort=Last %s check receipts +NewCheckReceipt=New discount +NewCheckDeposit=New check deposit +NewCheckDepositOn=Create receipt for deposit on account: %s +NoWaitingChecks=No checks waiting for deposit. +DateChequeReceived=Check reception date +NbOfCheques=Nb of checks +PaySocialContribution=Pay a social contribution +ConfirmPaySocialContribution=Are you sure you want to classify this social contribution as paid? +DeleteSocialContribution=Delete a social contribution +ConfirmDeleteSocialContribution=Are you sure you want to delete this social contribution? +ExportDataset_tax_1=Social contributions and payments +CalcModeVATDebt=Mode %sVAT on commitment accounting%s. +CalcModeVATEngagement=Mode %sVAT on incomes-expenses%s. +CalcModeDebt=Mode %sClaims-Debts%s said Commitment accounting. +CalcModeEngagement=Mode %sIncomes-Expenses%s said cash accounting +CalcModeLT1= Mode %sRE on customer invoices - suppliers invoices%s +CalcModeLT1Debt=Mode %sRE on customer invoices%s +CalcModeLT1Rec= Mode %sRE on suppliers invoices%s +CalcModeLT2= Mode %sIRPF on customer invoices - suppliers invoices%s +CalcModeLT2Debt=Mode %sIRPF on customer invoices%s +CalcModeLT2Rec= Mode %sIRPF on suppliers invoices%s +AnnualSummaryDueDebtMode=Balance of income and expenses, annual summary +AnnualSummaryInputOutputMode=Balance of income and expenses, annual summary +AnnualByCompaniesDueDebtMode=Balance of income and expenses, detail by third parties, mode %sClaims-Debts%s said Commitment accounting. +AnnualByCompaniesInputOutputMode=Balance of income and expenses, detail by third parties, mode %sIncomes-Expenses%s said cash accounting. +SeeReportInInputOutputMode=See report %sIncomes-Expenses%s said cash accounting for a calculation on actual payments made +SeeReportInDueDebtMode=See report %sClaims-Debts%s said commitment accounting for a calculation on issued invoices +RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included +RulesResultDue=- It includes outstanding invoices, expenses and VAT whether they are paid or not.
- It is based on the validation date of invoices and VAT and on the due date for expenses. +RulesResultInOut=- It includes the real payments made on invoices, expenses and VAT.
- It is based on the payment dates of the invoices, expenses and VAT. +RulesCADue=- It includes the client's due invoices whether they are paid or not.
- It is based on the validation date of these invoices.
+RulesCAIn=- It includes all the effective payments of invoices received from clients.
- It is based on the payment date of these invoices
+DepositsAreNotIncluded=- Deposit invoices are nor included +DepositsAreIncluded=- Deposit invoices are included +LT2ReportByCustomersInInputOutputModeES=Report by third party IRPF +LT1ReportByCustomersInInputOutputModeES=Report by third party RE +VATReportByCustomersInInputOutputMode=Report by the customer VAT collected and paid +VATReportByCustomersInDueDebtMode=Report by the customer VAT collected and paid +VATReportByQuartersInInputOutputMode=Report by rate of the VAT collected and paid +LT1ReportByQuartersInInputOutputMode=Report by RE rate +LT2ReportByQuartersInInputOutputMode=Report by IRPF rate +VATReportByQuartersInDueDebtMode=Report by rate of the VAT collected and paid +LT1ReportByQuartersInDueDebtMode=Report by RE rate +LT2ReportByQuartersInDueDebtMode=Report by IRPF rate +SeeVATReportInInputOutputMode=See report %sVAT encasement%s for a standard calculation +SeeVATReportInDueDebtMode=See report %sVAT on flow%s for a calculation with an option on the flow +RulesVATInServices=- For services, the report includes the VAT regulations actually received or issued on the basis of the date of payment. +RulesVATInProducts=- For material assets, it includes the VAT invoices on the basis of the invoice date. +RulesVATDueServices=- For services, the report includes VAT invoices due, paid or not, based on the invoice date. +RulesVATDueProducts=- For material assets, it includes the VAT invoices, based on the invoice date. +OptionVatInfoModuleComptabilite=Note: For material assets, it should use the date of delivery to be more fair. +PercentOfInvoice=%%/invoice +NotUsedForGoods=Not used on goods +ProposalStats=Statistics on proposals +OrderStats=Statistics on orders +InvoiceStats=Statistics on bills +Dispatch=Dispatching +Dispatched=Dispatched +ToDispatch=To dispatch +ThirdPartyMustBeEditAsCustomer=Third party must be defined as a customer +SellsJournal=Sales Journal +PurchasesJournal=Purchases Journal +DescSellsJournal=Sales Journal +DescPurchasesJournal=Purchases Journal +InvoiceRef=Invoice ref. +CodeNotDef=Not defined +AddRemind=Dispatch available amount +RemainToDivide= Remain to dispatch : +WarningDepositsNotIncluded=Deposits invoices are not included in this version with this accountancy module. +DatePaymentTermCantBeLowerThanObjectDate=Payment term date can't be lower than object date. +Pcg_version=Pcg version +Pcg_type=Pcg type +Pcg_subtype=Pcg subtype +InvoiceLinesToDispatch=Invoice lines to dispatch +InvoiceDispatched=Dispatched invoices +AccountancyDashboard=Accountancy summary +ByProductsAndServices=By products and services +RefExt=External ref +ToCreateAPredefinedInvoice=To create a predefined invoice, create a standard invoice then, without validating it, click onto button "Convert to predefined invoice". +LinkedOrder=Link to order +ReCalculate=Recalculate +Mode1=Method 1 +Mode2=Method 2 +CalculationRuleDesc=To calculate total VAT, there is two methods:
Method 1 is rounding vat on each line, then summing them.
Method 2 is summing all vat on each line, then rounding result.
Final result may differs from few cents. Default mode is mode %s. +CalculationRuleDescSupplier=according to supplier, choose appropriate method to apply same calculation rule and get same result expected by your supplier. +TurnoverPerProductInCommitmentAccountingNotRelevant=Turnover report per product, when using a cash accountancy mode is not relevant. This report is only available when using engagement accountancy mode (see setup of accountancy module). +CalculationMode=Calculation mode +AccountancyJournal=Accountancy code journal +ACCOUNTING_VAT_ACCOUNT=Default accountancy code for collecting VAT +ACCOUNTING_VAT_BUY_ACCOUNT=Default accountancy code for paying VAT +ACCOUNTING_ACCOUNT_CUSTOMER=Accountancy code by default for customer thirdparties +ACCOUNTING_ACCOUNT_SUPPLIER=Accountancy code by default for supplier thirdparties +CloneTax=Clone a social contribution +ConfirmCloneTax=Confirm the clone of a social contribution +CloneTaxForNextMonth=Clone it for next month diff --git a/htdocs/langs/kn_IN/contracts.lang b/htdocs/langs/kn_IN/contracts.lang new file mode 100644 index 00000000000..d1be0e6513f --- /dev/null +++ b/htdocs/langs/kn_IN/contracts.lang @@ -0,0 +1,103 @@ +# Dolibarr language file - Source file is en_US - contracts +ContractsArea=Contracts area +ListOfContracts=List of contracts +LastModifiedContracts=Last %s modified contracts +AllContracts=All contracts +ContractCard=Contract card +ContractStatus=Contract status +ContractStatusNotRunning=Not running +ContractStatusRunning=Running +ContractStatusDraft=Draft +ContractStatusValidated=Validated +ContractStatusClosed=Closed +ServiceStatusInitial=Not running +ServiceStatusRunning=Running +ServiceStatusNotLate=Running, not expired +ServiceStatusNotLateShort=Not expired +ServiceStatusLate=Running, expired +ServiceStatusLateShort=Expired +ServiceStatusClosed=Closed +ServicesLegend=Services legend +Contracts=Contracts +ContractsAndLine=Contracts and line of contracts +Contract=Contract +NoContracts=No contracts +MenuServices=Services +MenuInactiveServices=Services not active +MenuRunningServices=Running services +MenuExpiredServices=Expired services +MenuClosedServices=Closed services +NewContract=New contract +AddContract=Create contract +SearchAContract=Search a contract +DeleteAContract=Delete a contract +CloseAContract=Close a contract +ConfirmDeleteAContract=Are you sure you want to delete this contract and all its services ? +ConfirmValidateContract=Are you sure you want to validate this contract under name %s ? +ConfirmCloseContract=This will close all services (active or not). Are you sure you want to close this contract ? +ConfirmCloseService=Are you sure you want to close this service with date %s ? +ValidateAContract=Validate a contract +ActivateService=Activate service +ConfirmActivateService=Are you sure you want to activate this service with date %s ? +RefContract=Contract reference +DateContract=Contract date +DateServiceActivate=Service activation date +DateServiceUnactivate=Service deactivation date +DateServiceStart=Date for beginning of service +DateServiceEnd=Date for end of service +ShowContract=Show contract +ListOfServices=List of services +ListOfInactiveServices=List of not active services +ListOfExpiredServices=List of expired active services +ListOfClosedServices=List of closed services +ListOfRunningContractsLines=List of running contract lines +ListOfRunningServices=List of running services +NotActivatedServices=Inactive services (among validated contracts) +BoardNotActivatedServices=Services to activate among validated contracts +LastContracts=Last %s contracts +LastActivatedServices=Last %s activated services +LastModifiedServices=Last %s modified services +EditServiceLine=Edit service line +ContractStartDate=Start date +ContractEndDate=End date +DateStartPlanned=Planned start date +DateStartPlannedShort=Planned start date +DateEndPlanned=Planned end date +DateEndPlannedShort=Planned end date +DateStartReal=Real start date +DateStartRealShort=Real start date +DateEndReal=Real end date +DateEndRealShort=Real end date +NbOfServices=Nb of services +CloseService=Close service +ServicesNomberShort=%s service(s) +RunningServices=Running services +BoardRunningServices=Expired running services +ServiceStatus=Status of service +DraftContracts=Drafts contracts +CloseRefusedBecauseOneServiceActive=Contract can't be closed as ther is at least one open service on it +CloseAllContracts=Close all contract lines +DeleteContractLine=Delete a contract line +ConfirmDeleteContractLine=Are you sure you want to delete this contract line ? +MoveToAnotherContract=Move service into another contract. +ConfirmMoveToAnotherContract=I choosed new target contract and confirm I want to move this service into this contract. +ConfirmMoveToAnotherContractQuestion=Choose in which existing contract (of same third party), you want to move this service to ? +PaymentRenewContractId=Renew contract line (number %s) +ExpiredSince=Expiration date +RelatedContracts=Related contracts +NoExpiredServices=No expired active services +ListOfServicesToExpireWithDuration=List of Services to expire in %s days +ListOfServicesToExpireWithDurationNeg=List of Services expired from more than %s days +ListOfServicesToExpire=List of Services to expire +NoteListOfYourExpiredServices=This list contains only services of contracts for third parties you are linked to as a sale representative. +StandardContractsTemplate=Standard contracts template +ContactNameAndSignature=For %s, name and signature: +OnlyLinesWithTypeServiceAreUsed=Only lines with type "Service" will be cloned. + +##### Types de contacts ##### +TypeContact_contrat_internal_SALESREPSIGN=Sales representative signing contract +TypeContact_contrat_internal_SALESREPFOLL=Sales representative following-up contract +TypeContact_contrat_external_BILLING=Billing customer contact +TypeContact_contrat_external_CUSTOMER=Follow-up customer contact +TypeContact_contrat_external_SALESREPSIGN=Signing contract customer contact +Error_CONTRACT_ADDON_NotDefined=Constant CONTRACT_ADDON not defined diff --git a/htdocs/langs/kn_IN/cron.lang b/htdocs/langs/kn_IN/cron.lang new file mode 100644 index 00000000000..28dfc7770b2 --- /dev/null +++ b/htdocs/langs/kn_IN/cron.lang @@ -0,0 +1,87 @@ +# Dolibarr language file - Source file is en_US - cron +# About page +About = About +CronAbout = About Cron +CronAboutPage = Cron about page +# Right +Permission23101 = Read Scheduled task +Permission23102 = Create/update Scheduled task +Permission23103 = Delete Scheduled task +Permission23104 = Execute Scheduled task +# Admin +CronSetup= Scheduled job management setup +URLToLaunchCronJobs=URL to check and launch cron jobs if required +OrToLaunchASpecificJob=Or to check and launch a specific job +KeyForCronAccess=Security key for URL to launch cron jobs +FileToLaunchCronJobs=Command line to launch cron jobs +CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes +CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes +# Menu +CronJobs=Scheduled jobs +CronListActive=List of active/scheduled jobs +CronListInactive=List of disabled jobs +# Page list +CronDateLastRun=Last run +CronLastOutput=Last run output +CronLastResult=Last result code +CronListOfCronJobs=List of scheduled jobs +CronCommand=Command +CronList=Jobs list +CronDelete= Delete cron jobs +CronConfirmDelete= Are you sure you want to delete this cron job ? +CronExecute=Launch job +CronConfirmExecute= Are you sure to execute this job now +CronInfo= Jobs allow to execute task that have been planned +CronWaitingJobs=Wainting jobs +CronTask=Job +CronNone= None +CronDtStart=Start date +CronDtEnd=End date +CronDtNextLaunch=Next execution +CronDtLastLaunch=Last execution +CronFrequency=Frequancy +CronClass=Classe +CronMethod=Method +CronModule=Module +CronAction=Action +CronStatus=Status +CronStatusActive=Enabled +CronStatusInactive=Disabled +CronNoJobs=No jobs registered +CronPriority=Priority +CronLabel=Description +CronNbRun=Nb. launch +CronEach=Every +JobFinished=Job launched and finished +#Page card +CronAdd= Add jobs +CronHourStart= Start Hour and date of task +CronEvery= And execute task each +CronObject= Instance/Object to create +CronArgs=Parameters +CronSaveSucess=Save succesfully +CronNote=Comment +CronFieldMandatory=Fields %s is mandatory +CronErrEndDateStartDt=End date cannot be before start date +CronStatusActiveBtn=Enable +CronStatusInactiveBtn=Disable +CronTaskInactive=This job is disabled +CronDtLastResult=Last result date +CronId=Id +CronClassFile=Classes (filename.class.php) +CronModuleHelp=Name of Dolibarr module directory (also work with external Dolibarr module).
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of module is product +CronClassFileHelp=The file name to load.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of class file name is product.class.php +CronObjectHelp=The object name to load.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of class file name is Product +CronMethodHelp=The object method to launch.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of method is is fecth +CronArgsHelp=The method arguments.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of paramters can be 0, ProductRef +CronCommandHelp=The system command line to execute. +# Info +CronInfoPage=Information +# Common +CronType=Task type +CronType_method=Call method of a Dolibarr Class +CronType_command=Shell command +CronMenu=Cron +CronCannotLoadClass=Cannot load class %s or object %s +UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/kn_IN/deliveries.lang b/htdocs/langs/kn_IN/deliveries.lang new file mode 100644 index 00000000000..d711c3704b4 --- /dev/null +++ b/htdocs/langs/kn_IN/deliveries.lang @@ -0,0 +1,28 @@ +# Dolibarr language file - Source file is en_US - deliveries +Delivery=Delivery +Deliveries=Deliveries +DeliveryCard=Delivery card +DeliveryOrder=Delivery order +DeliveryOrders=Delivery orders +DeliveryDate=Delivery date +DeliveryDateShort=Deliv. date +CreateDeliveryOrder=Generate delivery order +QtyDelivered=Qty delivered +SetDeliveryDate=Set shipping date +ValidateDeliveryReceipt=Validate delivery receipt +ValidateDeliveryReceiptConfirm=Are you sure you want to validate this delivery receipt ? +DeleteDeliveryReceipt=Delete delivery receipt +DeleteDeliveryReceiptConfirm=Are you sure you want to delete delivery receipt %s ? +DeliveryMethod=Delivery method +TrackingNumber=Tracking number +DeliveryNotValidated=Delivery not validated +# merou PDF model +NameAndSignature=Name and Signature : +ToAndDate=To___________________________________ on ____/_____/__________ +GoodStatusDeclaration=Have received the goods above in good condition, +Deliverer=Deliverer : +Sender=Sender +Recipient=Recipient +ErrorStockIsNotEnough=There's not enough stock +Shippable=Shippable +NonShippable=Not Shippable diff --git a/htdocs/langs/kn_IN/dict.lang b/htdocs/langs/kn_IN/dict.lang new file mode 100644 index 00000000000..bef1f4821b4 --- /dev/null +++ b/htdocs/langs/kn_IN/dict.lang @@ -0,0 +1,327 @@ +# Dolibarr language file - Source file is en_US - dict +CountryFR=France +CountryBE=Belgium +CountryIT=Italy +CountryES=Spain +CountryDE=Germany +CountryCH=Switzerland +CountryGB=Great Britain +CountryUK=United Kingdom +CountryIE=Ireland +CountryCN=China +CountryTN=Tunisia +CountryUS=United States +CountryMA=Morocco +CountryDZ=Algeria +CountryCA=Canada +CountryTG=Togo +CountryGA=Gabon +CountryNL=Netherlands +CountryHU=Hungary +CountryRU=Russia +CountrySE=Sweden +CountryCI=Ivoiry Coast +CountrySN=Senegal +CountryAR=Argentina +CountryCM=Cameroon +CountryPT=Portugal +CountrySA=Saudi Arabia +CountryMC=Monaco +CountryAU=Australia +CountrySG=Singapore +CountryAF=Afghanistan +CountryAX=Åland Islands +CountryAL=Albania +CountryAS=American Samoa +CountryAD=Andorra +CountryAO=Angola +CountryAI=Anguilla +CountryAQ=Antarctica +CountryAG=Antigua and Barbuda +CountryAM=Armenia +CountryAW=Aruba +CountryAT=Austria +CountryAZ=Azerbaijan +CountryBS=Bahamas +CountryBH=Bahrain +CountryBD=Bangladesh +CountryBB=Barbados +CountryBY=Belarus +CountryBZ=Belize +CountryBJ=Benin +CountryBM=Bermuda +CountryBT=Bhutan +CountryBO=Bolivia +CountryBA=Bosnia and Herzegovina +CountryBW=Botswana +CountryBV=Bouvet Island +CountryBR=Brazil +CountryIO=British Indian Ocean Territory +CountryBN=Brunei Darussalam +CountryBG=Bulgaria +CountryBF=Burkina Faso +CountryBI=Burundi +CountryKH=Cambodia +CountryCV=Cape Verde +CountryKY=Cayman Islands +CountryCF=Central African Republic +CountryTD=Chad +CountryCL=Chile +CountryCX=Christmas Island +CountryCC=Cocos (Keeling) Islands +CountryCO=Colombia +CountryKM=Comoros +CountryCG=Congo +CountryCD=Congo, The Democratic Republic of the +CountryCK=Cook Islands +CountryCR=Costa Rica +CountryHR=Croatia +CountryCU=Cuba +CountryCY=Cyprus +CountryCZ=Czech Republic +CountryDK=Denmark +CountryDJ=Djibouti +CountryDM=Dominica +CountryDO=Dominican Republic +CountryEC=Ecuador +CountryEG=Egypt +CountrySV=El Salvador +CountryGQ=Equatorial Guinea +CountryER=Eritrea +CountryEE=Estonia +CountryET=Ethiopia +CountryFK=Falkland Islands +CountryFO=Faroe Islands +CountryFJ=Fiji Islands +CountryFI=Finland +CountryGF=French Guiana +CountryPF=French Polynesia +CountryTF=French Southern Territories +CountryGM=Gambia +CountryGE=Georgia +CountryGH=Ghana +CountryGI=Gibraltar +CountryGR=Greece +CountryGL=Greenland +CountryGD=Grenada +CountryGP=Guadeloupe +CountryGU=Guam +CountryGT=Guatemala +CountryGN=Guinea +CountryGW=Guinea-Bissau +CountryGY=Guyana +CountryHT=Haïti +CountryHM=Heard Island and McDonald +CountryVA=Holy See (Vatican City State) +CountryHN=Honduras +CountryHK=Hong Kong +CountryIS=Icelande +CountryIN=India +CountryID=Indonesia +CountryIR=Iran +CountryIQ=Iraq +CountryIL=Israel +CountryJM=Jamaica +CountryJP=Japan +CountryJO=Jordan +CountryKZ=Kazakhstan +CountryKE=Kenya +CountryKI=Kiribati +CountryKP=North Korea +CountryKR=South Korea +CountryKW=Kuwait +CountryKG=Kyrghyztan +CountryLA=Lao +CountryLV=Latvia +CountryLB=Lebanon +CountryLS=Lesotho +CountryLR=Liberia +CountryLY=Libyan +CountryLI=Liechtenstein +CountryLT=Lituania +CountryLU=Luxembourg +CountryMO=Macao +CountryMK=Macedonia, the former Yugoslav of +CountryMG=Madagascar +CountryMW=Malawi +CountryMY=Malaysia +CountryMV=Maldives +CountryML=Mali +CountryMT=Malta +CountryMH=Marshall Islands +CountryMQ=Martinique +CountryMR=Mauritania +CountryMU=Mauritius +CountryYT=Mayotte +CountryMX=Mexico +CountryFM=Micronesia +CountryMD=Moldova +CountryMN=Mongolia +CountryMS=Monserrat +CountryMZ=Mozambique +CountryMM=Birmania (Myanmar) +CountryNA=Namibia +CountryNR=Nauru +CountryNP=Nepal +CountryAN=Netherlands Antilles +CountryNC=New Caledonia +CountryNZ=New Zealand +CountryNI=Nicaragua +CountryNE=Niger +CountryNG=Nigeria +CountryNU=Niue +CountryNF=Norfolk Island +CountryMP=Northern Mariana Islands +CountryNO=Norway +CountryOM=Oman +CountryPK=Pakistan +CountryPW=Palau +CountryPS=Palestinian Territory, Occupied +CountryPA=Panama +CountryPG=Papua New Guinea +CountryPY=Paraguay +CountryPE=Peru +CountryPH=Philippines +CountryPN=Pitcairn Islands +CountryPL=Poland +CountryPR=Puerto Rico +CountryQA=Qatar +CountryRE=Reunion +CountryRO=Romania +CountryRW=Rwanda +CountrySH=Saint Helena +CountryKN=Saint Kitts and Nevis +CountryLC=Saint Lucia +CountryPM=Saint Pierre and Miquelon +CountryVC=Saint Vincent and Grenadines +CountryWS=Samoa +CountrySM=San Marino +CountryST=Sao Tome and Principe +CountryRS=Serbia +CountrySC=Seychelles +CountrySL=Sierra Leone +CountrySK=Slovakia +CountrySI=Slovenia +CountrySB=Solomon Islands +CountrySO=Somalia +CountryZA=South Africa +CountryGS=South Georgia and the South Sandwich Islands +CountryLK=Sri Lanka +CountrySD=Sudan +CountrySR=Suriname +CountrySJ=Svalbard and Jan Mayen +CountrySZ=Swaziland +CountrySY=Syrian +CountryTW=Taiwan +CountryTJ=Tajikistan +CountryTZ=Tanzania +CountryTH=Thailand +CountryTL=Timor-Leste +CountryTK=Tokelau +CountryTO=Tonga +CountryTT=Trinidad and Tobago +CountryTR=Turkey +CountryTM=Turkmenistan +CountryTC=Turks and Cailos Islands +CountryTV=Tuvalu +CountryUG=Uganda +CountryUA=Ukraine +CountryAE=United Arab Emirates +CountryUM=United States Minor Outlying Islands +CountryUY=Uruguay +CountryUZ=Uzbekistan +CountryVU=Vanuatu +CountryVE=Venezuela +CountryVN=Viet Nam +CountryVG=Virgin Islands, British +CountryVI=Virgin Islands, U.S. +CountryWF=Wallis and Futuna +CountryEH=Western Sahara +CountryYE=Yemen +CountryZM=Zambia +CountryZW=Zimbabwe +CountryGG=Guernsey +CountryIM=Isle of Man +CountryJE=Jersey +CountryME=Montenegro +CountryBL=Saint Barthelemy +CountryMF=Saint Martin + +##### Civilities ##### +CivilityMME=Mrs. +CivilityMR=Mr. +CivilityMLE=Ms. +CivilityMTRE=Master +CivilityDR=Doctor +##### Currencies ##### +Currencyeuros=Euros +CurrencyAUD=AU Dollars +CurrencySingAUD=AU Dollar +CurrencyCAD=CAN Dollars +CurrencySingCAD=CAN Dollar +CurrencyCHF=Swiss Francs +CurrencySingCHF=Swiss Franc +CurrencyEUR=Euros +CurrencySingEUR=Euro +CurrencyFRF=French Francs +CurrencySingFRF=French Franc +CurrencyGBP=GB Pounds +CurrencySingGBP=GB Pound +CurrencyINR=Indian rupees +CurrencySingINR=Indian rupee +CurrencyMAD=Dirham +CurrencySingMAD=Dirham +CurrencyMGA=Ariary +CurrencySingMGA=Ariary +CurrencyMUR=Mauritius rupees +CurrencySingMUR=Mauritius rupee +CurrencyNOK=Norwegian krones +CurrencySingNOK=Norwegian krone +CurrencyTND=Tunisian dinars +CurrencySingTND=Tunisian dinar +CurrencyUSD=US Dollars +CurrencySingUSD=US Dollar +CurrencyUAH=Hryvnia +CurrencySingUAH=Hryvnia +CurrencyXAF=CFA Francs BEAC +CurrencySingXAF=CFA Franc BEAC +CurrencyXOF=CFA Francs BCEAO +CurrencySingXOF=CFA Franc BCEAO +CurrencyXPF=CFP Francs +CurrencySingXPF=CFP Franc +CurrencyCentSingEUR=cent +CurrencyCentINR=paisa +CurrencyCentSingINR=paise +CurrencyThousandthSingTND=thousandth +#### Input reasons ##### +DemandReasonTypeSRC_INTE=Internet +DemandReasonTypeSRC_CAMP_MAIL=Mailing campaign +DemandReasonTypeSRC_CAMP_EMAIL=EMailing campaign +DemandReasonTypeSRC_CAMP_PHO=Phone campaign +DemandReasonTypeSRC_CAMP_FAX=Fax campaign +DemandReasonTypeSRC_COMM=Commercial contact +DemandReasonTypeSRC_SHOP=Shop contact +DemandReasonTypeSRC_WOM=Word of mouth +DemandReasonTypeSRC_PARTNER=Partner +DemandReasonTypeSRC_EMPLOYEE=Employee +DemandReasonTypeSRC_SPONSORING=Sponsorship +#### Paper formats #### +PaperFormatEU4A0=Format 4A0 +PaperFormatEU2A0=Format 2A0 +PaperFormatEUA0=Format A0 +PaperFormatEUA1=Format A1 +PaperFormatEUA2=Format A2 +PaperFormatEUA3=Format A3 +PaperFormatEUA4=Format A4 +PaperFormatEUA5=Format A5 +PaperFormatEUA6=Format A6 +PaperFormatUSLETTER=Format Letter US +PaperFormatUSLEGAL=Format Legal US +PaperFormatUSEXECUTIVE=Format Executive US +PaperFormatUSLEDGER=Format Ledger/Tabloid +PaperFormatCAP1=Format P1 Canada +PaperFormatCAP2=Format P2 Canada +PaperFormatCAP3=Format P3 Canada +PaperFormatCAP4=Format P4 Canada +PaperFormatCAP5=Format P5 Canada +PaperFormatCAP6=Format P6 Canada diff --git a/htdocs/langs/kn_IN/donations.lang b/htdocs/langs/kn_IN/donations.lang new file mode 100644 index 00000000000..f7aed91cf81 --- /dev/null +++ b/htdocs/langs/kn_IN/donations.lang @@ -0,0 +1,38 @@ +# Dolibarr language file - Source file is en_US - donations +Donation=Donation +Donations=Donations +DonationRef=Donation ref. +Donor=Donor +Donors=Donors +AddDonation=Create a donation +NewDonation=New donation +ShowDonation=Show donation +DonationPromise=Gift promise +PromisesNotValid=Not validated promises +PromisesValid=Validated promises +DonationsPaid=Donations paid +DonationsReceived=Donations received +PublicDonation=Public donation +DonationsNumber=Donation number +DonationsArea=Donations area +DonationStatusPromiseNotValidated=Draft promise +DonationStatusPromiseValidated=Validated promise +DonationStatusPaid=Donation received +DonationStatusPromiseNotValidatedShort=Draft +DonationStatusPromiseValidatedShort=Validated +DonationStatusPaidShort=Received +ValidPromess=Validate promise +DonationReceipt=Donation receipt +BuildDonationReceipt=Build receipt +DonationsModels=Documents models for donation receipts +LastModifiedDonations=Last %s modified donations +SearchADonation=Search a donation +DonationRecipient=Donation recipient +ThankYou=Thank You +IConfirmDonationReception=The recipient declare reception, as a donation, of the following amount +MinimumAmount=Minimum amount is %s +FreeTextOnDonations=Free text to show in footer +FrenchOptions=Options for France +DONATION_ART200=Show article 200 from CGI if you are concerned +DONATION_ART238=Show article 238 from CGI if you are concerned +DONATION_ART885=Show article 885 from CGI if you are concerned diff --git a/htdocs/langs/kn_IN/ecm.lang b/htdocs/langs/kn_IN/ecm.lang new file mode 100644 index 00000000000..4a1931a3217 --- /dev/null +++ b/htdocs/langs/kn_IN/ecm.lang @@ -0,0 +1,57 @@ +# Dolibarr language file - Source file is en_US - ecm +MenuECM=Documents +DocsMine=My documents +DocsGenerated=Generated documents +DocsElements=Elements documents +DocsThirdParties=Documents third parties +DocsContracts=Documents contracts +DocsProposals=Documents proposals +DocsOrders=Documents orders +DocsInvoices=Documents invoices +ECMNbOfDocs=Nb of documents in directory +ECMNbOfDocsSmall=Nb of doc. +ECMSection=Directory +ECMSectionManual=Manual directory +ECMSectionAuto=Automatic directory +ECMSectionsManual=Manual tree +ECMSectionsAuto=Automatic tree +ECMSections=Directories +ECMRoot=Root +ECMNewSection=New directory +ECMAddSection=Add directory +ECMNewDocument=New document +ECMCreationDate=Creation date +ECMNbOfFilesInDir=Number of files in directory +ECMNbOfSubDir=Number of sub-directories +ECMNbOfFilesInSubDir=Number of files in sub-directories +ECMCreationUser=Creator +ECMArea=EDM area +ECMAreaDesc=The EDM (Electronic Document Management) area allows you to save, share and search quickly all kind of documents in Dolibarr. +ECMAreaDesc2=* Automatic directories are filled automatically when adding documents from card of an element.
* Manual directories can be used to save documents not linked to a particular element. +ECMSectionWasRemoved=Directory %s has been deleted. +ECMDocumentsSection=Document of directory +ECMSearchByKeywords=Search by keywords +ECMSearchByEntity=Search by object +ECMSectionOfDocuments=Directories of documents +ECMTypeManual=Manual +ECMTypeAuto=Automatic +ECMDocsBySocialContributions=Documents linked to social contributions +ECMDocsByThirdParties=Documents linked to third parties +ECMDocsByProposals=Documents linked to proposals +ECMDocsByOrders=Documents linked to customers orders +ECMDocsByContracts=Documents linked to contracts +ECMDocsByInvoices=Documents linked to customers invoices +ECMDocsByProducts=Documents linked to products +ECMDocsByProjects=Documents linked to projects +ECMDocsByUsers=Documents linked to users +ECMDocsByInterventions=Documents linked to interventions +ECMNoDirectoryYet=No directory created +ShowECMSection=Show directory +DeleteSection=Remove directory +ConfirmDeleteSection=Can you confirm you want to delete the directory %s ? +ECMDirectoryForFiles=Relative directory for files +CannotRemoveDirectoryContainsFiles=Removed not possible because it contains some files +ECMFileManager=File manager +ECMSelectASection=Select a directory on left tree... +DirNotSynchronizedSyncFirst=This directory seems to be created or modified outside ECM module. You must click on "Refresh" button first to synchronize disk and database to get content of this directory. + diff --git a/htdocs/langs/kn_IN/errors.lang b/htdocs/langs/kn_IN/errors.lang new file mode 100644 index 00000000000..700e6344d7d --- /dev/null +++ b/htdocs/langs/kn_IN/errors.lang @@ -0,0 +1,183 @@ +# Dolibarr language file - Source file is en_US - errors + +# No errors +NoErrorCommitIsDone=No error, we commit +# Errors +Error=Error +Errors=Errors +ErrorButCommitIsDone=Errors found but we validate despite this +ErrorBadEMail=EMail %s is wrong +ErrorBadUrl=Url %s is wrong +ErrorLoginAlreadyExists=Login %s already exists. +ErrorGroupAlreadyExists=Group %s already exists. +ErrorRecordNotFound=Record not found. +ErrorFailToCopyFile=Failed to copy file '%s' into '%s'. +ErrorFailToRenameFile=Failed to rename file '%s' into '%s'. +ErrorFailToDeleteFile=Failed to remove file '%s'. +ErrorFailToCreateFile=Failed to create file '%s'. +ErrorFailToRenameDir=Failed to rename directory '%s' into '%s'. +ErrorFailToCreateDir=Failed to create directory '%s'. +ErrorFailToDeleteDir=Failed to delete directory '%s'. +ErrorFailedToDeleteJoinedFiles=Can not delete environment because there is some joined files. Remove join files first. +ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as contact for this type. +ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. +ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. +ErrorBadThirdPartyName=Bad value for third party name +ErrorProdIdIsMandatory=The %s is mandatory +ErrorBadCustomerCodeSyntax=Bad syntax for customer code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. +ErrorCustomerCodeRequired=Customer code required +ErrorBarCodeRequired=Bar code required +ErrorCustomerCodeAlreadyUsed=Customer code already used +ErrorBarCodeAlreadyUsed=Bar code already used +ErrorPrefixRequired=Prefix required +ErrorUrlNotValid=The website address is incorrect +ErrorBadSupplierCodeSyntax=Bad syntax for supplier code +ErrorSupplierCodeRequired=Supplier code required +ErrorSupplierCodeAlreadyUsed=Supplier code already used +ErrorBadParameters=Bad parameters +ErrorBadValueForParameter=Wrong value '%s' for parameter incorrect '%s' +ErrorBadImageFormat=Image file has not a supported format (Your PHP does not support functions to convert images of this format) +ErrorBadDateFormat=Value '%s' has wrong date format +ErrorWrongDate=Date is not correct! +ErrorFailedToWriteInDir=Failed to write in directory %s +ErrorFoundBadEmailInFile=Found incorrect email syntax for %s lines in file (example line %s with email=%s) +ErrorUserCannotBeDelete=User can not be deleted. May be it is associated on Dolibarr entities. +ErrorFieldsRequired=Some required fields were not filled. +ErrorFailedToCreateDir=Failed to create a directory. Check that Web server user has permissions to write into Dolibarr documents directory. If parameter safe_mode is enabled on this PHP, check that Dolibarr php files owns to web server user (or group). +ErrorNoMailDefinedForThisUser=No mail defined for this user +ErrorFeatureNeedJavascript=This feature need javascript to be activated to work. Change this in setup - display. +ErrorTopMenuMustHaveAParentWithId0=A menu of type 'Top' can't have a parent menu. Put 0 in parent menu or choose a menu of type 'Left'. +ErrorLeftMenuMustHaveAParentId=A menu of type 'Left' must have a parent id. +ErrorFileNotFound=File %s not found (Bad path, wrong permissions or access denied by PHP openbasedir or safe_mode parameter) +ErrorDirNotFound=Directory %s not found (Bad path, wrong permissions or access denied by PHP openbasedir or safe_mode parameter) +ErrorFunctionNotAvailableInPHP=Function %s is required for this feature but is not available in this version/setup of PHP. +ErrorDirAlreadyExists=A directory with this name already exists. +ErrorFileAlreadyExists=A file with this name already exists. +ErrorPartialFile=File not received completely by server. +ErrorNoTmpDir=Temporary directy %s does not exists. +ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. +ErrorFileSizeTooLarge=File size is too large. +ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) +ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) +ErrorNoValueForSelectType=Please fill value for select list +ErrorNoValueForCheckBoxType=Please fill value for checkbox list +ErrorNoValueForRadioType=Please fill value for radio list +ErrorBadFormatValueList=The list value cannot have more than one come : %s, but need at least one: llave,valores +ErrorFieldCanNotContainSpecialCharacters=Field %s must not contains special characters. +ErrorFieldCanNotContainSpecialNorUpperCharacters=Field %s must not contains special characters, nor upper case characters. +ErrorNoAccountancyModuleLoaded=No accountancy module activated +ErrorExportDuplicateProfil=This profile name already exists for this export set. +ErrorLDAPSetupNotComplete=Dolibarr-LDAP matching is not complete. +ErrorLDAPMakeManualTest=A .ldif file has been generated in directory %s. Try to load it manually from command line to have more information on errors. +ErrorCantSaveADoneUserWithZeroPercentage=Can't save an action with "statut not started" if field "done by" is also filled. +ErrorRefAlreadyExists=Ref used for creation already exists. +ErrorPleaseTypeBankTransactionReportName=Please type bank receipt name where transaction is reported (Format YYYYMM or YYYYMMDD) +ErrorRecordHasChildren=Failed to delete records since it has some childs. +ErrorRecordIsUsedCantDelete=Can't delete record. It is already used or included into other object. +ErrorModuleRequireJavascript=Javascript must not be disabled to have this feature working. To enable/disable Javascript, go to menu Home->Setup->Display. +ErrorPasswordsMustMatch=Both typed passwords must match each other +ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. +ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) +ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) +ErrorsOnXLines=Errors on %s source record(s) +ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) +ErrorSpecialCharNotAllowedForField=Special characters are not allowed for field "%s" +ErrorDatabaseParameterWrong=Database setup parameter '%s' has a value not compatible to use Dolibarr (must have value '%s'). +ErrorNumRefModel=A reference exists into database (%s) and is not compatible with this numbering rule. Remove record or renamed reference to activate this module. +ErrorQtyTooLowForThisSupplier=Quantity too low for this supplier or no price defined on this product for this supplier +ErrorModuleSetupNotComplete=Setup of module looks to be uncomplete. Go on Setup - Modules to complete. +ErrorBadMask=Error on mask +ErrorBadMaskFailedToLocatePosOfSequence=Error, mask without sequence number +ErrorBadMaskBadRazMonth=Error, bad reset value +ErrorMaxNumberReachForThisMask=Max number reach for this mask +ErrorCounterMustHaveMoreThan3Digits=Counter must have more than 3 digits +ErrorSelectAtLeastOne=Error. Select at least one entry. +ErrorProductWithRefNotExist=Product with reference '%s' don't exist +ErrorDeleteNotPossibleLineIsConsolidated=Delete not possible because record is linked to a bank transation that is conciliated +ErrorProdIdAlreadyExist=%s is assigned to another third +ErrorFailedToSendPassword=Failed to send password +ErrorFailedToLoadRSSFile=Fails to get RSS feed. Try to add constant MAIN_SIMPLEXMLLOAD_DEBUG if error messages does not provide enough information. +ErrorPasswordDiffers=Passwords differs, please type them again. +ErrorForbidden=Access denied.
You try to access to a page, area or feature without being in an authenticated session or that is not allowed to your user. +ErrorForbidden2=Permission for this login can be defined by your Dolibarr administrator from menu %s->%s. +ErrorForbidden3=It seems that Dolibarr is not used through an authenticated session. Take a look at Dolibarr setup documentation to know how to manage authentications (htaccess, mod_auth or other...). +ErrorNoImagickReadimage=Class Imagick is not found in this PHP. No preview can be available. Administrators can disable this tab from menu Setup - Display. +ErrorRecordAlreadyExists=Record already exists +ErrorCantReadFile=Failed to read file '%s' +ErrorCantReadDir=Failed to read directory '%s' +ErrorFailedToFindEntity=Failed to read environment '%s' +ErrorBadLoginPassword=Bad value for login or password +ErrorLoginDisabled=Your account has been disabled +ErrorFailedToRunExternalCommand=Failed to run external command. Check it is available and runnable by your PHP server. If PHP Safe Mode is enabled, check that command is inside a directory defined by parameter safe_mode_exec_dir. +ErrorFailedToChangePassword=Failed to change password +ErrorLoginDoesNotExists=User with login %s could not be found. +ErrorLoginHasNoEmail=This user has no email address. Process aborted. +ErrorBadValueForCode=Bad value for security code. Try again with new value... +ErrorBothFieldCantBeNegative=Fields %s and %s can't be both negative +ErrorQtyForCustomerInvoiceCantBeNegative=Quantity for line into customer invoices can't be negative +ErrorWebServerUserHasNotPermission=User account %s used to execute web server has no permission for that +ErrorNoActivatedBarcode=No barcode type activated +ErrUnzipFails=Failed to unzip %s with ZipArchive +ErrNoZipEngine=No engine to unzip %s file in this PHP +ErrorFileMustBeADolibarrPackage=The file %s must be a Dolibarr zip package +ErrorFileRequired=It takes a package Dolibarr file +ErrorPhpCurlNotInstalled=The PHP CURL is not installed, this is essential to talk with Paypal +ErrorFailedToAddToMailmanList=Failed to add record %s to Mailman list %s or SPIP base +ErrorFailedToRemoveToMailmanList=Failed to remove record %s to Mailman list %s or SPIP base +ErrorNewValueCantMatchOldValue=New value can't be equal to old one +ErrorFailedToValidatePasswordReset=Failed to reinit password. May be the reinit was already done (this link can be used only one time). If not, try to restart the reinit process. +ErrorToConnectToMysqlCheckInstance=Connect to database fails. Check Mysql server is running (in most cases, you can launch it from command line with 'sudo /etc/init.d/mysql start'). +ErrorFailedToAddContact=Failed to add contact +ErrorDateMustBeBeforeToday=The date can not be greater than today +ErrorPaymentModeDefinedToWithoutSetup=A payment mode was set to type %s but setup of module Invoice was not completed to define information to show for this payment mode. +ErrorPHPNeedModule=Error, your PHP must have module %s installed to use this feature. +ErrorOpenIDSetupNotComplete=You setup Dolibarr config file to allow OpenID authentication, but URL of OpenID service is not defined into constant %s +ErrorWarehouseMustDiffers=Source and target warehouses must differs +ErrorBadFormat=Bad format! +ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Error, this member is not yet linked to any thirdparty. Link member to an existing third party or create a new thirdparty before creating subscription with invoice. +ErrorThereIsSomeDeliveries=Error, there is some deliveries linked to this shipment. Deletion refused. +ErrorCantDeletePaymentReconciliated=Can't delete a payment that had generated a bank transaction that was conciliated +ErrorCantDeletePaymentSharedWithPayedInvoice=Can't delete a payment shared by at least one invoice with status Payed +ErrorPriceExpression1=Cannot assign to constant '%s' +ErrorPriceExpression2=Cannot redefine built-in function '%s' +ErrorPriceExpression3=Undefined variable '%s' in function definition +ErrorPriceExpression4=Illegal character '%s' +ErrorPriceExpression5=Unexpected '%s' +ErrorPriceExpression6=Wrong number of arguments (%s given, %s expected) +ErrorPriceExpression8=Unexpected operator '%s' +ErrorPriceExpression9=An unexpected error occured +ErrorPriceExpression10=Iperator '%s' lacks operand +ErrorPriceExpression11=Expecting '%s' +ErrorPriceExpression14=Division by zero +ErrorPriceExpression17=Undefined variable '%s' +ErrorPriceExpression19=Expression not found +ErrorPriceExpression20=Empty expression +ErrorPriceExpression21=Empty result '%s' +ErrorPriceExpression22=Negative result '%s' +ErrorPriceExpressionInternal=Internal error '%s' +ErrorPriceExpressionUnknown=Unknown error '%s' +ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs +ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action + +# Warnings +WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined +WarningSafeModeOnCheckExecDir=Warning, PHP option safe_mode is on so command must be stored inside a directory declared by php parameter safe_mode_exec_dir. +WarningAllowUrlFopenMustBeOn=Parameter allow_url_fopen must be set to on in filer php.ini for having this module working completely. You must modify this file manually. +WarningBuildScriptNotRunned=Script %s was not yet ran to build graphics, or there is no data to show. +WarningBookmarkAlreadyExists=A bookmark with this title or this target (URL) already exists. +WarningPassIsEmpty=Warning, database password is empty. This is a security hole. You should add a password to your database and change your conf.php file to reflect this. +WarningConfFileMustBeReadOnly=Warning, your config file (htdocs/conf/conf.php) can be overwritten by the web server. This is a serious security hole. Modify permissions on file to be in read only mode for operating system user used by Web server. If you use Windows and FAT format for your disk, you must know that this file system does not allow to add permissions on file, so can't be completely safe. +WarningsOnXLines=Warnings on %s source record(s) +WarningNoDocumentModelActivated=No model, for document generation, has been activated. A model will be choosed by default until you check your module setup. +WarningLockFileDoesNotExists=Warning, once setup is finished, you must disable install/migrate tools by adding a file install.lock into directory %s. Missing this file is a security hole. +WarningUntilDirRemoved=All security warnings (visible by admin users only) will remain active as long as the vulnerability is present (or that constant MAIN_REMOVE_INSTALL_WARNING is added in Setup->Other setup). +WarningCloseAlways=Warning, closing is done even if amount differs between source and target elements. Enable this feature with caution. +WarningUsingThisBoxSlowDown=Warning, using this box slow down seriously all pages showing the box. +WarningClickToDialUserSetupNotComplete=Setup of ClickToDial information for your user are not complete (see tab ClickToDial onto your user card). +WarningNotRelevant=Irrelevant operation for this dataset +WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=Feature disabled when display setup is optimized for blind person or text browsers. +WarningPaymentDateLowerThanInvoiceDate=Payment date (%s) is earlier than invoice date (%s) for invoice %s. +WarningTooManyDataPleaseUseMoreFilters=Too many data. Please use more filters diff --git a/htdocs/langs/kn_IN/exports.lang b/htdocs/langs/kn_IN/exports.lang new file mode 100644 index 00000000000..d79df485608 --- /dev/null +++ b/htdocs/langs/kn_IN/exports.lang @@ -0,0 +1,134 @@ +# Dolibarr language file - Source file is en_US - exports +ExportsArea=Exports area +ImportArea=Import area +NewExport=New export +NewImport=New import +ExportableDatas=Exportable dataset +ImportableDatas=Importable dataset +SelectExportDataSet=Choose dataset you want to export... +SelectImportDataSet=Choose dataset you want to import... +SelectExportFields=Choose fields you want to export, or select a predefined export profile +SelectImportFields=Choose source file fields you want to import and their target field in database by moving them up and down with anchor %s, or select a predefined import profile: +NotImportedFields=Fields of source file not imported +SaveExportModel=Save this export profile if you plan to reuse it later... +SaveImportModel=Save this import profile if you plan to reuse it later... +ExportModelName=Export profile name +ExportModelSaved=Export profile saved under name %s. +ExportableFields=Exportable fields +ExportedFields=Exported fields +ImportModelName=Import profile name +ImportModelSaved=Import profile saved under name %s. +ImportableFields=Importable fields +ImportedFields=Imported fields +DatasetToExport=Dataset to export +DatasetToImport=Import file into dataset +NoDiscardedFields=No fields in source file are discarded +Dataset=Dataset +ChooseFieldsOrdersAndTitle=Choose fields order... +FieldsOrder=Fields order +FieldsTitle=Fields title +FieldOrder=Field order +FieldTitle=Field title +ChooseExportFormat=Choose export format +NowClickToGenerateToBuildExportFile=Now, select file format in combo box and click on "Generate" to build export file... +AvailableFormats=Available formats +LibraryShort=Library +LibraryUsed=Library used +LibraryVersion=Version +Step=Step +FormatedImport=Import assistant +FormatedImportDesc1=This area allows to import personalized data, using an assistant to help you in process without technical knowledge. +FormatedImportDesc2=First step is to choose a king of data you want to load, then file to load, then to choose which fields you want to load. +FormatedExport=Export assistant +FormatedExportDesc1=This area allows to export personalized data, using an assistant to help you in process without technical knowledge. +FormatedExportDesc2=First step is to choose a predefined dataset, then to choose which fields you want in your result files, and which order. +FormatedExportDesc3=When data to export are selected, you can define output file format you want to export your data to. +Sheet=Sheet +NoImportableData=No importable data (no module with definitions to allow data imports) +FileSuccessfullyBuilt=Export file generated +SQLUsedForExport=SQL Request used to build export file +LineId=Id of line +LineDescription=Description of line +LineUnitPrice=Unit price of line +LineVATRate=VAT Rate of line +LineQty=Quantity for line +LineTotalHT=Amount net of tax for line +LineTotalTTC=Amount with tax for line +LineTotalVAT=Amount of VAT for line +TypeOfLineServiceOrProduct=Type of line (0=product, 1=service) +FileWithDataToImport=File with data to import +FileToImport=Source file to import +FileMustHaveOneOfFollowingFormat=File to import must have one of following format +DownloadEmptyExample=Download example of empty source file +ChooseFormatOfFileToImport=Choose file format to use as import file format by clicking on picto %s to select it... +ChooseFileToImport=Upload file then click on picto %s to select file as source import file... +SourceFileFormat=Source file format +FieldsInSourceFile=Fields in source file +FieldsInTargetDatabase=Target fields in Dolibarr database (bold=mandatory) +Field=Field +NoFields=No fields +MoveField=Move field column number %s +ExampleOfImportFile=Example_of_import_file +SaveImportProfile=Save this import profile +ErrorImportDuplicateProfil=Failed to save this import profile with this name. An existing profile already exists with this name. +ImportSummary=Import setup summary +TablesTarget=Targeted tables +FieldsTarget=Targeted fields +TableTarget=Targeted table +FieldTarget=Targeted field +FieldSource=Source field +DoNotImportFirstLine=Do not import first line of source file +NbOfSourceLines=Number of lines in source file +NowClickToTestTheImport=Check import parameters you have defined. If they are correct, click on button "%s" to launch a simulation of import process (no data will be changed in your database, it's only a simulation for the moment)... +RunSimulateImportFile=Launch the import simulation +FieldNeedSource=This field requires data from the source file +SomeMandatoryFieldHaveNoSource=Some mandatory fields have no source from data file +InformationOnSourceFile=Information on source file +InformationOnTargetTables=Information on target fields +SelectAtLeastOneField=Switch at least one source field in the column of fields to export +SelectFormat=Choose this import file format +RunImportFile=Launch import file +NowClickToRunTheImport=Check result of import simulation. If everything is ok, launch the definitive import. +DataLoadedWithId=All data will be loaded with the following import id: %s +ErrorMissingMandatoryValue=Mandatory data is empty in source file for field %s. +TooMuchErrors=There is still %s other source lines with errors but output has been limited. +TooMuchWarnings=There is still %s other source lines with warnings but output has been limited. +EmptyLine=Empty line (will be discarded) +CorrectErrorBeforeRunningImport=You must first correct all errors before running definitive import. +FileWasImported=File was imported with number %s. +YouCanUseImportIdToFindRecord=You can find all imported records in your database by filtering on field import_key='%s'. +NbOfLinesOK=Number of lines with no errors and no warnings: %s. +NbOfLinesImported=Number of lines successfully imported: %s. +DataComeFromNoWhere=Value to insert comes from nowhere in source file. +DataComeFromFileFieldNb=Value to insert comes from field number %s in source file. +DataComeFromIdFoundFromRef=Value that comes from field number %s of source file will be used to find id of parent object to use (So the objet %s that has the ref. from source file must exists into Dolibarr). +DataComeFromIdFoundFromCodeId=Code that comes from field number %s of source file will be used to find id of parent object to use (So the code from source file must exists into dictionary %s). Note that if you know id, you can also use it into source file instead of code. Import should work in both cases. +DataIsInsertedInto=Data coming from source file will be inserted into the following field: +DataIDSourceIsInsertedInto=The id of parent object found using the data in source file, will be inserted into the following field: +DataCodeIDSourceIsInsertedInto=The id of parent line found from code, will be inserted into following field: +SourceRequired=Data value is mandatory +SourceExample=Example of possible data value +ExampleAnyRefFoundIntoElement=Any ref found for element %s +ExampleAnyCodeOrIdFoundIntoDictionary=Any code (or id) found into dictionary %s +CSVFormatDesc=Comma Separated Value file format (.csv).
This is a text file format where fields are separated by separator [ %s ]. If separator is found inside a field content, field is rounded by round character [ %s ]. Escape character to escape round character is [ %s ]. +Excel95FormatDesc=Excel file format (.xls)
This is native Excel 95 format (BIFF5). +Excel2007FormatDesc=Excel file format (.xlsx)
This is native Excel 2007 format (SpreadsheetML). +TsvFormatDesc=Tab Separated Value file format (.tsv)
This is a text file format where fields are separated by a tabulator [tab]. +ExportFieldAutomaticallyAdded=Field %s was automatically added. It will avoid you to have similar lines to be treated as duplicate records (with this field added, all lines will own their own id and will differ). +CsvOptions=Csv Options +Separator=Separator +Enclosure=Enclosure +SuppliersProducts=Suppliers Products +BankCode=Bank code +DeskCode=Desk code +BankAccountNumber=Account number +BankAccountNumberKey=Key +SpecialCode=Special code +ExportStringFilter=%% allows replacing one or more characters in the text +ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day
YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days
> YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days
< YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days +ExportNumericFilter='NNNNN' filters by one value
'NNNNN+NNNNN' filters over a range of values
'>NNNNN' filters by lower values
'>NNNNN' filters by higher values +## filters +SelectFilterFields=If you want to filter on some values, just input values here. +FilterableFields=Champs Filtrables +FilteredFields=Filtered fields +FilteredFieldsValues=Value for filter diff --git a/htdocs/langs/kn_IN/externalsite.lang b/htdocs/langs/kn_IN/externalsite.lang new file mode 100644 index 00000000000..da4853df0df --- /dev/null +++ b/htdocs/langs/kn_IN/externalsite.lang @@ -0,0 +1,5 @@ +# Dolibarr language file - Source file is en_US - externalsite +ExternalSiteSetup=Setup link to external website +ExternalSiteURL=External Site URL +ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. +ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/kn_IN/ftp.lang b/htdocs/langs/kn_IN/ftp.lang new file mode 100644 index 00000000000..9984ce689ee --- /dev/null +++ b/htdocs/langs/kn_IN/ftp.lang @@ -0,0 +1,12 @@ +# Dolibarr language file - Source file is en_US - ftp +FTPClientSetup=FTP Client module setup +NewFTPClient=New FTP connection setup +FTPArea=FTP Area +FTPAreaDesc=This screen show you content of a FTP server view +SetupOfFTPClientModuleNotComplete=Setup of FTP client module seems to be not complete +FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions +FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) +FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password +FTPFailedToRemoveFile=Failed to remove file %s. +FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that directory is empty). +FTPPassiveMode=Passive mode diff --git a/htdocs/langs/kn_IN/help.lang b/htdocs/langs/kn_IN/help.lang new file mode 100644 index 00000000000..1bbd6e94f03 --- /dev/null +++ b/htdocs/langs/kn_IN/help.lang @@ -0,0 +1,28 @@ +# Dolibarr language file - Source file is en_US - help +CommunitySupport=Forum/Wiki support +EMailSupport=Emails support +RemoteControlSupport=Online real time / remote support +OtherSupport=Other support +ToSeeListOfAvailableRessources=To contact/see available resources: +ClickHere=Click here +HelpCenter=Help center +DolibarrHelpCenter=Dolibarr help and support center +ToGoBackToDolibarr=Otherwise, click here to use Dolibarr +TypeOfSupport=Source of support +TypeSupportCommunauty=Community (free) +TypeSupportCommercial=Commercial +TypeOfHelp=Type +NeedHelpCenter=Need help or support ? +Efficiency=Efficiency +TypeHelpOnly=Help only +TypeHelpDev=Help+Development +TypeHelpDevForm=Help+Development+Formation +ToGetHelpGoOnSparkAngels1=Some companies can provide a fast (sometime immediate) and more efficient online support by taking control of your computer. Such helpers can be found on %s web site: +ToGetHelpGoOnSparkAngels3=You can also go to the list of all available coaches for Dolibarr, for this click on button +ToGetHelpGoOnSparkAngels2=Sometimes, there is no company available at the moment you make your search, so think to change the filter to look for "all availability". You will be able to send more requests. +BackToHelpCenter=Otherwise, click here to go back to help center home page. +LinkToGoldMember=You can call one of the coach preselected by Dolibarr for your language (%s) by clicking his Widget (status and maximum price are automatically updated): +PossibleLanguages=Supported languages +MakeADonation=Help Dolibarr project, make a donation +SubscribeToFoundation=Help Dolibarr project, subscribe to the foundation +SeeOfficalSupport=For official Dolibarr support in your language:
%s diff --git a/htdocs/langs/kn_IN/holiday.lang b/htdocs/langs/kn_IN/holiday.lang new file mode 100644 index 00000000000..f5b87fefb08 --- /dev/null +++ b/htdocs/langs/kn_IN/holiday.lang @@ -0,0 +1,148 @@ +# Dolibarr language file - Source file is en_US - holiday +HRM=HRM +Holidays=Leaves +CPTitreMenu=Leaves +MenuReportMonth=Monthly statement +MenuAddCP=Make a leave request +NotActiveModCP=You must enable the module Leaves to view this page. +NotConfigModCP=You must configure the module Leaves to view this page. To do this, click here . +NoCPforUser=You don't have any available day. +AddCP=Make a leave request +Employe=Employee +DateDebCP=Start date +DateFinCP=End date +DateCreateCP=Creation date +DraftCP=Draft +ToReviewCP=Awaiting approval +ApprovedCP=Approved +CancelCP=Canceled +RefuseCP=Refused +ValidatorCP=Approbator +ListeCP=List of leaves +ReviewedByCP=Will be reviewed by +DescCP=Description +SendRequestCP=Create leave request +DelayToRequestCP=Leave requests must be made at least %s day(s) before them. +MenuConfCP=Edit balance of leaves +UpdateAllCP=Update the leaves +SoldeCPUser=Leaves balance is %s days. +ErrorEndDateCP=You must select an end date greater than the start date. +ErrorSQLCreateCP=An SQL error occurred during the creation: +ErrorIDFicheCP=An error has occurred, the leave request does not exist. +ReturnCP=Return to previous page +ErrorUserViewCP=You are not authorized to read this leave request. +InfosCP=Information of the leave request +InfosWorkflowCP=Information Workflow +RequestByCP=Requested by +TitreRequestCP=Leave request +NbUseDaysCP=Number of days of vacation consumed +EditCP=Edit +DeleteCP=Delete +ActionValidCP=Validate +ActionRefuseCP=Refuse +ActionCancelCP=Cancel +StatutCP=Status +SendToValidationCP=Send to validation +TitleDeleteCP=Delete the leave request +ConfirmDeleteCP=Confirm the deletion of this leave request? +ErrorCantDeleteCP=Error you don't have the right to delete this leave request. +CantCreateCP=You don't have the right to make leave requests. +InvalidValidatorCP=You must choose an approbator to your leave request. +CantUpdate=You cannot update this leave request. +NoDateDebut=You must select a start date. +NoDateFin=You must select an end date. +ErrorDureeCP=Your leave request does not contain working day. +TitleValidCP=Approve the leave request +ConfirmValidCP=Are you sure you want to approve the leave request? +DateValidCP=Date approved +TitleToValidCP=Send leave request +ConfirmToValidCP=Are you sure you want to send the leave request? +TitleRefuseCP=Refuse the leave request +ConfirmRefuseCP=Are you sure you want to refuse the leave request? +NoMotifRefuseCP=You must choose a reason for refusing the request. +TitleCancelCP=Cancel the leave request +ConfirmCancelCP=Are you sure you want to cancel the leave request? +DetailRefusCP=Reason for refusal +DateRefusCP=Date of refusal +DateCancelCP=Date of cancellation +DefineEventUserCP=Assign an exceptional leave for a user +addEventToUserCP=Assign leave +MotifCP=Reason +UserCP=User +ErrorAddEventToUserCP=An error occurred while adding the exceptional leave. +AddEventToUserOkCP=The addition of the exceptional leave has been completed. +MenuLogCP=View logs of leave requests +LogCP=Log of updates of available vacation days +ActionByCP=Performed by +UserUpdateCP=For the user +PrevSoldeCP=Previous Balance +NewSoldeCP=New Balance +alreadyCPexist=A leave request has already been done on this period. +UserName=Name +Employee=Employee +FirstDayOfHoliday=First day of vacation +LastDayOfHoliday=Last day of vacation +HolidaysMonthlyUpdate=Monthly update +ManualUpdate=Manual update +HolidaysCancelation=Leave request cancelation + +## Configuration du Module ## +ConfCP=Configuration of leave request module +DescOptionCP=Description of the option +ValueOptionCP=Value +GroupToValidateCP=Group with the ability to approve leave requests +ConfirmConfigCP=Validate the configuration +LastUpdateCP=Last automatic update of leaves allocation +UpdateConfCPOK=Updated successfully. +ErrorUpdateConfCP=An error occurred during the update, please try again. +AddCPforUsers=Please add the balance of leaves allocation of users by clicking here. +DelayForSubmitCP=Deadline to make a leave requests +AlertapprobatortorDelayCP=Prevent the approbator if the leave request does not match the deadline +AlertValidatorDelayCP=Préevent the approbator if the leave request exceed delay +AlertValidorSoldeCP=Prevent the approbator if the leave request exceed the balance +nbUserCP=Number of users supported in the module Leaves +nbHolidayDeductedCP=Number of leave days to be deducted per day of vacation taken +nbHolidayEveryMonthCP=Number of leave days added every month +Module27130Name= Management of leave requests +Module27130Desc= Management of leave requests +TitleOptionMainCP=Main settings of leave request +TitleOptionEventCP=Settings of leave requets for events +ValidEventCP=Validate +UpdateEventCP=Update events +CreateEventCP=Create +NameEventCP=Event name +OkCreateEventCP=The addition of the event went well. +ErrorCreateEventCP=Error creating the event. +UpdateEventOkCP=The update of the event went well. +ErrorUpdateEventCP=Error while updating the event. +DeleteEventCP=Delete Event +DeleteEventOkCP=The event has been deleted. +ErrorDeleteEventCP=Error while deleting the event. +TitleDeleteEventCP=Delete a exceptional leave +TitleCreateEventCP=Create a exceptional leave +TitleUpdateEventCP=Edit or delete a exceptional leave +DeleteEventOptionCP=Delete +UpdateEventOptionCP=Update +ErrorMailNotSend=An error occurred while sending email: +NoCPforMonth=No leave this month. +nbJours=Number days +TitleAdminCP=Configuration of Leaves +#Messages +Hello=Hello +HolidaysToValidate=Validate leave requests +HolidaysToValidateBody=Below is a leave request to validate +HolidaysToValidateDelay=This leave request will take place within a period of less than %s days. +HolidaysToValidateAlertSolde=The user who made this leave reques do not have enough available days. +HolidaysValidated=Validated leave requests +HolidaysValidatedBody=Your leave request for %s to %s has been validated. +HolidaysRefused=Request denied +HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason : +HolidaysCanceled=Canceled leaved request +HolidaysCanceledBody=Your leave request for %s to %s has been canceled. +Permission20000=Read you own leave requests +Permission20001=Create/modify your leave requests +Permission20002=Create/modify leave requests for everybody +Permission20003=Delete leave requests +Permission20004=Setup users available vacation days +Permission20005=Review log of modified leave requests +Permission20006=Read leaves monthly report diff --git a/htdocs/langs/kn_IN/install.lang b/htdocs/langs/kn_IN/install.lang new file mode 100644 index 00000000000..dcd8df6e7db --- /dev/null +++ b/htdocs/langs/kn_IN/install.lang @@ -0,0 +1,214 @@ +# Dolibarr language file - Source file is en_US - install +InstallEasy=Just follow the instructions step by step. +MiscellaneousChecks=Prerequisites check +DolibarrWelcome=Welcome to Dolibarr +ConfFileExists=Configuration file %s exists. +ConfFileDoesNotExists=Configuration file %s does not exist ! +ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file %s does not exist and could not be created ! +ConfFileCouldBeCreated=Configuration file %s could be created. +ConfFileIsNotWritable=Configuration file %s is not writable. Check permissions. For first install, your web server must be granted to be able to write into this file during configuration process ("chmod 666" for example on a Unix like OS). +ConfFileIsWritable=Configuration file %s is writable. +ConfFileReload=Reload all information from configuration file. +PHPSupportSessions=This PHP supports sessions. +PHPSupportPOSTGETOk=This PHP supports variables POST and GET. +PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check your parameter variables_order in php.ini. +PHPSupportGD=This PHP support GD graphical functions. +PHPSupportUTF8=This PHP support UTF8 functions. +PHPMemoryOK=Your PHP max session memory is set to %s. This should be enough. +PHPMemoryTooLow=Your PHP max session memory is set to %s bytes. This should be too low. Change your php.ini to set memory_limit parameter to at least %s bytes. +Recheck=Click here for a more significative test +ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to make Dolibarr working. Check your PHP setup. +ErrorPHPDoesNotSupportGD=Your PHP installation does not support graphical function GD. No graph will be available. +ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr can't work correctly. Solve this before installing Dolibarr. +ErrorDirDoesNotExists=Directory %s does not exist. +ErrorGoBackAndCorrectParameters=Go backward and correct wrong parameters. +ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'. +ErrorFailedToCreateDatabase=Failed to create database '%s'. +ErrorFailedToConnectToDatabase=Failed to connect to database '%s'. +ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. +ErrorPHPVersionTooLow=PHP version too old. Version %s is required. +WarningPHPVersionTooLow=PHP version too old. Version %s or more is expected. This version should allow install but is not supported. +ErrorConnectedButDatabaseNotFound=Connection to server successfull but database '%s' not found. +ErrorDatabaseAlreadyExists=Database '%s' already exists. +IfDatabaseNotExistsGoBackAndUncheckCreate=If database does not exists, go back and check option "Create database". +IfDatabaseExistsGoBackAndCheckCreate=If database already exists, go back and uncheck "Create database" option. +WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded. +PHPVersion=PHP Version +YouCanContinue=You can continue... +PleaseBePatient=Please be patient... +License=Using license +ConfigurationFile=Configuration file +WebPagesDirectory=Directory where web pages are stored +DocumentsDirectory=Directory to store uploaded and generated documents +URLRoot=URL Root +ForceHttps=Force secure connections (https) +CheckToForceHttps=Check this option to force secure connections (https).
This requires that the web server is configured with an SSL certificate. +DolibarrDatabase=Dolibarr Database +DatabaseChoice=Database choice +DatabaseType=Database type +DriverType=Driver type +Server=Server +ServerAddressDescription=Name or ip address for database server, usually 'localhost' when database server is hosted on same server than web server +ServerPortDescription=Database server port. Keep empty if unknown. +DatabaseServer=Database server +DatabaseName=Database name +DatabasePrefix=Database prefix table +Login=Login +AdminLogin=Login for Dolibarr database owner. +Password=Password +PasswordAgain=Retype password a second time +AdminPassword=Password for Dolibarr database owner. +CreateDatabase=Create database +CreateUser=Create owner +DatabaseSuperUserAccess=Database server - Superuser access +CheckToCreateDatabase=Check box if database does not exist and must be created.
In this case, you must fill the login/password for superuser account at the bottom of this page. +CheckToCreateUser=Check box if database owner does not exist and must be created.
In this case, you must choose its login and password and also fill the login/password for the superuser account at the bottom of this page. If this box is unchecked, owner database and its passwords must exists. +Experimental=(experimental) +DatabaseRootLoginDescription=Login of the user allowed to create new databases or new users, mandatory if your database or its owner does not already exists. +KeepEmptyIfNoPassword=Leave empty if user has no password (avoid this) +SaveConfigurationFile=Save values +ConfigurationSaving=Saving configuration file +ServerConnection=Server connection +DatabaseConnection=Database connection +DatabaseCreation=Database creation +UserCreation=User creation +CreateDatabaseObjects=Database objects creation +ReferenceDataLoading=Reference data loading +TablesAndPrimaryKeysCreation=Tables and Primary keys creation +CreateTableAndPrimaryKey=Create table %s +CreateOtherKeysForTable=Create foreign keys and indexes for table %s +OtherKeysCreation=Foreign keys and indexes creation +FunctionsCreation=Functions creation +AdminAccountCreation=Administrator login creation +PleaseTypePassword=Please type a password, empty passwords are not allowed ! +PleaseTypeALogin=Please type a login ! +PasswordsMismatch=Passwords differs, please try again ! +SetupEnd=End of setup +SystemIsInstalled=This installation is complete. +SystemIsUpgraded=Dolibarr has been upgraded successfully. +YouNeedToPersonalizeSetup=You need to configure Dolibarr to suit your needs (appearance, features, ...). To do this, please follow the link below: +AdminLoginCreatedSuccessfuly=Dolibarr administrator login '%s' created successfuly. +GoToDolibarr=Go to Dolibarr +GoToSetupArea=Go to Dolibarr (setup area) +MigrationNotFinished=Version of your database is not completely up to date, so you'll have to run the upgrade process again. +GoToUpgradePage=Go to upgrade page again +Examples=Examples +WithNoSlashAtTheEnd=Without the slash "/" at the end +DirectoryRecommendation=It is recommanded to use a directory outside of your directory of your web pages. +LoginAlreadyExists=Already exists +DolibarrAdminLogin=Dolibarr admin login +AdminLoginAlreadyExists=Dolibarr administrator account '%s' already exists. Go back, if you want to create another one. +WarningRemoveInstallDir=Warning, for security reasons, once the install or upgrade is complete, to avoid using install tools again, you should add a file called install.lock into Dolibarr document directory, in order to avoid malicious use of it. +ThisPHPDoesNotSupportTypeBase=This PHP system does not support any interface to access database type %s +FunctionNotAvailableInThisPHP=Not available on this PHP +MigrateScript=Migration script +ChoosedMigrateScript=Choose migration script +DataMigration=Data migration +DatabaseMigration=Structure database migration +ProcessMigrateScript=Script processing +ChooseYourSetupMode=Choose your setup mode and click "Start"... +FreshInstall=Fresh install +FreshInstallDesc=Use this mode if this is your first install. If not, this mode can repair a incomplete previous install, but if you want to upgrade your version, choose "Upgrade" mode. +Upgrade=Upgrade +UpgradeDesc=Use this mode if you have replaced old Dolibarr files with files from a newer version. This will upgrade your database and data. +Start=Start +InstallNotAllowed=Setup not allowed by conf.php permissions +NotAvailable=Not available +YouMustCreateWithPermission=You must create file %s and set write permissions on it for the web server during install process. +CorrectProblemAndReloadPage=Please fix the problem and press F5 to reload page. +AlreadyDone=Already migrated +DatabaseVersion=Database version +ServerVersion=Database server version +YouMustCreateItAndAllowServerToWrite=You must create this directory and allow for the web server to write into it. +CharsetChoice=Character set choice +CharacterSetClient=Character set used for generated HTML web pages +CharacterSetClientComment=Choose character set for web display.
Default proposed character set is the one of your database. +DBSortingCollation=Character sorting order +DBSortingCollationComment=Choose page code that defines character's sorting order used by database. This parameter is also called 'collation' by some databases.
This parameter can't be defined if database already exists. +CharacterSetDatabase=Character set for database +CharacterSetDatabaseComment=Choose character set wanted for database creation.
This parameter can't be defined if database already exists. +YouAskDatabaseCreationSoDolibarrNeedToConnect=You ask to create database %s, but for this, Dolibarr need to connect to server %s with super user %s permissions. +YouAskLoginCreationSoDolibarrNeedToConnect=You ask to create database login %s, but for this, Dolibarr need to connect to server %s with super user %s permissions. +BecauseConnectionFailedParametersMayBeWrong=As connection failed, host or super user parameters must be wrong. +OrphelinsPaymentsDetectedByMethod=Orphans payment detected by method %s +RemoveItManuallyAndPressF5ToContinue=Remove it manually and press F5 to continue. +KeepDefaultValuesWamp=You use the Dolibarr setup wizard from DoliWamp, so values proposed here are already optimized. Change them only if you know what you do. +KeepDefaultValuesDeb=You use the Dolibarr setup wizard from a Linux package (Ubuntu, Debian, Fedora...), so values proposed here are already optimized. Only the password of the database owner to create must be completed. Change other parameters only if you know what you do. +KeepDefaultValuesMamp=You use the Dolibarr setup wizard from DoliMamp, so values proposed here are already optimized. Change them only if you know what you do. +KeepDefaultValuesProxmox=You use the Dolibarr setup wizard from a Proxmox virtual appliance, so values proposed here are already optimized. Change them only if you know what you do. +FieldRenamed=Field renamed +IfLoginDoesNotExistsCheckCreateUser=If login does not exists yet, you must check option "Create user" +ErrorConnection=Server "%s", database name "%s", login "%s", or database password may be wrong or PHP client version may be too old compared to database version. +InstallChoiceRecommanded=Recommended choice to install version %s from your current version %s +InstallChoiceSuggested=Install choice suggested by installer. +MigrateIsDoneStepByStep=The targeted version (%s) has a gap of several versions, so install wizard will come back to suggest next migration once this one will be finished. +CheckThatDatabasenameIsCorrect=Check that database name "%s" is correct. +IfAlreadyExistsCheckOption=If this name is correct and that database does not exist yet, you must check option "Create database". +OpenBaseDir=PHP openbasedir parameter +YouAskToCreateDatabaseSoRootRequired=You checked the box "Create database". For this, you need to provide login/password of superuser (bottom of form). +YouAskToCreateDatabaseUserSoRootRequired=You checked the box "Create database owner". For this, you need to provide login/password of superuser (bottom of form). +NextStepMightLastALongTime=Current step may last several minutes. Please wait until the next screen is shown completely before continuing. +MigrationCustomerOrderShipping=Migrate shipping for customer orders storage +MigrationShippingDelivery=Upgrade storage of shipping +MigrationShippingDelivery2=Upgrade storage of shipping 2 +MigrationFinished=Migration finished +LastStepDesc=Last step: Define here login and password you plan to use to connect to software. Do not loose this as it is the account to administer all others. +ActivateModule=Activate module %s +ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) +WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) + +######### +# upgrade +MigrationFixData=Fix for denormalized data +MigrationOrder=Data migration for customer's orders +MigrationSupplierOrder=Data migration for supplier's orders +MigrationProposal=Data migration for commercial proposals +MigrationInvoice=Data migration for customer's invoices +MigrationContract=Data migration for contracts +MigrationSuccessfullUpdate=Upgrade successful +MigrationUpdateFailed=Failed upgrade process +MigrationRelationshipTables=Data migration for relationship tables (%s) +MigrationPaymentsUpdate=Payment data correction +MigrationPaymentsNumberToUpdate=%s payment(s) to update +MigrationProcessPaymentUpdate=Update payment(s) %s +MigrationPaymentsNothingToUpdate=No more things to do +MigrationPaymentsNothingUpdatable=No more payments that can be corrected +MigrationContractsUpdate=Contract data correction +MigrationContractsNumberToUpdate=%s contract(s) to update +MigrationContractsLineCreation=Create contract line for contract ref %s +MigrationContractsNothingToUpdate=No more things to do +MigrationContractsFieldDontExist=Field fk_facture does not exists anymore. Nothing to do. +MigrationContractsEmptyDatesUpdate=Contract empty date correction +MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfuly +MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct +MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct +MigrationContractsInvalidDatesUpdate=Bad value date contract correction +MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting service date min=%s) +MigrationContractsInvalidDatesNumber=%s contracts modified +MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct +MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction +MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done succesfuly +MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct +MigrationReopeningContracts=Open contract closed by error +MigrationReopenThisContract=Reopen contract %s +MigrationReopenedContractsNumber=%s contracts modified +MigrationReopeningContractsNothingToUpdate=No closed contract to open +MigrationBankTransfertsUpdate=Update links between bank transaction and a bank transfer +MigrationBankTransfertsNothingToUpdate=All links are up to date +MigrationShipmentOrderMatching=Sendings receipt update +MigrationDeliveryOrderMatching=Delivery receipt update +MigrationDeliveryDetail=Delivery update +MigrationStockDetail=Update stock value of products +MigrationMenusDetail=Update dynamic menus tables +MigrationDeliveryAddress=Update delivery address in shipments +MigrationProjectTaskActors=Data migration for llx_projet_task_actors table +MigrationProjectUserResp=Data migration field fk_user_resp of llx_projet to llx_element_contact +MigrationProjectTaskTime=Update time spent in seconds +MigrationActioncommElement=Update data on actions +MigrationPaymentMode=Data migration for payment mode +MigrationCategorieAssociation=Migration of categories +MigrationEvents=Migration of events to add event owner into assignement table + +ShowNotAvailableOptions=Show not available options +HideNotAvailableOptions=Hide not available options diff --git a/htdocs/langs/kn_IN/interventions.lang b/htdocs/langs/kn_IN/interventions.lang new file mode 100644 index 00000000000..c79da05364e --- /dev/null +++ b/htdocs/langs/kn_IN/interventions.lang @@ -0,0 +1,53 @@ +# Dolibarr language file - Source file is en_US - interventions +Intervention=Intervention +Interventions=Interventions +InterventionCard=Intervention card +NewIntervention=New intervention +AddIntervention=Create intervention +ListOfInterventions=List of interventions +EditIntervention=Edit intervention +ActionsOnFicheInter=Actions on intervention +LastInterventions=Last %s interventions +AllInterventions=All interventions +CreateDraftIntervention=Create draft +CustomerDoesNotHavePrefix=Customer does not have a prefix +InterventionContact=Intervention contact +DeleteIntervention=Delete intervention +ValidateIntervention=Validate intervention +ModifyIntervention=Modify intervention +DeleteInterventionLine=Delete intervention line +ConfirmDeleteIntervention=Are you sure you want to delete this intervention ? +ConfirmValidateIntervention=Are you sure you want to validate this intervention under name %s ? +ConfirmModifyIntervention=Are you sure you want to modify this intervention ? +ConfirmDeleteInterventionLine=Are you sure you want to delete this intervention line ? +NameAndSignatureOfInternalContact=Name and signature of intervening : +NameAndSignatureOfExternalContact=Name and signature of customer : +DocumentModelStandard=Standard document model for interventions +InterventionCardsAndInterventionLines=Interventions and lines of interventions +InterventionClassifyBilled=Classify "Billed" +InterventionClassifyUnBilled=Classify "Unbilled" +StatusInterInvoiced=Billed +RelatedInterventions=Related interventions +ShowIntervention=Show intervention +SendInterventionRef=Submission of intervention %s +SendInterventionByMail=Send intervention by Email +InterventionCreatedInDolibarr=Intervention %s created +InterventionValidatedInDolibarr=Intervention %s validated +InterventionModifiedInDolibarr=Intervention %s modified +InterventionClassifiedBilledInDolibarr=Intervention %s set as billed +InterventionClassifiedUnbilledInDolibarr=Intervention %s set as unbilled +InterventionSentByEMail=Intervention %s sent by EMail +InterventionDeletedInDolibarr=Intervention %s deleted +SearchAnIntervention=Search an intervention +##### Types de contacts ##### +TypeContact_fichinter_internal_INTERREPFOLL=Representative following-up intervention +TypeContact_fichinter_internal_INTERVENING=Intervening +TypeContact_fichinter_external_BILLING=Billing customer contact +TypeContact_fichinter_external_CUSTOMER=Following-up customer contact +# Modele numérotation +ArcticNumRefModelDesc1=Generic number model +ArcticNumRefModelError=Failed to activate +PacificNumRefModelDesc1=Return numero with format %syymm-nnnn where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 +PacificNumRefModelError=An intervention card starting with $syymm already exists and is not compatible with this model of sequence. Remove it or rename it to activate this module. +PrintProductsOnFichinter=Print products on intervention card +PrintProductsOnFichinterDetails=forinterventions generated from orders diff --git a/htdocs/langs/kn_IN/languages.lang b/htdocs/langs/kn_IN/languages.lang new file mode 100644 index 00000000000..d20aab00146 --- /dev/null +++ b/htdocs/langs/kn_IN/languages.lang @@ -0,0 +1,72 @@ +# Dolibarr language file - Source file is en_US - languages + +Language_ar_AR=Arabic +Language_ar_SA=Arabic +Language_bg_BG=Bulgarian +Language_bs_BA=Bosnian +Language_ca_ES=Catalan +Language_cs_CZ=Czech +Language_da_DA=Danish +Language_da_DK=Danish +Language_de_DE=German +Language_de_AT=German (Austria) +Language_de_CH=German (Switzerland) +Language_el_GR=Greek +Language_en_AU=English (Australia) +Language_en_CA=English (Canada) +Language_en_GB=English (United Kingdom) +Language_en_IN=English (India) +Language_en_NZ=English (New Zealand) +Language_en_SA=English (Saudi Arabia) +Language_en_US=English (United States) +Language_en_ZA=English (South Africa) +Language_es_ES=Spanish +Language_es_DO=Spanish (Dominican Republic) +Language_es_AR=Spanish (Argentina) +Language_es_CL=Spanish (Chile) +Language_es_HN=Spanish (Honduras) +Language_es_MX=Spanish (Mexico) +Language_es_PY=Spanish (Paraguay) +Language_es_PE=Spanish (Peru) +Language_es_PR=Spanish (Puerto Rico) +Language_et_EE=Estonian +Language_eu_ES=Basque +Language_fa_IR=Persian +Language_fi_FI=Fins +Language_fr_BE=French (Belgium) +Language_fr_CA=French (Canada) +Language_fr_CH=French (Switzerland) +Language_fr_FR=French +Language_fr_NC=French (New Caledonia) +Language_he_IL=Hebrew +Language_hr_HR=Croatian +Language_hu_HU=Hungarian +Language_id_ID=Indonesian +Language_is_IS=Icelandic +Language_it_IT=Italian +Language_ja_JP=Japanese +Language_ko_KR=Korean +Language_lt_LT=Lithuanian +Language_lv_LV=Latvian +Language_mk_MK=Macedonian +Language_nb_NO=Norwegian (Bokmål) +Language_nl_BE=Dutch (Belgium) +Language_nl_NL=Dutch (Netherlands) +Language_pl_PL=Polish +Language_pt_BR=Portuguese (Brazil) +Language_pt_PT=Portuguese +Language_ro_RO=Romanian +Language_ru_RU=Russian +Language_ru_UA=Russian (Ukraine) +Language_tr_TR=Turkish +Language_sl_SI=Slovenian +Language_sv_SV=Swedish +Language_sv_SE=Swedish +Language_sq_AL=Albanian +Language_sk_SK=Slovakian +Language_th_TH=Thai +Language_uk_UA=Ukrainian +Language_uz_UZ=Uzbek +Language_vi_VN=Vietnamese +Language_zh_CN=Chinese +Language_zh_TW=Chinese (Traditional) diff --git a/htdocs/langs/kn_IN/ldap.lang b/htdocs/langs/kn_IN/ldap.lang new file mode 100644 index 00000000000..02e457446a6 --- /dev/null +++ b/htdocs/langs/kn_IN/ldap.lang @@ -0,0 +1,29 @@ +# Dolibarr language file - Source file is en_US - ldap +DomainPassword=Password for domain +YouMustChangePassNextLogon=Password for user %s on the domain %s must be changed. +UserMustChangePassNextLogon=User must change password on the domain %s +LdapUacf_NORMAL_ACCOUNT=User account +LdapUacf_DONT_EXPIRE_PASSWORD=Password never expires +LdapUacf_ACCOUNTDISABLE=Account is disabled in the domain %s +LDAPInformationsForThisContact=Information in LDAP database for this contact +LDAPInformationsForThisUser=Information in LDAP database for this user +LDAPInformationsForThisGroup=Information in LDAP database for this group +LDAPInformationsForThisMember=Information in LDAP database for this member +LDAPAttribute=LDAP attribute +LDAPAttributes=LDAP attributes +LDAPCard=LDAP card +LDAPRecordNotFound=Record not found in LDAP database +LDAPUsers=Users in LDAP database +LDAPGroups=Groups in LDAP database +LDAPFieldStatus=Status +LDAPFieldFirstSubscriptionDate=First subscription date +LDAPFieldFirstSubscriptionAmount=First subscription amount +LDAPFieldLastSubscriptionDate=Last subscription date +LDAPFieldLastSubscriptionAmount=Last subscription amount +SynchronizeDolibarr2Ldap=Synchronize user (Dolibarr -> LDAP) +UserSynchronized=User synchronized +GroupSynchronized=Group synchronized +MemberSynchronized=Member synchronized +ContactSynchronized=Contact synchronized +ForceSynchronize=Force synchronizing Dolibarr -> LDAP +ErrorFailedToReadLDAP=Failed to read LDAP database. Check LDAP module setup and database accessibility. diff --git a/htdocs/langs/pt_BR/link.lang b/htdocs/langs/kn_IN/link.lang similarity index 59% rename from htdocs/langs/pt_BR/link.lang rename to htdocs/langs/kn_IN/link.lang index c7f0b5b148e..8b1efb75ef3 100644 --- a/htdocs/langs/pt_BR/link.lang +++ b/htdocs/langs/kn_IN/link.lang @@ -1,9 +1,8 @@ -# Dolibarr language file - Source file is en_US - link LinkANewFile=Link a new file/document LinkedFiles=Linked files and documents NoLinkFound=No registered links LinkComplete=The file has been linked successfully ErrorFileNotLinked=The file could not be linked LinkRemoved=The link %s has been removed -ErrorFailedToDeleteLink=Failed to remove link '%s' -ErrorFailedToUpdateLink=Failed to update link '%s' +ErrorFailedToDeleteLink= Failed to remove link '%s' +ErrorFailedToUpdateLink= Failed to update link '%s' diff --git a/htdocs/langs/kn_IN/mailmanspip.lang b/htdocs/langs/kn_IN/mailmanspip.lang new file mode 100644 index 00000000000..c85b3d60db2 --- /dev/null +++ b/htdocs/langs/kn_IN/mailmanspip.lang @@ -0,0 +1,27 @@ +# Dolibarr language file - Source file is en_US - mailmanspip +MailmanSpipSetup=Mailman and SPIP module Setup +MailmanTitle=Mailman mailing list system +TestSubscribe=To test subscription to Mailman lists +TestUnSubscribe=To test unsubscribe from Mailman lists +MailmanCreationSuccess=Subscription test was executed succesfully +MailmanDeletionSuccess=Unsubscription test was executed succesfully +SynchroMailManEnabled=A Mailman update will be performed +SynchroSpipEnabled=A Spip update will be performed +DescADHERENT_MAILMAN_ADMINPW=Mailman administrator password +DescADHERENT_MAILMAN_URL=URL for Mailman subscriptions +DescADHERENT_MAILMAN_UNSUB_URL=URL for Mailman unsubscriptions +DescADHERENT_MAILMAN_LISTS=List(s) for automatic inscription of new members (separated by a comma) +SPIPTitle=SPIP Content Management System +DescADHERENT_SPIP_SERVEUR=SPIP Server +DescADHERENT_SPIP_DB=SPIP database name +DescADHERENT_SPIP_USER=SPIP database login +DescADHERENT_SPIP_PASS=SPIP database password +AddIntoSpip=Add into SPIP +AddIntoSpipConfirmation=Are you sure you want to add this member into SPIP? +AddIntoSpipError=Failed to add the user in SPIP +DeleteIntoSpip=Remove from SPIP +DeleteIntoSpipConfirmation=Are you sure you want to remove this member from SPIP? +DeleteIntoSpipError=Failed to suppress the user from SPIP +SPIPConnectionFailed=Failed to connect to SPIP +SuccessToAddToMailmanList=Add of %s to mailman list %s or SPIP database done +SuccessToRemoveToMailmanList=Removal of %s from mailman list %s or SPIP database done diff --git a/htdocs/langs/kn_IN/mails.lang b/htdocs/langs/kn_IN/mails.lang new file mode 100644 index 00000000000..7a211198822 --- /dev/null +++ b/htdocs/langs/kn_IN/mails.lang @@ -0,0 +1,141 @@ +# Dolibarr language file - Source file is en_US - mails +Mailing=EMailing +EMailing=EMailing +Mailings=EMailings +EMailings=EMailings +AllEMailings=All eMailings +MailCard=EMailing card +MailTargets=Targets +MailRecipients=Recipients +MailRecipient=Recipient +MailTitle=Description +MailFrom=Sender +MailErrorsTo=Errors to +MailReply=Reply to +MailTo=Receiver(s) +MailCC=Copy to +MailCCC=Cached copy to +MailTopic=EMail topic +MailText=Message +MailFile=Attached files +MailMessage=EMail body +ShowEMailing=Show emailing +ListOfEMailings=List of emailings +NewMailing=New emailing +EditMailing=Edit emailing +ResetMailing=Resend emailing +DeleteMailing=Delete emailing +DeleteAMailing=Delete an emailing +PreviewMailing=Preview emailing +PrepareMailing=Prepare emailing +CreateMailing=Create emailing +MailingDesc=This page allows you to send emailings to a group of people. +MailingResult=Sending emails result +TestMailing=Test email +ValidMailing=Valid emailing +ApproveMailing=Approve emailing +MailingStatusDraft=Draft +MailingStatusValidated=Validated +MailingStatusApproved=Approved +MailingStatusSent=Sent +MailingStatusSentPartialy=Sent partialy +MailingStatusSentCompletely=Sent completely +MailingStatusError=Error +MailingStatusNotSent=Not sent +MailSuccessfulySent=Email successfully sent (from %s to %s) +MailingSuccessfullyValidated=EMailing successfully validated +MailUnsubcribe=Unsubscribe +Unsuscribe=Unsubscribe +MailingStatusNotContact=Don't contact anymore +ErrorMailRecipientIsEmpty=Email recipient is empty +WarningNoEMailsAdded=No new Email to add to recipient's list. +ConfirmValidMailing=Are you sure you want to validate this emailing ? +ConfirmResetMailing=Warning, by reinitializing emailing %s, you allow to make a mass sending of this email another time. Are you sure you this is what you want to do ? +ConfirmDeleteMailing=Are you sure you want to delete this emailling ? +NbOfRecipients=Number of recipients +NbOfUniqueEMails=Nb of unique emails +NbOfEMails=Nb of EMails +TotalNbOfDistinctRecipients=Number of distinct recipients +NoTargetYet=No recipients defined yet (Go on tab 'Recipients') +AddRecipients=Add recipients +RemoveRecipient=Remove recipient +CommonSubstitutions=Common substitutions +YouCanAddYourOwnPredefindedListHere=To create your email selector module, see htdocs/core/modules/mailings/README. +EMailTestSubstitutionReplacedByGenericValues=When using test mode, substitutions variables are replaced by generic values +MailingAddFile=Attach this file +NoAttachedFiles=No attached files +BadEMail=Bad value for EMail +CloneEMailing=Clone Emailing +ConfirmCloneEMailing=Are you sure you want to clone this emailing ? +CloneContent=Clone message +CloneReceivers=Cloner recipients +DateLastSend=Date of last sending +DateSending=Date sending +SentTo=Sent to %s +MailingStatusRead=Read +CheckRead=Read Receipt +YourMailUnsubcribeOK=The email %s is correctly unsubcribe from mailing list +MailtoEMail=Hyper link to email +ActivateCheckRead=Allow to use the "Unsubcribe" link +ActivateCheckReadKey=Key use to encrypt URL use for "Read Receipt" and "Unsubcribe" feature +EMailSentToNRecipients=EMail sent to %s recipients. +XTargetsAdded=%s recipients added into target list +EachInvoiceWillBeAttachedToEmail=A document using default invoice document template will be created and attached to each email. +MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s) +SendRemind=Send reminder by EMails +RemindSent=%s reminder(s) sent +AllRecipientSelectedForRemind=All thirdparties selected and if an email is set (note that one mail per invoice will be sent) +NoRemindSent=No EMail reminder sent +ResultOfMassSending=Result of mass EMail reminders sending + +# Libelle des modules de liste de destinataires mailing +MailingModuleDescContactCompanies=Contacts/addresses of all third parties (customer, prospect, supplier, ...) +MailingModuleDescDolibarrUsers=Dolibarr users +MailingModuleDescFundationMembers=Foundation members with emails +MailingModuleDescEmailsFromFile=EMails from a text file (email;lastname;firstname;other) +MailingModuleDescEmailsFromUser=EMails from user input (email;lastname;firstname;other) +MailingModuleDescContactsCategories=Third parties (by category) +MailingModuleDescDolibarrContractsLinesExpired=Third parties with expired contract's lines +MailingModuleDescContactsByCompanyCategory=Contacts/addresses of third parties (by third parties category) +MailingModuleDescContactsByCategory=Contacts/addresses of third parties by category +MailingModuleDescMembersCategories=Foundation members (by categories) +MailingModuleDescContactsByFunction=Contacts/addresses of third parties (by position/function) +LineInFile=Line %s in file +RecipientSelectionModules=Defined requests for recipient's selection +MailSelectedRecipients=Selected recipients +MailingArea=EMailings area +LastMailings=Last %s emailings +TargetsStatistics=Targets statistics +NbOfCompaniesContacts=Unique contacts/addresses +MailNoChangePossible=Recipients for validated emailing can't be changed +SearchAMailing=Search mailing +SendMailing=Send emailing +SendMail=Send email +SentBy=Sent by +MailingNeedCommand=For security reason, sending an emailing is better when performed from command line. If you have one, ask your server administrator to launch the following command to send the emailing to all recipients: +MailingNeedCommand2=You can however send them online by adding parameter MAILING_LIMIT_SENDBYWEB with value of max number of emails you want to send by session. For this, go on Home - Setup - Other. +ConfirmSendingEmailing=If you can't or prefer sending them with your www browser, please confirm you are sure you want to send emailing now from your browser ? +LimitSendingEmailing=Note: Sending of emailings from web interface is done in several times for security and timeout reasons, %s recipients at a time for each sending session. +TargetsReset=Clear list +ToClearAllRecipientsClickHere=Click here to clear the recipient list for this emailing +ToAddRecipientsChooseHere=Add recipients by choosing from the lists +NbOfEMailingsReceived=Mass emailings received +NbOfEMailingsSend=Mass emailings sent +IdRecord=ID record +DeliveryReceipt=Delivery Receipt +YouCanUseCommaSeparatorForSeveralRecipients=You can use the comma separator to specify several recipients. +TagCheckMail=Track mail opening +TagUnsubscribe=Unsubscribe link +TagSignature=Signature sending user +TagMailtoEmail=Recipient EMail +# Module Notifications +Notifications=Notifications +NoNotificationsWillBeSent=No email notifications are planned for this event and company +ANotificationsWillBeSent=1 notification will be sent by email +SomeNotificationsWillBeSent=%s notifications will be sent by email +AddNewNotification=Activate a new email notification target +ListOfActiveNotifications=List all active email notification targets +ListOfNotificationsDone=List all email notifications sent +MailSendSetupIs=Configuration of email sending has been setup to '%s'. This mode can't be used to send mass emailing. +MailSendSetupIs2=You must first go, with an admin account, into menu %sHome - Setup - EMails%s to change parameter '%s' to use mode '%s'. With this mode, you can enter setup of the SMTP server provided by your Internet Service Provider and use Mass emailing feature. +MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s. diff --git a/htdocs/langs/kn_IN/main.lang b/htdocs/langs/kn_IN/main.lang new file mode 100644 index 00000000000..d40e28cb776 --- /dev/null +++ b/htdocs/langs/kn_IN/main.lang @@ -0,0 +1,725 @@ +# Dolibarr language file - Source file is en_US - main +DIRECTION=ltr +# Note for Chinese: +# msungstdlight or cid0ct are for traditional Chinese (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese +# To read Chinese pdf with Linux: sudo apt-get install poppler-data +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 +SeparatorDecimal=. +SeparatorThousand=, +FormatDateShort=%m/%d/%Y +FormatDateShortInput=%m/%d/%Y +FormatDateShortJava=MM/dd/yyyy +FormatDateShortJavaInput=MM/dd/yyyy +FormatDateShortJQuery=mm/dd/yy +FormatDateShortJQueryInput=mm/dd/yy +FormatHourShortJQuery=HH:MI +FormatHourShort=%I:%M %p +FormatHourShortDuration=%H:%M +FormatDateTextShort=%b %d, %Y +FormatDateText=%B %d, %Y +FormatDateHourShort=%m/%d/%Y %I:%M %p +FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p +FormatDateHourTextShort=%b %d, %Y, %I:%M %p +FormatDateHourText=%B %d, %Y, %I:%M %p +DatabaseConnection=Database connection +NoTranslation=No translation +NoRecordFound=No record found +NoError=No error +Error=Error +ErrorFieldRequired=Field '%s' is required +ErrorFieldFormat=Field '%s' has a bad value +ErrorFileDoesNotExists=File %s does not exist +ErrorFailedToOpenFile=Failed to open file %s +ErrorCanNotCreateDir=Can not create dir %s +ErrorCanNotReadDir=Can not read dir %s +ErrorConstantNotDefined=Parameter %s not defined +ErrorUnknown=Unknown error +ErrorSQL=SQL Error +ErrorLogoFileNotFound=Logo file '%s' was not found +ErrorGoToGlobalSetup=Go to 'Company/Foundation' setup to fix this +ErrorGoToModuleSetup=Go to Module setup to fix this +ErrorFailedToSendMail=Failed to send mail (sender=%s, receiver=%s) +ErrorAttachedFilesDisabled=File attaching is disabled on this server +ErrorFileNotUploaded=File was not uploaded. Check that size does not exceed maximum allowed, that free space is available on disk and that there is not already a file with same name in this directory. +ErrorInternalErrorDetected=Error detected +ErrorNoRequestRan=No request ran +ErrorWrongHostParameter=Wrong host parameter +ErrorYourCountryIsNotDefined=Your country is not defined. Go to Home-Setup-Edit and post again the form. +ErrorRecordIsUsedByChild=Failed to delete this record. This record is used by at least one child records. +ErrorWrongValue=Wrong value +ErrorWrongValueForParameterX=Wrong value for parameter %s +ErrorNoRequestInError=No request in error +ErrorServiceUnavailableTryLater=Service not available for the moment. Try again later. +ErrorDuplicateField=Duplicate value in a unique field +ErrorSomeErrorWereFoundRollbackIsDone=Some errors were found. We rollback changes. +ErrorConfigParameterNotDefined=Parameter %s is not defined inside Dolibarr config file conf.php. +ErrorCantLoadUserFromDolibarrDatabase=Failed to find user %s in Dolibarr database. +ErrorNoVATRateDefinedForSellerCountry=Error, no vat rates defined for country '%s'. +ErrorNoSocialContributionForSellerCountry=Error, no social contribution type defined for country '%s'. +ErrorFailedToSaveFile=Error, failed to save file. +SetDate=Set date +SelectDate=Select a date +SeeAlso=See also %s +SeeHere=See here +BackgroundColorByDefault=Default background color +FileNotUploaded=The file was not uploaded +FileUploaded=The file was successfully uploaded +FileWasNotUploaded=A file is selected for attachment but was not yet uploaded. Click on "Attach file" for this. +NbOfEntries=Nb of entries +GoToWikiHelpPage=Read online help (need Internet access) +GoToHelpPage=Read help +RecordSaved=Record saved +RecordDeleted=Record deleted +LevelOfFeature=Level of features +NotDefined=Not defined +DefinedAndHasThisValue=Defined and value to +IsNotDefined=undefined +DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr authentication mode is setup to %s in configuration file conf.php.
This means that password database is extern to Dolibarr, so changing this field may have no effects. +Administrator=Administrator +Undefined=Undefined +PasswordForgotten=Password forgotten ? +SeeAbove=See above +HomeArea=Home area +LastConnexion=Last connection +PreviousConnexion=Previous connection +ConnectedOnMultiCompany=Connected on environment +ConnectedSince=Connected since +AuthenticationMode=Authentification mode +RequestedUrl=Requested Url +DatabaseTypeManager=Database type manager +RequestLastAccess=Request for last database access +RequestLastAccessInError=Request for last database access in error +ReturnCodeLastAccessInError=Return code for last database access in error +InformationLastAccessInError=Information for last database access in error +DolibarrHasDetectedError=Dolibarr has detected a technical error +InformationToHelpDiagnose=This is information that can help diagnostic +MoreInformation=More information +TechnicalInformation=Technical information +NotePublic=Note (public) +NotePrivate=Note (private) +PrecisionUnitIsLimitedToXDecimals=Dolibarr was setup to limit precision of unit prices to %s decimals. +DoTest=Test +ToFilter=Filter +WarningYouHaveAtLeastOneTaskLate=Warning, you have at least one element that has exceeded the tolerance delay. +yes=yes +Yes=Yes +no=no +No=No +All=All +Home=Home +Help=Help +OnlineHelp=Online help +PageWiki=Wiki page +Always=Always +Never=Never +Under=under +Period=Period +PeriodEndDate=End date for period +Activate=Activate +Activated=Activated +Closed=Closed +Closed2=Closed +Enabled=Enabled +Deprecated=Deprecated +Disable=Disable +Disabled=Disabled +Add=Add +AddLink=Add link +Update=Update +AddActionToDo=Add event to do +AddActionDone=Add event done +Close=Close +Close2=Close +Confirm=Confirm +ConfirmSendCardByMail=Do you really want to send content of this card by mail to %s ? +Delete=Delete +Remove=Remove +Resiliate=Resiliate +Cancel=Cancel +Modify=Modify +Edit=Edit +Validate=Validate +ValidateAndApprove=Validate and Approve +ToValidate=To validate +Save=Save +SaveAs=Save As +TestConnection=Test connection +ToClone=Clone +ConfirmClone=Choose data you want to clone : +NoCloneOptionsSpecified=No data to clone defined. +Of=of +Go=Go +Run=Run +CopyOf=Copy of +Show=Show +ShowCardHere=Show card +Search=Search +SearchOf=Search +Valid=Valid +Approve=Approve +Disapprove=Disapprove +ReOpen=Re-Open +Upload=Send file +ToLink=Link +Select=Select +Choose=Choose +ChooseLangage=Please choose your language +Resize=Resize +Recenter=Recenter +Author=Author +User=User +Users=Users +Group=Group +Groups=Groups +NoUserGroupDefined=No user group defined +Password=Password +PasswordRetype=Retype your password +NoteSomeFeaturesAreDisabled=Note that a lot of features/modules are disabled in this demonstration. +Name=Name +Person=Person +Parameter=Parameter +Parameters=Parameters +Value=Value +GlobalValue=Global value +PersonalValue=Personal value +NewValue=New value +CurrentValue=Current value +Code=Code +Type=Type +Language=Language +MultiLanguage=Multi-language +Note=Note +CurrentNote=Current note +Title=Title +Label=Label +RefOrLabel=Ref. or label +Info=Log +Family=Family +Description=Description +Designation=Description +Model=Model +DefaultModel=Default model +Action=Event +About=About +Number=Number +NumberByMonth=Number by month +AmountByMonth=Amount by month +Numero=Number +Limit=Limit +Limits=Limits +DevelopmentTeam=Development Team +Logout=Logout +NoLogoutProcessWithAuthMode=No applicative disconnect feature with authentication mode %s +Connection=Connection +Setup=Setup +Alert=Alert +Previous=Previous +Next=Next +Cards=Cards +Card=Card +Now=Now +Date=Date +DateAndHour=Date and hour +DateStart=Date start +DateEnd=Date end +DateCreation=Creation date +DateModification=Modification date +DateModificationShort=Modif. date +DateLastModification=Last modification date +DateValidation=Validation date +DateClosing=Closing date +DateDue=Due date +DateValue=Value date +DateValueShort=Value date +DateOperation=Operation date +DateOperationShort=Oper. Date +DateLimit=Limit date +DateRequest=Request date +DateProcess=Process date +DatePlanShort=Date planed +DateRealShort=Date real. +DateBuild=Report build date +DatePayment=Date of payment +DurationYear=year +DurationMonth=month +DurationWeek=week +DurationDay=day +DurationYears=years +DurationMonths=months +DurationWeeks=weeks +DurationDays=days +Year=Year +Month=Month +Week=Week +Day=Day +Hour=Hour +Minute=Minute +Second=Second +Years=Years +Months=Months +Days=Days +days=days +Hours=Hours +Minutes=Minutes +Seconds=Seconds +Weeks=Weeks +Today=Today +Yesterday=Yesterday +Tomorrow=Tomorrow +Morning=Morning +Afternoon=Afternoon +Quadri=Quadri +MonthOfDay=Month of the day +HourShort=H +MinuteShort=mn +Rate=Rate +UseLocalTax=Include tax +Bytes=Bytes +KiloBytes=Kilobytes +MegaBytes=Megabytes +GigaBytes=Gigabytes +TeraBytes=Terabytes +b=b. +Kb=Kb +Mb=Mb +Gb=Gb +Tb=Tb +Cut=Cut +Copy=Copy +Paste=Paste +Default=Default +DefaultValue=Default value +DefaultGlobalValue=Global value +Price=Price +UnitPrice=Unit price +UnitPriceHT=Unit price (net) +UnitPriceTTC=Unit price +PriceU=U.P. +PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested +PriceUTTC=U.P. +Amount=Amount +AmountInvoice=Invoice amount +AmountPayment=Payment amount +AmountHTShort=Amount (net) +AmountTTCShort=Amount (inc. tax) +AmountHT=Amount (net of tax) +AmountTTC=Amount (inc. tax) +AmountVAT=Amount tax +AmountLT1=Amount tax 2 +AmountLT2=Amount tax 3 +AmountLT1ES=Amount RE +AmountLT2ES=Amount IRPF +AmountTotal=Total amount +AmountAverage=Average amount +PriceQtyHT=Price for this quantity (net of tax) +PriceQtyMinHT=Price quantity min. (net of tax) +PriceQtyTTC=Price for this quantity (inc. tax) +PriceQtyMinTTC=Price quantity min. (inc. of tax) +Percentage=Percentage +Total=Total +SubTotal=Subtotal +TotalHTShort=Total (net) +TotalTTCShort=Total (inc. tax) +TotalHT=Total (net of tax) +TotalHTforthispage=Total (net of tax) for this page +TotalTTC=Total (inc. tax) +TotalTTCToYourCredit=Total (inc. tax) to your credit +TotalVAT=Total tax +TotalLT1=Total tax 2 +TotalLT2=Total tax 3 +TotalLT1ES=Total RE +TotalLT2ES=Total IRPF +IncludedVAT=Included tax +HT=Net of tax +TTC=Inc. tax +VAT=Sales tax +LT1ES=RE +LT2ES=IRPF +VATRate=Tax Rate +Average=Average +Sum=Sum +Delta=Delta +Module=Module +Option=Option +List=List +FullList=Full list +Statistics=Statistics +OtherStatistics=Other statistics +Status=Status +Favorite=Favorite +ShortInfo=Info. +Ref=Ref. +RefSupplier=Ref. supplier +RefPayment=Ref. payment +CommercialProposalsShort=Commercial proposals +Comment=Comment +Comments=Comments +ActionsToDo=Events to do +ActionsDone=Events done +ActionsToDoShort=To do +ActionsRunningshort=Started +ActionsDoneShort=Done +ActionNotApplicable=Not applicable +ActionRunningNotStarted=To start +ActionRunningShort=Started +ActionDoneShort=Finished +ActionUncomplete=Uncomplete +CompanyFoundation=Company/Foundation +ContactsForCompany=Contacts for this third party +ContactsAddressesForCompany=Contacts/addresses for this third party +AddressesForCompany=Addresses for this third party +ActionsOnCompany=Events about this third party +ActionsOnMember=Events about this member +NActions=%s events +NActionsLate=%s late +RequestAlreadyDone=Request already recorded +Filter=Filter +RemoveFilter=Remove filter +ChartGenerated=Chart generated +ChartNotGenerated=Chart not generated +GeneratedOn=Build on %s +Generate=Generate +Duration=Duration +TotalDuration=Total duration +Summary=Summary +MyBookmarks=My bookmarks +OtherInformationsBoxes=Other information boxes +DolibarrBoard=Dolibarr board +DolibarrStateBoard=Statistics +DolibarrWorkBoard=Work tasks board +Available=Available +NotYetAvailable=Not yet available +NotAvailable=Not available +Popularity=Popularity +Categories=Categories +Category=Category +By=By +From=From +to=to +and=and +or=or +Other=Other +Others=Others +OtherInformations=Other informations +Quantity=Quantity +Qty=Qty +ChangedBy=Changed by +ReCalculate=Recalculate +ResultOk=Success +ResultKo=Failure +Reporting=Reporting +Reportings=Reporting +Draft=Draft +Drafts=Drafts +Validated=Validated +Opened=Opened +New=New +Discount=Discount +Unknown=Unknown +General=General +Size=Size +Received=Received +Paid=Paid +Topic=Sujet +ByCompanies=By third parties +ByUsers=By users +Links=Links +Link=Link +Receipts=Receipts +Rejects=Rejects +Preview=Preview +NextStep=Next step +PreviousStep=Previous step +Datas=Data +None=None +NoneF=None +Late=Late +Photo=Picture +Photos=Pictures +AddPhoto=Add picture +Login=Login +CurrentLogin=Current login +January=January +February=February +March=March +April=April +May=May +June=June +July=July +August=August +September=September +October=October +November=November +December=December +JanuaryMin=Jan +FebruaryMin=Feb +MarchMin=Mar +AprilMin=Apr +MayMin=May +JuneMin=Jun +JulyMin=Jul +AugustMin=Aug +SeptemberMin=Sep +OctoberMin=Oct +NovemberMin=Nov +DecemberMin=Dec +Month01=January +Month02=February +Month03=March +Month04=April +Month05=May +Month06=June +Month07=July +Month08=August +Month09=September +Month10=October +Month11=November +Month12=December +MonthShort01=Jan +MonthShort02=Feb +MonthShort03=Mar +MonthShort04=Apr +MonthShort05=May +MonthShort06=Jun +MonthShort07=Jul +MonthShort08=Aug +MonthShort09=Sep +MonthShort10=Oct +MonthShort11=Nov +MonthShort12=Dec +AttachedFiles=Attached files and documents +FileTransferComplete=File was uploaded successfuly +DateFormatYYYYMM=YYYY-MM +DateFormatYYYYMMDD=YYYY-MM-DD +DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS +ReportName=Report name +ReportPeriod=Report period +ReportDescription=Description +Report=Report +Keyword=Mot clé +Legend=Legend +FillTownFromZip=Fill city from zip +Fill=Fill +Reset=Reset +ShowLog=Show log +File=File +Files=Files +NotAllowed=Not allowed +ReadPermissionNotAllowed=Read permission not allowed +AmountInCurrency=Amount in %s currency +Example=Example +Examples=Examples +NoExample=No example +FindBug=Report a bug +NbOfThirdParties=Number of third parties +NbOfCustomers=Number of customers +NbOfLines=Number of lines +NbOfObjects=Number of objects +NbOfReferers=Number of referrers +Referers=Refering objects +TotalQuantity=Total quantity +DateFromTo=From %s to %s +DateFrom=From %s +DateUntil=Until %s +Check=Check +Uncheck=Uncheck +Internal=Internal +External=External +Internals=Internal +Externals=External +Warning=Warning +Warnings=Warnings +BuildPDF=Build PDF +RebuildPDF=Rebuild PDF +BuildDoc=Build Doc +RebuildDoc=Rebuild Doc +Entity=Environment +Entities=Entities +EventLogs=Logs +CustomerPreview=Customer preview +SupplierPreview=Supplier preview +AccountancyPreview=Accountancy preview +ShowCustomerPreview=Show customer preview +ShowSupplierPreview=Show supplier preview +ShowAccountancyPreview=Show accountancy preview +ShowProspectPreview=Show prospect preview +RefCustomer=Ref. customer +Currency=Currency +InfoAdmin=Information for administrators +Undo=Undo +Redo=Redo +ExpandAll=Expand all +UndoExpandAll=Undo expand +Reason=Reason +FeatureNotYetSupported=Feature not yet supported +CloseWindow=Close window +Question=Question +Response=Response +Priority=Priority +SendByMail=Send by EMail +MailSentBy=Email sent by +TextUsedInTheMessageBody=Email body +SendAcknowledgementByMail=Send Ack. by email +NoEMail=No email +NoMobilePhone=No mobile phone +Owner=Owner +DetectedVersion=Detected version +FollowingConstantsWillBeSubstituted=The following constants will be replaced with the corresponding value. +Refresh=Refresh +BackToList=Back to list +GoBack=Go back +CanBeModifiedIfOk=Can be modified if valid +CanBeModifiedIfKo=Can be modified if not valid +RecordModifiedSuccessfully=Record modified successfully +RecordsModified=%s records modified +AutomaticCode=Automatic code +NotManaged=Not managed +FeatureDisabled=Feature disabled +MoveBox=Move box %s +Offered=Offered +NotEnoughPermissions=You don't have permission for this action +SessionName=Session name +Method=Method +Receive=Receive +PartialWoman=Partial +PartialMan=Partial +TotalWoman=Total +TotalMan=Total +NeverReceived=Never received +Canceled=Canceled +YouCanChangeValuesForThisListFromDictionarySetup=You can change values for this list from menu setup - dictionary +Color=Color +Documents=Linked files +DocumentsNb=Linked files (%s) +Documents2=Documents +BuildDocuments=Generated documents +UploadDisabled=Upload disabled +MenuECM=Documents +MenuAWStats=AWStats +MenuMembers=Members +MenuAgendaGoogle=Google agenda +ThisLimitIsDefinedInSetup=Dolibarr limit (Menu home-setup-security): %s Kb, PHP limit: %s Kb +NoFileFound=No documents saved in this directory +CurrentUserLanguage=Current language +CurrentTheme=Current theme +CurrentMenuManager=Current menu manager +DisabledModules=Disabled modules +For=For +ForCustomer=For customer +Signature=Signature +HidePassword=Show command with password hidden +UnHidePassword=Show real command with clear password +Root=Root +Informations=Informations +Page=Page +Notes=Notes +AddNewLine=Add new line +AddFile=Add file +ListOfFiles=List of available files +FreeZone=Free entry +FreeLineOfType=Free entry of type +CloneMainAttributes=Clone object with its main attributes +PDFMerge=PDF Merge +Merge=Merge +PrintContentArea=Show page to print main content area +MenuManager=Menu manager +NoMenu=No sub-menu +WarningYouAreInMaintenanceMode=Warning, you are in a maintenance mode, so only login %s is allowed to use application at the moment. +CoreErrorTitle=System error +CoreErrorMessage=Sorry, an error occurred. Check the logs or contact your system administrator. +CreditCard=Credit card +FieldsWithAreMandatory=Fields with %s are mandatory +FieldsWithIsForPublic=Fields with %s are shown on public list of members. If you don't want this, check off the "public" box. +AccordingToGeoIPDatabase=(according to GeoIP convertion) +Line=Line +NotSupported=Not supported +RequiredField=Required field +Result=Result +ToTest=Test +ValidateBefore=Card must be validated before using this feature +Visibility=Visibility +Private=Private +Hidden=Hidden +Resources=Resources +Source=Source +Prefix=Prefix +Before=Before +After=After +IPAddress=IP address +Frequency=Frequency +IM=Instant messaging +NewAttribute=New attribute +AttributeCode=Attribute code +OptionalFieldsSetup=Extra attributes setup +URLPhoto=URL of photo/logo +SetLinkToThirdParty=Link to another third party +CreateDraft=Create draft +SetToDraft=Back to draft +ClickToEdit=Click to edit +ObjectDeleted=Object %s deleted +ByCountry=By country +ByTown=By town +ByDate=By date +ByMonthYear=By month/year +ByYear=By year +ByMonth=By month +ByDay=By day +BySalesRepresentative=By sales representative +LinkedToSpecificUsers=Linked to a particular user contact +DeleteAFile=Delete a file +ConfirmDeleteAFile=Are you sure you want to delete file +NoResults=No results +ModulesSystemTools=Modules tools +Test=Test +Element=Element +NoPhotoYet=No pictures available yet +HomeDashboard=Home summary +Deductible=Deductible +from=from +toward=toward +Access=Access +HelpCopyToClipboard=Use Ctrl+C to copy to clipboard +SaveUploadedFileWithMask=Save file on server with name "%s" (otherwise "%s") +OriginFileName=Original filename +SetDemandReason=Set source +SetBankAccount=Define Bank Account +AccountCurrency=Account Currency +ViewPrivateNote=View notes +XMoreLines=%s line(s) hidden +PublicUrl=Public URL +AddBox=Add box +SelectElementAndClickRefresh=Select an element and click Refresh +PrintFile=Print File %s +ShowTransaction=Show transaction +# Week day +Monday=Monday +Tuesday=Tuesday +Wednesday=Wednesday +Thursday=Thursday +Friday=Friday +Saturday=Saturday +Sunday=Sunday +MondayMin=Mo +TuesdayMin=Tu +WednesdayMin=We +ThursdayMin=Th +FridayMin=Fr +SaturdayMin=Sa +SundayMin=Su +Day1=Monday +Day2=Tuesday +Day3=Wednesday +Day4=Thursday +Day5=Friday +Day6=Saturday +Day0=Sunday +ShortMonday=M +ShortTuesday=T +ShortWednesday=W +ShortThursday=T +ShortFriday=F +ShortSaturday=S +ShortSunday=S diff --git a/htdocs/langs/kn_IN/margins.lang b/htdocs/langs/kn_IN/margins.lang new file mode 100644 index 00000000000..748b3c71f30 --- /dev/null +++ b/htdocs/langs/kn_IN/margins.lang @@ -0,0 +1,45 @@ +# Dolibarr language file - Source file is en_US - marges + +Margin=Margin +Margins=Margins +TotalMargin=Total Margin +MarginOnProducts=Margin / Products +MarginOnServices=Margin / Services +MarginRate=Margin rate +MarkRate=Mark rate +DisplayMarginRates=Display margin rates +DisplayMarkRates=Display mark rates +InputPrice=Input price +margin=Profit margins management +margesSetup=Profit margins management setup +MarginDetails=Margin details +ProductMargins=Product margins +CustomerMargins=Customer margins +SalesRepresentativeMargins=Sales representative margins +UserMargins=User margins +ProductService=Product or Service +AllProducts=All products and services +ChooseProduct/Service=Choose product or service +StartDate=Start date +EndDate=End date +Launch=Start +ForceBuyingPriceIfNull=Force buying price if null +ForceBuyingPriceIfNullDetails=if "ON", margin will be zero on line (buying price = selling price), otherwise ("OFF"), marge will be equal to selling price (buying price = 0) +MARGIN_METHODE_FOR_DISCOUNT=Margin method for global discounts +UseDiscountAsProduct=As a product +UseDiscountAsService=As a service +UseDiscountOnTotal=On subtotal +MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Defines if a global discount is treated as a product, a service, or only on subtotal for margin calculation. +MARGIN_TYPE=Margin type +MargeBrute=Raw margin +MargeNette=Net margin +MARGIN_TYPE_DETAILS=Raw margin : Selling price - Buying price
Net margin : Selling price - Cost price +CostPrice=Cost price +BuyingCost=Cost price +UnitCharges=Unit charges +Charges=Charges +AgentContactType=Commercial agent contact type +AgentContactTypeDetails=Define what contact type (linked on invoices) will be used for margin report per sale representative +rateMustBeNumeric=Rate must be a numeric value +markRateShouldBeLesserThan100=Mark rate should be lower than 100 +ShowMarginInfos=Show margin infos diff --git a/htdocs/langs/kn_IN/members.lang b/htdocs/langs/kn_IN/members.lang new file mode 100644 index 00000000000..40bca8e85fb --- /dev/null +++ b/htdocs/langs/kn_IN/members.lang @@ -0,0 +1,206 @@ +# Dolibarr language file - Source file is en_US - members +MembersArea=Members area +PublicMembersArea=Public members area +MemberCard=Member card +SubscriptionCard=Subscription card +Member=Member +Members=Members +MemberAccount=Member login +ShowMember=Show member card +UserNotLinkedToMember=User not linked to a member +ThirdpartyNotLinkedToMember=Third-party not linked to a member +MembersTickets=Members Tickets +FundationMembers=Foundation members +Attributs=Attributes +ErrorMemberTypeNotDefined=Member type not defined +ListOfPublicMembers=List of public members +ListOfValidatedPublicMembers=List of validated public members +ErrorThisMemberIsNotPublic=This member is not public +ErrorMemberIsAlreadyLinkedToThisThirdParty=Another member (name: %s, login: %s) is already linked to a third party %s. Remove this link first because a third party can't be linked to only a member (and vice versa). +ErrorUserPermissionAllowsToLinksToItselfOnly=For security reasons, you must be granted permissions to edit all users to be able to link a member to a user that is not yours. +ThisIsContentOfYourCard=This is details of your card +CardContent=Content of your member card +SetLinkToUser=Link to a Dolibarr user +SetLinkToThirdParty=Link to a Dolibarr third party +MembersCards=Members business cards +MembersList=List of members +MembersListToValid=List of draft members (to be validated) +MembersListValid=List of valid members +MembersListUpToDate=List of valid members with up to date subscription +MembersListNotUpToDate=List of valid members with subscription out of date +MembersListResiliated=List of resiliated members +MembersListQualified=List of qualified members +MenuMembersToValidate=Draft members +MenuMembersValidated=Validated members +MenuMembersUpToDate=Up to date members +MenuMembersNotUpToDate=Out of date members +MenuMembersResiliated=Resiliated members +MembersWithSubscriptionToReceive=Members with subscription to receive +DateAbonment=Subscription date +DateSubscription=Subscription date +DateNextSubscription=Next subscription +DateEndSubscription=Subscription end date +EndSubscription=End subscription +SubscriptionId=Subscription id +MemberId=Member id +NewMember=New member +NewType=New member type +MemberType=Member type +MemberTypeId=Member type id +MemberTypeLabel=Member type label +MembersTypes=Members types +MembersAttributes=Members attributes +SearchAMember=Search a member +MemberStatusDraft=Draft (needs to be validated) +MemberStatusDraftShort=Draft +MemberStatusActive=Validated (waiting subscription) +MemberStatusActiveShort=Validated +MemberStatusActiveLate=subscription expired +MemberStatusActiveLateShort=Expired +MemberStatusPaid=Subscription up to date +MemberStatusPaidShort=Up to date +MemberStatusResiliated=Resiliated member +MemberStatusResiliatedShort=Resiliated +MembersStatusToValid=Draft members +MembersStatusToValidShort=Draft members +MembersStatusValidated=Validated members +MembersStatusPaid=Subscription up to date +MembersStatusPaidShort=Up to date +MembersStatusNotPaid=Subscription out of date +MembersStatusNotPaidShort=Out of date +MembersStatusResiliated=Resiliated members +MembersStatusResiliatedShort=Resiliated members +NewCotisation=New contribution +PaymentSubscription=New contribution payment +EditMember=Edit member +SubscriptionEndDate=Subscription's end date +MembersTypeSetup=Members type setup +NewSubscription=New subscription +NewSubscriptionDesc=This form allows you to record your subscription as a new member of the foundation. If you want to renew your subscription (if already a member), please contact foundation board instead by email %s. +Subscription=Subscription +Subscriptions=Subscriptions +SubscriptionLate=Late +SubscriptionNotReceived=Subscription never received +SubscriptionLateShort=Late +SubscriptionNotReceivedShort=Never received +ListOfSubscriptions=List of subscriptions +SendCardByMail=Send card by Email +AddMember=Create member +NoTypeDefinedGoToSetup=No member types defined. Go to menu "Members types" +NewMemberType=New member type +WelcomeEMail=Welcome e-mail +SubscriptionRequired=Subscription required +EditType=Edit member type +DeleteType=Delete +VoteAllowed=Vote allowed +Physical=Physical +Moral=Moral +MorPhy=Moral/Physical +Reenable=Reenable +ResiliateMember=Resiliate a member +ConfirmResiliateMember=Are you sure you want to resiliate this member ? +DeleteMember=Delete a member +ConfirmDeleteMember=Are you sure you want to delete this member (Deleting a member will delete all his subscriptions) ? +DeleteSubscription=Delete a subscription +ConfirmDeleteSubscription=Are you sure you want to delete this subscription ? +Filehtpasswd=htpasswd file +ValidateMember=Validate a member +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 formated pages, provided as example to show how to list members database. +PublicMemberList=Public member list +BlankSubscriptionForm=Public auto-subscription form +BlankSubscriptionFormDesc=Dolibarr can provide you a public URL to allow external visitors to ask to subscribe to the foundation. If an online payment module is enabled, a payment form will also be automatically provided. +EnablePublicSubscriptionForm=Enable the public auto-subscription form +MemberPublicLinks=Public links/pages +ExportDataset_member_1=Members and subscriptions +ImportDataset_member_1=Members +LastMembers=Last %s members +LastMembersModified=Last %s modified members +LastSubscriptionsModified=Last %s modified subscriptions +AttributeName=Attribute name +String=String +Text=Text +Int=Int +Date=Date +DateAndTime=Date and time +PublicMemberCard=Member public card +MemberNotOrNoMoreExpectedToSubscribe=Member not or no more expected to subscribe +AddSubscription=Create subscription +ShowSubscription=Show subscription +MemberModifiedInDolibarr=Member modified in Dolibarr +SendAnEMailToMember=Send information email to member +DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the e-mail received in case of auto-inscription of a guest +DescADHERENT_AUTOREGISTER_NOTIF_MAIL=E-mail received in case of auto-inscription of a guest +DescADHERENT_AUTOREGISTER_MAIL_SUBJECT=EMail subject for member autosubscription +DescADHERENT_AUTOREGISTER_MAIL=EMail for member autosubscription +DescADHERENT_MAIL_VALID_SUBJECT=EMail subject for member validation +DescADHERENT_MAIL_VALID=EMail for member validation +DescADHERENT_MAIL_COTIS_SUBJECT=EMail subject for subscription +DescADHERENT_MAIL_COTIS=EMail for subscription +DescADHERENT_MAIL_RESIL_SUBJECT=EMail subject for member resiliation +DescADHERENT_MAIL_RESIL=EMail for member resiliation +DescADHERENT_MAIL_FROM=Sender EMail for automatic emails +DescADHERENT_ETIQUETTE_TYPE=Format of labels page +DescADHERENT_ETIQUETTE_TEXT=Text printed on member address sheets +DescADHERENT_CARD_TYPE=Format of cards page +DescADHERENT_CARD_HEADER_TEXT=Text printed on top of member cards +DescADHERENT_CARD_TEXT=Text printed on member cards (align on left) +DescADHERENT_CARD_TEXT_RIGHT=Text printed on member cards (align on right) +DescADHERENT_CARD_FOOTER_TEXT=Text printed on bottom of member cards +GlobalConfigUsedIfNotDefined=Text defined in Foundation module setup will be used if not defined here +MayBeOverwrited=This text can be overwrited by value defined for member's type +ShowTypeCard=Show type '%s' +HTPasswordExport=htpassword file generation +NoThirdPartyAssociatedToMember=No third party associated to this member +ThirdPartyDolibarr=Dolibarr third party +MembersAndSubscriptions= Members and Subscriptions +MoreActions=Complementary action on recording +MoreActionsOnSubscription=Complementary action, suggested by default when recording a subscription +MoreActionBankDirect=Create a direct transaction record on account +MoreActionBankViaInvoice=Create an invoice and payment on account +MoreActionInvoiceOnly=Create an invoice with no payment +LinkToGeneratedPages=Generate visit cards +LinkToGeneratedPagesDesc=This screen allows you to generate PDF files with business cards for all your members or a particular member. +DocForAllMembersCards=Generate business cards for all members +DocForOneMemberCards=Generate business cards for a particular member +DocForLabels=Generate address sheets +SubscriptionPayment=Subscription payment +LastSubscriptionDate=Last subscription date +LastSubscriptionAmount=Last subscription amount +MembersStatisticsByCountries=Members statistics by country +MembersStatisticsByState=Members statistics by state/province +MembersStatisticsByTown=Members statistics by town +MembersStatisticsByRegion=Members statistics by region +MemberByRegion=Members by region +NbOfMembers=Number of members +NoValidatedMemberYet=No validated members found +MembersByCountryDesc=This screen show you statistics on members by countries. Graphic depends however on Google online graph service and is available only if an internet connection is is working. +MembersByStateDesc=This screen show you statistics on members by state/provinces/canton. +MembersByTownDesc=This screen show you statistics on members by town. +MembersStatisticsDesc=Choose statistics you want to read... +MenuMembersStats=Statistics +LastMemberDate=Last member date +Nature=Nature +Public=Information are public +Exports=Exports +NewMemberbyWeb=New member added. Awaiting approval +NewMemberForm=New member form +SubscriptionsStatistics=Statistics on subscriptions +NbOfSubscriptions=Number of subscriptions +AmountOfSubscriptions=Amount of subscriptions +TurnoverOrBudget=Turnover (for a company) or Budget (for a foundation) +DefaultAmount=Default amount of subscription +CanEditAmount=Visitor can choose/edit amount of its subscription +MEMBER_NEWFORM_PAYONLINE=Jump on integrated online payment page +Associations=Foundations +Collectivités=Organizations +Particuliers=Personal +Entreprises=Companies +DOLIBARRFOUNDATION_PAYMENT_FORM=To make your subscription payment using a bank transfer, see page http://wiki.dolibarr.org/index.php/Subscribe.
To pay using a Credit Card or Paypal, click on button at bottom of this page.
+ByProperties=By characteristics +MembersStatisticsByProperties=Members statistics by characteristics +MembersByNature=Members by nature +VATToUseForSubscriptions=VAT rate to use for subscriptions +NoVatOnSubscription=No TVA for subscriptions +MEMBER_PAYONLINE_SENDEMAIL=Email to warn when Dolibarr receive a confirmation of a validated payment for subscription +ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for subscription line into invoice: %s diff --git a/htdocs/langs/kn_IN/opensurvey.lang b/htdocs/langs/kn_IN/opensurvey.lang new file mode 100644 index 00000000000..0b191e426ec --- /dev/null +++ b/htdocs/langs/kn_IN/opensurvey.lang @@ -0,0 +1,66 @@ +# Dolibarr language file - Source file is en_US - opensurvey +Survey=Poll +Surveys=Polls +OrganizeYourMeetingEasily=Organize your meetings and polls easily. First select type of poll... +NewSurvey=New poll +NoSurveysInDatabase=%s poll(s) into database. +OpenSurveyArea=Polls area +AddACommentForPoll=You can add a comment into poll... +AddComment=Add comment +CreatePoll=Create poll +PollTitle=Poll title +ToReceiveEMailForEachVote=Receive an email for each vote +TypeDate=Type date +TypeClassic=Type standard +OpenSurveyStep2=Select your dates amoung the free days (grey). The selected days are green. You can unselect a day previously selected by clicking again on it +RemoveAllDays=Remove all days +CopyHoursOfFirstDay=Copy hours of first day +RemoveAllHours=Remove all hours +SelectedDays=Selected days +TheBestChoice=The best choice currently is +TheBestChoices=The best choices currently are +with=with +OpenSurveyHowTo=If you agree to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line. +CommentsOfVoters=Comments of voters +ConfirmRemovalOfPoll=Are you sure you want to remove this poll (and all votes) +RemovePoll=Remove poll +UrlForSurvey=URL to communicate to get a direct access to poll +PollOnChoice=You are creating a poll to make a multi-choice for a poll. First enter all possible choices for your poll: +CreateSurveyDate=Create a date poll +CreateSurveyStandard=Create a standard poll +CheckBox=Simple checkbox +YesNoList=List (empty/yes/no) +PourContreList=List (empty/for/against) +AddNewColumn=Add new column +TitleChoice=Choice label +ExportSpreadsheet=Export result spreadsheet +ExpireDate=Limit date +NbOfSurveys=Number of polls +NbOfVoters=Nb of voters +SurveyResults=Results +PollAdminDesc=You are allowed to change all vote lines of this poll with button "Edit". You can, as well, remove a column or a line with %s. You can also add a new column with %s. +5MoreChoices=5 more choices +Abstention=Abstention +Against=Against +YouAreInivitedToVote=You are invited to vote for this poll +VoteNameAlreadyExists=This name was already used for this poll +ErrorPollDoesNotExists=Error, poll %s does not exists. +OpenSurveyNothingToSetup=There is no specific setup to do. +PollWillExpire=Your poll will expire automatically %s days after the last date of your poll. +AddADate=Add a date +AddStartHour=Add start hour +AddEndHour=Add end hour +votes=vote(s) +NoCommentYet=No comments have been posted for this poll yet +CanEditVotes=Can change vote of others +CanComment=Voters can comment in the poll +CanSeeOthersVote=Voters can see other people's vote +SelectDayDesc=For each selected day, you can choose, or not, meeting hours in the following format :
- empty,
- "8h", "8H" or "8:00" to give a meeting's start hour,
- "8-11", "8h-11h", "8H-11H" or "8:00-11:00" to give a meeting's start and end hour,
- "8h15-11h15", "8H15-11H15" or "8:15-11:15" for the same thing but with minutes. +BackToCurrentMonth=Back to current month +ErrorOpenSurveyFillFirstSection=You haven't filled the first section of the poll creation +ErrorOpenSurveyOneChoice=Enter at least one choice +ErrorOpenSurveyDateFormat=Date must have the format YYYY-MM-DD +ErrorInsertingComment=There was an error while inserting your comment +MoreChoices=Enter more choices for the voters +SurveyExpiredInfo=The voting time of this poll has expired. +EmailSomeoneVoted=%s has filled a line.\nYou can find your poll at the link: \n%s diff --git a/htdocs/langs/kn_IN/orders.lang b/htdocs/langs/kn_IN/orders.lang new file mode 100644 index 00000000000..8efafa5e94e --- /dev/null +++ b/htdocs/langs/kn_IN/orders.lang @@ -0,0 +1,166 @@ +# Dolibarr language file - Source file is en_US - orders +OrdersArea=Customers orders area +SuppliersOrdersArea=Suppliers orders area +OrderCard=Order card +OrderId=Order Id +Order=Order +Orders=Orders +OrderLine=Order line +OrderFollow=Follow up +OrderDate=Order date +OrderToProcess=Order to process +NewOrder=New order +ToOrder=Make order +MakeOrder=Make order +SupplierOrder=Supplier order +SuppliersOrders=Suppliers orders +SuppliersOrdersRunning=Current suppliers orders +CustomerOrder=Customer order +CustomersOrders=Customers orders +CustomersOrdersRunning=Current customer's orders +CustomersOrdersAndOrdersLines=Customer orders and order's lines +OrdersToValid=Customers orders to validate +OrdersToBill=Customers orders delivered +OrdersInProcess=Customers orders in process +OrdersToProcess=Customers orders to process +SuppliersOrdersToProcess=Supplier's orders to process +StatusOrderCanceledShort=Canceled +StatusOrderDraftShort=Draft +StatusOrderValidatedShort=Validated +StatusOrderSentShort=In process +StatusOrderSent=Shipment in process +StatusOrderOnProcessShort=Ordered +StatusOrderProcessedShort=Processed +StatusOrderToBillShort=Delivered +StatusOrderToBill2Short=To bill +StatusOrderApprovedShort=Approved +StatusOrderRefusedShort=Refused +StatusOrderToProcessShort=To process +StatusOrderReceivedPartiallyShort=Partially received +StatusOrderReceivedAllShort=Everything received +StatusOrderCanceled=Canceled +StatusOrderDraft=Draft (needs to be validated) +StatusOrderValidated=Validated +StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation +StatusOrderProcessed=Processed +StatusOrderToBill=Delivered +StatusOrderToBill2=To bill +StatusOrderApproved=Approved +StatusOrderRefused=Refused +StatusOrderReceivedPartially=Partially received +StatusOrderReceivedAll=Everything received +ShippingExist=A shipment exists +ProductQtyInDraft=Product quantity into draft orders +ProductQtyInDraftOrWaitingApproved=Product quantity into draft or approved orders, not yet ordered +DraftOrWaitingApproved=Draft or approved not yet ordered +DraftOrWaitingShipped=Draft or validated not yet shipped +MenuOrdersToBill=Orders delivered +MenuOrdersToBill2=Billable orders +SearchOrder=Search order +SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order +ShipProduct=Ship product +Discount=Discount +CreateOrder=Create Order +RefuseOrder=Refuse order +ApproveOrder=Accept order +ValidateOrder=Validate order +UnvalidateOrder=Unvalidate order +DeleteOrder=Delete order +CancelOrder=Cancel order +AddOrder=Create order +AddToMyOrders=Add to my orders +AddToOtherOrders=Add to other orders +AddToDraftOrders=Add to draft order +ShowOrder=Show order +NoOpenedOrders=No opened orders +NoOtherOpenedOrders=No other opened orders +NoDraftOrders=No draft orders +OtherOrders=Other orders +LastOrders=Last %s orders +LastModifiedOrders=Last %s modified orders +LastClosedOrders=Last %s closed orders +AllOrders=All orders +NbOfOrders=Number of orders +OrdersStatistics=Order's statistics +OrdersStatisticsSuppliers=Supplier order's statistics +NumberOfOrdersByMonth=Number of orders by month +AmountOfOrdersByMonthHT=Amount of orders by month (net of tax) +ListOfOrders=List of orders +CloseOrder=Close order +ConfirmCloseOrder=Are you sure you want to set this order to deliverd ? Once an order is delivered, it can be set to billed. +ConfirmCloseOrderIfSending=Are you sure you want to close this order ? You must close an order only when all shipping are done. +ConfirmDeleteOrder=Are you sure you want to delete this order ? +ConfirmValidateOrder=Are you sure you want to validate this order under name %s ? +ConfirmUnvalidateOrder=Are you sure you want to restore order %s to draft status ? +ConfirmCancelOrder=Are you sure you want to cancel this order ? +ConfirmMakeOrder=Are you sure you want to confirm you made this order on %s ? +GenerateBill=Generate invoice +ClassifyShipped=Classify delivered +ClassifyBilled=Classify billed +ComptaCard=Accountancy card +DraftOrders=Draft orders +RelatedOrders=Related orders +OnProcessOrders=In process orders +RefOrder=Ref. order +RefCustomerOrder=Ref. customer order +RefCustomerOrderShort=Ref. cust. order +SendOrderByMail=Send order by mail +ActionsOnOrder=Events on order +NoArticleOfTypeProduct=No article of type 'product' so no shippable article for this order +OrderMode=Order method +AuthorRequest=Request author +UseCustomerContactAsOrderRecipientIfExist=Use customer contact address if defined instead of third party address as order recipient address +RunningOrders=Orders on process +UserWithApproveOrderGrant=Users granted with "approve orders" permission. +PaymentOrderRef=Payment of order %s +CloneOrder=Clone order +ConfirmCloneOrder=Are you sure you want to clone this order %s ? +DispatchSupplierOrder=Receiving supplier order %s +##### Types de contacts ##### +TypeContact_commande_internal_SALESREPFOLL=Representative following-up customer order +TypeContact_commande_internal_SHIPPING=Representative following-up shipping +TypeContact_commande_external_BILLING=Customer invoice contact +TypeContact_commande_external_SHIPPING=Customer shipping contact +TypeContact_commande_external_CUSTOMER=Customer contact following-up order +TypeContact_order_supplier_internal_SALESREPFOLL=Representative following-up supplier order +TypeContact_order_supplier_internal_SHIPPING=Representative following-up shipping +TypeContact_order_supplier_external_BILLING=Supplier invoice contact +TypeContact_order_supplier_external_SHIPPING=Supplier shipping contact +TypeContact_order_supplier_external_CUSTOMER=Supplier contact following-up order + +Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Constant COMMANDE_SUPPLIER_ADDON not defined +Error_COMMANDE_ADDON_NotDefined=Constant COMMANDE_ADDON not defined +Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=Failed to load module file '%s' +Error_FailedToLoad_COMMANDE_ADDON_File=Failed to load module file '%s' +Error_OrderNotChecked=No orders to invoice selected +# Sources +OrderSource0=Commercial proposal +OrderSource1=Internet +OrderSource2=Mail campaign +OrderSource3=Phone compaign +OrderSource4=Fax campaign +OrderSource5=Commercial +OrderSource6=Store +QtyOrdered=Qty ordered +AddDeliveryCostLine=Add a delivery cost line indicating the weight of the order +# Documents models +PDFEinsteinDescription=A complete order model (logo...) +PDFEdisonDescription=A simple order model +PDFProformaDescription=A complete proforma invoice (logo…) +# Orders modes +OrderByMail=Mail +OrderByFax=Fax +OrderByEMail=EMail +OrderByWWW=Online +OrderByPhone=Phone +CreateInvoiceForThisCustomer=Bill orders +NoOrdersToInvoice=No orders billable +CloseProcessedOrdersAutomatically=Classify "Processed" all selected orders. +OrderCreation=Order creation +Ordered=Ordered +OrderCreated=Your orders have been created +OrderFail=An error happened during your orders creation +CreateOrders=Create orders +ToBillSeveralOrderSelectCustomer=To create an invoice for several orders, click first onto customer, then choose "%s". diff --git a/htdocs/langs/kn_IN/other.lang b/htdocs/langs/kn_IN/other.lang new file mode 100644 index 00000000000..08747ea884b --- /dev/null +++ b/htdocs/langs/kn_IN/other.lang @@ -0,0 +1,238 @@ +# Dolibarr language file - Source file is en_US - other +SecurityCode=Security code +Calendar=Calendar +Tools=Tools +ToolsDesc=This area is dedicated to group miscellaneous tools not available into other menu entries.

Those tools can be reached from menu on the side. +Birthday=Birthday +BirthdayDate=Birthday +DateToBirth=Date of birth +BirthdayAlertOn= birthday alert active +BirthdayAlertOff= birthday alert inactive +Notify_FICHINTER_VALIDATE=Intervention validated +Notify_FICHINTER_SENTBYMAIL=Intervention sent by mail +Notify_BILL_VALIDATE=Customer invoice validated +Notify_BILL_UNVALIDATE=Customer invoice unvalidated +Notify_ORDER_SUPPLIER_APPROVE=Supplier order approved +Notify_ORDER_SUPPLIER_REFUSE=Supplier order refused +Notify_ORDER_VALIDATE=Customer order validated +Notify_PROPAL_VALIDATE=Customer proposal validated +Notify_PROPAL_CLOSE_SIGNED=Customer propal closed signed +Notify_PROPAL_CLOSE_REFUSED=Customer propal closed refused +Notify_WITHDRAW_TRANSMIT=Transmission withdrawal +Notify_WITHDRAW_CREDIT=Credit withdrawal +Notify_WITHDRAW_EMIT=Perform withdrawal +Notify_ORDER_SENTBYMAIL=Customer order sent by mail +Notify_COMPANY_CREATE=Third party created +Notify_COMPANY_SENTBYMAIL=Mails sent from third party card +Notify_PROPAL_SENTBYMAIL=Commercial proposal sent by mail +Notify_BILL_PAYED=Customer invoice payed +Notify_BILL_CANCEL=Customer invoice canceled +Notify_BILL_SENTBYMAIL=Customer invoice sent by mail +Notify_ORDER_SUPPLIER_VALIDATE=Supplier order validated +Notify_ORDER_SUPPLIER_SENTBYMAIL=Supplier order sent by mail +Notify_BILL_SUPPLIER_VALIDATE=Supplier invoice validated +Notify_BILL_SUPPLIER_PAYED=Supplier invoice payed +Notify_BILL_SUPPLIER_SENTBYMAIL=Supplier invoice sent by mail +Notify_BILL_SUPPLIER_CANCELED=Supplier invoice cancelled +Notify_CONTRACT_VALIDATE=Contract validated +Notify_FICHEINTER_VALIDATE=Intervention validated +Notify_SHIPPING_VALIDATE=Shipping validated +Notify_SHIPPING_SENTBYMAIL=Shipping sent by mail +Notify_MEMBER_VALIDATE=Member validated +Notify_MEMBER_MODIFY=Member modified +Notify_MEMBER_SUBSCRIPTION=Member subscribed +Notify_MEMBER_RESILIATE=Member resiliated +Notify_MEMBER_DELETE=Member deleted +Notify_PROJECT_CREATE=Project creation +Notify_TASK_CREATE=Task created +Notify_TASK_MODIFY=Task modified +Notify_TASK_DELETE=Task deleted +SeeModuleSetup=See module setup +NbOfAttachedFiles=Number of attached files/documents +TotalSizeOfAttachedFiles=Total size of attached files/documents +MaxSize=Maximum size +AttachANewFile=Attach a new file/document +LinkedObject=Linked object +Miscellaneous=Miscellaneous +NbOfActiveNotifications=Number of notifications (nb of recipient emails) +PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ +PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ +PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__ +DemoDesc=Dolibarr is a compact ERP/CRM composed by several functional modules. A demo that includes all modules does not mean anything as this never occurs. So, several demo profiles are available. +ChooseYourDemoProfil=Choose the demo profile that match your activity... +DemoFundation=Manage members of a foundation +DemoFundation2=Manage members and bank account of a foundation +DemoCompanyServiceOnly=Manage a freelance activity selling service only +DemoCompanyShopWithCashDesk=Manage a shop with a cash desk +DemoCompanyProductAndStocks=Manage a small or medium company selling products +DemoCompanyAll=Manage a small or medium company with multiple activities (all main modules) +GoToDemo=Go to demo +CreatedBy=Created by %s +ModifiedBy=Modified by %s +ValidatedBy=Validated by %s +CanceledBy=Canceled by %s +ClosedBy=Closed by %s +CreatedById=User id who created +ModifiedById=User id who made last change +ValidatedById=User id who validated +CanceledById=User id who canceled +ClosedById=User id who closed +CreatedByLogin=User login who created +ModifiedByLogin=User login who made last change +ValidatedByLogin=User login who validated +CanceledByLogin=User login who canceled +ClosedByLogin=User login who closed +FileWasRemoved=File %s was removed +DirWasRemoved=Directory %s was removed +FeatureNotYetAvailableShort=Available in a next version +FeatureNotYetAvailable=Feature not yet available in this version +FeatureExperimental=Experimental feature. Not stable in this version +FeatureDevelopment=Development feature. Not stable in this version +FeaturesSupported=Features supported +Width=Width +Height=Height +Depth=Depth +Top=Top +Bottom=Bottom +Left=Left +Right=Right +CalculatedWeight=Calculated weight +CalculatedVolume=Calculated volume +Weight=Weight +TotalWeight=Total weight +WeightUnitton=tonnes +WeightUnitkg=kg +WeightUnitg=g +WeightUnitmg=mg +WeightUnitpound=pound +Length=Length +LengthUnitm=m +LengthUnitdm=dm +LengthUnitcm=cm +LengthUnitmm=mm +Surface=Area +SurfaceUnitm2=m2 +SurfaceUnitdm2=dm2 +SurfaceUnitcm2=cm2 +SurfaceUnitmm2=mm2 +SurfaceUnitfoot2=ft2 +SurfaceUnitinch2=in2 +Volume=Volume +TotalVolume=Total volume +VolumeUnitm3=m3 +VolumeUnitdm3=dm3 +VolumeUnitcm3=cm3 +VolumeUnitmm3=mm3 +VolumeUnitfoot3=ft3 +VolumeUnitinch3=in3 +VolumeUnitounce=ounce +VolumeUnitlitre=litre +VolumeUnitgallon=gallon +Size=size +SizeUnitm=m +SizeUnitdm=dm +SizeUnitcm=cm +SizeUnitmm=mm +SizeUnitinch=inch +SizeUnitfoot=foot +SizeUnitpoint=point +BugTracker=Bug tracker +SendNewPasswordDesc=This form allows you to request a new password. It will be send to your email address.
Change will be effective only after clicking on confirmation link inside this email.
Check your email reader software. +BackToLoginPage=Back to login page +AuthenticationDoesNotAllowSendNewPassword=Authentication mode is %s.
In this mode, Dolibarr can't know nor change your password.
Contact your system administrator if you want to change your password. +EnableGDLibraryDesc=Install or enable GD library with your PHP for use this option. +EnablePhpAVModuleDesc=You need to install a module compatible with your anti-virus. (Clamav : php4-clamavlib ou php5-clamavlib) +ProfIdShortDesc=Prof Id %s is an information depending on third party country.
For example, for country %s, it's code %s. +DolibarrDemo=Dolibarr ERP/CRM demo +StatsByNumberOfUnits=Statistics in number of products/services units +StatsByNumberOfEntities=Statistics in number of referring entities +NumberOfProposals=Number of proposals on last 12 month +NumberOfCustomerOrders=Number of customer orders on last 12 month +NumberOfCustomerInvoices=Number of customer invoices on last 12 month +NumberOfSupplierOrders=Number of supplier orders on last 12 month +NumberOfSupplierInvoices=Number of supplier invoices on last 12 month +NumberOfUnitsProposals=Number of units on proposals on last 12 month +NumberOfUnitsCustomerOrders=Number of units on customer orders on last 12 month +NumberOfUnitsCustomerInvoices=Number of units on customer invoices on last 12 month +NumberOfUnitsSupplierOrders=Number of units on supplier orders on last 12 month +NumberOfUnitsSupplierInvoices=Number of units on supplier invoices on last 12 month +EMailTextInterventionValidated=The intervention %s has been validated. +EMailTextInvoiceValidated=The invoice %s has been validated. +EMailTextProposalValidated=The proposal %s has been validated. +EMailTextOrderValidated=The order %s has been validated. +EMailTextOrderApproved=The order %s has been approved. +EMailTextOrderApprovedBy=The order %s has been approved by %s. +EMailTextOrderRefused=The order %s has been refused. +EMailTextOrderRefusedBy=The order %s has been refused by %s. +EMailTextExpeditionValidated=The shipping %s has been validated. +ImportedWithSet=Importation data set +DolibarrNotification=Automatic notification +ResizeDesc=Enter new width OR new height. Ratio will be kept during resizing... +NewLength=New width +NewHeight=New height +NewSizeAfterCropping=New size after cropping +DefineNewAreaToPick=Define new area on image to pick (left click on image then drag until you reach the opposite corner) +CurrentInformationOnImage=This tool was designed to help you to resize or crop an image. This is informations on current edited image +ImageEditor=Image editor +YouReceiveMailBecauseOfNotification=You receive this message because your email has been added to list of targets to be informed of particular events into %s software of %s. +YouReceiveMailBecauseOfNotification2=This event is the following: +ThisIsListOfModules=This is a list of modules preselected by this demo profile (only most common modules are visible in this demo). Edit this to have a more personalized demo and click on "Start". +ClickHere=Click here +UseAdvancedPerms=Use the advanced permissions of some modules +FileFormat=File format +SelectAColor=Choose a color +AddFiles=Add Files +StartUpload=Start upload +CancelUpload=Cancel upload +FileIsTooBig=Files is too big +PleaseBePatient=Please be patient... +RequestToResetPasswordReceived=A request to change your Dolibarr password has been received +NewKeyIs=This is your new keys to login +NewKeyWillBe=Your new key to login to software will be +ClickHereToGoTo=Click here to go to %s +YouMustClickToChange=You must however first click on the following link to validate this password change +ForgetIfNothing=If you didn't request this change, just forget this email. Your credentials are kept safe. + +##### Calendar common ##### +AddCalendarEntry=Add entry in calendar %s +NewCompanyToDolibarr=Company %s added +ContractValidatedInDolibarr=Contract %s validated +ContractCanceledInDolibarr=Contract %s canceled +ContractClosedInDolibarr=Contract %s closed +PropalClosedSignedInDolibarr=Proposal %s signed +PropalClosedRefusedInDolibarr=Proposal %s refused +PropalValidatedInDolibarr=Proposal %s validated +PropalClassifiedBilledInDolibarr=Proposal %s classified billed +InvoiceValidatedInDolibarr=Invoice %s validated +InvoicePaidInDolibarr=Invoice %s changed to paid +InvoiceCanceledInDolibarr=Invoice %s canceled +PaymentDoneInDolibarr=Payment %s done +CustomerPaymentDoneInDolibarr=Customer payment %s done +SupplierPaymentDoneInDolibarr=Supplier payment %s done +MemberValidatedInDolibarr=Member %s validated +MemberResiliatedInDolibarr=Member %s resiliated +MemberDeletedInDolibarr=Member %s deleted +MemberSubscriptionAddedInDolibarr=Subscription for member %s added +ShipmentValidatedInDolibarr=Shipment %s validated +ShipmentDeletedInDolibarr=Shipment %s deleted +##### Export ##### +Export=Export +ExportsArea=Exports area +AvailableFormats=Available formats +LibraryUsed=Librairy used +LibraryVersion=Version +ExportableDatas=Exportable data +NoExportableData=No exportable data (no modules with exportable data loaded, or missing permissions) +ToExport=Export +NewExport=New export +##### External sites ##### +ExternalSites=External sites diff --git a/htdocs/langs/kn_IN/paybox.lang b/htdocs/langs/kn_IN/paybox.lang new file mode 100644 index 00000000000..aced32a4944 --- /dev/null +++ b/htdocs/langs/kn_IN/paybox.lang @@ -0,0 +1,40 @@ +# Dolibarr language file - Source file is en_US - paybox +PayBoxSetup=PayBox module setup +PayBoxDesc=This module offer pages to allow payment on Paybox by customers. This can be used for a free payment or for a payment on a particular Dolibarr object (invoice, order, ...) +FollowingUrlAreAvailableToMakePayments=Following URLs are available to offer a page to a customer to make a payment on Dolibarr objects +PaymentForm=Payment form +WelcomeOnPaymentPage=Welcome on our online payment service +ThisScreenAllowsYouToPay=This screen allow you to make an online payment to %s. +ThisIsInformationOnPayment=This is information on payment to do +ToComplete=To complete +YourEMail=Email to receive payment confirmation +Creditor=Creditor +PaymentCode=Payment code +PayBoxDoPayment=Go on payment +YouWillBeRedirectedOnPayBox=You will be redirected on secured Paybox page to input you credit card information +PleaseBePatient=Please, be patient +Continue=Next +ToOfferALinkForOnlinePayment=URL for %s payment +ToOfferALinkForOnlinePaymentOnOrder=URL to offer a %s online payment user interface for a customer order +ToOfferALinkForOnlinePaymentOnInvoice=URL to offer a %s online payment user interface for a customer invoice +ToOfferALinkForOnlinePaymentOnContractLine=URL to offer a %s online payment user interface for a contract line +ToOfferALinkForOnlinePaymentOnFreeAmount=URL to offer a %s online payment user interface for a free amount +ToOfferALinkForOnlinePaymentOnMemberSubscription=URL to offer a %s online payment user interface for a member subscription +YouCanAddTagOnUrl=You can also add url parameter &tag=value to any of those URL (required only for free payment) to add your own payment comment tag. +SetupPayBoxToHavePaymentCreatedAutomatically=Setup your PayBox with url %s to have payment created automatically when validated by paybox. +YourPaymentHasBeenRecorded=This page confirms that your payment has been recorded. Thank you. +YourPaymentHasNotBeenRecorded=You payment has not been recorded and transaction has been canceled. Thank you. +AccountParameter=Account parameters +UsageParameter=Usage parameters +InformationToFindParameters=Help to find your %s account information +PAYBOX_CGI_URL_V2=Url of Paybox CGI module for payment +VendorName=Name of vendor +CSSUrlForPaymentForm=CSS style sheet url for payment form +MessageOK=Message on validated payment return page +MessageKO=Message on canceled payment return page +NewPayboxPaymentReceived=New Paybox payment received +NewPayboxPaymentFailed=New Paybox payment tried but failed +PAYBOX_PAYONLINE_SENDEMAIL=EMail to warn after a payment (success or failed) +PAYBOX_PBX_SITE=Value for PBX SITE +PAYBOX_PBX_RANG=Value for PBX Rang +PAYBOX_PBX_IDENTIFIANT=Value for PBX ID diff --git a/htdocs/langs/kn_IN/paypal.lang b/htdocs/langs/kn_IN/paypal.lang new file mode 100644 index 00000000000..65a3dc45a23 --- /dev/null +++ b/htdocs/langs/kn_IN/paypal.lang @@ -0,0 +1,25 @@ +# Dolibarr language file - Source file is en_US - paypal +PaypalSetup=PayPal module setup +PaypalDesc=This module offer pages to allow payment on PayPal by customers. This can be used for a free payment or for a payment on a particular Dolibarr object (invoice, order, ...) +PaypalOrCBDoPayment=Pay with credit card or Paypal +PaypalDoPayment=Pay with Paypal +PaypalCBDoPayment=Pay with credit card +PAYPAL_API_SANDBOX=Mode test/sandbox +PAYPAL_API_USER=API username +PAYPAL_API_PASSWORD=API password +PAYPAL_API_SIGNATURE=API signature +PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Offer payment "integral" (Credit card+Paypal) or "Paypal" only +PaypalModeIntegral=Integral +PaypalModeOnlyPaypal=PayPal only +PAYPAL_CSS_URL=Optionnal Url of CSS style sheet on payment page +ThisIsTransactionId=This is id of transaction: %s +PAYPAL_ADD_PAYMENT_URL=Add the url of Paypal payment when you send a document by mail +PAYPAL_IPN_MAIL_ADDRESS=E-mail address for the instant notification of payment (IPN) +PredefinedMailContentLink=You can click on the secure link below to make your payment (PayPal) if it is not already done.\n\n%s\n\n +YouAreCurrentlyInSandboxMode=You are currently in the "sandbox" mode +NewPaypalPaymentReceived=New Paypal payment received +NewPaypalPaymentFailed=New Paypal payment tried but failed +PAYPAL_PAYONLINE_SENDEMAIL=EMail to warn after a payment (success or not) +ReturnURLAfterPayment=Return URL after payment +ValidationOfPaypalPaymentFailed=Validation of Paypal payment failed +PaypalConfirmPaymentPageWasCalledButFailed=Payment confirmation page for Paypal was called by Paypal but confirmation failed diff --git a/htdocs/langs/kn_IN/printipp.lang b/htdocs/langs/kn_IN/printipp.lang new file mode 100644 index 00000000000..835e6827f12 --- /dev/null +++ b/htdocs/langs/kn_IN/printipp.lang @@ -0,0 +1,14 @@ +# Dolibarr language file - Source file is en_US - printipp +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This module adds a Print button to send documents directly to a printer. It requires a Linux system with CUPS installed. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server diff --git a/htdocs/langs/kn_IN/productbatch.lang b/htdocs/langs/kn_IN/productbatch.lang new file mode 100644 index 00000000000..45263681965 --- /dev/null +++ b/htdocs/langs/kn_IN/productbatch.lang @@ -0,0 +1,21 @@ +# ProductBATCH language file - en_US - ProductBATCH +ManageLotSerial=Use batch/serial number +ProductStatusOnBatch=Yes (Batch/serial required) +ProductStatusNotOnBatch=No (Batch/serial not used) +ProductStatusOnBatchShort=Yes +ProductStatusNotOnBatchShort=No +Batch=Batch/Serial +atleast1batchfield=Eat-by date or Sell-by date or Batch number +batch_number=Batch/Serial number +l_eatby=Eat-by date +l_sellby=Sell-by date +DetailBatchNumber=Batch/Serial details +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) +printBatch=Batch: %s +printEatby=Eat-by: %s +printSellby=Sell-by: %s +printQty=Qty: %d +AddDispatchBatchLine=Add a line for Shelf Life dispatching +BatchDefaultNumber=Undefined +WhenProductBatchModuleOnOptionAreForced=When module Batch/Serial is on, increase/decrease stock mode is forced to last choice and can't be edited. Other options can be defined as you want. +ProductDoesNotUseBatchSerial=This product does not use batch/serial number diff --git a/htdocs/langs/kn_IN/products.lang b/htdocs/langs/kn_IN/products.lang new file mode 100644 index 00000000000..3a18cda69e7 --- /dev/null +++ b/htdocs/langs/kn_IN/products.lang @@ -0,0 +1,256 @@ +# Dolibarr language file - Source file is en_US - products +ProductRef=Product ref. +ProductLabel=Product label +ProductServiceCard=Products/Services card +Products=Products +Services=Services +Product=Product +Service=Service +ProductId=Product/service id +Create=Create +Reference=Reference +NewProduct=New product +NewService=New service +ProductCode=Product code +ServiceCode=Service code +ProductVatMassChange=Mass VAT change +ProductVatMassChangeDesc=This page can be used to modify a VAT rate defined on products or services from a value to another. Warning, this change is done on all database. +MassBarcodeInit=Mass barcode init +MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. +ProductAccountancyBuyCode=Accountancy code (buy) +ProductAccountancySellCode=Accountancy code (sell) +ProductOrService=Product or Service +ProductsAndServices=Products and Services +ProductsOrServices=Products or Services +ProductsAndServicesOnSell=Products and Services for sale or for purchase +ProductsAndServicesNotOnSell=Products and Services out of sale +ProductsAndServicesStatistics=Products and Services statistics +ProductsStatistics=Products statistics +ProductsOnSell=Product for sale or for pruchase +ProductsNotOnSell=Product out of sale and out of purchase +ProductsOnSellAndOnBuy=Products for sale and for purchase +ServicesOnSell=Services for sale or for purchase +ServicesNotOnSell=Services out of sale +ServicesOnSellAndOnBuy=Services for sale and for purchase +InternalRef=Internal reference +LastRecorded=Last products/services on sell recorded +LastRecordedProductsAndServices=Last %s recorded products/services +LastModifiedProductsAndServices=Last %s modified products/services +LastRecordedProducts=Last %s products recorded +LastRecordedServices=Last %s services recorded +LastProducts=Last products +CardProduct0=Product card +CardProduct1=Service card +CardContract=Contract card +Warehouse=Warehouse +Warehouses=Warehouses +WarehouseOpened=Warehouse opened +WarehouseClosed=Warehouse closed +Stock=Stock +Stocks=Stocks +Movement=Movement +Movements=Movements +Sell=Sales +Buy=Purchases +OnSell=For sale +OnBuy=For purchase +NotOnSell=Not for sale +ProductStatusOnSell=For sale +ProductStatusNotOnSell=Not for sale +ProductStatusOnSellShort=For sale +ProductStatusNotOnSellShort=Not for sale +ProductStatusOnBuy=For purchase +ProductStatusNotOnBuy=Not for purchase +ProductStatusOnBuyShort=For purchase +ProductStatusNotOnBuyShort=Not for purchase +UpdatePrice=Update price +AppliedPricesFrom=Applied prices from +SellingPrice=Selling price +SellingPriceHT=Selling price (net of tax) +SellingPriceTTC=Selling price (inc. tax) +PublicPrice=Public price +CurrentPrice=Current price +NewPrice=New price +MinPrice=Minim. selling price +MinPriceHT=Minim. selling price (net of tax) +MinPriceTTC=Minim. selling price (inc. tax) +CantBeLessThanMinPrice=The selling price can't be lower than minimum allowed for this product (%s without tax). This message can also appears if you type a too important discount. +ContractStatus=Contract status +ContractStatusClosed=Closed +ContractStatusRunning=Running +ContractStatusExpired=expired +ContractStatusOnHold=Not running +ContractStatusToRun=To get running +ContractNotRunning=This contract is not running +ErrorProductAlreadyExists=A product with reference %s already exists. +ErrorProductBadRefOrLabel=Wrong value for reference or label. +ErrorProductClone=There was a problem while trying to clone the product or service. +ErrorPriceCantBeLowerThanMinPrice=Error Price Can't Be Lower Than Minimum Price. +Suppliers=Suppliers +SupplierRef=Supplier's product ref. +ShowProduct=Show product +ShowService=Show service +ProductsAndServicesArea=Product and Services area +ProductsArea=Product area +ServicesArea=Services area +AddToMyProposals=Add to my proposals +AddToOtherProposals=Add to other proposals +AddToMyBills=Add to my bills +AddToOtherBills=Add to other bills +CorrectStock=Correct stock +AddPhoto=Add photo +ListOfStockMovements=List of stock movements +BuyingPrice=Buying price +SupplierCard=Supplier card +CommercialCard=Commercial card +AllWays=Path to find your product in stock +NoCat=Your product is not in any category +PrimaryWay=Primary path +PriceRemoved=Price removed +BarCode=Barcode +BarcodeType=Barcode type +SetDefaultBarcodeType=Set barcode type +BarcodeValue=Barcode value +NoteNotVisibleOnBill=Note (not visible on invoices, proposals...) +CreateCopy=Create copy +ServiceLimitedDuration=If product is a service with limited duration: +MultiPricesAbility=Several level of prices per product/service +MultiPricesNumPrices=Number of prices +MultiPriceLevelsName=Price categories +AssociatedProductsAbility=Activate the virtual package feature +AssociatedProducts=Package product +AssociatedProductsNumber=Number of products composing this virtual package product +ParentProductsNumber=Number of parent packaging product +IfZeroItIsNotAVirtualProduct=If 0, this product is not a virtual package product +IfZeroItIsNotUsedByVirtualProduct=If 0, this product is not used by any virtual package product +EditAssociate=Associate +Translation=Translation +KeywordFilter=Keyword filter +CategoryFilter=Category filter +ProductToAddSearch=Search product to add +AddDel=Add/Delete +Quantity=Quantity +NoMatchFound=No match found +ProductAssociationList=List of related products/services: name of product/service (quantity affected) +ProductParentList=List of package products/services with this product as a component +ErrorAssociationIsFatherOfThis=One of selected product is parent with current product +DeleteProduct=Delete a product/service +ConfirmDeleteProduct=Are you sure you want to delete this product/service? +ProductDeleted=Product/Service "%s" deleted from database. +DeletePicture=Delete a picture +ConfirmDeletePicture=Are you sure you want to delete this picture ? +ExportDataset_produit_1=Products +ExportDataset_service_1=Services +ImportDataset_produit_1=Products +ImportDataset_service_1=Services +DeleteProductLine=Delete product line +ConfirmDeleteProductLine=Are you sure you want to delete this product line? +NoProductMatching=No product/service match your criteria +MatchingProducts=Matching products/services +NoStockForThisProduct=No stock for this product +NoStock=No Stock +Restock=Restock +ProductSpecial=Special +QtyMin=Minimum Qty +PriceQty=Price for this quantity +PriceQtyMin=Price for this min. qty (w/o discount) +VATRateForSupplierProduct=VAT Rate (for this supplier/product) +DiscountQtyMin=Default discount for qty +NoPriceDefinedForThisSupplier=No price/qty defined for this supplier/product +NoSupplierPriceDefinedForThisProduct=No supplier price/qty defined for this product +RecordedProducts=Products recorded +RecordedServices=Services recorded +RecordedProductsAndServices=Products/services recorded +PredefinedProductsToSell=Predefined products to sell +PredefinedServicesToSell=Predefined services to sell +PredefinedProductsAndServicesToSell=Predefined products/services to sell +PredefinedProductsToPurchase=Predefined product to purchase +PredefinedServicesToPurchase=Predefined services to purchase +PredefinedProductsAndServicesToPurchase=Predefined products/services to puchase +GenerateThumb=Generate thumb +ProductCanvasAbility=Use special "canvas" addons +ServiceNb=Service #%s +ListProductServiceByPopularity=List of products/services by popularity +ListProductByPopularity=List of products by popularity +ListServiceByPopularity=List of services by popularity +Finished=Manufactured product +RowMaterial=Raw Material +CloneProduct=Clone product or service +ConfirmCloneProduct=Are you sure you want to clone product or service %s ? +CloneContentProduct=Clone all main informations of product/service +ClonePricesProduct=Clone main informations and prices +CloneCompositionProduct=Clone packaged product/services +ProductIsUsed=This product is used +NewRefForClone=Ref. of new product/service +CustomerPrices=Customers prices +SuppliersPrices=Suppliers prices +SuppliersPricesOfProductsOrServices=Suppliers prices (of products or services) +CustomCode=Customs code +CountryOrigin=Origin country +HiddenIntoCombo=Hidden into select lists +Nature=Nature +ProductCodeModel=Product ref template +ServiceCodeModel=Service ref template +AddThisProductCard=Create product card +HelpAddThisProductCard=This option allows you to create or clone a product if it does not exist. +AddThisServiceCard=Create service card +HelpAddThisServiceCard=This option allows you to create or clone a service if it does not exist. +CurrentProductPrice=Current price +AlwaysUseNewPrice=Always use current price of product/service +AlwaysUseFixedPrice=Use the fixed price +PriceByQuantity=Different prices by quantity +PriceByQuantityRange=Quantity range +ProductsDashboard=Products/Services summary +UpdateOriginalProductLabel=Modify original label +HelpUpdateOriginalProductLabel=Allows to edit the name of the product +### composition fabrication +Building=Production and items dispatchment +Build=Produce +BuildIt=Produce & Dispatch +BuildindListInfo=Available quantity for production per warehouse (set it to 0 for no further action) +QtyNeed=Qty +UnitPmp=Net unit VWAP +CostPmpHT=Net total VWAP +ProductUsedForBuild=Auto consumed by production +ProductBuilded=Production completed +ProductsMultiPrice=Product multi-price +ProductsOrServiceMultiPrice=Customers prices (of products or services, multi-prices) +ProductSellByQuarterHT=Products turnover quarterly VWAP +ServiceSellByQuarterHT=Services turnover quarterly VWAP +Quarter1=1st. Quarter +Quarter2=2nd. Quarter +Quarter3=3rd. Quarter +Quarter4=4th. Quarter +BarCodePrintsheet=Print bar code +PageToGenerateBarCodeSheets=With this tool, you can print sheets of bar code stickers. Choose format of your sticker page, type of barcode and value of barcode, then click on button %s. +NumberOfStickers=Number of stickers to print on page +PrintsheetForOneBarCode=Print several stickers for one barcode +BuildPageToPrint=Generate page to print +FillBarCodeTypeAndValueManually=Fill barcode type and value manually. +FillBarCodeTypeAndValueFromProduct=Fill barcode type and value from barcode of a product. +FillBarCodeTypeAndValueFromThirdParty=Fill barcode type and value from barcode of a thirdparty. +DefinitionOfBarCodeForProductNotComplete=Definition of type or value of bar code not complete for product %s. +DefinitionOfBarCodeForThirdpartyNotComplete=Definition of type or value of bar code non complete for thirdparty %s. +BarCodeDataForProduct=Barcode information of product %s : +BarCodeDataForThirdparty=Barcode information of thirdparty %s : +ResetBarcodeForAllRecords=Define barcode value for all records (this will also reset barcode value already defined with new values) +PriceByCustomer=Different price for each customer +PriceCatalogue=Unique price per product/service +PricingRule=Rules for customer prices +AddCustomerPrice=Add price by customers +ForceUpdateChildPriceSoc=Set same price on customer subsidiaries +PriceByCustomerLog=Price by customer log +MinimumPriceLimit=Minimum price can't be lower that %s +MinimumRecommendedPrice=Minimum recommended price is : %s +PriceExpressionEditor=Price expression editor +PriceExpressionSelected=Selected price expression +PriceExpressionEditorHelp1="price = 2 + 2" or "2 + 2" for setting the price. Use ; to separate expressions +PriceExpressionEditorHelp2=You can access ExtraFields with variables like #options_myextrafieldkey# +PriceExpressionEditorHelp3=In both product/service and supplier prices there are these variables available:
#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min# +PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# +PriceMode=Price mode +PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/kn_IN/projects.lang b/htdocs/langs/kn_IN/projects.lang new file mode 100644 index 00000000000..0a12f4c64b7 --- /dev/null +++ b/htdocs/langs/kn_IN/projects.lang @@ -0,0 +1,142 @@ +# Dolibarr language file - Source file is en_US - projects +RefProject=Ref. project +ProjectId=Project Id +Project=Project +Projects=Projects +ProjectStatus=Project status +SharedProject=Everybody +PrivateProject=Contacts of project +MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). +ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. +ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). +MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). +TasksPublicDesc=This view presents all projects and tasks you are allowed to read. +TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). +ProjectsArea=Projects area +NewProject=New project +AddProject=Create project +DeleteAProject=Delete a project +DeleteATask=Delete a task +ConfirmDeleteAProject=Are you sure you want to delete this project ? +ConfirmDeleteATask=Are you sure you want to delete this task ? +OfficerProject=Officer project +LastProjects=Last %s projects +AllProjects=All projects +ProjectsList=List of projects +ShowProject=Show project +SetProject=Set project +NoProject=No project defined or owned +NbOpenTasks=Nb of opened tasks +NbOfProjects=Nb of projects +TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user +TimesSpent=Time spent +RefTask=Ref. task +LabelTask=Label task +TaskTimeSpent=Time spent on tasks +TaskTimeUser=User +TaskTimeNote=Note +TaskTimeDate=Date +TasksOnOpenedProject=Tasks on opened projects +WorkloadNotDefined=Workload not defined +NewTimeSpent=New time spent +MyTimeSpent=My time spent +MyTasks=My tasks +Tasks=Tasks +Task=Task +TaskDateStart=Task start date +TaskDateEnd=Task end date +TaskDescription=Task description +NewTask=New task +AddTask=Create task +AddDuration=Add duration +Activity=Activity +Activities=Tasks/activities +MyActivity=My activity +MyActivities=My tasks/activities +MyProjects=My projects +DurationEffective=Effective duration +Progress=Progress +ProgressDeclared=Declared progress +ProgressCalculated=Calculated progress +Time=Time +ListProposalsAssociatedProject=List of the commercial proposals associated with the project +ListOrdersAssociatedProject=List of customer's orders associated with the project +ListInvoicesAssociatedProject=List of customer's invoices associated with the project +ListPredefinedInvoicesAssociatedProject=List of customer's predefined invoices associated with project +ListSupplierOrdersAssociatedProject=List of supplier's orders associated with the project +ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated with the project +ListContractAssociatedProject=List of contracts associated with the project +ListFichinterAssociatedProject=List of interventions associated with the project +ListExpenseReportsAssociatedProject=List of expense reports associated with the project +ListActionsAssociatedProject=List of events associated with the project +ActivityOnProjectThisWeek=Activity on project this week +ActivityOnProjectThisMonth=Activity on project this month +ActivityOnProjectThisYear=Activity on project this year +ChildOfTask=Child of project/task +NotOwnerOfProject=Not owner of this private project +AffectedTo=Allocated to +CantRemoveProject=This project can't be removed as it is referenced by some other objects (invoice, orders or other). See referers tab. +ValidateProject=Validate projet +ConfirmValidateProject=Are you sure you want to validate this project ? +CloseAProject=Close project +ConfirmCloseAProject=Are you sure you want to close this project ? +ReOpenAProject=Open project +ConfirmReOpenAProject=Are you sure you want to re-open this project ? +ProjectContact=Project contacts +ActionsOnProject=Events on project +YouAreNotContactOfProject=You are not a contact of this private project +DeleteATimeSpent=Delete time spent +ConfirmDeleteATimeSpent=Are you sure you want to delete this time spent ? +DoNotShowMyTasksOnly=See also tasks not assigned to me +ShowMyTasksOnly=View only tasks assigned to me +TaskRessourceLinks=Ressources +ProjectsDedicatedToThisThirdParty=Projects dedicated to this third party +NoTasks=No tasks for this project +LinkedToAnotherCompany=Linked to other third party +TaskIsNotAffectedToYou=Task not assigned to you +ErrorTimeSpentIsEmpty=Time spent is empty +ThisWillAlsoRemoveTasks=This action will also delete all tasks of project (%s tasks at the moment) and all inputs of time spent. +IfNeedToUseOhterObjectKeepEmpty=If some objects (invoice, order, ...), belonging to another third party, must be linked to the project to create, keep this empty to have the project being multi third parties. +CloneProject=Clone project +CloneTasks=Clone tasks +CloneContacts=Clone contacts +CloneNotes=Clone notes +CloneProjectFiles=Clone project joined files +CloneTaskFiles=Clone task(s) joined files (if task(s) cloned) +CloneMoveDate=Update project/tasks dates from now ? +ConfirmCloneProject=Are you sure to clone this project ? +ProjectReportDate=Change task date according project start date +ErrorShiftTaskDate=Impossible to shift task date according to new project start date +ProjectsAndTasksLines=Projects and tasks +ProjectCreatedInDolibarr=Project %s created +TaskCreatedInDolibarr=Task %s created +TaskModifiedInDolibarr=Task %s modified +TaskDeletedInDolibarr=Task %s deleted +##### Types de contacts ##### +TypeContact_project_internal_PROJECTLEADER=Project leader +TypeContact_project_external_PROJECTLEADER=Project leader +TypeContact_project_internal_PROJECTCONTRIBUTOR=Contributor +TypeContact_project_external_PROJECTCONTRIBUTOR=Contributor +TypeContact_project_task_internal_TASKEXECUTIVE=Task executive +TypeContact_project_task_external_TASKEXECUTIVE=Task executive +TypeContact_project_task_internal_TASKCONTRIBUTOR=Contributor +TypeContact_project_task_external_TASKCONTRIBUTOR=Contributor +SelectElement=Select element +AddElement=Link to element +UnlinkElement=Unlink element +# Documents models +DocumentModelBaleine=A complete project's report model (logo...) +PlannedWorkload = Planned workload +WorkloadOccupation= Workload affectation +ProjectReferers=Refering objects +SearchAProject=Search a project +ProjectMustBeValidatedFirst=Project must be validated first +ProjectDraft=Draft projects +FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/kn_IN/propal.lang b/htdocs/langs/kn_IN/propal.lang new file mode 100644 index 00000000000..2b6d12870a1 --- /dev/null +++ b/htdocs/langs/kn_IN/propal.lang @@ -0,0 +1,100 @@ +# Dolibarr language file - Source file is en_US - propal +Proposals=Commercial proposals +Proposal=Commercial proposal +ProposalShort=Proposal +ProposalsDraft=Draft commercial proposals +ProposalDraft=Draft commercial proposal +ProposalsOpened=Opened commercial proposals +Prop=Commercial proposals +CommercialProposal=Commercial proposal +CommercialProposals=Commercial proposals +ProposalCard=Proposal card +NewProp=New commercial proposal +NewProposal=New commercial proposal +NewPropal=New proposal +Prospect=Prospect +ProspectList=Prospect list +DeleteProp=Delete commercial proposal +ValidateProp=Validate commercial proposal +AddProp=Create proposal +ConfirmDeleteProp=Are you sure you want to delete this commercial proposal ? +ConfirmValidateProp=Are you sure you want to validate this commercial proposal under name %s ? +LastPropals=Last %s proposals +LastClosedProposals=Last %s closed proposals +LastModifiedProposals=Last %s modified proposals +AllPropals=All proposals +LastProposals=Last proposals +SearchAProposal=Search a proposal +ProposalsStatistics=Commercial proposal's statistics +NumberOfProposalsByMonth=Number by month +AmountOfProposalsByMonthHT=Amount by month (net of tax) +NbOfProposals=Number of commercial proposals +ShowPropal=Show proposal +PropalsDraft=Drafts +PropalsOpened=Opened +PropalsNotBilled=Closed not billed +PropalStatusDraft=Draft (needs to be validated) +PropalStatusValidated=Validated (proposal is open) +PropalStatusOpened=Validated (proposal is open) +PropalStatusClosed=Closed +PropalStatusSigned=Signed (needs billing) +PropalStatusNotSigned=Not signed (closed) +PropalStatusBilled=Billed +PropalStatusDraftShort=Draft +PropalStatusValidatedShort=Validated +PropalStatusOpenedShort=Opened +PropalStatusClosedShort=Closed +PropalStatusSignedShort=Signed +PropalStatusNotSignedShort=Not signed +PropalStatusBilledShort=Billed +PropalsToClose=Commercial proposals to close +PropalsToBill=Signed commercial proposals to bill +ListOfProposals=List of commercial proposals +ActionsOnPropal=Events on proposal +NoOpenedPropals=No opened commercial proposals +NoOtherOpenedPropals=No other opened commercial proposals +RefProposal=Commercial proposal ref +SendPropalByMail=Send commercial proposal by mail +AssociatedDocuments=Documents associated with the proposal: +ErrorCantOpenDir=Can't open directory +DatePropal=Date of proposal +DateEndPropal=Validity ending date +DateEndPropalShort=Date end +ValidityDuration=Validity duration +CloseAs=Close with status +ClassifyBilled=Classify billed +BuildBill=Build invoice +ErrorPropalNotFound=Propal %s not found +Estimate=Estimate : +EstimateShort=Estimate +OtherPropals=Other proposals +AddToDraftProposals=Add to draft proposal +NoDraftProposals=No draft proposals +CopyPropalFrom=Create commercial proposal by copying existing proposal +CreateEmptyPropal=Create empty commercial proposals vierge or from list of products/services +DefaultProposalDurationValidity=Default commercial proposal validity duration (in days) +UseCustomerContactAsPropalRecipientIfExist=Use customer contact address if defined instead of third party address as proposal recipient address +ClonePropal=Clone commercial proposal +ConfirmClonePropal=Are you sure you want to clone the commercial proposal %s ? +ConfirmReOpenProp=Are you sure you want to open back the commercial proposal %s ? +ProposalsAndProposalsLines=Commercial proposal and lines +ProposalLine=Proposal line +AvailabilityPeriod=Availability delay +SetAvailability=Set availability delay +AfterOrder=after order +##### Availability ##### +AvailabilityTypeAV_NOW=Immediate +AvailabilityTypeAV_1W=1 week +AvailabilityTypeAV_2W=2 weeks +AvailabilityTypeAV_3W=3 weeks +AvailabilityTypeAV_1M=1 month +##### Types de contacts ##### +TypeContact_propal_internal_SALESREPFOLL=Representative following-up proposal +TypeContact_propal_external_BILLING=Customer invoice contact +TypeContact_propal_external_CUSTOMER=Customer contact following-up proposal +# Document models +DocModelAzurDescription=A complete proposal model (logo...) +DocModelJauneDescription=Jaune proposal model +DefaultModelPropalCreate=Default model creation +DefaultModelPropalToBill=Default template when closing a business proposal (to be invoiced) +DefaultModelPropalClosed=Default template when closing a business proposal (unbilled) diff --git a/htdocs/langs/kn_IN/resource.lang b/htdocs/langs/kn_IN/resource.lang new file mode 100644 index 00000000000..32bdd92f884 --- /dev/null +++ b/htdocs/langs/kn_IN/resource.lang @@ -0,0 +1,34 @@ + +MenuResourceIndex=Resources +MenuResourceAdd=New resource +MenuResourcePlanning=Resource planning +DeleteResource=Delete resource +ConfirmDeleteResourceElement=Confirm delete the resource for this element +NoResourceInDatabase=No resource in database. +NoResourceLinked=No resource linked + +ResourcePageIndex=Resources list +ResourceSingular=Resource +ResourceCard=Resource card +AddResource=Create a resource +ResourceFormLabel_ref=Resource name +ResourceType=Resource type +ResourceFormLabel_description=Resource description + +ResourcesLinkedToElement=Resources linked to element + +ShowResourcePlanning=Show resource planning +GotoDate=Go to date + +ResourceElementPage=Element resources +ResourceCreatedWithSuccess=Resource successfully created +RessourceLineSuccessfullyDeleted=Resource line successfully deleted +RessourceLineSuccessfullyUpdated=Resource line successfully updated +ResourceLinkedWithSuccess=Resource linked with success + +TitleResourceCard=Resource card +ConfirmDeleteResource=Confirm to delete this resource +RessourceSuccessfullyDeleted=Resource successfully deleted +DictionaryResourceType=Type of resources + +SelectResource=Select resource diff --git a/htdocs/langs/kn_IN/salaries.lang b/htdocs/langs/kn_IN/salaries.lang new file mode 100644 index 00000000000..28c21adfad3 --- /dev/null +++ b/htdocs/langs/kn_IN/salaries.lang @@ -0,0 +1,13 @@ +# Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge +Salary=Salary +Salaries=Salaries +Employee=Employee +NewSalaryPayment=New salary payment +SalaryPayment=Salary payment +SalariesPayments=Salaries payments +ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/kn_IN/sendings.lang b/htdocs/langs/kn_IN/sendings.lang new file mode 100644 index 00000000000..b1ff55f71c1 --- /dev/null +++ b/htdocs/langs/kn_IN/sendings.lang @@ -0,0 +1,85 @@ +# Dolibarr language file - Source file is en_US - sendings +RefSending=Ref. shipment +Sending=Shipment +Sendings=Shipments +Shipment=Shipment +Shipments=Shipments +ShowSending=Show Sending +Receivings=Receipts +SendingsArea=Shipments area +ListOfSendings=List of shipments +SendingMethod=Shipping method +SendingReceipt=Shipping receipt +LastSendings=Last %s shipments +SearchASending=Search for shipment +StatisticsOfSendings=Statistics for shipments +NbOfSendings=Number of shipments +NumberOfShipmentsByMonth=Number of shipments by month +SendingCard=Shipment card +NewSending=New shipment +CreateASending=Create a shipment +CreateSending=Create shipment +QtyOrdered=Qty ordered +QtyShipped=Qty shipped +QtyToShip=Qty to ship +QtyReceived=Qty received +KeepToShip=Remain to ship +OtherSendingsForSameOrder=Other shipments for this order +DateSending=Date sending order +DateSendingShort=Date sending order +SendingsForSameOrder=Shipments for this order +SendingsAndReceivingForSameOrder=Shipments and receivings for this order +SendingsToValidate=Shipments to validate +StatusSendingCanceled=Canceled +StatusSendingDraft=Draft +StatusSendingValidated=Validated (products to ship or already shipped) +StatusSendingProcessed=Processed +StatusSendingCanceledShort=Canceled +StatusSendingDraftShort=Draft +StatusSendingValidatedShort=Validated +StatusSendingProcessedShort=Processed +SendingSheet=Shipment sheet +Carriers=Carriers +Carrier=Carrier +CarriersArea=Carriers area +NewCarrier=New carrier +ConfirmDeleteSending=Are you sure you want to delete this shipment ? +ConfirmValidateSending=Are you sure you want to validate this shipment with reference %s ? +ConfirmCancelSending=Are you sure you want to cancel this shipment ? +GenericTransport=Generic transport +Enlevement=Gotten by customer +DocumentModelSimple=Simple document model +DocumentModelMerou=Merou A5 model +WarningNoQtyLeftToSend=Warning, no products waiting to be shipped. +StatsOnShipmentsOnlyValidated=Statistics conducted on shipments only validated. Date used is date of validation of shipment (planed delivery date is not always known). +DateDeliveryPlanned=Planed date of delivery +DateReceived=Date delivery received +SendShippingByEMail=Send shipment by EMail +SendShippingRef=Submission of shipment %s +ActionsOnShipping=Events on shipment +LinkToTrackYourPackage=Link to track your package +ShipmentCreationIsDoneFromOrder=For the moment, creation of a new shipment is done from the order card. +RelatedShippings=Related shipments +ShipmentLine=Shipment line +CarrierList=List of transporters +SendingRunning=Product from ordered customer orders +SuppliersReceiptRunning=Product from ordered supplier orders +ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders +ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders +ProductQtyInShipmentAlreadySent=Product quantity from opended customer order already sent +ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received + +# Sending methods +SendingMethodCATCH=Catch by customer +SendingMethodTRANS=Transporter +SendingMethodCOLSUI=Colissimo +# ModelDocument +DocumentModelSirocco=Simple document model for delivery receipts +DocumentModelTyphon=More complete document model for delivery receipts (logo...) +Error_EXPEDITION_ADDON_NUMBER_NotDefined=Constant EXPEDITION_ADDON_NUMBER not defined +SumOfProductVolumes=Sum of product volumes +SumOfProductWeights=Sum of product weights + +# warehouse details +DetailWarehouseNumber= Warehouse details +DetailWarehouseFormat= W:%s (Qty : %d) diff --git a/htdocs/langs/kn_IN/sms.lang b/htdocs/langs/kn_IN/sms.lang new file mode 100644 index 00000000000..4e89bb24730 --- /dev/null +++ b/htdocs/langs/kn_IN/sms.lang @@ -0,0 +1,53 @@ +# Dolibarr language file - Source file is en_US - sms +Sms=Sms +SmsSetup=Sms setup +SmsDesc=This page allows you to define globals options on SMS features +SmsCard=SMS Card +AllSms=All SMS campains +SmsTargets=Targets +SmsRecipients=Targets +SmsRecipient=Target +SmsTitle=Description +SmsFrom=Sender +SmsTo=Target +SmsTopic=Topic of SMS +SmsText=Message +SmsMessage=SMS Message +ShowSms=Show Sms +ListOfSms=List SMS campains +NewSms=New SMS campain +EditSms=Edit Sms +ResetSms=New sending +DeleteSms=Delete Sms campain +DeleteASms=Remove a Sms campain +PreviewSms=Previuw Sms +PrepareSms=Prepare Sms +CreateSms=Create Sms +SmsResult=Result of Sms sending +TestSms=Test Sms +ValidSms=Validate Sms +ApproveSms=Approve Sms +SmsStatusDraft=Draft +SmsStatusValidated=Validated +SmsStatusApproved=Approved +SmsStatusSent=Sent +SmsStatusSentPartialy=Sent partially +SmsStatusSentCompletely=Sent completely +SmsStatusError=Error +SmsStatusNotSent=Not sent +SmsSuccessfulySent=Sms correctly sent (from %s to %s) +ErrorSmsRecipientIsEmpty=Number of target is empty +WarningNoSmsAdded=No new phone number to add to target list +ConfirmValidSms=Do you confirm validation of this campain ? +ConfirmResetMailing=Warning, if you make a reinit of Sms campain %s, you will allow to make a mass sending of it a second time. Is it really what you wan to do ? +ConfirmDeleteMailing=Do you confirm removing of campain ? +NbOfRecipients=Number of targets +NbOfUniqueSms=Nb dof unique phone numbers +NbOfSms=Nbre of phon numbers +ThisIsATestMessage=This is a test message +SendSms=Send SMS +SmsInfoCharRemain=Nb of remaining characters +SmsInfoNumero= (format international ie : +33899701761) +DelayBeforeSending=Delay before sending (minutes) +SmsNoPossibleRecipientFound=No target available. Check setup of your SMS provider. + diff --git a/htdocs/langs/kn_IN/stocks.lang b/htdocs/langs/kn_IN/stocks.lang new file mode 100644 index 00000000000..29706d17615 --- /dev/null +++ b/htdocs/langs/kn_IN/stocks.lang @@ -0,0 +1,134 @@ +# Dolibarr language file - Source file is en_US - stocks +WarehouseCard=Warehouse card +Warehouse=Warehouse +Warehouses=Warehouses +NewWarehouse=New warehouse / Stock area +WarehouseEdit=Modify warehouse +MenuNewWarehouse=New warehouse +WarehouseOpened=Warehouse opened +WarehouseClosed=Warehouse closed +WarehouseSource=Source warehouse +WarehouseSourceNotDefined=No warehouse defined, +AddOne=Add one +WarehouseTarget=Target warehouse +ValidateSending=Delete sending +CancelSending=Cancel sending +DeleteSending=Delete sending +Stock=Stock +Stocks=Stocks +Movement=Movement +Movements=Movements +ErrorWarehouseRefRequired=Warehouse reference name is required +ErrorWarehouseLabelRequired=Warehouse label is required +CorrectStock=Correct stock +ListOfWarehouses=List of warehouses +ListOfStockMovements=List of stock movements +StocksArea=Warehouses area +Location=Location +LocationSummary=Short name location +NumberOfDifferentProducts=Number of different products +NumberOfProducts=Total number of products +LastMovement=Last movement +LastMovements=Last movements +Units=Units +Unit=Unit +StockCorrection=Correct stock +StockTransfer=Stock transfer +StockMovement=Transfer +StockMovements=Stock transfers +LabelMovement=Movement label +NumberOfUnit=Number of units +UnitPurchaseValue=Unit purchase price +TotalStock=Total in stock +StockTooLow=Stock too low +StockLowerThanLimit=Stock lower than alert limit +EnhancedValue=Value +PMPValue=Weighted average price +PMPValueShort=WAP +EnhancedValueOfWarehouses=Warehouses value +UserWarehouseAutoCreate=Create a warehouse automatically when creating a user +IndependantSubProductStock=Product stock and subproduct stock are independant +QtyDispatched=Quantity dispatched +QtyDispatchedShort=Qty dispatched +QtyToDispatchShort=Qty to dispatch +OrderDispatch=Stock dispatching +RuleForStockManagementDecrease=Rule for stock management decrease +RuleForStockManagementIncrease=Rule for stock management increase +DeStockOnBill=Decrease real stocks on customers invoices/credit notes validation +DeStockOnValidateOrder=Decrease real stocks on customers orders validation +DeStockOnShipment=Decrease real stocks on shipment validation +ReStockOnBill=Increase real stocks on suppliers invoices/credit notes validation +ReStockOnValidateOrder=Increase real stocks on suppliers orders approbation +ReStockOnDispatchOrder=Increase real stocks on manual dispatching into warehouses, after supplier order receiving +ReStockOnDeleteInvoice=Increase real stocks on invoice deletion +OrderStatusNotReadyToDispatch=Order has not yet or no more a status that allows dispatching of products in stock warehouses. +StockDiffPhysicTeoric=Explanation for difference between physical and theoretical stock +NoPredefinedProductToDispatch=No predefined products for this object. So no dispatching in stock is required. +DispatchVerb=Dispatch +StockLimitShort=Limit for alert +StockLimit=Stock limit for alert +PhysicalStock=Physical stock +RealStock=Real Stock +VirtualStock=Virtual stock +MininumStock=Minimum stock +StockUp=Stock up +MininumStockShort=Stock min +StockUpShort=Stock up +IdWarehouse=Id warehouse +DescWareHouse=Description warehouse +LieuWareHouse=Localisation warehouse +WarehousesAndProducts=Warehouses and products +AverageUnitPricePMPShort=Weighted average input price +AverageUnitPricePMP=Weighted average input price +SellPriceMin=Selling Unit Price +EstimatedStockValueSellShort=Value to sell +EstimatedStockValueSell=Value to Sell +EstimatedStockValueShort=Input stock value +EstimatedStockValue=Input stock value +DeleteAWarehouse=Delete a warehouse +ConfirmDeleteWarehouse=Are you sure you want to delete the warehouse %s ? +PersonalStock=Personal stock %s +ThisWarehouseIsPersonalStock=This warehouse represents personal stock of %s %s +SelectWarehouseForStockDecrease=Choose warehouse to use for stock decrease +SelectWarehouseForStockIncrease=Choose warehouse to use for stock increase +NoStockAction=No stock action +LastWaitingSupplierOrders=Orders waiting for receptions +DesiredStock=Desired stock +StockToBuy=To order +Replenishment=Replenishment +ReplenishmentOrders=Replenishment orders +VirtualDiffersFromPhysical=According to increase/decrease stock options, physical stock and virtual stock (physical + current orders) may differs +UseVirtualStockByDefault=Use virtual stock by default, instead of physical stock, for replenishment feature +UseVirtualStock=Use virtual stock +UsePhysicalStock=Use physical stock +CurentSelectionMode=Curent selection mode +CurentlyUsingVirtualStock=Virtual stock +CurentlyUsingPhysicalStock=Physical stock +RuleForStockReplenishment=Rule for stocks replenishment +SelectProductWithNotNullQty=Select at least one product with a qty not null and a supplier +AlertOnly= Alerts only +WarehouseForStockDecrease=The warehouse %s will be used for stock decrease +WarehouseForStockIncrease=The warehouse %s will be used for stock increase +ForThisWarehouse=For this warehouse +ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. +Replenishments=Replenishments +NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) +NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) +MassMovement=Mass movement +MassStockMovement=Mass stock movement +SelectProductInAndOutWareHouse=Select a product, a quantity, a source warehouse and a target warehouse, then click "%s". Once this is done for all required movements, click onto "%s". +RecordMovement=Record transfert +ReceivingForSameOrder=Receipts for this order +StockMovementRecorded=Stock movements recorded +RuleForStockAvailability=Rules on stock requirements +StockMustBeEnoughForInvoice=Stock level must be enough to add product/service into invoice +StockMustBeEnoughForOrder=Stock level must be enough to add product/service into order +StockMustBeEnoughForShipment= Stock level must be enough to add product/service into shipment +MovementLabel=Label of movement +InventoryCode=Movement or inventory code +IsInPackage=Contained into package +ShowWarehouse=Show warehouse +MovementCorrectStock=Stock content correction for product %s +MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/kn_IN/suppliers.lang b/htdocs/langs/kn_IN/suppliers.lang new file mode 100644 index 00000000000..baf573c66ac --- /dev/null +++ b/htdocs/langs/kn_IN/suppliers.lang @@ -0,0 +1,45 @@ +# Dolibarr language file - Source file is en_US - suppliers +Suppliers=Suppliers +AddSupplier=Create a supplier +SupplierRemoved=Supplier removed +SuppliersInvoice=Suppliers invoice +NewSupplier=New supplier +History=History +ListOfSuppliers=List of suppliers +ShowSupplier=Show supplier +OrderDate=Order date +BuyingPrice=Buying price +BuyingPriceMin=Minimum buying price +BuyingPriceMinShort=Min buying price +TotalBuyingPriceMin=Total of subproducts buying prices +SomeSubProductHaveNoPrices=Some sub-products have no price defined +AddSupplierPrice=Add supplier price +ChangeSupplierPrice=Change supplier price +ErrorQtyTooLowForThisSupplier=Quantity too low for this supplier or no price defined on this product for this supplier +ErrorSupplierCountryIsNotDefined=Country for this supplier is not defined. Correct this first. +ProductHasAlreadyReferenceInThisSupplier=This product has already a reference in this supplier +ReferenceSupplierIsAlreadyAssociatedWithAProduct=This reference supplier is already associated with a reference: %s +NoRecordedSuppliers=No suppliers recorded +SupplierPayment=Supplier payment +SuppliersArea=Suppliers area +RefSupplierShort=Ref. supplier +Availability=Availability +ExportDataset_fournisseur_1=Supplier invoices list and invoice lines +ExportDataset_fournisseur_2=Supplier invoices and payments +ExportDataset_fournisseur_3=Supplier orders and order lines +ApproveThisOrder=Approve this order +ConfirmApproveThisOrder=Are you sure you want to approve order %s ? +DenyingThisOrder=Deny this order +ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? +ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? +AddCustomerOrder=Create customer order +AddCustomerInvoice=Create customer invoice +AddSupplierOrder=Create supplier order +AddSupplierInvoice=Create supplier invoice +ListOfSupplierProductForSupplier=List of products and prices for supplier %s +NoneOrBatchFileNeverRan=None or batch %s not ran recently +SentToSuppliers=Sent to suppliers +ListOfSupplierOrders=List of supplier orders +MenuOrdersSupplierToBill=Supplier orders to invoice +NbDaysToDelivery=Delivery delay in days +DescNbDaysToDelivery=The biggest delay is display among order product list diff --git a/htdocs/langs/kn_IN/trips.lang b/htdocs/langs/kn_IN/trips.lang new file mode 100644 index 00000000000..ba36fc9b07b --- /dev/null +++ b/htdocs/langs/kn_IN/trips.lang @@ -0,0 +1,126 @@ +# Dolibarr language file - Source file is en_US - trips +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report +ListOfFees=List of fees +NewTrip=New expense report +CompanyVisited=Company/foundation visited +Kilometers=Kilometers +FeesKilometersOrAmout=Amount or kilometers +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report +ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/kn_IN/users.lang b/htdocs/langs/kn_IN/users.lang new file mode 100644 index 00000000000..baf209f9d1c --- /dev/null +++ b/htdocs/langs/kn_IN/users.lang @@ -0,0 +1,122 @@ +# Dolibarr language file - Source file is en_US - users +HRMArea=HRM area +UserCard=User card +ContactCard=Contact card +GroupCard=Group card +NoContactCard=No card among contacts +Permission=Permission +Permissions=Permissions +EditPassword=Edit password +SendNewPassword=Regenerate and send password +ReinitPassword=Regenerate password +PasswordChangedTo=Password changed to: %s +SubjectNewPassword=Your new password for Dolibarr +AvailableRights=Available permissions +OwnedRights=Owned permissions +GroupRights=Group permissions +UserRights=User permissions +UserGUISetup=User display setup +DisableUser=Disable +DisableAUser=Disable a user +DeleteUser=Delete +DeleteAUser=Delete a user +DisableGroup=Disable +DisableAGroup=Disable a group +EnableAUser=Enable a user +EnableAGroup=Enable a group +DeleteGroup=Delete +DeleteAGroup=Delete a group +ConfirmDisableUser=Are you sure you want to disable user %s ? +ConfirmDisableGroup=Are you sure you want to disable group %s ? +ConfirmDeleteUser=Are you sure you want to delete user %s ? +ConfirmDeleteGroup=Are you sure you want to delete group %s ? +ConfirmEnableUser=Are you sure you want to enable user %s ? +ConfirmEnableGroup=Are you sure you want to enable group %s ? +ConfirmReinitPassword=Are you sure you want to generate a new password for user %s ? +ConfirmSendNewPassword=Are you sure you want to generate and send new password for user %s ? +NewUser=New user +CreateUser=Create user +SearchAGroup=Search a group +SearchAUser=Search a user +LoginNotDefined=Login is not defined. +NameNotDefined=Name is not defined. +ListOfUsers=List of users +Administrator=Administrator +SuperAdministrator=Super Administrator +SuperAdministratorDesc=Global administrator +AdministratorDesc=Administrator's entity +DefaultRights=Default permissions +DefaultRightsDesc=Define here default permissions that are automatically granted to a new created user (Go on user card to change permission of an existing user). +DolibarrUsers=Dolibarr users +LastName=Name +FirstName=First name +ListOfGroups=List of groups +NewGroup=New group +CreateGroup=Create group +RemoveFromGroup=Remove from group +PasswordChangedAndSentTo=Password changed and sent to %s. +PasswordChangeRequestSent=Request to change password for %s sent to %s. +MenuUsersAndGroups=Users & Groups +LastGroupsCreated=Last %s created groups +LastUsersCreated=Last %s users created +ShowGroup=Show group +ShowUser=Show user +NonAffectedUsers=Non assigned users +UserModified=User modified successfully +PhotoFile=Photo file +UserWithDolibarrAccess=User with Dolibarr access +ListOfUsersInGroup=List of users in this group +ListOfGroupsForUser=List of groups for this user +UsersToAdd=Users to add to this group +GroupsToAdd=Groups to add to this user +NoLogin=No login +LinkToCompanyContact=Link to third party / contact +LinkedToDolibarrMember=Link to member +LinkedToDolibarrUser=Link to Dolibarr user +LinkedToDolibarrThirdParty=Link to Dolibarr third party +CreateDolibarrLogin=Create a user +CreateDolibarrThirdParty=Create a third party +LoginAccountDisable=Account disabled, put a new login to activate it. +LoginAccountDisableInDolibarr=Account disabled in Dolibarr. +LoginAccountDisableInLdap=Account disabled in the domain. +UsePersonalValue=Use personal value +GuiLanguage=Interface language +InternalUser=Internal user +MyInformations=My data +ExportDataset_user_1=Dolibarr's users and properties +DomainUser=Domain user %s +Reactivate=Reactivate +CreateInternalUserDesc=This form allows you to create an user internal to your company/foundation. To create an external user (customer, supplier, ...), use the button 'Create Dolibarr user' from third party's contact card. +InternalExternalDesc=An internal user is a user that is part of your company/foundation.
An external user is a customer, supplier or other.

In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. +Inherited=Inherited +UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) +UserWillBeExternalUser=Created user will be an external user (because linked to a particular third party) +IdPhoneCaller=Id phone caller +UserLogged=User %s login +UserLogoff=User %s logout +NewUserCreated=User %s created +NewUserPassword=Password change for %s +EventUserModified=User %s modified +UserDisabled=User %s disabled +UserEnabled=User %s activated +UserDeleted=User %s removed +NewGroupCreated=Group %s created +GroupModified=Group %s modified +GroupDeleted=Group %s removed +ConfirmCreateContact=Are you sure you want to create a Dolibarr account for this contact ? +ConfirmCreateLogin=Are you sure you want to create a Dolibarr account for this member ? +ConfirmCreateThirdParty=Are you sure you want to create a third party for this member ? +LoginToCreate=Login to create +NameToCreate=Name of third party to create +YourRole=Your roles +YourQuotaOfUsersIsReached=Your quota of active users is reached ! +NbOfUsers=Nb of users +DontDowngradeSuperAdmin=Only a superadmin can downgrade a superadmin +HierarchicalResponsible=Supervisor +HierarchicView=Hierarchical view +UseTypeFieldToChange=Use field Type to change +OpenIDURL=OpenID URL +LoginUsingOpenID=Use OpenID to login +WeeklyHours=Weekly hours +ColorUser=Color of the user diff --git a/htdocs/langs/kn_IN/withdrawals.lang b/htdocs/langs/kn_IN/withdrawals.lang new file mode 100644 index 00000000000..c36ffbf025a --- /dev/null +++ b/htdocs/langs/kn_IN/withdrawals.lang @@ -0,0 +1,97 @@ +# Dolibarr language file - Source file is en_US - withdrawals +StandingOrdersArea=Standing orders area +CustomersStandingOrdersArea=Customers standing orders area +StandingOrders=Standing orders +StandingOrder=Standing orders +NewStandingOrder=New standing order +StandingOrderToProcess=To process +StandingOrderProcessed=Processed +Withdrawals=Withdrawals +Withdrawal=Withdrawal +WithdrawalsReceipts=Withdrawal receipts +WithdrawalReceipt=Withdrawal receipt +WithdrawalReceiptShort=Receipt +LastWithdrawalReceipts=Last %s withdrawal receipts +WithdrawedBills=Withdrawn invoices +WithdrawalsLines=Withdrawal lines +RequestStandingOrderToTreat=Request for standing orders to process +RequestStandingOrderTreated=Request for standing orders processed +NotPossibleForThisStatusOfWithdrawReceiptORLine=Not yet possible. Withdraw status must be set to 'credited' before declaring reject on specific lines. +CustomersStandingOrders=Customer standing orders +CustomerStandingOrder=Customer standing order +NbOfInvoiceToWithdraw=Nb. of invoice with withdraw request +NbOfInvoiceToWithdrawWithInfo=Nb. of invoice with withdraw request for customers having defined bank account information +InvoiceWaitingWithdraw=Invoice waiting for withdraw +AmountToWithdraw=Amount to withdraw +WithdrawsRefused=Withdraws refused +NoInvoiceToWithdraw=No customer invoice in payment mode "withdraw" is waiting. Go on 'Withdraw' tab on invoice card to make a request. +ResponsibleUser=Responsible user +WithdrawalsSetup=Withdrawal setup +WithdrawStatistics=Withdraw's statistics +WithdrawRejectStatistics=Withdraw reject's statistics +LastWithdrawalReceipt=Last %s withdrawing receipts +MakeWithdrawRequest=Make a withdraw request +ThirdPartyBankCode=Third party bank code +ThirdPartyDeskCode=Third party desk code +NoInvoiceCouldBeWithdrawed=No invoice withdrawed with success. Check that invoice are on companies with a valid BAN. +ClassCredited=Classify credited +ClassCreditedConfirm=Are you sure you want to classify this withdrawal receipt as credited on your bank account? +TransData=Transmission date +TransMetod=Transmission method +Send=Send +Lines=Lines +StandingOrderReject=Issue a rejection +WithdrawalRefused=Withdrawal refused +WithdrawalRefusedConfirm=Are you sure you want to enter a withdrawal rejection for society +RefusedData=Date of rejection +RefusedReason=Reason for rejection +RefusedInvoicing=Billing the rejection +NoInvoiceRefused=Do not charge the rejection +InvoiceRefused=Invoice refused (Charge the rejection to customer) +Status=Status +StatusUnknown=Unknown +StatusWaiting=Waiting +StatusTrans=Sent +StatusCredited=Credited +StatusRefused=Refused +StatusMotif0=Unspecified +StatusMotif1=Insufficient funds +StatusMotif2=Request contested +StatusMotif3=No Withdrawal order +StatusMotif4=Customer Order +StatusMotif5=RIB unusable +StatusMotif6=Account without balance +StatusMotif7=Judicial Decision +StatusMotif8=Other reason +CreateAll=Withdraw all +CreateGuichet=Only office +CreateBanque=Only bank +OrderWaiting=Waiting for treatment +NotifyTransmision=Withdrawal Transmission +NotifyEmision=Withdrawal Emission +NotifyCredit=Withdrawal Credit +NumeroNationalEmetter=National Transmitter Number +PleaseSelectCustomerBankBANToWithdraw=Select information about customer bank account to withdraw +WithBankUsingRIB=For bank accounts using RIB +WithBankUsingBANBIC=For bank accounts using IBAN/BIC/SWIFT +BankToReceiveWithdraw=Bank account to receive withdraws +CreditDate=Credit on +WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported) +ShowWithdraw=Show Withdraw +IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one withdrawal payment not yet processed, it won't be set as paid to allow prior withdrawal management. +DoStandingOrdersBeforePayments=This tab allows you to request a standing order. Once done, go into menu Bank->Withdrawal to manage the standing order. When standing order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null. +WithdrawalFile=Withdrawal file +SetToStatusSent=Set to status "File Sent" +ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid" +StatisticsByLineStatus=Statistics by status of lines + +### Notifications +InfoCreditSubject=Payment of standing order %s by the bank +InfoCreditMessage=The standing order %s has been paid by the bank
Data of payment: %s +InfoTransSubject=Transmission of standing order %s to bank +InfoTransMessage=The standing order %s has been sent to bank by %s %s.

+InfoTransData=Amount: %s
Method: %s
Date: %s +InfoFoot=This is an automated message sent by Dolibarr +InfoRejectSubject=Standing order refused +InfoRejectMessage=Hello,

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

--
%s +ModeWarning=Option for real mode was not set, we stop after this simulation diff --git a/htdocs/langs/kn_IN/workflow.lang b/htdocs/langs/kn_IN/workflow.lang new file mode 100644 index 00000000000..17c8dd3aafa --- /dev/null +++ b/htdocs/langs/kn_IN/workflow.lang @@ -0,0 +1,11 @@ +# Dolibarr language file - Source file is en_US - admin +WorkflowSetup=Workflow module setup +WorkflowDesc=This module is designed to modify the behaviour of automatic actions into application. By default, workflow is opened (you make thing in order you want). You can activate the automatic actions that you are interesting in. +ThereIsNoWorkflowToModify=There is no workflow you can modify for module you have activated. +descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Create a customer order automatically after a commercial proposal is signed +descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Create a customer invoice automatically after a commercial proposal is signed +descWORKFLOW_CONTRACT_AUTOCREATE_INVOICE=Create a customer invoice automatically after a contract is validated +descWORKFLOW_ORDER_AUTOCREATE_INVOICE=Create a customer invoice automatically after a customer order is closed +descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Classify linked source proposal to billed when customer order is set to paid +descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Classify linked source customer order(s) to billed when customer invoice is set to paid +descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Classify linked source customer order(s) to billed when customer invoice is validated diff --git a/htdocs/langs/lo_LA/accountancy.lang b/htdocs/langs/lo_LA/accountancy.lang new file mode 100644 index 00000000000..0b715dc2929 --- /dev/null +++ b/htdocs/langs/lo_LA/accountancy.lang @@ -0,0 +1,160 @@ +# Dolibarr language file - en_US - Accounting Expert +CHARSET=UTF-8 + +Accounting=ບັນ​ຊີ +Globalparameters=​ໂຕ​ຕັ້ງ​ຄ່າ​ທັງ​ໝົດ +Chartofaccounts=Chart of accounts +Fiscalyear=Fiscal years +Menuaccount=Accounting accounts +Menuthirdpartyaccount=Thirdparty accounts +MenuTools=Tools + +ConfigAccountingExpert=Configuration of the module accounting expert +Journaux=Journals +JournalFinancial=Financial journals +Exports=Exports +Export=Export +Modelcsv=Model of export +OptionsDeactivatedForThisExportModel=For this export model, options are deactivated +Selectmodelcsv=Select a model of export +Modelcsv_normal=Classic export +Modelcsv_CEGID=Export towards CEGID Expert +BackToChartofaccounts=Return chart of accounts +Back=Return + +Definechartofaccounts=Define a chart of accounts +Selectchartofaccounts=Select a chart of accounts +Validate=Validate +Addanaccount=Add an accounting account +AccountAccounting=Accounting account +Ventilation=Breakdown +ToDispatch=To dispatch +Dispatched=Dispatched + +CustomersVentilation=Breakdown customers +SuppliersVentilation=Breakdown suppliers +TradeMargin=Trade margin +Reports=Reports +ByCustomerInvoice=By invoices customers +ByMonth=By Month +NewAccount=New accounting account +Update=Update +List=List +Create=Create +UpdateAccount=Modification of an accounting account +UpdateMvts=Modification of a movement +WriteBookKeeping=Record accounts in general ledger +Bookkeeping=General ledger +AccountBalanceByMonth=Account balance by month + +AccountingVentilation=Breakdown accounting +AccountingVentilationSupplier=Breakdown accounting supplier +AccountingVentilationCustomer=Breakdown accounting customer +Line=Line + +CAHTF=Total purchase supplier HT +InvoiceLines=Lines of invoice to be ventilated +InvoiceLinesDone=Ventilated lines of invoice +IntoAccount=In the accounting account + +Ventilate=Ventilate +VentilationAuto=Automatic breakdown + +Processing=Processing +EndProcessing=The end of processing +AnyLineVentilate=Any lines to ventilate +SelectedLines=Selected lines +Lineofinvoice=Line of invoice +VentilatedinAccount=Ventilated successfully in the accounting account +NotVentilatedinAccount=Not ventilated in the accounting account + +ACCOUNTING_SEPARATORCSV=Column separator in export file + +ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50) +ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements +ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the breakdown pages "Breakdown" by the most recent elements + +AccountLength=Length of the accounting accounts shown in Dolibarr +AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software. +ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounts +ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounts + +ACCOUNTING_SELL_JOURNAL=Sell journal +ACCOUNTING_PURCHASE_JOURNAL=Purchase journal +ACCOUNTING_BANK_JOURNAL=Bank journal +ACCOUNTING_CASH_JOURNAL=Cash journal +ACCOUNTING_MISCELLANEOUS_JOURNAL=Miscellaneous journal +ACCOUNTING_SOCIAL_JOURNAL=Social journal + +ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account of transfer +ACCOUNTING_ACCOUNT_SUSPENSE=Account of wait + +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for bought products (if not defined in the product sheet) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Accounting account by default for the sold products (if not defined in the product sheet) +ACCOUNTING_SERVICE_BUY_ACCOUNT=Accounting account by default for the bought services (if not defined in the service sheet) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Accounting account by default for the sold services (if not defined in the service sheet) + +Doctype=Type of document +Docdate=Date +Docref=Reference +Numerocompte=Account +Code_tiers=Thirdparty +Labelcompte=Label account +Debit=Debit +Credit=Credit +Amount=Amount +Sens=Sens +Codejournal=Journal + +DelBookKeeping=Delete the records of the general ledger + +SellsJournal=Sells journal +PurchasesJournal=Purchases journal +DescSellsJournal=Sells journal +DescPurchasesJournal=Purchases journal +BankJournal=Bank journal +DescBankJournal=Bank journal including all the types of payments other than cash +CashJournal=Cash journal +DescCashJournal=Cash journal including the type of payment cash + +CashPayment=Cash Payment + +SupplierInvoicePayment=Payment of invoice supplier +CustomerInvoicePayment=Payment of invoice customer + +ThirdPartyAccount=Thirdparty account + +NewAccountingMvt=New movement +NumMvts=Number of movement +ListeMvts=List of the movement +ErrorDebitCredit=Debit and Credit cannot have a value at the same time + +ReportThirdParty=List thirdparty account +DescThirdPartyReport=Consult here the list of the thirdparty customers and the suppliers and their accounting accounts + +ListAccounts=List of the accounting accounts + +Pcgversion=Version of the plan +Pcgtype=Class of account +Pcgsubtype=Under class of account +Accountparent=Root of the account +Active=Statement + +NewFiscalYear=New fiscal year + +DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers +TotalVente=Total turnover HT +TotalMarge=Total sales margin +DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their accounting account +DescVentilTodoCustomer=Ventilate your lines of customer invoice with an accounting account +ChangeAccount=Change the accounting account for lines selected by the account: +Vide=- +DescVentilSupplier=Consult here the annual breakdown accounting of your invoices suppliers +DescVentilTodoSupplier=Ventilate your lines of invoice supplier with an accounting account +DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account + +ValidateHistory=Validate Automatically + +ErrorAccountancyCodeIsAlreadyUse=Error, you cannot delete this accounting account because it is used + +FicheVentilation=Breakdown card diff --git a/htdocs/langs/lo_LA/admin.lang b/htdocs/langs/lo_LA/admin.lang new file mode 100644 index 00000000000..9782c2ea27f --- /dev/null +++ b/htdocs/langs/lo_LA/admin.lang @@ -0,0 +1,1603 @@ +# Dolibarr language file - Source file is en_US - admin +Foundation=Foundation +Version=Version +VersionProgram=Version program +VersionLastInstall=Version initial install +VersionLastUpgrade=Version last upgrade +VersionExperimental=Experimental +VersionDevelopment=Development +VersionUnknown=Unknown +VersionRecommanded=Recommended +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found +SessionId=Session ID +SessionSaveHandler=Handler to save sessions +SessionSavePath=Storage session localization +PurgeSessions=Purge of sessions +ConfirmPurgeSessions=Do you really want to purge all sessions ? This will disconnect every user (except yourself). +NoSessionListWithThisHandler=Save session handler configured in your PHP does not allow to list all running sessions. +LockNewSessions=Lock new connections +ConfirmLockNewSessions=Are you sure you want to restrict any new Dolibarr connection to yourself. Only user %s will be able to connect after that. +UnlockNewSessions=Remove connection lock +YourSession=Your session +Sessions=Users session +WebUserGroup=Web server user/group +NoSessionFound=Your PHP seems to not allow to list active sessions. Directory used to save sessions (%s) might be protected (For example, by OS permissions or by PHP directive open_basedir). +HTMLCharset=Charset for generated HTML pages +DBStoringCharset=Database charset to store data +DBSortingCharset=Database charset to sort data +WarningModuleNotActive=Module %s must be enabled +WarningOnlyPermissionOfActivatedModules=Only permissions related to activated modules are shown here. You can activate other modules in the Home->Setup->Modules page. +DolibarrSetup=Dolibarr install or upgrade +DolibarrUser=Dolibarr user +InternalUser=Internal user +ExternalUser=External user +InternalUsers=Internal users +ExternalUsers=External users +GlobalSetup=Global setup +GUISetup=Display +SetupArea=Setup area +FormToTestFileUploadForm=Form to test file upload (according to setup) +IfModuleEnabled=Note: yes is effective only if module %s is enabled +RemoveLock=Remove file %s if it exists to allow usage of the update tool. +RestoreLock=Restore file %s, with read permission only, to disable any usage of update tool. +SecuritySetup=Security setup +ErrorModuleRequirePHPVersion=Error, this module requires PHP version %s or higher +ErrorModuleRequireDolibarrVersion=Error, this module requires Dolibarr version %s or higher +ErrorDecimalLargerThanAreForbidden=Error, a precision higher than %s is not supported. +DictionarySetup=Dictionary setup +Dictionary=Dictionaries +Chartofaccounts=Chart of accounts +Fiscalyear=Fiscal years +ErrorReservedTypeSystemSystemAuto=Value 'system' and 'systemauto' for type is reserved. You can use 'user' as value to add your own record +ErrorCodeCantContainZero=Code can't contain value 0 +DisableJavascript=Disable JavaScript and Ajax functions (Recommended for blind person or text browsers) +ConfirmAjax=Use Ajax confirmation popups +UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. +UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box. +ActivityStateToSelectCompany= Add a filter option to show/hide thirdparties which are currently in activity or has ceased it +UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. +UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box). +DelaiedFullListToSelectCompany=Wait you press a key before loading content of thirdparties combo list (This may increase performance if you have a large number of thirdparties) +DelaiedFullListToSelectContact=Wait you press a key before loading content of contact combo list (This may increase performance if you have a large number of contact) +SearchFilter=Search filters options +NumberOfKeyToSearch=Nbr of characters to trigger search: %s +ViewFullDateActions=Show full dates events in the third sheet +NotAvailableWhenAjaxDisabled=Not available when Ajax disabled +JavascriptDisabled=JavaScript disabled +UsePopupCalendar=Use popup for dates input +UsePreviewTabs=Use preview tabs +ShowPreview=Show preview +PreviewNotAvailable=Preview not available +ThemeCurrentlyActive=Theme currently active +CurrentTimeZone=TimeZone PHP (server) +MySQLTimeZone=TimeZone MySql (database) +TZHasNoEffect=Dates are stored and returned by database server as if they were kept as submited string. The timezone has effect only when using UNIX_TIMESTAMP function (that should not be used by Dolibarr, so database TZ should have no effect, even if changed after data was entered). +Space=Space +Table=Table +Fields=Fields +Index=Index +Mask=Mask +NextValue=Next value +NextValueForInvoices=Next value (invoices) +NextValueForCreditNotes=Next value (credit notes) +NextValueForDeposit=Next value (deposit) +NextValueForReplacements=Next value (replacements) +MustBeLowerThanPHPLimit=Note: your PHP limits each file upload's size to %s %s, whatever this parameter's value is +NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration +MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) +UseCaptchaCode=Use graphical code (CAPTCHA) on login page +UseAvToScanUploadedFiles=Use anti-virus to scan uploaded files +AntiVirusCommand= Full path to antivirus command +AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan +AntiVirusParam= More parameters on command line +AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +ComptaSetup=Accounting module setup +UserSetup=User management setup +MenuSetup=Menu management setup +MenuLimits=Limits and accuracy +MenuIdParent=Parent menu ID +DetailMenuIdParent=ID of parent menu (empty for a top menu) +DetailPosition=Sort number to define menu position +PersonalizedMenusNotSupported=Personalized menus not supported +AllMenus=All +NotConfigured=Module not configured +Setup=Setup +Activation=Activation +Active=Active +SetupShort=Setup +OtherOptions=Other options +OtherSetup=Other setup +CurrentValueSeparatorDecimal=Decimal separator +CurrentValueSeparatorThousand=Thousand separator +Destination=Destination +IdModule=Module ID +IdPermissions=Permissions ID +Modules=Modules +ModulesCommon=Main modules +ModulesOther=Other modules +ModulesInterfaces=Interfaces modules +ModulesSpecial=Modules very specific +ParameterInDolibarr=Parameter %s +LanguageParameter=Language parameter %s +LanguageBrowserParameter=Parameter %s +LocalisationDolibarrParameters=Localisation parameters +ClientTZ=Client Time Zone (user) +ClientHour=Client time (user) +OSTZ=Server OS Time Zone +PHPTZ=PHP server Time Zone +PHPServerOffsetWithGreenwich=PHP server offset width Greenwich (seconds) +ClientOffsetWithGreenwich=Client/Browser offset width Greenwich (seconds) +DaylingSavingTime=Daylight saving time +CurrentHour=PHP Time (server) +CompanyTZ=Company Time Zone (main company) +CompanyHour=Company Time (main company) +CurrentSessionTimeOut=Current session timeout +YouCanEditPHPTZ=To set a different PHP timezone (not required), you can try to add a file .htacces with a line like this "SetEnv TZ Europe/Paris" +OSEnv=OS Environment +Box=Box +Boxes=Boxes +MaxNbOfLinesForBoxes=Max number of lines for boxes +PositionByDefault=Default order +Position=Position +MenusDesc=Menus managers define content of the 2 menu bars (horizontal bar and vertical bar). +MenusEditorDesc=The menu editor allow you to define personalized entries in menus. Use it carefully to avoid making dolibarr unstable and menu entries permanently unreachable.
Some modules add entries in the menus (in menu All in most cases). If you removed some of these entries by mistake, you can restore them by disabling and reenabling the module. +MenuForUsers=Menu for users +LangFile=.lang file +System=System +SystemInfo=System information +SystemTools=System tools +SystemToolsArea=System tools area +SystemToolsAreaDesc=This area provides administration features. Use the menu to choose the feature you're looking for. +Purge=Purge +PurgeAreaDesc=This page allows you to delete all files built or stored by Dolibarr (temporary files or all files in %s directory). Using this feature is not necessary. It is provided for users whose Dolibarr is hosted by a provider that does not offer permissions to delete files built by the web server. +PurgeDeleteLogFile=Delete log file %s defined for Syslog module (no risk to loose data) +PurgeDeleteTemporaryFiles=Delete all temporary files (no risk to loose data) +PurgeDeleteAllFilesInDocumentsDir=Delete all files in directory %s. Temporary files but also database backup dumps, files attached to elements (third parties, invoices, ...) and uploaded into the ECM module will be deleted. +PurgeRunNow=Purge now +PurgeNothingToDelete=No directory or file to delete. +PurgeNDirectoriesDeleted=%s files or directories deleted. +PurgeAuditEvents=Purge all security events +ConfirmPurgeAuditEvents=Are you sure you want to purge all security events ? All security logs will be deleted, no other data will be removed. +NewBackup=New backup +GenerateBackup=Generate backup +Backup=Backup +Restore=Restore +RunCommandSummary=Backup has been launched with the following command +RunCommandSummaryToLaunch=Backup can be launched with the following command +WebServerMustHavePermissionForCommand=Your web server must have the permission to run such commands +BackupResult=Backup result +BackupFileSuccessfullyCreated=Backup file successfully generated +YouCanDownloadBackupFile=Generated files can now be downloaded +NoBackupFileAvailable=No backup files available. +ExportMethod=Export method +ImportMethod=Import method +ToBuildBackupFileClickHere=To build a backup file, click here. +ImportMySqlDesc=To import a backup file, you must use mysql command from command line: +ImportPostgreSqlDesc=To import a backup file, you must use pg_restore command from command line: +ImportMySqlCommand=%s %s < mybackupfile.sql +ImportPostgreSqlCommand=%s %s mybackupfile.sql +FileNameToGenerate=File name to generate +Compression=Compression +CommandsToDisableForeignKeysForImport=Command to disable foreign keys on import +CommandsToDisableForeignKeysForImportWarning=Mandatory if you want to be able to restore your sql dump later +ExportCompatibility=Compatibility of generated export file +MySqlExportParameters=MySQL export parameters +PostgreSqlExportParameters= PostgreSQL export parameters +UseTransactionnalMode=Use transactional mode +FullPathToMysqldumpCommand=Full path to mysqldump command +FullPathToPostgreSQLdumpCommand=Full path to pg_dump command +ExportOptions=Export Options +AddDropDatabase=Add DROP DATABASE command +AddDropTable=Add DROP TABLE command +ExportStructure=Structure +Datas=Data +NameColumn=Name columns +ExtendedInsert=Extended INSERT +NoLockBeforeInsert=No lock commands around INSERT +DelayedInsert=Delayed insert +EncodeBinariesInHexa=Encode binary data in hexadecimal +IgnoreDuplicateRecords=Ignore errors of duplicate records (INSERT IGNORE) +Yes=Yes +No=No +AutoDetectLang=Autodetect (browser language) +FeatureDisabledInDemo=Feature disabled in demo +Rights=Permissions +BoxesDesc=Boxes are screen area that show a piece of information on some pages. You can choose between showing the box or not by selecting target page and clicking 'Activate', or by clicking the dustbin to disable it. +OnlyActiveElementsAreShown=Only elements from enabled modules are shown. +ModulesDesc=Dolibarr modules define which functionality is enabled in software. Some modules require permissions you must grant to users, after enabling module. Click on button on/off in column "Status" to enable a module/feature. +ModulesInterfaceDesc=The Dolibarr modules interface allows you to add features depending on external software, systems or services. +ModulesSpecialDesc=Special modules are very specific or seldom used modules. +ModulesJobDesc=Business modules provide simple predefined setup of Dolibarr for a particular business. +ModulesMarketPlaceDesc=You can find more modules to download on external web sites on the Internet... +ModulesMarketPlaces=More modules... +DoliStoreDesc=DoliStore, the official market place for Dolibarr ERP/CRM external modules +DoliPartnersDesc=List with some companies that can provide/develop on-demand modules or features (Note: any Open Source company knowning PHP language can provide you specific development) +WebSiteDesc=Web site providers you can search to find more modules... +URL=Link +BoxesAvailable=Boxes available +BoxesActivated=Boxes activated +ActivateOn=Activate on +ActiveOn=Activated on +SourceFile=Source file +AutomaticIfJavascriptDisabled=Automatic if Javascript is disabled +AvailableOnlyIfJavascriptNotDisabled=Available only if JavaScript is not disabled +AvailableOnlyIfJavascriptAndAjaxNotDisabled=Available only if JavaScript is not disabled +Required=Required +UsedOnlyWithTypeOption=Used by some agenda option only +Security=Security +Passwords=Passwords +DoNotStoreClearPassword=Do no store clear passwords in database but store only encrypted value (Activated recommended) +MainDbPasswordFileConfEncrypted=Database password encrypted in conf.php (Activated recommended) +InstrucToEncodePass=To have password encoded into the conf.php file, replace the line
$dolibarr_main_db_pass="..."
by
$dolibarr_main_db_pass="crypted:%s" +InstrucToClearPass=To have password decoded (clear) into the conf.php file, replace the line
$dolibarr_main_db_pass="crypted:..."
by
$dolibarr_main_db_pass="%s" +ProtectAndEncryptPdfFiles=Protection of generated pdf files (Activated NOT recommended, breaks mass pdf generation) +ProtectAndEncryptPdfFilesDesc=Protection of a PDF document keeps it available to read and print with any PDF browser. However, editing and copying is not possible anymore. Note that using this feature make building of a global cumulated pdf not working (like unpaid invoices). +Feature=Feature +DolibarrLicense=License +DolibarrProjectLeader=Project leader +Developpers=Developers/contributors +OtherDeveloppers=Other developers/contributors +OfficialWebSite=Dolibarr international official web site +OfficialWebSiteFr=French official web site +OfficialWiki=Dolibarr documentation on Wiki +OfficialDemo=Dolibarr online demo +OfficialMarketPlace=Official market place for external modules/addons +OfficialWebHostingService=Referenced web hosting services (Cloud hosting) +ReferencedPreferredPartners=Preferred Partners +OtherResources=Autres ressources +ForDocumentationSeeWiki=For user or developer documentation (Doc, FAQs...),
take a look at the Dolibarr Wiki:
%s +ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:
%s +HelpCenterDesc1=This area can help you to get a Help support service on Dolibarr. +HelpCenterDesc2=Some part of this service are available in english only. +CurrentTopMenuHandler=Current top menu handler +CurrentLeftMenuHandler=Current left menu handler +CurrentMenuHandler=Current menu handler +CurrentSmartphoneMenuHandler=Current smartphone menu handler +MeasuringUnit=Measuring unit +Emails=E-mails +EMailsSetup=E-mails setup +EMailsDesc=This page allows you to overwrite your PHP parameters for e-mails sending. In most cases on Unix/Linux OS, your PHP setup is correct and these parameters are useless. +MAIN_MAIL_SMTP_PORT=SMTP/SMTPS Port (By default in php.ini: %s) +MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (By default in php.ini: %s) +MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix like systems) +MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix like systems) +MAIN_MAIL_EMAIL_FROM=Sender e-mail for automatic emails (By default in php.ini: %s) +MAIN_MAIL_ERRORS_TO=Sender e-mail used for error returns emails sent +MAIN_MAIL_AUTOCOPY_TO= Send systematically a hidden carbon-copy of all sent emails to +MAIN_MAIL_AUTOCOPY_PROPOSAL_TO= Send systematically a hidden carbon-copy of proposals sent by email to +MAIN_MAIL_AUTOCOPY_ORDER_TO= Send systematically a hidden carbon-copy of orders sent by email to +MAIN_MAIL_AUTOCOPY_INVOICE_TO= Send systematically a hidden carbon-copy of invoice sent by emails to +MAIN_DISABLE_ALL_MAILS=Disable all e-mails sendings (for test purposes or demos) +MAIN_MAIL_SENDMODE=Method to use to send EMails +MAIN_MAIL_SMTPS_ID=SMTP ID if authentication required +MAIN_MAIL_SMTPS_PW=SMTP Password if authentication required +MAIN_MAIL_EMAIL_TLS= Use TLS (SSL) encrypt +MAIN_DISABLE_ALL_SMS=Disable all SMS sendings (for test purposes or demos) +MAIN_SMS_SENDMODE=Method to use to send SMS +MAIN_MAIL_SMS_FROM=Default sender phone number for Sms sending +FeatureNotAvailableOnLinux=Feature not available on Unix like systems. Test your sendmail program locally. +SubmitTranslation=If translation for this language is not complete or you find errors, you can correct this by editing files into directory langs/%s and submit modified files on www.dolibarr.org forum. +ModuleSetup=Module setup +ModulesSetup=Modules setup +ModuleFamilyBase=System +ModuleFamilyCrm=Customer Relation Management (CRM) +ModuleFamilyProducts=Products Management +ModuleFamilyHr=Human Resource Management +ModuleFamilyProjects=Projects/Collaborative work +ModuleFamilyOther=Other +ModuleFamilyTechnic=Multi-modules tools +ModuleFamilyExperimental=Experimental modules +ModuleFamilyFinancial=Financial Modules (Accounting/Treasury) +ModuleFamilyECM=Electronic Content Management (ECM) +MenuHandlers=Menu handlers +MenuAdmin=Menu editor +DoNotUseInProduction=Do not use in production +ThisIsProcessToFollow=This is setup to process: +StepNb=Step %s +FindPackageFromWebSite=Find a package that provides feature you want (for example on official web site %s). +DownloadPackageFromWebSite=Download package %s. +UnpackPackageInDolibarrRoot=Unpack package file into Dolibarr's root directory %s +SetupIsReadyForUse=Install is finished and Dolibarr is ready to use with this new component. +NotExistsDirect=The alternative root directory is not defined.
+InfDirAlt=Since version 3 it is possible to define an alternative root directory.This allows you to store, same place, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
+InfDirExample=
Then declare it in the file conf.php
$dolibarr_main_url_root_alt='http://myserver/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
*These lines are commented with "#", to uncomment only remove the character. +YouCanSubmitFile=Select module: +CurrentVersion=Dolibarr current version +CallUpdatePage=Go to the page that updates the database structure and datas: %s. +LastStableVersion=Last stable version +UpdateServerOffline=Update server offline +GenericMaskCodes=You may enter any numbering mask. In this mask, the following tags could 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 previous but an offset corresponding to the number to the right of the + sign is applied starting on first %s.
{000000@x} same as previous 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 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 for customer. This counter dedicated to customer is reset at same time than global counter.
{tttt} The code of thirdparty type on n characters (see dictionary-thirdparty types).
+GenericMaskCodes3=All other characters in the mask will remain intact.
Spaces are not allowed.
+GenericMaskCodes4a=Example on the 99th %s of the third party TheCompany done 2007-01-31:
+GenericMaskCodes4b=Example on third party created on 2007-03-01:
+GenericMaskCodes4c=Example on product created on 2007-03-01:
+GenericMaskCodes5=ABC{yy}{mm}-{000000} will give ABC0701-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX +GenericNumRefModelDesc=Returns a customizable number according to a defined mask. +ServerAvailableOnIPOrPort=Server is available at address %s on port %s +ServerNotAvailableOnIPOrPort=Server is not available at address %s on port %s +DoTestServerAvailability=Test server connectivity +DoTestSend=Test sending +DoTestSendHTML=Test sending HTML +ErrorCantUseRazIfNoYearInMask=Error, can't use option @ to reset counter each year if sequence {yy} or {yyyy} is not in mask. +ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Error, can't use option @ if sequence {yy}{mm} or {yyyy}{mm} is not in mask. +UMask=UMask parameter for new files on Unix/Linux/BSD/Mac file system. +UMaskExplanation=This parameter allow you to define permissions set by default on files created by Dolibarr on server (during upload for example).
It must be the octal value (for example, 0666 means read and write for everyone).
This parameter is useless on a Windows server. +SeeWikiForAllTeam=Take a look at the wiki page for full list of all actors and their organisation +UseACacheDelay= Delay for caching export response in seconds (0 or empty for no cache) +DisableLinkToHelpCenter=Hide link "Need help or support" on login page +DisableLinkToHelp=Hide link "%s Online help" on left menu +AddCRIfTooLong=There is no automatic wrapping, so if line is out of page on documents because too long, you must add yourself carriage returns in the textarea. +ModuleDisabled=Module disabled +ModuleDisabledSoNoEvent=Module disabled so event never created +ConfirmPurge=Are you sure you want to execute this purge ?
This will delete definitely all your data files with no way to restore them (ECM files, attached files...). +MinLength=Minimum length +LanguageFilesCachedIntoShmopSharedMemory=Files .lang loaded in shared memory +ExamplesWithCurrentSetup=Examples with current running setup +ListOfDirectories=List of OpenDocument templates directories +ListOfDirectoriesForModelGenODT=List of directories containing templates files with OpenDocument format.

Put here full path of directories.
Add a carriage return between eah directory.
To add a directory of the GED module, add here DOL_DATA_ROOT/ecm/yourdirectoryname.

Files in those directories must end with .odt. +NumberOfModelFilesFound=Number of ODT/ODS templates files found in those directories +ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir +FollowingSubstitutionKeysCanBeUsed=
To know how to create your odt document templates, before storing them in those directories, read wiki documentation: +FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template +FirstnameNamePosition=Position of Name/Lastname +DescWeather=The following pictures will be shown on dashboard when number of late actions reach the following values: +KeyForWebServicesAccess=Key to use Web Services (parameter "dolibarrkey" in webservices) +TestSubmitForm=Input test form +ThisForceAlsoTheme=Using this menu manager will also use its own theme whatever is user choice. Also this menu manager specialized for smartphones does not works on all smartphone. Use another menu manager if you experience problems on yours. +ThemeDir=Skins directory +ConnectionTimeout=Connexion timeout +ResponseTimeout=Response timeout +SmsTestMessage=Test message from __PHONEFROM__ to __PHONETO__ +ModuleMustBeEnabledFirst=Module %s must be enabled first before using this feature. +SecurityToken=Key to secure URLs +NoSmsEngine=No SMS sender manager available. SMS sender manager are not installed with default distribution (because they depends on an external supplier) but you can find some on %s +PDF=PDF +PDFDesc=You can set each global options related to the PDF generation +PDFAddressForging=Rules to forge address boxes +HideAnyVATInformationOnPDF=Hide all information related to VAT on generated PDF +HideDescOnPDF=Hide products description on generated PDF +HideRefOnPDF=Hide products ref. on generated PDF +HideDetailsOnPDF=Hide products lines details on generated PDF +Library=Library +UrlGenerationParameters=Parameters to secure URLs +SecurityTokenIsUnique=Use a unique securekey parameter for each URL +EnterRefToBuildUrl=Enter reference for object %s +GetSecuredUrl=Get calculated URL +ButtonHideUnauthorized=Hide buttons for unauthorized actions instead of showing disabled buttons +OldVATRates=Old VAT rate +NewVATRates=New VAT rate +PriceBaseTypeToChange=Modify on prices with base reference value defined on +MassConvert=Launch mass convert +String=String +TextLong=Long text +Int=Integer +Float=Float +DateAndTime=Date and hour +Unique=Unique +Boolean=Boolean (Checkbox) +ExtrafieldPhone = Phone +ExtrafieldPrice = Price +ExtrafieldMail = Email +ExtrafieldSelect = Select list +ExtrafieldSelectList = Select from table +ExtrafieldSeparator=Separator +ExtrafieldCheckBox=Checkbox +ExtrafieldRadio=Radio button +ExtrafieldCheckBoxFromList= Checkbox from table +ExtrafieldParamHelpselect=Parameters list have to be like key,value

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

In order to have the list depending on another :
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key +ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value

for example :
1,value1
2,value2
3,value3
... +ExtrafieldParamHelpradio=Parameters list have to be like key,value

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

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

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

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter +LibraryToBuildPDF=Library used to build PDF +WarningUsingFPDF=Warning: Your conf.php contains directive dolibarr_pdf_force_fpdf=1. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.
To solve this and have a full support of PDF generation, please download TCPDF library, then comment or remove the line $dolibarr_pdf_force_fpdf=1, and add instead $dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir' +LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:
1 : local tax apply on products and services without vat (vat is not applied on local tax)
2 : local tax apply on products and services before vat (vat is calculated on amount + localtax)
3 : local tax apply on products without vat (vat is not applied on local tax)
4 : local tax apply on products before vat (vat is calculated on amount + localtax)
5 : local tax apply on services without vat (vat is not applied on local tax)
6 : local tax apply on services before vat (vat is calculated on amount + localtax) +SMS=SMS +LinkToTestClickToDial=Enter a phone number to call to show a link to test the ClickToDial url for user %s +RefreshPhoneLink=Refresh link +LinkToTest=Clickable link generated for user %s (click phone number to test) +KeepEmptyToUseDefault=Keep empty to use default value +DefaultLink=Default link +ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) +ExternalModule=External module - Installed into directory %s +BarcodeInitForThirdparties=Mass barcode init for thirdparties +BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services +CurrentlyNWithoutBarCode=Currently, you have %s records on %s %s without barcode defined. +InitEmptyBarCode=Init value for next %s empty records +EraseAllCurrentBarCode=Erase all current barcode values +ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values ? +AllBarcodeReset=All barcode values have been removed +NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup. +NoRecordWithoutBarcodeDefined=No record with no barcode value defined. + +# Modules +Module0Name=Users & groups +Module0Desc=Users and groups management +Module1Name=Third parties +Module1Desc=Companies and contact management (customers, prospects...) +Module2Name=Commercial +Module2Desc=Commercial management +Module10Name=Accounting +Module10Desc=Simple accounting reports (journals, turnover) based onto database content. No dispatching. +Module20Name=Proposals +Module20Desc=Commercial proposal management +Module22Name=Mass E-mailings +Module22Desc=Mass E-mailing management +Module23Name= Energy +Module23Desc= Monitoring the consumption of energies +Module25Name=Customer Orders +Module25Desc=Customer order management +Module30Name=Invoices +Module30Desc=Invoice and credit note management for customers. Invoice management for suppliers +Module40Name=Suppliers +Module40Desc=Supplier management and buying (orders and invoices) +Module42Name=Logs +Module42Desc=Logging facilities (file, syslog, ...) +Module49Name=Editors +Module49Desc=Editor management +Module50Name=Products +Module50Desc=Product management +Module51Name=Mass mailings +Module51Desc=Mass paper mailing management +Module52Name=Stocks +Module52Desc=Stock management (products) +Module53Name=Services +Module53Desc=Service management +Module54Name=Contracts/Subscriptions +Module54Desc=Management of contracts (services or reccuring subscriptions) +Module55Name=Barcodes +Module55Desc=Barcode management +Module56Name=Telephony +Module56Desc=Telephony integration +Module57Name=Standing orders +Module57Desc=Standing orders and withdrawal management. Also includes generation of SEPA file for european countries. +Module58Name=ClickToDial +Module58Desc=Integration of a ClickToDial system (Asterisk, ...) +Module59Name=Bookmark4u +Module59Desc=Add function to generate Bookmark4u account from a Dolibarr account +Module70Name=Interventions +Module70Desc=Intervention management +Module75Name=Expense and trip notes +Module75Desc=Expense and trip notes management +Module80Name=Shipments +Module80Desc=Shipments and delivery order management +Module85Name=Banks and cash +Module85Desc=Management of bank or cash accounts +Module100Name=External site +Module100Desc=This module include an external web site or page into Dolibarr menus and view it into a Dolibarr frame +Module105Name=Mailman and SPIP +Module105Desc=Mailman or SPIP interface for member module +Module200Name=LDAP +Module200Desc=LDAP directory synchronisation +Module210Name=PostNuke +Module210Desc=PostNuke integration +Module240Name=Data exports +Module240Desc=Tool to export Dolibarr datas (with assistants) +Module250Name=Data imports +Module250Desc=Tool to import datas in Dolibarr (with assistants) +Module310Name=Members +Module310Desc=Foundation members management +Module320Name=RSS Feed +Module320Desc=Add RSS feed inside Dolibarr screen pages +Module330Name=Bookmarks +Module330Desc=Bookmark management +Module400Name=Projects/Opportunities/Leads +Module400Desc=Management of projects, opportunities or leads. You can then assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. +Module410Name=Webcalendar +Module410Desc=Webcalendar integration +Module500Name=Special expenses (tax, social contributions, dividends) +Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries +Module510Name=Salaries +Module510Desc=Management of employees salaries and payments +Module600Name=Notifications +Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) +Module700Name=Donations +Module700Desc=Donation management +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices +Module1200Name=Mantis +Module1200Desc=Mantis integration +Module1400Name=Accounting +Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation +Module1780Name=Categories +Module1780Desc=Category management (products, suppliers and customers) +Module2000Name=WYSIWYG editor +Module2000Desc=Allow to edit some text area using an advanced editor +Module2200Name=Dynamic Prices +Module2200Desc=Enable the usage of math expressions for prices +Module2300Name=Cron +Module2300Desc=Scheduled task management +Module2400Name=Agenda +Module2400Desc=Events/tasks and agenda management +Module2500Name=Electronic Content Management +Module2500Desc=Save and share documents +Module2600Name=WebServices +Module2600Desc=Enable the Dolibarr web services server +Module2650Name=WebServices (client) +Module2650Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Supplier orders supported only for the moment) +Module2700Name=Gravatar +Module2700Desc=Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Need an internet access +Module2800Desc=FTP Client +Module2900Name=GeoIPMaxmind +Module2900Desc=GeoIP Maxmind conversions capabilities +Module3100Name=Skype +Module3100Desc=Add a Skype button into card of adherents / third parties / contacts +Module5000Name=Multi-company +Module5000Desc=Allows you to manage multiple companies +Module6000Name=Workflow +Module6000Desc=Workflow management +Module20000Name=Leave Requests management +Module20000Desc=Declare and follow employees leaves requests +Module39000Name=Product batch +Module39000Desc=Batch or serial number, eat-by and sell-by date management on products +Module50000Name=PayBox +Module50000Desc=Module to offer an online payment page by credit card with PayBox +Module50100Name=Point of sales +Module50100Desc=Point of sales module +Module50200Name=Paypal +Module50200Desc=Module to offer an online payment page by credit card with Paypal +Module50400Name=Accounting (advanced) +Module50400Desc=Accounting management (double parties) +Module54000Name=PrintIPP +Module54000Desc=Direct print (without opening the documents) using Cups IPP interface (Printer must be visible from server, and CUPS must be installe on server). +Module55000Name=Open Poll +Module55000Desc=Module to make online polls (like Doodle, Studs, Rdvz, ...) +Module59000Name=Margins +Module59000Desc=Module to manage margins +Module60000Name=Commissions +Module60000Desc=Module to manage commissions +Module150010Name=Batch number, eat-by date and sell-by date +Module150010Desc=batch number, eat-by date and sell-by date management for product +Permission11=Read customer invoices +Permission12=Create/modify customer invoices +Permission13=Unvalidate customer invoices +Permission14=Validate customer invoices +Permission15=Send customer invoices by email +Permission16=Create payments for customer invoices +Permission19=Delete customer invoices +Permission21=Read commercial proposals +Permission22=Create/modify commercial proposals +Permission24=Validate commercial proposals +Permission25=Send commercial proposals +Permission26=Close commercial proposals +Permission27=Delete commercial proposals +Permission28=Export commercial proposals +Permission31=Read products +Permission32=Create/modify products +Permission34=Delete products +Permission36=See/manage hidden products +Permission38=Export products +Permission41=Read projects (shared project and projects i'm contact for) +Permission42=Create/modify projects (shared project and projects i'm contact for) +Permission44=Delete projects (shared project and projects i'm contact for) +Permission61=Read interventions +Permission62=Create/modify interventions +Permission64=Delete interventions +Permission67=Export interventions +Permission71=Read members +Permission72=Create/modify members +Permission74=Delete members +Permission75=Setup types of membership +Permission76=Export datas +Permission78=Read subscriptions +Permission79=Create/modify subscriptions +Permission81=Read customers orders +Permission82=Create/modify customers orders +Permission84=Validate customers orders +Permission86=Send customers orders +Permission87=Close customers orders +Permission88=Cancel customers orders +Permission89=Delete customers orders +Permission91=Read social contributions and vat +Permission92=Create/modify social contributions and vat +Permission93=Delete social contributions and vat +Permission94=Export social contributions +Permission95=Read reports +Permission101=Read sendings +Permission102=Create/modify sendings +Permission104=Validate sendings +Permission106=Export sendings +Permission109=Delete sendings +Permission111=Read financial accounts +Permission112=Create/modify/delete and compare transactions +Permission113=Setup financial accounts (create, manage categories) +Permission114=Reconciliate transactions +Permission115=Export transactions and account statements +Permission116=Transfers between accounts +Permission117=Manage cheques dispatching +Permission121=Read third parties linked to user +Permission122=Create/modify third parties linked to user +Permission125=Delete third parties linked to user +Permission126=Export third parties +Permission141=Read projects (also private i am not contact for) +Permission142=Create/modify projects (also private i am not contact for) +Permission144=Delete projects (also private i am not contact for) +Permission146=Read providers +Permission147=Read stats +Permission151=Read standing orders +Permission152=Create/modify a standing orders request +Permission153=Transmission standing orders receipts +Permission154=Credit/refuse standing orders receipts +Permission161=Read contracts/subscriptions +Permission162=Create/modify contracts/subscriptions +Permission163=Activate a service/subscription of a contract +Permission164=Disable a service/subscription of a contract +Permission165=Delete contracts/subscriptions +Permission171=Read trips and expenses (own and his subordinates) +Permission172=Create/modify trips and expenses +Permission173=Delete trips and expenses +Permission174=Read all trips and expenses +Permission178=Export trips and expenses +Permission180=Read suppliers +Permission181=Read supplier orders +Permission182=Create/modify supplier orders +Permission183=Validate supplier orders +Permission184=Approve supplier orders +Permission185=Order or cancel supplier orders +Permission186=Receive supplier orders +Permission187=Close supplier orders +Permission188=Cancel supplier orders +Permission192=Create lines +Permission193=Cancel lines +Permission194=Read the bandwith lines +Permission202=Create ADSL connections +Permission203=Order connections orders +Permission204=Order connections +Permission205=Manage connections +Permission206=Read connections +Permission211=Read Telephony +Permission212=Order lines +Permission213=Activate line +Permission214=Setup Telephony +Permission215=Setup providers +Permission221=Read emailings +Permission222=Create/modify emailings (topic, recipients...) +Permission223=Validate emailings (allows sending) +Permission229=Delete emailings +Permission237=View recipients and info +Permission238=Manually send mailings +Permission239=Delete mailings after validation or sent +Permission241=Read categories +Permission242=Create/modify categories +Permission243=Delete categories +Permission244=See the contents of the hidden categories +Permission251=Read other users and groups +PermissionAdvanced251=Read other users +Permission252=Read permissions of other users +Permission253=Create/modify other users, groups and permisssions +PermissionAdvanced253=Create/modify internal/external users and permissions +Permission254=Create/modify external users only +Permission255=Modify other users password +Permission256=Delete or disable other users +Permission262=Extend access to all third parties (not only those linked to user). Not effective for external users (always limited to themselves). +Permission271=Read CA +Permission272=Read invoices +Permission273=Issue invoices +Permission281=Read contacts +Permission282=Create/modify contacts +Permission283=Delete contacts +Permission286=Export contacts +Permission291=Read tariffs +Permission292=Set permissions on the tariffs +Permission293=Modify costumers tariffs +Permission300=Read bar codes +Permission301=Create/modify bar codes +Permission302=Delete bar codes +Permission311=Read services +Permission312=Assign service/subscription to contract +Permission331=Read bookmarks +Permission332=Create/modify bookmarks +Permission333=Delete bookmarks +Permission341=Read its own permissions +Permission342=Create/modify his own user information +Permission343=Modify his own password +Permission344=Modify its own permissions +Permission351=Read groups +Permission352=Read groups permissions +Permission353=Create/modify groups +Permission354=Delete or disable groups +Permission358=Export users +Permission401=Read discounts +Permission402=Create/modify discounts +Permission403=Validate discounts +Permission404=Delete discounts +Permission510=Read Salaries +Permission512=Create/modify salaries +Permission514=Delete salaries +Permission517=Export salaries +Permission531=Read services +Permission532=Create/modify services +Permission534=Delete services +Permission536=See/manage hidden services +Permission538=Export services +Permission701=Read donations +Permission702=Create/modify donations +Permission703=Delete donations +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports +Permission1001=Read stocks +Permission1002=Create/modify warehouses +Permission1003=Delete warehouses +Permission1004=Read stock movements +Permission1005=Create/modify stock movements +Permission1101=Read delivery orders +Permission1102=Create/modify delivery orders +Permission1104=Validate delivery orders +Permission1109=Delete delivery orders +Permission1181=Read suppliers +Permission1182=Read supplier orders +Permission1183=Create/modify supplier orders +Permission1184=Validate supplier orders +Permission1185=Approve supplier orders +Permission1186=Order supplier orders +Permission1187=Acknowledge receipt of supplier orders +Permission1188=Delete supplier orders +Permission1201=Get result of an export +Permission1202=Create/Modify an export +Permission1231=Read supplier invoices +Permission1232=Create/modify supplier invoices +Permission1233=Validate supplier invoices +Permission1234=Delete supplier invoices +Permission1235=Send supplier invoices by email +Permission1236=Export supplier invoices, attributes and payments +Permission1237=Export supplier orders and their details +Permission1251=Run mass imports of external data into database (data load) +Permission1321=Export customer invoices, attributes and payments +Permission1421=Export customer orders and attributes +Permission23001 = Read Scheduled task +Permission23002 = Create/update Scheduled task +Permission23003 = Delete Scheduled task +Permission23004 = Execute Scheduled task +Permission2401=Read actions (events or tasks) linked to his account +Permission2402=Create/modify actions (events or tasks) linked to his account +Permission2403=Delete actions (events or tasks) linked to his account +Permission2411=Read actions (events or tasks) of others +Permission2412=Create/modify actions (events or tasks) of others +Permission2413=Delete actions (events or tasks) of others +Permission2501=Read/Download documents +Permission2502=Download documents +Permission2503=Submit or delete documents +Permission2515=Setup documents directories +Permission2801=Use FTP client in read mode (browse and download only) +Permission2802=Use FTP client in write mode (delete or upload files) +Permission50101=Use Point of sales +Permission50201=Read transactions +Permission50202=Import transactions +Permission54001=Print +Permission55001=Read polls +Permission55002=Create/modify polls +Permission59001=Read commercial margins +Permission59002=Define commercial margins +Permission59003=Read every user margin +DictionaryCompanyType=Thirdparties type +DictionaryCompanyJuridicalType=Juridical kinds of thirdparties +DictionaryProspectLevel=Prospect potential level +DictionaryCanton=State/Cantons +DictionaryRegion=Regions +DictionaryCountry=Countries +DictionaryCurrency=Currencies +DictionaryCivility=Civility title +DictionaryActions=Type of agenda events +DictionarySocialContributions=Social contributions types +DictionaryVAT=VAT Rates or Sales Tax Rates +DictionaryRevenueStamp=Amount of revenue stamps +DictionaryPaymentConditions=Payment terms +DictionaryPaymentModes=Payment modes +DictionaryTypeContact=Contact/Address types +DictionaryEcotaxe=Ecotax (WEEE) +DictionaryPaperFormat=Paper formats +DictionaryFees=Type of fees +DictionarySendingMethods=Shipping methods +DictionaryStaff=Staff +DictionaryAvailability=Delivery delay +DictionaryOrderMethods=Ordering methods +DictionarySource=Origin of proposals/orders +DictionaryAccountancyplan=Chart of accounts +DictionaryAccountancysystem=Models for chart of accounts +DictionaryEMailTemplates=Emails templates +SetupSaved=Setup saved +BackToModuleList=Back to modules list +BackToDictionaryList=Back to dictionaries list +VATReceivedOnly=Special rate not charged +VATManagement=VAT Management +VATIsUsedDesc=The VAT rate by default when creating prospects, invoices, orders etc follow the active standard rule:
If the seller is not subjected to VAT, then VAT by default=0. End of rule.
If the (selling country= buying country), then the VAT by default=VAT of the product in the selling country. End of rule.
If seller and buyer in the European Community and goods are transport products (car, ship, plane), the default VAT=0 ( The VAT should be paid by the buyer at the customoffice of his country and not at the seller). End of rule.
If seller and buyer in the European Community and buyer is not a company, then the VAT by default=VAT of product sold. End of rule.
If seller and buyer in the European Community and buyer is a company, then the VAT by default=0. End of rule.
Else the proposed default VAT=0. End of rule. +VATIsNotUsedDesc=By default the proposed VAT is 0 which can be used for cases like associations, individuals ou small companies. +VATIsUsedExampleFR=In France, it means companies or organisations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. +VATIsNotUsedExampleFR=In France, it means associations that are non VAT declared or companies, organisations or liberal professions that have chosen the micro enterprise fiscal system (VAT in franchise) and paid a franchise VAT without any VAT declaration. This choice will display the reference "Non applicable VAT - art-293B of CGI" on invoices. +##### Local Taxes ##### +LTRate=Rate +LocalTax1IsUsed=Use second tax +LocalTax1IsNotUsed=Do not use second tax +LocalTax1IsUsedDesc=Use a second type of tax (other than VAT) +LocalTax1IsNotUsedDesc=Do not use other type of tax (other than VAT) +LocalTax1Management=Second type of tax +LocalTax1IsUsedExample= +LocalTax1IsNotUsedExample= +LocalTax2IsUsed=Use third tax +LocalTax2IsNotUsed=Do not use third tax +LocalTax2IsUsedDesc=Use a third type of tax (other than VAT) +LocalTax2IsNotUsedDesc=Do not use other type of tax (other than VAT) +LocalTax2Management=Third type of tax +LocalTax2IsUsedExample= +LocalTax2IsNotUsedExample= +LocalTax1ManagementES= RE Management +LocalTax1IsUsedDescES= The RE rate by default when creating prospects, invoices, orders etc follow the active standard rule:
If te buyer is not subjected to RE, RE by default=0. End of rule.
If the buyer is subjected to RE then the RE by default. End of rule.
+LocalTax1IsNotUsedDescES= By default the proposed RE is 0. End of rule. +LocalTax1IsUsedExampleES= In Spain they are professionals subject to some specific sections of the Spanish IAE. +LocalTax1IsNotUsedExampleES= In Spain they are professional and societies and subject to certain sections of the Spanish IAE. +LocalTax2ManagementES= IRPF Management +LocalTax2IsUsedDescES= The RE rate by default when creating prospects, invoices, orders etc follow the active standard rule:
If the seller is not subjected to IRPF, then IRPF by default=0. End of rule.
If the seller is subjected to IRPF then the IRPF by default. End of rule.
+LocalTax2IsNotUsedDescES= By default the proposed IRPF is 0. End of rule. +LocalTax2IsUsedExampleES= In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. +LocalTax2IsNotUsedExampleES= In Spain they are bussines not subject to tax system of modules. +CalcLocaltax=Reports +CalcLocaltax1ES=Sales - Purchases +CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases +CalcLocaltax2ES=Purchases +CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases +CalcLocaltax3ES=Sales +CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +LabelUsedByDefault=Label used by default if no translation can be found for code +LabelOnDocuments=Label on documents +NbOfDays=Nb of days +AtEndOfMonth=At end of month +Offset=Offset +AlwaysActive=Always active +UpdateRequired=Your system needs to be updated. To do this, click on Update now. +Upgrade=Upgrade +MenuUpgrade=Upgrade / Extend +AddExtensionThemeModuleOrOther=Add extension (theme, module, ...) +WebServer=Web server +DocumentRootServer=Web server's root directory +DataRootServer=Data files directory +IP=IP +Port=Port +VirtualServerName=Virtual server name +AllParameters=All parameters +OS=OS +PhpEnv=Env +PhpModules=Modules +PhpConf=Conf +PhpWebLink=Web-Php link +Pear=Pear +PearPackages=Pear Packages +Browser=Browser +Server=Server +Database=Database +DatabaseServer=Database host +DatabaseName=Database name +DatabasePort=Database port +DatabaseUser=Database user +DatabasePassword=Database password +DatabaseConfiguration=Database setup +Tables=Tables +TableName=Table name +TableLineFormat=Line format +NbOfRecord=Nb of records +Constraints=Constraints +ConstraintsType=Constraints type +ConstraintsToShowOrNotEntry=Constraint to show or not the menu entry +AllMustBeOk=All of these must be checked +Host=Server +DriverType=Driver type +SummarySystem=System information summary +SummaryConst=List of all Dolibarr setup parameters +SystemUpdate=System update +SystemSuccessfulyUpdate=Your system has been updated successfuly +MenuCompanySetup=Company/Foundation +MenuNewUser=New user +MenuTopManager=Top menu manager +MenuLeftManager=Left menu manager +MenuManager=Menu manager +MenuSmartphoneManager=Smartphone menu manager +DefaultMenuTopManager=Top menu manager +DefaultMenuLeftManager=Left menu manager +DefaultMenuManager= Standard menu manager +DefaultMenuSmartphoneManager=Smartphone menu manager +Skin=Skin theme +DefaultSkin=Default skin theme +MaxSizeList=Max length for list +DefaultMaxSizeList=Default max length for list +MessageOfDay=Message of the day +MessageLogin=Login page message +PermanentLeftSearchForm=Permanent search form on left menu +DefaultLanguage=Default language to use (language code) +EnableMultilangInterface=Enable multilingual interface +EnableShowLogo=Show logo on left menu +EnableHtml5=Enable Html5 (Developement - Only available on Eldy template) +SystemSuccessfulyUpdated=Your system has been updated successfully +CompanyInfo=Company/foundation information +CompanyIds=Company/foundation identities +CompanyName=Name +CompanyAddress=Address +CompanyZip=Zip +CompanyTown=Town +CompanyCountry=Country +CompanyCurrency=Main currency +Logo=Logo +DoNotShow=Do not show +DoNotSuggestPaymentMode=Do not suggest +NoActiveBankAccountDefined=No active bank account defined +OwnerOfBankAccount=Owner of bank account %s +BankModuleNotActive=Bank accounts module not enabled +ShowBugTrackLink=Show link "Report a bug" +ShowWorkBoard=Show "workbench" on homepage +Alerts=Alerts +Delays=Delays +DelayBeforeWarning=Delay before warning +DelaysBeforeWarning=Delays before warning +DelaysOfToleranceBeforeWarning=Tolerance delays before warning +DelaysOfToleranceDesc=This screen allows you to define the tolerated delays before an alert is reported on screen with picto %s for each late element. +Delays_MAIN_DELAY_ACTIONS_TODO=Delay tolerance (in days) before alert on planned events not yet realised +Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on orders not yet processed +Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on suppliers orders not yet processed +Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Delay tolerance (in days) before alert on proposals to close +Delays_MAIN_DELAY_PROPALS_TO_BILL=Delay tolerance (in days) before alert on proposals not billed +Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Tolerance delay (in days) before alert on services to activate +Delays_MAIN_DELAY_RUNNING_SERVICES=Tolerance delay (in days) before alert on expired services +Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Tolerance delay (in days) before alert on unpaid supplier invoices +Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Tolerence delay (in days) before alert on unpaid client invoices +Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Tolerance delay (in days) before alert on pending bank reconciliation +Delays_MAIN_DELAY_MEMBERS=Tolerance delay (in days) before alert on delayed membership fee +Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Tolerance delay (in days) before alert for cheques deposit to do +SetupDescription1=All parameters available in the setup area allow you to setup Dolibarr before starting using it. +SetupDescription2=The 2 most important setup steps are the 2 first ones in the left setup menu, this means Company/foundation setup page and Modules setup page: +SetupDescription3=Parameters in menu Setup -> Company/foundation are required because input information is used on Dolibarr displays and to modify Dolibarr behaviour (for example for features related to your country). +SetupDescription4=Parameters in menu Setup -> Modules are required because Dolibarr is not a fixed ERP/CRM but a sum of several modules, all more or less independant. It's only after activating modules you're interesting in that you will see features appeared in menus. +SetupDescription5=Other menu entries manage optional parameters. +EventsSetup=Setup for events logs +LogEvents=Security audit events +Audit=Audit +InfoDolibarr=Infos Dolibarr +InfoBrowser=Infos Browser +InfoOS=Infos OS +InfoWebServer=Infos web server +InfoDatabase=Infos database +InfoPHP=Infos PHP +InfoPerf=Infos performances +BrowserName=Browser name +BrowserOS=Browser OS +ListEvents=Audit events +ListOfSecurityEvents=List of Dolibarr security events +SecurityEventsPurged=Security events purged +LogEventDesc=You can enable here the logging for Dolibarr security events. Administrators can then see its content via menu System tools - Audit. Warning, this feature can consume a large amount of data in database. +AreaForAdminOnly=Those features can be used by administrator users only. +SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. +SystemAreaForAdminOnly=This area is available for administrator users only. None of the Dolibarr permissions can reduce this limit. +CompanyFundationDesc=Edit on this page all known information of the company or foundation you need to manage (For this, click on "Modify" button at bottom of page) +DisplayDesc=You can choose each parameter related to the Dolibarr look and feel here +AvailableModules=Available modules +ToActivateModule=To activate modules, go on setup Area (Home->Setup->Modules). +SessionTimeOut=Time out for session +SessionExplanation=This number guarantee that session will never expire before this delay, if the session cleaner is done by Internal PHP session cleaner (and nothing else). Internal PHP session cleaner does not guaranty that session will expire just after this delay. It will expire, after this delay, and when the session cleaner is ran, so every %s/%s access, but only during access made by other sessions.
Note: on some servers with an external session cleaning mechanism (cron under debian, ubuntu ...), the sessions can be destroyed after a period defined by the default session.gc_maxlifetime, no matter what the value entered here. +TriggersAvailable=Available triggers +TriggersDesc=Triggers are files that will modify the behaviour of Dolibarr workflow once copied into the directory htdocs/core/triggers. They realised new actions, activated on Dolibarr events (new company creation, invoice validation, ...). +TriggerDisabledByName=Triggers in this file are disabled by the -NORUN suffix in their name. +TriggerDisabledAsModuleDisabled=Triggers in this file are disabled as module %s is disabled. +TriggerAlwaysActive=Triggers in this file are always active, whatever are the activated Dolibarr modules. +TriggerActiveAsModuleActive=Triggers in this file are active as module %s is enabled. +GeneratedPasswordDesc=Define here which rule you want to use to generate new password if you ask to have auto generated password +DictionaryDesc=Define here all reference datas. You can complete predefined value with yours. +ConstDesc=This page allows you to edit all other parameters not available in previous pages. They are reserved parameters for advanced developers or for troubleshouting. +OnceSetupFinishedCreateUsers=Warning, you are a Dolibarr administrator user. Administrator users are used to setup Dolibarr. For a usual usage of Dolibarr, it is recommended to use a non administrator user created from Users & Groups menu. +MiscellaneousDesc=Define here all other parameters related to security. +LimitsSetup=Limits/Precision setup +LimitsDesc=You can define limits, precisions and optimisations used by Dolibarr here +MAIN_MAX_DECIMALS_UNIT=Max decimals for unit prices +MAIN_MAX_DECIMALS_TOT=Max decimals for total prices +MAIN_MAX_DECIMALS_SHOWN=Max decimals for prices shown on screen (Add ... after this number if you want to see ... when number is truncated when shown on screen) +MAIN_DISABLE_PDF_COMPRESSION=Use PDF compression for generated PDF files. +MAIN_ROUNDING_RULE_TOT= Size of rounding range (for rare countries where rounding is done on something else than base 10) +UnitPriceOfProduct=Net unit price of a product +TotalPriceAfterRounding=Total price (net/vat/incl tax) after rounding +ParameterActiveForNextInputOnly=Parameter effective for next input only +NoEventOrNoAuditSetup=No security event has been recorded yet. This can be normal if audit has not been enabled on "setup - security - audit" page. +NoEventFoundWithCriteria=No security event has been found for such search criterias. +SeeLocalSendMailSetup=See your local sendmail setup +BackupDesc=To make a complete backup of Dolibarr, you must: +BackupDesc2=* Save content of documents directory (%s) that contains all uploaded and generated files (you can make a zip for example). +BackupDesc3=* Save content of your database into a dump file. For this, you can use following assistant. +BackupDescX=Archived directory should be stored in a secure place. +BackupDescY=The generated dump file should be stored in a secure place. +BackupPHPWarning=Backup can't be guaranted with this method. Prefer previous one +RestoreDesc=To restore a Dolibarr backup, you must: +RestoreDesc2=* Restore archive file (zip file for example) of documents directory to extract tree of files in documents directory of a new Dolibarr installation or into this current documents directoy (%s). +RestoreDesc3=* Restore the data, from a backup dump file, into the database of the new Dolibarr installation or into the database of this current installation. Warning, once restore is finished, you must use a login/password, that existed when backup was made, to connect again. To restore a backup database into this current installation, you can follow this assistant. +RestoreMySQL=MySQL import +ForcedToByAModule= This rule is forced to %s by an activated module +PreviousDumpFiles=Available database backup dump files +WeekStartOnDay=First day of week +RunningUpdateProcessMayBeRequired=Running the upgrade process seems to be required (Programs version %s differs from database version %s) +YouMustRunCommandFromCommandLineAfterLoginToUser=You must run this command from command line after login to a shell with user %s or you must add -W option at end of command line to provide %s password. +YourPHPDoesNotHaveSSLSupport=SSL functions not available in your PHP +DownloadMoreSkins=More skins to download +SimpleNumRefModelDesc=Returns the reference number with format %syymm-nnnn where yy is year, mm is month and nnnn is a sequence without hole and with no reset +ShowProfIdInAddress=Show professionnal id with addresses on documents +ShowVATIntaInAddress=Hide VAT Intra num with addresses on documents +TranslationUncomplete=Partial translation +SomeTranslationAreUncomplete=Some languages may be partially translated or may contains errors. If you detect some, you can fix language files registering to http://transifex.com/projects/p/dolibarr/. +MenuUseLayout=Make vertical menu hidable (option javascript must not be disabled) +MAIN_DISABLE_METEO=Disable meteo view +TestLoginToAPI=Test login to API +ProxyDesc=Some features of Dolibarr need to have an Internet access to work. Define here parameters for this. If the Dolibarr server is behind a Proxy server, those parameters tells Dolibarr how to access Internet through it. +ExternalAccess=External access +MAIN_PROXY_USE=Use a proxy server (otherwise direct access to internet) +MAIN_PROXY_HOST=Name/Address of proxy server +MAIN_PROXY_PORT=Port of proxy server +MAIN_PROXY_USER=Login to use the proxy server +MAIN_PROXY_PASS=Password to use the proxy server +DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s. +ExtraFields=Complementary attributes +ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) +ExtraFieldsThirdParties=Complementary attributes (thirdparty) +ExtraFieldsContacts=Complementary attributes (contact/address) +ExtraFieldsMember=Complementary attributes (member) +ExtraFieldsMemberType=Complementary attributes (member type) +ExtraFieldsCustomerOrders=Complementary attributes (orders) +ExtraFieldsCustomerInvoices=Complementary attributes (invoices) +ExtraFieldsSupplierOrders=Complementary attributes (orders) +ExtraFieldsSupplierInvoices=Complementary attributes (invoices) +ExtraFieldsProject=Complementary attributes (projects) +ExtraFieldsProjectTask=Complementary attributes (tasks) +ExtraFieldHasWrongValue=Attribute %s has a wrong value. +AlphaNumOnlyCharsAndNoSpace=only alphanumericals characters without space +AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space +SendingMailSetup=Setup of sendings by email +SendmailOptionNotComplete=Warning, on some Linux systems, to send email from your email, sendmail execution setup must contains option -ba (parameter mail.force_extra_parameters into your php.ini file). If some recipients never receive emails, try to edit this PHP parameter with mail.force_extra_parameters = -ba). +PathToDocuments=Path to documents +PathDirectory=Directory +SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail direct" will generate a mail message that might be not correctly parsed by some receiving mail servers. Result is that some mails can't be read by people hosted by those bugged platforms. It's case for some Internet providers (Ex: Orange in France). This is not a problem into Dolibarr nor into PHP but onto receiving mail server. You can however add option MAIN_FIX_FOR_BUGGED_MTA to 1 into setup - other to modify Dolibarr to avoid this. However, you may experience problem with other servers that respect strictly the SMTP standard. The other solution (recommended) is to use the method "SMTP socket library" that has no disadvantages. +TranslationSetup=Configuration de la traduction +TranslationDesc=Choice of language visible on screen can be modified:
* Globally from menu Home - Setup - Display
* For user only from tab User display of user card (click on login on top of screen). +TotalNumberOfActivatedModules=Total number of activated feature modules: %s +YouMustEnableOneModule=You must at least enable 1 module +ClassNotFoundIntoPathWarning=Class %s not found into PHP path +YesInSummer=Yes in summer +OnlyFollowingModulesAreOpenedToExternalUsers=Note, only following modules are opened to external users (whatever are permission of such users): +SuhosinSessionEncrypt=Session storage encrypted by Suhosin +ConditionIsCurrently=Condition is currently %s +YouUseBestDriver=You use driver %s that is best driver available currently. +YouDoNotUseBestDriver=You use drive %s but driver %s is recommended. +NbOfProductIsLowerThanNoPb=You have only %s products/services into database. This does not required any particular optimization. +SearchOptim=Search optimization +YouHaveXProductUseSearchOptim=You have %s product into database. You should add the constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 into Home-Setup-Other, you limit the search to the beginning of strings making possible for database to use index and you should get an immediate response. +BrowserIsOK=You are using the web browser %s. This browser is ok for security and performance. +BrowserIsKO=You are using the web browser %s. This browser is known to be a bad choice for security, performance and reliability. We recommand you to use Firefox, Chrome, Opera or Safari. +XDebugInstalled=XDebug is loaded. +XCacheInstalled=XCache is loaded. +AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". +FieldEdition=Edition of field %s +FixTZ=TimeZone fix +FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced) +GetBarCode=Get barcode +EmptyNumRefModelDesc=The code is free. This code can be modified at any time. +##### Module password generation +PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: 8 characters containing shared numbers and characters in lowercase. +PasswordGenerationNone=Do not suggest any generated password. Password must be type in manually. +##### Users setup ##### +UserGroupSetup=Users and groups module setup +GeneratePassword=Suggest a generated password +RuleForGeneratedPasswords=Rule to generate suggested passwords or validate passwords +DoNotSuggest=Do not suggest any password +EncryptedPasswordInDatabase=To allow the encryption of the passwords in the database +DisableForgetPasswordLinkOnLogonPage=Do not show the link "Forget password" on login page +UsersSetup=Users module setup +UserMailRequired=EMail required to create a new user +##### Company setup ##### +CompanySetup=Companies module setup +CompanyCodeChecker=Module for third parties code generation and checking (customer or supplier) +AccountCodeManager=Module for accountancy code generation (customer or supplier) +ModuleCompanyCodeAquarium=Return an accountancy code built by:
%s followed by third party supplier code for a supplier accountancy code,
%s followed by third party customer code for a customer accountancy code. +ModuleCompanyCodePanicum=Return an empty accountancy code. +ModuleCompanyCodeDigitaria=Accountancy code depends on third party code. The code is composed of the character "C" in the first position followed by the first 5 characters of the third party code. +UseNotifications=Use notifications +NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined:
* per third parties contacts (customers or suppliers), one third party at time.
* or by setting a global target email address on module setup page. +ModelModules=Documents templates +DocumentModelOdt=Generate documents from OpenDocuments templates (.ODT or .ODS files for OpenOffice, KOffice, TextEdit,...) +WatermarkOnDraft=Watermark on draft document +JSOnPaimentBill=Activate feature to autofill payment lines on payment form +CompanyIdProfChecker=Rules on Professional Ids +MustBeUnique=Must be unique ? +MustBeMandatory=Mandatory to create third parties ? +MustBeInvoiceMandatory=Mandatory to validate invoices ? +Miscellaneous=Miscellaneous +##### Webcal setup ##### +WebCalSetup=Webcalendar link setup +WebCalSyncro=Add Dolibarr events to WebCalendar +WebCalAllways=Always, no asking +WebCalYesByDefault=On demand (yes by default) +WebCalNoByDefault=On demand (no by default) +WebCalNever=Never +WebCalURL=URL for calendar access +WebCalServer=Server hosting calendar database +WebCalDatabaseName=Database name +WebCalUser=User to access database +WebCalSetupSaved=Webcalendar setup saved successfully. +WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successful. +WebCalTestKo1=Connection to server '%s' succeed but database '%s' could not be reached. +WebCalTestKo2=Connection to server '%s' with user '%s' failed. +WebCalErrorConnectOkButWrongDatabase=Connection succeeded but database doesn't look to be a Webcalendar database. +WebCalAddEventOnCreateActions=Add calendar event on actions create +WebCalAddEventOnCreateCompany=Add calendar event on companies create +WebCalAddEventOnStatusPropal=Add calendar event on commercial proposals status change +WebCalAddEventOnStatusContract=Add calendar event on contracts status change +WebCalAddEventOnStatusBill=Add calendar event on bills status change +WebCalAddEventOnStatusMember=Add calendar event on members status change +WebCalUrlForVCalExport=An export link to %s format is available at following link: %s +WebCalCheckWebcalSetup=Maybe the Webcal module setup is not correct. +##### Invoices ##### +BillsSetup=Invoices module setup +BillsDate=Invoices date +BillsNumberingModule=Invoices and credit notes numbering model +BillsPDFModules=Invoice documents models +CreditNoteSetup=Credit note module setup +CreditNotePDFModules=Credit note document models +CreditNote=Credit note +CreditNotes=Credit notes +ForceInvoiceDate=Force invoice date to validation date +DisableRepeatable=Disable repeatable invoices +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +EnableEditDeleteValidInvoice=Enable the possibility to edit/delete valid invoice with no payment +SuggestPaymentByRIBOnAccount=Suggest payment by withdraw on account +SuggestPaymentByChequeToAddress=Suggest payment by cheque to +FreeLegalTextOnInvoices=Free text on invoices +WatermarkOnDraftInvoices=Watermark on draft invoices (none if empty) +##### Proposals ##### +PropalSetup=Commercial proposals module setup +CreateForm=Create forms +NumberOfProductLines=Number of product lines +ProposalsNumberingModules=Commercial proposal numbering models +ProposalsPDFModules=Commercial proposal documents models +ClassifiedInvoiced=Classified invoiced +HideTreadedPropal=Hide the treated commercial proposals in the list +AddShippingDateAbility=Add shipping date ability +AddDeliveryAddressAbility=Add delivery date ability +UseOptionLineIfNoQuantity=A line of product/service with a zero amount is considered as an option +FreeLegalTextOnProposal=Free text on commercial proposals +WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request +##### Orders ##### +OrdersSetup=Order management setup +OrdersNumberingModules=Orders numbering models +OrdersModelModule=Order documents models +HideTreadedOrders=Hide the treated or cancelled orders in the list +ValidOrderAfterPropalClosed=To validate the order after proposal closer, makes it possible not to step by the provisional order +FreeLegalTextOnOrders=Free text on orders +WatermarkOnDraftOrders=Watermark on draft orders (none if empty) +ShippableOrderIconInList=Add an icon in Orders list which indicate if order is shippable +BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ask for bank account destination of order +##### Clicktodial ##### +ClickToDialSetup=Click To Dial module setup +ClickToDialUrlDesc=Url called when a click on phone picto is done. In URL, you can use tags
__PHONETO__ that will be replaced with the phone number of person to call
__PHONEFROM__ that will be replaced with phone number of calling person (yours)
__LOGIN__ that will be replaced with your clicktodial login (defined on your user card)
__PASS__ that will be replaced with your clicktodial password (defined on your user card). +##### Bookmark4u ##### +Bookmark4uSetup=Bookmark4u module setup +##### Interventions ##### +InterventionsSetup=Interventions module setup +FreeLegalTextOnInterventions=Free text on intervention documents +FicheinterNumberingModules=Intervention numbering models +TemplatePDFInterventions=Intervention card documents models +WatermarkOnDraftInterventionCards=Watermark on intervention card documents (none if empty) +##### Contracts ##### +ContractsSetup=Contracts/Subscriptions module setup +ContractsNumberingModules=Contracts numbering modules +TemplatePDFContracts=Contracts documents models +FreeLegalTextOnContracts=Free text on contracts +WatermarkOnDraftContractCards=Watermark on draft contracts (none if empty) +##### Members ##### +MembersSetup=Members module setup +MemberMainOptions=Main options +AddSubscriptionIntoAccount=Suggest by default to create a bank transaction, in bank module, when adding a new payed subscription +AdherentLoginRequired= Manage a Login for each member +AdherentMailRequired=EMail required to create a new member +MemberSendInformationByMailByDefault=Checkbox to send mail confirmation to members (validation or new subscription) is on by default +##### LDAP setup ##### +LDAPSetup=LDAP Setup +LDAPGlobalParameters=Global parameters +LDAPUsersSynchro=Users +LDAPGroupsSynchro=Groups +LDAPContactsSynchro=Contacts +LDAPMembersSynchro=Members +LDAPSynchronization=LDAP synchronisation +LDAPFunctionsNotAvailableOnPHP=LDAP functions are not available on your PHP +LDAPToDolibarr=LDAP -> Dolibarr +DolibarrToLDAP=Dolibarr -> LDAP +LDAPNamingAttribute=Key in LDAP +LDAPSynchronizeUsers=Organization of users in LDAP +LDAPSynchronizeGroups=Organization of groups in LDAP +LDAPSynchronizeContacts=Organization of contacts in LDAP +LDAPSynchronizeMembers=Organization of foundation's members in LDAP +LDAPTypeExample=OpenLdap, Egroupware or Active Directory +LDAPPrimaryServer=Primary server +LDAPSecondaryServer=Secondary server +LDAPServerPort=Server port +LDAPServerPortExample=Default port : 389 +LDAPServerProtocolVersion=Protocol version +LDAPServerUseTLS=Use TLS +LDAPServerUseTLSExample=Your LDAP server use TLS +LDAPServerDn=Server DN +LDAPAdminDn=Administrator DN +LDAPAdminDnExample=Complete DN (ex: cn=admin,dc=example,dc=com) +LDAPPassword=Administrator password +LDAPUserDn=Users' DN +LDAPUserDnExample=Complete DN (ex: ou=users,dc=example,dc=com) +LDAPGroupDn=Groups' DN +LDAPGroupDnExample=Complete DN (ex: ou=groups,dc=example,dc=com) +LDAPServerExample=Server address (ex: localhost, 192.168.0.2, ldaps://ldap.example.com/) +LDAPServerDnExample=Complete DN (ex: dc=example,dc=com) +LDAPPasswordExample=Admin password +LDAPDnSynchroActive=Users and groups synchronization +LDAPDnSynchroActiveExample=LDAP to Dolibarr or Dolibarr to LDAP synchronization +LDAPDnContactActive=Contacts' synchronization +LDAPDnContactActiveYes=Activated synchronization +LDAPDnContactActiveExample=Activated/Unactivated synchronization +LDAPDnMemberActive=Members' synchronization +LDAPDnMemberActiveExample=Activated/Unactivated synchronization +LDAPContactDn=Dolibarr contacts' DN +LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=example,dc=com) +LDAPMemberDn=Dolibarr members DN +LDAPMemberDnExample=Complete DN (ex: ou=members,dc=example,dc=com) +LDAPMemberObjectClassList=List of objectClass +LDAPMemberObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) +LDAPUserObjectClassList=List of objectClass +LDAPUserObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) +LDAPGroupObjectClassList=List of objectClass +LDAPGroupObjectClassListExample=List of objectClass defining record attributes (ex: top,groupOfUniqueNames) +LDAPContactObjectClassList=List of objectClass +LDAPContactObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) +LDAPMemberTypeDn=Dolibarr members type DN +LDAPMemberTypeDnExample=Complete DN (ex: ou=type_members,dc=example,dc=com) +LDAPTestConnect=Test LDAP connection +LDAPTestSynchroContact=Test contacts synchronization +LDAPTestSynchroUser=Test user synchronization +LDAPTestSynchroGroup=Test group synchronization +LDAPTestSynchroMember=Test member synchronization +LDAPTestSearch= Test a LDAP search +LDAPSynchroOK=Synchronization test successful +LDAPSynchroKO=Failed synchronization test +LDAPSynchroKOMayBePermissions=Failed synchronization test. Check that connexion to server is correctly configured and allows LDAP udpates +LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=%s) +LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=%s) +LDAPBindOK=Connect/Authentificate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPBindKO=Connect/Authentificate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPUnbindSuccessfull=Disconnect successful +LDAPUnbindFailed=Disconnect failed +LDAPConnectToDNSuccessfull=Connection to DN (%s) successful +LDAPConnectToDNFailed=Connection to DN (%s) failed +LDAPSetupForVersion3=LDAP server configured for version 3 +LDAPSetupForVersion2=LDAP server configured for version 2 +LDAPDolibarrMapping=Dolibarr Mapping +LDAPLdapMapping=LDAP Mapping +LDAPFieldLoginUnix=Login (unix) +LDAPFieldLoginExample=Example : uid +LDAPFilterConnection=Search filter +LDAPFilterConnectionExample=Example : &(objectClass=inetOrgPerson) +LDAPFieldLoginSamba=Login (samba, activedirectory) +LDAPFieldLoginSambaExample=Example : samaccountname +LDAPFieldFullname=Full name +LDAPFieldFullnameExample=Example : cn +LDAPFieldPassword=Password +LDAPFieldPasswordNotCrypted=Password not crypted +LDAPFieldPasswordCrypted=Password crypted +LDAPFieldPasswordExample=Example : userPassword +LDAPFieldCommonName=Common name +LDAPFieldCommonNameExample=Example : cn +LDAPFieldName=Name +LDAPFieldNameExample=Example : sn +LDAPFieldFirstName=First name +LDAPFieldFirstNameExample=Example : givenName +LDAPFieldMail=Email address +LDAPFieldMailExample=Example : mail +LDAPFieldPhone=Professional phone number +LDAPFieldPhoneExample=Example : telephonenumber +LDAPFieldHomePhone=Personal phone number +LDAPFieldHomePhoneExample=Example : homephone +LDAPFieldMobile=Cellular phone +LDAPFieldMobileExample=Example : mobile +LDAPFieldFax=Fax number +LDAPFieldFaxExample=Example : facsimiletelephonenumber +LDAPFieldAddress=Street +LDAPFieldAddressExample=Example : street +LDAPFieldZip=Zip +LDAPFieldZipExample=Example : postalcode +LDAPFieldTown=Town +LDAPFieldTownExample=Example : l +LDAPFieldCountry=Country +LDAPFieldCountryExample=Example : c +LDAPFieldDescription=Description +LDAPFieldDescriptionExample=Example : description +LDAPFieldGroupMembers= Group members +LDAPFieldGroupMembersExample= Example : uniqueMember +LDAPFieldBirthdate=Birthdate +LDAPFieldBirthdateExample=Example : +LDAPFieldCompany=Company +LDAPFieldCompanyExample=Example : o +LDAPFieldSid=SID +LDAPFieldSidExample=Example : objectsid +LDAPFieldEndLastSubscription=Date of subscription end +LDAPFieldTitle=Post/Function +LDAPFieldTitleExample=Example: title +LDAPParametersAreStillHardCoded=LDAP parameters are still hardcoded (in contact class) +LDAPSetupNotComplete=LDAP setup not complete (go on others tabs) +LDAPNoUserOrPasswordProvidedAccessIsReadOnly=No administrator or password provided. LDAP access will be anonymous and in read only mode. +LDAPDescContact=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr contacts. +LDAPDescUsers=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr users. +LDAPDescGroups=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr groups. +LDAPDescMembers=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr members module. +LDAPDescValues=Example values are designed for OpenLDAP with following loaded schemas: core.schema, cosine.schema, inetorgperson.schema). If you use thoose values and OpenLDAP, modify your LDAP config file slapd.conf to have all thoose schemas loaded. +ForANonAnonymousAccess=For an authenticated access (for a write access for example) +PerfDolibarr=Performance setup/optimizing report +YouMayFindPerfAdviceHere=You will find on this page some checks or advices related to performance. +NotInstalled=Not installed, so your server is not slow down by this. +ApplicativeCache=Applicative cache +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. +MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled. +OPCodeCache=OPCode cache +NoOPCodeCacheFound=No OPCode cache found. May be you use another OPCode cache than XCache or eAccelerator (good), may be you don't have OPCode cache (very bad). +HTTPCacheStaticResources=HTTP cache for static resources (css, img, javascript) +FilesOfTypeCached=Files of type %s are cached by HTTP server +FilesOfTypeNotCached=Files of type %s are not cached by HTTP server +FilesOfTypeCompressed=Files of type %s are compressed by HTTP server +FilesOfTypeNotCompressed=Files of type %s are not compressed by HTTP server +CacheByServer=Cache by server +CacheByClient=Cache by browser +CompressionOfResources=Compression of HTTP responses +TestNotPossibleWithCurrentBrowsers=Such an automatic detection is not possible with current browsers +##### Products ##### +ProductSetup=Products module setup +ServiceSetup=Services module setup +ProductServiceSetup=Products and Services modules setup +NumberOfProductShowInSelect=Max number of products in combos select lists (0=no limit) +ConfirmDeleteProductLineAbility=Confirmation when removing product lines in forms +ModifyProductDescAbility=Personalization of product descriptions in forms +ViewProductDescInFormAbility=Visualization of product descriptions in the forms (otherwise as popup tooltip) +ViewProductDescInThirdpartyLanguageAbility=Visualization of products descriptions in the thirdparty language +UseSearchToSelectProductTooltip=Also if you have a large number of product (> 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=Use a search form to choose a product (rather than a drop-down list). +UseEcoTaxeAbility=Support Eco-Taxe (WEEE) +SetDefaultBarcodeTypeProducts=Default barcode type to use for products +SetDefaultBarcodeTypeThirdParties=Default barcode type to use for third parties +ProductCodeChecker= Module for product code generation and checking (product or service) +ProductOtherConf= Product / Service configuration +##### Syslog ##### +SyslogSetup=Logs module setup +SyslogOutput=Logs outputs +SyslogSyslog=Syslog +SyslogFacility=Facility +SyslogLevel=Level +SyslogSimpleFile=File +SyslogFilename=File name and path +YouCanUseDOL_DATA_ROOT=You can use DOL_DATA_ROOT/dolibarr.log for a log file in Dolibarr "documents" directory. You can set a different path to store this file. +ErrorUnknownSyslogConstant=Constant %s is not a known Syslog constant +OnlyWindowsLOG_USER=Windows only supports LOG_USER +##### Donations ##### +DonationsSetup=Donation module setup +DonationsReceiptModel=Template of donation receipt +##### Barcode ##### +BarcodeSetup=Barcode setup +PaperFormatModule=Print format module +BarcodeEncodeModule=Barcode encoding type +UseBarcodeInProductModule=Use bar codes for products +CodeBarGenerator=Barcode generator +ChooseABarCode=No generator defined +FormatNotSupportedByGenerator=Format not supported by this generator +BarcodeDescEAN8=Barcode of type EAN8 +BarcodeDescEAN13=Barcode of type EAN13 +BarcodeDescUPC=Barcode of type UPC +BarcodeDescISBN=Barcode of type ISBN +BarcodeDescC39=Barcode of type C39 +BarcodeDescC128=Barcode of type C128 +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode +BarcodeInternalEngine=Internal engine +BarCodeNumberManager=Manager to auto define barcode numbers +##### Prelevements ##### +WithdrawalsSetup=Withdrawal module setup +##### ExternalRSS ##### +ExternalRSSSetup=External RSS imports setup +NewRSS=New RSS Feed +RSSUrl=RSS URL +RSSUrlExample=An interesting RSS feed +##### Mailing ##### +MailingSetup=EMailing module setup +MailingEMailFrom=Sender EMail (From) for emails sent by emailing module +MailingEMailError=Return EMail (Errors-to) for emails with errors +MailingDelay=Seconds to wait after sending next message +##### Notification ##### +NotificationSetup=EMail notification module setup +NotificationEMailFrom=Sender EMail (From) for emails sent for notifications +ListOfAvailableNotifications=List of events you can set notification on, for each thirdparty (go into thirdparty card to setup) or by setting a fixed email (List depends on activated modules) +FixedEmailTarget=Fixed email target +##### Sendings ##### +SendingsSetup=Sending module setup +SendingsReceiptModel=Sending receipt model +SendingsNumberingModules=Sendings numbering modules +SendingsAbility=Support shipment sheets for customer deliveries +NoNeedForDeliveryReceipts=In most cases, sendings receipts are used both as sheets for customer deliveries (list of products to send) and sheets that is recevied and signed by customer. So product deliveries receipts is a duplicated feature and is rarely activated. +FreeLegalTextOnShippings=Free text on shipments +##### Deliveries ##### +DeliveryOrderNumberingModules=Products deliveries receipt numbering module +DeliveryOrderModel=Products deliveries receipt model +DeliveriesOrderAbility=Support products deliveries receipts +FreeLegalTextOnDeliveryReceipts=Free text on delivery receipts +##### FCKeditor ##### +AdvancedEditor=Advanced editor +ActivateFCKeditor=Activate advanced editor for: +FCKeditorForCompany=WYSIWIG creation/edition of elements description and note (except products/services) +FCKeditorForProduct=WYSIWIG creation/edition of products/services description and note +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 formating when building PDF files. +FCKeditorForMailing= WYSIWIG creation/edition for mass eMailings (Tools->eMailing) +FCKeditorForUserSignature=WYSIWIG creation/edition of user signature +FCKeditorForMail=WYSIWIG creation/edition for all mail (except Outils->eMailing) +##### OSCommerce 1 ##### +OSCommerceErrorConnectOkButWrongDatabase=Connection succeeded but database doesn't look to be an OSCommerce database (Key %s not found in table %s). +OSCommerceTestOk=Connection to server '%s' on database '%s' with user '%s' successfull. +OSCommerceTestKo1=Connection to server '%s' succeed but database '%s' could not be reached. +OSCommerceTestKo2=Connection to server '%s' with user '%s' failed. +##### Stock ##### +StockSetup=Warehouse module setup +UserWarehouse=Use user personal warehouses +IfYouUsePointOfSaleCheckModule=If you use a Point of Sale module (POS module provided by default or another external module), this setup may be ignored by your Point Of Sale module. Most point of sales modules are designed to create immediatly an invoice and decrease stock by default whatever are options here. So, if you need or not to have a stock decrease when registering a sell from your Point Of Sale, check also your POS module set up. +##### Menu ##### +MenuDeleted=Menu deleted +TreeMenu=Tree menus +Menus=Menus +TreeMenuPersonalized=Personalized menus +NewMenu=New menu +MenuConf=Menus setup +Menu=Selection of menu +MenuHandler=Menu handler +MenuModule=Source module +HideUnauthorizedMenu= Hide unauthorized menus (gray) +DetailId=Id menu +DetailMenuHandler=Menu handler where to show new menu +DetailMenuModule=Module name if menu entry come from a module +DetailType=Type of menu (top or left) +DetailTitre=Menu label or label code for translation +DetailMainmenu=Group for which it belongs (obsolete) +DetailUrl=URL where menu send you (Absolute URL link or external link with http://) +DetailLeftmenu=Display condition or not (obsolete) +DetailEnabled=Condition to show or not entry +DetailRight=Condition to display unauthorized grey menus +DetailLangs=Lang file name for label code translation +DetailUser=Intern / Extern / All +Target=Target +DetailTarget=Target for links (_blank top open a new window) +DetailLevel=Level (-1:top menu, 0:header menu, >0 menu and sub menu) +ModifMenu=Menu change +DeleteMenu=Delete menu entry +ConfirmDeleteMenu=Are you sure you want to delete menu entry %s ? +DeleteLine=Delete line +ConfirmDeleteLine=Are you sure you want to delete this line ? +##### Tax ##### +TaxSetup=Taxes, social contributions and dividends module setup +OptionVatMode=VAT due +OptionVATDefault=Cash basis +OptionVATDebitOption=Accrual basis +OptionVatDefaultDesc=VAT is due:
- on delivery for goods (we use invoice date)
- on payments for services +OptionVatDebitOptionDesc=VAT is due:
- on delivery for goods (we use invoice date)
- on invoice (debit) for services +SummaryOfVatExigibilityUsedByDefault=Time of VAT exigibility by default according to chosen option: +OnDelivery=On delivery +OnPayment=On payment +OnInvoice=On invoice +SupposedToBePaymentDate=Payment date used +SupposedToBeInvoiceDate=Invoice date used +Buy=Buy +Sell=Sell +InvoiceDateUsed=Invoice date used +YourCompanyDoesNotUseVAT=Your company has been defined to not use VAT (Home - Setup - Company/Foundation), so there is no VAT options to setup. +AccountancyCode=Accountancy Code +AccountancyCodeSell=Sale account. code +AccountancyCodeBuy=Purchase account. code +##### Agenda ##### +AgendaSetup=Events and agenda module setup +PasswordTogetVCalExport=Key to authorize export link +PastDelayVCalExport=Do not export event older than +AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionary -> Type of agenda events) +AGENDA_DEFAULT_FILTER_TYPE=Set automatically this type of event into search filter of agenda view +AGENDA_DEFAULT_FILTER_STATUS=Set automatically this status for events into search filter of agenda view +AGENDA_DEFAULT_VIEW=Which tab do you want to open by default when selecting menu Agenda +##### ClickToDial ##### +ClickToDialDesc=This module allows to add an icon after phone numbers. A click on this icon will call a server with a particular URL you define below. This can be used to call a call center system from Dolibarr that can call the phone number on a SIP system for example. +##### Point Of Sales (CashDesk) ##### +CashDesk=Point of sales +CashDeskSetup=Point of sales module setup +CashDeskThirdPartyForSell=Default generic third party to use for sells +CashDeskBankAccountForSell=Default account to use to receive cash payments +CashDeskBankAccountForCheque= Default account to use to receive payments by cheque +CashDeskBankAccountForCB= Default account to use to receive payments by credit cards +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). +CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease +StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management +CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. +##### Bookmark ##### +BookmarkSetup=Bookmark module setup +BookmarkDesc=This module allows you to manage bookmarks. You can also add shortcuts to any Dolibarr pages or externale web sites on your left menu. +NbOfBoomarkToShow=Maximum number of bookmarks to show in left menu +##### WebServices ##### +WebServicesSetup=Webservices module setup +WebServicesDesc=By enabling this module, Dolibarr become a web service server to provide miscellaneous web services. +WSDLCanBeDownloadedHere=WSDL descriptor files of provided services can be download here +EndPointIs=SOAP clients must send their requests to the Dolibarr endpoint available at Url +##### Bank ##### +BankSetupModule=Bank module setup +FreeLegalTextOnChequeReceipts=Free text on cheque receipts +BankOrderShow=Display order of bank accounts for countries using "detailed bank number" +BankOrderGlobal=General +BankOrderGlobalDesc=General display order +BankOrderES=Spanish +BankOrderESDesc=Spanish display order +##### Multicompany ##### +MultiCompanySetup=Multi-company module setup +##### Suppliers ##### +SuppliersSetup=Supplier module setup +SuppliersCommandModel=Complete template of supplier order (logo...) +SuppliersInvoiceModel=Complete template of supplier invoice (logo...) +SuppliersInvoiceNumberingModel=Supplier invoices numbering models +##### GeoIPMaxmind ##### +GeoIPMaxmindSetup=GeoIP Maxmind module setup +PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.
Examples:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat +NoteOnPathLocation=Note that your ip to country data file must be inside a directory your PHP can read (Check your PHP open_basedir setup and filesystem permissions). +YouCanDownloadFreeDatFileTo=You can download a free demo version of the Maxmind GeoIP country file at %s. +YouCanDownloadAdvancedDatFileTo=You can also download a more complete version, with updates, of the Maxmind GeoIP country file at %s. +TestGeoIPResult=Test of a conversion IP -> country +##### Projects ##### +ProjectsNumberingModules=Projects numbering module +ProjectsSetup=Project module setup +ProjectsModelModule=Project reports document model +TasksNumberingModules=Tasks numbering module +TaskModelModule=Tasks reports document model +##### ECM (GED) ##### +ECMSetup = GED Setup +ECMAutoTree = Automatic tree folder and document +##### Fiscal Year ##### +FiscalYears=Fiscal years +FiscalYear=Fiscal year +FiscalYearCard=Fiscal year card +NewFiscalYear=New fiscal year +EditFiscalYear=Edit fiscal year +OpenFiscalYear=Open fiscal year +CloseFiscalYear=Close fiscal year +DeleteFiscalYear=Delete fiscal year +ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ? +Opened=Opened +Closed=Closed +AlwaysEditable=Can always be edited +MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) +NbMajMin=Minimum number of uppercase characters +NbNumMin=Minimum number of numeric characters +NbSpeMin=Minimum number of special characters +NbIteConsecutive=Maximum number of repeating same characters +NoAmbiCaracAutoGeneration=Do not use ambiguous characters ("1","l","i","|","0","O") for automatic generation +SalariesSetup=Setup of module salaries +SortOrder=Sort order +Format=Format +TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type +IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/lo_LA/agenda.lang b/htdocs/langs/lo_LA/agenda.lang new file mode 100644 index 00000000000..04e2ae30de8 --- /dev/null +++ b/htdocs/langs/lo_LA/agenda.lang @@ -0,0 +1,93 @@ +# Dolibarr language file - Source file is en_US - agenda +IdAgenda=ID event +Actions=Events +ActionsArea=Events area (Actions and tasks) +Agenda=Agenda +Agendas=Agendas +Calendar=Calendar +Calendars=Calendars +LocalAgenda=Internal calendar +ActionsOwnedBy=Event owned by +AffectedTo=Assigned to +DoneBy=Done by +Event=Event +Events=Events +EventsNb=Number of events +MyEvents=My events +OtherEvents=Other events +ListOfActions=List of events +Location=Location +EventOnFullDay=Event on all day(s) +SearchAnAction= Search an event/task +MenuToDoActions=All incomplete events +MenuDoneActions=All terminated events +MenuToDoMyActions=My incomplete events +MenuDoneMyActions=My terminated events +ListOfEvents=List of events (internal calendar) +ActionsAskedBy=Events reported by +ActionsToDoBy=Events assigned to +ActionsDoneBy=Events done by +ActionsForUser=Events for user +ActionsForUsersGroup=Events for all users of group +ActionAssignedTo=Event assigned to +AllMyActions= All my events/tasks +AllActions= All events/tasks +ViewList=List view +ViewCal=Month view +ViewDay=Day view +ViewWeek=Week view +ViewPerUser=Per user view +ViewWithPredefinedFilters= View with predefined filters +AutoActions= Automatic filling +AgendaAutoActionDesc= Define here events for which you want Dolibarr to create automatically an event in agenda. If nothing is checked (by default), only manual actions will be included in agenda. +AgendaSetupOtherDesc= This page provides options to allow export of your Dolibarr events into an external calendar (thunderbird, google calendar, ...) +AgendaExtSitesDesc=This page allows to declare external sources of calendars to see their events into Dolibarr agenda. +ActionsEvents=Events for which Dolibarr will create an action in agenda automatically +PropalValidatedInDolibarr=Proposal %s validated +InvoiceValidatedInDolibarr=Invoice %s validated +InvoiceValidatedInDolibarrFromPos=Invoice %s validated from POS +InvoiceBackToDraftInDolibarr=Invoice %s go back to draft status +InvoiceDeleteDolibarr=Invoice %s deleted +OrderValidatedInDolibarr= Order %s validated +OrderApprovedInDolibarr=Order %s approved +OrderRefusedInDolibarr=Order %s refused +OrderBackToDraftInDolibarr=Order %s go back to draft status +OrderCanceledInDolibarr=Order %s canceled +ProposalSentByEMail=Commercial proposal %s sent by EMail +OrderSentByEMail=Customer order %s sent by EMail +InvoiceSentByEMail=Customer invoice %s sent by EMail +SupplierOrderSentByEMail=Supplier order %s sent by EMail +SupplierInvoiceSentByEMail=Supplier invoice %s sent by EMail +ShippingSentByEMail=Shipment %s sent by EMail +ShippingValidated= Shipment %s validated +InterventionSentByEMail=Intervention %s sent by EMail +NewCompanyToDolibarr= Third party created +DateActionPlannedStart= Planned start date +DateActionPlannedEnd= Planned end date +DateActionDoneStart= Real start date +DateActionDoneEnd= Real end date +DateActionStart= Start date +DateActionEnd= End date +AgendaUrlOptions1=You can also add following parameters to filter output: +AgendaUrlOptions2=login=%s to restrict output to actions created by or assigned to user %s. +AgendaUrlOptions3=logina=%s to restrict output to actions owned by a user %s. +AgendaUrlOptions4=logint=%s to restrict output to actions assigned to user %s. +AgendaUrlOptionsProject=project=PROJECT_ID to restrict output to actions associated to project PROJECT_ID. +AgendaShowBirthdayEvents=Show birthday's contacts +AgendaHideBirthdayEvents=Hide birthday's contacts +Busy=Busy +ExportDataset_event1=List of agenda events +DefaultWorkingDays=Default working days range in week (Example: 1-5, 1-6) +DefaultWorkingHours=Default working hours in day (Example: 9-18) +# External Sites ical +ExportCal=Export calendar +ExtSites=Import external calendars +ExtSitesEnableThisTool=Show external calendars (defined into global setup) into agenda. Does not affect external calendars defined by users. +ExtSitesNbOfAgenda=Number of calendars +AgendaExtNb=Calendar nb %s +ExtSiteUrlAgenda=URL to access .ical file +ExtSiteNoLabel=No Description +WorkingTimeRange=Working time range +WorkingDaysRange=Working days range +AddEvent=Create event +MyAvailability=My availability diff --git a/htdocs/langs/lo_LA/banks.lang b/htdocs/langs/lo_LA/banks.lang new file mode 100644 index 00000000000..a2306950fb4 --- /dev/null +++ b/htdocs/langs/lo_LA/banks.lang @@ -0,0 +1,165 @@ +# Dolibarr language file - Source file is en_US - banks +Bank=Bank +Banks=Banks +MenuBankCash=Bank/Cash +MenuSetupBank=Bank/Cash setup +BankName=Bank name +FinancialAccount=Account +FinancialAccounts=Accounts +BankAccount=Bank account +BankAccounts=Bank accounts +ShowAccount=Show Account +AccountRef=Financial account ref +AccountLabel=Financial account label +CashAccount=Cash account +CashAccounts=Cash accounts +MainAccount=Main account +CurrentAccount=Current account +CurrentAccounts=Current accounts +SavingAccount=Savings account +SavingAccounts=Savings accounts +ErrorBankLabelAlreadyExists=Financial account label already exists +BankBalance=Balance +BankBalanceBefore=Balance before +BankBalanceAfter=Balance after +BalanceMinimalAllowed=Minimum allowed balance +BalanceMinimalDesired=Minimum desired balance +InitialBankBalance=Initial balance +EndBankBalance=End balance +CurrentBalance=Current balance +FutureBalance=Future balance +ShowAllTimeBalance=Show balance from start +AllTime=From start +Reconciliation=Reconciliation +RIB=Bank Account Number +IBAN=IBAN number +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid +BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid +StandingOrders=Standing orders +StandingOrder=Standing order +Withdrawals=Withdrawals +Withdrawal=Withdrawal +AccountStatement=Account statement +AccountStatementShort=Statement +AccountStatements=Account statements +LastAccountStatements=Last account statements +Rapprochement=Reconciliate +IOMonthlyReporting=Monthly reporting +BankAccountDomiciliation=Account address +BankAccountCountry=Account country +BankAccountOwner=Account owner name +BankAccountOwnerAddress=Account owner address +RIBControlError=Integrity check of values fails. This means information for this account number are not complete or wrong (check country, numbers and IBAN). +CreateAccount=Create account +NewAccount=New account +NewBankAccount=New bank account +NewFinancialAccount=New financial account +MenuNewFinancialAccount=New financial account +NewCurrentAccount=New current account +NewSavingAccount=New savings account +NewCashAccount=New cash account +EditFinancialAccount=Edit account +AccountSetup=Financial accounts setup +SearchBankMovement=Search bank movement +Debts=Debts +LabelBankCashAccount=Bank or cash label +AccountType=Account type +BankType0=Savings account +BankType1=Current or credit card account +BankType2=Cash account +IfBankAccount=If bank account +AccountsArea=Accounts area +AccountCard=Account card +DeleteAccount=Delete account +ConfirmDeleteAccount=Are you sure you want to delete this account ? +Account=Account +ByCategories=By categories +ByRubriques=By categories +BankTransactionByCategories=Bank transactions by categories +BankTransactionForCategory=Bank transactions for category %s +RemoveFromRubrique=Remove link with category +RemoveFromRubriqueConfirm=Are you sure you want to remove link between the transaction and the category ? +ListBankTransactions=List of bank transactions +IdTransaction=Transaction ID +BankTransactions=Bank transactions +SearchTransaction=Search transaction +ListTransactions=List transactions +ListTransactionsByCategory=List transaction/category +TransactionsToConciliate=Transactions to reconcile +Conciliable=Can be reconciled +Conciliate=Reconcile +Conciliation=Reconciliation +ConciliationForAccount=Reconcile this account +IncludeClosedAccount=Include closed accounts +OnlyOpenedAccount=Only opened accounts +AccountToCredit=Account to credit +AccountToDebit=Account to debit +DisableConciliation=Disable reconciliation feature for this account +ConciliationDisabled=Reconciliation feature disabled +StatusAccountOpened=Opened +StatusAccountClosed=Closed +AccountIdShort=Number +EditBankRecord=Edit record +LineRecord=Transaction +AddBankRecord=Add transaction +AddBankRecordLong=Add transaction manually +ConciliatedBy=Reconciled by +DateConciliating=Reconcile date +BankLineConciliated=Transaction reconciled +CustomerInvoicePayment=Customer payment +CustomerInvoicePaymentBack=Customer payment back +SupplierInvoicePayment=Supplier payment +WithdrawalPayment=Withdrawal payment +SocialContributionPayment=Social contribution payment +FinancialAccountJournal=Financial account journal +BankTransfer=Bank transfer +BankTransfers=Bank transfers +TransferDesc=Transfer from one account to another one, Dolibarr will write two records (a debit in source account and a credit in target account, of the same amount. The same label and date will be used for this transaction) +TransferFrom=From +TransferTo=To +TransferFromToDone=A transfer from %s to %s of %s %s has been recorded. +CheckTransmitter=Transmitter +ValidateCheckReceipt=Validate this check receipt ? +ConfirmValidateCheckReceipt=Are you sure you want to validate this check receipt, no change will be possible once this is done ? +DeleteCheckReceipt=Delete this check receipt ? +ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt ? +BankChecks=Bank checks +BankChecksToReceipt=Checks waiting for deposit +ShowCheckReceipt=Show check deposit receipt +NumberOfCheques=Nb of check +DeleteTransaction=Delete transaction +ConfirmDeleteTransaction=Are you sure you want to delete this transaction ? +ThisWillAlsoDeleteBankRecord=This will also delete generated bank transactions +BankMovements=Movements +CashBudget=Cash budget +PlannedTransactions=Planned transactions +Graph=Graphics +ExportDataset_banque_1=Bank transactions and account statement +ExportDataset_banque_2=Deposit slip +TransactionOnTheOtherAccount=Transaction on the other account +TransactionWithOtherAccount=Account transfer +PaymentNumberUpdateSucceeded=Payment number updated succesfully +PaymentNumberUpdateFailed=Payment number could not be updated +PaymentDateUpdateSucceeded=Payment date update succesfully +PaymentDateUpdateFailed=Payment date could not be updated +Transactions=Transactions +BankTransactionLine=Bank transaction +AllAccounts=All bank/cash accounts +BackToAccount=Back to account +ShowAllAccounts=Show for all accounts +FutureTransaction=Transaction in futur. No way to conciliate. +SelectChequeTransactionAndGenerate=Select/filter checks to include into the check deposit receipt and click on "Create". +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD +EventualyAddCategory=Eventually, specify a category in which to classify the records +ToConciliate=To conciliate? +ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click +BankDashboard=Bank accounts summary +DefaultRIB=Default BAN +AllRIB=All BAN +LabelRIB=BAN Label +NoBANRecord=No BAN record +DeleteARib=Delete BAN record +ConfirmDeleteRib=Are you sure you want to delete this BAN record ? diff --git a/htdocs/langs/lo_LA/bills.lang b/htdocs/langs/lo_LA/bills.lang new file mode 100644 index 00000000000..7232f00e91c --- /dev/null +++ b/htdocs/langs/lo_LA/bills.lang @@ -0,0 +1,430 @@ +# Dolibarr language file - Source file is en_US - bills +Bill=Invoice +Bills=Invoices +BillsCustomers=Customers invoices +BillsCustomer=Customers invoice +BillsSuppliers=Suppliers invoices +BillsCustomersUnpaid=Unpaid customers invoices +BillsCustomersUnpaidForCompany=Unpaid customer's invoices for %s +BillsSuppliersUnpaid=Unpaid supplier's invoices +BillsSuppliersUnpaidForCompany=Unpaid supplier's invoices for %s +BillsLate=Late payments +BillsStatistics=Customers invoices statistics +BillsStatisticsSuppliers=Suppliers invoices statistics +DisabledBecauseNotErasable=Disabled because can not be erased +InvoiceStandard=Standard invoice +InvoiceStandardAsk=Standard invoice +InvoiceStandardDesc=This kind of invoice is the common invoice. +InvoiceDeposit=Deposit invoice +InvoiceDepositAsk=Deposit invoice +InvoiceDepositDesc=This kind of invoice is done when a deposit has been received. +InvoiceProForma=Proforma invoice +InvoiceProFormaAsk=Proforma invoice +InvoiceProFormaDesc=Proforma invoice is an image of a true invoice but has no accountancy value. +InvoiceReplacement=Replacement invoice +InvoiceReplacementAsk=Replacement invoice for invoice +InvoiceReplacementDesc=Replacement invoice is used to cancel and replace completely an invoice with no payment already received.

Note: Only invoices with no payment on it can be replaced. If the invoice you replace is not yet closed, it will be automatically closed to 'abandoned'. +InvoiceAvoir=Credit note +InvoiceAvoirAsk=Credit note to correct invoice +InvoiceAvoirDesc=The credit note is a negative invoice used to solve fact that an invoice has an amount that differs than amount really paid (because customer paid too much by error, or will not paid completely since he returned some products for example). +invoiceAvoirWithLines=Create Credit Note with lines from the origin invoice +invoiceAvoirWithPaymentRestAmount=Create Credit Note with remaining unpaid of origin invoice +invoiceAvoirLineWithPaymentRestAmount=Credit Note for remaining unpaid amount +ReplaceInvoice=Replace invoice %s +ReplacementInvoice=Replacement invoice +ReplacedByInvoice=Replaced by invoice %s +ReplacementByInvoice=Replaced by invoice +CorrectInvoice=Correct invoice %s +CorrectionInvoice=Correction invoice +UsedByInvoice=Used to pay invoice %s +ConsumedBy=Consumed by +NotConsumed=Not consumed +NoReplacableInvoice=No replacable invoices +NoInvoiceToCorrect=No invoice to correct +InvoiceHasAvoir=Corrected by one or several invoices +CardBill=Invoice card +PredefinedInvoices=Predefined Invoices +Invoice=Invoice +Invoices=Invoices +InvoiceLine=Invoice line +InvoiceCustomer=Customer invoice +CustomerInvoice=Customer invoice +CustomersInvoices=Customers invoices +SupplierInvoice=Supplier invoice +SuppliersInvoices=Suppliers invoices +SupplierBill=Supplier invoice +SupplierBills=suppliers invoices +Payment=Payment +PaymentBack=Payment back +Payments=Payments +PaymentsBack=Payments back +PaidBack=Paid back +DatePayment=Payment date +DeletePayment=Delete payment +ConfirmDeletePayment=Are you sure you want to delete this payment ? +ConfirmConvertToReduc=Do you want to convert this credit note or deposit into an absolute discount ?
The amount will so be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. +SupplierPayments=Suppliers payments +ReceivedPayments=Received payments +ReceivedCustomersPayments=Payments received from customers +PayedSuppliersPayments=Payments payed to suppliers +ReceivedCustomersPaymentsToValid=Received customers payments to validate +PaymentsReportsForYear=Payments reports for %s +PaymentsReports=Payments reports +PaymentsAlreadyDone=Payments already done +PaymentsBackAlreadyDone=Payments back already done +PaymentRule=Payment rule +PaymentMode=Payment type +PaymentConditions=Payment term +PaymentConditionsShort=Payment term +PaymentAmount=Payment amount +ValidatePayment=Validate payment +PaymentHigherThanReminderToPay=Payment higher than reminder to pay +HelpPaymentHigherThanReminderToPay=Attention, the payment amount of one or more bills is higher than the rest to pay.
Edit your entry, otherwise confirm and think about creating a credit note of the excess received for each overpaid invoices. +HelpPaymentHigherThanReminderToPaySupplier=Attention, the payment amount of one or more bills is higher than the rest to pay.
Edit your entry, otherwise confirm. +ClassifyPaid=Classify 'Paid' +ClassifyPaidPartially=Classify 'Paid partially' +ClassifyCanceled=Classify 'Abandoned' +ClassifyClosed=Classify 'Closed' +ClassifyUnBilled=Classify 'Unbilled' +CreateBill=Create Invoice +AddBill=Create invoice or credit note +AddToDraftInvoices=Add to draft invoice +DeleteBill=Delete invoice +SearchACustomerInvoice=Search for a customer invoice +SearchASupplierInvoice=Search for a supplier invoice +CancelBill=Cancel an invoice +SendRemindByMail=Send reminder by EMail +DoPayment=Do payment +DoPaymentBack=Do payment back +ConvertToReduc=Convert into future discount +EnterPaymentReceivedFromCustomer=Enter payment received from customer +EnterPaymentDueToCustomer=Make payment due to customer +DisabledBecauseRemainderToPayIsZero=Disabled because remaining unpaid is zero +Amount=Amount +PriceBase=Price base +BillStatus=Invoice status +BillStatusDraft=Draft (needs to be validated) +BillStatusPaid=Paid +BillStatusPaidBackOrConverted=Paid or converted into discount +BillStatusConverted=Paid (ready for final invoice) +BillStatusCanceled=Abandoned +BillStatusValidated=Validated (needs to be paid) +BillStatusStarted=Started +BillStatusNotPaid=Not paid +BillStatusClosedUnpaid=Closed (unpaid) +BillStatusClosedPaidPartially=Paid (partially) +BillShortStatusDraft=Draft +BillShortStatusPaid=Paid +BillShortStatusPaidBackOrConverted=Processed +BillShortStatusConverted=Processed +BillShortStatusCanceled=Abandoned +BillShortStatusValidated=Validated +BillShortStatusStarted=Started +BillShortStatusNotPaid=Not paid +BillShortStatusClosedUnpaid=Closed +BillShortStatusClosedPaidPartially=Paid (partially) +PaymentStatusToValidShort=To validate +ErrorVATIntraNotConfigured=Intracommunautary VAT number not yet defined +ErrorNoPaiementModeConfigured=No default payment mode defined. Go to Invoice module setup to fix this. +ErrorCreateBankAccount=Create a bank account, then go to Setup panel of Invoice module to define payment modes +ErrorBillNotFound=Invoice %s does not exist +ErrorInvoiceAlreadyReplaced=Error, you try to validate an invoice to replace invoice %s. But this one has already been replaced by invoice %s. +ErrorDiscountAlreadyUsed=Error, discount already used +ErrorInvoiceAvoirMustBeNegative=Error, correct invoice must have a negative amount +ErrorInvoiceOfThisTypeMustBePositive=Error, this type of invoice must have a positive amount +ErrorCantCancelIfReplacementInvoiceNotValidated=Error, can't cancel an invoice that has been replaced by another invoice that is still in draft status +BillFrom=From +BillTo=To +ActionsOnBill=Actions on invoice +NewBill=New invoice +LastBills=Last %s invoices +LastCustomersBills=Last %s customers invoices +LastSuppliersBills=Last %s suppliers invoices +AllBills=All invoices +OtherBills=Other invoices +DraftBills=Draft invoices +CustomersDraftInvoices=Customers draft invoices +SuppliersDraftInvoices=Suppliers draft invoices +Unpaid=Unpaid +ConfirmDeleteBill=Are you sure you want to delete this invoice ? +ConfirmValidateBill=Are you sure you want to validate this invoice with reference %s ? +ConfirmUnvalidateBill=Are you sure you want to change invoice %s to draft status ? +ConfirmClassifyPaidBill=Are you sure you want to change invoice %s to status paid ? +ConfirmCancelBill=Are you sure you want to cancel invoice %s ? +ConfirmCancelBillQuestion=Why do you want to classify this invoice 'abandoned' ? +ConfirmClassifyPaidPartially=Are you sure you want to change invoice %s to status paid ? +ConfirmClassifyPaidPartiallyQuestion=This invoice has not been paid completely. What are reasons for you to close this invoice ? +ConfirmClassifyPaidPartiallyReasonAvoir=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I regularise the VAT with a credit note. +ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I accept to lose the VAT on this discount. +ConfirmClassifyPaidPartiallyReasonDiscountVat=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I recover the VAT on this discount without a credit note. +ConfirmClassifyPaidPartiallyReasonBadCustomer=Bad customer +ConfirmClassifyPaidPartiallyReasonProductReturned=Products partially returned +ConfirmClassifyPaidPartiallyReasonOther=Amount abandoned for other reason +ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=This choice is possible if your invoice have been provided with suitable comment. (Example «Only the tax corresponding to the price that have been actually paid gives rights to deduction») +ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=In some countries, this choice might be possible only if your invoice contains correct note. +ConfirmClassifyPaidPartiallyReasonAvoirDesc=Use this choice if all other does not suit +ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=A bad customer is a customer that refuse to pay his debt. +ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=This choice is used when payment is not complete because some of products were returned +ConfirmClassifyPaidPartiallyReasonOtherDesc=Use this choice if all other does not suit, 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=Other +ConfirmClassifyAbandonReasonOtherDesc=This choice will be used in all other cases. For example because you plan to create a replacing invoice. +ConfirmCustomerPayment=Do you confirm this payment input for %s %s ? +ConfirmSupplierPayment=Do you confirm this payment input for %s %s ? +ConfirmValidatePayment=Are you sure you want to validate this payment ? No change can be made once payment is validated. +ValidateBill=Validate invoice +UnvalidateBill=Unvalidate invoice +NumberOfBills=Nb of invoices +NumberOfBillsByMonth=Nb of invoices by month +AmountOfBills=Amount of invoices +AmountOfBillsByMonthHT=Amount of invoices by month (net of tax) +ShowSocialContribution=Show social contribution +ShowBill=Show invoice +ShowInvoice=Show invoice +ShowInvoiceReplace=Show replacing invoice +ShowInvoiceAvoir=Show credit note +ShowInvoiceDeposit=Show deposit invoice +ShowPayment=Show payment +File=File +AlreadyPaid=Already paid +AlreadyPaidBack=Already paid back +AlreadyPaidNoCreditNotesNoDeposits=Already paid (without credit notes and deposits) +Abandoned=Abandoned +RemainderToPay=Remaining unpaid +RemainderToTake=Remaining amount to take +RemainderToPayBack=Remaining amount to pay back +Rest=Pending +AmountExpected=Amount claimed +ExcessReceived=Excess received +EscompteOffered=Discount offered (payment before term) +SendBillRef=Submission of invoice %s +SendReminderBillRef=Submission of invoice %s (reminder) +StandingOrders=Standing orders +StandingOrder=Standing order +NoDraftBills=No draft invoices +NoOtherDraftBills=No other draft invoices +NoDraftInvoices=No draft invoices +RefBill=Invoice ref +ToBill=To bill +RemainderToBill=Remainder to bill +SendBillByMail=Send invoice by email +SendReminderBillByMail=Send reminder by email +RelatedCommercialProposals=Related commercial proposals +MenuToValid=To valid +DateMaxPayment=Payment due before +DateEcheance=Due date limit +DateInvoice=Invoice date +NoInvoice=No invoice +ClassifyBill=Classify invoice +SupplierBillsToPay=Suppliers invoices to pay +CustomerBillsUnpaid=Unpaid customers invoices +DispenseMontantLettres=The written invoices through mecanographic procedures are dispensed by the order in letters +NonPercuRecuperable=Non-recoverable +SetConditions=Set payment terms +SetMode=Set payment mode +Billed=Billed +RepeatableInvoice=Template invoice +RepeatableInvoices=Template invoices +Repeatable=Template +Repeatables=Templates +ChangeIntoRepeatableInvoice=Convert into template invoice +CreateRepeatableInvoice=Create template invoice +CreateFromRepeatableInvoice=Create from template invoice +CustomersInvoicesAndInvoiceLines=Customer invoices and invoice's lines +CustomersInvoicesAndPayments=Customer invoices and payments +ExportDataset_invoice_1=Customer invoices list and invoice's lines +ExportDataset_invoice_2=Customer invoices and payments +ProformaBill=Proforma Bill: +Reduction=Reduction +ReductionShort=Reduc. +Reductions=Reductions +ReductionsShort=Reduc. +Discount=Discount +Discounts=Discounts +AddDiscount=Create discount +AddRelativeDiscount=Create relative discount +EditRelativeDiscount=Edit relative discount +AddGlobalDiscount=Create absolute discount +EditGlobalDiscounts=Edit absolute discounts +AddCreditNote=Create credit note +ShowDiscount=Show discount +ShowReduc=Show the deduction +RelativeDiscount=Relative discount +GlobalDiscount=Global discount +CreditNote=Credit note +CreditNotes=Credit notes +Deposit=Deposit +Deposits=Deposits +DiscountFromCreditNote=Discount from credit note %s +DiscountFromDeposit=Payments from deposit invoice %s +AbsoluteDiscountUse=This kind of credit can be used on invoice before its validation +CreditNoteDepositUse=Invoice must be validated to use this king of credits +NewGlobalDiscount=New absolute discount +NewRelativeDiscount=New relative discount +NoteReason=Note/Reason +ReasonDiscount=Reason +DiscountOfferedBy=Granted by +DiscountStillRemaining=Discounts still remaining +DiscountAlreadyCounted=Discounts already counted +BillAddress=Bill address +HelpEscompte=This discount is a discount granted to customer because its payment was made before term. +HelpAbandonBadCustomer=This amount has been abandoned (customer said to be a bad customer) and is considered as an exceptional loose. +HelpAbandonOther=This amount has been abandoned since it was an error (wrong customer or invoice replaced by an other for example) +IdSocialContribution=Social contribution id +PaymentId=Payment id +InvoiceId=Invoice id +InvoiceRef=Invoice ref. +InvoiceDateCreation=Invoice creation date +InvoiceStatus=Invoice status +InvoiceNote=Invoice note +InvoicePaid=Invoice paid +PaymentNumber=Payment number +RemoveDiscount=Remove discount +WatermarkOnDraftBill=Watermark on draft invoices (nothing if empty) +InvoiceNotChecked=No invoice selected +CloneInvoice=Clone invoice +ConfirmCloneInvoice=Are you sure you want to clone this invoice %s ? +DisabledBecauseReplacedInvoice=Action disabled because invoice has been replaced +DescTaxAndDividendsArea=This area presents a summary of all payments made for special expenses. Only records with payment during the fixed year are included here. +NbOfPayments=Nb of payments +SplitDiscount=Split discount in two +ConfirmSplitDiscount=Are you sure you want to split this discount of %s %s into 2 lower discounts ? +TypeAmountOfEachNewDiscount=Input amount for each of two parts : +TotalOfTwoDiscountMustEqualsOriginal=Total of two new discount must be equal to original discount amount. +ConfirmRemoveDiscount=Are you sure you want to remove this discount ? +RelatedBill=Related invoice +RelatedBills=Related invoices +LatestRelatedBill=Latest related invoice +WarningBillExist=Warning, one or more invoice already exist + +# PaymentConditions +PaymentConditionShortRECEP=Immediate +PaymentConditionRECEP=Immediate +PaymentConditionShort30D=30 days +PaymentCondition30D=30 days +PaymentConditionShort30DENDMONTH=30 days end of month +PaymentCondition30DENDMONTH=30 days end of month +PaymentConditionShort60D=60 days +PaymentCondition60D=60 days +PaymentConditionShort60DENDMONTH=60 days end of month +PaymentCondition60DENDMONTH=60 days end of month +PaymentConditionShortPT_DELIVERY=Delivery +PaymentConditionPT_DELIVERY=On delivery +PaymentConditionShortPT_ORDER=On order +PaymentConditionPT_ORDER=On order +PaymentConditionShortPT_5050=50-50 +PaymentConditionPT_5050=50%% in advance, 50%% on delivery +FixAmount=Fix amount +VarAmount=Variable amount (%% tot.) +# PaymentType +PaymentTypeVIR=Bank deposit +PaymentTypeShortVIR=Bank deposit +PaymentTypePRE=Bank's order +PaymentTypeShortPRE=Bank's order +PaymentTypeLIQ=Cash +PaymentTypeShortLIQ=Cash +PaymentTypeCB=Credit card +PaymentTypeShortCB=Credit card +PaymentTypeCHQ=Check +PaymentTypeShortCHQ=Check +PaymentTypeTIP=TIP +PaymentTypeShortTIP=TIP +PaymentTypeVAD=On line payment +PaymentTypeShortVAD=On line payment +PaymentTypeTRA=Bill payment +PaymentTypeShortTRA=Bill +BankDetails=Bank details +BankCode=Bank code +DeskCode=Desk code +BankAccountNumber=Account number +BankAccountNumberKey=Key +Residence=Domiciliation +IBANNumber=IBAN number +IBAN=IBAN +BIC=BIC/SWIFT +BICNumber=BIC/SWIFT number +ExtraInfos=Extra infos +RegulatedOn=Regulated on +ChequeNumber=Check N° +ChequeOrTransferNumber=Check/Transfer N° +ChequeMaker=Check transmitter +ChequeBank=Bank of Check +CheckBank=Check +NetToBePaid=Net to be paid +PhoneNumber=Tel +FullPhoneNumber=Telephone +TeleFax=Fax +PrettyLittleSentence=Accept the amount of payments due by checks issued in my name as a Member of an accounting association approved by the Fiscal Administration. +IntracommunityVATNumber=Intracommunity number of VAT +PaymentByChequeOrderedTo=Check payment (including tax) are payable to %s send to +PaymentByChequeOrderedToShort=Check payment (including tax) are payable to +SendTo=sent to +PaymentByTransferOnThisBankAccount=Payment by transfer on the following bank account +VATIsNotUsedForInvoice=* Non applicable VAT art-293B of CGI +LawApplicationPart1=By application of the law 80.335 of 12/05/80 +LawApplicationPart2=the goods remain the property of +LawApplicationPart3=the seller until the complete cashing of +LawApplicationPart4=their price. +LimitedLiabilityCompanyCapital=SARL with Capital of +UseLine=Apply +UseDiscount=Use discount +UseCredit=Use credit +UseCreditNoteInInvoicePayment=Reduce amount to pay with this credit +MenuChequeDeposits=Checks deposits +MenuCheques=Checks +MenuChequesReceipts=Checks receipts +NewChequeDeposit=New deposit +ChequesReceipts=Checks receipts +ChequesArea=Checks deposits area +ChequeDeposits=Checks deposits +Cheques=Checks +CreditNoteConvertedIntoDiscount=This credit note or deposit invoice has been converted into %s +UsBillingContactAsIncoiveRecipientIfExist=Use customer billing contact address instead of third party address as recipient for invoices +ShowUnpaidAll=Show all unpaid invoices +ShowUnpaidLateOnly=Show late unpaid invoices only +PaymentInvoiceRef=Payment invoice %s +ValidateInvoice=Validate invoice +Cash=Cash +Reported=Delayed +DisabledBecausePayments=Not possible since there are some payments +CantRemovePaymentWithOneInvoicePaid=Can't remove payment since there is at least one invoice classified paid +ExpectedToPay=Expected payment +PayedByThisPayment=Paid by this payment +ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid. +ClosePaidCreditNotesAutomatically=Classify "Paid" all credit notes entirely paid back. +AllCompletelyPayedInvoiceWillBeClosed=All invoice with no remain to pay will be automatically closed to status "Paid". +ToMakePayment=Pay +ToMakePaymentBack=Pay back +ListOfYourUnpaidInvoices=List of unpaid invoices +NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. +RevenueStamp=Revenue stamp +YouMustCreateInvoiceFromThird=This option is only available when creating invoice from tab "customer" of thirdparty +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (recommended Template) +TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 +MarsNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for credit notes and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 +TerreNumRefModelError=A bill starting with $syymm already exists and is not compatible with this model of sequence. Remove it or rename it to activate this module. +##### Types de contacts ##### +TypeContact_facture_internal_SALESREPFOLL=Representative following-up customer invoice +TypeContact_facture_external_BILLING=Customer invoice contact +TypeContact_facture_external_SHIPPING=Customer shipping contact +TypeContact_facture_external_SERVICE=Customer service contact +TypeContact_invoice_supplier_internal_SALESREPFOLL=Representative following-up supplier invoice +TypeContact_invoice_supplier_external_BILLING=Supplier invoice contact +TypeContact_invoice_supplier_external_SHIPPING=Supplier shipping contact +TypeContact_invoice_supplier_external_SERVICE=Supplier service contact +# Situation invoices +InvoiceFirstSituationAsk=First situation invoice +InvoiceFirstSituationDesc=The situation invoices are tied to situations related to a progression, for example the progression of a construction. Each situation is tied to an invoice. +InvoiceSituation=Situation invoice +InvoiceSituationAsk=Invoice following the situation +InvoiceSituationDesc=Create a new situation following an already existing one +SituationAmount=Situation invoice amount(net) +SituationDeduction=Situation subtraction +Progress=Progress +ModifyAllLines=Modify all lines +CreateNextSituationInvoice=Create next situation +NotLastInCycle=This invoice in not the last in cycle and must not be modified. +DisabledBecauseNotLastInCycle=The next situation already exists. +DisabledBecauseFinal=This situation is final. +CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation. +NoSituations=No opened situations +InvoiceSituationLast=Final and general invoice diff --git a/htdocs/langs/lo_LA/bookmarks.lang b/htdocs/langs/lo_LA/bookmarks.lang new file mode 100644 index 00000000000..7acb946bb62 --- /dev/null +++ b/htdocs/langs/lo_LA/bookmarks.lang @@ -0,0 +1,19 @@ +# Dolibarr language file - Source file is en_US - marque pages +AddThisPageToBookmarks=Add this page to bookmarks +Bookmark=Bookmark +Bookmarks=Bookmarks +NewBookmark=New bookmark +ShowBookmark=Show bookmark +OpenANewWindow=Open a new window +ReplaceWindow=Replace current window +BookmarkTargetNewWindowShort=New window +BookmarkTargetReplaceWindowShort=Current window +BookmarkTitle=Bookmark title +UrlOrLink=URL +BehaviourOnClick=Behaviour when a URL is clicked +CreateBookmark=Create bookmark +SetHereATitleForLink=Set a title for the bookmark +UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external http URL or a relative Dolibarr URL +ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choose if a page opened by link must appear on current or new window +BookmarksManagement=Bookmarks management +ListOfBookmarks=List of bookmarks diff --git a/htdocs/langs/lo_LA/boxes.lang b/htdocs/langs/lo_LA/boxes.lang new file mode 100644 index 00000000000..bf118b9b88e --- /dev/null +++ b/htdocs/langs/lo_LA/boxes.lang @@ -0,0 +1,96 @@ +# Dolibarr language file - Source file is en_US - boxes +BoxLastRssInfos=Rss information +BoxLastProducts=Last %s products/services +BoxProductsAlertStock=Products in stock alert +BoxLastProductsInContract=Last %s contracted products/services +BoxLastSupplierBills=Last supplier's invoices +BoxLastCustomerBills=Last customer's invoices +BoxOldestUnpaidCustomerBills=Oldest unpaid customer's invoices +BoxOldestUnpaidSupplierBills=Oldest unpaid supplier's invoices +BoxLastProposals=Last commercial proposals +BoxLastProspects=Last modified prospects +BoxLastCustomers=Last modified customers +BoxLastSuppliers=Last modified suppliers +BoxLastCustomerOrders=Last customer orders +BoxLastValidatedCustomerOrders=Last validated customer orders +BoxLastBooks=Last books +BoxLastActions=Last actions +BoxLastContracts=Last contracts +BoxLastContacts=Last contacts/addresses +BoxLastMembers=Last members +BoxFicheInter=Last interventions +BoxCurrentAccounts=Opened accounts balance +BoxSalesTurnover=Sales turnover +BoxTotalUnpaidCustomerBills=Total unpaid customer's invoices +BoxTotalUnpaidSuppliersBills=Total unpaid supplier's invoices +BoxTitleLastBooks=Last %s recorded books +BoxTitleNbOfCustomers=Number of clients +BoxTitleLastRssInfos=Last %s news from %s +BoxTitleLastProducts=Last %s modified products/services +BoxTitleProductsAlertStock=Products in stock alert +BoxTitleLastCustomerOrders=Last %s customer orders +BoxTitleLastModifiedCustomerOrders=Last %s modified customer orders +BoxTitleLastSuppliers=Last %s recorded suppliers +BoxTitleLastCustomers=Last %s recorded customers +BoxTitleLastModifiedSuppliers=Last %s modified suppliers +BoxTitleLastModifiedCustomers=Last %s modified customers +BoxTitleLastCustomersOrProspects=Last %s customers or prospects +BoxTitleLastPropals=Last %s proposals +BoxTitleLastModifiedPropals=Last %s modified proposals +BoxTitleLastCustomerBills=Last %s customer's invoices +BoxTitleLastModifiedCustomerBills=Last %s modified customer invoices +BoxTitleLastSupplierBills=Last %s supplier's invoices +BoxTitleLastModifiedSupplierBills=Last %s modified supplier invoices +BoxTitleLastModifiedProspects=Last %s modified prospects +BoxTitleLastProductsInContract=Last %s products/services in a contract +BoxTitleLastModifiedMembers=Last %s members +BoxTitleLastFicheInter=Last %s modified intervention +BoxTitleOldestUnpaidCustomerBills=Oldest %s unpaid customer invoices +BoxTitleOldestUnpaidSupplierBills=Oldest %s unpaid supplier invoices +BoxTitleCurrentAccounts=Opened account's balances +BoxTitleSalesTurnover=Sales turnover +BoxTitleTotalUnpaidCustomerBills=Unpaid customer invoices +BoxTitleTotalUnpaidSuppliersBills=Unpaid supplier invoices +BoxTitleLastModifiedContacts=Last %s modified contacts/addresses +BoxMyLastBookmarks=My last %s bookmarks +BoxOldestExpiredServices=Oldest active expired services +BoxLastExpiredServices=Last %s oldest contacts with active expired services +BoxTitleLastActionsToDo=Last %s actions to do +BoxTitleLastContracts=Last %s contracts +BoxTitleLastModifiedDonations=Last %s modified donations +BoxTitleLastModifiedExpenses=Last %s modified expenses +BoxGlobalActivity=Global activity (invoices, proposals, orders) +FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Last successfull refresh date: %s +LastRefreshDate=Last refresh date +NoRecordedBookmarks=No bookmarks defined. +ClickToAdd=Click here to add. +NoRecordedCustomers=No recorded customers +NoRecordedContacts=No recorded contacts +NoActionsToDo=No actions to do +NoRecordedOrders=No recorded customer's orders +NoRecordedProposals=No recorded proposals +NoRecordedInvoices=No recorded customer's invoices +NoUnpaidCustomerBills=No unpaid customer's invoices +NoRecordedSupplierInvoices=No recorded supplier's invoices +NoUnpaidSupplierBills=No unpaid supplier's invoices +NoModifiedSupplierBills=No recorded supplier's invoices +NoRecordedProducts=No recorded products/services +NoRecordedProspects=No recorded prospects +NoContractedProducts=No products/services contracted +NoRecordedContracts=No recorded contracts +NoRecordedInterventions=No recorded interventions +BoxLatestSupplierOrders=Latest supplier orders +BoxTitleLatestSupplierOrders=Last %s supplier orders +BoxTitleLatestModifiedSupplierOrders=Last %s modified supplier orders +NoSupplierOrder=No recorded supplier order +BoxCustomersInvoicesPerMonth=Customer invoices per month +BoxSuppliersInvoicesPerMonth=Supplier invoices per month +BoxCustomersOrdersPerMonth=Customer orders per month +BoxSuppliersOrdersPerMonth=Supplier orders per month +BoxProposalsPerMonth=Proposals per month +NoTooLowStockProducts=No product under the low stock limit +BoxProductDistribution=Products/Services distribution +BoxProductDistributionFor=Distribution of %s for %s +ForCustomersInvoices=Customers invoices +ForCustomersOrders=Customers orders +ForProposals=Proposals diff --git a/htdocs/langs/lo_LA/cashdesk.lang b/htdocs/langs/lo_LA/cashdesk.lang new file mode 100644 index 00000000000..d3dcfb68e64 --- /dev/null +++ b/htdocs/langs/lo_LA/cashdesk.lang @@ -0,0 +1,40 @@ +# Language file - Source file is en_US - cashdesk +CashDeskMenu=Point of sale +CashDesk=Point of sale +CashDesks=Point of sales +CashDeskBank=Bank account +CashDeskBankCash=Bank account (cash) +CashDeskBankCB=Bank account (card) +CashDeskBankCheque=Bank account (cheque) +CashDeskWarehouse=Warehouse +CashdeskShowServices=Selling services +CashDeskProducts=Products +CashDeskStock=Stock +CashDeskOn=on +CashDeskThirdParty=Third party +CashdeskDashboard=Point of sale access +ShoppingCart=Shopping cart +NewSell=New sell +BackOffice=Back office +AddThisArticle=Add this article +RestartSelling=Go back on sell +SellFinished=Sell finished +PrintTicket=Print ticket +NoProductFound=No article found +ProductFound=product found +ProductsFound=products found +NoArticle=No article +Identification=Identification +Article=Article +Difference=Difference +TotalTicket=Total ticket +NoVAT=No VAT for this sale +Change=Excess received +CalTip=Click to view the calendar +CashDeskSetupStock=You ask to decrease stock on invoice creation but warehouse for this is was not defined
Change stock module setup, or choose a warehouse +BankToPay=Charge Account +ShowCompany=Show company +ShowStock=Show warehouse +DeleteArticle=Click to remove this article +FilterRefOrLabelOrBC=Search (Ref/Label) +UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock. diff --git a/htdocs/langs/lo_LA/categories.lang b/htdocs/langs/lo_LA/categories.lang new file mode 100644 index 00000000000..22914931db1 --- /dev/null +++ b/htdocs/langs/lo_LA/categories.lang @@ -0,0 +1,112 @@ +# Dolibarr language file - Source file is en_US - categories +Category=Category +Categories=Categories +Rubrique=Category +Rubriques=Categories +categories=categories +TheCategorie=The category +NoCategoryYet=No category of this type created +In=In +AddIn=Add in +modify=modify +Classify=Classify +CategoriesArea=Categories area +ProductsCategoriesArea=Products/Services categories area +SuppliersCategoriesArea=Suppliers categories area +CustomersCategoriesArea=Customers categories area +ThirdPartyCategoriesArea=Third parties categories area +MembersCategoriesArea=Members categories area +ContactsCategoriesArea=Contacts categories area +MainCats=Main categories +SubCats=Subcategories +CatStatistics=Statistics +CatList=List of categories +AllCats=All categories +ViewCat=View category +NewCat=Add category +NewCategory=New category +ModifCat=Modify category +CatCreated=Category created +CreateCat=Create category +CreateThisCat=Create this category +ValidateFields=Validate the fields +NoSubCat=No subcategory. +SubCatOf=Subcategory +FoundCats=Found categories +FoundCatsForName=Categories found for the name : +FoundSubCatsIn=Subcategories found in the category +ErrSameCatSelected=You selected the same category several times +ErrForgotCat=You forgot to choose the category +ErrForgotField=You forgot to inform the fields +ErrCatAlreadyExists=This name is already used +AddProductToCat=Add this product to a category? +ImpossibleAddCat=Impossible to add the category +ImpossibleAssociateCategory=Impossible to associate the category to +WasAddedSuccessfully=%s was added successfully. +ObjectAlreadyLinkedToCategory=Element is already linked to this category. +CategorySuccessfullyCreated=This category %s has been added with success. +ProductIsInCategories=Product/service owns to following categories +SupplierIsInCategories=Third party owns to following suppliers categories +CompanyIsInCustomersCategories=This third party owns to following customers/prospects categories +CompanyIsInSuppliersCategories=This third party owns to following suppliers categories +MemberIsInCategories=This member owns to following members categories +ContactIsInCategories=This contact owns to following contacts categories +ProductHasNoCategory=This product/service is not in any categories +SupplierHasNoCategory=This supplier is not in any categories +CompanyHasNoCategory=This company is not in any categories +MemberHasNoCategory=This member is not in any categories +ContactHasNoCategory=This contact is not in any categories +ClassifyInCategory=Classify in category +NoneCategory=None +NotCategorized=Without category +CategoryExistsAtSameLevel=This category already exists with this ref +ReturnInProduct=Back to product/service card +ReturnInSupplier=Back to supplier card +ReturnInCompany=Back to customer/prospect card +ContentsVisibleByAll=The contents will be visible by all +ContentsVisibleByAllShort=Contents visible by all +ContentsNotVisibleByAllShort=Contents not visible by all +CategoriesTree=Categories tree +DeleteCategory=Delete category +ConfirmDeleteCategory=Are you sure you want to delete this category ? +RemoveFromCategory=Remove link with categorie +RemoveFromCategoryConfirm=Are you sure you want to remove link between the transaction and the category ? +NoCategoriesDefined=No category defined +SuppliersCategoryShort=Suppliers category +CustomersCategoryShort=Customers category +ProductsCategoryShort=Products category +MembersCategoryShort=Members category +SuppliersCategoriesShort=Suppliers categories +CustomersCategoriesShort=Customers categories +CustomersProspectsCategoriesShort=Custo./Prosp. categories +ProductsCategoriesShort=Products categories +MembersCategoriesShort=Members categories +ContactCategoriesShort=Contacts categories +ThisCategoryHasNoProduct=This category does not contain any product. +ThisCategoryHasNoSupplier=This category does not contain any supplier. +ThisCategoryHasNoCustomer=This category does not contain any customer. +ThisCategoryHasNoMember=This category does not contain any member. +ThisCategoryHasNoContact=This category does not contain any contact. +AssignedToCustomer=Assigned to a customer +AssignedToTheCustomer=Assigned to the customer +InternalCategory=Internal category +CategoryContents=Category contents +CategId=Category id +CatSupList=List of supplier categories +CatCusList=List of customer/prospect categories +CatProdList=List of products categories +CatMemberList=List of members categories +CatContactList=List of contact categories and contact +CatSupLinks=Links between suppliers and categories +CatCusLinks=Links between customers/prospects and categories +CatProdLinks=Links between products/services and categories +CatMemberLinks=Links between members and categories +DeleteFromCat=Remove from category +DeletePicture=Picture delete +ConfirmDeletePicture=Confirm picture deletion? +ExtraFieldsCategories=Complementary attributes +CategoriesSetup=Categories setup +CategorieRecursiv=Link with parent category automatically +CategorieRecursivHelp=If activated, product will also linked to parent category when adding into a subcategory +AddProductServiceIntoCategory=Add the following product/service +ShowCategory=Show category diff --git a/htdocs/langs/lo_LA/commercial.lang b/htdocs/langs/lo_LA/commercial.lang new file mode 100644 index 00000000000..7acdc7bd7e6 --- /dev/null +++ b/htdocs/langs/lo_LA/commercial.lang @@ -0,0 +1,96 @@ +# Dolibarr language file - Source file is en_US - commercial +Commercial=Commercial +CommercialArea=Commercial area +CommercialCard=Commercial card +CustomerArea=Customers area +Customer=Customer +Customers=Customers +Prospect=Prospect +Prospects=Prospects +DeleteAction=Delete an event/task +NewAction=New event/task +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event +Rendez-Vous=Rendezvous +ConfirmDeleteAction=Are you sure you want to delete this event/task ? +CardAction=Event card +PercentDone=Percentage complete +ActionOnCompany=Task about company +ActionOnContact=Task about contact +TaskRDV=Meetings +TaskRDVWith=Meeting with %s +ShowTask=Show task +ShowAction=Show event +ActionsReport=Events report +ThirdPartiesOfSaleRepresentative=Thirdparties with sales representative +SalesRepresentative=Sales representative +SalesRepresentatives=Sales representatives +SalesRepresentativeFollowUp=Sales representative (follow-up) +SalesRepresentativeSignature=Sales representative (signature) +CommercialInterlocutor=Commercial interlocutor +ErrorWrongCode=Wrong code +NoSalesRepresentativeAffected=No particular sales representative assigned +ShowCustomer=Show customer +ShowProspect=Show prospect +ListOfProspects=List of prospects +ListOfCustomers=List of customers +LastDoneTasks=Last %s completed tasks +LastRecordedTasks=Last recorded tasks +LastActionsToDo=Last %s oldest actions not completed +DoneAndToDoActionsFor=Completed and To do events for %s +DoneAndToDoActions=Completed and To do events +DoneActions=Completed events +DoneActionsFor=Completed events for %s +ToDoActions=Incomplete events +ToDoActionsFor=Incomplete events for %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s +StatusNotApplicable=Not applicable +StatusActionToDo=To do +StatusActionDone=Complete +MyActionsAsked=Events I have recorded +MyActionsToDo=Events I have to do +MyActionsDone=Events assigned to me +StatusActionInProcess=In process +TasksHistoryForThisContact=Events for this contact +LastProspectDoNotContact=Do not contact +LastProspectNeverContacted=Never contacted +LastProspectToContact=To contact +LastProspectContactInProcess=Contact in process +LastProspectContactDone=Contact done +DateActionPlanned=Date event planned for +DateActionDone=Date event done +ActionAskedBy=Event reported by +ActionAffectedTo=Event assigned to +ActionDoneBy=Event done by +ActionUserAsk=Reported by +ErrorStatusCantBeZeroIfStarted=If field 'Date done' is filled, action is started (or finished), so field 'Status' can't be 0%%. +ActionAC_TEL=Phone call +ActionAC_FAX=Send fax +ActionAC_PROP=Send proposal by mail +ActionAC_EMAIL=Send Email +ActionAC_RDV=Meetings +ActionAC_INT=Intervention on site +ActionAC_FAC=Send customer invoice by mail +ActionAC_REL=Send customer invoice by mail (reminder) +ActionAC_CLO=Close +ActionAC_EMAILING=Send mass email +ActionAC_COM=Send customer order by mail +ActionAC_SHIP=Send shipping by mail +ActionAC_SUP_ORD=Send supplier order by mail +ActionAC_SUP_INV=Send supplier invoice by mail +ActionAC_OTH=Other +ActionAC_OTH_AUTO=Other (automatically inserted events) +ActionAC_MANUAL=Manually inserted events +ActionAC_AUTO=Automatically inserted events +Stats=Sales statistics +CAOrder=Sales volume (validated orders) +FromTo=from %s to %s +MargeOrder=Margins (validated orders) +RecapAnnee=Summary of the year +NoData=There is no data +StatusProsp=Prospect status +DraftPropals=Draft commercial proposals +SearchPropal=Search a commercial proposal +CommercialDashboard=Commercial summary diff --git a/htdocs/langs/lo_LA/companies.lang b/htdocs/langs/lo_LA/companies.lang new file mode 100644 index 00000000000..8abf1fd1c5a --- /dev/null +++ b/htdocs/langs/lo_LA/companies.lang @@ -0,0 +1,414 @@ +# Dolibarr language file - Source file is en_US - companies +ErrorCompanyNameAlreadyExists=Company name %s already exists. Choose another one. +ErrorPrefixAlreadyExists=Prefix %s already exists. Choose another one. +ErrorSetACountryFirst=Set the country first +SelectThirdParty=Select a third party +DeleteThirdParty=Delete a third party +ConfirmDeleteCompany=Are you sure you want to delete this company and all inherited information ? +DeleteContact=Delete a contact/address +ConfirmDeleteContact=Are you sure you want to delete this contact and all inherited information ? +MenuNewThirdParty=New third party +MenuNewCompany=New company +MenuNewCustomer=New customer +MenuNewProspect=New prospect +MenuNewSupplier=New supplier +MenuNewPrivateIndividual=New private individual +MenuSocGroup=Groups +NewCompany=New company (prospect, customer, supplier) +NewThirdParty=New third party (prospect, customer, supplier) +NewSocGroup=New company group +NewPrivateIndividual=New private individual (prospect, customer, supplier) +CreateDolibarrThirdPartySupplier=Create a third party (supplier) +ProspectionArea=Prospection area +SocGroup=Group of companies +IdThirdParty=Id third party +IdCompany=Company Id +IdContact=Contact Id +Contacts=Contacts/Addresses +ThirdPartyContacts=Third party contacts +ThirdPartyContact=Third party contact/address +StatusContactValidated=Status of contact/address +Company=Company +CompanyName=Company name +Companies=Companies +CountryIsInEEC=Country is inside European Economic Community +ThirdPartyName=Third party name +ThirdParty=Third party +ThirdParties=Third parties +ThirdPartyAll=Third parties (all) +ThirdPartyProspects=Prospects +ThirdPartyProspectsStats=Prospects +ThirdPartyCustomers=Customers +ThirdPartyCustomersStats=Customers +ThirdPartyCustomersWithIdProf12=Customers with %s or %s +ThirdPartySuppliers=Suppliers +ThirdPartyType=Third party type +Company/Fundation=Company/Foundation +Individual=Private individual +ToCreateContactWithSameName=Will create automatically a physical contact with same informations +ParentCompany=Parent company +Subsidiary=Subsidiary +Subsidiaries=Subsidiaries +NoSubsidiary=No subsidiary +ReportByCustomers=Report by customers +ReportByQuarter=Report by rate +CivilityCode=Civility code +RegisteredOffice=Registered office +Name=Name +Lastname=Last name +Firstname=First name +PostOrFunction=Post/Function +UserTitle=Title +Surname=Surname/Pseudo +Address=Address +State=State/Province +Region=Region +Country=Country +CountryCode=Country code +CountryId=Country id +Phone=Phone +Skype=Skype +Call=Call +Chat=Chat +PhonePro=Prof. phone +PhonePerso=Pers. phone +PhoneMobile=Mobile +No_Email=Don't send mass e-mailings +Fax=Fax +Zip=Zip Code +Town=City +Web=Web +Poste= Position +DefaultLang=Language by default +VATIsUsed=VAT is used +VATIsNotUsed=VAT is not used +CopyAddressFromSoc=Fill address with thirdparty address +NoEmailDefined=There is no email defined +##### Local Taxes ##### +LocalTax1IsUsedES= RE is used +LocalTax1IsNotUsedES= RE is not used +LocalTax2IsUsedES= IRPF is used +LocalTax2IsNotUsedES= IRPF is not used +LocalTax1ES=RE +LocalTax2ES=IRPF +TypeLocaltax1ES=RE Type +TypeLocaltax2ES=IRPF Type +TypeES=Type +ThirdPartyEMail=%s +WrongCustomerCode=Customer code invalid +WrongSupplierCode=Supplier code invalid +CustomerCodeModel=Customer code model +SupplierCodeModel=Supplier code model +Gencod=Bar code +##### Professional ID ##### +ProfId1Short=Prof. id 1 +ProfId2Short=Prof. id 2 +ProfId3Short=Prof. id 3 +ProfId4Short=Prof. id 4 +ProfId5Short=Prof. id 5 +ProfId6Short=Prof. id 5 +ProfId1=Professional ID 1 +ProfId2=Professional ID 2 +ProfId3=Professional ID 3 +ProfId4=Professional ID 4 +ProfId5=Professional ID 5 +ProfId6=Professional ID 6 +ProfId1AR=Prof Id 1 (CUIT/CUIL) +ProfId2AR=Prof Id 2 (Revenu brutes) +ProfId3AR=- +ProfId4AR=- +ProfId5AR=- +ProfId6AR=- +ProfId1AU=Prof Id 1 (ABN) +ProfId2AU=- +ProfId3AU=- +ProfId4AU=- +ProfId5AU=- +ProfId6AU=- +ProfId1BE=Prof Id 1 (Professional number) +ProfId2BE=- +ProfId3BE=- +ProfId4BE=- +ProfId5BE=- +ProfId6BE=- +ProfId1BR=- +ProfId2BR=IE (Inscricao Estadual) +ProfId3BR=IM (Inscricao Municipal) +ProfId4BR=CPF +#ProfId5BR=CNAE +#ProfId6BR=INSS +ProfId1CH=- +ProfId2CH=- +ProfId3CH=Prof Id 1 (Federal number) +ProfId4CH=Prof Id 2 (Commercial Record number) +ProfId5CH=- +ProfId6CH=- +ProfId1CL=Prof Id 1 (R.U.T.) +ProfId2CL=- +ProfId3CL=- +ProfId4CL=- +ProfId5CL=- +ProfId6CL=- +ProfId1CO=Prof Id 1 (R.U.T.) +ProfId2CO=- +ProfId3CO=- +ProfId4CO=- +ProfId5CO=- +ProfId6CO=- +ProfId1DE=Prof Id 1 (USt.-IdNr) +ProfId2DE=Prof Id 2 (USt.-Nr) +ProfId3DE=Prof Id 3 (Handelsregister-Nr.) +ProfId4DE=- +ProfId5DE=- +ProfId6DE=- +ProfId1ES=Prof Id 1 (CIF/NIF) +ProfId2ES=Prof Id 2 (Social security number) +ProfId3ES=Prof Id 3 (CNAE) +ProfId4ES=Prof Id 4 (Collegiate number) +ProfId5ES=- +ProfId6ES=- +ProfId1FR=Prof Id 1 (SIREN) +ProfId2FR=Prof Id 2 (SIRET) +ProfId3FR=Prof Id 3 (NAF, old APE) +ProfId4FR=Prof Id 4 (RCS/RM) +ProfId5FR=- +ProfId6FR=- +ProfId1GB=Registration Number +ProfId2GB=- +ProfId3GB=SIC +ProfId4GB=- +ProfId5GB=- +ProfId6GB=- +ProfId1HN=Id prof. 1 (RTN) +ProfId2HN=- +ProfId3HN=- +ProfId4HN=- +ProfId5HN=- +ProfId6HN=- +ProfId1IN=Prof Id 1 (TIN) +ProfId2IN=Prof Id 2 (PAN) +ProfId3IN=Prof Id 3 (SRVC TAX) +ProfId4IN=Prof Id 4 +ProfId5IN=Prof Id 5 +ProfId6IN=- +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.) +ProfId5MA=- +ProfId6MA=- +ProfId1MX=Prof Id 1 (R.F.C). +ProfId2MX=Prof Id 2 (R..P. IMSS) +ProfId3MX=Prof Id 3 (Profesional Charter) +ProfId4MX=- +ProfId5MX=- +ProfId6MX=- +ProfId1NL=KVK nummer +ProfId2NL=- +ProfId3NL=- +ProfId4NL=Burgerservicenummer (BSN) +ProfId5NL=- +ProfId6NL=- +ProfId1PT=Prof Id 1 (NIPC) +ProfId2PT=Prof Id 2 (Social security number) +ProfId3PT=Prof Id 3 (Commercial Record number) +ProfId4PT=Prof Id 4 (Conservatory) +ProfId5PT=- +ProfId6PT=- +ProfId1SN=RC +ProfId2SN=NINEA +ProfId3SN=- +ProfId4SN=- +ProfId5SN=- +ProfId6SN=- +ProfId1TN=Prof Id 1 (RC) +ProfId2TN=Prof Id 2 (Fiscal matricule) +ProfId3TN=Prof Id 3 (Douane code) +ProfId4TN=Prof Id 4 (BAN) +ProfId5TN=- +ProfId6TN=- +ProfId1RU=Prof Id 1 (OGRN) +ProfId2RU=Prof Id 2 (INN) +ProfId3RU=Prof Id 3 (KPP) +ProfId4RU=Prof Id 4 (OKPO) +ProfId5RU=- +ProfId6RU=- +VATIntra=VAT number +VATIntraShort=VAT number +VATIntraVeryShort=VAT +VATIntraSyntaxIsValid=Syntax is valid +VATIntraValueIsValid=Value is valid +ProspectCustomer=Prospect / Customer +Prospect=Prospect +CustomerCard=Customer Card +Customer=Customer +CustomerDiscount=Customer Discount +CustomerRelativeDiscount=Relative customer discount +CustomerAbsoluteDiscount=Absolute customer discount +CustomerRelativeDiscountShort=Relative discount +CustomerAbsoluteDiscountShort=Absolute discount +CompanyHasRelativeDiscount=This customer has a default discount of %s%% +CompanyHasNoRelativeDiscount=This customer has no relative discount by default +CompanyHasAbsoluteDiscount=This customer still has discount credits or deposits for %s %s +CompanyHasCreditNote=This customer still has credit notes for %s %s +CompanyHasNoAbsoluteDiscount=This customer has no discount credit available +CustomerAbsoluteDiscountAllUsers=Absolute discounts (granted by all users) +CustomerAbsoluteDiscountMy=Absolute discounts (granted by yourself) +DefaultDiscount=Default discount +AvailableGlobalDiscounts=Absolute discounts available +DiscountNone=None +Supplier=Supplier +CompanyList=Company's list +AddContact=Create contact +AddContactAddress=Create contact/address +EditContact=Edit contact +EditContactAddress=Edit contact/address +Contact=Contact +ContactsAddresses=Contacts/Addresses +NoContactDefinedForThirdParty=No contact defined for this third party +NoContactDefined=No contact defined +DefaultContact=Default contact/address +AddCompany=Create company +AddThirdParty=Create third party +DeleteACompany=Delete a company +PersonalInformations=Personal data +AccountancyCode=Accountancy code +CustomerCode=Customer code +SupplierCode=Supplier code +CustomerAccount=Customer account +SupplierAccount=Supplier account +CustomerCodeDesc=Customer code, unique for all customers +SupplierCodeDesc=Supplier code, unique for all suppliers +RequiredIfCustomer=Required if third party is a customer or prospect +RequiredIfSupplier=Required if third party is a supplier +ValidityControledByModule=Validity controled by module +ThisIsModuleRules=This is rules for this module +LastProspect=Last +ProspectToContact=Prospect to contact +CompanyDeleted=Company "%s" deleted from database. +ListOfContacts=List of contacts/addresses +ListOfContactsAddresses=List of contacts/adresses +ListOfProspectsContacts=List of prospect contacts +ListOfCustomersContacts=List of customer contacts +ListOfSuppliersContacts=List of supplier contacts +ListOfCompanies=List of companies +ListOfThirdParties=List of third parties +ShowCompany=Show company +ShowContact=Show contact +ContactsAllShort=All (No filter) +ContactType=Contact type +ContactForOrders=Order's contact +ContactForProposals=Proposal's contact +ContactForContracts=Contract's contact +ContactForInvoices=Invoice's contact +NoContactForAnyOrder=This contact is not a contact for any order +NoContactForAnyProposal=This contact is not a contact for any commercial proposal +NoContactForAnyContract=This contact is not a contact for any contract +NoContactForAnyInvoice=This contact is not a contact for any invoice +NewContact=New contact +NewContactAddress=New contact/address +LastContacts=Last contacts +MyContacts=My contacts +Phones=Phones +Capital=Capital +CapitalOf=Capital of %s +EditCompany=Edit company +EditDeliveryAddress=Edit delivery address +ThisUserIsNot=This user is not a prospect, customer nor supplier +VATIntraCheck=Check +VATIntraCheckDesc=The link %s allows to ask the european VAT checker service. An external internet access from server is required for this service to work. +VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do +VATIntraCheckableOnEUSite=Check Intracomunnautary VAT on European commision site +VATIntraManualCheck=You can also check manually from european web site %s +ErrorVATCheckMS_UNAVAILABLE=Check not possible. Check service is not provided by the member state (%s). +NorProspectNorCustomer=Nor prospect, nor customer +JuridicalStatus=Juridical status +Staff=Staff +ProspectLevelShort=Potential +ProspectLevel=Prospect potential +ContactPrivate=Private +ContactPublic=Shared +ContactVisibility=Visibility +OthersNotLinkedToThirdParty=Others, not linked to a third party +ProspectStatus=Prospect status +PL_NONE=None +PL_UNKNOWN=Unknown +PL_LOW=Low +PL_MEDIUM=Medium +PL_HIGH=High +TE_UNKNOWN=- +TE_STARTUP=Startup +TE_GROUP=Large company +TE_MEDIUM=Medium company +TE_ADMIN=Governmental +TE_SMALL=Small company +TE_RETAIL=Retailer +TE_WHOLE=Wholetailer +TE_PRIVATE=Private individual +TE_OTHER=Other +StatusProspect-1=Do not contact +StatusProspect0=Never contacted +StatusProspect1=To contact +StatusProspect2=Contact in process +StatusProspect3=Contact done +ChangeDoNotContact=Change status to 'Do not contact' +ChangeNeverContacted=Change status to 'Never contacted' +ChangeToContact=Change status to 'To contact' +ChangeContactInProcess=Change status to 'Contact in process' +ChangeContactDone=Change status to 'Contact done' +ProspectsByStatus=Prospects by status +BillingContact=Billing contact +NbOfAttachedFiles=Number of attached files +AttachANewFile=Attach a new file +NoRIB=No BAN defined +NoParentCompany=None +ExportImport=Import-Export +ExportCardToFormat=Export card to format +ContactNotLinkedToCompany=Contact not linked to any third party +DolibarrLogin=Dolibarr login +NoDolibarrAccess=No Dolibarr access +ExportDataset_company_1=Third parties (Companies/foundations/physical people) and properties +ExportDataset_company_2=Contacts and properties +ImportDataset_company_1=Third parties (Companies/foundations/physical people) and properties +ImportDataset_company_2=Contacts/Addresses (of thirdparties or not) and attributes +ImportDataset_company_3=Bank details +PriceLevel=Price level +DeliveriesAddress=Delivery addresses +DeliveryAddress=Delivery address +DeliveryAddressLabel=Delivery address label +DeleteDeliveryAddress=Delete a delivery address +ConfirmDeleteDeliveryAddress=Are you sure you want to delete this delivery address? +NewDeliveryAddress=New delivery address +AddDeliveryAddress=Create address +AddAddress=Create address +NoOtherDeliveryAddress=No alternative delivery address defined +SupplierCategory=Supplier category +JuridicalStatus200=Independant +DeleteFile=Delete file +ConfirmDeleteFile=Are you sure you want to delete this file? +AllocateCommercial=Assigned to sale representative +SelectCountry=Select a country +SelectCompany=Select a third party +Organization=Organization +AutomaticallyGenerated=Automatically generated +FiscalYearInformation=Information on the fiscal year +FiscalMonthStart=Starting month of the fiscal year +YouMustCreateContactFirst=You must create emails contacts for third party first to be able to add emails notifications. +ListSuppliersShort=List of suppliers +ListProspectsShort=List of prospects +ListCustomersShort=List of customers +ThirdPartiesArea=Third parties and contact area +LastModifiedThirdParties=Last %s modified third parties +UniqueThirdParties=Total of unique third parties +InActivity=Open +ActivityCeased=Closed +ActivityStateFilter=Activity status +ProductsIntoElements=List of products into %s +CurrentOutstandingBill=Current outstanding bill +OutstandingBill=Max. for outstanding bill +OutstandingBillReached=Reached max. for outstanding bill +MonkeyNumRefModelDesc=Return numero with format %syymm-nnnn for customer code and %syymm-nnnn for supplier code where yy is year, mm is month and nnnn is a sequence with no break and no return to 0. +LeopardNumRefModelDesc=The code is free. This code can be modified at any time. +ManagingDirectors=Manager(s) name (CEO, director, president...) +SearchThirdparty=Search thirdparty +SearchContact=Search contact diff --git a/htdocs/langs/lo_LA/compta.lang b/htdocs/langs/lo_LA/compta.lang new file mode 100644 index 00000000000..0d579a06ff1 --- /dev/null +++ b/htdocs/langs/lo_LA/compta.lang @@ -0,0 +1,207 @@ +# Dolibarr language file - Source file is en_US - compta +Accountancy=Accountancy +AccountancyCard=Accountancy card +Treasury=Treasury +MenuFinancial=Financial +TaxModuleSetupToModifyRules=Go to Taxes module setup to modify rules for calculation +TaxModuleSetupToModifyRulesLT=Go to Company setup to modify rules for calculation +OptionMode=Option for accountancy +OptionModeTrue=Option Incomes-Expenses +OptionModeVirtual=Option Claims-Debts +OptionModeTrueDesc=In this context, the turnover is calculated over payments (date of payments). The validity of the figures is assured only if the book-keeping is scrutinized through the input/output on the accounts via invoices. +OptionModeVirtualDesc=In this context, the turnover is calculated over invoices (date of validation). When these invoices are due, whether they have been paid or not, they are listed in the turnover output. +FeatureIsSupportedInInOutModeOnly=Feature only available in CREDITS-DEBTS accountancy mode (See Accountancy module configuration) +VATReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Tax module setup. +LTReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Company setup. +Param=Setup +RemainingAmountPayment=Amount payment remaining : +AmountToBeCharged=Total amount to pay : +AccountsGeneral=Accounts +Account=Account +Accounts=Accounts +Accountparent=Account parent +Accountsparent=Accounts parent +BillsForSuppliers=Bills for suppliers +Income=Income +Outcome=Expense +ReportInOut=Income / Expense +ReportTurnover=Turnover +PaymentsNotLinkedToInvoice=Payments not linked to any invoice, so not linked to any third party +PaymentsNotLinkedToUser=Payments not linked to any user +Profit=Profit +AccountingResult=Accounting result +Balance=Balance +Debit=Debit +Credit=Credit +Piece=Accounting Doc. +Withdrawal=Withdrawal +Withdrawals=Withdrawals +AmountHTVATRealReceived=Net collected +AmountHTVATRealPaid=Net paid +VATToPay=VAT sells +VATReceived=VAT received +VATToCollect=VAT purchases +VATSummary=VAT Balance +LT2SummaryES=IRPF Balance +LT1SummaryES=RE Balance +VATPaid=VAT paid +SalaryPaid=Salary paid +LT2PaidES=IRPF Paid +LT1PaidES=RE Paid +LT2CustomerES=IRPF sales +LT2SupplierES=IRPF purchases +LT1CustomerES=RE sales +LT1SupplierES=RE purchases +VATCollected=VAT collected +ToPay=To pay +ToGet=To get back +SpecialExpensesArea=Area for all special payments +TaxAndDividendsArea=Tax, social contributions and dividends area +SocialContribution=Social contribution +SocialContributions=Social contributions +MenuSpecialExpenses=Special expenses +MenuTaxAndDividends=Taxes and dividends +MenuSalaries=Salaries +MenuSocialContributions=Social contributions +MenuNewSocialContribution=New contribution +NewSocialContribution=New social contribution +ContributionsToPay=Contributions to pay +AccountancyTreasuryArea=Accountancy/Treasury area +AccountancySetup=Accountancy setup +NewPayment=New payment +Payments=Payments +PaymentCustomerInvoice=Customer invoice payment +PaymentSupplierInvoice=Supplier invoice payment +PaymentSocialContribution=Social contribution payment +PaymentVat=VAT payment +PaymentSalary=Salary payment +ListPayment=List of payments +ListOfPayments=List of payments +ListOfCustomerPayments=List of customer payments +ListOfSupplierPayments=List of supplier payments +DatePayment=Payment date +DateStartPeriod=Date start period +DateEndPeriod=Date end period +NewVATPayment=New VAT payment +newLT2PaymentES=New IRPF payment +newLT1PaymentES=New RE payment +LT2PaymentES=IRPF Payment +LT2PaymentsES=IRPF Payments +LT1PaymentES=RE Payment +LT1PaymentsES=RE Payments +VATPayment=VAT Payment +VATPayments=VAT Payments +SocialContributionsPayments=Social contributions payments +ShowVatPayment=Show VAT payment +TotalToPay=Total to pay +TotalVATReceived=Total VAT received +CustomerAccountancyCode=Customer accountancy code +SupplierAccountancyCode=Supplier accountancy code +AccountNumberShort=Account number +AccountNumber=Account number +NewAccount=New account +SalesTurnover=Sales turnover +SalesTurnoverMinimum=Minimum sales turnover +ByThirdParties=By third parties +ByUserAuthorOfInvoice=By invoice author +AccountancyExport=Accountancy export +ErrorWrongAccountancyCodeForCompany=Bad customer accountancy code for %s +SuppliersProductsSellSalesTurnover=The generated turnover by the sales of supplier's products. +CheckReceipt=Check deposit +CheckReceiptShort=Check deposit +LastCheckReceiptShort=Last %s check receipts +NewCheckReceipt=New discount +NewCheckDeposit=New check deposit +NewCheckDepositOn=Create receipt for deposit on account: %s +NoWaitingChecks=No checks waiting for deposit. +DateChequeReceived=Check reception date +NbOfCheques=Nb of checks +PaySocialContribution=Pay a social contribution +ConfirmPaySocialContribution=Are you sure you want to classify this social contribution as paid? +DeleteSocialContribution=Delete a social contribution +ConfirmDeleteSocialContribution=Are you sure you want to delete this social contribution? +ExportDataset_tax_1=Social contributions and payments +CalcModeVATDebt=Mode %sVAT on commitment accounting%s. +CalcModeVATEngagement=Mode %sVAT on incomes-expenses%s. +CalcModeDebt=Mode %sClaims-Debts%s said Commitment accounting. +CalcModeEngagement=Mode %sIncomes-Expenses%s said cash accounting +CalcModeLT1= Mode %sRE on customer invoices - suppliers invoices%s +CalcModeLT1Debt=Mode %sRE on customer invoices%s +CalcModeLT1Rec= Mode %sRE on suppliers invoices%s +CalcModeLT2= Mode %sIRPF on customer invoices - suppliers invoices%s +CalcModeLT2Debt=Mode %sIRPF on customer invoices%s +CalcModeLT2Rec= Mode %sIRPF on suppliers invoices%s +AnnualSummaryDueDebtMode=Balance of income and expenses, annual summary +AnnualSummaryInputOutputMode=Balance of income and expenses, annual summary +AnnualByCompaniesDueDebtMode=Balance of income and expenses, detail by third parties, mode %sClaims-Debts%s said Commitment accounting. +AnnualByCompaniesInputOutputMode=Balance of income and expenses, detail by third parties, mode %sIncomes-Expenses%s said cash accounting. +SeeReportInInputOutputMode=See report %sIncomes-Expenses%s said cash accounting for a calculation on actual payments made +SeeReportInDueDebtMode=See report %sClaims-Debts%s said commitment accounting for a calculation on issued invoices +RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included +RulesResultDue=- It includes outstanding invoices, expenses and VAT whether they are paid or not.
- It is based on the validation date of invoices and VAT and on the due date for expenses. +RulesResultInOut=- It includes the real payments made on invoices, expenses and VAT.
- It is based on the payment dates of the invoices, expenses and VAT. +RulesCADue=- It includes the client's due invoices whether they are paid or not.
- It is based on the validation date of these invoices.
+RulesCAIn=- It includes all the effective payments of invoices received from clients.
- It is based on the payment date of these invoices
+DepositsAreNotIncluded=- Deposit invoices are nor included +DepositsAreIncluded=- Deposit invoices are included +LT2ReportByCustomersInInputOutputModeES=Report by third party IRPF +LT1ReportByCustomersInInputOutputModeES=Report by third party RE +VATReportByCustomersInInputOutputMode=Report by the customer VAT collected and paid +VATReportByCustomersInDueDebtMode=Report by the customer VAT collected and paid +VATReportByQuartersInInputOutputMode=Report by rate of the VAT collected and paid +LT1ReportByQuartersInInputOutputMode=Report by RE rate +LT2ReportByQuartersInInputOutputMode=Report by IRPF rate +VATReportByQuartersInDueDebtMode=Report by rate of the VAT collected and paid +LT1ReportByQuartersInDueDebtMode=Report by RE rate +LT2ReportByQuartersInDueDebtMode=Report by IRPF rate +SeeVATReportInInputOutputMode=See report %sVAT encasement%s for a standard calculation +SeeVATReportInDueDebtMode=See report %sVAT on flow%s for a calculation with an option on the flow +RulesVATInServices=- For services, the report includes the VAT regulations actually received or issued on the basis of the date of payment. +RulesVATInProducts=- For material assets, it includes the VAT invoices on the basis of the invoice date. +RulesVATDueServices=- For services, the report includes VAT invoices due, paid or not, based on the invoice date. +RulesVATDueProducts=- For material assets, it includes the VAT invoices, based on the invoice date. +OptionVatInfoModuleComptabilite=Note: For material assets, it should use the date of delivery to be more fair. +PercentOfInvoice=%%/invoice +NotUsedForGoods=Not used on goods +ProposalStats=Statistics on proposals +OrderStats=Statistics on orders +InvoiceStats=Statistics on bills +Dispatch=Dispatching +Dispatched=Dispatched +ToDispatch=To dispatch +ThirdPartyMustBeEditAsCustomer=Third party must be defined as a customer +SellsJournal=Sales Journal +PurchasesJournal=Purchases Journal +DescSellsJournal=Sales Journal +DescPurchasesJournal=Purchases Journal +InvoiceRef=Invoice ref. +CodeNotDef=Not defined +AddRemind=Dispatch available amount +RemainToDivide= Remain to dispatch : +WarningDepositsNotIncluded=Deposits invoices are not included in this version with this accountancy module. +DatePaymentTermCantBeLowerThanObjectDate=Payment term date can't be lower than object date. +Pcg_version=Pcg version +Pcg_type=Pcg type +Pcg_subtype=Pcg subtype +InvoiceLinesToDispatch=Invoice lines to dispatch +InvoiceDispatched=Dispatched invoices +AccountancyDashboard=Accountancy summary +ByProductsAndServices=By products and services +RefExt=External ref +ToCreateAPredefinedInvoice=To create a predefined invoice, create a standard invoice then, without validating it, click onto button "Convert to predefined invoice". +LinkedOrder=Link to order +ReCalculate=Recalculate +Mode1=Method 1 +Mode2=Method 2 +CalculationRuleDesc=To calculate total VAT, there is two methods:
Method 1 is rounding vat on each line, then summing them.
Method 2 is summing all vat on each line, then rounding result.
Final result may differs from few cents. Default mode is mode %s. +CalculationRuleDescSupplier=according to supplier, choose appropriate method to apply same calculation rule and get same result expected by your supplier. +TurnoverPerProductInCommitmentAccountingNotRelevant=Turnover report per product, when using a cash accountancy mode is not relevant. This report is only available when using engagement accountancy mode (see setup of accountancy module). +CalculationMode=Calculation mode +AccountancyJournal=Accountancy code journal +ACCOUNTING_VAT_ACCOUNT=Default accountancy code for collecting VAT +ACCOUNTING_VAT_BUY_ACCOUNT=Default accountancy code for paying VAT +ACCOUNTING_ACCOUNT_CUSTOMER=Accountancy code by default for customer thirdparties +ACCOUNTING_ACCOUNT_SUPPLIER=Accountancy code by default for supplier thirdparties +CloneTax=Clone a social contribution +ConfirmCloneTax=Confirm the clone of a social contribution +CloneTaxForNextMonth=Clone it for next month diff --git a/htdocs/langs/lo_LA/contracts.lang b/htdocs/langs/lo_LA/contracts.lang new file mode 100644 index 00000000000..d1be0e6513f --- /dev/null +++ b/htdocs/langs/lo_LA/contracts.lang @@ -0,0 +1,103 @@ +# Dolibarr language file - Source file is en_US - contracts +ContractsArea=Contracts area +ListOfContracts=List of contracts +LastModifiedContracts=Last %s modified contracts +AllContracts=All contracts +ContractCard=Contract card +ContractStatus=Contract status +ContractStatusNotRunning=Not running +ContractStatusRunning=Running +ContractStatusDraft=Draft +ContractStatusValidated=Validated +ContractStatusClosed=Closed +ServiceStatusInitial=Not running +ServiceStatusRunning=Running +ServiceStatusNotLate=Running, not expired +ServiceStatusNotLateShort=Not expired +ServiceStatusLate=Running, expired +ServiceStatusLateShort=Expired +ServiceStatusClosed=Closed +ServicesLegend=Services legend +Contracts=Contracts +ContractsAndLine=Contracts and line of contracts +Contract=Contract +NoContracts=No contracts +MenuServices=Services +MenuInactiveServices=Services not active +MenuRunningServices=Running services +MenuExpiredServices=Expired services +MenuClosedServices=Closed services +NewContract=New contract +AddContract=Create contract +SearchAContract=Search a contract +DeleteAContract=Delete a contract +CloseAContract=Close a contract +ConfirmDeleteAContract=Are you sure you want to delete this contract and all its services ? +ConfirmValidateContract=Are you sure you want to validate this contract under name %s ? +ConfirmCloseContract=This will close all services (active or not). Are you sure you want to close this contract ? +ConfirmCloseService=Are you sure you want to close this service with date %s ? +ValidateAContract=Validate a contract +ActivateService=Activate service +ConfirmActivateService=Are you sure you want to activate this service with date %s ? +RefContract=Contract reference +DateContract=Contract date +DateServiceActivate=Service activation date +DateServiceUnactivate=Service deactivation date +DateServiceStart=Date for beginning of service +DateServiceEnd=Date for end of service +ShowContract=Show contract +ListOfServices=List of services +ListOfInactiveServices=List of not active services +ListOfExpiredServices=List of expired active services +ListOfClosedServices=List of closed services +ListOfRunningContractsLines=List of running contract lines +ListOfRunningServices=List of running services +NotActivatedServices=Inactive services (among validated contracts) +BoardNotActivatedServices=Services to activate among validated contracts +LastContracts=Last %s contracts +LastActivatedServices=Last %s activated services +LastModifiedServices=Last %s modified services +EditServiceLine=Edit service line +ContractStartDate=Start date +ContractEndDate=End date +DateStartPlanned=Planned start date +DateStartPlannedShort=Planned start date +DateEndPlanned=Planned end date +DateEndPlannedShort=Planned end date +DateStartReal=Real start date +DateStartRealShort=Real start date +DateEndReal=Real end date +DateEndRealShort=Real end date +NbOfServices=Nb of services +CloseService=Close service +ServicesNomberShort=%s service(s) +RunningServices=Running services +BoardRunningServices=Expired running services +ServiceStatus=Status of service +DraftContracts=Drafts contracts +CloseRefusedBecauseOneServiceActive=Contract can't be closed as ther is at least one open service on it +CloseAllContracts=Close all contract lines +DeleteContractLine=Delete a contract line +ConfirmDeleteContractLine=Are you sure you want to delete this contract line ? +MoveToAnotherContract=Move service into another contract. +ConfirmMoveToAnotherContract=I choosed new target contract and confirm I want to move this service into this contract. +ConfirmMoveToAnotherContractQuestion=Choose in which existing contract (of same third party), you want to move this service to ? +PaymentRenewContractId=Renew contract line (number %s) +ExpiredSince=Expiration date +RelatedContracts=Related contracts +NoExpiredServices=No expired active services +ListOfServicesToExpireWithDuration=List of Services to expire in %s days +ListOfServicesToExpireWithDurationNeg=List of Services expired from more than %s days +ListOfServicesToExpire=List of Services to expire +NoteListOfYourExpiredServices=This list contains only services of contracts for third parties you are linked to as a sale representative. +StandardContractsTemplate=Standard contracts template +ContactNameAndSignature=For %s, name and signature: +OnlyLinesWithTypeServiceAreUsed=Only lines with type "Service" will be cloned. + +##### Types de contacts ##### +TypeContact_contrat_internal_SALESREPSIGN=Sales representative signing contract +TypeContact_contrat_internal_SALESREPFOLL=Sales representative following-up contract +TypeContact_contrat_external_BILLING=Billing customer contact +TypeContact_contrat_external_CUSTOMER=Follow-up customer contact +TypeContact_contrat_external_SALESREPSIGN=Signing contract customer contact +Error_CONTRACT_ADDON_NotDefined=Constant CONTRACT_ADDON not defined diff --git a/htdocs/langs/lo_LA/cron.lang b/htdocs/langs/lo_LA/cron.lang new file mode 100644 index 00000000000..28dfc7770b2 --- /dev/null +++ b/htdocs/langs/lo_LA/cron.lang @@ -0,0 +1,87 @@ +# Dolibarr language file - Source file is en_US - cron +# About page +About = About +CronAbout = About Cron +CronAboutPage = Cron about page +# Right +Permission23101 = Read Scheduled task +Permission23102 = Create/update Scheduled task +Permission23103 = Delete Scheduled task +Permission23104 = Execute Scheduled task +# Admin +CronSetup= Scheduled job management setup +URLToLaunchCronJobs=URL to check and launch cron jobs if required +OrToLaunchASpecificJob=Or to check and launch a specific job +KeyForCronAccess=Security key for URL to launch cron jobs +FileToLaunchCronJobs=Command line to launch cron jobs +CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes +CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes +# Menu +CronJobs=Scheduled jobs +CronListActive=List of active/scheduled jobs +CronListInactive=List of disabled jobs +# Page list +CronDateLastRun=Last run +CronLastOutput=Last run output +CronLastResult=Last result code +CronListOfCronJobs=List of scheduled jobs +CronCommand=Command +CronList=Jobs list +CronDelete= Delete cron jobs +CronConfirmDelete= Are you sure you want to delete this cron job ? +CronExecute=Launch job +CronConfirmExecute= Are you sure to execute this job now +CronInfo= Jobs allow to execute task that have been planned +CronWaitingJobs=Wainting jobs +CronTask=Job +CronNone= None +CronDtStart=Start date +CronDtEnd=End date +CronDtNextLaunch=Next execution +CronDtLastLaunch=Last execution +CronFrequency=Frequancy +CronClass=Classe +CronMethod=Method +CronModule=Module +CronAction=Action +CronStatus=Status +CronStatusActive=Enabled +CronStatusInactive=Disabled +CronNoJobs=No jobs registered +CronPriority=Priority +CronLabel=Description +CronNbRun=Nb. launch +CronEach=Every +JobFinished=Job launched and finished +#Page card +CronAdd= Add jobs +CronHourStart= Start Hour and date of task +CronEvery= And execute task each +CronObject= Instance/Object to create +CronArgs=Parameters +CronSaveSucess=Save succesfully +CronNote=Comment +CronFieldMandatory=Fields %s is mandatory +CronErrEndDateStartDt=End date cannot be before start date +CronStatusActiveBtn=Enable +CronStatusInactiveBtn=Disable +CronTaskInactive=This job is disabled +CronDtLastResult=Last result date +CronId=Id +CronClassFile=Classes (filename.class.php) +CronModuleHelp=Name of Dolibarr module directory (also work with external Dolibarr module).
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of module is product +CronClassFileHelp=The file name to load.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of class file name is product.class.php +CronObjectHelp=The object name to load.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of class file name is Product +CronMethodHelp=The object method to launch.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of method is is fecth +CronArgsHelp=The method arguments.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of paramters can be 0, ProductRef +CronCommandHelp=The system command line to execute. +# Info +CronInfoPage=Information +# Common +CronType=Task type +CronType_method=Call method of a Dolibarr Class +CronType_command=Shell command +CronMenu=Cron +CronCannotLoadClass=Cannot load class %s or object %s +UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/lo_LA/deliveries.lang b/htdocs/langs/lo_LA/deliveries.lang new file mode 100644 index 00000000000..d711c3704b4 --- /dev/null +++ b/htdocs/langs/lo_LA/deliveries.lang @@ -0,0 +1,28 @@ +# Dolibarr language file - Source file is en_US - deliveries +Delivery=Delivery +Deliveries=Deliveries +DeliveryCard=Delivery card +DeliveryOrder=Delivery order +DeliveryOrders=Delivery orders +DeliveryDate=Delivery date +DeliveryDateShort=Deliv. date +CreateDeliveryOrder=Generate delivery order +QtyDelivered=Qty delivered +SetDeliveryDate=Set shipping date +ValidateDeliveryReceipt=Validate delivery receipt +ValidateDeliveryReceiptConfirm=Are you sure you want to validate this delivery receipt ? +DeleteDeliveryReceipt=Delete delivery receipt +DeleteDeliveryReceiptConfirm=Are you sure you want to delete delivery receipt %s ? +DeliveryMethod=Delivery method +TrackingNumber=Tracking number +DeliveryNotValidated=Delivery not validated +# merou PDF model +NameAndSignature=Name and Signature : +ToAndDate=To___________________________________ on ____/_____/__________ +GoodStatusDeclaration=Have received the goods above in good condition, +Deliverer=Deliverer : +Sender=Sender +Recipient=Recipient +ErrorStockIsNotEnough=There's not enough stock +Shippable=Shippable +NonShippable=Not Shippable diff --git a/htdocs/langs/lo_LA/dict.lang b/htdocs/langs/lo_LA/dict.lang new file mode 100644 index 00000000000..bef1f4821b4 --- /dev/null +++ b/htdocs/langs/lo_LA/dict.lang @@ -0,0 +1,327 @@ +# Dolibarr language file - Source file is en_US - dict +CountryFR=France +CountryBE=Belgium +CountryIT=Italy +CountryES=Spain +CountryDE=Germany +CountryCH=Switzerland +CountryGB=Great Britain +CountryUK=United Kingdom +CountryIE=Ireland +CountryCN=China +CountryTN=Tunisia +CountryUS=United States +CountryMA=Morocco +CountryDZ=Algeria +CountryCA=Canada +CountryTG=Togo +CountryGA=Gabon +CountryNL=Netherlands +CountryHU=Hungary +CountryRU=Russia +CountrySE=Sweden +CountryCI=Ivoiry Coast +CountrySN=Senegal +CountryAR=Argentina +CountryCM=Cameroon +CountryPT=Portugal +CountrySA=Saudi Arabia +CountryMC=Monaco +CountryAU=Australia +CountrySG=Singapore +CountryAF=Afghanistan +CountryAX=Åland Islands +CountryAL=Albania +CountryAS=American Samoa +CountryAD=Andorra +CountryAO=Angola +CountryAI=Anguilla +CountryAQ=Antarctica +CountryAG=Antigua and Barbuda +CountryAM=Armenia +CountryAW=Aruba +CountryAT=Austria +CountryAZ=Azerbaijan +CountryBS=Bahamas +CountryBH=Bahrain +CountryBD=Bangladesh +CountryBB=Barbados +CountryBY=Belarus +CountryBZ=Belize +CountryBJ=Benin +CountryBM=Bermuda +CountryBT=Bhutan +CountryBO=Bolivia +CountryBA=Bosnia and Herzegovina +CountryBW=Botswana +CountryBV=Bouvet Island +CountryBR=Brazil +CountryIO=British Indian Ocean Territory +CountryBN=Brunei Darussalam +CountryBG=Bulgaria +CountryBF=Burkina Faso +CountryBI=Burundi +CountryKH=Cambodia +CountryCV=Cape Verde +CountryKY=Cayman Islands +CountryCF=Central African Republic +CountryTD=Chad +CountryCL=Chile +CountryCX=Christmas Island +CountryCC=Cocos (Keeling) Islands +CountryCO=Colombia +CountryKM=Comoros +CountryCG=Congo +CountryCD=Congo, The Democratic Republic of the +CountryCK=Cook Islands +CountryCR=Costa Rica +CountryHR=Croatia +CountryCU=Cuba +CountryCY=Cyprus +CountryCZ=Czech Republic +CountryDK=Denmark +CountryDJ=Djibouti +CountryDM=Dominica +CountryDO=Dominican Republic +CountryEC=Ecuador +CountryEG=Egypt +CountrySV=El Salvador +CountryGQ=Equatorial Guinea +CountryER=Eritrea +CountryEE=Estonia +CountryET=Ethiopia +CountryFK=Falkland Islands +CountryFO=Faroe Islands +CountryFJ=Fiji Islands +CountryFI=Finland +CountryGF=French Guiana +CountryPF=French Polynesia +CountryTF=French Southern Territories +CountryGM=Gambia +CountryGE=Georgia +CountryGH=Ghana +CountryGI=Gibraltar +CountryGR=Greece +CountryGL=Greenland +CountryGD=Grenada +CountryGP=Guadeloupe +CountryGU=Guam +CountryGT=Guatemala +CountryGN=Guinea +CountryGW=Guinea-Bissau +CountryGY=Guyana +CountryHT=Haïti +CountryHM=Heard Island and McDonald +CountryVA=Holy See (Vatican City State) +CountryHN=Honduras +CountryHK=Hong Kong +CountryIS=Icelande +CountryIN=India +CountryID=Indonesia +CountryIR=Iran +CountryIQ=Iraq +CountryIL=Israel +CountryJM=Jamaica +CountryJP=Japan +CountryJO=Jordan +CountryKZ=Kazakhstan +CountryKE=Kenya +CountryKI=Kiribati +CountryKP=North Korea +CountryKR=South Korea +CountryKW=Kuwait +CountryKG=Kyrghyztan +CountryLA=Lao +CountryLV=Latvia +CountryLB=Lebanon +CountryLS=Lesotho +CountryLR=Liberia +CountryLY=Libyan +CountryLI=Liechtenstein +CountryLT=Lituania +CountryLU=Luxembourg +CountryMO=Macao +CountryMK=Macedonia, the former Yugoslav of +CountryMG=Madagascar +CountryMW=Malawi +CountryMY=Malaysia +CountryMV=Maldives +CountryML=Mali +CountryMT=Malta +CountryMH=Marshall Islands +CountryMQ=Martinique +CountryMR=Mauritania +CountryMU=Mauritius +CountryYT=Mayotte +CountryMX=Mexico +CountryFM=Micronesia +CountryMD=Moldova +CountryMN=Mongolia +CountryMS=Monserrat +CountryMZ=Mozambique +CountryMM=Birmania (Myanmar) +CountryNA=Namibia +CountryNR=Nauru +CountryNP=Nepal +CountryAN=Netherlands Antilles +CountryNC=New Caledonia +CountryNZ=New Zealand +CountryNI=Nicaragua +CountryNE=Niger +CountryNG=Nigeria +CountryNU=Niue +CountryNF=Norfolk Island +CountryMP=Northern Mariana Islands +CountryNO=Norway +CountryOM=Oman +CountryPK=Pakistan +CountryPW=Palau +CountryPS=Palestinian Territory, Occupied +CountryPA=Panama +CountryPG=Papua New Guinea +CountryPY=Paraguay +CountryPE=Peru +CountryPH=Philippines +CountryPN=Pitcairn Islands +CountryPL=Poland +CountryPR=Puerto Rico +CountryQA=Qatar +CountryRE=Reunion +CountryRO=Romania +CountryRW=Rwanda +CountrySH=Saint Helena +CountryKN=Saint Kitts and Nevis +CountryLC=Saint Lucia +CountryPM=Saint Pierre and Miquelon +CountryVC=Saint Vincent and Grenadines +CountryWS=Samoa +CountrySM=San Marino +CountryST=Sao Tome and Principe +CountryRS=Serbia +CountrySC=Seychelles +CountrySL=Sierra Leone +CountrySK=Slovakia +CountrySI=Slovenia +CountrySB=Solomon Islands +CountrySO=Somalia +CountryZA=South Africa +CountryGS=South Georgia and the South Sandwich Islands +CountryLK=Sri Lanka +CountrySD=Sudan +CountrySR=Suriname +CountrySJ=Svalbard and Jan Mayen +CountrySZ=Swaziland +CountrySY=Syrian +CountryTW=Taiwan +CountryTJ=Tajikistan +CountryTZ=Tanzania +CountryTH=Thailand +CountryTL=Timor-Leste +CountryTK=Tokelau +CountryTO=Tonga +CountryTT=Trinidad and Tobago +CountryTR=Turkey +CountryTM=Turkmenistan +CountryTC=Turks and Cailos Islands +CountryTV=Tuvalu +CountryUG=Uganda +CountryUA=Ukraine +CountryAE=United Arab Emirates +CountryUM=United States Minor Outlying Islands +CountryUY=Uruguay +CountryUZ=Uzbekistan +CountryVU=Vanuatu +CountryVE=Venezuela +CountryVN=Viet Nam +CountryVG=Virgin Islands, British +CountryVI=Virgin Islands, U.S. +CountryWF=Wallis and Futuna +CountryEH=Western Sahara +CountryYE=Yemen +CountryZM=Zambia +CountryZW=Zimbabwe +CountryGG=Guernsey +CountryIM=Isle of Man +CountryJE=Jersey +CountryME=Montenegro +CountryBL=Saint Barthelemy +CountryMF=Saint Martin + +##### Civilities ##### +CivilityMME=Mrs. +CivilityMR=Mr. +CivilityMLE=Ms. +CivilityMTRE=Master +CivilityDR=Doctor +##### Currencies ##### +Currencyeuros=Euros +CurrencyAUD=AU Dollars +CurrencySingAUD=AU Dollar +CurrencyCAD=CAN Dollars +CurrencySingCAD=CAN Dollar +CurrencyCHF=Swiss Francs +CurrencySingCHF=Swiss Franc +CurrencyEUR=Euros +CurrencySingEUR=Euro +CurrencyFRF=French Francs +CurrencySingFRF=French Franc +CurrencyGBP=GB Pounds +CurrencySingGBP=GB Pound +CurrencyINR=Indian rupees +CurrencySingINR=Indian rupee +CurrencyMAD=Dirham +CurrencySingMAD=Dirham +CurrencyMGA=Ariary +CurrencySingMGA=Ariary +CurrencyMUR=Mauritius rupees +CurrencySingMUR=Mauritius rupee +CurrencyNOK=Norwegian krones +CurrencySingNOK=Norwegian krone +CurrencyTND=Tunisian dinars +CurrencySingTND=Tunisian dinar +CurrencyUSD=US Dollars +CurrencySingUSD=US Dollar +CurrencyUAH=Hryvnia +CurrencySingUAH=Hryvnia +CurrencyXAF=CFA Francs BEAC +CurrencySingXAF=CFA Franc BEAC +CurrencyXOF=CFA Francs BCEAO +CurrencySingXOF=CFA Franc BCEAO +CurrencyXPF=CFP Francs +CurrencySingXPF=CFP Franc +CurrencyCentSingEUR=cent +CurrencyCentINR=paisa +CurrencyCentSingINR=paise +CurrencyThousandthSingTND=thousandth +#### Input reasons ##### +DemandReasonTypeSRC_INTE=Internet +DemandReasonTypeSRC_CAMP_MAIL=Mailing campaign +DemandReasonTypeSRC_CAMP_EMAIL=EMailing campaign +DemandReasonTypeSRC_CAMP_PHO=Phone campaign +DemandReasonTypeSRC_CAMP_FAX=Fax campaign +DemandReasonTypeSRC_COMM=Commercial contact +DemandReasonTypeSRC_SHOP=Shop contact +DemandReasonTypeSRC_WOM=Word of mouth +DemandReasonTypeSRC_PARTNER=Partner +DemandReasonTypeSRC_EMPLOYEE=Employee +DemandReasonTypeSRC_SPONSORING=Sponsorship +#### Paper formats #### +PaperFormatEU4A0=Format 4A0 +PaperFormatEU2A0=Format 2A0 +PaperFormatEUA0=Format A0 +PaperFormatEUA1=Format A1 +PaperFormatEUA2=Format A2 +PaperFormatEUA3=Format A3 +PaperFormatEUA4=Format A4 +PaperFormatEUA5=Format A5 +PaperFormatEUA6=Format A6 +PaperFormatUSLETTER=Format Letter US +PaperFormatUSLEGAL=Format Legal US +PaperFormatUSEXECUTIVE=Format Executive US +PaperFormatUSLEDGER=Format Ledger/Tabloid +PaperFormatCAP1=Format P1 Canada +PaperFormatCAP2=Format P2 Canada +PaperFormatCAP3=Format P3 Canada +PaperFormatCAP4=Format P4 Canada +PaperFormatCAP5=Format P5 Canada +PaperFormatCAP6=Format P6 Canada diff --git a/htdocs/langs/lo_LA/donations.lang b/htdocs/langs/lo_LA/donations.lang new file mode 100644 index 00000000000..f7aed91cf81 --- /dev/null +++ b/htdocs/langs/lo_LA/donations.lang @@ -0,0 +1,38 @@ +# Dolibarr language file - Source file is en_US - donations +Donation=Donation +Donations=Donations +DonationRef=Donation ref. +Donor=Donor +Donors=Donors +AddDonation=Create a donation +NewDonation=New donation +ShowDonation=Show donation +DonationPromise=Gift promise +PromisesNotValid=Not validated promises +PromisesValid=Validated promises +DonationsPaid=Donations paid +DonationsReceived=Donations received +PublicDonation=Public donation +DonationsNumber=Donation number +DonationsArea=Donations area +DonationStatusPromiseNotValidated=Draft promise +DonationStatusPromiseValidated=Validated promise +DonationStatusPaid=Donation received +DonationStatusPromiseNotValidatedShort=Draft +DonationStatusPromiseValidatedShort=Validated +DonationStatusPaidShort=Received +ValidPromess=Validate promise +DonationReceipt=Donation receipt +BuildDonationReceipt=Build receipt +DonationsModels=Documents models for donation receipts +LastModifiedDonations=Last %s modified donations +SearchADonation=Search a donation +DonationRecipient=Donation recipient +ThankYou=Thank You +IConfirmDonationReception=The recipient declare reception, as a donation, of the following amount +MinimumAmount=Minimum amount is %s +FreeTextOnDonations=Free text to show in footer +FrenchOptions=Options for France +DONATION_ART200=Show article 200 from CGI if you are concerned +DONATION_ART238=Show article 238 from CGI if you are concerned +DONATION_ART885=Show article 885 from CGI if you are concerned diff --git a/htdocs/langs/lo_LA/ecm.lang b/htdocs/langs/lo_LA/ecm.lang new file mode 100644 index 00000000000..4a1931a3217 --- /dev/null +++ b/htdocs/langs/lo_LA/ecm.lang @@ -0,0 +1,57 @@ +# Dolibarr language file - Source file is en_US - ecm +MenuECM=Documents +DocsMine=My documents +DocsGenerated=Generated documents +DocsElements=Elements documents +DocsThirdParties=Documents third parties +DocsContracts=Documents contracts +DocsProposals=Documents proposals +DocsOrders=Documents orders +DocsInvoices=Documents invoices +ECMNbOfDocs=Nb of documents in directory +ECMNbOfDocsSmall=Nb of doc. +ECMSection=Directory +ECMSectionManual=Manual directory +ECMSectionAuto=Automatic directory +ECMSectionsManual=Manual tree +ECMSectionsAuto=Automatic tree +ECMSections=Directories +ECMRoot=Root +ECMNewSection=New directory +ECMAddSection=Add directory +ECMNewDocument=New document +ECMCreationDate=Creation date +ECMNbOfFilesInDir=Number of files in directory +ECMNbOfSubDir=Number of sub-directories +ECMNbOfFilesInSubDir=Number of files in sub-directories +ECMCreationUser=Creator +ECMArea=EDM area +ECMAreaDesc=The EDM (Electronic Document Management) area allows you to save, share and search quickly all kind of documents in Dolibarr. +ECMAreaDesc2=* Automatic directories are filled automatically when adding documents from card of an element.
* Manual directories can be used to save documents not linked to a particular element. +ECMSectionWasRemoved=Directory %s has been deleted. +ECMDocumentsSection=Document of directory +ECMSearchByKeywords=Search by keywords +ECMSearchByEntity=Search by object +ECMSectionOfDocuments=Directories of documents +ECMTypeManual=Manual +ECMTypeAuto=Automatic +ECMDocsBySocialContributions=Documents linked to social contributions +ECMDocsByThirdParties=Documents linked to third parties +ECMDocsByProposals=Documents linked to proposals +ECMDocsByOrders=Documents linked to customers orders +ECMDocsByContracts=Documents linked to contracts +ECMDocsByInvoices=Documents linked to customers invoices +ECMDocsByProducts=Documents linked to products +ECMDocsByProjects=Documents linked to projects +ECMDocsByUsers=Documents linked to users +ECMDocsByInterventions=Documents linked to interventions +ECMNoDirectoryYet=No directory created +ShowECMSection=Show directory +DeleteSection=Remove directory +ConfirmDeleteSection=Can you confirm you want to delete the directory %s ? +ECMDirectoryForFiles=Relative directory for files +CannotRemoveDirectoryContainsFiles=Removed not possible because it contains some files +ECMFileManager=File manager +ECMSelectASection=Select a directory on left tree... +DirNotSynchronizedSyncFirst=This directory seems to be created or modified outside ECM module. You must click on "Refresh" button first to synchronize disk and database to get content of this directory. + diff --git a/htdocs/langs/lo_LA/errors.lang b/htdocs/langs/lo_LA/errors.lang new file mode 100644 index 00000000000..700e6344d7d --- /dev/null +++ b/htdocs/langs/lo_LA/errors.lang @@ -0,0 +1,183 @@ +# Dolibarr language file - Source file is en_US - errors + +# No errors +NoErrorCommitIsDone=No error, we commit +# Errors +Error=Error +Errors=Errors +ErrorButCommitIsDone=Errors found but we validate despite this +ErrorBadEMail=EMail %s is wrong +ErrorBadUrl=Url %s is wrong +ErrorLoginAlreadyExists=Login %s already exists. +ErrorGroupAlreadyExists=Group %s already exists. +ErrorRecordNotFound=Record not found. +ErrorFailToCopyFile=Failed to copy file '%s' into '%s'. +ErrorFailToRenameFile=Failed to rename file '%s' into '%s'. +ErrorFailToDeleteFile=Failed to remove file '%s'. +ErrorFailToCreateFile=Failed to create file '%s'. +ErrorFailToRenameDir=Failed to rename directory '%s' into '%s'. +ErrorFailToCreateDir=Failed to create directory '%s'. +ErrorFailToDeleteDir=Failed to delete directory '%s'. +ErrorFailedToDeleteJoinedFiles=Can not delete environment because there is some joined files. Remove join files first. +ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as contact for this type. +ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. +ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. +ErrorBadThirdPartyName=Bad value for third party name +ErrorProdIdIsMandatory=The %s is mandatory +ErrorBadCustomerCodeSyntax=Bad syntax for customer code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. +ErrorCustomerCodeRequired=Customer code required +ErrorBarCodeRequired=Bar code required +ErrorCustomerCodeAlreadyUsed=Customer code already used +ErrorBarCodeAlreadyUsed=Bar code already used +ErrorPrefixRequired=Prefix required +ErrorUrlNotValid=The website address is incorrect +ErrorBadSupplierCodeSyntax=Bad syntax for supplier code +ErrorSupplierCodeRequired=Supplier code required +ErrorSupplierCodeAlreadyUsed=Supplier code already used +ErrorBadParameters=Bad parameters +ErrorBadValueForParameter=Wrong value '%s' for parameter incorrect '%s' +ErrorBadImageFormat=Image file has not a supported format (Your PHP does not support functions to convert images of this format) +ErrorBadDateFormat=Value '%s' has wrong date format +ErrorWrongDate=Date is not correct! +ErrorFailedToWriteInDir=Failed to write in directory %s +ErrorFoundBadEmailInFile=Found incorrect email syntax for %s lines in file (example line %s with email=%s) +ErrorUserCannotBeDelete=User can not be deleted. May be it is associated on Dolibarr entities. +ErrorFieldsRequired=Some required fields were not filled. +ErrorFailedToCreateDir=Failed to create a directory. Check that Web server user has permissions to write into Dolibarr documents directory. If parameter safe_mode is enabled on this PHP, check that Dolibarr php files owns to web server user (or group). +ErrorNoMailDefinedForThisUser=No mail defined for this user +ErrorFeatureNeedJavascript=This feature need javascript to be activated to work. Change this in setup - display. +ErrorTopMenuMustHaveAParentWithId0=A menu of type 'Top' can't have a parent menu. Put 0 in parent menu or choose a menu of type 'Left'. +ErrorLeftMenuMustHaveAParentId=A menu of type 'Left' must have a parent id. +ErrorFileNotFound=File %s not found (Bad path, wrong permissions or access denied by PHP openbasedir or safe_mode parameter) +ErrorDirNotFound=Directory %s not found (Bad path, wrong permissions or access denied by PHP openbasedir or safe_mode parameter) +ErrorFunctionNotAvailableInPHP=Function %s is required for this feature but is not available in this version/setup of PHP. +ErrorDirAlreadyExists=A directory with this name already exists. +ErrorFileAlreadyExists=A file with this name already exists. +ErrorPartialFile=File not received completely by server. +ErrorNoTmpDir=Temporary directy %s does not exists. +ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. +ErrorFileSizeTooLarge=File size is too large. +ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) +ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) +ErrorNoValueForSelectType=Please fill value for select list +ErrorNoValueForCheckBoxType=Please fill value for checkbox list +ErrorNoValueForRadioType=Please fill value for radio list +ErrorBadFormatValueList=The list value cannot have more than one come : %s, but need at least one: llave,valores +ErrorFieldCanNotContainSpecialCharacters=Field %s must not contains special characters. +ErrorFieldCanNotContainSpecialNorUpperCharacters=Field %s must not contains special characters, nor upper case characters. +ErrorNoAccountancyModuleLoaded=No accountancy module activated +ErrorExportDuplicateProfil=This profile name already exists for this export set. +ErrorLDAPSetupNotComplete=Dolibarr-LDAP matching is not complete. +ErrorLDAPMakeManualTest=A .ldif file has been generated in directory %s. Try to load it manually from command line to have more information on errors. +ErrorCantSaveADoneUserWithZeroPercentage=Can't save an action with "statut not started" if field "done by" is also filled. +ErrorRefAlreadyExists=Ref used for creation already exists. +ErrorPleaseTypeBankTransactionReportName=Please type bank receipt name where transaction is reported (Format YYYYMM or YYYYMMDD) +ErrorRecordHasChildren=Failed to delete records since it has some childs. +ErrorRecordIsUsedCantDelete=Can't delete record. It is already used or included into other object. +ErrorModuleRequireJavascript=Javascript must not be disabled to have this feature working. To enable/disable Javascript, go to menu Home->Setup->Display. +ErrorPasswordsMustMatch=Both typed passwords must match each other +ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. +ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) +ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) +ErrorsOnXLines=Errors on %s source record(s) +ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) +ErrorSpecialCharNotAllowedForField=Special characters are not allowed for field "%s" +ErrorDatabaseParameterWrong=Database setup parameter '%s' has a value not compatible to use Dolibarr (must have value '%s'). +ErrorNumRefModel=A reference exists into database (%s) and is not compatible with this numbering rule. Remove record or renamed reference to activate this module. +ErrorQtyTooLowForThisSupplier=Quantity too low for this supplier or no price defined on this product for this supplier +ErrorModuleSetupNotComplete=Setup of module looks to be uncomplete. Go on Setup - Modules to complete. +ErrorBadMask=Error on mask +ErrorBadMaskFailedToLocatePosOfSequence=Error, mask without sequence number +ErrorBadMaskBadRazMonth=Error, bad reset value +ErrorMaxNumberReachForThisMask=Max number reach for this mask +ErrorCounterMustHaveMoreThan3Digits=Counter must have more than 3 digits +ErrorSelectAtLeastOne=Error. Select at least one entry. +ErrorProductWithRefNotExist=Product with reference '%s' don't exist +ErrorDeleteNotPossibleLineIsConsolidated=Delete not possible because record is linked to a bank transation that is conciliated +ErrorProdIdAlreadyExist=%s is assigned to another third +ErrorFailedToSendPassword=Failed to send password +ErrorFailedToLoadRSSFile=Fails to get RSS feed. Try to add constant MAIN_SIMPLEXMLLOAD_DEBUG if error messages does not provide enough information. +ErrorPasswordDiffers=Passwords differs, please type them again. +ErrorForbidden=Access denied.
You try to access to a page, area or feature without being in an authenticated session or that is not allowed to your user. +ErrorForbidden2=Permission for this login can be defined by your Dolibarr administrator from menu %s->%s. +ErrorForbidden3=It seems that Dolibarr is not used through an authenticated session. Take a look at Dolibarr setup documentation to know how to manage authentications (htaccess, mod_auth or other...). +ErrorNoImagickReadimage=Class Imagick is not found in this PHP. No preview can be available. Administrators can disable this tab from menu Setup - Display. +ErrorRecordAlreadyExists=Record already exists +ErrorCantReadFile=Failed to read file '%s' +ErrorCantReadDir=Failed to read directory '%s' +ErrorFailedToFindEntity=Failed to read environment '%s' +ErrorBadLoginPassword=Bad value for login or password +ErrorLoginDisabled=Your account has been disabled +ErrorFailedToRunExternalCommand=Failed to run external command. Check it is available and runnable by your PHP server. If PHP Safe Mode is enabled, check that command is inside a directory defined by parameter safe_mode_exec_dir. +ErrorFailedToChangePassword=Failed to change password +ErrorLoginDoesNotExists=User with login %s could not be found. +ErrorLoginHasNoEmail=This user has no email address. Process aborted. +ErrorBadValueForCode=Bad value for security code. Try again with new value... +ErrorBothFieldCantBeNegative=Fields %s and %s can't be both negative +ErrorQtyForCustomerInvoiceCantBeNegative=Quantity for line into customer invoices can't be negative +ErrorWebServerUserHasNotPermission=User account %s used to execute web server has no permission for that +ErrorNoActivatedBarcode=No barcode type activated +ErrUnzipFails=Failed to unzip %s with ZipArchive +ErrNoZipEngine=No engine to unzip %s file in this PHP +ErrorFileMustBeADolibarrPackage=The file %s must be a Dolibarr zip package +ErrorFileRequired=It takes a package Dolibarr file +ErrorPhpCurlNotInstalled=The PHP CURL is not installed, this is essential to talk with Paypal +ErrorFailedToAddToMailmanList=Failed to add record %s to Mailman list %s or SPIP base +ErrorFailedToRemoveToMailmanList=Failed to remove record %s to Mailman list %s or SPIP base +ErrorNewValueCantMatchOldValue=New value can't be equal to old one +ErrorFailedToValidatePasswordReset=Failed to reinit password. May be the reinit was already done (this link can be used only one time). If not, try to restart the reinit process. +ErrorToConnectToMysqlCheckInstance=Connect to database fails. Check Mysql server is running (in most cases, you can launch it from command line with 'sudo /etc/init.d/mysql start'). +ErrorFailedToAddContact=Failed to add contact +ErrorDateMustBeBeforeToday=The date can not be greater than today +ErrorPaymentModeDefinedToWithoutSetup=A payment mode was set to type %s but setup of module Invoice was not completed to define information to show for this payment mode. +ErrorPHPNeedModule=Error, your PHP must have module %s installed to use this feature. +ErrorOpenIDSetupNotComplete=You setup Dolibarr config file to allow OpenID authentication, but URL of OpenID service is not defined into constant %s +ErrorWarehouseMustDiffers=Source and target warehouses must differs +ErrorBadFormat=Bad format! +ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Error, this member is not yet linked to any thirdparty. Link member to an existing third party or create a new thirdparty before creating subscription with invoice. +ErrorThereIsSomeDeliveries=Error, there is some deliveries linked to this shipment. Deletion refused. +ErrorCantDeletePaymentReconciliated=Can't delete a payment that had generated a bank transaction that was conciliated +ErrorCantDeletePaymentSharedWithPayedInvoice=Can't delete a payment shared by at least one invoice with status Payed +ErrorPriceExpression1=Cannot assign to constant '%s' +ErrorPriceExpression2=Cannot redefine built-in function '%s' +ErrorPriceExpression3=Undefined variable '%s' in function definition +ErrorPriceExpression4=Illegal character '%s' +ErrorPriceExpression5=Unexpected '%s' +ErrorPriceExpression6=Wrong number of arguments (%s given, %s expected) +ErrorPriceExpression8=Unexpected operator '%s' +ErrorPriceExpression9=An unexpected error occured +ErrorPriceExpression10=Iperator '%s' lacks operand +ErrorPriceExpression11=Expecting '%s' +ErrorPriceExpression14=Division by zero +ErrorPriceExpression17=Undefined variable '%s' +ErrorPriceExpression19=Expression not found +ErrorPriceExpression20=Empty expression +ErrorPriceExpression21=Empty result '%s' +ErrorPriceExpression22=Negative result '%s' +ErrorPriceExpressionInternal=Internal error '%s' +ErrorPriceExpressionUnknown=Unknown error '%s' +ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs +ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action + +# Warnings +WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined +WarningSafeModeOnCheckExecDir=Warning, PHP option safe_mode is on so command must be stored inside a directory declared by php parameter safe_mode_exec_dir. +WarningAllowUrlFopenMustBeOn=Parameter allow_url_fopen must be set to on in filer php.ini for having this module working completely. You must modify this file manually. +WarningBuildScriptNotRunned=Script %s was not yet ran to build graphics, or there is no data to show. +WarningBookmarkAlreadyExists=A bookmark with this title or this target (URL) already exists. +WarningPassIsEmpty=Warning, database password is empty. This is a security hole. You should add a password to your database and change your conf.php file to reflect this. +WarningConfFileMustBeReadOnly=Warning, your config file (htdocs/conf/conf.php) can be overwritten by the web server. This is a serious security hole. Modify permissions on file to be in read only mode for operating system user used by Web server. If you use Windows and FAT format for your disk, you must know that this file system does not allow to add permissions on file, so can't be completely safe. +WarningsOnXLines=Warnings on %s source record(s) +WarningNoDocumentModelActivated=No model, for document generation, has been activated. A model will be choosed by default until you check your module setup. +WarningLockFileDoesNotExists=Warning, once setup is finished, you must disable install/migrate tools by adding a file install.lock into directory %s. Missing this file is a security hole. +WarningUntilDirRemoved=All security warnings (visible by admin users only) will remain active as long as the vulnerability is present (or that constant MAIN_REMOVE_INSTALL_WARNING is added in Setup->Other setup). +WarningCloseAlways=Warning, closing is done even if amount differs between source and target elements. Enable this feature with caution. +WarningUsingThisBoxSlowDown=Warning, using this box slow down seriously all pages showing the box. +WarningClickToDialUserSetupNotComplete=Setup of ClickToDial information for your user are not complete (see tab ClickToDial onto your user card). +WarningNotRelevant=Irrelevant operation for this dataset +WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=Feature disabled when display setup is optimized for blind person or text browsers. +WarningPaymentDateLowerThanInvoiceDate=Payment date (%s) is earlier than invoice date (%s) for invoice %s. +WarningTooManyDataPleaseUseMoreFilters=Too many data. Please use more filters diff --git a/htdocs/langs/lo_LA/exports.lang b/htdocs/langs/lo_LA/exports.lang new file mode 100644 index 00000000000..d79df485608 --- /dev/null +++ b/htdocs/langs/lo_LA/exports.lang @@ -0,0 +1,134 @@ +# Dolibarr language file - Source file is en_US - exports +ExportsArea=Exports area +ImportArea=Import area +NewExport=New export +NewImport=New import +ExportableDatas=Exportable dataset +ImportableDatas=Importable dataset +SelectExportDataSet=Choose dataset you want to export... +SelectImportDataSet=Choose dataset you want to import... +SelectExportFields=Choose fields you want to export, or select a predefined export profile +SelectImportFields=Choose source file fields you want to import and their target field in database by moving them up and down with anchor %s, or select a predefined import profile: +NotImportedFields=Fields of source file not imported +SaveExportModel=Save this export profile if you plan to reuse it later... +SaveImportModel=Save this import profile if you plan to reuse it later... +ExportModelName=Export profile name +ExportModelSaved=Export profile saved under name %s. +ExportableFields=Exportable fields +ExportedFields=Exported fields +ImportModelName=Import profile name +ImportModelSaved=Import profile saved under name %s. +ImportableFields=Importable fields +ImportedFields=Imported fields +DatasetToExport=Dataset to export +DatasetToImport=Import file into dataset +NoDiscardedFields=No fields in source file are discarded +Dataset=Dataset +ChooseFieldsOrdersAndTitle=Choose fields order... +FieldsOrder=Fields order +FieldsTitle=Fields title +FieldOrder=Field order +FieldTitle=Field title +ChooseExportFormat=Choose export format +NowClickToGenerateToBuildExportFile=Now, select file format in combo box and click on "Generate" to build export file... +AvailableFormats=Available formats +LibraryShort=Library +LibraryUsed=Library used +LibraryVersion=Version +Step=Step +FormatedImport=Import assistant +FormatedImportDesc1=This area allows to import personalized data, using an assistant to help you in process without technical knowledge. +FormatedImportDesc2=First step is to choose a king of data you want to load, then file to load, then to choose which fields you want to load. +FormatedExport=Export assistant +FormatedExportDesc1=This area allows to export personalized data, using an assistant to help you in process without technical knowledge. +FormatedExportDesc2=First step is to choose a predefined dataset, then to choose which fields you want in your result files, and which order. +FormatedExportDesc3=When data to export are selected, you can define output file format you want to export your data to. +Sheet=Sheet +NoImportableData=No importable data (no module with definitions to allow data imports) +FileSuccessfullyBuilt=Export file generated +SQLUsedForExport=SQL Request used to build export file +LineId=Id of line +LineDescription=Description of line +LineUnitPrice=Unit price of line +LineVATRate=VAT Rate of line +LineQty=Quantity for line +LineTotalHT=Amount net of tax for line +LineTotalTTC=Amount with tax for line +LineTotalVAT=Amount of VAT for line +TypeOfLineServiceOrProduct=Type of line (0=product, 1=service) +FileWithDataToImport=File with data to import +FileToImport=Source file to import +FileMustHaveOneOfFollowingFormat=File to import must have one of following format +DownloadEmptyExample=Download example of empty source file +ChooseFormatOfFileToImport=Choose file format to use as import file format by clicking on picto %s to select it... +ChooseFileToImport=Upload file then click on picto %s to select file as source import file... +SourceFileFormat=Source file format +FieldsInSourceFile=Fields in source file +FieldsInTargetDatabase=Target fields in Dolibarr database (bold=mandatory) +Field=Field +NoFields=No fields +MoveField=Move field column number %s +ExampleOfImportFile=Example_of_import_file +SaveImportProfile=Save this import profile +ErrorImportDuplicateProfil=Failed to save this import profile with this name. An existing profile already exists with this name. +ImportSummary=Import setup summary +TablesTarget=Targeted tables +FieldsTarget=Targeted fields +TableTarget=Targeted table +FieldTarget=Targeted field +FieldSource=Source field +DoNotImportFirstLine=Do not import first line of source file +NbOfSourceLines=Number of lines in source file +NowClickToTestTheImport=Check import parameters you have defined. If they are correct, click on button "%s" to launch a simulation of import process (no data will be changed in your database, it's only a simulation for the moment)... +RunSimulateImportFile=Launch the import simulation +FieldNeedSource=This field requires data from the source file +SomeMandatoryFieldHaveNoSource=Some mandatory fields have no source from data file +InformationOnSourceFile=Information on source file +InformationOnTargetTables=Information on target fields +SelectAtLeastOneField=Switch at least one source field in the column of fields to export +SelectFormat=Choose this import file format +RunImportFile=Launch import file +NowClickToRunTheImport=Check result of import simulation. If everything is ok, launch the definitive import. +DataLoadedWithId=All data will be loaded with the following import id: %s +ErrorMissingMandatoryValue=Mandatory data is empty in source file for field %s. +TooMuchErrors=There is still %s other source lines with errors but output has been limited. +TooMuchWarnings=There is still %s other source lines with warnings but output has been limited. +EmptyLine=Empty line (will be discarded) +CorrectErrorBeforeRunningImport=You must first correct all errors before running definitive import. +FileWasImported=File was imported with number %s. +YouCanUseImportIdToFindRecord=You can find all imported records in your database by filtering on field import_key='%s'. +NbOfLinesOK=Number of lines with no errors and no warnings: %s. +NbOfLinesImported=Number of lines successfully imported: %s. +DataComeFromNoWhere=Value to insert comes from nowhere in source file. +DataComeFromFileFieldNb=Value to insert comes from field number %s in source file. +DataComeFromIdFoundFromRef=Value that comes from field number %s of source file will be used to find id of parent object to use (So the objet %s that has the ref. from source file must exists into Dolibarr). +DataComeFromIdFoundFromCodeId=Code that comes from field number %s of source file will be used to find id of parent object to use (So the code from source file must exists into dictionary %s). Note that if you know id, you can also use it into source file instead of code. Import should work in both cases. +DataIsInsertedInto=Data coming from source file will be inserted into the following field: +DataIDSourceIsInsertedInto=The id of parent object found using the data in source file, will be inserted into the following field: +DataCodeIDSourceIsInsertedInto=The id of parent line found from code, will be inserted into following field: +SourceRequired=Data value is mandatory +SourceExample=Example of possible data value +ExampleAnyRefFoundIntoElement=Any ref found for element %s +ExampleAnyCodeOrIdFoundIntoDictionary=Any code (or id) found into dictionary %s +CSVFormatDesc=Comma Separated Value file format (.csv).
This is a text file format where fields are separated by separator [ %s ]. If separator is found inside a field content, field is rounded by round character [ %s ]. Escape character to escape round character is [ %s ]. +Excel95FormatDesc=Excel file format (.xls)
This is native Excel 95 format (BIFF5). +Excel2007FormatDesc=Excel file format (.xlsx)
This is native Excel 2007 format (SpreadsheetML). +TsvFormatDesc=Tab Separated Value file format (.tsv)
This is a text file format where fields are separated by a tabulator [tab]. +ExportFieldAutomaticallyAdded=Field %s was automatically added. It will avoid you to have similar lines to be treated as duplicate records (with this field added, all lines will own their own id and will differ). +CsvOptions=Csv Options +Separator=Separator +Enclosure=Enclosure +SuppliersProducts=Suppliers Products +BankCode=Bank code +DeskCode=Desk code +BankAccountNumber=Account number +BankAccountNumberKey=Key +SpecialCode=Special code +ExportStringFilter=%% allows replacing one or more characters in the text +ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day
YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days
> YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days
< YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days +ExportNumericFilter='NNNNN' filters by one value
'NNNNN+NNNNN' filters over a range of values
'>NNNNN' filters by lower values
'>NNNNN' filters by higher values +## filters +SelectFilterFields=If you want to filter on some values, just input values here. +FilterableFields=Champs Filtrables +FilteredFields=Filtered fields +FilteredFieldsValues=Value for filter diff --git a/htdocs/langs/lo_LA/externalsite.lang b/htdocs/langs/lo_LA/externalsite.lang new file mode 100644 index 00000000000..da4853df0df --- /dev/null +++ b/htdocs/langs/lo_LA/externalsite.lang @@ -0,0 +1,5 @@ +# Dolibarr language file - Source file is en_US - externalsite +ExternalSiteSetup=Setup link to external website +ExternalSiteURL=External Site URL +ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. +ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/lo_LA/ftp.lang b/htdocs/langs/lo_LA/ftp.lang new file mode 100644 index 00000000000..9984ce689ee --- /dev/null +++ b/htdocs/langs/lo_LA/ftp.lang @@ -0,0 +1,12 @@ +# Dolibarr language file - Source file is en_US - ftp +FTPClientSetup=FTP Client module setup +NewFTPClient=New FTP connection setup +FTPArea=FTP Area +FTPAreaDesc=This screen show you content of a FTP server view +SetupOfFTPClientModuleNotComplete=Setup of FTP client module seems to be not complete +FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions +FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) +FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password +FTPFailedToRemoveFile=Failed to remove file %s. +FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that directory is empty). +FTPPassiveMode=Passive mode diff --git a/htdocs/langs/lo_LA/help.lang b/htdocs/langs/lo_LA/help.lang new file mode 100644 index 00000000000..1bbd6e94f03 --- /dev/null +++ b/htdocs/langs/lo_LA/help.lang @@ -0,0 +1,28 @@ +# Dolibarr language file - Source file is en_US - help +CommunitySupport=Forum/Wiki support +EMailSupport=Emails support +RemoteControlSupport=Online real time / remote support +OtherSupport=Other support +ToSeeListOfAvailableRessources=To contact/see available resources: +ClickHere=Click here +HelpCenter=Help center +DolibarrHelpCenter=Dolibarr help and support center +ToGoBackToDolibarr=Otherwise, click here to use Dolibarr +TypeOfSupport=Source of support +TypeSupportCommunauty=Community (free) +TypeSupportCommercial=Commercial +TypeOfHelp=Type +NeedHelpCenter=Need help or support ? +Efficiency=Efficiency +TypeHelpOnly=Help only +TypeHelpDev=Help+Development +TypeHelpDevForm=Help+Development+Formation +ToGetHelpGoOnSparkAngels1=Some companies can provide a fast (sometime immediate) and more efficient online support by taking control of your computer. Such helpers can be found on %s web site: +ToGetHelpGoOnSparkAngels3=You can also go to the list of all available coaches for Dolibarr, for this click on button +ToGetHelpGoOnSparkAngels2=Sometimes, there is no company available at the moment you make your search, so think to change the filter to look for "all availability". You will be able to send more requests. +BackToHelpCenter=Otherwise, click here to go back to help center home page. +LinkToGoldMember=You can call one of the coach preselected by Dolibarr for your language (%s) by clicking his Widget (status and maximum price are automatically updated): +PossibleLanguages=Supported languages +MakeADonation=Help Dolibarr project, make a donation +SubscribeToFoundation=Help Dolibarr project, subscribe to the foundation +SeeOfficalSupport=For official Dolibarr support in your language:
%s diff --git a/htdocs/langs/lo_LA/holiday.lang b/htdocs/langs/lo_LA/holiday.lang new file mode 100644 index 00000000000..f5b87fefb08 --- /dev/null +++ b/htdocs/langs/lo_LA/holiday.lang @@ -0,0 +1,148 @@ +# Dolibarr language file - Source file is en_US - holiday +HRM=HRM +Holidays=Leaves +CPTitreMenu=Leaves +MenuReportMonth=Monthly statement +MenuAddCP=Make a leave request +NotActiveModCP=You must enable the module Leaves to view this page. +NotConfigModCP=You must configure the module Leaves to view this page. To do this, click here . +NoCPforUser=You don't have any available day. +AddCP=Make a leave request +Employe=Employee +DateDebCP=Start date +DateFinCP=End date +DateCreateCP=Creation date +DraftCP=Draft +ToReviewCP=Awaiting approval +ApprovedCP=Approved +CancelCP=Canceled +RefuseCP=Refused +ValidatorCP=Approbator +ListeCP=List of leaves +ReviewedByCP=Will be reviewed by +DescCP=Description +SendRequestCP=Create leave request +DelayToRequestCP=Leave requests must be made at least %s day(s) before them. +MenuConfCP=Edit balance of leaves +UpdateAllCP=Update the leaves +SoldeCPUser=Leaves balance is %s days. +ErrorEndDateCP=You must select an end date greater than the start date. +ErrorSQLCreateCP=An SQL error occurred during the creation: +ErrorIDFicheCP=An error has occurred, the leave request does not exist. +ReturnCP=Return to previous page +ErrorUserViewCP=You are not authorized to read this leave request. +InfosCP=Information of the leave request +InfosWorkflowCP=Information Workflow +RequestByCP=Requested by +TitreRequestCP=Leave request +NbUseDaysCP=Number of days of vacation consumed +EditCP=Edit +DeleteCP=Delete +ActionValidCP=Validate +ActionRefuseCP=Refuse +ActionCancelCP=Cancel +StatutCP=Status +SendToValidationCP=Send to validation +TitleDeleteCP=Delete the leave request +ConfirmDeleteCP=Confirm the deletion of this leave request? +ErrorCantDeleteCP=Error you don't have the right to delete this leave request. +CantCreateCP=You don't have the right to make leave requests. +InvalidValidatorCP=You must choose an approbator to your leave request. +CantUpdate=You cannot update this leave request. +NoDateDebut=You must select a start date. +NoDateFin=You must select an end date. +ErrorDureeCP=Your leave request does not contain working day. +TitleValidCP=Approve the leave request +ConfirmValidCP=Are you sure you want to approve the leave request? +DateValidCP=Date approved +TitleToValidCP=Send leave request +ConfirmToValidCP=Are you sure you want to send the leave request? +TitleRefuseCP=Refuse the leave request +ConfirmRefuseCP=Are you sure you want to refuse the leave request? +NoMotifRefuseCP=You must choose a reason for refusing the request. +TitleCancelCP=Cancel the leave request +ConfirmCancelCP=Are you sure you want to cancel the leave request? +DetailRefusCP=Reason for refusal +DateRefusCP=Date of refusal +DateCancelCP=Date of cancellation +DefineEventUserCP=Assign an exceptional leave for a user +addEventToUserCP=Assign leave +MotifCP=Reason +UserCP=User +ErrorAddEventToUserCP=An error occurred while adding the exceptional leave. +AddEventToUserOkCP=The addition of the exceptional leave has been completed. +MenuLogCP=View logs of leave requests +LogCP=Log of updates of available vacation days +ActionByCP=Performed by +UserUpdateCP=For the user +PrevSoldeCP=Previous Balance +NewSoldeCP=New Balance +alreadyCPexist=A leave request has already been done on this period. +UserName=Name +Employee=Employee +FirstDayOfHoliday=First day of vacation +LastDayOfHoliday=Last day of vacation +HolidaysMonthlyUpdate=Monthly update +ManualUpdate=Manual update +HolidaysCancelation=Leave request cancelation + +## Configuration du Module ## +ConfCP=Configuration of leave request module +DescOptionCP=Description of the option +ValueOptionCP=Value +GroupToValidateCP=Group with the ability to approve leave requests +ConfirmConfigCP=Validate the configuration +LastUpdateCP=Last automatic update of leaves allocation +UpdateConfCPOK=Updated successfully. +ErrorUpdateConfCP=An error occurred during the update, please try again. +AddCPforUsers=Please add the balance of leaves allocation of users by clicking here. +DelayForSubmitCP=Deadline to make a leave requests +AlertapprobatortorDelayCP=Prevent the approbator if the leave request does not match the deadline +AlertValidatorDelayCP=Préevent the approbator if the leave request exceed delay +AlertValidorSoldeCP=Prevent the approbator if the leave request exceed the balance +nbUserCP=Number of users supported in the module Leaves +nbHolidayDeductedCP=Number of leave days to be deducted per day of vacation taken +nbHolidayEveryMonthCP=Number of leave days added every month +Module27130Name= Management of leave requests +Module27130Desc= Management of leave requests +TitleOptionMainCP=Main settings of leave request +TitleOptionEventCP=Settings of leave requets for events +ValidEventCP=Validate +UpdateEventCP=Update events +CreateEventCP=Create +NameEventCP=Event name +OkCreateEventCP=The addition of the event went well. +ErrorCreateEventCP=Error creating the event. +UpdateEventOkCP=The update of the event went well. +ErrorUpdateEventCP=Error while updating the event. +DeleteEventCP=Delete Event +DeleteEventOkCP=The event has been deleted. +ErrorDeleteEventCP=Error while deleting the event. +TitleDeleteEventCP=Delete a exceptional leave +TitleCreateEventCP=Create a exceptional leave +TitleUpdateEventCP=Edit or delete a exceptional leave +DeleteEventOptionCP=Delete +UpdateEventOptionCP=Update +ErrorMailNotSend=An error occurred while sending email: +NoCPforMonth=No leave this month. +nbJours=Number days +TitleAdminCP=Configuration of Leaves +#Messages +Hello=Hello +HolidaysToValidate=Validate leave requests +HolidaysToValidateBody=Below is a leave request to validate +HolidaysToValidateDelay=This leave request will take place within a period of less than %s days. +HolidaysToValidateAlertSolde=The user who made this leave reques do not have enough available days. +HolidaysValidated=Validated leave requests +HolidaysValidatedBody=Your leave request for %s to %s has been validated. +HolidaysRefused=Request denied +HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason : +HolidaysCanceled=Canceled leaved request +HolidaysCanceledBody=Your leave request for %s to %s has been canceled. +Permission20000=Read you own leave requests +Permission20001=Create/modify your leave requests +Permission20002=Create/modify leave requests for everybody +Permission20003=Delete leave requests +Permission20004=Setup users available vacation days +Permission20005=Review log of modified leave requests +Permission20006=Read leaves monthly report diff --git a/htdocs/langs/lo_LA/install.lang b/htdocs/langs/lo_LA/install.lang new file mode 100644 index 00000000000..dcd8df6e7db --- /dev/null +++ b/htdocs/langs/lo_LA/install.lang @@ -0,0 +1,214 @@ +# Dolibarr language file - Source file is en_US - install +InstallEasy=Just follow the instructions step by step. +MiscellaneousChecks=Prerequisites check +DolibarrWelcome=Welcome to Dolibarr +ConfFileExists=Configuration file %s exists. +ConfFileDoesNotExists=Configuration file %s does not exist ! +ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file %s does not exist and could not be created ! +ConfFileCouldBeCreated=Configuration file %s could be created. +ConfFileIsNotWritable=Configuration file %s is not writable. Check permissions. For first install, your web server must be granted to be able to write into this file during configuration process ("chmod 666" for example on a Unix like OS). +ConfFileIsWritable=Configuration file %s is writable. +ConfFileReload=Reload all information from configuration file. +PHPSupportSessions=This PHP supports sessions. +PHPSupportPOSTGETOk=This PHP supports variables POST and GET. +PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check your parameter variables_order in php.ini. +PHPSupportGD=This PHP support GD graphical functions. +PHPSupportUTF8=This PHP support UTF8 functions. +PHPMemoryOK=Your PHP max session memory is set to %s. This should be enough. +PHPMemoryTooLow=Your PHP max session memory is set to %s bytes. This should be too low. Change your php.ini to set memory_limit parameter to at least %s bytes. +Recheck=Click here for a more significative test +ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to make Dolibarr working. Check your PHP setup. +ErrorPHPDoesNotSupportGD=Your PHP installation does not support graphical function GD. No graph will be available. +ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr can't work correctly. Solve this before installing Dolibarr. +ErrorDirDoesNotExists=Directory %s does not exist. +ErrorGoBackAndCorrectParameters=Go backward and correct wrong parameters. +ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'. +ErrorFailedToCreateDatabase=Failed to create database '%s'. +ErrorFailedToConnectToDatabase=Failed to connect to database '%s'. +ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. +ErrorPHPVersionTooLow=PHP version too old. Version %s is required. +WarningPHPVersionTooLow=PHP version too old. Version %s or more is expected. This version should allow install but is not supported. +ErrorConnectedButDatabaseNotFound=Connection to server successfull but database '%s' not found. +ErrorDatabaseAlreadyExists=Database '%s' already exists. +IfDatabaseNotExistsGoBackAndUncheckCreate=If database does not exists, go back and check option "Create database". +IfDatabaseExistsGoBackAndCheckCreate=If database already exists, go back and uncheck "Create database" option. +WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded. +PHPVersion=PHP Version +YouCanContinue=You can continue... +PleaseBePatient=Please be patient... +License=Using license +ConfigurationFile=Configuration file +WebPagesDirectory=Directory where web pages are stored +DocumentsDirectory=Directory to store uploaded and generated documents +URLRoot=URL Root +ForceHttps=Force secure connections (https) +CheckToForceHttps=Check this option to force secure connections (https).
This requires that the web server is configured with an SSL certificate. +DolibarrDatabase=Dolibarr Database +DatabaseChoice=Database choice +DatabaseType=Database type +DriverType=Driver type +Server=Server +ServerAddressDescription=Name or ip address for database server, usually 'localhost' when database server is hosted on same server than web server +ServerPortDescription=Database server port. Keep empty if unknown. +DatabaseServer=Database server +DatabaseName=Database name +DatabasePrefix=Database prefix table +Login=Login +AdminLogin=Login for Dolibarr database owner. +Password=Password +PasswordAgain=Retype password a second time +AdminPassword=Password for Dolibarr database owner. +CreateDatabase=Create database +CreateUser=Create owner +DatabaseSuperUserAccess=Database server - Superuser access +CheckToCreateDatabase=Check box if database does not exist and must be created.
In this case, you must fill the login/password for superuser account at the bottom of this page. +CheckToCreateUser=Check box if database owner does not exist and must be created.
In this case, you must choose its login and password and also fill the login/password for the superuser account at the bottom of this page. If this box is unchecked, owner database and its passwords must exists. +Experimental=(experimental) +DatabaseRootLoginDescription=Login of the user allowed to create new databases or new users, mandatory if your database or its owner does not already exists. +KeepEmptyIfNoPassword=Leave empty if user has no password (avoid this) +SaveConfigurationFile=Save values +ConfigurationSaving=Saving configuration file +ServerConnection=Server connection +DatabaseConnection=Database connection +DatabaseCreation=Database creation +UserCreation=User creation +CreateDatabaseObjects=Database objects creation +ReferenceDataLoading=Reference data loading +TablesAndPrimaryKeysCreation=Tables and Primary keys creation +CreateTableAndPrimaryKey=Create table %s +CreateOtherKeysForTable=Create foreign keys and indexes for table %s +OtherKeysCreation=Foreign keys and indexes creation +FunctionsCreation=Functions creation +AdminAccountCreation=Administrator login creation +PleaseTypePassword=Please type a password, empty passwords are not allowed ! +PleaseTypeALogin=Please type a login ! +PasswordsMismatch=Passwords differs, please try again ! +SetupEnd=End of setup +SystemIsInstalled=This installation is complete. +SystemIsUpgraded=Dolibarr has been upgraded successfully. +YouNeedToPersonalizeSetup=You need to configure Dolibarr to suit your needs (appearance, features, ...). To do this, please follow the link below: +AdminLoginCreatedSuccessfuly=Dolibarr administrator login '%s' created successfuly. +GoToDolibarr=Go to Dolibarr +GoToSetupArea=Go to Dolibarr (setup area) +MigrationNotFinished=Version of your database is not completely up to date, so you'll have to run the upgrade process again. +GoToUpgradePage=Go to upgrade page again +Examples=Examples +WithNoSlashAtTheEnd=Without the slash "/" at the end +DirectoryRecommendation=It is recommanded to use a directory outside of your directory of your web pages. +LoginAlreadyExists=Already exists +DolibarrAdminLogin=Dolibarr admin login +AdminLoginAlreadyExists=Dolibarr administrator account '%s' already exists. Go back, if you want to create another one. +WarningRemoveInstallDir=Warning, for security reasons, once the install or upgrade is complete, to avoid using install tools again, you should add a file called install.lock into Dolibarr document directory, in order to avoid malicious use of it. +ThisPHPDoesNotSupportTypeBase=This PHP system does not support any interface to access database type %s +FunctionNotAvailableInThisPHP=Not available on this PHP +MigrateScript=Migration script +ChoosedMigrateScript=Choose migration script +DataMigration=Data migration +DatabaseMigration=Structure database migration +ProcessMigrateScript=Script processing +ChooseYourSetupMode=Choose your setup mode and click "Start"... +FreshInstall=Fresh install +FreshInstallDesc=Use this mode if this is your first install. If not, this mode can repair a incomplete previous install, but if you want to upgrade your version, choose "Upgrade" mode. +Upgrade=Upgrade +UpgradeDesc=Use this mode if you have replaced old Dolibarr files with files from a newer version. This will upgrade your database and data. +Start=Start +InstallNotAllowed=Setup not allowed by conf.php permissions +NotAvailable=Not available +YouMustCreateWithPermission=You must create file %s and set write permissions on it for the web server during install process. +CorrectProblemAndReloadPage=Please fix the problem and press F5 to reload page. +AlreadyDone=Already migrated +DatabaseVersion=Database version +ServerVersion=Database server version +YouMustCreateItAndAllowServerToWrite=You must create this directory and allow for the web server to write into it. +CharsetChoice=Character set choice +CharacterSetClient=Character set used for generated HTML web pages +CharacterSetClientComment=Choose character set for web display.
Default proposed character set is the one of your database. +DBSortingCollation=Character sorting order +DBSortingCollationComment=Choose page code that defines character's sorting order used by database. This parameter is also called 'collation' by some databases.
This parameter can't be defined if database already exists. +CharacterSetDatabase=Character set for database +CharacterSetDatabaseComment=Choose character set wanted for database creation.
This parameter can't be defined if database already exists. +YouAskDatabaseCreationSoDolibarrNeedToConnect=You ask to create database %s, but for this, Dolibarr need to connect to server %s with super user %s permissions. +YouAskLoginCreationSoDolibarrNeedToConnect=You ask to create database login %s, but for this, Dolibarr need to connect to server %s with super user %s permissions. +BecauseConnectionFailedParametersMayBeWrong=As connection failed, host or super user parameters must be wrong. +OrphelinsPaymentsDetectedByMethod=Orphans payment detected by method %s +RemoveItManuallyAndPressF5ToContinue=Remove it manually and press F5 to continue. +KeepDefaultValuesWamp=You use the Dolibarr setup wizard from DoliWamp, so values proposed here are already optimized. Change them only if you know what you do. +KeepDefaultValuesDeb=You use the Dolibarr setup wizard from a Linux package (Ubuntu, Debian, Fedora...), so values proposed here are already optimized. Only the password of the database owner to create must be completed. Change other parameters only if you know what you do. +KeepDefaultValuesMamp=You use the Dolibarr setup wizard from DoliMamp, so values proposed here are already optimized. Change them only if you know what you do. +KeepDefaultValuesProxmox=You use the Dolibarr setup wizard from a Proxmox virtual appliance, so values proposed here are already optimized. Change them only if you know what you do. +FieldRenamed=Field renamed +IfLoginDoesNotExistsCheckCreateUser=If login does not exists yet, you must check option "Create user" +ErrorConnection=Server "%s", database name "%s", login "%s", or database password may be wrong or PHP client version may be too old compared to database version. +InstallChoiceRecommanded=Recommended choice to install version %s from your current version %s +InstallChoiceSuggested=Install choice suggested by installer. +MigrateIsDoneStepByStep=The targeted version (%s) has a gap of several versions, so install wizard will come back to suggest next migration once this one will be finished. +CheckThatDatabasenameIsCorrect=Check that database name "%s" is correct. +IfAlreadyExistsCheckOption=If this name is correct and that database does not exist yet, you must check option "Create database". +OpenBaseDir=PHP openbasedir parameter +YouAskToCreateDatabaseSoRootRequired=You checked the box "Create database". For this, you need to provide login/password of superuser (bottom of form). +YouAskToCreateDatabaseUserSoRootRequired=You checked the box "Create database owner". For this, you need to provide login/password of superuser (bottom of form). +NextStepMightLastALongTime=Current step may last several minutes. Please wait until the next screen is shown completely before continuing. +MigrationCustomerOrderShipping=Migrate shipping for customer orders storage +MigrationShippingDelivery=Upgrade storage of shipping +MigrationShippingDelivery2=Upgrade storage of shipping 2 +MigrationFinished=Migration finished +LastStepDesc=Last step: Define here login and password you plan to use to connect to software. Do not loose this as it is the account to administer all others. +ActivateModule=Activate module %s +ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) +WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) + +######### +# upgrade +MigrationFixData=Fix for denormalized data +MigrationOrder=Data migration for customer's orders +MigrationSupplierOrder=Data migration for supplier's orders +MigrationProposal=Data migration for commercial proposals +MigrationInvoice=Data migration for customer's invoices +MigrationContract=Data migration for contracts +MigrationSuccessfullUpdate=Upgrade successful +MigrationUpdateFailed=Failed upgrade process +MigrationRelationshipTables=Data migration for relationship tables (%s) +MigrationPaymentsUpdate=Payment data correction +MigrationPaymentsNumberToUpdate=%s payment(s) to update +MigrationProcessPaymentUpdate=Update payment(s) %s +MigrationPaymentsNothingToUpdate=No more things to do +MigrationPaymentsNothingUpdatable=No more payments that can be corrected +MigrationContractsUpdate=Contract data correction +MigrationContractsNumberToUpdate=%s contract(s) to update +MigrationContractsLineCreation=Create contract line for contract ref %s +MigrationContractsNothingToUpdate=No more things to do +MigrationContractsFieldDontExist=Field fk_facture does not exists anymore. Nothing to do. +MigrationContractsEmptyDatesUpdate=Contract empty date correction +MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfuly +MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct +MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct +MigrationContractsInvalidDatesUpdate=Bad value date contract correction +MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting service date min=%s) +MigrationContractsInvalidDatesNumber=%s contracts modified +MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct +MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction +MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done succesfuly +MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct +MigrationReopeningContracts=Open contract closed by error +MigrationReopenThisContract=Reopen contract %s +MigrationReopenedContractsNumber=%s contracts modified +MigrationReopeningContractsNothingToUpdate=No closed contract to open +MigrationBankTransfertsUpdate=Update links between bank transaction and a bank transfer +MigrationBankTransfertsNothingToUpdate=All links are up to date +MigrationShipmentOrderMatching=Sendings receipt update +MigrationDeliveryOrderMatching=Delivery receipt update +MigrationDeliveryDetail=Delivery update +MigrationStockDetail=Update stock value of products +MigrationMenusDetail=Update dynamic menus tables +MigrationDeliveryAddress=Update delivery address in shipments +MigrationProjectTaskActors=Data migration for llx_projet_task_actors table +MigrationProjectUserResp=Data migration field fk_user_resp of llx_projet to llx_element_contact +MigrationProjectTaskTime=Update time spent in seconds +MigrationActioncommElement=Update data on actions +MigrationPaymentMode=Data migration for payment mode +MigrationCategorieAssociation=Migration of categories +MigrationEvents=Migration of events to add event owner into assignement table + +ShowNotAvailableOptions=Show not available options +HideNotAvailableOptions=Hide not available options diff --git a/htdocs/langs/lo_LA/interventions.lang b/htdocs/langs/lo_LA/interventions.lang new file mode 100644 index 00000000000..c79da05364e --- /dev/null +++ b/htdocs/langs/lo_LA/interventions.lang @@ -0,0 +1,53 @@ +# Dolibarr language file - Source file is en_US - interventions +Intervention=Intervention +Interventions=Interventions +InterventionCard=Intervention card +NewIntervention=New intervention +AddIntervention=Create intervention +ListOfInterventions=List of interventions +EditIntervention=Edit intervention +ActionsOnFicheInter=Actions on intervention +LastInterventions=Last %s interventions +AllInterventions=All interventions +CreateDraftIntervention=Create draft +CustomerDoesNotHavePrefix=Customer does not have a prefix +InterventionContact=Intervention contact +DeleteIntervention=Delete intervention +ValidateIntervention=Validate intervention +ModifyIntervention=Modify intervention +DeleteInterventionLine=Delete intervention line +ConfirmDeleteIntervention=Are you sure you want to delete this intervention ? +ConfirmValidateIntervention=Are you sure you want to validate this intervention under name %s ? +ConfirmModifyIntervention=Are you sure you want to modify this intervention ? +ConfirmDeleteInterventionLine=Are you sure you want to delete this intervention line ? +NameAndSignatureOfInternalContact=Name and signature of intervening : +NameAndSignatureOfExternalContact=Name and signature of customer : +DocumentModelStandard=Standard document model for interventions +InterventionCardsAndInterventionLines=Interventions and lines of interventions +InterventionClassifyBilled=Classify "Billed" +InterventionClassifyUnBilled=Classify "Unbilled" +StatusInterInvoiced=Billed +RelatedInterventions=Related interventions +ShowIntervention=Show intervention +SendInterventionRef=Submission of intervention %s +SendInterventionByMail=Send intervention by Email +InterventionCreatedInDolibarr=Intervention %s created +InterventionValidatedInDolibarr=Intervention %s validated +InterventionModifiedInDolibarr=Intervention %s modified +InterventionClassifiedBilledInDolibarr=Intervention %s set as billed +InterventionClassifiedUnbilledInDolibarr=Intervention %s set as unbilled +InterventionSentByEMail=Intervention %s sent by EMail +InterventionDeletedInDolibarr=Intervention %s deleted +SearchAnIntervention=Search an intervention +##### Types de contacts ##### +TypeContact_fichinter_internal_INTERREPFOLL=Representative following-up intervention +TypeContact_fichinter_internal_INTERVENING=Intervening +TypeContact_fichinter_external_BILLING=Billing customer contact +TypeContact_fichinter_external_CUSTOMER=Following-up customer contact +# Modele numérotation +ArcticNumRefModelDesc1=Generic number model +ArcticNumRefModelError=Failed to activate +PacificNumRefModelDesc1=Return numero with format %syymm-nnnn where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 +PacificNumRefModelError=An intervention card starting with $syymm already exists and is not compatible with this model of sequence. Remove it or rename it to activate this module. +PrintProductsOnFichinter=Print products on intervention card +PrintProductsOnFichinterDetails=forinterventions generated from orders diff --git a/htdocs/langs/lo_LA/languages.lang b/htdocs/langs/lo_LA/languages.lang new file mode 100644 index 00000000000..d20aab00146 --- /dev/null +++ b/htdocs/langs/lo_LA/languages.lang @@ -0,0 +1,72 @@ +# Dolibarr language file - Source file is en_US - languages + +Language_ar_AR=Arabic +Language_ar_SA=Arabic +Language_bg_BG=Bulgarian +Language_bs_BA=Bosnian +Language_ca_ES=Catalan +Language_cs_CZ=Czech +Language_da_DA=Danish +Language_da_DK=Danish +Language_de_DE=German +Language_de_AT=German (Austria) +Language_de_CH=German (Switzerland) +Language_el_GR=Greek +Language_en_AU=English (Australia) +Language_en_CA=English (Canada) +Language_en_GB=English (United Kingdom) +Language_en_IN=English (India) +Language_en_NZ=English (New Zealand) +Language_en_SA=English (Saudi Arabia) +Language_en_US=English (United States) +Language_en_ZA=English (South Africa) +Language_es_ES=Spanish +Language_es_DO=Spanish (Dominican Republic) +Language_es_AR=Spanish (Argentina) +Language_es_CL=Spanish (Chile) +Language_es_HN=Spanish (Honduras) +Language_es_MX=Spanish (Mexico) +Language_es_PY=Spanish (Paraguay) +Language_es_PE=Spanish (Peru) +Language_es_PR=Spanish (Puerto Rico) +Language_et_EE=Estonian +Language_eu_ES=Basque +Language_fa_IR=Persian +Language_fi_FI=Fins +Language_fr_BE=French (Belgium) +Language_fr_CA=French (Canada) +Language_fr_CH=French (Switzerland) +Language_fr_FR=French +Language_fr_NC=French (New Caledonia) +Language_he_IL=Hebrew +Language_hr_HR=Croatian +Language_hu_HU=Hungarian +Language_id_ID=Indonesian +Language_is_IS=Icelandic +Language_it_IT=Italian +Language_ja_JP=Japanese +Language_ko_KR=Korean +Language_lt_LT=Lithuanian +Language_lv_LV=Latvian +Language_mk_MK=Macedonian +Language_nb_NO=Norwegian (Bokmål) +Language_nl_BE=Dutch (Belgium) +Language_nl_NL=Dutch (Netherlands) +Language_pl_PL=Polish +Language_pt_BR=Portuguese (Brazil) +Language_pt_PT=Portuguese +Language_ro_RO=Romanian +Language_ru_RU=Russian +Language_ru_UA=Russian (Ukraine) +Language_tr_TR=Turkish +Language_sl_SI=Slovenian +Language_sv_SV=Swedish +Language_sv_SE=Swedish +Language_sq_AL=Albanian +Language_sk_SK=Slovakian +Language_th_TH=Thai +Language_uk_UA=Ukrainian +Language_uz_UZ=Uzbek +Language_vi_VN=Vietnamese +Language_zh_CN=Chinese +Language_zh_TW=Chinese (Traditional) diff --git a/htdocs/langs/lo_LA/ldap.lang b/htdocs/langs/lo_LA/ldap.lang new file mode 100644 index 00000000000..02e457446a6 --- /dev/null +++ b/htdocs/langs/lo_LA/ldap.lang @@ -0,0 +1,29 @@ +# Dolibarr language file - Source file is en_US - ldap +DomainPassword=Password for domain +YouMustChangePassNextLogon=Password for user %s on the domain %s must be changed. +UserMustChangePassNextLogon=User must change password on the domain %s +LdapUacf_NORMAL_ACCOUNT=User account +LdapUacf_DONT_EXPIRE_PASSWORD=Password never expires +LdapUacf_ACCOUNTDISABLE=Account is disabled in the domain %s +LDAPInformationsForThisContact=Information in LDAP database for this contact +LDAPInformationsForThisUser=Information in LDAP database for this user +LDAPInformationsForThisGroup=Information in LDAP database for this group +LDAPInformationsForThisMember=Information in LDAP database for this member +LDAPAttribute=LDAP attribute +LDAPAttributes=LDAP attributes +LDAPCard=LDAP card +LDAPRecordNotFound=Record not found in LDAP database +LDAPUsers=Users in LDAP database +LDAPGroups=Groups in LDAP database +LDAPFieldStatus=Status +LDAPFieldFirstSubscriptionDate=First subscription date +LDAPFieldFirstSubscriptionAmount=First subscription amount +LDAPFieldLastSubscriptionDate=Last subscription date +LDAPFieldLastSubscriptionAmount=Last subscription amount +SynchronizeDolibarr2Ldap=Synchronize user (Dolibarr -> LDAP) +UserSynchronized=User synchronized +GroupSynchronized=Group synchronized +MemberSynchronized=Member synchronized +ContactSynchronized=Contact synchronized +ForceSynchronize=Force synchronizing Dolibarr -> LDAP +ErrorFailedToReadLDAP=Failed to read LDAP database. Check LDAP module setup and database accessibility. diff --git a/htdocs/langs/lo_LA/link.lang b/htdocs/langs/lo_LA/link.lang new file mode 100644 index 00000000000..8b1efb75ef3 --- /dev/null +++ b/htdocs/langs/lo_LA/link.lang @@ -0,0 +1,8 @@ +LinkANewFile=Link a new file/document +LinkedFiles=Linked files and documents +NoLinkFound=No registered links +LinkComplete=The file has been linked successfully +ErrorFileNotLinked=The file could not be linked +LinkRemoved=The link %s has been removed +ErrorFailedToDeleteLink= Failed to remove link '%s' +ErrorFailedToUpdateLink= Failed to update link '%s' diff --git a/htdocs/langs/lo_LA/mailmanspip.lang b/htdocs/langs/lo_LA/mailmanspip.lang new file mode 100644 index 00000000000..c85b3d60db2 --- /dev/null +++ b/htdocs/langs/lo_LA/mailmanspip.lang @@ -0,0 +1,27 @@ +# Dolibarr language file - Source file is en_US - mailmanspip +MailmanSpipSetup=Mailman and SPIP module Setup +MailmanTitle=Mailman mailing list system +TestSubscribe=To test subscription to Mailman lists +TestUnSubscribe=To test unsubscribe from Mailman lists +MailmanCreationSuccess=Subscription test was executed succesfully +MailmanDeletionSuccess=Unsubscription test was executed succesfully +SynchroMailManEnabled=A Mailman update will be performed +SynchroSpipEnabled=A Spip update will be performed +DescADHERENT_MAILMAN_ADMINPW=Mailman administrator password +DescADHERENT_MAILMAN_URL=URL for Mailman subscriptions +DescADHERENT_MAILMAN_UNSUB_URL=URL for Mailman unsubscriptions +DescADHERENT_MAILMAN_LISTS=List(s) for automatic inscription of new members (separated by a comma) +SPIPTitle=SPIP Content Management System +DescADHERENT_SPIP_SERVEUR=SPIP Server +DescADHERENT_SPIP_DB=SPIP database name +DescADHERENT_SPIP_USER=SPIP database login +DescADHERENT_SPIP_PASS=SPIP database password +AddIntoSpip=Add into SPIP +AddIntoSpipConfirmation=Are you sure you want to add this member into SPIP? +AddIntoSpipError=Failed to add the user in SPIP +DeleteIntoSpip=Remove from SPIP +DeleteIntoSpipConfirmation=Are you sure you want to remove this member from SPIP? +DeleteIntoSpipError=Failed to suppress the user from SPIP +SPIPConnectionFailed=Failed to connect to SPIP +SuccessToAddToMailmanList=Add of %s to mailman list %s or SPIP database done +SuccessToRemoveToMailmanList=Removal of %s from mailman list %s or SPIP database done diff --git a/htdocs/langs/lo_LA/mails.lang b/htdocs/langs/lo_LA/mails.lang new file mode 100644 index 00000000000..7a211198822 --- /dev/null +++ b/htdocs/langs/lo_LA/mails.lang @@ -0,0 +1,141 @@ +# Dolibarr language file - Source file is en_US - mails +Mailing=EMailing +EMailing=EMailing +Mailings=EMailings +EMailings=EMailings +AllEMailings=All eMailings +MailCard=EMailing card +MailTargets=Targets +MailRecipients=Recipients +MailRecipient=Recipient +MailTitle=Description +MailFrom=Sender +MailErrorsTo=Errors to +MailReply=Reply to +MailTo=Receiver(s) +MailCC=Copy to +MailCCC=Cached copy to +MailTopic=EMail topic +MailText=Message +MailFile=Attached files +MailMessage=EMail body +ShowEMailing=Show emailing +ListOfEMailings=List of emailings +NewMailing=New emailing +EditMailing=Edit emailing +ResetMailing=Resend emailing +DeleteMailing=Delete emailing +DeleteAMailing=Delete an emailing +PreviewMailing=Preview emailing +PrepareMailing=Prepare emailing +CreateMailing=Create emailing +MailingDesc=This page allows you to send emailings to a group of people. +MailingResult=Sending emails result +TestMailing=Test email +ValidMailing=Valid emailing +ApproveMailing=Approve emailing +MailingStatusDraft=Draft +MailingStatusValidated=Validated +MailingStatusApproved=Approved +MailingStatusSent=Sent +MailingStatusSentPartialy=Sent partialy +MailingStatusSentCompletely=Sent completely +MailingStatusError=Error +MailingStatusNotSent=Not sent +MailSuccessfulySent=Email successfully sent (from %s to %s) +MailingSuccessfullyValidated=EMailing successfully validated +MailUnsubcribe=Unsubscribe +Unsuscribe=Unsubscribe +MailingStatusNotContact=Don't contact anymore +ErrorMailRecipientIsEmpty=Email recipient is empty +WarningNoEMailsAdded=No new Email to add to recipient's list. +ConfirmValidMailing=Are you sure you want to validate this emailing ? +ConfirmResetMailing=Warning, by reinitializing emailing %s, you allow to make a mass sending of this email another time. Are you sure you this is what you want to do ? +ConfirmDeleteMailing=Are you sure you want to delete this emailling ? +NbOfRecipients=Number of recipients +NbOfUniqueEMails=Nb of unique emails +NbOfEMails=Nb of EMails +TotalNbOfDistinctRecipients=Number of distinct recipients +NoTargetYet=No recipients defined yet (Go on tab 'Recipients') +AddRecipients=Add recipients +RemoveRecipient=Remove recipient +CommonSubstitutions=Common substitutions +YouCanAddYourOwnPredefindedListHere=To create your email selector module, see htdocs/core/modules/mailings/README. +EMailTestSubstitutionReplacedByGenericValues=When using test mode, substitutions variables are replaced by generic values +MailingAddFile=Attach this file +NoAttachedFiles=No attached files +BadEMail=Bad value for EMail +CloneEMailing=Clone Emailing +ConfirmCloneEMailing=Are you sure you want to clone this emailing ? +CloneContent=Clone message +CloneReceivers=Cloner recipients +DateLastSend=Date of last sending +DateSending=Date sending +SentTo=Sent to %s +MailingStatusRead=Read +CheckRead=Read Receipt +YourMailUnsubcribeOK=The email %s is correctly unsubcribe from mailing list +MailtoEMail=Hyper link to email +ActivateCheckRead=Allow to use the "Unsubcribe" link +ActivateCheckReadKey=Key use to encrypt URL use for "Read Receipt" and "Unsubcribe" feature +EMailSentToNRecipients=EMail sent to %s recipients. +XTargetsAdded=%s recipients added into target list +EachInvoiceWillBeAttachedToEmail=A document using default invoice document template will be created and attached to each email. +MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s) +SendRemind=Send reminder by EMails +RemindSent=%s reminder(s) sent +AllRecipientSelectedForRemind=All thirdparties selected and if an email is set (note that one mail per invoice will be sent) +NoRemindSent=No EMail reminder sent +ResultOfMassSending=Result of mass EMail reminders sending + +# Libelle des modules de liste de destinataires mailing +MailingModuleDescContactCompanies=Contacts/addresses of all third parties (customer, prospect, supplier, ...) +MailingModuleDescDolibarrUsers=Dolibarr users +MailingModuleDescFundationMembers=Foundation members with emails +MailingModuleDescEmailsFromFile=EMails from a text file (email;lastname;firstname;other) +MailingModuleDescEmailsFromUser=EMails from user input (email;lastname;firstname;other) +MailingModuleDescContactsCategories=Third parties (by category) +MailingModuleDescDolibarrContractsLinesExpired=Third parties with expired contract's lines +MailingModuleDescContactsByCompanyCategory=Contacts/addresses of third parties (by third parties category) +MailingModuleDescContactsByCategory=Contacts/addresses of third parties by category +MailingModuleDescMembersCategories=Foundation members (by categories) +MailingModuleDescContactsByFunction=Contacts/addresses of third parties (by position/function) +LineInFile=Line %s in file +RecipientSelectionModules=Defined requests for recipient's selection +MailSelectedRecipients=Selected recipients +MailingArea=EMailings area +LastMailings=Last %s emailings +TargetsStatistics=Targets statistics +NbOfCompaniesContacts=Unique contacts/addresses +MailNoChangePossible=Recipients for validated emailing can't be changed +SearchAMailing=Search mailing +SendMailing=Send emailing +SendMail=Send email +SentBy=Sent by +MailingNeedCommand=For security reason, sending an emailing is better when performed from command line. If you have one, ask your server administrator to launch the following command to send the emailing to all recipients: +MailingNeedCommand2=You can however send them online by adding parameter MAILING_LIMIT_SENDBYWEB with value of max number of emails you want to send by session. For this, go on Home - Setup - Other. +ConfirmSendingEmailing=If you can't or prefer sending them with your www browser, please confirm you are sure you want to send emailing now from your browser ? +LimitSendingEmailing=Note: Sending of emailings from web interface is done in several times for security and timeout reasons, %s recipients at a time for each sending session. +TargetsReset=Clear list +ToClearAllRecipientsClickHere=Click here to clear the recipient list for this emailing +ToAddRecipientsChooseHere=Add recipients by choosing from the lists +NbOfEMailingsReceived=Mass emailings received +NbOfEMailingsSend=Mass emailings sent +IdRecord=ID record +DeliveryReceipt=Delivery Receipt +YouCanUseCommaSeparatorForSeveralRecipients=You can use the comma separator to specify several recipients. +TagCheckMail=Track mail opening +TagUnsubscribe=Unsubscribe link +TagSignature=Signature sending user +TagMailtoEmail=Recipient EMail +# Module Notifications +Notifications=Notifications +NoNotificationsWillBeSent=No email notifications are planned for this event and company +ANotificationsWillBeSent=1 notification will be sent by email +SomeNotificationsWillBeSent=%s notifications will be sent by email +AddNewNotification=Activate a new email notification target +ListOfActiveNotifications=List all active email notification targets +ListOfNotificationsDone=List all email notifications sent +MailSendSetupIs=Configuration of email sending has been setup to '%s'. This mode can't be used to send mass emailing. +MailSendSetupIs2=You must first go, with an admin account, into menu %sHome - Setup - EMails%s to change parameter '%s' to use mode '%s'. With this mode, you can enter setup of the SMTP server provided by your Internet Service Provider and use Mass emailing feature. +MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s. diff --git a/htdocs/langs/lo_LA/main.lang b/htdocs/langs/lo_LA/main.lang new file mode 100644 index 00000000000..d40e28cb776 --- /dev/null +++ b/htdocs/langs/lo_LA/main.lang @@ -0,0 +1,725 @@ +# Dolibarr language file - Source file is en_US - main +DIRECTION=ltr +# Note for Chinese: +# msungstdlight or cid0ct are for traditional Chinese (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese +# To read Chinese pdf with Linux: sudo apt-get install poppler-data +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 +SeparatorDecimal=. +SeparatorThousand=, +FormatDateShort=%m/%d/%Y +FormatDateShortInput=%m/%d/%Y +FormatDateShortJava=MM/dd/yyyy +FormatDateShortJavaInput=MM/dd/yyyy +FormatDateShortJQuery=mm/dd/yy +FormatDateShortJQueryInput=mm/dd/yy +FormatHourShortJQuery=HH:MI +FormatHourShort=%I:%M %p +FormatHourShortDuration=%H:%M +FormatDateTextShort=%b %d, %Y +FormatDateText=%B %d, %Y +FormatDateHourShort=%m/%d/%Y %I:%M %p +FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p +FormatDateHourTextShort=%b %d, %Y, %I:%M %p +FormatDateHourText=%B %d, %Y, %I:%M %p +DatabaseConnection=Database connection +NoTranslation=No translation +NoRecordFound=No record found +NoError=No error +Error=Error +ErrorFieldRequired=Field '%s' is required +ErrorFieldFormat=Field '%s' has a bad value +ErrorFileDoesNotExists=File %s does not exist +ErrorFailedToOpenFile=Failed to open file %s +ErrorCanNotCreateDir=Can not create dir %s +ErrorCanNotReadDir=Can not read dir %s +ErrorConstantNotDefined=Parameter %s not defined +ErrorUnknown=Unknown error +ErrorSQL=SQL Error +ErrorLogoFileNotFound=Logo file '%s' was not found +ErrorGoToGlobalSetup=Go to 'Company/Foundation' setup to fix this +ErrorGoToModuleSetup=Go to Module setup to fix this +ErrorFailedToSendMail=Failed to send mail (sender=%s, receiver=%s) +ErrorAttachedFilesDisabled=File attaching is disabled on this server +ErrorFileNotUploaded=File was not uploaded. Check that size does not exceed maximum allowed, that free space is available on disk and that there is not already a file with same name in this directory. +ErrorInternalErrorDetected=Error detected +ErrorNoRequestRan=No request ran +ErrorWrongHostParameter=Wrong host parameter +ErrorYourCountryIsNotDefined=Your country is not defined. Go to Home-Setup-Edit and post again the form. +ErrorRecordIsUsedByChild=Failed to delete this record. This record is used by at least one child records. +ErrorWrongValue=Wrong value +ErrorWrongValueForParameterX=Wrong value for parameter %s +ErrorNoRequestInError=No request in error +ErrorServiceUnavailableTryLater=Service not available for the moment. Try again later. +ErrorDuplicateField=Duplicate value in a unique field +ErrorSomeErrorWereFoundRollbackIsDone=Some errors were found. We rollback changes. +ErrorConfigParameterNotDefined=Parameter %s is not defined inside Dolibarr config file conf.php. +ErrorCantLoadUserFromDolibarrDatabase=Failed to find user %s in Dolibarr database. +ErrorNoVATRateDefinedForSellerCountry=Error, no vat rates defined for country '%s'. +ErrorNoSocialContributionForSellerCountry=Error, no social contribution type defined for country '%s'. +ErrorFailedToSaveFile=Error, failed to save file. +SetDate=Set date +SelectDate=Select a date +SeeAlso=See also %s +SeeHere=See here +BackgroundColorByDefault=Default background color +FileNotUploaded=The file was not uploaded +FileUploaded=The file was successfully uploaded +FileWasNotUploaded=A file is selected for attachment but was not yet uploaded. Click on "Attach file" for this. +NbOfEntries=Nb of entries +GoToWikiHelpPage=Read online help (need Internet access) +GoToHelpPage=Read help +RecordSaved=Record saved +RecordDeleted=Record deleted +LevelOfFeature=Level of features +NotDefined=Not defined +DefinedAndHasThisValue=Defined and value to +IsNotDefined=undefined +DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr authentication mode is setup to %s in configuration file conf.php.
This means that password database is extern to Dolibarr, so changing this field may have no effects. +Administrator=Administrator +Undefined=Undefined +PasswordForgotten=Password forgotten ? +SeeAbove=See above +HomeArea=Home area +LastConnexion=Last connection +PreviousConnexion=Previous connection +ConnectedOnMultiCompany=Connected on environment +ConnectedSince=Connected since +AuthenticationMode=Authentification mode +RequestedUrl=Requested Url +DatabaseTypeManager=Database type manager +RequestLastAccess=Request for last database access +RequestLastAccessInError=Request for last database access in error +ReturnCodeLastAccessInError=Return code for last database access in error +InformationLastAccessInError=Information for last database access in error +DolibarrHasDetectedError=Dolibarr has detected a technical error +InformationToHelpDiagnose=This is information that can help diagnostic +MoreInformation=More information +TechnicalInformation=Technical information +NotePublic=Note (public) +NotePrivate=Note (private) +PrecisionUnitIsLimitedToXDecimals=Dolibarr was setup to limit precision of unit prices to %s decimals. +DoTest=Test +ToFilter=Filter +WarningYouHaveAtLeastOneTaskLate=Warning, you have at least one element that has exceeded the tolerance delay. +yes=yes +Yes=Yes +no=no +No=No +All=All +Home=Home +Help=Help +OnlineHelp=Online help +PageWiki=Wiki page +Always=Always +Never=Never +Under=under +Period=Period +PeriodEndDate=End date for period +Activate=Activate +Activated=Activated +Closed=Closed +Closed2=Closed +Enabled=Enabled +Deprecated=Deprecated +Disable=Disable +Disabled=Disabled +Add=Add +AddLink=Add link +Update=Update +AddActionToDo=Add event to do +AddActionDone=Add event done +Close=Close +Close2=Close +Confirm=Confirm +ConfirmSendCardByMail=Do you really want to send content of this card by mail to %s ? +Delete=Delete +Remove=Remove +Resiliate=Resiliate +Cancel=Cancel +Modify=Modify +Edit=Edit +Validate=Validate +ValidateAndApprove=Validate and Approve +ToValidate=To validate +Save=Save +SaveAs=Save As +TestConnection=Test connection +ToClone=Clone +ConfirmClone=Choose data you want to clone : +NoCloneOptionsSpecified=No data to clone defined. +Of=of +Go=Go +Run=Run +CopyOf=Copy of +Show=Show +ShowCardHere=Show card +Search=Search +SearchOf=Search +Valid=Valid +Approve=Approve +Disapprove=Disapprove +ReOpen=Re-Open +Upload=Send file +ToLink=Link +Select=Select +Choose=Choose +ChooseLangage=Please choose your language +Resize=Resize +Recenter=Recenter +Author=Author +User=User +Users=Users +Group=Group +Groups=Groups +NoUserGroupDefined=No user group defined +Password=Password +PasswordRetype=Retype your password +NoteSomeFeaturesAreDisabled=Note that a lot of features/modules are disabled in this demonstration. +Name=Name +Person=Person +Parameter=Parameter +Parameters=Parameters +Value=Value +GlobalValue=Global value +PersonalValue=Personal value +NewValue=New value +CurrentValue=Current value +Code=Code +Type=Type +Language=Language +MultiLanguage=Multi-language +Note=Note +CurrentNote=Current note +Title=Title +Label=Label +RefOrLabel=Ref. or label +Info=Log +Family=Family +Description=Description +Designation=Description +Model=Model +DefaultModel=Default model +Action=Event +About=About +Number=Number +NumberByMonth=Number by month +AmountByMonth=Amount by month +Numero=Number +Limit=Limit +Limits=Limits +DevelopmentTeam=Development Team +Logout=Logout +NoLogoutProcessWithAuthMode=No applicative disconnect feature with authentication mode %s +Connection=Connection +Setup=Setup +Alert=Alert +Previous=Previous +Next=Next +Cards=Cards +Card=Card +Now=Now +Date=Date +DateAndHour=Date and hour +DateStart=Date start +DateEnd=Date end +DateCreation=Creation date +DateModification=Modification date +DateModificationShort=Modif. date +DateLastModification=Last modification date +DateValidation=Validation date +DateClosing=Closing date +DateDue=Due date +DateValue=Value date +DateValueShort=Value date +DateOperation=Operation date +DateOperationShort=Oper. Date +DateLimit=Limit date +DateRequest=Request date +DateProcess=Process date +DatePlanShort=Date planed +DateRealShort=Date real. +DateBuild=Report build date +DatePayment=Date of payment +DurationYear=year +DurationMonth=month +DurationWeek=week +DurationDay=day +DurationYears=years +DurationMonths=months +DurationWeeks=weeks +DurationDays=days +Year=Year +Month=Month +Week=Week +Day=Day +Hour=Hour +Minute=Minute +Second=Second +Years=Years +Months=Months +Days=Days +days=days +Hours=Hours +Minutes=Minutes +Seconds=Seconds +Weeks=Weeks +Today=Today +Yesterday=Yesterday +Tomorrow=Tomorrow +Morning=Morning +Afternoon=Afternoon +Quadri=Quadri +MonthOfDay=Month of the day +HourShort=H +MinuteShort=mn +Rate=Rate +UseLocalTax=Include tax +Bytes=Bytes +KiloBytes=Kilobytes +MegaBytes=Megabytes +GigaBytes=Gigabytes +TeraBytes=Terabytes +b=b. +Kb=Kb +Mb=Mb +Gb=Gb +Tb=Tb +Cut=Cut +Copy=Copy +Paste=Paste +Default=Default +DefaultValue=Default value +DefaultGlobalValue=Global value +Price=Price +UnitPrice=Unit price +UnitPriceHT=Unit price (net) +UnitPriceTTC=Unit price +PriceU=U.P. +PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested +PriceUTTC=U.P. +Amount=Amount +AmountInvoice=Invoice amount +AmountPayment=Payment amount +AmountHTShort=Amount (net) +AmountTTCShort=Amount (inc. tax) +AmountHT=Amount (net of tax) +AmountTTC=Amount (inc. tax) +AmountVAT=Amount tax +AmountLT1=Amount tax 2 +AmountLT2=Amount tax 3 +AmountLT1ES=Amount RE +AmountLT2ES=Amount IRPF +AmountTotal=Total amount +AmountAverage=Average amount +PriceQtyHT=Price for this quantity (net of tax) +PriceQtyMinHT=Price quantity min. (net of tax) +PriceQtyTTC=Price for this quantity (inc. tax) +PriceQtyMinTTC=Price quantity min. (inc. of tax) +Percentage=Percentage +Total=Total +SubTotal=Subtotal +TotalHTShort=Total (net) +TotalTTCShort=Total (inc. tax) +TotalHT=Total (net of tax) +TotalHTforthispage=Total (net of tax) for this page +TotalTTC=Total (inc. tax) +TotalTTCToYourCredit=Total (inc. tax) to your credit +TotalVAT=Total tax +TotalLT1=Total tax 2 +TotalLT2=Total tax 3 +TotalLT1ES=Total RE +TotalLT2ES=Total IRPF +IncludedVAT=Included tax +HT=Net of tax +TTC=Inc. tax +VAT=Sales tax +LT1ES=RE +LT2ES=IRPF +VATRate=Tax Rate +Average=Average +Sum=Sum +Delta=Delta +Module=Module +Option=Option +List=List +FullList=Full list +Statistics=Statistics +OtherStatistics=Other statistics +Status=Status +Favorite=Favorite +ShortInfo=Info. +Ref=Ref. +RefSupplier=Ref. supplier +RefPayment=Ref. payment +CommercialProposalsShort=Commercial proposals +Comment=Comment +Comments=Comments +ActionsToDo=Events to do +ActionsDone=Events done +ActionsToDoShort=To do +ActionsRunningshort=Started +ActionsDoneShort=Done +ActionNotApplicable=Not applicable +ActionRunningNotStarted=To start +ActionRunningShort=Started +ActionDoneShort=Finished +ActionUncomplete=Uncomplete +CompanyFoundation=Company/Foundation +ContactsForCompany=Contacts for this third party +ContactsAddressesForCompany=Contacts/addresses for this third party +AddressesForCompany=Addresses for this third party +ActionsOnCompany=Events about this third party +ActionsOnMember=Events about this member +NActions=%s events +NActionsLate=%s late +RequestAlreadyDone=Request already recorded +Filter=Filter +RemoveFilter=Remove filter +ChartGenerated=Chart generated +ChartNotGenerated=Chart not generated +GeneratedOn=Build on %s +Generate=Generate +Duration=Duration +TotalDuration=Total duration +Summary=Summary +MyBookmarks=My bookmarks +OtherInformationsBoxes=Other information boxes +DolibarrBoard=Dolibarr board +DolibarrStateBoard=Statistics +DolibarrWorkBoard=Work tasks board +Available=Available +NotYetAvailable=Not yet available +NotAvailable=Not available +Popularity=Popularity +Categories=Categories +Category=Category +By=By +From=From +to=to +and=and +or=or +Other=Other +Others=Others +OtherInformations=Other informations +Quantity=Quantity +Qty=Qty +ChangedBy=Changed by +ReCalculate=Recalculate +ResultOk=Success +ResultKo=Failure +Reporting=Reporting +Reportings=Reporting +Draft=Draft +Drafts=Drafts +Validated=Validated +Opened=Opened +New=New +Discount=Discount +Unknown=Unknown +General=General +Size=Size +Received=Received +Paid=Paid +Topic=Sujet +ByCompanies=By third parties +ByUsers=By users +Links=Links +Link=Link +Receipts=Receipts +Rejects=Rejects +Preview=Preview +NextStep=Next step +PreviousStep=Previous step +Datas=Data +None=None +NoneF=None +Late=Late +Photo=Picture +Photos=Pictures +AddPhoto=Add picture +Login=Login +CurrentLogin=Current login +January=January +February=February +March=March +April=April +May=May +June=June +July=July +August=August +September=September +October=October +November=November +December=December +JanuaryMin=Jan +FebruaryMin=Feb +MarchMin=Mar +AprilMin=Apr +MayMin=May +JuneMin=Jun +JulyMin=Jul +AugustMin=Aug +SeptemberMin=Sep +OctoberMin=Oct +NovemberMin=Nov +DecemberMin=Dec +Month01=January +Month02=February +Month03=March +Month04=April +Month05=May +Month06=June +Month07=July +Month08=August +Month09=September +Month10=October +Month11=November +Month12=December +MonthShort01=Jan +MonthShort02=Feb +MonthShort03=Mar +MonthShort04=Apr +MonthShort05=May +MonthShort06=Jun +MonthShort07=Jul +MonthShort08=Aug +MonthShort09=Sep +MonthShort10=Oct +MonthShort11=Nov +MonthShort12=Dec +AttachedFiles=Attached files and documents +FileTransferComplete=File was uploaded successfuly +DateFormatYYYYMM=YYYY-MM +DateFormatYYYYMMDD=YYYY-MM-DD +DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS +ReportName=Report name +ReportPeriod=Report period +ReportDescription=Description +Report=Report +Keyword=Mot clé +Legend=Legend +FillTownFromZip=Fill city from zip +Fill=Fill +Reset=Reset +ShowLog=Show log +File=File +Files=Files +NotAllowed=Not allowed +ReadPermissionNotAllowed=Read permission not allowed +AmountInCurrency=Amount in %s currency +Example=Example +Examples=Examples +NoExample=No example +FindBug=Report a bug +NbOfThirdParties=Number of third parties +NbOfCustomers=Number of customers +NbOfLines=Number of lines +NbOfObjects=Number of objects +NbOfReferers=Number of referrers +Referers=Refering objects +TotalQuantity=Total quantity +DateFromTo=From %s to %s +DateFrom=From %s +DateUntil=Until %s +Check=Check +Uncheck=Uncheck +Internal=Internal +External=External +Internals=Internal +Externals=External +Warning=Warning +Warnings=Warnings +BuildPDF=Build PDF +RebuildPDF=Rebuild PDF +BuildDoc=Build Doc +RebuildDoc=Rebuild Doc +Entity=Environment +Entities=Entities +EventLogs=Logs +CustomerPreview=Customer preview +SupplierPreview=Supplier preview +AccountancyPreview=Accountancy preview +ShowCustomerPreview=Show customer preview +ShowSupplierPreview=Show supplier preview +ShowAccountancyPreview=Show accountancy preview +ShowProspectPreview=Show prospect preview +RefCustomer=Ref. customer +Currency=Currency +InfoAdmin=Information for administrators +Undo=Undo +Redo=Redo +ExpandAll=Expand all +UndoExpandAll=Undo expand +Reason=Reason +FeatureNotYetSupported=Feature not yet supported +CloseWindow=Close window +Question=Question +Response=Response +Priority=Priority +SendByMail=Send by EMail +MailSentBy=Email sent by +TextUsedInTheMessageBody=Email body +SendAcknowledgementByMail=Send Ack. by email +NoEMail=No email +NoMobilePhone=No mobile phone +Owner=Owner +DetectedVersion=Detected version +FollowingConstantsWillBeSubstituted=The following constants will be replaced with the corresponding value. +Refresh=Refresh +BackToList=Back to list +GoBack=Go back +CanBeModifiedIfOk=Can be modified if valid +CanBeModifiedIfKo=Can be modified if not valid +RecordModifiedSuccessfully=Record modified successfully +RecordsModified=%s records modified +AutomaticCode=Automatic code +NotManaged=Not managed +FeatureDisabled=Feature disabled +MoveBox=Move box %s +Offered=Offered +NotEnoughPermissions=You don't have permission for this action +SessionName=Session name +Method=Method +Receive=Receive +PartialWoman=Partial +PartialMan=Partial +TotalWoman=Total +TotalMan=Total +NeverReceived=Never received +Canceled=Canceled +YouCanChangeValuesForThisListFromDictionarySetup=You can change values for this list from menu setup - dictionary +Color=Color +Documents=Linked files +DocumentsNb=Linked files (%s) +Documents2=Documents +BuildDocuments=Generated documents +UploadDisabled=Upload disabled +MenuECM=Documents +MenuAWStats=AWStats +MenuMembers=Members +MenuAgendaGoogle=Google agenda +ThisLimitIsDefinedInSetup=Dolibarr limit (Menu home-setup-security): %s Kb, PHP limit: %s Kb +NoFileFound=No documents saved in this directory +CurrentUserLanguage=Current language +CurrentTheme=Current theme +CurrentMenuManager=Current menu manager +DisabledModules=Disabled modules +For=For +ForCustomer=For customer +Signature=Signature +HidePassword=Show command with password hidden +UnHidePassword=Show real command with clear password +Root=Root +Informations=Informations +Page=Page +Notes=Notes +AddNewLine=Add new line +AddFile=Add file +ListOfFiles=List of available files +FreeZone=Free entry +FreeLineOfType=Free entry of type +CloneMainAttributes=Clone object with its main attributes +PDFMerge=PDF Merge +Merge=Merge +PrintContentArea=Show page to print main content area +MenuManager=Menu manager +NoMenu=No sub-menu +WarningYouAreInMaintenanceMode=Warning, you are in a maintenance mode, so only login %s is allowed to use application at the moment. +CoreErrorTitle=System error +CoreErrorMessage=Sorry, an error occurred. Check the logs or contact your system administrator. +CreditCard=Credit card +FieldsWithAreMandatory=Fields with %s are mandatory +FieldsWithIsForPublic=Fields with %s are shown on public list of members. If you don't want this, check off the "public" box. +AccordingToGeoIPDatabase=(according to GeoIP convertion) +Line=Line +NotSupported=Not supported +RequiredField=Required field +Result=Result +ToTest=Test +ValidateBefore=Card must be validated before using this feature +Visibility=Visibility +Private=Private +Hidden=Hidden +Resources=Resources +Source=Source +Prefix=Prefix +Before=Before +After=After +IPAddress=IP address +Frequency=Frequency +IM=Instant messaging +NewAttribute=New attribute +AttributeCode=Attribute code +OptionalFieldsSetup=Extra attributes setup +URLPhoto=URL of photo/logo +SetLinkToThirdParty=Link to another third party +CreateDraft=Create draft +SetToDraft=Back to draft +ClickToEdit=Click to edit +ObjectDeleted=Object %s deleted +ByCountry=By country +ByTown=By town +ByDate=By date +ByMonthYear=By month/year +ByYear=By year +ByMonth=By month +ByDay=By day +BySalesRepresentative=By sales representative +LinkedToSpecificUsers=Linked to a particular user contact +DeleteAFile=Delete a file +ConfirmDeleteAFile=Are you sure you want to delete file +NoResults=No results +ModulesSystemTools=Modules tools +Test=Test +Element=Element +NoPhotoYet=No pictures available yet +HomeDashboard=Home summary +Deductible=Deductible +from=from +toward=toward +Access=Access +HelpCopyToClipboard=Use Ctrl+C to copy to clipboard +SaveUploadedFileWithMask=Save file on server with name "%s" (otherwise "%s") +OriginFileName=Original filename +SetDemandReason=Set source +SetBankAccount=Define Bank Account +AccountCurrency=Account Currency +ViewPrivateNote=View notes +XMoreLines=%s line(s) hidden +PublicUrl=Public URL +AddBox=Add box +SelectElementAndClickRefresh=Select an element and click Refresh +PrintFile=Print File %s +ShowTransaction=Show transaction +# Week day +Monday=Monday +Tuesday=Tuesday +Wednesday=Wednesday +Thursday=Thursday +Friday=Friday +Saturday=Saturday +Sunday=Sunday +MondayMin=Mo +TuesdayMin=Tu +WednesdayMin=We +ThursdayMin=Th +FridayMin=Fr +SaturdayMin=Sa +SundayMin=Su +Day1=Monday +Day2=Tuesday +Day3=Wednesday +Day4=Thursday +Day5=Friday +Day6=Saturday +Day0=Sunday +ShortMonday=M +ShortTuesday=T +ShortWednesday=W +ShortThursday=T +ShortFriday=F +ShortSaturday=S +ShortSunday=S diff --git a/htdocs/langs/lo_LA/margins.lang b/htdocs/langs/lo_LA/margins.lang new file mode 100644 index 00000000000..748b3c71f30 --- /dev/null +++ b/htdocs/langs/lo_LA/margins.lang @@ -0,0 +1,45 @@ +# Dolibarr language file - Source file is en_US - marges + +Margin=Margin +Margins=Margins +TotalMargin=Total Margin +MarginOnProducts=Margin / Products +MarginOnServices=Margin / Services +MarginRate=Margin rate +MarkRate=Mark rate +DisplayMarginRates=Display margin rates +DisplayMarkRates=Display mark rates +InputPrice=Input price +margin=Profit margins management +margesSetup=Profit margins management setup +MarginDetails=Margin details +ProductMargins=Product margins +CustomerMargins=Customer margins +SalesRepresentativeMargins=Sales representative margins +UserMargins=User margins +ProductService=Product or Service +AllProducts=All products and services +ChooseProduct/Service=Choose product or service +StartDate=Start date +EndDate=End date +Launch=Start +ForceBuyingPriceIfNull=Force buying price if null +ForceBuyingPriceIfNullDetails=if "ON", margin will be zero on line (buying price = selling price), otherwise ("OFF"), marge will be equal to selling price (buying price = 0) +MARGIN_METHODE_FOR_DISCOUNT=Margin method for global discounts +UseDiscountAsProduct=As a product +UseDiscountAsService=As a service +UseDiscountOnTotal=On subtotal +MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Defines if a global discount is treated as a product, a service, or only on subtotal for margin calculation. +MARGIN_TYPE=Margin type +MargeBrute=Raw margin +MargeNette=Net margin +MARGIN_TYPE_DETAILS=Raw margin : Selling price - Buying price
Net margin : Selling price - Cost price +CostPrice=Cost price +BuyingCost=Cost price +UnitCharges=Unit charges +Charges=Charges +AgentContactType=Commercial agent contact type +AgentContactTypeDetails=Define what contact type (linked on invoices) will be used for margin report per sale representative +rateMustBeNumeric=Rate must be a numeric value +markRateShouldBeLesserThan100=Mark rate should be lower than 100 +ShowMarginInfos=Show margin infos diff --git a/htdocs/langs/lo_LA/members.lang b/htdocs/langs/lo_LA/members.lang new file mode 100644 index 00000000000..40bca8e85fb --- /dev/null +++ b/htdocs/langs/lo_LA/members.lang @@ -0,0 +1,206 @@ +# Dolibarr language file - Source file is en_US - members +MembersArea=Members area +PublicMembersArea=Public members area +MemberCard=Member card +SubscriptionCard=Subscription card +Member=Member +Members=Members +MemberAccount=Member login +ShowMember=Show member card +UserNotLinkedToMember=User not linked to a member +ThirdpartyNotLinkedToMember=Third-party not linked to a member +MembersTickets=Members Tickets +FundationMembers=Foundation members +Attributs=Attributes +ErrorMemberTypeNotDefined=Member type not defined +ListOfPublicMembers=List of public members +ListOfValidatedPublicMembers=List of validated public members +ErrorThisMemberIsNotPublic=This member is not public +ErrorMemberIsAlreadyLinkedToThisThirdParty=Another member (name: %s, login: %s) is already linked to a third party %s. Remove this link first because a third party can't be linked to only a member (and vice versa). +ErrorUserPermissionAllowsToLinksToItselfOnly=For security reasons, you must be granted permissions to edit all users to be able to link a member to a user that is not yours. +ThisIsContentOfYourCard=This is details of your card +CardContent=Content of your member card +SetLinkToUser=Link to a Dolibarr user +SetLinkToThirdParty=Link to a Dolibarr third party +MembersCards=Members business cards +MembersList=List of members +MembersListToValid=List of draft members (to be validated) +MembersListValid=List of valid members +MembersListUpToDate=List of valid members with up to date subscription +MembersListNotUpToDate=List of valid members with subscription out of date +MembersListResiliated=List of resiliated members +MembersListQualified=List of qualified members +MenuMembersToValidate=Draft members +MenuMembersValidated=Validated members +MenuMembersUpToDate=Up to date members +MenuMembersNotUpToDate=Out of date members +MenuMembersResiliated=Resiliated members +MembersWithSubscriptionToReceive=Members with subscription to receive +DateAbonment=Subscription date +DateSubscription=Subscription date +DateNextSubscription=Next subscription +DateEndSubscription=Subscription end date +EndSubscription=End subscription +SubscriptionId=Subscription id +MemberId=Member id +NewMember=New member +NewType=New member type +MemberType=Member type +MemberTypeId=Member type id +MemberTypeLabel=Member type label +MembersTypes=Members types +MembersAttributes=Members attributes +SearchAMember=Search a member +MemberStatusDraft=Draft (needs to be validated) +MemberStatusDraftShort=Draft +MemberStatusActive=Validated (waiting subscription) +MemberStatusActiveShort=Validated +MemberStatusActiveLate=subscription expired +MemberStatusActiveLateShort=Expired +MemberStatusPaid=Subscription up to date +MemberStatusPaidShort=Up to date +MemberStatusResiliated=Resiliated member +MemberStatusResiliatedShort=Resiliated +MembersStatusToValid=Draft members +MembersStatusToValidShort=Draft members +MembersStatusValidated=Validated members +MembersStatusPaid=Subscription up to date +MembersStatusPaidShort=Up to date +MembersStatusNotPaid=Subscription out of date +MembersStatusNotPaidShort=Out of date +MembersStatusResiliated=Resiliated members +MembersStatusResiliatedShort=Resiliated members +NewCotisation=New contribution +PaymentSubscription=New contribution payment +EditMember=Edit member +SubscriptionEndDate=Subscription's end date +MembersTypeSetup=Members type setup +NewSubscription=New subscription +NewSubscriptionDesc=This form allows you to record your subscription as a new member of the foundation. If you want to renew your subscription (if already a member), please contact foundation board instead by email %s. +Subscription=Subscription +Subscriptions=Subscriptions +SubscriptionLate=Late +SubscriptionNotReceived=Subscription never received +SubscriptionLateShort=Late +SubscriptionNotReceivedShort=Never received +ListOfSubscriptions=List of subscriptions +SendCardByMail=Send card by Email +AddMember=Create member +NoTypeDefinedGoToSetup=No member types defined. Go to menu "Members types" +NewMemberType=New member type +WelcomeEMail=Welcome e-mail +SubscriptionRequired=Subscription required +EditType=Edit member type +DeleteType=Delete +VoteAllowed=Vote allowed +Physical=Physical +Moral=Moral +MorPhy=Moral/Physical +Reenable=Reenable +ResiliateMember=Resiliate a member +ConfirmResiliateMember=Are you sure you want to resiliate this member ? +DeleteMember=Delete a member +ConfirmDeleteMember=Are you sure you want to delete this member (Deleting a member will delete all his subscriptions) ? +DeleteSubscription=Delete a subscription +ConfirmDeleteSubscription=Are you sure you want to delete this subscription ? +Filehtpasswd=htpasswd file +ValidateMember=Validate a member +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 formated pages, provided as example to show how to list members database. +PublicMemberList=Public member list +BlankSubscriptionForm=Public auto-subscription form +BlankSubscriptionFormDesc=Dolibarr can provide you a public URL to allow external visitors to ask to subscribe to the foundation. If an online payment module is enabled, a payment form will also be automatically provided. +EnablePublicSubscriptionForm=Enable the public auto-subscription form +MemberPublicLinks=Public links/pages +ExportDataset_member_1=Members and subscriptions +ImportDataset_member_1=Members +LastMembers=Last %s members +LastMembersModified=Last %s modified members +LastSubscriptionsModified=Last %s modified subscriptions +AttributeName=Attribute name +String=String +Text=Text +Int=Int +Date=Date +DateAndTime=Date and time +PublicMemberCard=Member public card +MemberNotOrNoMoreExpectedToSubscribe=Member not or no more expected to subscribe +AddSubscription=Create subscription +ShowSubscription=Show subscription +MemberModifiedInDolibarr=Member modified in Dolibarr +SendAnEMailToMember=Send information email to member +DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the e-mail received in case of auto-inscription of a guest +DescADHERENT_AUTOREGISTER_NOTIF_MAIL=E-mail received in case of auto-inscription of a guest +DescADHERENT_AUTOREGISTER_MAIL_SUBJECT=EMail subject for member autosubscription +DescADHERENT_AUTOREGISTER_MAIL=EMail for member autosubscription +DescADHERENT_MAIL_VALID_SUBJECT=EMail subject for member validation +DescADHERENT_MAIL_VALID=EMail for member validation +DescADHERENT_MAIL_COTIS_SUBJECT=EMail subject for subscription +DescADHERENT_MAIL_COTIS=EMail for subscription +DescADHERENT_MAIL_RESIL_SUBJECT=EMail subject for member resiliation +DescADHERENT_MAIL_RESIL=EMail for member resiliation +DescADHERENT_MAIL_FROM=Sender EMail for automatic emails +DescADHERENT_ETIQUETTE_TYPE=Format of labels page +DescADHERENT_ETIQUETTE_TEXT=Text printed on member address sheets +DescADHERENT_CARD_TYPE=Format of cards page +DescADHERENT_CARD_HEADER_TEXT=Text printed on top of member cards +DescADHERENT_CARD_TEXT=Text printed on member cards (align on left) +DescADHERENT_CARD_TEXT_RIGHT=Text printed on member cards (align on right) +DescADHERENT_CARD_FOOTER_TEXT=Text printed on bottom of member cards +GlobalConfigUsedIfNotDefined=Text defined in Foundation module setup will be used if not defined here +MayBeOverwrited=This text can be overwrited by value defined for member's type +ShowTypeCard=Show type '%s' +HTPasswordExport=htpassword file generation +NoThirdPartyAssociatedToMember=No third party associated to this member +ThirdPartyDolibarr=Dolibarr third party +MembersAndSubscriptions= Members and Subscriptions +MoreActions=Complementary action on recording +MoreActionsOnSubscription=Complementary action, suggested by default when recording a subscription +MoreActionBankDirect=Create a direct transaction record on account +MoreActionBankViaInvoice=Create an invoice and payment on account +MoreActionInvoiceOnly=Create an invoice with no payment +LinkToGeneratedPages=Generate visit cards +LinkToGeneratedPagesDesc=This screen allows you to generate PDF files with business cards for all your members or a particular member. +DocForAllMembersCards=Generate business cards for all members +DocForOneMemberCards=Generate business cards for a particular member +DocForLabels=Generate address sheets +SubscriptionPayment=Subscription payment +LastSubscriptionDate=Last subscription date +LastSubscriptionAmount=Last subscription amount +MembersStatisticsByCountries=Members statistics by country +MembersStatisticsByState=Members statistics by state/province +MembersStatisticsByTown=Members statistics by town +MembersStatisticsByRegion=Members statistics by region +MemberByRegion=Members by region +NbOfMembers=Number of members +NoValidatedMemberYet=No validated members found +MembersByCountryDesc=This screen show you statistics on members by countries. Graphic depends however on Google online graph service and is available only if an internet connection is is working. +MembersByStateDesc=This screen show you statistics on members by state/provinces/canton. +MembersByTownDesc=This screen show you statistics on members by town. +MembersStatisticsDesc=Choose statistics you want to read... +MenuMembersStats=Statistics +LastMemberDate=Last member date +Nature=Nature +Public=Information are public +Exports=Exports +NewMemberbyWeb=New member added. Awaiting approval +NewMemberForm=New member form +SubscriptionsStatistics=Statistics on subscriptions +NbOfSubscriptions=Number of subscriptions +AmountOfSubscriptions=Amount of subscriptions +TurnoverOrBudget=Turnover (for a company) or Budget (for a foundation) +DefaultAmount=Default amount of subscription +CanEditAmount=Visitor can choose/edit amount of its subscription +MEMBER_NEWFORM_PAYONLINE=Jump on integrated online payment page +Associations=Foundations +Collectivités=Organizations +Particuliers=Personal +Entreprises=Companies +DOLIBARRFOUNDATION_PAYMENT_FORM=To make your subscription payment using a bank transfer, see page http://wiki.dolibarr.org/index.php/Subscribe.
To pay using a Credit Card or Paypal, click on button at bottom of this page.
+ByProperties=By characteristics +MembersStatisticsByProperties=Members statistics by characteristics +MembersByNature=Members by nature +VATToUseForSubscriptions=VAT rate to use for subscriptions +NoVatOnSubscription=No TVA for subscriptions +MEMBER_PAYONLINE_SENDEMAIL=Email to warn when Dolibarr receive a confirmation of a validated payment for subscription +ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for subscription line into invoice: %s diff --git a/htdocs/langs/lo_LA/opensurvey.lang b/htdocs/langs/lo_LA/opensurvey.lang new file mode 100644 index 00000000000..0b191e426ec --- /dev/null +++ b/htdocs/langs/lo_LA/opensurvey.lang @@ -0,0 +1,66 @@ +# Dolibarr language file - Source file is en_US - opensurvey +Survey=Poll +Surveys=Polls +OrganizeYourMeetingEasily=Organize your meetings and polls easily. First select type of poll... +NewSurvey=New poll +NoSurveysInDatabase=%s poll(s) into database. +OpenSurveyArea=Polls area +AddACommentForPoll=You can add a comment into poll... +AddComment=Add comment +CreatePoll=Create poll +PollTitle=Poll title +ToReceiveEMailForEachVote=Receive an email for each vote +TypeDate=Type date +TypeClassic=Type standard +OpenSurveyStep2=Select your dates amoung the free days (grey). The selected days are green. You can unselect a day previously selected by clicking again on it +RemoveAllDays=Remove all days +CopyHoursOfFirstDay=Copy hours of first day +RemoveAllHours=Remove all hours +SelectedDays=Selected days +TheBestChoice=The best choice currently is +TheBestChoices=The best choices currently are +with=with +OpenSurveyHowTo=If you agree to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line. +CommentsOfVoters=Comments of voters +ConfirmRemovalOfPoll=Are you sure you want to remove this poll (and all votes) +RemovePoll=Remove poll +UrlForSurvey=URL to communicate to get a direct access to poll +PollOnChoice=You are creating a poll to make a multi-choice for a poll. First enter all possible choices for your poll: +CreateSurveyDate=Create a date poll +CreateSurveyStandard=Create a standard poll +CheckBox=Simple checkbox +YesNoList=List (empty/yes/no) +PourContreList=List (empty/for/against) +AddNewColumn=Add new column +TitleChoice=Choice label +ExportSpreadsheet=Export result spreadsheet +ExpireDate=Limit date +NbOfSurveys=Number of polls +NbOfVoters=Nb of voters +SurveyResults=Results +PollAdminDesc=You are allowed to change all vote lines of this poll with button "Edit". You can, as well, remove a column or a line with %s. You can also add a new column with %s. +5MoreChoices=5 more choices +Abstention=Abstention +Against=Against +YouAreInivitedToVote=You are invited to vote for this poll +VoteNameAlreadyExists=This name was already used for this poll +ErrorPollDoesNotExists=Error, poll %s does not exists. +OpenSurveyNothingToSetup=There is no specific setup to do. +PollWillExpire=Your poll will expire automatically %s days after the last date of your poll. +AddADate=Add a date +AddStartHour=Add start hour +AddEndHour=Add end hour +votes=vote(s) +NoCommentYet=No comments have been posted for this poll yet +CanEditVotes=Can change vote of others +CanComment=Voters can comment in the poll +CanSeeOthersVote=Voters can see other people's vote +SelectDayDesc=For each selected day, you can choose, or not, meeting hours in the following format :
- empty,
- "8h", "8H" or "8:00" to give a meeting's start hour,
- "8-11", "8h-11h", "8H-11H" or "8:00-11:00" to give a meeting's start and end hour,
- "8h15-11h15", "8H15-11H15" or "8:15-11:15" for the same thing but with minutes. +BackToCurrentMonth=Back to current month +ErrorOpenSurveyFillFirstSection=You haven't filled the first section of the poll creation +ErrorOpenSurveyOneChoice=Enter at least one choice +ErrorOpenSurveyDateFormat=Date must have the format YYYY-MM-DD +ErrorInsertingComment=There was an error while inserting your comment +MoreChoices=Enter more choices for the voters +SurveyExpiredInfo=The voting time of this poll has expired. +EmailSomeoneVoted=%s has filled a line.\nYou can find your poll at the link: \n%s diff --git a/htdocs/langs/lo_LA/orders.lang b/htdocs/langs/lo_LA/orders.lang new file mode 100644 index 00000000000..8efafa5e94e --- /dev/null +++ b/htdocs/langs/lo_LA/orders.lang @@ -0,0 +1,166 @@ +# Dolibarr language file - Source file is en_US - orders +OrdersArea=Customers orders area +SuppliersOrdersArea=Suppliers orders area +OrderCard=Order card +OrderId=Order Id +Order=Order +Orders=Orders +OrderLine=Order line +OrderFollow=Follow up +OrderDate=Order date +OrderToProcess=Order to process +NewOrder=New order +ToOrder=Make order +MakeOrder=Make order +SupplierOrder=Supplier order +SuppliersOrders=Suppliers orders +SuppliersOrdersRunning=Current suppliers orders +CustomerOrder=Customer order +CustomersOrders=Customers orders +CustomersOrdersRunning=Current customer's orders +CustomersOrdersAndOrdersLines=Customer orders and order's lines +OrdersToValid=Customers orders to validate +OrdersToBill=Customers orders delivered +OrdersInProcess=Customers orders in process +OrdersToProcess=Customers orders to process +SuppliersOrdersToProcess=Supplier's orders to process +StatusOrderCanceledShort=Canceled +StatusOrderDraftShort=Draft +StatusOrderValidatedShort=Validated +StatusOrderSentShort=In process +StatusOrderSent=Shipment in process +StatusOrderOnProcessShort=Ordered +StatusOrderProcessedShort=Processed +StatusOrderToBillShort=Delivered +StatusOrderToBill2Short=To bill +StatusOrderApprovedShort=Approved +StatusOrderRefusedShort=Refused +StatusOrderToProcessShort=To process +StatusOrderReceivedPartiallyShort=Partially received +StatusOrderReceivedAllShort=Everything received +StatusOrderCanceled=Canceled +StatusOrderDraft=Draft (needs to be validated) +StatusOrderValidated=Validated +StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation +StatusOrderProcessed=Processed +StatusOrderToBill=Delivered +StatusOrderToBill2=To bill +StatusOrderApproved=Approved +StatusOrderRefused=Refused +StatusOrderReceivedPartially=Partially received +StatusOrderReceivedAll=Everything received +ShippingExist=A shipment exists +ProductQtyInDraft=Product quantity into draft orders +ProductQtyInDraftOrWaitingApproved=Product quantity into draft or approved orders, not yet ordered +DraftOrWaitingApproved=Draft or approved not yet ordered +DraftOrWaitingShipped=Draft or validated not yet shipped +MenuOrdersToBill=Orders delivered +MenuOrdersToBill2=Billable orders +SearchOrder=Search order +SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order +ShipProduct=Ship product +Discount=Discount +CreateOrder=Create Order +RefuseOrder=Refuse order +ApproveOrder=Accept order +ValidateOrder=Validate order +UnvalidateOrder=Unvalidate order +DeleteOrder=Delete order +CancelOrder=Cancel order +AddOrder=Create order +AddToMyOrders=Add to my orders +AddToOtherOrders=Add to other orders +AddToDraftOrders=Add to draft order +ShowOrder=Show order +NoOpenedOrders=No opened orders +NoOtherOpenedOrders=No other opened orders +NoDraftOrders=No draft orders +OtherOrders=Other orders +LastOrders=Last %s orders +LastModifiedOrders=Last %s modified orders +LastClosedOrders=Last %s closed orders +AllOrders=All orders +NbOfOrders=Number of orders +OrdersStatistics=Order's statistics +OrdersStatisticsSuppliers=Supplier order's statistics +NumberOfOrdersByMonth=Number of orders by month +AmountOfOrdersByMonthHT=Amount of orders by month (net of tax) +ListOfOrders=List of orders +CloseOrder=Close order +ConfirmCloseOrder=Are you sure you want to set this order to deliverd ? Once an order is delivered, it can be set to billed. +ConfirmCloseOrderIfSending=Are you sure you want to close this order ? You must close an order only when all shipping are done. +ConfirmDeleteOrder=Are you sure you want to delete this order ? +ConfirmValidateOrder=Are you sure you want to validate this order under name %s ? +ConfirmUnvalidateOrder=Are you sure you want to restore order %s to draft status ? +ConfirmCancelOrder=Are you sure you want to cancel this order ? +ConfirmMakeOrder=Are you sure you want to confirm you made this order on %s ? +GenerateBill=Generate invoice +ClassifyShipped=Classify delivered +ClassifyBilled=Classify billed +ComptaCard=Accountancy card +DraftOrders=Draft orders +RelatedOrders=Related orders +OnProcessOrders=In process orders +RefOrder=Ref. order +RefCustomerOrder=Ref. customer order +RefCustomerOrderShort=Ref. cust. order +SendOrderByMail=Send order by mail +ActionsOnOrder=Events on order +NoArticleOfTypeProduct=No article of type 'product' so no shippable article for this order +OrderMode=Order method +AuthorRequest=Request author +UseCustomerContactAsOrderRecipientIfExist=Use customer contact address if defined instead of third party address as order recipient address +RunningOrders=Orders on process +UserWithApproveOrderGrant=Users granted with "approve orders" permission. +PaymentOrderRef=Payment of order %s +CloneOrder=Clone order +ConfirmCloneOrder=Are you sure you want to clone this order %s ? +DispatchSupplierOrder=Receiving supplier order %s +##### Types de contacts ##### +TypeContact_commande_internal_SALESREPFOLL=Representative following-up customer order +TypeContact_commande_internal_SHIPPING=Representative following-up shipping +TypeContact_commande_external_BILLING=Customer invoice contact +TypeContact_commande_external_SHIPPING=Customer shipping contact +TypeContact_commande_external_CUSTOMER=Customer contact following-up order +TypeContact_order_supplier_internal_SALESREPFOLL=Representative following-up supplier order +TypeContact_order_supplier_internal_SHIPPING=Representative following-up shipping +TypeContact_order_supplier_external_BILLING=Supplier invoice contact +TypeContact_order_supplier_external_SHIPPING=Supplier shipping contact +TypeContact_order_supplier_external_CUSTOMER=Supplier contact following-up order + +Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Constant COMMANDE_SUPPLIER_ADDON not defined +Error_COMMANDE_ADDON_NotDefined=Constant COMMANDE_ADDON not defined +Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=Failed to load module file '%s' +Error_FailedToLoad_COMMANDE_ADDON_File=Failed to load module file '%s' +Error_OrderNotChecked=No orders to invoice selected +# Sources +OrderSource0=Commercial proposal +OrderSource1=Internet +OrderSource2=Mail campaign +OrderSource3=Phone compaign +OrderSource4=Fax campaign +OrderSource5=Commercial +OrderSource6=Store +QtyOrdered=Qty ordered +AddDeliveryCostLine=Add a delivery cost line indicating the weight of the order +# Documents models +PDFEinsteinDescription=A complete order model (logo...) +PDFEdisonDescription=A simple order model +PDFProformaDescription=A complete proforma invoice (logo…) +# Orders modes +OrderByMail=Mail +OrderByFax=Fax +OrderByEMail=EMail +OrderByWWW=Online +OrderByPhone=Phone +CreateInvoiceForThisCustomer=Bill orders +NoOrdersToInvoice=No orders billable +CloseProcessedOrdersAutomatically=Classify "Processed" all selected orders. +OrderCreation=Order creation +Ordered=Ordered +OrderCreated=Your orders have been created +OrderFail=An error happened during your orders creation +CreateOrders=Create orders +ToBillSeveralOrderSelectCustomer=To create an invoice for several orders, click first onto customer, then choose "%s". diff --git a/htdocs/langs/lo_LA/other.lang b/htdocs/langs/lo_LA/other.lang new file mode 100644 index 00000000000..08747ea884b --- /dev/null +++ b/htdocs/langs/lo_LA/other.lang @@ -0,0 +1,238 @@ +# Dolibarr language file - Source file is en_US - other +SecurityCode=Security code +Calendar=Calendar +Tools=Tools +ToolsDesc=This area is dedicated to group miscellaneous tools not available into other menu entries.

Those tools can be reached from menu on the side. +Birthday=Birthday +BirthdayDate=Birthday +DateToBirth=Date of birth +BirthdayAlertOn= birthday alert active +BirthdayAlertOff= birthday alert inactive +Notify_FICHINTER_VALIDATE=Intervention validated +Notify_FICHINTER_SENTBYMAIL=Intervention sent by mail +Notify_BILL_VALIDATE=Customer invoice validated +Notify_BILL_UNVALIDATE=Customer invoice unvalidated +Notify_ORDER_SUPPLIER_APPROVE=Supplier order approved +Notify_ORDER_SUPPLIER_REFUSE=Supplier order refused +Notify_ORDER_VALIDATE=Customer order validated +Notify_PROPAL_VALIDATE=Customer proposal validated +Notify_PROPAL_CLOSE_SIGNED=Customer propal closed signed +Notify_PROPAL_CLOSE_REFUSED=Customer propal closed refused +Notify_WITHDRAW_TRANSMIT=Transmission withdrawal +Notify_WITHDRAW_CREDIT=Credit withdrawal +Notify_WITHDRAW_EMIT=Perform withdrawal +Notify_ORDER_SENTBYMAIL=Customer order sent by mail +Notify_COMPANY_CREATE=Third party created +Notify_COMPANY_SENTBYMAIL=Mails sent from third party card +Notify_PROPAL_SENTBYMAIL=Commercial proposal sent by mail +Notify_BILL_PAYED=Customer invoice payed +Notify_BILL_CANCEL=Customer invoice canceled +Notify_BILL_SENTBYMAIL=Customer invoice sent by mail +Notify_ORDER_SUPPLIER_VALIDATE=Supplier order validated +Notify_ORDER_SUPPLIER_SENTBYMAIL=Supplier order sent by mail +Notify_BILL_SUPPLIER_VALIDATE=Supplier invoice validated +Notify_BILL_SUPPLIER_PAYED=Supplier invoice payed +Notify_BILL_SUPPLIER_SENTBYMAIL=Supplier invoice sent by mail +Notify_BILL_SUPPLIER_CANCELED=Supplier invoice cancelled +Notify_CONTRACT_VALIDATE=Contract validated +Notify_FICHEINTER_VALIDATE=Intervention validated +Notify_SHIPPING_VALIDATE=Shipping validated +Notify_SHIPPING_SENTBYMAIL=Shipping sent by mail +Notify_MEMBER_VALIDATE=Member validated +Notify_MEMBER_MODIFY=Member modified +Notify_MEMBER_SUBSCRIPTION=Member subscribed +Notify_MEMBER_RESILIATE=Member resiliated +Notify_MEMBER_DELETE=Member deleted +Notify_PROJECT_CREATE=Project creation +Notify_TASK_CREATE=Task created +Notify_TASK_MODIFY=Task modified +Notify_TASK_DELETE=Task deleted +SeeModuleSetup=See module setup +NbOfAttachedFiles=Number of attached files/documents +TotalSizeOfAttachedFiles=Total size of attached files/documents +MaxSize=Maximum size +AttachANewFile=Attach a new file/document +LinkedObject=Linked object +Miscellaneous=Miscellaneous +NbOfActiveNotifications=Number of notifications (nb of recipient emails) +PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ +PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ +PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__ +DemoDesc=Dolibarr is a compact ERP/CRM composed by several functional modules. A demo that includes all modules does not mean anything as this never occurs. So, several demo profiles are available. +ChooseYourDemoProfil=Choose the demo profile that match your activity... +DemoFundation=Manage members of a foundation +DemoFundation2=Manage members and bank account of a foundation +DemoCompanyServiceOnly=Manage a freelance activity selling service only +DemoCompanyShopWithCashDesk=Manage a shop with a cash desk +DemoCompanyProductAndStocks=Manage a small or medium company selling products +DemoCompanyAll=Manage a small or medium company with multiple activities (all main modules) +GoToDemo=Go to demo +CreatedBy=Created by %s +ModifiedBy=Modified by %s +ValidatedBy=Validated by %s +CanceledBy=Canceled by %s +ClosedBy=Closed by %s +CreatedById=User id who created +ModifiedById=User id who made last change +ValidatedById=User id who validated +CanceledById=User id who canceled +ClosedById=User id who closed +CreatedByLogin=User login who created +ModifiedByLogin=User login who made last change +ValidatedByLogin=User login who validated +CanceledByLogin=User login who canceled +ClosedByLogin=User login who closed +FileWasRemoved=File %s was removed +DirWasRemoved=Directory %s was removed +FeatureNotYetAvailableShort=Available in a next version +FeatureNotYetAvailable=Feature not yet available in this version +FeatureExperimental=Experimental feature. Not stable in this version +FeatureDevelopment=Development feature. Not stable in this version +FeaturesSupported=Features supported +Width=Width +Height=Height +Depth=Depth +Top=Top +Bottom=Bottom +Left=Left +Right=Right +CalculatedWeight=Calculated weight +CalculatedVolume=Calculated volume +Weight=Weight +TotalWeight=Total weight +WeightUnitton=tonnes +WeightUnitkg=kg +WeightUnitg=g +WeightUnitmg=mg +WeightUnitpound=pound +Length=Length +LengthUnitm=m +LengthUnitdm=dm +LengthUnitcm=cm +LengthUnitmm=mm +Surface=Area +SurfaceUnitm2=m2 +SurfaceUnitdm2=dm2 +SurfaceUnitcm2=cm2 +SurfaceUnitmm2=mm2 +SurfaceUnitfoot2=ft2 +SurfaceUnitinch2=in2 +Volume=Volume +TotalVolume=Total volume +VolumeUnitm3=m3 +VolumeUnitdm3=dm3 +VolumeUnitcm3=cm3 +VolumeUnitmm3=mm3 +VolumeUnitfoot3=ft3 +VolumeUnitinch3=in3 +VolumeUnitounce=ounce +VolumeUnitlitre=litre +VolumeUnitgallon=gallon +Size=size +SizeUnitm=m +SizeUnitdm=dm +SizeUnitcm=cm +SizeUnitmm=mm +SizeUnitinch=inch +SizeUnitfoot=foot +SizeUnitpoint=point +BugTracker=Bug tracker +SendNewPasswordDesc=This form allows you to request a new password. It will be send to your email address.
Change will be effective only after clicking on confirmation link inside this email.
Check your email reader software. +BackToLoginPage=Back to login page +AuthenticationDoesNotAllowSendNewPassword=Authentication mode is %s.
In this mode, Dolibarr can't know nor change your password.
Contact your system administrator if you want to change your password. +EnableGDLibraryDesc=Install or enable GD library with your PHP for use this option. +EnablePhpAVModuleDesc=You need to install a module compatible with your anti-virus. (Clamav : php4-clamavlib ou php5-clamavlib) +ProfIdShortDesc=Prof Id %s is an information depending on third party country.
For example, for country %s, it's code %s. +DolibarrDemo=Dolibarr ERP/CRM demo +StatsByNumberOfUnits=Statistics in number of products/services units +StatsByNumberOfEntities=Statistics in number of referring entities +NumberOfProposals=Number of proposals on last 12 month +NumberOfCustomerOrders=Number of customer orders on last 12 month +NumberOfCustomerInvoices=Number of customer invoices on last 12 month +NumberOfSupplierOrders=Number of supplier orders on last 12 month +NumberOfSupplierInvoices=Number of supplier invoices on last 12 month +NumberOfUnitsProposals=Number of units on proposals on last 12 month +NumberOfUnitsCustomerOrders=Number of units on customer orders on last 12 month +NumberOfUnitsCustomerInvoices=Number of units on customer invoices on last 12 month +NumberOfUnitsSupplierOrders=Number of units on supplier orders on last 12 month +NumberOfUnitsSupplierInvoices=Number of units on supplier invoices on last 12 month +EMailTextInterventionValidated=The intervention %s has been validated. +EMailTextInvoiceValidated=The invoice %s has been validated. +EMailTextProposalValidated=The proposal %s has been validated. +EMailTextOrderValidated=The order %s has been validated. +EMailTextOrderApproved=The order %s has been approved. +EMailTextOrderApprovedBy=The order %s has been approved by %s. +EMailTextOrderRefused=The order %s has been refused. +EMailTextOrderRefusedBy=The order %s has been refused by %s. +EMailTextExpeditionValidated=The shipping %s has been validated. +ImportedWithSet=Importation data set +DolibarrNotification=Automatic notification +ResizeDesc=Enter new width OR new height. Ratio will be kept during resizing... +NewLength=New width +NewHeight=New height +NewSizeAfterCropping=New size after cropping +DefineNewAreaToPick=Define new area on image to pick (left click on image then drag until you reach the opposite corner) +CurrentInformationOnImage=This tool was designed to help you to resize or crop an image. This is informations on current edited image +ImageEditor=Image editor +YouReceiveMailBecauseOfNotification=You receive this message because your email has been added to list of targets to be informed of particular events into %s software of %s. +YouReceiveMailBecauseOfNotification2=This event is the following: +ThisIsListOfModules=This is a list of modules preselected by this demo profile (only most common modules are visible in this demo). Edit this to have a more personalized demo and click on "Start". +ClickHere=Click here +UseAdvancedPerms=Use the advanced permissions of some modules +FileFormat=File format +SelectAColor=Choose a color +AddFiles=Add Files +StartUpload=Start upload +CancelUpload=Cancel upload +FileIsTooBig=Files is too big +PleaseBePatient=Please be patient... +RequestToResetPasswordReceived=A request to change your Dolibarr password has been received +NewKeyIs=This is your new keys to login +NewKeyWillBe=Your new key to login to software will be +ClickHereToGoTo=Click here to go to %s +YouMustClickToChange=You must however first click on the following link to validate this password change +ForgetIfNothing=If you didn't request this change, just forget this email. Your credentials are kept safe. + +##### Calendar common ##### +AddCalendarEntry=Add entry in calendar %s +NewCompanyToDolibarr=Company %s added +ContractValidatedInDolibarr=Contract %s validated +ContractCanceledInDolibarr=Contract %s canceled +ContractClosedInDolibarr=Contract %s closed +PropalClosedSignedInDolibarr=Proposal %s signed +PropalClosedRefusedInDolibarr=Proposal %s refused +PropalValidatedInDolibarr=Proposal %s validated +PropalClassifiedBilledInDolibarr=Proposal %s classified billed +InvoiceValidatedInDolibarr=Invoice %s validated +InvoicePaidInDolibarr=Invoice %s changed to paid +InvoiceCanceledInDolibarr=Invoice %s canceled +PaymentDoneInDolibarr=Payment %s done +CustomerPaymentDoneInDolibarr=Customer payment %s done +SupplierPaymentDoneInDolibarr=Supplier payment %s done +MemberValidatedInDolibarr=Member %s validated +MemberResiliatedInDolibarr=Member %s resiliated +MemberDeletedInDolibarr=Member %s deleted +MemberSubscriptionAddedInDolibarr=Subscription for member %s added +ShipmentValidatedInDolibarr=Shipment %s validated +ShipmentDeletedInDolibarr=Shipment %s deleted +##### Export ##### +Export=Export +ExportsArea=Exports area +AvailableFormats=Available formats +LibraryUsed=Librairy used +LibraryVersion=Version +ExportableDatas=Exportable data +NoExportableData=No exportable data (no modules with exportable data loaded, or missing permissions) +ToExport=Export +NewExport=New export +##### External sites ##### +ExternalSites=External sites diff --git a/htdocs/langs/lo_LA/paybox.lang b/htdocs/langs/lo_LA/paybox.lang new file mode 100644 index 00000000000..aced32a4944 --- /dev/null +++ b/htdocs/langs/lo_LA/paybox.lang @@ -0,0 +1,40 @@ +# Dolibarr language file - Source file is en_US - paybox +PayBoxSetup=PayBox module setup +PayBoxDesc=This module offer pages to allow payment on Paybox by customers. This can be used for a free payment or for a payment on a particular Dolibarr object (invoice, order, ...) +FollowingUrlAreAvailableToMakePayments=Following URLs are available to offer a page to a customer to make a payment on Dolibarr objects +PaymentForm=Payment form +WelcomeOnPaymentPage=Welcome on our online payment service +ThisScreenAllowsYouToPay=This screen allow you to make an online payment to %s. +ThisIsInformationOnPayment=This is information on payment to do +ToComplete=To complete +YourEMail=Email to receive payment confirmation +Creditor=Creditor +PaymentCode=Payment code +PayBoxDoPayment=Go on payment +YouWillBeRedirectedOnPayBox=You will be redirected on secured Paybox page to input you credit card information +PleaseBePatient=Please, be patient +Continue=Next +ToOfferALinkForOnlinePayment=URL for %s payment +ToOfferALinkForOnlinePaymentOnOrder=URL to offer a %s online payment user interface for a customer order +ToOfferALinkForOnlinePaymentOnInvoice=URL to offer a %s online payment user interface for a customer invoice +ToOfferALinkForOnlinePaymentOnContractLine=URL to offer a %s online payment user interface for a contract line +ToOfferALinkForOnlinePaymentOnFreeAmount=URL to offer a %s online payment user interface for a free amount +ToOfferALinkForOnlinePaymentOnMemberSubscription=URL to offer a %s online payment user interface for a member subscription +YouCanAddTagOnUrl=You can also add url parameter &tag=value to any of those URL (required only for free payment) to add your own payment comment tag. +SetupPayBoxToHavePaymentCreatedAutomatically=Setup your PayBox with url %s to have payment created automatically when validated by paybox. +YourPaymentHasBeenRecorded=This page confirms that your payment has been recorded. Thank you. +YourPaymentHasNotBeenRecorded=You payment has not been recorded and transaction has been canceled. Thank you. +AccountParameter=Account parameters +UsageParameter=Usage parameters +InformationToFindParameters=Help to find your %s account information +PAYBOX_CGI_URL_V2=Url of Paybox CGI module for payment +VendorName=Name of vendor +CSSUrlForPaymentForm=CSS style sheet url for payment form +MessageOK=Message on validated payment return page +MessageKO=Message on canceled payment return page +NewPayboxPaymentReceived=New Paybox payment received +NewPayboxPaymentFailed=New Paybox payment tried but failed +PAYBOX_PAYONLINE_SENDEMAIL=EMail to warn after a payment (success or failed) +PAYBOX_PBX_SITE=Value for PBX SITE +PAYBOX_PBX_RANG=Value for PBX Rang +PAYBOX_PBX_IDENTIFIANT=Value for PBX ID diff --git a/htdocs/langs/lo_LA/paypal.lang b/htdocs/langs/lo_LA/paypal.lang new file mode 100644 index 00000000000..65a3dc45a23 --- /dev/null +++ b/htdocs/langs/lo_LA/paypal.lang @@ -0,0 +1,25 @@ +# Dolibarr language file - Source file is en_US - paypal +PaypalSetup=PayPal module setup +PaypalDesc=This module offer pages to allow payment on PayPal by customers. This can be used for a free payment or for a payment on a particular Dolibarr object (invoice, order, ...) +PaypalOrCBDoPayment=Pay with credit card or Paypal +PaypalDoPayment=Pay with Paypal +PaypalCBDoPayment=Pay with credit card +PAYPAL_API_SANDBOX=Mode test/sandbox +PAYPAL_API_USER=API username +PAYPAL_API_PASSWORD=API password +PAYPAL_API_SIGNATURE=API signature +PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Offer payment "integral" (Credit card+Paypal) or "Paypal" only +PaypalModeIntegral=Integral +PaypalModeOnlyPaypal=PayPal only +PAYPAL_CSS_URL=Optionnal Url of CSS style sheet on payment page +ThisIsTransactionId=This is id of transaction: %s +PAYPAL_ADD_PAYMENT_URL=Add the url of Paypal payment when you send a document by mail +PAYPAL_IPN_MAIL_ADDRESS=E-mail address for the instant notification of payment (IPN) +PredefinedMailContentLink=You can click on the secure link below to make your payment (PayPal) if it is not already done.\n\n%s\n\n +YouAreCurrentlyInSandboxMode=You are currently in the "sandbox" mode +NewPaypalPaymentReceived=New Paypal payment received +NewPaypalPaymentFailed=New Paypal payment tried but failed +PAYPAL_PAYONLINE_SENDEMAIL=EMail to warn after a payment (success or not) +ReturnURLAfterPayment=Return URL after payment +ValidationOfPaypalPaymentFailed=Validation of Paypal payment failed +PaypalConfirmPaymentPageWasCalledButFailed=Payment confirmation page for Paypal was called by Paypal but confirmation failed diff --git a/htdocs/langs/lo_LA/printipp.lang b/htdocs/langs/lo_LA/printipp.lang new file mode 100644 index 00000000000..835e6827f12 --- /dev/null +++ b/htdocs/langs/lo_LA/printipp.lang @@ -0,0 +1,14 @@ +# Dolibarr language file - Source file is en_US - printipp +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This module adds a Print button to send documents directly to a printer. It requires a Linux system with CUPS installed. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server diff --git a/htdocs/langs/lo_LA/productbatch.lang b/htdocs/langs/lo_LA/productbatch.lang new file mode 100644 index 00000000000..45263681965 --- /dev/null +++ b/htdocs/langs/lo_LA/productbatch.lang @@ -0,0 +1,21 @@ +# ProductBATCH language file - en_US - ProductBATCH +ManageLotSerial=Use batch/serial number +ProductStatusOnBatch=Yes (Batch/serial required) +ProductStatusNotOnBatch=No (Batch/serial not used) +ProductStatusOnBatchShort=Yes +ProductStatusNotOnBatchShort=No +Batch=Batch/Serial +atleast1batchfield=Eat-by date or Sell-by date or Batch number +batch_number=Batch/Serial number +l_eatby=Eat-by date +l_sellby=Sell-by date +DetailBatchNumber=Batch/Serial details +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) +printBatch=Batch: %s +printEatby=Eat-by: %s +printSellby=Sell-by: %s +printQty=Qty: %d +AddDispatchBatchLine=Add a line for Shelf Life dispatching +BatchDefaultNumber=Undefined +WhenProductBatchModuleOnOptionAreForced=When module Batch/Serial is on, increase/decrease stock mode is forced to last choice and can't be edited. Other options can be defined as you want. +ProductDoesNotUseBatchSerial=This product does not use batch/serial number diff --git a/htdocs/langs/lo_LA/products.lang b/htdocs/langs/lo_LA/products.lang new file mode 100644 index 00000000000..3a18cda69e7 --- /dev/null +++ b/htdocs/langs/lo_LA/products.lang @@ -0,0 +1,256 @@ +# Dolibarr language file - Source file is en_US - products +ProductRef=Product ref. +ProductLabel=Product label +ProductServiceCard=Products/Services card +Products=Products +Services=Services +Product=Product +Service=Service +ProductId=Product/service id +Create=Create +Reference=Reference +NewProduct=New product +NewService=New service +ProductCode=Product code +ServiceCode=Service code +ProductVatMassChange=Mass VAT change +ProductVatMassChangeDesc=This page can be used to modify a VAT rate defined on products or services from a value to another. Warning, this change is done on all database. +MassBarcodeInit=Mass barcode init +MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. +ProductAccountancyBuyCode=Accountancy code (buy) +ProductAccountancySellCode=Accountancy code (sell) +ProductOrService=Product or Service +ProductsAndServices=Products and Services +ProductsOrServices=Products or Services +ProductsAndServicesOnSell=Products and Services for sale or for purchase +ProductsAndServicesNotOnSell=Products and Services out of sale +ProductsAndServicesStatistics=Products and Services statistics +ProductsStatistics=Products statistics +ProductsOnSell=Product for sale or for pruchase +ProductsNotOnSell=Product out of sale and out of purchase +ProductsOnSellAndOnBuy=Products for sale and for purchase +ServicesOnSell=Services for sale or for purchase +ServicesNotOnSell=Services out of sale +ServicesOnSellAndOnBuy=Services for sale and for purchase +InternalRef=Internal reference +LastRecorded=Last products/services on sell recorded +LastRecordedProductsAndServices=Last %s recorded products/services +LastModifiedProductsAndServices=Last %s modified products/services +LastRecordedProducts=Last %s products recorded +LastRecordedServices=Last %s services recorded +LastProducts=Last products +CardProduct0=Product card +CardProduct1=Service card +CardContract=Contract card +Warehouse=Warehouse +Warehouses=Warehouses +WarehouseOpened=Warehouse opened +WarehouseClosed=Warehouse closed +Stock=Stock +Stocks=Stocks +Movement=Movement +Movements=Movements +Sell=Sales +Buy=Purchases +OnSell=For sale +OnBuy=For purchase +NotOnSell=Not for sale +ProductStatusOnSell=For sale +ProductStatusNotOnSell=Not for sale +ProductStatusOnSellShort=For sale +ProductStatusNotOnSellShort=Not for sale +ProductStatusOnBuy=For purchase +ProductStatusNotOnBuy=Not for purchase +ProductStatusOnBuyShort=For purchase +ProductStatusNotOnBuyShort=Not for purchase +UpdatePrice=Update price +AppliedPricesFrom=Applied prices from +SellingPrice=Selling price +SellingPriceHT=Selling price (net of tax) +SellingPriceTTC=Selling price (inc. tax) +PublicPrice=Public price +CurrentPrice=Current price +NewPrice=New price +MinPrice=Minim. selling price +MinPriceHT=Minim. selling price (net of tax) +MinPriceTTC=Minim. selling price (inc. tax) +CantBeLessThanMinPrice=The selling price can't be lower than minimum allowed for this product (%s without tax). This message can also appears if you type a too important discount. +ContractStatus=Contract status +ContractStatusClosed=Closed +ContractStatusRunning=Running +ContractStatusExpired=expired +ContractStatusOnHold=Not running +ContractStatusToRun=To get running +ContractNotRunning=This contract is not running +ErrorProductAlreadyExists=A product with reference %s already exists. +ErrorProductBadRefOrLabel=Wrong value for reference or label. +ErrorProductClone=There was a problem while trying to clone the product or service. +ErrorPriceCantBeLowerThanMinPrice=Error Price Can't Be Lower Than Minimum Price. +Suppliers=Suppliers +SupplierRef=Supplier's product ref. +ShowProduct=Show product +ShowService=Show service +ProductsAndServicesArea=Product and Services area +ProductsArea=Product area +ServicesArea=Services area +AddToMyProposals=Add to my proposals +AddToOtherProposals=Add to other proposals +AddToMyBills=Add to my bills +AddToOtherBills=Add to other bills +CorrectStock=Correct stock +AddPhoto=Add photo +ListOfStockMovements=List of stock movements +BuyingPrice=Buying price +SupplierCard=Supplier card +CommercialCard=Commercial card +AllWays=Path to find your product in stock +NoCat=Your product is not in any category +PrimaryWay=Primary path +PriceRemoved=Price removed +BarCode=Barcode +BarcodeType=Barcode type +SetDefaultBarcodeType=Set barcode type +BarcodeValue=Barcode value +NoteNotVisibleOnBill=Note (not visible on invoices, proposals...) +CreateCopy=Create copy +ServiceLimitedDuration=If product is a service with limited duration: +MultiPricesAbility=Several level of prices per product/service +MultiPricesNumPrices=Number of prices +MultiPriceLevelsName=Price categories +AssociatedProductsAbility=Activate the virtual package feature +AssociatedProducts=Package product +AssociatedProductsNumber=Number of products composing this virtual package product +ParentProductsNumber=Number of parent packaging product +IfZeroItIsNotAVirtualProduct=If 0, this product is not a virtual package product +IfZeroItIsNotUsedByVirtualProduct=If 0, this product is not used by any virtual package product +EditAssociate=Associate +Translation=Translation +KeywordFilter=Keyword filter +CategoryFilter=Category filter +ProductToAddSearch=Search product to add +AddDel=Add/Delete +Quantity=Quantity +NoMatchFound=No match found +ProductAssociationList=List of related products/services: name of product/service (quantity affected) +ProductParentList=List of package products/services with this product as a component +ErrorAssociationIsFatherOfThis=One of selected product is parent with current product +DeleteProduct=Delete a product/service +ConfirmDeleteProduct=Are you sure you want to delete this product/service? +ProductDeleted=Product/Service "%s" deleted from database. +DeletePicture=Delete a picture +ConfirmDeletePicture=Are you sure you want to delete this picture ? +ExportDataset_produit_1=Products +ExportDataset_service_1=Services +ImportDataset_produit_1=Products +ImportDataset_service_1=Services +DeleteProductLine=Delete product line +ConfirmDeleteProductLine=Are you sure you want to delete this product line? +NoProductMatching=No product/service match your criteria +MatchingProducts=Matching products/services +NoStockForThisProduct=No stock for this product +NoStock=No Stock +Restock=Restock +ProductSpecial=Special +QtyMin=Minimum Qty +PriceQty=Price for this quantity +PriceQtyMin=Price for this min. qty (w/o discount) +VATRateForSupplierProduct=VAT Rate (for this supplier/product) +DiscountQtyMin=Default discount for qty +NoPriceDefinedForThisSupplier=No price/qty defined for this supplier/product +NoSupplierPriceDefinedForThisProduct=No supplier price/qty defined for this product +RecordedProducts=Products recorded +RecordedServices=Services recorded +RecordedProductsAndServices=Products/services recorded +PredefinedProductsToSell=Predefined products to sell +PredefinedServicesToSell=Predefined services to sell +PredefinedProductsAndServicesToSell=Predefined products/services to sell +PredefinedProductsToPurchase=Predefined product to purchase +PredefinedServicesToPurchase=Predefined services to purchase +PredefinedProductsAndServicesToPurchase=Predefined products/services to puchase +GenerateThumb=Generate thumb +ProductCanvasAbility=Use special "canvas" addons +ServiceNb=Service #%s +ListProductServiceByPopularity=List of products/services by popularity +ListProductByPopularity=List of products by popularity +ListServiceByPopularity=List of services by popularity +Finished=Manufactured product +RowMaterial=Raw Material +CloneProduct=Clone product or service +ConfirmCloneProduct=Are you sure you want to clone product or service %s ? +CloneContentProduct=Clone all main informations of product/service +ClonePricesProduct=Clone main informations and prices +CloneCompositionProduct=Clone packaged product/services +ProductIsUsed=This product is used +NewRefForClone=Ref. of new product/service +CustomerPrices=Customers prices +SuppliersPrices=Suppliers prices +SuppliersPricesOfProductsOrServices=Suppliers prices (of products or services) +CustomCode=Customs code +CountryOrigin=Origin country +HiddenIntoCombo=Hidden into select lists +Nature=Nature +ProductCodeModel=Product ref template +ServiceCodeModel=Service ref template +AddThisProductCard=Create product card +HelpAddThisProductCard=This option allows you to create or clone a product if it does not exist. +AddThisServiceCard=Create service card +HelpAddThisServiceCard=This option allows you to create or clone a service if it does not exist. +CurrentProductPrice=Current price +AlwaysUseNewPrice=Always use current price of product/service +AlwaysUseFixedPrice=Use the fixed price +PriceByQuantity=Different prices by quantity +PriceByQuantityRange=Quantity range +ProductsDashboard=Products/Services summary +UpdateOriginalProductLabel=Modify original label +HelpUpdateOriginalProductLabel=Allows to edit the name of the product +### composition fabrication +Building=Production and items dispatchment +Build=Produce +BuildIt=Produce & Dispatch +BuildindListInfo=Available quantity for production per warehouse (set it to 0 for no further action) +QtyNeed=Qty +UnitPmp=Net unit VWAP +CostPmpHT=Net total VWAP +ProductUsedForBuild=Auto consumed by production +ProductBuilded=Production completed +ProductsMultiPrice=Product multi-price +ProductsOrServiceMultiPrice=Customers prices (of products or services, multi-prices) +ProductSellByQuarterHT=Products turnover quarterly VWAP +ServiceSellByQuarterHT=Services turnover quarterly VWAP +Quarter1=1st. Quarter +Quarter2=2nd. Quarter +Quarter3=3rd. Quarter +Quarter4=4th. Quarter +BarCodePrintsheet=Print bar code +PageToGenerateBarCodeSheets=With this tool, you can print sheets of bar code stickers. Choose format of your sticker page, type of barcode and value of barcode, then click on button %s. +NumberOfStickers=Number of stickers to print on page +PrintsheetForOneBarCode=Print several stickers for one barcode +BuildPageToPrint=Generate page to print +FillBarCodeTypeAndValueManually=Fill barcode type and value manually. +FillBarCodeTypeAndValueFromProduct=Fill barcode type and value from barcode of a product. +FillBarCodeTypeAndValueFromThirdParty=Fill barcode type and value from barcode of a thirdparty. +DefinitionOfBarCodeForProductNotComplete=Definition of type or value of bar code not complete for product %s. +DefinitionOfBarCodeForThirdpartyNotComplete=Definition of type or value of bar code non complete for thirdparty %s. +BarCodeDataForProduct=Barcode information of product %s : +BarCodeDataForThirdparty=Barcode information of thirdparty %s : +ResetBarcodeForAllRecords=Define barcode value for all records (this will also reset barcode value already defined with new values) +PriceByCustomer=Different price for each customer +PriceCatalogue=Unique price per product/service +PricingRule=Rules for customer prices +AddCustomerPrice=Add price by customers +ForceUpdateChildPriceSoc=Set same price on customer subsidiaries +PriceByCustomerLog=Price by customer log +MinimumPriceLimit=Minimum price can't be lower that %s +MinimumRecommendedPrice=Minimum recommended price is : %s +PriceExpressionEditor=Price expression editor +PriceExpressionSelected=Selected price expression +PriceExpressionEditorHelp1="price = 2 + 2" or "2 + 2" for setting the price. Use ; to separate expressions +PriceExpressionEditorHelp2=You can access ExtraFields with variables like #options_myextrafieldkey# +PriceExpressionEditorHelp3=In both product/service and supplier prices there are these variables available:
#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min# +PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# +PriceMode=Price mode +PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/lo_LA/projects.lang b/htdocs/langs/lo_LA/projects.lang new file mode 100644 index 00000000000..0a12f4c64b7 --- /dev/null +++ b/htdocs/langs/lo_LA/projects.lang @@ -0,0 +1,142 @@ +# Dolibarr language file - Source file is en_US - projects +RefProject=Ref. project +ProjectId=Project Id +Project=Project +Projects=Projects +ProjectStatus=Project status +SharedProject=Everybody +PrivateProject=Contacts of project +MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). +ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. +ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). +MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). +TasksPublicDesc=This view presents all projects and tasks you are allowed to read. +TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). +ProjectsArea=Projects area +NewProject=New project +AddProject=Create project +DeleteAProject=Delete a project +DeleteATask=Delete a task +ConfirmDeleteAProject=Are you sure you want to delete this project ? +ConfirmDeleteATask=Are you sure you want to delete this task ? +OfficerProject=Officer project +LastProjects=Last %s projects +AllProjects=All projects +ProjectsList=List of projects +ShowProject=Show project +SetProject=Set project +NoProject=No project defined or owned +NbOpenTasks=Nb of opened tasks +NbOfProjects=Nb of projects +TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user +TimesSpent=Time spent +RefTask=Ref. task +LabelTask=Label task +TaskTimeSpent=Time spent on tasks +TaskTimeUser=User +TaskTimeNote=Note +TaskTimeDate=Date +TasksOnOpenedProject=Tasks on opened projects +WorkloadNotDefined=Workload not defined +NewTimeSpent=New time spent +MyTimeSpent=My time spent +MyTasks=My tasks +Tasks=Tasks +Task=Task +TaskDateStart=Task start date +TaskDateEnd=Task end date +TaskDescription=Task description +NewTask=New task +AddTask=Create task +AddDuration=Add duration +Activity=Activity +Activities=Tasks/activities +MyActivity=My activity +MyActivities=My tasks/activities +MyProjects=My projects +DurationEffective=Effective duration +Progress=Progress +ProgressDeclared=Declared progress +ProgressCalculated=Calculated progress +Time=Time +ListProposalsAssociatedProject=List of the commercial proposals associated with the project +ListOrdersAssociatedProject=List of customer's orders associated with the project +ListInvoicesAssociatedProject=List of customer's invoices associated with the project +ListPredefinedInvoicesAssociatedProject=List of customer's predefined invoices associated with project +ListSupplierOrdersAssociatedProject=List of supplier's orders associated with the project +ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated with the project +ListContractAssociatedProject=List of contracts associated with the project +ListFichinterAssociatedProject=List of interventions associated with the project +ListExpenseReportsAssociatedProject=List of expense reports associated with the project +ListActionsAssociatedProject=List of events associated with the project +ActivityOnProjectThisWeek=Activity on project this week +ActivityOnProjectThisMonth=Activity on project this month +ActivityOnProjectThisYear=Activity on project this year +ChildOfTask=Child of project/task +NotOwnerOfProject=Not owner of this private project +AffectedTo=Allocated to +CantRemoveProject=This project can't be removed as it is referenced by some other objects (invoice, orders or other). See referers tab. +ValidateProject=Validate projet +ConfirmValidateProject=Are you sure you want to validate this project ? +CloseAProject=Close project +ConfirmCloseAProject=Are you sure you want to close this project ? +ReOpenAProject=Open project +ConfirmReOpenAProject=Are you sure you want to re-open this project ? +ProjectContact=Project contacts +ActionsOnProject=Events on project +YouAreNotContactOfProject=You are not a contact of this private project +DeleteATimeSpent=Delete time spent +ConfirmDeleteATimeSpent=Are you sure you want to delete this time spent ? +DoNotShowMyTasksOnly=See also tasks not assigned to me +ShowMyTasksOnly=View only tasks assigned to me +TaskRessourceLinks=Ressources +ProjectsDedicatedToThisThirdParty=Projects dedicated to this third party +NoTasks=No tasks for this project +LinkedToAnotherCompany=Linked to other third party +TaskIsNotAffectedToYou=Task not assigned to you +ErrorTimeSpentIsEmpty=Time spent is empty +ThisWillAlsoRemoveTasks=This action will also delete all tasks of project (%s tasks at the moment) and all inputs of time spent. +IfNeedToUseOhterObjectKeepEmpty=If some objects (invoice, order, ...), belonging to another third party, must be linked to the project to create, keep this empty to have the project being multi third parties. +CloneProject=Clone project +CloneTasks=Clone tasks +CloneContacts=Clone contacts +CloneNotes=Clone notes +CloneProjectFiles=Clone project joined files +CloneTaskFiles=Clone task(s) joined files (if task(s) cloned) +CloneMoveDate=Update project/tasks dates from now ? +ConfirmCloneProject=Are you sure to clone this project ? +ProjectReportDate=Change task date according project start date +ErrorShiftTaskDate=Impossible to shift task date according to new project start date +ProjectsAndTasksLines=Projects and tasks +ProjectCreatedInDolibarr=Project %s created +TaskCreatedInDolibarr=Task %s created +TaskModifiedInDolibarr=Task %s modified +TaskDeletedInDolibarr=Task %s deleted +##### Types de contacts ##### +TypeContact_project_internal_PROJECTLEADER=Project leader +TypeContact_project_external_PROJECTLEADER=Project leader +TypeContact_project_internal_PROJECTCONTRIBUTOR=Contributor +TypeContact_project_external_PROJECTCONTRIBUTOR=Contributor +TypeContact_project_task_internal_TASKEXECUTIVE=Task executive +TypeContact_project_task_external_TASKEXECUTIVE=Task executive +TypeContact_project_task_internal_TASKCONTRIBUTOR=Contributor +TypeContact_project_task_external_TASKCONTRIBUTOR=Contributor +SelectElement=Select element +AddElement=Link to element +UnlinkElement=Unlink element +# Documents models +DocumentModelBaleine=A complete project's report model (logo...) +PlannedWorkload = Planned workload +WorkloadOccupation= Workload affectation +ProjectReferers=Refering objects +SearchAProject=Search a project +ProjectMustBeValidatedFirst=Project must be validated first +ProjectDraft=Draft projects +FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/lo_LA/propal.lang b/htdocs/langs/lo_LA/propal.lang new file mode 100644 index 00000000000..2b6d12870a1 --- /dev/null +++ b/htdocs/langs/lo_LA/propal.lang @@ -0,0 +1,100 @@ +# Dolibarr language file - Source file is en_US - propal +Proposals=Commercial proposals +Proposal=Commercial proposal +ProposalShort=Proposal +ProposalsDraft=Draft commercial proposals +ProposalDraft=Draft commercial proposal +ProposalsOpened=Opened commercial proposals +Prop=Commercial proposals +CommercialProposal=Commercial proposal +CommercialProposals=Commercial proposals +ProposalCard=Proposal card +NewProp=New commercial proposal +NewProposal=New commercial proposal +NewPropal=New proposal +Prospect=Prospect +ProspectList=Prospect list +DeleteProp=Delete commercial proposal +ValidateProp=Validate commercial proposal +AddProp=Create proposal +ConfirmDeleteProp=Are you sure you want to delete this commercial proposal ? +ConfirmValidateProp=Are you sure you want to validate this commercial proposal under name %s ? +LastPropals=Last %s proposals +LastClosedProposals=Last %s closed proposals +LastModifiedProposals=Last %s modified proposals +AllPropals=All proposals +LastProposals=Last proposals +SearchAProposal=Search a proposal +ProposalsStatistics=Commercial proposal's statistics +NumberOfProposalsByMonth=Number by month +AmountOfProposalsByMonthHT=Amount by month (net of tax) +NbOfProposals=Number of commercial proposals +ShowPropal=Show proposal +PropalsDraft=Drafts +PropalsOpened=Opened +PropalsNotBilled=Closed not billed +PropalStatusDraft=Draft (needs to be validated) +PropalStatusValidated=Validated (proposal is open) +PropalStatusOpened=Validated (proposal is open) +PropalStatusClosed=Closed +PropalStatusSigned=Signed (needs billing) +PropalStatusNotSigned=Not signed (closed) +PropalStatusBilled=Billed +PropalStatusDraftShort=Draft +PropalStatusValidatedShort=Validated +PropalStatusOpenedShort=Opened +PropalStatusClosedShort=Closed +PropalStatusSignedShort=Signed +PropalStatusNotSignedShort=Not signed +PropalStatusBilledShort=Billed +PropalsToClose=Commercial proposals to close +PropalsToBill=Signed commercial proposals to bill +ListOfProposals=List of commercial proposals +ActionsOnPropal=Events on proposal +NoOpenedPropals=No opened commercial proposals +NoOtherOpenedPropals=No other opened commercial proposals +RefProposal=Commercial proposal ref +SendPropalByMail=Send commercial proposal by mail +AssociatedDocuments=Documents associated with the proposal: +ErrorCantOpenDir=Can't open directory +DatePropal=Date of proposal +DateEndPropal=Validity ending date +DateEndPropalShort=Date end +ValidityDuration=Validity duration +CloseAs=Close with status +ClassifyBilled=Classify billed +BuildBill=Build invoice +ErrorPropalNotFound=Propal %s not found +Estimate=Estimate : +EstimateShort=Estimate +OtherPropals=Other proposals +AddToDraftProposals=Add to draft proposal +NoDraftProposals=No draft proposals +CopyPropalFrom=Create commercial proposal by copying existing proposal +CreateEmptyPropal=Create empty commercial proposals vierge or from list of products/services +DefaultProposalDurationValidity=Default commercial proposal validity duration (in days) +UseCustomerContactAsPropalRecipientIfExist=Use customer contact address if defined instead of third party address as proposal recipient address +ClonePropal=Clone commercial proposal +ConfirmClonePropal=Are you sure you want to clone the commercial proposal %s ? +ConfirmReOpenProp=Are you sure you want to open back the commercial proposal %s ? +ProposalsAndProposalsLines=Commercial proposal and lines +ProposalLine=Proposal line +AvailabilityPeriod=Availability delay +SetAvailability=Set availability delay +AfterOrder=after order +##### Availability ##### +AvailabilityTypeAV_NOW=Immediate +AvailabilityTypeAV_1W=1 week +AvailabilityTypeAV_2W=2 weeks +AvailabilityTypeAV_3W=3 weeks +AvailabilityTypeAV_1M=1 month +##### Types de contacts ##### +TypeContact_propal_internal_SALESREPFOLL=Representative following-up proposal +TypeContact_propal_external_BILLING=Customer invoice contact +TypeContact_propal_external_CUSTOMER=Customer contact following-up proposal +# Document models +DocModelAzurDescription=A complete proposal model (logo...) +DocModelJauneDescription=Jaune proposal model +DefaultModelPropalCreate=Default model creation +DefaultModelPropalToBill=Default template when closing a business proposal (to be invoiced) +DefaultModelPropalClosed=Default template when closing a business proposal (unbilled) diff --git a/htdocs/langs/lo_LA/resource.lang b/htdocs/langs/lo_LA/resource.lang new file mode 100644 index 00000000000..32bdd92f884 --- /dev/null +++ b/htdocs/langs/lo_LA/resource.lang @@ -0,0 +1,34 @@ + +MenuResourceIndex=Resources +MenuResourceAdd=New resource +MenuResourcePlanning=Resource planning +DeleteResource=Delete resource +ConfirmDeleteResourceElement=Confirm delete the resource for this element +NoResourceInDatabase=No resource in database. +NoResourceLinked=No resource linked + +ResourcePageIndex=Resources list +ResourceSingular=Resource +ResourceCard=Resource card +AddResource=Create a resource +ResourceFormLabel_ref=Resource name +ResourceType=Resource type +ResourceFormLabel_description=Resource description + +ResourcesLinkedToElement=Resources linked to element + +ShowResourcePlanning=Show resource planning +GotoDate=Go to date + +ResourceElementPage=Element resources +ResourceCreatedWithSuccess=Resource successfully created +RessourceLineSuccessfullyDeleted=Resource line successfully deleted +RessourceLineSuccessfullyUpdated=Resource line successfully updated +ResourceLinkedWithSuccess=Resource linked with success + +TitleResourceCard=Resource card +ConfirmDeleteResource=Confirm to delete this resource +RessourceSuccessfullyDeleted=Resource successfully deleted +DictionaryResourceType=Type of resources + +SelectResource=Select resource diff --git a/htdocs/langs/lo_LA/salaries.lang b/htdocs/langs/lo_LA/salaries.lang new file mode 100644 index 00000000000..28c21adfad3 --- /dev/null +++ b/htdocs/langs/lo_LA/salaries.lang @@ -0,0 +1,13 @@ +# Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge +Salary=Salary +Salaries=Salaries +Employee=Employee +NewSalaryPayment=New salary payment +SalaryPayment=Salary payment +SalariesPayments=Salaries payments +ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/lo_LA/sendings.lang b/htdocs/langs/lo_LA/sendings.lang new file mode 100644 index 00000000000..b1ff55f71c1 --- /dev/null +++ b/htdocs/langs/lo_LA/sendings.lang @@ -0,0 +1,85 @@ +# Dolibarr language file - Source file is en_US - sendings +RefSending=Ref. shipment +Sending=Shipment +Sendings=Shipments +Shipment=Shipment +Shipments=Shipments +ShowSending=Show Sending +Receivings=Receipts +SendingsArea=Shipments area +ListOfSendings=List of shipments +SendingMethod=Shipping method +SendingReceipt=Shipping receipt +LastSendings=Last %s shipments +SearchASending=Search for shipment +StatisticsOfSendings=Statistics for shipments +NbOfSendings=Number of shipments +NumberOfShipmentsByMonth=Number of shipments by month +SendingCard=Shipment card +NewSending=New shipment +CreateASending=Create a shipment +CreateSending=Create shipment +QtyOrdered=Qty ordered +QtyShipped=Qty shipped +QtyToShip=Qty to ship +QtyReceived=Qty received +KeepToShip=Remain to ship +OtherSendingsForSameOrder=Other shipments for this order +DateSending=Date sending order +DateSendingShort=Date sending order +SendingsForSameOrder=Shipments for this order +SendingsAndReceivingForSameOrder=Shipments and receivings for this order +SendingsToValidate=Shipments to validate +StatusSendingCanceled=Canceled +StatusSendingDraft=Draft +StatusSendingValidated=Validated (products to ship or already shipped) +StatusSendingProcessed=Processed +StatusSendingCanceledShort=Canceled +StatusSendingDraftShort=Draft +StatusSendingValidatedShort=Validated +StatusSendingProcessedShort=Processed +SendingSheet=Shipment sheet +Carriers=Carriers +Carrier=Carrier +CarriersArea=Carriers area +NewCarrier=New carrier +ConfirmDeleteSending=Are you sure you want to delete this shipment ? +ConfirmValidateSending=Are you sure you want to validate this shipment with reference %s ? +ConfirmCancelSending=Are you sure you want to cancel this shipment ? +GenericTransport=Generic transport +Enlevement=Gotten by customer +DocumentModelSimple=Simple document model +DocumentModelMerou=Merou A5 model +WarningNoQtyLeftToSend=Warning, no products waiting to be shipped. +StatsOnShipmentsOnlyValidated=Statistics conducted on shipments only validated. Date used is date of validation of shipment (planed delivery date is not always known). +DateDeliveryPlanned=Planed date of delivery +DateReceived=Date delivery received +SendShippingByEMail=Send shipment by EMail +SendShippingRef=Submission of shipment %s +ActionsOnShipping=Events on shipment +LinkToTrackYourPackage=Link to track your package +ShipmentCreationIsDoneFromOrder=For the moment, creation of a new shipment is done from the order card. +RelatedShippings=Related shipments +ShipmentLine=Shipment line +CarrierList=List of transporters +SendingRunning=Product from ordered customer orders +SuppliersReceiptRunning=Product from ordered supplier orders +ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders +ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders +ProductQtyInShipmentAlreadySent=Product quantity from opended customer order already sent +ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received + +# Sending methods +SendingMethodCATCH=Catch by customer +SendingMethodTRANS=Transporter +SendingMethodCOLSUI=Colissimo +# ModelDocument +DocumentModelSirocco=Simple document model for delivery receipts +DocumentModelTyphon=More complete document model for delivery receipts (logo...) +Error_EXPEDITION_ADDON_NUMBER_NotDefined=Constant EXPEDITION_ADDON_NUMBER not defined +SumOfProductVolumes=Sum of product volumes +SumOfProductWeights=Sum of product weights + +# warehouse details +DetailWarehouseNumber= Warehouse details +DetailWarehouseFormat= W:%s (Qty : %d) diff --git a/htdocs/langs/lo_LA/sms.lang b/htdocs/langs/lo_LA/sms.lang new file mode 100644 index 00000000000..4e89bb24730 --- /dev/null +++ b/htdocs/langs/lo_LA/sms.lang @@ -0,0 +1,53 @@ +# Dolibarr language file - Source file is en_US - sms +Sms=Sms +SmsSetup=Sms setup +SmsDesc=This page allows you to define globals options on SMS features +SmsCard=SMS Card +AllSms=All SMS campains +SmsTargets=Targets +SmsRecipients=Targets +SmsRecipient=Target +SmsTitle=Description +SmsFrom=Sender +SmsTo=Target +SmsTopic=Topic of SMS +SmsText=Message +SmsMessage=SMS Message +ShowSms=Show Sms +ListOfSms=List SMS campains +NewSms=New SMS campain +EditSms=Edit Sms +ResetSms=New sending +DeleteSms=Delete Sms campain +DeleteASms=Remove a Sms campain +PreviewSms=Previuw Sms +PrepareSms=Prepare Sms +CreateSms=Create Sms +SmsResult=Result of Sms sending +TestSms=Test Sms +ValidSms=Validate Sms +ApproveSms=Approve Sms +SmsStatusDraft=Draft +SmsStatusValidated=Validated +SmsStatusApproved=Approved +SmsStatusSent=Sent +SmsStatusSentPartialy=Sent partially +SmsStatusSentCompletely=Sent completely +SmsStatusError=Error +SmsStatusNotSent=Not sent +SmsSuccessfulySent=Sms correctly sent (from %s to %s) +ErrorSmsRecipientIsEmpty=Number of target is empty +WarningNoSmsAdded=No new phone number to add to target list +ConfirmValidSms=Do you confirm validation of this campain ? +ConfirmResetMailing=Warning, if you make a reinit of Sms campain %s, you will allow to make a mass sending of it a second time. Is it really what you wan to do ? +ConfirmDeleteMailing=Do you confirm removing of campain ? +NbOfRecipients=Number of targets +NbOfUniqueSms=Nb dof unique phone numbers +NbOfSms=Nbre of phon numbers +ThisIsATestMessage=This is a test message +SendSms=Send SMS +SmsInfoCharRemain=Nb of remaining characters +SmsInfoNumero= (format international ie : +33899701761) +DelayBeforeSending=Delay before sending (minutes) +SmsNoPossibleRecipientFound=No target available. Check setup of your SMS provider. + diff --git a/htdocs/langs/lo_LA/stocks.lang b/htdocs/langs/lo_LA/stocks.lang new file mode 100644 index 00000000000..29706d17615 --- /dev/null +++ b/htdocs/langs/lo_LA/stocks.lang @@ -0,0 +1,134 @@ +# Dolibarr language file - Source file is en_US - stocks +WarehouseCard=Warehouse card +Warehouse=Warehouse +Warehouses=Warehouses +NewWarehouse=New warehouse / Stock area +WarehouseEdit=Modify warehouse +MenuNewWarehouse=New warehouse +WarehouseOpened=Warehouse opened +WarehouseClosed=Warehouse closed +WarehouseSource=Source warehouse +WarehouseSourceNotDefined=No warehouse defined, +AddOne=Add one +WarehouseTarget=Target warehouse +ValidateSending=Delete sending +CancelSending=Cancel sending +DeleteSending=Delete sending +Stock=Stock +Stocks=Stocks +Movement=Movement +Movements=Movements +ErrorWarehouseRefRequired=Warehouse reference name is required +ErrorWarehouseLabelRequired=Warehouse label is required +CorrectStock=Correct stock +ListOfWarehouses=List of warehouses +ListOfStockMovements=List of stock movements +StocksArea=Warehouses area +Location=Location +LocationSummary=Short name location +NumberOfDifferentProducts=Number of different products +NumberOfProducts=Total number of products +LastMovement=Last movement +LastMovements=Last movements +Units=Units +Unit=Unit +StockCorrection=Correct stock +StockTransfer=Stock transfer +StockMovement=Transfer +StockMovements=Stock transfers +LabelMovement=Movement label +NumberOfUnit=Number of units +UnitPurchaseValue=Unit purchase price +TotalStock=Total in stock +StockTooLow=Stock too low +StockLowerThanLimit=Stock lower than alert limit +EnhancedValue=Value +PMPValue=Weighted average price +PMPValueShort=WAP +EnhancedValueOfWarehouses=Warehouses value +UserWarehouseAutoCreate=Create a warehouse automatically when creating a user +IndependantSubProductStock=Product stock and subproduct stock are independant +QtyDispatched=Quantity dispatched +QtyDispatchedShort=Qty dispatched +QtyToDispatchShort=Qty to dispatch +OrderDispatch=Stock dispatching +RuleForStockManagementDecrease=Rule for stock management decrease +RuleForStockManagementIncrease=Rule for stock management increase +DeStockOnBill=Decrease real stocks on customers invoices/credit notes validation +DeStockOnValidateOrder=Decrease real stocks on customers orders validation +DeStockOnShipment=Decrease real stocks on shipment validation +ReStockOnBill=Increase real stocks on suppliers invoices/credit notes validation +ReStockOnValidateOrder=Increase real stocks on suppliers orders approbation +ReStockOnDispatchOrder=Increase real stocks on manual dispatching into warehouses, after supplier order receiving +ReStockOnDeleteInvoice=Increase real stocks on invoice deletion +OrderStatusNotReadyToDispatch=Order has not yet or no more a status that allows dispatching of products in stock warehouses. +StockDiffPhysicTeoric=Explanation for difference between physical and theoretical stock +NoPredefinedProductToDispatch=No predefined products for this object. So no dispatching in stock is required. +DispatchVerb=Dispatch +StockLimitShort=Limit for alert +StockLimit=Stock limit for alert +PhysicalStock=Physical stock +RealStock=Real Stock +VirtualStock=Virtual stock +MininumStock=Minimum stock +StockUp=Stock up +MininumStockShort=Stock min +StockUpShort=Stock up +IdWarehouse=Id warehouse +DescWareHouse=Description warehouse +LieuWareHouse=Localisation warehouse +WarehousesAndProducts=Warehouses and products +AverageUnitPricePMPShort=Weighted average input price +AverageUnitPricePMP=Weighted average input price +SellPriceMin=Selling Unit Price +EstimatedStockValueSellShort=Value to sell +EstimatedStockValueSell=Value to Sell +EstimatedStockValueShort=Input stock value +EstimatedStockValue=Input stock value +DeleteAWarehouse=Delete a warehouse +ConfirmDeleteWarehouse=Are you sure you want to delete the warehouse %s ? +PersonalStock=Personal stock %s +ThisWarehouseIsPersonalStock=This warehouse represents personal stock of %s %s +SelectWarehouseForStockDecrease=Choose warehouse to use for stock decrease +SelectWarehouseForStockIncrease=Choose warehouse to use for stock increase +NoStockAction=No stock action +LastWaitingSupplierOrders=Orders waiting for receptions +DesiredStock=Desired stock +StockToBuy=To order +Replenishment=Replenishment +ReplenishmentOrders=Replenishment orders +VirtualDiffersFromPhysical=According to increase/decrease stock options, physical stock and virtual stock (physical + current orders) may differs +UseVirtualStockByDefault=Use virtual stock by default, instead of physical stock, for replenishment feature +UseVirtualStock=Use virtual stock +UsePhysicalStock=Use physical stock +CurentSelectionMode=Curent selection mode +CurentlyUsingVirtualStock=Virtual stock +CurentlyUsingPhysicalStock=Physical stock +RuleForStockReplenishment=Rule for stocks replenishment +SelectProductWithNotNullQty=Select at least one product with a qty not null and a supplier +AlertOnly= Alerts only +WarehouseForStockDecrease=The warehouse %s will be used for stock decrease +WarehouseForStockIncrease=The warehouse %s will be used for stock increase +ForThisWarehouse=For this warehouse +ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. +Replenishments=Replenishments +NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) +NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) +MassMovement=Mass movement +MassStockMovement=Mass stock movement +SelectProductInAndOutWareHouse=Select a product, a quantity, a source warehouse and a target warehouse, then click "%s". Once this is done for all required movements, click onto "%s". +RecordMovement=Record transfert +ReceivingForSameOrder=Receipts for this order +StockMovementRecorded=Stock movements recorded +RuleForStockAvailability=Rules on stock requirements +StockMustBeEnoughForInvoice=Stock level must be enough to add product/service into invoice +StockMustBeEnoughForOrder=Stock level must be enough to add product/service into order +StockMustBeEnoughForShipment= Stock level must be enough to add product/service into shipment +MovementLabel=Label of movement +InventoryCode=Movement or inventory code +IsInPackage=Contained into package +ShowWarehouse=Show warehouse +MovementCorrectStock=Stock content correction for product %s +MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/lo_LA/suppliers.lang b/htdocs/langs/lo_LA/suppliers.lang new file mode 100644 index 00000000000..baf573c66ac --- /dev/null +++ b/htdocs/langs/lo_LA/suppliers.lang @@ -0,0 +1,45 @@ +# Dolibarr language file - Source file is en_US - suppliers +Suppliers=Suppliers +AddSupplier=Create a supplier +SupplierRemoved=Supplier removed +SuppliersInvoice=Suppliers invoice +NewSupplier=New supplier +History=History +ListOfSuppliers=List of suppliers +ShowSupplier=Show supplier +OrderDate=Order date +BuyingPrice=Buying price +BuyingPriceMin=Minimum buying price +BuyingPriceMinShort=Min buying price +TotalBuyingPriceMin=Total of subproducts buying prices +SomeSubProductHaveNoPrices=Some sub-products have no price defined +AddSupplierPrice=Add supplier price +ChangeSupplierPrice=Change supplier price +ErrorQtyTooLowForThisSupplier=Quantity too low for this supplier or no price defined on this product for this supplier +ErrorSupplierCountryIsNotDefined=Country for this supplier is not defined. Correct this first. +ProductHasAlreadyReferenceInThisSupplier=This product has already a reference in this supplier +ReferenceSupplierIsAlreadyAssociatedWithAProduct=This reference supplier is already associated with a reference: %s +NoRecordedSuppliers=No suppliers recorded +SupplierPayment=Supplier payment +SuppliersArea=Suppliers area +RefSupplierShort=Ref. supplier +Availability=Availability +ExportDataset_fournisseur_1=Supplier invoices list and invoice lines +ExportDataset_fournisseur_2=Supplier invoices and payments +ExportDataset_fournisseur_3=Supplier orders and order lines +ApproveThisOrder=Approve this order +ConfirmApproveThisOrder=Are you sure you want to approve order %s ? +DenyingThisOrder=Deny this order +ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? +ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? +AddCustomerOrder=Create customer order +AddCustomerInvoice=Create customer invoice +AddSupplierOrder=Create supplier order +AddSupplierInvoice=Create supplier invoice +ListOfSupplierProductForSupplier=List of products and prices for supplier %s +NoneOrBatchFileNeverRan=None or batch %s not ran recently +SentToSuppliers=Sent to suppliers +ListOfSupplierOrders=List of supplier orders +MenuOrdersSupplierToBill=Supplier orders to invoice +NbDaysToDelivery=Delivery delay in days +DescNbDaysToDelivery=The biggest delay is display among order product list diff --git a/htdocs/langs/lo_LA/trips.lang b/htdocs/langs/lo_LA/trips.lang new file mode 100644 index 00000000000..ba36fc9b07b --- /dev/null +++ b/htdocs/langs/lo_LA/trips.lang @@ -0,0 +1,126 @@ +# Dolibarr language file - Source file is en_US - trips +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report +ListOfFees=List of fees +NewTrip=New expense report +CompanyVisited=Company/foundation visited +Kilometers=Kilometers +FeesKilometersOrAmout=Amount or kilometers +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report +ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/lo_LA/users.lang b/htdocs/langs/lo_LA/users.lang new file mode 100644 index 00000000000..baf209f9d1c --- /dev/null +++ b/htdocs/langs/lo_LA/users.lang @@ -0,0 +1,122 @@ +# Dolibarr language file - Source file is en_US - users +HRMArea=HRM area +UserCard=User card +ContactCard=Contact card +GroupCard=Group card +NoContactCard=No card among contacts +Permission=Permission +Permissions=Permissions +EditPassword=Edit password +SendNewPassword=Regenerate and send password +ReinitPassword=Regenerate password +PasswordChangedTo=Password changed to: %s +SubjectNewPassword=Your new password for Dolibarr +AvailableRights=Available permissions +OwnedRights=Owned permissions +GroupRights=Group permissions +UserRights=User permissions +UserGUISetup=User display setup +DisableUser=Disable +DisableAUser=Disable a user +DeleteUser=Delete +DeleteAUser=Delete a user +DisableGroup=Disable +DisableAGroup=Disable a group +EnableAUser=Enable a user +EnableAGroup=Enable a group +DeleteGroup=Delete +DeleteAGroup=Delete a group +ConfirmDisableUser=Are you sure you want to disable user %s ? +ConfirmDisableGroup=Are you sure you want to disable group %s ? +ConfirmDeleteUser=Are you sure you want to delete user %s ? +ConfirmDeleteGroup=Are you sure you want to delete group %s ? +ConfirmEnableUser=Are you sure you want to enable user %s ? +ConfirmEnableGroup=Are you sure you want to enable group %s ? +ConfirmReinitPassword=Are you sure you want to generate a new password for user %s ? +ConfirmSendNewPassword=Are you sure you want to generate and send new password for user %s ? +NewUser=New user +CreateUser=Create user +SearchAGroup=Search a group +SearchAUser=Search a user +LoginNotDefined=Login is not defined. +NameNotDefined=Name is not defined. +ListOfUsers=List of users +Administrator=Administrator +SuperAdministrator=Super Administrator +SuperAdministratorDesc=Global administrator +AdministratorDesc=Administrator's entity +DefaultRights=Default permissions +DefaultRightsDesc=Define here default permissions that are automatically granted to a new created user (Go on user card to change permission of an existing user). +DolibarrUsers=Dolibarr users +LastName=Name +FirstName=First name +ListOfGroups=List of groups +NewGroup=New group +CreateGroup=Create group +RemoveFromGroup=Remove from group +PasswordChangedAndSentTo=Password changed and sent to %s. +PasswordChangeRequestSent=Request to change password for %s sent to %s. +MenuUsersAndGroups=Users & Groups +LastGroupsCreated=Last %s created groups +LastUsersCreated=Last %s users created +ShowGroup=Show group +ShowUser=Show user +NonAffectedUsers=Non assigned users +UserModified=User modified successfully +PhotoFile=Photo file +UserWithDolibarrAccess=User with Dolibarr access +ListOfUsersInGroup=List of users in this group +ListOfGroupsForUser=List of groups for this user +UsersToAdd=Users to add to this group +GroupsToAdd=Groups to add to this user +NoLogin=No login +LinkToCompanyContact=Link to third party / contact +LinkedToDolibarrMember=Link to member +LinkedToDolibarrUser=Link to Dolibarr user +LinkedToDolibarrThirdParty=Link to Dolibarr third party +CreateDolibarrLogin=Create a user +CreateDolibarrThirdParty=Create a third party +LoginAccountDisable=Account disabled, put a new login to activate it. +LoginAccountDisableInDolibarr=Account disabled in Dolibarr. +LoginAccountDisableInLdap=Account disabled in the domain. +UsePersonalValue=Use personal value +GuiLanguage=Interface language +InternalUser=Internal user +MyInformations=My data +ExportDataset_user_1=Dolibarr's users and properties +DomainUser=Domain user %s +Reactivate=Reactivate +CreateInternalUserDesc=This form allows you to create an user internal to your company/foundation. To create an external user (customer, supplier, ...), use the button 'Create Dolibarr user' from third party's contact card. +InternalExternalDesc=An internal user is a user that is part of your company/foundation.
An external user is a customer, supplier or other.

In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. +Inherited=Inherited +UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) +UserWillBeExternalUser=Created user will be an external user (because linked to a particular third party) +IdPhoneCaller=Id phone caller +UserLogged=User %s login +UserLogoff=User %s logout +NewUserCreated=User %s created +NewUserPassword=Password change for %s +EventUserModified=User %s modified +UserDisabled=User %s disabled +UserEnabled=User %s activated +UserDeleted=User %s removed +NewGroupCreated=Group %s created +GroupModified=Group %s modified +GroupDeleted=Group %s removed +ConfirmCreateContact=Are you sure you want to create a Dolibarr account for this contact ? +ConfirmCreateLogin=Are you sure you want to create a Dolibarr account for this member ? +ConfirmCreateThirdParty=Are you sure you want to create a third party for this member ? +LoginToCreate=Login to create +NameToCreate=Name of third party to create +YourRole=Your roles +YourQuotaOfUsersIsReached=Your quota of active users is reached ! +NbOfUsers=Nb of users +DontDowngradeSuperAdmin=Only a superadmin can downgrade a superadmin +HierarchicalResponsible=Supervisor +HierarchicView=Hierarchical view +UseTypeFieldToChange=Use field Type to change +OpenIDURL=OpenID URL +LoginUsingOpenID=Use OpenID to login +WeeklyHours=Weekly hours +ColorUser=Color of the user diff --git a/htdocs/langs/lo_LA/withdrawals.lang b/htdocs/langs/lo_LA/withdrawals.lang new file mode 100644 index 00000000000..c36ffbf025a --- /dev/null +++ b/htdocs/langs/lo_LA/withdrawals.lang @@ -0,0 +1,97 @@ +# Dolibarr language file - Source file is en_US - withdrawals +StandingOrdersArea=Standing orders area +CustomersStandingOrdersArea=Customers standing orders area +StandingOrders=Standing orders +StandingOrder=Standing orders +NewStandingOrder=New standing order +StandingOrderToProcess=To process +StandingOrderProcessed=Processed +Withdrawals=Withdrawals +Withdrawal=Withdrawal +WithdrawalsReceipts=Withdrawal receipts +WithdrawalReceipt=Withdrawal receipt +WithdrawalReceiptShort=Receipt +LastWithdrawalReceipts=Last %s withdrawal receipts +WithdrawedBills=Withdrawn invoices +WithdrawalsLines=Withdrawal lines +RequestStandingOrderToTreat=Request for standing orders to process +RequestStandingOrderTreated=Request for standing orders processed +NotPossibleForThisStatusOfWithdrawReceiptORLine=Not yet possible. Withdraw status must be set to 'credited' before declaring reject on specific lines. +CustomersStandingOrders=Customer standing orders +CustomerStandingOrder=Customer standing order +NbOfInvoiceToWithdraw=Nb. of invoice with withdraw request +NbOfInvoiceToWithdrawWithInfo=Nb. of invoice with withdraw request for customers having defined bank account information +InvoiceWaitingWithdraw=Invoice waiting for withdraw +AmountToWithdraw=Amount to withdraw +WithdrawsRefused=Withdraws refused +NoInvoiceToWithdraw=No customer invoice in payment mode "withdraw" is waiting. Go on 'Withdraw' tab on invoice card to make a request. +ResponsibleUser=Responsible user +WithdrawalsSetup=Withdrawal setup +WithdrawStatistics=Withdraw's statistics +WithdrawRejectStatistics=Withdraw reject's statistics +LastWithdrawalReceipt=Last %s withdrawing receipts +MakeWithdrawRequest=Make a withdraw request +ThirdPartyBankCode=Third party bank code +ThirdPartyDeskCode=Third party desk code +NoInvoiceCouldBeWithdrawed=No invoice withdrawed with success. Check that invoice are on companies with a valid BAN. +ClassCredited=Classify credited +ClassCreditedConfirm=Are you sure you want to classify this withdrawal receipt as credited on your bank account? +TransData=Transmission date +TransMetod=Transmission method +Send=Send +Lines=Lines +StandingOrderReject=Issue a rejection +WithdrawalRefused=Withdrawal refused +WithdrawalRefusedConfirm=Are you sure you want to enter a withdrawal rejection for society +RefusedData=Date of rejection +RefusedReason=Reason for rejection +RefusedInvoicing=Billing the rejection +NoInvoiceRefused=Do not charge the rejection +InvoiceRefused=Invoice refused (Charge the rejection to customer) +Status=Status +StatusUnknown=Unknown +StatusWaiting=Waiting +StatusTrans=Sent +StatusCredited=Credited +StatusRefused=Refused +StatusMotif0=Unspecified +StatusMotif1=Insufficient funds +StatusMotif2=Request contested +StatusMotif3=No Withdrawal order +StatusMotif4=Customer Order +StatusMotif5=RIB unusable +StatusMotif6=Account without balance +StatusMotif7=Judicial Decision +StatusMotif8=Other reason +CreateAll=Withdraw all +CreateGuichet=Only office +CreateBanque=Only bank +OrderWaiting=Waiting for treatment +NotifyTransmision=Withdrawal Transmission +NotifyEmision=Withdrawal Emission +NotifyCredit=Withdrawal Credit +NumeroNationalEmetter=National Transmitter Number +PleaseSelectCustomerBankBANToWithdraw=Select information about customer bank account to withdraw +WithBankUsingRIB=For bank accounts using RIB +WithBankUsingBANBIC=For bank accounts using IBAN/BIC/SWIFT +BankToReceiveWithdraw=Bank account to receive withdraws +CreditDate=Credit on +WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported) +ShowWithdraw=Show Withdraw +IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one withdrawal payment not yet processed, it won't be set as paid to allow prior withdrawal management. +DoStandingOrdersBeforePayments=This tab allows you to request a standing order. Once done, go into menu Bank->Withdrawal to manage the standing order. When standing order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null. +WithdrawalFile=Withdrawal file +SetToStatusSent=Set to status "File Sent" +ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid" +StatisticsByLineStatus=Statistics by status of lines + +### Notifications +InfoCreditSubject=Payment of standing order %s by the bank +InfoCreditMessage=The standing order %s has been paid by the bank
Data of payment: %s +InfoTransSubject=Transmission of standing order %s to bank +InfoTransMessage=The standing order %s has been sent to bank by %s %s.

+InfoTransData=Amount: %s
Method: %s
Date: %s +InfoFoot=This is an automated message sent by Dolibarr +InfoRejectSubject=Standing order refused +InfoRejectMessage=Hello,

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

--
%s +ModeWarning=Option for real mode was not set, we stop after this simulation diff --git a/htdocs/langs/lo_LA/workflow.lang b/htdocs/langs/lo_LA/workflow.lang new file mode 100644 index 00000000000..17c8dd3aafa --- /dev/null +++ b/htdocs/langs/lo_LA/workflow.lang @@ -0,0 +1,11 @@ +# Dolibarr language file - Source file is en_US - admin +WorkflowSetup=Workflow module setup +WorkflowDesc=This module is designed to modify the behaviour of automatic actions into application. By default, workflow is opened (you make thing in order you want). You can activate the automatic actions that you are interesting in. +ThereIsNoWorkflowToModify=There is no workflow you can modify for module you have activated. +descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Create a customer order automatically after a commercial proposal is signed +descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Create a customer invoice automatically after a commercial proposal is signed +descWORKFLOW_CONTRACT_AUTOCREATE_INVOICE=Create a customer invoice automatically after a contract is validated +descWORKFLOW_ORDER_AUTOCREATE_INVOICE=Create a customer invoice automatically after a customer order is closed +descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Classify linked source proposal to billed when customer order is set to paid +descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Classify linked source customer order(s) to billed when customer invoice is set to paid +descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Classify linked source customer order(s) to billed when customer invoice is validated diff --git a/htdocs/langs/nl_BE/banks.lang b/htdocs/langs/nl_BE/banks.lang index 206daa7c5b7..ce439cc3084 100644 --- a/htdocs/langs/nl_BE/banks.lang +++ b/htdocs/langs/nl_BE/banks.lang @@ -10,10 +10,8 @@ BalanceMinimalDesired=Minimum gewenst saldo InitialBankBalance=Beginsaldo EndBankBalance=Eindsaldo ShowAllTimeBalance=Toon saldo van start -Reconciliation=Reconciliation AccountStatement=Rekeningoverzicht AccountStatementShort=Rekeningoverzicht -Rapprochement=Reconciliate BankAccountDomiciliation=Bank adres BankAccountOwner=Rekeninghouder naam BankAccountOwnerAddress=Rekeninghouder adres diff --git a/htdocs/langs/nl_BE/bills.lang b/htdocs/langs/nl_BE/bills.lang index 26c513c1640..3e9c2a738d8 100644 --- a/htdocs/langs/nl_BE/bills.lang +++ b/htdocs/langs/nl_BE/bills.lang @@ -46,7 +46,6 @@ CancelBill=Annuleer een factuur SendRemindByMail=EMail herinnering DoPayment=Doe betaling EnterPaymentReceivedFromCustomer=Voeg betaling in ontvangen van klant -EnterPaymentDueToCustomer=Make payment due to customer Amount=Bedrag BillStatus=Status factuur BillStatusDraft=Klad (moet gevalideerd worden) @@ -130,17 +129,12 @@ PaymentConditionShort60DENDMONTH=60 D einde m. PaymentConditionShortPT_DELIVERY=Bij levering PaymentTypeVIR=Overschrijving PaymentTypeShortVIR=Overschrijving -PaymentTypePRE=Bank's order -PaymentTypeShortPRE=Bank's order PaymentTypeLIQ=Rembours PaymentTypeShortLIQ=Rembours PaymentTypeCB=Kredietkaart PaymentTypeShortCB=Kredietkaart PaymentTypeVAD=Online betaling PaymentTypeShortVAD=Online betaling -BankDetails=Bank details -BankCode=Bank code -DeskCode=Desk code Residence=Domiciliering IBANNumber=IBAN nummer BICNumber=BIC/SWIFT nummer diff --git a/htdocs/langs/nl_BE/boxes.lang b/htdocs/langs/nl_BE/boxes.lang index 13a57c33de0..d52993dfb45 100644 --- a/htdocs/langs/nl_BE/boxes.lang +++ b/htdocs/langs/nl_BE/boxes.lang @@ -22,7 +22,6 @@ BoxTitleLastCustomersOrProspects=Laatste %s geregistreerde klanten of potentiël BoxTitleLastPropals=Laatste %s opgenomen offertes BoxTitleLastCustomerBills=Laatste %s facturen klanten BoxTitleLastSupplierBills=Laatste %s facturen leveranciers -BoxTitleLastProspects=Laatste %s geregistreerde potentiële klanten BoxTitleLastProductsInContract=Laatste %s producten / diensten in contracten BoxTitleOldestUnpaidCustomerBills=Oudste %s onbetaalde facturen klanten BoxTitleOldestUnpaidSupplierBills=Oudste %s onbetaalde facturen leveranciers diff --git a/htdocs/langs/nl_BE/companies.lang b/htdocs/langs/nl_BE/companies.lang deleted file mode 100644 index 70564679d5f..00000000000 --- a/htdocs/langs/nl_BE/companies.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - companies diff --git a/htdocs/langs/nl_BE/compta.lang b/htdocs/langs/nl_BE/compta.lang index 2021806501d..03fff05cd82 100644 --- a/htdocs/langs/nl_BE/compta.lang +++ b/htdocs/langs/nl_BE/compta.lang @@ -8,8 +8,6 @@ OptionModeTrue=Optie Input-Ouput OptionModeVirtual=Optie Credit-Debet OptionModeTrueDesc=In deze context is de omzet berekend op betalingen (datum van de betalingen). \n De geldigheid van de cijfers zijn slechts verzekerd wanneer de boekhouding wordt gecontroleerd door middel van de input / output op de rekeningen via facturen. OptionModeVirtualDesc=In deze context wordt de omzet berekend op de facturen (datum van validatie). Wanneer deze facturen verschuldigd zijn, ongeacht of zij betaald zijn of niet, ze zijn opgenomen in de omzet. -FeatureIsSupportedInInOutModeOnly=Feature only available in CREDITS-DEBTS accountancy mode (See Accountancy module configuration) -Param=Setup BillsForSuppliers=Facturen van leveranciers Outcome=Uitgaven ReportInOut=Inkomsten / Uitgaven diff --git a/htdocs/langs/nl_BE/dict.lang b/htdocs/langs/nl_BE/dict.lang index e53a3016315..13dc5f202c1 100644 --- a/htdocs/langs/nl_BE/dict.lang +++ b/htdocs/langs/nl_BE/dict.lang @@ -4,21 +4,17 @@ CountryTN=Tunisië CountryCM=Cameroun CountrySA=Saudi Arabië CountryAX=Land Eilanden -CountryCX=Christmas Island CountryCD=Congo, de Democratische Republiek van de CountryFK=Falklandeilanden CountryLY=Libische CountryMK=Macedonië, de Voormalige Joegoslavische van CountryPG=Papoea-Nieuw-Guinea -CountryPN=Pitcairn Islands -CountryVN=Viet Nam CivilityMME=Meneer CivilityMR=Mevrouw CivilityMLE=Jufrrouw CurrencyAUD=Dollar AU CurrencyCAD=Dollar KAN CurrencyEUR=Euro -CurrencyGBP=GB Pounds CurrencyTND=TND CurrencyUSD=Dollar US CurrencyXAF=CFA Frank BEAC diff --git a/htdocs/langs/nl_BE/ecm.lang b/htdocs/langs/nl_BE/ecm.lang index e62bad3d98c..427b9712044 100644 --- a/htdocs/langs/nl_BE/ecm.lang +++ b/htdocs/langs/nl_BE/ecm.lang @@ -10,7 +10,6 @@ ECMSectionManual=Manuele directorie ECMSectionAuto=Automatische directorie ECMSectionsManual=Manuale directories ECMSectionsAuto=Automatische directories -ECMSections=Directories ECMNewSection=Nieuwe directorie ECMAddSection=Maak manueel een directorie aan ECMCreationDate=Aanmaakdatum diff --git a/htdocs/langs/nl_BE/errors.lang b/htdocs/langs/nl_BE/errors.lang index d168cb69550..77f035e2009 100644 --- a/htdocs/langs/nl_BE/errors.lang +++ b/htdocs/langs/nl_BE/errors.lang @@ -18,13 +18,9 @@ ErrorBadSupplierCodeSyntax=Slechte syntaxis voor Leverancierscode ErrorSupplierCodeRequired=Leverancierscode nodig ErrorBadParameters=Slechte parameters ErrorFailedToWriteInDir=Mislukt om in de map %s te schrijven -ErrorFoundBadEmailInFile=Found incorrect email syntax for %s lines in file (example line %s with email=%s) -ErrorUserCannotBeDelete=User can not be deleted. May be it is associated on Dolibarr entities. ErrorFailedToCreateDir=Mislukt om een directory te creëren. Check that Web server user has permissions to write into Dolibarr documents directory. If parameter safe_mode is enabled on this PHP, check that Dolibarr php files owns to web server user (or group). ErrorNoMailDefinedForThisUser=Geen mail gedefinieerd voor deze gebruiker ErrorFeatureNeedJavascript=Javascript moet geactiveerd zijn voor deze functie. Verander dit in de setup - display. -ErrorTopMenuMustHaveAParentWithId0=A menu of type 'Top' can't have a parent menu. Put 0 in parent menu or choose a menu of type 'Left'. -ErrorLeftMenuMustHaveAParentId=A menu of type 'Left' must have a parent id. ErrorFileNotFound=Bestand niet gevonden (Slecht pad, verkeerde permissies of toegang geweigerd door openbasedir parameter) ErrorFunctionNotAvailableInPHP=Functie %s is vereist voor deze toepassing, maar is niet beschikbaar in deze versie / setup van PHP. ErrorDirAlreadyExists=Een map met deze naam bestaat al. @@ -32,7 +28,6 @@ ErrorNoAccountancyModuleLoaded=Geen "accountancy" module geactiveerd ErrorExportDuplicateProfil=Deze profielnaam bestaat al voor deze export set. ErrorLDAPSetupNotComplete=Dolibarr LDAP-matching is niet compleet. ErrorLDAPMakeManualTest=A .ldif file has been generated in directory %s. Try to load it manually from command line to have more informations on errors. -ErrorCantSaveADoneUserWithZeroPercentage=Can't save an action with "statut not started" if field "done by" is also filled. ErrorRefAlreadyExists=Ref gebruikt voor de oprichting bestaat al. ErrorPleaseTypeBankTransactionReportName=Vul bankontvangst naam in waar transactie wordt gemeld (Formaat YYYYMM of JJJJMMDD) ErrorRecordHasChildren=Mislukt om records te verwijderen omdat er nog gelinkte bestanden zijn. @@ -48,12 +43,10 @@ ErrorCantReadDir=Mislukt om directorie '%s' te lezen ErrorFailedToFindEntity=Mislukt om entiteit '%s' te lezen ErrorBadLoginPassword=Onjuiste waarde voor login of wachtwoord ErrorLoginDisabled=Uw account is uitgeschakeld -ErrorFailedToRunExternalCommand=Failed to run external command. Check it is available and runnable by your PHP server. If PHP Safe Mode is enabled, check that command is inside a directory defined by parameter safe_mode_exec_dir. ErrorFailedToChangePassword=Mislukt om wachtwoord te wijzigen ErrorLoginDoesNotExists=Gebruiker met login %s kon niet worden gevonden. ErrorBadValueForCode=Slechte waarde voor de input-code. Probeer het opnieuw met een nieuwe waarde ... WarningAllowUrlFopenMustBeOn=Parameter allow_url_fopen must be set to on in filer php.ini for having this module working completely. U moet dit bestand handmatig wijzigen. -WarningBuildScriptNotRunned=Script %s was not yet ran to build graphics, or there is no data to show. WarningBookmarkAlreadyExists=Een bladwijzer met deze titel of deze URL bestaat al. WarningPassIsEmpty=Waarschuwing, database wachtwoord is leeg. Dit is een gat in de beveiliging. You should add a password to your database and change your conf.php file to reflect this. WarningUntilDirRemoved=Deze waarschuwing zal actief blijven zolang deze map aanwezig is (alleen weergegeven voor admin-gebruikers).WarningInstallDirExists=Waarschuwing, install directorie (%s) bestaat nog steeds. Dit is een ernstig beveiligingslek. U moet deze zo spoedig mogelijk verwijderen. diff --git a/htdocs/langs/nl_BE/exports.lang b/htdocs/langs/nl_BE/exports.lang index 6dc7e5d6939..15ff2545d16 100644 --- a/htdocs/langs/nl_BE/exports.lang +++ b/htdocs/langs/nl_BE/exports.lang @@ -2,8 +2,6 @@ ExportsArea=Export gebied ImportArea=Import gebied NewExport=Nieuwe exportmogelijkheden -ExportableDatas=Exportable dataset -ImportableDatas=Importable dataset SelectExportDataSet=Kies dataset die u wilt exporteren ... SelectExportFields=Kies velden die u wilt exporteren, of selecteer een vooraf gedefinieerde uitvoer-profiel SaveExportModel=Bewaar dit uitvoer-profiel als u van plan bent om het later te hergebruiken ... @@ -11,7 +9,6 @@ ExportModelName=Export profielnaam ExportModelSaved=Export profiel opgeslagen onder de naam %s. ExportableFields=Exportable velden DatasetToExport=Dataset te exporteren -Dataset=Dataset ChooseFieldsOrdersAndTitle=Kies velden Om ... FieldsOrder=Velden bestelling FieldsTitle=Velden titel @@ -21,11 +18,8 @@ AvailableFormats=Formaten beschikbaar LibraryUsed=Librairie FormatedImport=Import-assistent FormatedImportDesc1=Dit gebied maakt het mogelijk om persoonlijke gegevens te importeren, met behulp van een assistent om u te helpen in het proces, zonder technische kennis. -FormatedImportDesc2=First step is to choose a king of data you want to load, then file to load, then to choose which fields you want to load. FormatedExport=Export assistent FormatedExportDesc1=Dit gebied maakt het mogelijk om persoonlijke gegevens te exporteren, met behulp van een assistent om u te helpen in het proces, zonder technische kennis. -FormatedExportDesc2=First step is to choose a predefined dataset, then to choose which fields you want in your result files, and which order. -FormatedExportDesc3=When data to export are selected, you can define output file format you want to export your data to. Sheet=Blad NoImportableData=Geen importable gegevens (no module with definitions to allow data imports) FileSuccessfullyBuilt=Export bestand gegenereerd diff --git a/htdocs/langs/nl_BE/ftp.lang b/htdocs/langs/nl_BE/ftp.lang deleted file mode 100644 index 66407cca057..00000000000 --- a/htdocs/langs/nl_BE/ftp.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp diff --git a/htdocs/langs/nl_BE/help.lang b/htdocs/langs/nl_BE/help.lang deleted file mode 100644 index 964027e2352..00000000000 --- a/htdocs/langs/nl_BE/help.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - help diff --git a/htdocs/langs/nl_BE/install.lang b/htdocs/langs/nl_BE/install.lang index e768ee17942..7967a9c12c8 100644 --- a/htdocs/langs/nl_BE/install.lang +++ b/htdocs/langs/nl_BE/install.lang @@ -68,7 +68,6 @@ GoToSetupArea=Ga naar Dolibarr (setup gebied) WithNoSlashAtTheEnd=Zonder de schuine streep "/" aan het eind DirectoryRecommendation=Het wordt aanbevolen deze directorie te plaatsen uit de directorie van de webpagina's. LoginAlreadyExists=login bestaat reeds -DolibarrAdminLogin=Dolibarr admin login AdminLoginAlreadyExists=Dolibarr administrator account '%s' bestaat reeds. WarningRemoveInstallDir=Waarschuwing, nadat de installatie of upgrade is voltooid, moet u om veiligheidsredenen de install directorie verwijderen of hernoemen naar install.lock om kwaadwillige gebruik te voorkomen. ThisPHPDoesNotSupportTypeBase=Dit PHP-systeem biedt geen ondersteuning voor enig interface om toegang te krijgen tot database type %s @@ -121,13 +120,8 @@ MigrationContractsFieldDontExist=Veld fk_facture bestaat niet meer. Niets te doe MigrationContractsEmptyDatesUpdateSuccess=Contract lege datum correctie succesvol gedaan MigrationContractsEmptyDatesNothingToUpdate=Geen contract lege datum te corrigeren MigrationContractsEmptyCreationDatesNothingToUpdate=Geen contract aanmaakdatum te corrigeren -MigrationContractsInvalidDatesUpdate=Bad value date contract correction -MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting service date min=%s) MigrationContractsInvalidDatesNumber=%s contracten gemodifieerd MigrationContractsInvalidDatesNothingToUpdate=Geen datum met slechte waarde te corrigeren -MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction -MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done succesfuly -MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct MigrationReopeningContracts=Open contract gesloten door fout MigrationReopenThisContract=Heropenen contract %s MigrationReopenedContractsNumber=%s contracten gemodifieerd diff --git a/htdocs/langs/nl_BE/languages.lang b/htdocs/langs/nl_BE/languages.lang deleted file mode 100644 index c939f301168..00000000000 --- a/htdocs/langs/nl_BE/languages.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - languages diff --git a/htdocs/langs/nl_BE/mails.lang b/htdocs/langs/nl_BE/mails.lang index 657a92a6732..3c7e836943e 100644 --- a/htdocs/langs/nl_BE/mails.lang +++ b/htdocs/langs/nl_BE/mails.lang @@ -32,7 +32,6 @@ ConfirmValidMailing=Weet u zeker dat u deze mailing wilt valideren om te verzend ConfirmDeleteMailing=Weet u zeker dat u deze mailing wilt verwijderen? NoTargetYet=Nog geen ontvangers gedefiniëerd (Ga op het tabblad "Ontvangers") RemoveRecipient=Verwijder ontvanger -CommonSubstitutions=Common substitutions YouCanAddYourOwnPredefindedListHere=Om uw email selector module te creëren, zie htdocs/core/modules/mailings/README. EMailTestSubstitutionReplacedByGenericValues=Bij het gebruik van test-modus, substituties variabelen worden vervangen door algemene waarden MailingAddFile=Bestand toevoegen diff --git a/htdocs/langs/nl_BE/main.lang b/htdocs/langs/nl_BE/main.lang index f7c21052fa8..7b963e8acca 100644 --- a/htdocs/langs/nl_BE/main.lang +++ b/htdocs/langs/nl_BE/main.lang @@ -25,7 +25,6 @@ ErrorFailedToOpenFile=Gefaald om file %s te openen ErrorCanNotCreateDir=Kan dir %s niet creëren ErrorCanNotReadDir=Kan dircectory %s niet lezen ErrorUnknown=ONBEKENDE fout -ErrorSQL=SQL Error ErrorLogoFileNotFound=Logo bestand "%s" is niet gevonden ErrorGoToGlobalSetup=Ga naar "Bedrijf" setup om dit op te lossen ErrorGoToModuleSetup=Ga naar Module setup Om dit op te lossen @@ -47,21 +46,15 @@ ErrorFailedToSaveFile=Fout, mislukt om bestand op te slaan. RecordSaved=Record opgeslagen LevelOfFeature=Niveau van de functies DefinedAndHasThisValue=Omschreven en heeft waarde van -IsNotDefined=undefined -DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr authentication mode is setup to %s in configuration file conf.php.
This means that password database is extern to Dolibarr, so changing this field may have no effects. -Undefined=Undefined HomeArea=Home gebied PreviousConnexion=Vorige verbinding RequestedUrl=Aangevraagd Url RequestLastAccess=Verzoek voor laatste database toegang RequestLastAccessInError=Verzoek voor laatste database toegang in fout -ReturnCodeLastAccessInError=Return code for last database access in error -InformationLastAccessInError=Information for last database access in error DolibarrHasDetectedError=Dolibarr heeft een technische fout InformationToHelpDiagnose=Informatie die kan helpen bij het vaststellen NotePublic=Nota (openbaar) NotePrivate=Nota (privé) -PrecisionUnitIsLimitedToXDecimals=Dolibarr was setup to limit precision of unit prices to %s decimals. WarningYouHaveAtLeastOneTaskLate=Waarschuwing, u hebt ten minste één element dat de tolerantie van vertraging heeft overschreden. Activate=Activeer Activated=Activeer @@ -86,12 +79,9 @@ Choose=Kiezen ChooseLangage=Selecteer alstublieft je taal Author=De auteur PasswordRetype=Voer opnieuw je wachtwoord in -Parameter=Parameter -Parameters=Parameters Note=Aantekening Label=Het etiket RefOrLabel=Ref. of etiket -Info=Log DefaultModel=Standaardmodel DevelopmentTeam=Ontwikkelingsteam Connection=Verbinding @@ -112,8 +102,6 @@ DatePlanShort=Datum geplant DateRealShort=Datum echt. Hour=uur Hours=Uren -Quadri=Quadri -HourShort=H Default=Standaardwaarde DefaultValue=Default waarde UnitPriceTTC=Eenheidsprijs @@ -131,7 +119,6 @@ IncludedVAT=Incl. BTW HT=Na aftrek van belastingen TTC=Incl. BTW VATRate=BTW tarief -Delta=Delta List=De lijst FullList=Volledige lijst Ref=Ref @@ -158,7 +145,6 @@ Others=Anderen Draft=Ontwerp Drafts=Ontwerpen Rejects=Verwerpen -Preview=Preview Late=Laat January=januari February=februari @@ -173,9 +159,6 @@ October=oktober November=november December=december FileTransferComplete=Bestand werd succesvol upgeload -DateFormatYYYYMM=YYYY-MM -DateFormatYYYYMMDD=YYYY-MM-DD -DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS ReportPeriod=Rapport periode ReportDescription=Beschrijving Keyword=Sleutelwoord @@ -199,7 +182,6 @@ Entity=Profiel Entities=Profielen CustomerPreview=Klanten preview SupplierPreview=Leverancier preview -AccountancyPreview=Accountancy preview ShowCustomerPreview=Toon klant preview ShowSupplierPreview=Toon leverancier preview ShowAccountancyPreview=Toon accountancy preview @@ -228,7 +210,6 @@ CurrentTheme=Huidig thema ForCustomer=Voor de klant HidePassword=Toon commando met het wachtwoord verborgen UnHidePassword=Toon echt commando met geen verborgen wachtwoord -Page=Page Notes=Nota's NewAttribute=Nieuw attribuut OptionalFieldsSetup=Optionele velden setup @@ -241,9 +222,7 @@ Day4=donderdag Day5=vrijdag Day6=zaterdag Day0=zondag -ShortMonday=M ShortTuesday=D -ShortWednesday=W ShortThursday=D ShortFriday=V ShortSaturday=Z diff --git a/htdocs/langs/nl_BE/orders.lang b/htdocs/langs/nl_BE/orders.lang index 771601f4e6f..8e18d502b6a 100644 --- a/htdocs/langs/nl_BE/orders.lang +++ b/htdocs/langs/nl_BE/orders.lang @@ -62,7 +62,6 @@ ConfirmValidateOrder=Bent u zeker dat u deze bestelling onder naam %ss wi ConfirmCancelOrder=Bent u zeker dat u deze bestelling wil annuleren? ConfirmMakeOrder=Bent u zeker dat u deze bestelling gemaakt op %ss wil bevestigen? ClassifyBilled=Classify "Billed" -ComptaCard=Accountancy card DraftOrders=Klad bestellingen RelatedOrders=Gerelateerde bestellingen OnProcessOrders=Bestellingen in uitvoering diff --git a/htdocs/langs/nl_BE/other.lang b/htdocs/langs/nl_BE/other.lang index 592c4f1547e..c1a1850e465 100644 --- a/htdocs/langs/nl_BE/other.lang +++ b/htdocs/langs/nl_BE/other.lang @@ -20,9 +20,6 @@ FeaturesSupported=Functies ondersteund SendNewPasswordDesc=Dit formulier laat u toe om een nieuwe wachtwoord aan te vragen. Het zal worden verstuurd naar uw e-mailadres.
Verandering van het wachtwoord zal enkel gebeuren na het klikken op de bevestigingslink van deze mail.
Controleer uw e-mail ontvanger. BackToLoginPage=Naar login pagina AuthenticationDoesNotAllowSendNewPassword=De verificatie van Dolibarr is ingesteld op %s.
In deze modus kan Dolibarr uw wachtwoord niet weten of wijzigen.
Neem contact op met uw systeembeheerder voor het wijzigen van uw wachtwoord. -EnableGDLibraryDesc=Install or enable GD library with your PHP for use this option. -EnablePhpAVModuleDesc=You need to install a module compatible with your anti-virus. (Clamav : php4-clamavlib ou php5-clamavlib) -ProfIdShortDesc=Prof Id %s is an information depending on third party country.
For example, for country %s, it's code %s. DolibarrDemo=Dolibarr ERP / CRM demo StatsByNumberOfUnits=Statistieken van het aantal eenheden StatsByNumberOfEntities=Statistieken van het aantal verwezen entiteiten diff --git a/htdocs/langs/nl_BE/paybox.lang b/htdocs/langs/nl_BE/paybox.lang deleted file mode 100644 index 539f4f0d40e..00000000000 --- a/htdocs/langs/nl_BE/paybox.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - paybox diff --git a/htdocs/langs/nl_BE/products.lang b/htdocs/langs/nl_BE/products.lang index 74c92b41150..9e4761e9f41 100644 --- a/htdocs/langs/nl_BE/products.lang +++ b/htdocs/langs/nl_BE/products.lang @@ -2,7 +2,6 @@ ProductServiceCard=Producten/Diensten kaart ProductId=Product/dienst id Create=Maak -ServiceCode=Service code ProductsAndServicesOnSell=Producten en Diensten in verkoop ProductsAndServicesNotOnSell=Producten en diensten niet in verkoop ProductsAndServicesStatistics=Statistieken van producten en diensten @@ -41,8 +40,6 @@ AddToOtherProposals=Toevoegen aan andere voorstellen SupplierCard=Leverancierskaart AllWays=Pad naar het vinden van uw product in voorraad NoCat=Uw product is niet in elke categorie -BarCode=Barcode -BarcodeType=Barcode type SetDefaultBarcodeType=Stel barcode type BarcodeValue=Barcode waarde NoteNotVisibleOnBill=Nota (niet zichtbaar op facturen, voorstellen ...) @@ -65,7 +62,6 @@ ProductDeleted=Product / Dienst: %s geschrapt uit de database. ExportDataset_produit_1=Producten en diensten ConfirmDeleteProductLine=Weet u zeker dat u deze prodcutlijn wilt verwijderen? NoProductMatching=Geen product / dienst voldoen aan uw criteria -Restock=Restock ProductSpecial=Speciale QtyMin=Minimum hoeveelheid PriceQtyMin=Prijs hoeveelheid min. @@ -74,7 +70,6 @@ NoSupplierPriceDefinedForThisProduct=Geen enkele leverancier prijs / Qty gedefin RecordedProducts=Producten geregistreerd RecordedProductsAndServices=Producten / diensten opgenomen GenerateThumb=Genereer Thumb -ProductCanvasAbility=Use special "canvas" addons ServiceNb=Service # %s ListProductByPopularity=Lijst van producten / diensten op populariteit Finished=Afgewerkt product diff --git a/htdocs/langs/pl_PL/main.lang b/htdocs/langs/pl_PL/main.lang index 4cc0afc76c2..cec0f69b646 100644 --- a/htdocs/langs/pl_PL/main.lang +++ b/htdocs/langs/pl_PL/main.lang @@ -17,7 +17,7 @@ FormatDateShortJQueryInput=dd-mm-yy FormatHourShortJQuery=HH:MM FormatHourShort=%I:%M %p FormatHourShortDuration=%H:%M -FormatDateTextShort=%d %b %R +FormatDateTextShort=%d %b %Y FormatDateText=%B %d, %Y FormatDateHourShort=%m/%d/%Y %I:%M %p FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p diff --git a/htdocs/langs/pt_BR/accountancy.lang b/htdocs/langs/pt_BR/accountancy.lang index c64e3933a2b..eed90c5f694 100644 --- a/htdocs/langs/pt_BR/accountancy.lang +++ b/htdocs/langs/pt_BR/accountancy.lang @@ -6,90 +6,12 @@ ConfigAccountingExpert=Configuração do módulo especialista em contabilidade Journaux=Jornais JournalFinancial=Jornais financeiros Selectmodelcsv=Escolha um modelo de exportação -Modelcsv_CEGID=Export towards CEGID Expert -BackToChartofaccounts=Return chart of accounts -Back=Return -Definechartofaccounts=Define a chart of accounts -Selectchartofaccounts=Select a chart of accounts -Addanaccount=Add an accounting account -AccountAccounting=Accounting account -Ventilation=Breakdown -CustomersVentilation=Breakdown customers -SuppliersVentilation=Breakdown suppliers -TradeMargin=Trade margin -Reports=Reports -ByCustomerInvoice=By invoices customers -UpdateAccount=Modification of an accounting account -UpdateMvts=Modification of a movement -WriteBookKeeping=Record accounts in general ledger -Bookkeeping=General ledger -AccountBalanceByMonth=Account balance by month -AccountingVentilation=Breakdown accounting -AccountingVentilationSupplier=Breakdown accounting supplier -AccountingVentilationCustomer=Breakdown accounting customer -CAHTF=Total purchase supplier HT -InvoiceLines=Lines of invoice to be ventilated -InvoiceLinesDone=Ventilated lines of invoice -IntoAccount=In the accounting account -Ventilate=Ventilate -VentilationAuto=Automatic breakdown -EndProcessing=The end of processing -AnyLineVentilate=Any lines to ventilate SelectedLines=Linhas selecionadas -Lineofinvoice=Line of invoice -VentilatedinAccount=Ventilated successfully in the accounting account -NotVentilatedinAccount=Not ventilated in the accounting account ACCOUNTING_SEPARATORCSV=Separator CSV -ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50) -ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements -ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the breakdown pages "Breakdown" by the most recent elements -AccountLength=Length of the accounting accounts shown in Dolibarr -AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software. -ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounts -ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounts -ACCOUNTING_SELL_JOURNAL=Sell journal -ACCOUNTING_PURCHASE_JOURNAL=Purchase journal -ACCOUNTING_BANK_JOURNAL=Bank journal -ACCOUNTING_CASH_JOURNAL=Cash journal -ACCOUNTING_MISCELLANEOUS_JOURNAL=Miscellaneous journal -ACCOUNTING_SOCIAL_JOURNAL=Social journal -ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account of transfer -ACCOUNTING_ACCOUNT_SUSPENSE=Account of wait ACCOUNTING_PRODUCT_BUY_ACCOUNT=Codigo contavel padrao para compra de produtos ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Codigo contavel padrao para venda de produtos ACCOUNTING_SERVICE_BUY_ACCOUNT=Codigo contavel padrao para compra de servicos ACCOUNTING_SERVICE_SOLD_ACCOUNT=Codigo contavel padrao para venda de serviços Docref=Referência Code_tiers=Cliente/Fornecedor -Labelcompte=Label account -Sens=Sens -Codejournal=Journal -DelBookKeeping=Delete the records of the general ledger -BankJournal=Bank journal -DescBankJournal=Bank journal including all the types of payments other than cash -CashJournal=Cash journal -DescCashJournal=Cash journal including the type of payment cash -CashPayment=Cash Payment -ThirdPartyAccount=Thirdparty account NewAccountingMvt=Nova movimentação -NumMvts=Number of movement -ListeMvts=List of the movement -ErrorDebitCredit=Debit and Credit cannot have a value at the same time -ReportThirdParty=List thirdparty account -DescThirdPartyReport=Consult here the list of the thirdparty customers and the suppliers and their accounting accounts -ListAccounts=List of the accounting accounts -Pcgversion=Version of the plan -Pcgtype=Class of account -Pcgsubtype=Under class of account -DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers -TotalVente=Total turnover HT -TotalMarge=Total sales margin -DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their accounting account -DescVentilTodoCustomer=Ventilate your lines of customer invoice with an accounting account -ChangeAccount=Change the accounting account for lines selected by the account: -DescVentilSupplier=Consult here the annual breakdown accounting of your invoices suppliers -DescVentilTodoSupplier=Ventilate your lines of invoice supplier with an accounting account -DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account -ValidateHistory=Validate Automatically -ErrorAccountancyCodeIsAlreadyUse=Error, you cannot delete this accounting account because it is used -FicheVentilation=Breakdown card diff --git a/htdocs/langs/pt_BR/admin.lang b/htdocs/langs/pt_BR/admin.lang index 0a86251af87..511241d55c0 100644 --- a/htdocs/langs/pt_BR/admin.lang +++ b/htdocs/langs/pt_BR/admin.lang @@ -112,7 +112,6 @@ PurgeAuditEvents=Apagar os eventos de segurança ConfirmPurgeAuditEvents=Tem a certeza que pretende limpar a lista de eventos de auditoria de segurança? Todos os logs de seguranca serao apagaos, nenhum outro dado sera removido. NewBackup=Novo Backup GenerateBackup=Gerar Backup -Backup=Backup RunCommandSummary=A cópia será executada pelo seguinte comando RunCommandSummaryToLaunch=O backup pode ser executado com o seguinte comando WebServerMustHavePermissionForCommand=Seu servidor deve ter permissoes para executar esta ordem @@ -372,7 +371,6 @@ Module6000Desc=Gestão de fluxo de trabalho Module20000Name=Sair da configuração de pedidos Module39000Name=Lote de produto Module39000Desc=Número do lote, para gestão da data de validade para venda dos produtos -Module50000Name=PayBox Module50000Desc=Módulo para oferecer uma página de pagamento on-line por cartão de crédito com PayBox Module50100Desc=Caixa registradora Module50200Desc=Módulo para oferecer uma página de pagamento on-line por cartão de crédito com Paypal @@ -607,13 +605,11 @@ SetupDescription1=Todas as opções desta área de configuração são opções SetupDescription2=Os 2 Passos indispensáveis da configuração são as 2 primeiras do menu esquerdo: a configuração da empresa/Instituição e a configuração dos módulos: SetupDescription4=A configuração Módulos é indispensável já que Dolibarr não é um ERP/CRM monolítico, é um conjunto de módulos mais ou menos independente. Depois de ativar os módulos que lhe interessem verificar as suas funcionalidades nos menus de Dolibarr. SetupDescription5=Outros itens do menu gerenciar parâmetros opcionais. -InfoDolibarr=Infos Dolibarr InfoBrowser=Infos Navegador InfoOS=Informações do sistema operacional InfoWebServer=Informações do Web Server InfoDatabase=Informações da base de dados InfoPHP=Informações do PHP -InfoPerf=Infos performances BrowserName=Nome do navegador BrowserOS=Navegador OS ListOfSecurityEvents=Listado de eventos de segurança Dolibarr @@ -802,8 +798,6 @@ LDAPUsersSynchro=Usuário LDAPContactsSynchro=Contatos LDAPSynchronization=sincronização LDAP LDAPFunctionsNotAvailableOnPHP=as funções LDAP não estão disponíveis na sua PHP -LDAPToDolibarr=LDAP -> Dolibarr -DolibarrToLDAP=Dolibarr -> LDAP LDAPSynchronizeUsers=sincronização dos Usuários Dolibarr com LDAP LDAPSynchronizeGroups=sincronização dos grupos de Usuários Dolibarr com LDAP LDAPSynchronizeContacts=sincronização dos contatos Dolibarr com LDAP @@ -925,7 +919,6 @@ BarCodeNumberManager=Gerente de auto definir números de código de barras WithdrawalsSetup=configuração do módulo Débitos Diretos ExternalRSSSetup=configuração das importações do fluxos RSS NewRSS=Sindicação de um Novo fluxos RSS -RSSUrl=RSS URL MailingEMailError=Voltar E-mail (Erros-to) para e-mails com erros NotificationSetup=Configuração do módulo de notificações por e-mail SendingsSetup=configuração do módulos envios @@ -998,7 +991,6 @@ EndPointIs=Clientes SOAP devem enviar seus pedidos para o terminal Dolibarr Disp BankSetupModule=Configuração do módulo Banco FreeLegalTextOnChequeReceipts=Texto livre em recibos de verificação BankOrderShow=Ordem de apresentação das contas bancárias para os países usando o "número do banco detalhada" -BankOrderGlobal=General BankOrderES=Espanhol BankOrderESDesc=Ordem de exibição Espanhol MultiCompanySetup=Configuração do módulo Multi-empresa diff --git a/htdocs/langs/pt_BR/companies.lang b/htdocs/langs/pt_BR/companies.lang index c730091cccb..3f5b2428e93 100644 --- a/htdocs/langs/pt_BR/companies.lang +++ b/htdocs/langs/pt_BR/companies.lang @@ -57,32 +57,14 @@ TypeLocaltax1ES=RE Tipo TypeLocaltax2ES=IRPF Tipo WrongCustomerCode=Código cliente incorreto WrongSupplierCode=Código do fornecedor incorreto -ProfId5Short=Prof. id 5 ProfId6Short=Prof. id 6 ProfId5=ID profesional 5 ProfId6=ID profesional 6 -ProfId1AR=Prof Id 1 (CUIT/CUIL) ProfId2AR=Prof Id 2 (Receitas brutas) ProfId1BE=Núm da Ordem -ProfId1CL=Prof Id 1 (R.U.T.) -ProfId1CO=Prof Id 1 (R.U.T.) -ProfId2DE=Prof Id 2 (USt.-Nr) -ProfId3DE=Prof Id 3 (Handelsregister-Nr.) -ProfId1ES=Prof Id 1 (CIF/NIF) ProfId2ES=Prof Id 2 (Número do seguro social) -ProfId3ES=Prof Id 3 (CNAE) -ProfId4ES=Prof Id 4 (Collegiate number) -ProfId5FR=- -ProfId2IN=Prof Id 2 (PAN) ProfId3IN=Prof Id 3 (Taxa de Serviço) -ProfId1MA=Id prof. 1 (R.C.) -ProfId3MA=Id prof. 3 (I.F.) -ProfId4MA=Id prof. 4 (C.N.S.S.) -ProfId1MX=Prof Id 1 (R.F.C). -ProfId2MX=Prof Id 2 (R..P. IMSS) ProfId3MX=Prof Id 3 (Carta Profissional) -ProfId1NL=KVK nummer -ProfId4NL=Burgerservicenummer (BSN) ProfId1RU=Id prof 1 (I.E.) ProfId2RU=Id prof 2 (I.M.) ProfId3RU=Id prof. 3 (CGC) @@ -146,7 +128,6 @@ ProspectLevel=Cliente em potencial ContactPublic=Compartilhado OthersNotLinkedToThirdParty=Outros, não associado à um cliente/fornecedor ProspectStatus=Estado do cliente em potencial -TE_UNKNOWN=- StatusProspect-1=Não contatar StatusProspect1=A contatar StatusProspect2=Contato em Curso diff --git a/htdocs/langs/pt_BR/holiday.lang b/htdocs/langs/pt_BR/holiday.lang index 7586477f9e5..5286aa27371 100644 --- a/htdocs/langs/pt_BR/holiday.lang +++ b/htdocs/langs/pt_BR/holiday.lang @@ -1,57 +1,23 @@ # Dolibarr language file - Source file is en_US - holiday -HRM=HRM -Holidays=Leaves -CPTitreMenu=Leaves MenuReportMonth=Relatorio mensal -MenuAddCP=Make a leave request -NotActiveModCP=You must enable the module Leaves to view this page. -NotConfigModCP=You must configure the module Leaves to view this page. To do this, click here . -NoCPforUser=You don't have any available day. -AddCP=Make a leave request DateDebCP=Data inicio DateFinCP=Data fim DateCreateCP=Data criacão ToReviewCP=Aguardando aprovação RefuseCP=Negado ValidatorCP=Aprovador -ListeCP=List of leaves ReviewedByCP=Sera revisado por -SendRequestCP=Create leave request -DelayToRequestCP=Leave requests must be made at least %s day(s) before them. -MenuConfCP=Edit balance of leaves -UpdateAllCP=Update the leaves -SoldeCPUser=Leaves balance is %s days. ErrorEndDateCP=Você deve selecionar uma data final posterior à data inicial. ErrorSQLCreateCP=Ocorreu um erro no SQL durante a criação: -ErrorIDFicheCP=An error has occurred, the leave request does not exist. ReturnCP=Retorne à página anterior -ErrorUserViewCP=You are not authorized to read this leave request. -InfosCP=Information of the leave request InfosWorkflowCP=Fluxo de Trabalho de Informação RequestByCP=Requisitado por -TitreRequestCP=Leave request -NbUseDaysCP=Number of days of vacation consumed DeleteCP=Eliminar ActionValidCP=Confirmar ActionRefuseCP=Não autorizar -TitleDeleteCP=Delete the leave request -ConfirmDeleteCP=Confirm the deletion of this leave request? -ErrorCantDeleteCP=Error you don't have the right to delete this leave request. -CantCreateCP=You don't have the right to make leave requests. -InvalidValidatorCP=You must choose an approbator to your leave request. -CantUpdate=You cannot update this leave request. NoDateDebut=Você deve selecionar uma data inicial. NoDateFin=Você deve selecionar uma data final. -ErrorDureeCP=Your leave request does not contain working day. -TitleValidCP=Approve the leave request -ConfirmValidCP=Are you sure you want to approve the leave request? -TitleToValidCP=Send leave request -ConfirmToValidCP=Are you sure you want to send the leave request? -TitleRefuseCP=Refuse the leave request -ConfirmRefuseCP=Are you sure you want to refuse the leave request? NoMotifRefuseCP=Você deve selecionar uma razão para não autorizar a requisição. -TitleCancelCP=Cancel the leave request -ConfirmCancelCP=Are you sure you want to cancel the leave request? DetailRefusCP=Motivo da recusa DateRefusCP=Data da recusa DateCancelCP=Data do cancelamento @@ -61,23 +27,15 @@ MotifCP=Razão UserCP=Usuário ErrorAddEventToUserCP=Ocorreu um erro ao adicionar a licença excepcional. AddEventToUserOkCP=A adição da licença excepcional tenha sido concluída. -MenuLogCP=View logs of leave requests -LogCP=Log of updates of available vacation days ActionByCP=Interpretada por PrevSoldeCP=Balanço anterior NewSoldeCP=Novo Balanco -alreadyCPexist=A leave request has already been done on this period. UserName=Apelidos -FirstDayOfHoliday=First day of vacation -LastDayOfHoliday=Last day of vacation HolidaysMonthlyUpdate=A atualização mensal ManualUpdate=Atualização manual -ConfCP=Configuration of leave request module DescOptionCP=Descrição da opção ValueOptionCP=Valor -GroupToValidateCP=Group with the ability to approve leave requests ConfirmConfigCP=Validar a configuração -LastUpdateCP=Last automatic update of leaves allocation UpdateConfCPOK=Atualizado com sucesso. ErrorUpdateConfCP=Ocorreu um erro durante a atualização, por favor, tente novamente. ValidEventCP=Confirmar diff --git a/htdocs/langs/pt_BR/install.lang b/htdocs/langs/pt_BR/install.lang index c312f8dc18d..2e2532dea8c 100644 --- a/htdocs/langs/pt_BR/install.lang +++ b/htdocs/langs/pt_BR/install.lang @@ -60,7 +60,6 @@ GoToSetupArea=Prosseguir para a área de configuração MigrationNotFinished=A versao do banco de dados nao e competamente atualizada, voce tera que aviar o processo de atualizacao novamente. GoToUpgradePage=Vai para a pagina de atualizaçao novamente DirectoryRecommendation=É recomendado que você ponha esta directry das páginas da web diretório. -DolibarrAdminLogin=Dolibarr admin login AdminLoginAlreadyExists=Dolibarr conta administrador ' %s' já existe. WarningRemoveInstallDir=Atenção, por razões de segurança, uma vez que a instalação ou atualização estiver completa, você deve remover o diretório de instalação ou renomeá-lo para install.lock a fim de evitar o seu uso malicioso. ThisPHPDoesNotSupportTypeBase=PHP Este sistema não suporta qualquer tipo de interface para acesso de dados %s @@ -71,7 +70,6 @@ InstallNotAllowed=Instalação não permitidas pela conf.php permissões YouMustCreateWithPermission=Você deve criar o arquivo %s e definir permissões escrever sobre ele para instalar o servidor web durante o processo. CorrectProblemAndReloadPage=Corrija o problema e pressione a tecla F5 para recarregar página. DatabaseVersion=Database versão -ServerVersion=Database server version YouMustCreateItAndAllowServerToWrite=Você deve criar este diretório e para permitir que o servidor da web para escrever nela. CharsetChoice=Conjunto de caracteres escolha KeepDefaultValuesDeb=Voce esta usando o assistente de configuração do Dolibarr do pacote Linux (Ubuntu, Debian, Fedora...), portanto os valores propostos aqui estao ja optimizados. O unico parametro a se completar e a senha do administrador de banco de dados. Mude outros parametros somente se voce sabe o que esta fazendo. diff --git a/htdocs/langs/pt_BR/languages.lang b/htdocs/langs/pt_BR/languages.lang index c922daac4f7..c724d9a49d9 100644 --- a/htdocs/langs/pt_BR/languages.lang +++ b/htdocs/langs/pt_BR/languages.lang @@ -33,6 +33,5 @@ Language_pl_PL=Polones Language_pt_BR=Portugues (Brasil) Language_pt_PT=Portugues Language_ru_UA=Russo (Ukrania) -Language_th_TH=Thai Language_zh_CN=Chines Language_zh_TW=Chines (Tradicional) diff --git a/htdocs/langs/pt_BR/main.lang b/htdocs/langs/pt_BR/main.lang index 06cea34b38c..e7008da51cd 100644 --- a/htdocs/langs/pt_BR/main.lang +++ b/htdocs/langs/pt_BR/main.lang @@ -134,7 +134,6 @@ TotalTTC=Total TotalVAT=Total do ICMS TotalLT1=Total taxa 2 TotalLT2=Total taxa 3 -TotalLT1ES=Total RE IncludedVAT=ICMS incluido HT=Sem ICMS TTC=ICMS Incluido @@ -142,7 +141,6 @@ VAT=ICMS VATRate=Taxa ICMS OtherStatistics=Outras estatisticas Favorite=Favorito -ShortInfo=Info. RefSupplier=Ref. Fornecedor RefPayment=Ref. Pagamento Comment=Comentario @@ -164,32 +162,21 @@ GeneratedOn=Gerado a %s Available=Disponivel NotYetAvailable=Ainda não disponível to=para -Drafts=Drafts ByUsers=Por usuário -Preview=Preview CurrentLogin=Login atual -JanuaryMin=Jan FebruaryMin=Fev AprilMin=Abr MayMin=Mai -JuneMin=Jun -JulyMin=Jul AugustMin=Ago SeptemberMin=Set OctoberMin=Out -NovemberMin=Nov DecemberMin=Dez -MonthShort01=Jan MonthShort02=Fev -MonthShort03=Mar MonthShort04=Abr MonthShort05=Mai -MonthShort06=Jun -MonthShort07=Jul MonthShort08=Ago MonthShort09=Set MonthShort10=Out -MonthShort11=Nov MonthShort12=Dez AttachedFiles=Arquivos e Documentos Anexos FileTransferComplete=Foi transferido corretamente o Arquivo diff --git a/htdocs/langs/pt_BR/members.lang b/htdocs/langs/pt_BR/members.lang index 49fd906d30b..6b81e85596e 100644 --- a/htdocs/langs/pt_BR/members.lang +++ b/htdocs/langs/pt_BR/members.lang @@ -54,7 +54,6 @@ AddMember=Criar membro NoTypeDefinedGoToSetup=nenhum tipo de membro definido. ir a configuração -> Tipos de Membros EditType=edição do tipo de membro Physical=Físico -Moral=Moral MorPhy=Moral/Físico Reenable=Reativar ResiliateMember=Baixar um membro diff --git a/htdocs/langs/pt_BR/orders.lang b/htdocs/langs/pt_BR/orders.lang index ccf3c96b8bc..677d7eefba3 100644 --- a/htdocs/langs/pt_BR/orders.lang +++ b/htdocs/langs/pt_BR/orders.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - orders -OrdersArea=Área de Pedidos de Clientes OrderId=ID Pedido OrderLine=Linha de Comando OrderToProcess=Pedido a se processar @@ -58,7 +57,6 @@ PDFEinsteinDescription=Modelo de pedido completo (logo...) PDFEdisonDescription=O modelo simplificado do pedido PDFProformaDescription=A proforma fatura completa (logomarca...) OrderByEMail=E-mail -OrderByWWW=Online CreateInvoiceForThisCustomer=Faturar pedidos NoOrdersToInvoice=Nenhum pedido faturavel CloseProcessedOrdersAutomatically=Clasificar "processados" os pedidos selecionados. diff --git a/htdocs/langs/pt_BR/other.lang b/htdocs/langs/pt_BR/other.lang index 3f9ba3156d5..010797bc380 100644 --- a/htdocs/langs/pt_BR/other.lang +++ b/htdocs/langs/pt_BR/other.lang @@ -83,9 +83,6 @@ FeatureExperimental=Funcionalidade experimental. não é estável nesta versão FeatureDevelopment=Funcionalidade em Desenvolvimento. não estável nesta versão Left=Esquerda Right=Direita -LengthUnitcm=cm -LengthUnitmm=mm -Surface=Area VolumeUnitgallon=gallão SizeUnitfoot=pe BugTracker=Incidências diff --git a/htdocs/langs/pt_BR/printipp.lang b/htdocs/langs/pt_BR/printipp.lang new file mode 100644 index 00000000000..bfa731b0a36 --- /dev/null +++ b/htdocs/langs/pt_BR/printipp.lang @@ -0,0 +1,10 @@ +# Dolibarr language file - Source file is en_US - printipp +PrintIPPSetup=Configuração do módulo de Impressão Direta +PrintIPPDesc=Este módulo adiciona um botão de "Imprimir" para enviar documentos diretamente para impressora. Requer um sistema Linux com o CUPS instalado. +PRINTIPP_ENABLED=Mostrar ícone de "Impressão Direta" nas listas de documentos +PRINTIPP_PASSWORD=Senha +NoPrinterFound=Nenhuma impressora encontrada (verifique a configuração do CUPS) +FileWasSentToPrinter=Arquivo %s enviado para impressora +NoDefaultPrinterDefined=Nenhuma impressora padrão definida +DefaultPrinter=Impressora padrão +CupsServer=Servidor CUPS diff --git a/htdocs/langs/pt_BR/productbatch.lang b/htdocs/langs/pt_BR/productbatch.lang new file mode 100644 index 00000000000..add07363813 --- /dev/null +++ b/htdocs/langs/pt_BR/productbatch.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - productbatch +ProductStatusOnBatchShort=Sim +ProductStatusNotOnBatchShort=Não diff --git a/htdocs/langs/pt_PT/orders.lang b/htdocs/langs/pt_PT/orders.lang index 31dde51f16a..8b26b315b94 100644 --- a/htdocs/langs/pt_PT/orders.lang +++ b/htdocs/langs/pt_PT/orders.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - orders -OrdersArea=Area de Pedidos de clientes +OrdersArea=Área de Pedidos de Clientes SuppliersOrdersArea=Área de Pedidos a Fornecedores OrderCard=Ficha Pedido OrderId=Id da Encomenda diff --git a/htdocs/langs/ru_UA/banks.lang b/htdocs/langs/ru_UA/banks.lang index 3486f939885..81b9d0d2a8e 100644 --- a/htdocs/langs/ru_UA/banks.lang +++ b/htdocs/langs/ru_UA/banks.lang @@ -29,7 +29,6 @@ DeleteAccount=Удалить аккаунт RemoveFromRubrique=Удалить связь с категорией RemoveFromRubriqueConfirm=Вы уверены, что хотите удалить связь между сделки и категории? ListBankTransactions=Список банковских операций -IdTransaction=Transaction ID SearchTransaction=Поиск сделку ListTransactionsByCategory=Список сделки / категории TransactionsToConciliate=Сделки примирить diff --git a/htdocs/langs/ru_UA/cron.lang b/htdocs/langs/ru_UA/cron.lang deleted file mode 100644 index a701909b5ed..00000000000 --- a/htdocs/langs/ru_UA/cron.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron diff --git a/htdocs/langs/ru_UA/holiday.lang b/htdocs/langs/ru_UA/holiday.lang deleted file mode 100644 index 3bbcb71f207..00000000000 --- a/htdocs/langs/ru_UA/holiday.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - holiday diff --git a/htdocs/langs/ru_UA/mailmanspip.lang b/htdocs/langs/ru_UA/mailmanspip.lang deleted file mode 100644 index d35aebc152e..00000000000 --- a/htdocs/langs/ru_UA/mailmanspip.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - mailmanspip diff --git a/htdocs/langs/ru_UA/margins.lang b/htdocs/langs/ru_UA/margins.lang deleted file mode 100644 index 8a6d3d95254..00000000000 --- a/htdocs/langs/ru_UA/margins.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - margins diff --git a/htdocs/langs/ru_UA/opensurvey.lang b/htdocs/langs/ru_UA/opensurvey.lang deleted file mode 100644 index 5e9ce15eab2..00000000000 --- a/htdocs/langs/ru_UA/opensurvey.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - opensurvey diff --git a/htdocs/langs/ru_UA/users.lang b/htdocs/langs/ru_UA/users.lang deleted file mode 100644 index f1dd83c193b..00000000000 --- a/htdocs/langs/ru_UA/users.lang +++ /dev/null @@ -1 +0,0 @@ -# Dolibarr language file - Source file is en_US - users diff --git a/htdocs/langs/sw_SW/accountancy.lang b/htdocs/langs/sw_SW/accountancy.lang new file mode 100644 index 00000000000..bb9b358c045 --- /dev/null +++ b/htdocs/langs/sw_SW/accountancy.lang @@ -0,0 +1,160 @@ +# Dolibarr language file - en_US - Accounting Expert +CHARSET=UTF-8 + +Accounting=Accounting +Globalparameters=Global parameters +Chartofaccounts=Chart of accounts +Fiscalyear=Fiscal years +Menuaccount=Accounting accounts +Menuthirdpartyaccount=Thirdparty accounts +MenuTools=Tools + +ConfigAccountingExpert=Configuration of the module accounting expert +Journaux=Journals +JournalFinancial=Financial journals +Exports=Exports +Export=Export +Modelcsv=Model of export +OptionsDeactivatedForThisExportModel=For this export model, options are deactivated +Selectmodelcsv=Select a model of export +Modelcsv_normal=Classic export +Modelcsv_CEGID=Export towards CEGID Expert +BackToChartofaccounts=Return chart of accounts +Back=Return + +Definechartofaccounts=Define a chart of accounts +Selectchartofaccounts=Select a chart of accounts +Validate=Validate +Addanaccount=Add an accounting account +AccountAccounting=Accounting account +Ventilation=Breakdown +ToDispatch=To dispatch +Dispatched=Dispatched + +CustomersVentilation=Breakdown customers +SuppliersVentilation=Breakdown suppliers +TradeMargin=Trade margin +Reports=Reports +ByCustomerInvoice=By invoices customers +ByMonth=By Month +NewAccount=New accounting account +Update=Update +List=List +Create=Create +UpdateAccount=Modification of an accounting account +UpdateMvts=Modification of a movement +WriteBookKeeping=Record accounts in general ledger +Bookkeeping=General ledger +AccountBalanceByMonth=Account balance by month + +AccountingVentilation=Breakdown accounting +AccountingVentilationSupplier=Breakdown accounting supplier +AccountingVentilationCustomer=Breakdown accounting customer +Line=Line + +CAHTF=Total purchase supplier HT +InvoiceLines=Lines of invoice to be ventilated +InvoiceLinesDone=Ventilated lines of invoice +IntoAccount=In the accounting account + +Ventilate=Ventilate +VentilationAuto=Automatic breakdown + +Processing=Processing +EndProcessing=The end of processing +AnyLineVentilate=Any lines to ventilate +SelectedLines=Selected lines +Lineofinvoice=Line of invoice +VentilatedinAccount=Ventilated successfully in the accounting account +NotVentilatedinAccount=Not ventilated in the accounting account + +ACCOUNTING_SEPARATORCSV=Column separator in export file + +ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50) +ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements +ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the breakdown pages "Breakdown" by the most recent elements + +AccountLength=Length of the accounting accounts shown in Dolibarr +AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software. +ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounts +ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounts + +ACCOUNTING_SELL_JOURNAL=Sell journal +ACCOUNTING_PURCHASE_JOURNAL=Purchase journal +ACCOUNTING_BANK_JOURNAL=Bank journal +ACCOUNTING_CASH_JOURNAL=Cash journal +ACCOUNTING_MISCELLANEOUS_JOURNAL=Miscellaneous journal +ACCOUNTING_SOCIAL_JOURNAL=Social journal + +ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account of transfer +ACCOUNTING_ACCOUNT_SUSPENSE=Account of wait + +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for bought products (if not defined in the product sheet) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Accounting account by default for the sold products (if not defined in the product sheet) +ACCOUNTING_SERVICE_BUY_ACCOUNT=Accounting account by default for the bought services (if not defined in the service sheet) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Accounting account by default for the sold services (if not defined in the service sheet) + +Doctype=Type of document +Docdate=Date +Docref=Reference +Numerocompte=Account +Code_tiers=Thirdparty +Labelcompte=Label account +Debit=Debit +Credit=Credit +Amount=Amount +Sens=Sens +Codejournal=Journal + +DelBookKeeping=Delete the records of the general ledger + +SellsJournal=Sells journal +PurchasesJournal=Purchases journal +DescSellsJournal=Sells journal +DescPurchasesJournal=Purchases journal +BankJournal=Bank journal +DescBankJournal=Bank journal including all the types of payments other than cash +CashJournal=Cash journal +DescCashJournal=Cash journal including the type of payment cash + +CashPayment=Cash Payment + +SupplierInvoicePayment=Payment of invoice supplier +CustomerInvoicePayment=Payment of invoice customer + +ThirdPartyAccount=Thirdparty account + +NewAccountingMvt=New movement +NumMvts=Number of movement +ListeMvts=List of the movement +ErrorDebitCredit=Debit and Credit cannot have a value at the same time + +ReportThirdParty=List thirdparty account +DescThirdPartyReport=Consult here the list of the thirdparty customers and the suppliers and their accounting accounts + +ListAccounts=List of the accounting accounts + +Pcgversion=Version of the plan +Pcgtype=Class of account +Pcgsubtype=Under class of account +Accountparent=Root of the account +Active=Statement + +NewFiscalYear=New fiscal year + +DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers +TotalVente=Total turnover HT +TotalMarge=Total sales margin +DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their accounting account +DescVentilTodoCustomer=Ventilate your lines of customer invoice with an accounting account +ChangeAccount=Change the accounting account for lines selected by the account: +Vide=- +DescVentilSupplier=Consult here the annual breakdown accounting of your invoices suppliers +DescVentilTodoSupplier=Ventilate your lines of invoice supplier with an accounting account +DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account + +ValidateHistory=Validate Automatically + +ErrorAccountancyCodeIsAlreadyUse=Error, you cannot delete this accounting account because it is used + +FicheVentilation=Breakdown card diff --git a/htdocs/langs/sw_SW/admin.lang b/htdocs/langs/sw_SW/admin.lang new file mode 100644 index 00000000000..9782c2ea27f --- /dev/null +++ b/htdocs/langs/sw_SW/admin.lang @@ -0,0 +1,1603 @@ +# Dolibarr language file - Source file is en_US - admin +Foundation=Foundation +Version=Version +VersionProgram=Version program +VersionLastInstall=Version initial install +VersionLastUpgrade=Version last upgrade +VersionExperimental=Experimental +VersionDevelopment=Development +VersionUnknown=Unknown +VersionRecommanded=Recommended +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found +SessionId=Session ID +SessionSaveHandler=Handler to save sessions +SessionSavePath=Storage session localization +PurgeSessions=Purge of sessions +ConfirmPurgeSessions=Do you really want to purge all sessions ? This will disconnect every user (except yourself). +NoSessionListWithThisHandler=Save session handler configured in your PHP does not allow to list all running sessions. +LockNewSessions=Lock new connections +ConfirmLockNewSessions=Are you sure you want to restrict any new Dolibarr connection to yourself. Only user %s will be able to connect after that. +UnlockNewSessions=Remove connection lock +YourSession=Your session +Sessions=Users session +WebUserGroup=Web server user/group +NoSessionFound=Your PHP seems to not allow to list active sessions. Directory used to save sessions (%s) might be protected (For example, by OS permissions or by PHP directive open_basedir). +HTMLCharset=Charset for generated HTML pages +DBStoringCharset=Database charset to store data +DBSortingCharset=Database charset to sort data +WarningModuleNotActive=Module %s must be enabled +WarningOnlyPermissionOfActivatedModules=Only permissions related to activated modules are shown here. You can activate other modules in the Home->Setup->Modules page. +DolibarrSetup=Dolibarr install or upgrade +DolibarrUser=Dolibarr user +InternalUser=Internal user +ExternalUser=External user +InternalUsers=Internal users +ExternalUsers=External users +GlobalSetup=Global setup +GUISetup=Display +SetupArea=Setup area +FormToTestFileUploadForm=Form to test file upload (according to setup) +IfModuleEnabled=Note: yes is effective only if module %s is enabled +RemoveLock=Remove file %s if it exists to allow usage of the update tool. +RestoreLock=Restore file %s, with read permission only, to disable any usage of update tool. +SecuritySetup=Security setup +ErrorModuleRequirePHPVersion=Error, this module requires PHP version %s or higher +ErrorModuleRequireDolibarrVersion=Error, this module requires Dolibarr version %s or higher +ErrorDecimalLargerThanAreForbidden=Error, a precision higher than %s is not supported. +DictionarySetup=Dictionary setup +Dictionary=Dictionaries +Chartofaccounts=Chart of accounts +Fiscalyear=Fiscal years +ErrorReservedTypeSystemSystemAuto=Value 'system' and 'systemauto' for type is reserved. You can use 'user' as value to add your own record +ErrorCodeCantContainZero=Code can't contain value 0 +DisableJavascript=Disable JavaScript and Ajax functions (Recommended for blind person or text browsers) +ConfirmAjax=Use Ajax confirmation popups +UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. +UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box. +ActivityStateToSelectCompany= Add a filter option to show/hide thirdparties which are currently in activity or has ceased it +UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. +UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box). +DelaiedFullListToSelectCompany=Wait you press a key before loading content of thirdparties combo list (This may increase performance if you have a large number of thirdparties) +DelaiedFullListToSelectContact=Wait you press a key before loading content of contact combo list (This may increase performance if you have a large number of contact) +SearchFilter=Search filters options +NumberOfKeyToSearch=Nbr of characters to trigger search: %s +ViewFullDateActions=Show full dates events in the third sheet +NotAvailableWhenAjaxDisabled=Not available when Ajax disabled +JavascriptDisabled=JavaScript disabled +UsePopupCalendar=Use popup for dates input +UsePreviewTabs=Use preview tabs +ShowPreview=Show preview +PreviewNotAvailable=Preview not available +ThemeCurrentlyActive=Theme currently active +CurrentTimeZone=TimeZone PHP (server) +MySQLTimeZone=TimeZone MySql (database) +TZHasNoEffect=Dates are stored and returned by database server as if they were kept as submited string. The timezone has effect only when using UNIX_TIMESTAMP function (that should not be used by Dolibarr, so database TZ should have no effect, even if changed after data was entered). +Space=Space +Table=Table +Fields=Fields +Index=Index +Mask=Mask +NextValue=Next value +NextValueForInvoices=Next value (invoices) +NextValueForCreditNotes=Next value (credit notes) +NextValueForDeposit=Next value (deposit) +NextValueForReplacements=Next value (replacements) +MustBeLowerThanPHPLimit=Note: your PHP limits each file upload's size to %s %s, whatever this parameter's value is +NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration +MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) +UseCaptchaCode=Use graphical code (CAPTCHA) on login page +UseAvToScanUploadedFiles=Use anti-virus to scan uploaded files +AntiVirusCommand= Full path to antivirus command +AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan +AntiVirusParam= More parameters on command line +AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +ComptaSetup=Accounting module setup +UserSetup=User management setup +MenuSetup=Menu management setup +MenuLimits=Limits and accuracy +MenuIdParent=Parent menu ID +DetailMenuIdParent=ID of parent menu (empty for a top menu) +DetailPosition=Sort number to define menu position +PersonalizedMenusNotSupported=Personalized menus not supported +AllMenus=All +NotConfigured=Module not configured +Setup=Setup +Activation=Activation +Active=Active +SetupShort=Setup +OtherOptions=Other options +OtherSetup=Other setup +CurrentValueSeparatorDecimal=Decimal separator +CurrentValueSeparatorThousand=Thousand separator +Destination=Destination +IdModule=Module ID +IdPermissions=Permissions ID +Modules=Modules +ModulesCommon=Main modules +ModulesOther=Other modules +ModulesInterfaces=Interfaces modules +ModulesSpecial=Modules very specific +ParameterInDolibarr=Parameter %s +LanguageParameter=Language parameter %s +LanguageBrowserParameter=Parameter %s +LocalisationDolibarrParameters=Localisation parameters +ClientTZ=Client Time Zone (user) +ClientHour=Client time (user) +OSTZ=Server OS Time Zone +PHPTZ=PHP server Time Zone +PHPServerOffsetWithGreenwich=PHP server offset width Greenwich (seconds) +ClientOffsetWithGreenwich=Client/Browser offset width Greenwich (seconds) +DaylingSavingTime=Daylight saving time +CurrentHour=PHP Time (server) +CompanyTZ=Company Time Zone (main company) +CompanyHour=Company Time (main company) +CurrentSessionTimeOut=Current session timeout +YouCanEditPHPTZ=To set a different PHP timezone (not required), you can try to add a file .htacces with a line like this "SetEnv TZ Europe/Paris" +OSEnv=OS Environment +Box=Box +Boxes=Boxes +MaxNbOfLinesForBoxes=Max number of lines for boxes +PositionByDefault=Default order +Position=Position +MenusDesc=Menus managers define content of the 2 menu bars (horizontal bar and vertical bar). +MenusEditorDesc=The menu editor allow you to define personalized entries in menus. Use it carefully to avoid making dolibarr unstable and menu entries permanently unreachable.
Some modules add entries in the menus (in menu All in most cases). If you removed some of these entries by mistake, you can restore them by disabling and reenabling the module. +MenuForUsers=Menu for users +LangFile=.lang file +System=System +SystemInfo=System information +SystemTools=System tools +SystemToolsArea=System tools area +SystemToolsAreaDesc=This area provides administration features. Use the menu to choose the feature you're looking for. +Purge=Purge +PurgeAreaDesc=This page allows you to delete all files built or stored by Dolibarr (temporary files or all files in %s directory). Using this feature is not necessary. It is provided for users whose Dolibarr is hosted by a provider that does not offer permissions to delete files built by the web server. +PurgeDeleteLogFile=Delete log file %s defined for Syslog module (no risk to loose data) +PurgeDeleteTemporaryFiles=Delete all temporary files (no risk to loose data) +PurgeDeleteAllFilesInDocumentsDir=Delete all files in directory %s. Temporary files but also database backup dumps, files attached to elements (third parties, invoices, ...) and uploaded into the ECM module will be deleted. +PurgeRunNow=Purge now +PurgeNothingToDelete=No directory or file to delete. +PurgeNDirectoriesDeleted=%s files or directories deleted. +PurgeAuditEvents=Purge all security events +ConfirmPurgeAuditEvents=Are you sure you want to purge all security events ? All security logs will be deleted, no other data will be removed. +NewBackup=New backup +GenerateBackup=Generate backup +Backup=Backup +Restore=Restore +RunCommandSummary=Backup has been launched with the following command +RunCommandSummaryToLaunch=Backup can be launched with the following command +WebServerMustHavePermissionForCommand=Your web server must have the permission to run such commands +BackupResult=Backup result +BackupFileSuccessfullyCreated=Backup file successfully generated +YouCanDownloadBackupFile=Generated files can now be downloaded +NoBackupFileAvailable=No backup files available. +ExportMethod=Export method +ImportMethod=Import method +ToBuildBackupFileClickHere=To build a backup file, click
here. +ImportMySqlDesc=To import a backup file, you must use mysql command from command line: +ImportPostgreSqlDesc=To import a backup file, you must use pg_restore command from command line: +ImportMySqlCommand=%s %s < mybackupfile.sql +ImportPostgreSqlCommand=%s %s mybackupfile.sql +FileNameToGenerate=File name to generate +Compression=Compression +CommandsToDisableForeignKeysForImport=Command to disable foreign keys on import +CommandsToDisableForeignKeysForImportWarning=Mandatory if you want to be able to restore your sql dump later +ExportCompatibility=Compatibility of generated export file +MySqlExportParameters=MySQL export parameters +PostgreSqlExportParameters= PostgreSQL export parameters +UseTransactionnalMode=Use transactional mode +FullPathToMysqldumpCommand=Full path to mysqldump command +FullPathToPostgreSQLdumpCommand=Full path to pg_dump command +ExportOptions=Export Options +AddDropDatabase=Add DROP DATABASE command +AddDropTable=Add DROP TABLE command +ExportStructure=Structure +Datas=Data +NameColumn=Name columns +ExtendedInsert=Extended INSERT +NoLockBeforeInsert=No lock commands around INSERT +DelayedInsert=Delayed insert +EncodeBinariesInHexa=Encode binary data in hexadecimal +IgnoreDuplicateRecords=Ignore errors of duplicate records (INSERT IGNORE) +Yes=Yes +No=No +AutoDetectLang=Autodetect (browser language) +FeatureDisabledInDemo=Feature disabled in demo +Rights=Permissions +BoxesDesc=Boxes are screen area that show a piece of information on some pages. You can choose between showing the box or not by selecting target page and clicking 'Activate', or by clicking the dustbin to disable it. +OnlyActiveElementsAreShown=Only elements from enabled modules are shown. +ModulesDesc=Dolibarr modules define which functionality is enabled in software. Some modules require permissions you must grant to users, after enabling module. Click on button on/off in column "Status" to enable a module/feature. +ModulesInterfaceDesc=The Dolibarr modules interface allows you to add features depending on external software, systems or services. +ModulesSpecialDesc=Special modules are very specific or seldom used modules. +ModulesJobDesc=Business modules provide simple predefined setup of Dolibarr for a particular business. +ModulesMarketPlaceDesc=You can find more modules to download on external web sites on the Internet... +ModulesMarketPlaces=More modules... +DoliStoreDesc=DoliStore, the official market place for Dolibarr ERP/CRM external modules +DoliPartnersDesc=List with some companies that can provide/develop on-demand modules or features (Note: any Open Source company knowning PHP language can provide you specific development) +WebSiteDesc=Web site providers you can search to find more modules... +URL=Link +BoxesAvailable=Boxes available +BoxesActivated=Boxes activated +ActivateOn=Activate on +ActiveOn=Activated on +SourceFile=Source file +AutomaticIfJavascriptDisabled=Automatic if Javascript is disabled +AvailableOnlyIfJavascriptNotDisabled=Available only if JavaScript is not disabled +AvailableOnlyIfJavascriptAndAjaxNotDisabled=Available only if JavaScript is not disabled +Required=Required +UsedOnlyWithTypeOption=Used by some agenda option only +Security=Security +Passwords=Passwords +DoNotStoreClearPassword=Do no store clear passwords in database but store only encrypted value (Activated recommended) +MainDbPasswordFileConfEncrypted=Database password encrypted in conf.php (Activated recommended) +InstrucToEncodePass=To have password encoded into the conf.php file, replace the line
$dolibarr_main_db_pass="..."
by
$dolibarr_main_db_pass="crypted:%s" +InstrucToClearPass=To have password decoded (clear) into the conf.php file, replace the line
$dolibarr_main_db_pass="crypted:..."
by
$dolibarr_main_db_pass="%s" +ProtectAndEncryptPdfFiles=Protection of generated pdf files (Activated NOT recommended, breaks mass pdf generation) +ProtectAndEncryptPdfFilesDesc=Protection of a PDF document keeps it available to read and print with any PDF browser. However, editing and copying is not possible anymore. Note that using this feature make building of a global cumulated pdf not working (like unpaid invoices). +Feature=Feature +DolibarrLicense=License +DolibarrProjectLeader=Project leader +Developpers=Developers/contributors +OtherDeveloppers=Other developers/contributors +OfficialWebSite=Dolibarr international official web site +OfficialWebSiteFr=French official web site +OfficialWiki=Dolibarr documentation on Wiki +OfficialDemo=Dolibarr online demo +OfficialMarketPlace=Official market place for external modules/addons +OfficialWebHostingService=Referenced web hosting services (Cloud hosting) +ReferencedPreferredPartners=Preferred Partners +OtherResources=Autres ressources +ForDocumentationSeeWiki=For user or developer documentation (Doc, FAQs...),
take a look at the Dolibarr Wiki:
%s +ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:
%s +HelpCenterDesc1=This area can help you to get a Help support service on Dolibarr. +HelpCenterDesc2=Some part of this service are available in english only. +CurrentTopMenuHandler=Current top menu handler +CurrentLeftMenuHandler=Current left menu handler +CurrentMenuHandler=Current menu handler +CurrentSmartphoneMenuHandler=Current smartphone menu handler +MeasuringUnit=Measuring unit +Emails=E-mails +EMailsSetup=E-mails setup +EMailsDesc=This page allows you to overwrite your PHP parameters for e-mails sending. In most cases on Unix/Linux OS, your PHP setup is correct and these parameters are useless. +MAIN_MAIL_SMTP_PORT=SMTP/SMTPS Port (By default in php.ini: %s) +MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (By default in php.ini: %s) +MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix like systems) +MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix like systems) +MAIN_MAIL_EMAIL_FROM=Sender e-mail for automatic emails (By default in php.ini: %s) +MAIN_MAIL_ERRORS_TO=Sender e-mail used for error returns emails sent +MAIN_MAIL_AUTOCOPY_TO= Send systematically a hidden carbon-copy of all sent emails to +MAIN_MAIL_AUTOCOPY_PROPOSAL_TO= Send systematically a hidden carbon-copy of proposals sent by email to +MAIN_MAIL_AUTOCOPY_ORDER_TO= Send systematically a hidden carbon-copy of orders sent by email to +MAIN_MAIL_AUTOCOPY_INVOICE_TO= Send systematically a hidden carbon-copy of invoice sent by emails to +MAIN_DISABLE_ALL_MAILS=Disable all e-mails sendings (for test purposes or demos) +MAIN_MAIL_SENDMODE=Method to use to send EMails +MAIN_MAIL_SMTPS_ID=SMTP ID if authentication required +MAIN_MAIL_SMTPS_PW=SMTP Password if authentication required +MAIN_MAIL_EMAIL_TLS= Use TLS (SSL) encrypt +MAIN_DISABLE_ALL_SMS=Disable all SMS sendings (for test purposes or demos) +MAIN_SMS_SENDMODE=Method to use to send SMS +MAIN_MAIL_SMS_FROM=Default sender phone number for Sms sending +FeatureNotAvailableOnLinux=Feature not available on Unix like systems. Test your sendmail program locally. +SubmitTranslation=If translation for this language is not complete or you find errors, you can correct this by editing files into directory langs/%s and submit modified files on www.dolibarr.org forum. +ModuleSetup=Module setup +ModulesSetup=Modules setup +ModuleFamilyBase=System +ModuleFamilyCrm=Customer Relation Management (CRM) +ModuleFamilyProducts=Products Management +ModuleFamilyHr=Human Resource Management +ModuleFamilyProjects=Projects/Collaborative work +ModuleFamilyOther=Other +ModuleFamilyTechnic=Multi-modules tools +ModuleFamilyExperimental=Experimental modules +ModuleFamilyFinancial=Financial Modules (Accounting/Treasury) +ModuleFamilyECM=Electronic Content Management (ECM) +MenuHandlers=Menu handlers +MenuAdmin=Menu editor +DoNotUseInProduction=Do not use in production +ThisIsProcessToFollow=This is setup to process: +StepNb=Step %s +FindPackageFromWebSite=Find a package that provides feature you want (for example on official web site %s). +DownloadPackageFromWebSite=Download package %s. +UnpackPackageInDolibarrRoot=Unpack package file into Dolibarr's root directory %s +SetupIsReadyForUse=Install is finished and Dolibarr is ready to use with this new component. +NotExistsDirect=The alternative root directory is not defined.
+InfDirAlt=Since version 3 it is possible to define an alternative root directory.This allows you to store, same place, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
+InfDirExample=
Then declare it in the file conf.php
$dolibarr_main_url_root_alt='http://myserver/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
*These lines are commented with "#", to uncomment only remove the character. +YouCanSubmitFile=Select module: +CurrentVersion=Dolibarr current version +CallUpdatePage=Go to the page that updates the database structure and datas: %s. +LastStableVersion=Last stable version +UpdateServerOffline=Update server offline +GenericMaskCodes=You may enter any numbering mask. In this mask, the following tags could 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 previous but an offset corresponding to the number to the right of the + sign is applied starting on first %s.
{000000@x} same as previous 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 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 for customer. This counter dedicated to customer is reset at same time than global counter.
{tttt} The code of thirdparty type on n characters (see dictionary-thirdparty types).
+GenericMaskCodes3=All other characters in the mask will remain intact.
Spaces are not allowed.
+GenericMaskCodes4a=Example on the 99th %s of the third party TheCompany done 2007-01-31:
+GenericMaskCodes4b=Example on third party created on 2007-03-01:
+GenericMaskCodes4c=Example on product created on 2007-03-01:
+GenericMaskCodes5=ABC{yy}{mm}-{000000} will give ABC0701-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX +GenericNumRefModelDesc=Returns a customizable number according to a defined mask. +ServerAvailableOnIPOrPort=Server is available at address %s on port %s +ServerNotAvailableOnIPOrPort=Server is not available at address %s on port %s +DoTestServerAvailability=Test server connectivity +DoTestSend=Test sending +DoTestSendHTML=Test sending HTML +ErrorCantUseRazIfNoYearInMask=Error, can't use option @ to reset counter each year if sequence {yy} or {yyyy} is not in mask. +ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Error, can't use option @ if sequence {yy}{mm} or {yyyy}{mm} is not in mask. +UMask=UMask parameter for new files on Unix/Linux/BSD/Mac file system. +UMaskExplanation=This parameter allow you to define permissions set by default on files created by Dolibarr on server (during upload for example).
It must be the octal value (for example, 0666 means read and write for everyone).
This parameter is useless on a Windows server. +SeeWikiForAllTeam=Take a look at the wiki page for full list of all actors and their organisation +UseACacheDelay= Delay for caching export response in seconds (0 or empty for no cache) +DisableLinkToHelpCenter=Hide link "Need help or support" on login page +DisableLinkToHelp=Hide link "%s Online help" on left menu +AddCRIfTooLong=There is no automatic wrapping, so if line is out of page on documents because too long, you must add yourself carriage returns in the textarea. +ModuleDisabled=Module disabled +ModuleDisabledSoNoEvent=Module disabled so event never created +ConfirmPurge=Are you sure you want to execute this purge ?
This will delete definitely all your data files with no way to restore them (ECM files, attached files...). +MinLength=Minimum length +LanguageFilesCachedIntoShmopSharedMemory=Files .lang loaded in shared memory +ExamplesWithCurrentSetup=Examples with current running setup +ListOfDirectories=List of OpenDocument templates directories +ListOfDirectoriesForModelGenODT=List of directories containing templates files with OpenDocument format.

Put here full path of directories.
Add a carriage return between eah directory.
To add a directory of the GED module, add here DOL_DATA_ROOT/ecm/yourdirectoryname.

Files in those directories must end with .odt. +NumberOfModelFilesFound=Number of ODT/ODS templates files found in those directories +ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir +FollowingSubstitutionKeysCanBeUsed=
To know how to create your odt document templates, before storing them in those directories, read wiki documentation: +FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template +FirstnameNamePosition=Position of Name/Lastname +DescWeather=The following pictures will be shown on dashboard when number of late actions reach the following values: +KeyForWebServicesAccess=Key to use Web Services (parameter "dolibarrkey" in webservices) +TestSubmitForm=Input test form +ThisForceAlsoTheme=Using this menu manager will also use its own theme whatever is user choice. Also this menu manager specialized for smartphones does not works on all smartphone. Use another menu manager if you experience problems on yours. +ThemeDir=Skins directory +ConnectionTimeout=Connexion timeout +ResponseTimeout=Response timeout +SmsTestMessage=Test message from __PHONEFROM__ to __PHONETO__ +ModuleMustBeEnabledFirst=Module %s must be enabled first before using this feature. +SecurityToken=Key to secure URLs +NoSmsEngine=No SMS sender manager available. SMS sender manager are not installed with default distribution (because they depends on an external supplier) but you can find some on %s +PDF=PDF +PDFDesc=You can set each global options related to the PDF generation +PDFAddressForging=Rules to forge address boxes +HideAnyVATInformationOnPDF=Hide all information related to VAT on generated PDF +HideDescOnPDF=Hide products description on generated PDF +HideRefOnPDF=Hide products ref. on generated PDF +HideDetailsOnPDF=Hide products lines details on generated PDF +Library=Library +UrlGenerationParameters=Parameters to secure URLs +SecurityTokenIsUnique=Use a unique securekey parameter for each URL +EnterRefToBuildUrl=Enter reference for object %s +GetSecuredUrl=Get calculated URL +ButtonHideUnauthorized=Hide buttons for unauthorized actions instead of showing disabled buttons +OldVATRates=Old VAT rate +NewVATRates=New VAT rate +PriceBaseTypeToChange=Modify on prices with base reference value defined on +MassConvert=Launch mass convert +String=String +TextLong=Long text +Int=Integer +Float=Float +DateAndTime=Date and hour +Unique=Unique +Boolean=Boolean (Checkbox) +ExtrafieldPhone = Phone +ExtrafieldPrice = Price +ExtrafieldMail = Email +ExtrafieldSelect = Select list +ExtrafieldSelectList = Select from table +ExtrafieldSeparator=Separator +ExtrafieldCheckBox=Checkbox +ExtrafieldRadio=Radio button +ExtrafieldCheckBoxFromList= Checkbox from table +ExtrafieldParamHelpselect=Parameters list have to be like key,value

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

In order to have the list depending on another :
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key +ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value

for example :
1,value1
2,value2
3,value3
... +ExtrafieldParamHelpradio=Parameters list have to be like key,value

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

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

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

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter +LibraryToBuildPDF=Library used to build PDF +WarningUsingFPDF=Warning: Your conf.php contains directive dolibarr_pdf_force_fpdf=1. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.
To solve this and have a full support of PDF generation, please download TCPDF library, then comment or remove the line $dolibarr_pdf_force_fpdf=1, and add instead $dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir' +LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:
1 : local tax apply on products and services without vat (vat is not applied on local tax)
2 : local tax apply on products and services before vat (vat is calculated on amount + localtax)
3 : local tax apply on products without vat (vat is not applied on local tax)
4 : local tax apply on products before vat (vat is calculated on amount + localtax)
5 : local tax apply on services without vat (vat is not applied on local tax)
6 : local tax apply on services before vat (vat is calculated on amount + localtax) +SMS=SMS +LinkToTestClickToDial=Enter a phone number to call to show a link to test the ClickToDial url for user %s +RefreshPhoneLink=Refresh link +LinkToTest=Clickable link generated for user %s (click phone number to test) +KeepEmptyToUseDefault=Keep empty to use default value +DefaultLink=Default link +ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) +ExternalModule=External module - Installed into directory %s +BarcodeInitForThirdparties=Mass barcode init for thirdparties +BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services +CurrentlyNWithoutBarCode=Currently, you have %s records on %s %s without barcode defined. +InitEmptyBarCode=Init value for next %s empty records +EraseAllCurrentBarCode=Erase all current barcode values +ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values ? +AllBarcodeReset=All barcode values have been removed +NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup. +NoRecordWithoutBarcodeDefined=No record with no barcode value defined. + +# Modules +Module0Name=Users & groups +Module0Desc=Users and groups management +Module1Name=Third parties +Module1Desc=Companies and contact management (customers, prospects...) +Module2Name=Commercial +Module2Desc=Commercial management +Module10Name=Accounting +Module10Desc=Simple accounting reports (journals, turnover) based onto database content. No dispatching. +Module20Name=Proposals +Module20Desc=Commercial proposal management +Module22Name=Mass E-mailings +Module22Desc=Mass E-mailing management +Module23Name= Energy +Module23Desc= Monitoring the consumption of energies +Module25Name=Customer Orders +Module25Desc=Customer order management +Module30Name=Invoices +Module30Desc=Invoice and credit note management for customers. Invoice management for suppliers +Module40Name=Suppliers +Module40Desc=Supplier management and buying (orders and invoices) +Module42Name=Logs +Module42Desc=Logging facilities (file, syslog, ...) +Module49Name=Editors +Module49Desc=Editor management +Module50Name=Products +Module50Desc=Product management +Module51Name=Mass mailings +Module51Desc=Mass paper mailing management +Module52Name=Stocks +Module52Desc=Stock management (products) +Module53Name=Services +Module53Desc=Service management +Module54Name=Contracts/Subscriptions +Module54Desc=Management of contracts (services or reccuring subscriptions) +Module55Name=Barcodes +Module55Desc=Barcode management +Module56Name=Telephony +Module56Desc=Telephony integration +Module57Name=Standing orders +Module57Desc=Standing orders and withdrawal management. Also includes generation of SEPA file for european countries. +Module58Name=ClickToDial +Module58Desc=Integration of a ClickToDial system (Asterisk, ...) +Module59Name=Bookmark4u +Module59Desc=Add function to generate Bookmark4u account from a Dolibarr account +Module70Name=Interventions +Module70Desc=Intervention management +Module75Name=Expense and trip notes +Module75Desc=Expense and trip notes management +Module80Name=Shipments +Module80Desc=Shipments and delivery order management +Module85Name=Banks and cash +Module85Desc=Management of bank or cash accounts +Module100Name=External site +Module100Desc=This module include an external web site or page into Dolibarr menus and view it into a Dolibarr frame +Module105Name=Mailman and SPIP +Module105Desc=Mailman or SPIP interface for member module +Module200Name=LDAP +Module200Desc=LDAP directory synchronisation +Module210Name=PostNuke +Module210Desc=PostNuke integration +Module240Name=Data exports +Module240Desc=Tool to export Dolibarr datas (with assistants) +Module250Name=Data imports +Module250Desc=Tool to import datas in Dolibarr (with assistants) +Module310Name=Members +Module310Desc=Foundation members management +Module320Name=RSS Feed +Module320Desc=Add RSS feed inside Dolibarr screen pages +Module330Name=Bookmarks +Module330Desc=Bookmark management +Module400Name=Projects/Opportunities/Leads +Module400Desc=Management of projects, opportunities or leads. You can then assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. +Module410Name=Webcalendar +Module410Desc=Webcalendar integration +Module500Name=Special expenses (tax, social contributions, dividends) +Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries +Module510Name=Salaries +Module510Desc=Management of employees salaries and payments +Module600Name=Notifications +Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) +Module700Name=Donations +Module700Desc=Donation management +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices +Module1200Name=Mantis +Module1200Desc=Mantis integration +Module1400Name=Accounting +Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation +Module1780Name=Categories +Module1780Desc=Category management (products, suppliers and customers) +Module2000Name=WYSIWYG editor +Module2000Desc=Allow to edit some text area using an advanced editor +Module2200Name=Dynamic Prices +Module2200Desc=Enable the usage of math expressions for prices +Module2300Name=Cron +Module2300Desc=Scheduled task management +Module2400Name=Agenda +Module2400Desc=Events/tasks and agenda management +Module2500Name=Electronic Content Management +Module2500Desc=Save and share documents +Module2600Name=WebServices +Module2600Desc=Enable the Dolibarr web services server +Module2650Name=WebServices (client) +Module2650Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Supplier orders supported only for the moment) +Module2700Name=Gravatar +Module2700Desc=Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Need an internet access +Module2800Desc=FTP Client +Module2900Name=GeoIPMaxmind +Module2900Desc=GeoIP Maxmind conversions capabilities +Module3100Name=Skype +Module3100Desc=Add a Skype button into card of adherents / third parties / contacts +Module5000Name=Multi-company +Module5000Desc=Allows you to manage multiple companies +Module6000Name=Workflow +Module6000Desc=Workflow management +Module20000Name=Leave Requests management +Module20000Desc=Declare and follow employees leaves requests +Module39000Name=Product batch +Module39000Desc=Batch or serial number, eat-by and sell-by date management on products +Module50000Name=PayBox +Module50000Desc=Module to offer an online payment page by credit card with PayBox +Module50100Name=Point of sales +Module50100Desc=Point of sales module +Module50200Name=Paypal +Module50200Desc=Module to offer an online payment page by credit card with Paypal +Module50400Name=Accounting (advanced) +Module50400Desc=Accounting management (double parties) +Module54000Name=PrintIPP +Module54000Desc=Direct print (without opening the documents) using Cups IPP interface (Printer must be visible from server, and CUPS must be installe on server). +Module55000Name=Open Poll +Module55000Desc=Module to make online polls (like Doodle, Studs, Rdvz, ...) +Module59000Name=Margins +Module59000Desc=Module to manage margins +Module60000Name=Commissions +Module60000Desc=Module to manage commissions +Module150010Name=Batch number, eat-by date and sell-by date +Module150010Desc=batch number, eat-by date and sell-by date management for product +Permission11=Read customer invoices +Permission12=Create/modify customer invoices +Permission13=Unvalidate customer invoices +Permission14=Validate customer invoices +Permission15=Send customer invoices by email +Permission16=Create payments for customer invoices +Permission19=Delete customer invoices +Permission21=Read commercial proposals +Permission22=Create/modify commercial proposals +Permission24=Validate commercial proposals +Permission25=Send commercial proposals +Permission26=Close commercial proposals +Permission27=Delete commercial proposals +Permission28=Export commercial proposals +Permission31=Read products +Permission32=Create/modify products +Permission34=Delete products +Permission36=See/manage hidden products +Permission38=Export products +Permission41=Read projects (shared project and projects i'm contact for) +Permission42=Create/modify projects (shared project and projects i'm contact for) +Permission44=Delete projects (shared project and projects i'm contact for) +Permission61=Read interventions +Permission62=Create/modify interventions +Permission64=Delete interventions +Permission67=Export interventions +Permission71=Read members +Permission72=Create/modify members +Permission74=Delete members +Permission75=Setup types of membership +Permission76=Export datas +Permission78=Read subscriptions +Permission79=Create/modify subscriptions +Permission81=Read customers orders +Permission82=Create/modify customers orders +Permission84=Validate customers orders +Permission86=Send customers orders +Permission87=Close customers orders +Permission88=Cancel customers orders +Permission89=Delete customers orders +Permission91=Read social contributions and vat +Permission92=Create/modify social contributions and vat +Permission93=Delete social contributions and vat +Permission94=Export social contributions +Permission95=Read reports +Permission101=Read sendings +Permission102=Create/modify sendings +Permission104=Validate sendings +Permission106=Export sendings +Permission109=Delete sendings +Permission111=Read financial accounts +Permission112=Create/modify/delete and compare transactions +Permission113=Setup financial accounts (create, manage categories) +Permission114=Reconciliate transactions +Permission115=Export transactions and account statements +Permission116=Transfers between accounts +Permission117=Manage cheques dispatching +Permission121=Read third parties linked to user +Permission122=Create/modify third parties linked to user +Permission125=Delete third parties linked to user +Permission126=Export third parties +Permission141=Read projects (also private i am not contact for) +Permission142=Create/modify projects (also private i am not contact for) +Permission144=Delete projects (also private i am not contact for) +Permission146=Read providers +Permission147=Read stats +Permission151=Read standing orders +Permission152=Create/modify a standing orders request +Permission153=Transmission standing orders receipts +Permission154=Credit/refuse standing orders receipts +Permission161=Read contracts/subscriptions +Permission162=Create/modify contracts/subscriptions +Permission163=Activate a service/subscription of a contract +Permission164=Disable a service/subscription of a contract +Permission165=Delete contracts/subscriptions +Permission171=Read trips and expenses (own and his subordinates) +Permission172=Create/modify trips and expenses +Permission173=Delete trips and expenses +Permission174=Read all trips and expenses +Permission178=Export trips and expenses +Permission180=Read suppliers +Permission181=Read supplier orders +Permission182=Create/modify supplier orders +Permission183=Validate supplier orders +Permission184=Approve supplier orders +Permission185=Order or cancel supplier orders +Permission186=Receive supplier orders +Permission187=Close supplier orders +Permission188=Cancel supplier orders +Permission192=Create lines +Permission193=Cancel lines +Permission194=Read the bandwith lines +Permission202=Create ADSL connections +Permission203=Order connections orders +Permission204=Order connections +Permission205=Manage connections +Permission206=Read connections +Permission211=Read Telephony +Permission212=Order lines +Permission213=Activate line +Permission214=Setup Telephony +Permission215=Setup providers +Permission221=Read emailings +Permission222=Create/modify emailings (topic, recipients...) +Permission223=Validate emailings (allows sending) +Permission229=Delete emailings +Permission237=View recipients and info +Permission238=Manually send mailings +Permission239=Delete mailings after validation or sent +Permission241=Read categories +Permission242=Create/modify categories +Permission243=Delete categories +Permission244=See the contents of the hidden categories +Permission251=Read other users and groups +PermissionAdvanced251=Read other users +Permission252=Read permissions of other users +Permission253=Create/modify other users, groups and permisssions +PermissionAdvanced253=Create/modify internal/external users and permissions +Permission254=Create/modify external users only +Permission255=Modify other users password +Permission256=Delete or disable other users +Permission262=Extend access to all third parties (not only those linked to user). Not effective for external users (always limited to themselves). +Permission271=Read CA +Permission272=Read invoices +Permission273=Issue invoices +Permission281=Read contacts +Permission282=Create/modify contacts +Permission283=Delete contacts +Permission286=Export contacts +Permission291=Read tariffs +Permission292=Set permissions on the tariffs +Permission293=Modify costumers tariffs +Permission300=Read bar codes +Permission301=Create/modify bar codes +Permission302=Delete bar codes +Permission311=Read services +Permission312=Assign service/subscription to contract +Permission331=Read bookmarks +Permission332=Create/modify bookmarks +Permission333=Delete bookmarks +Permission341=Read its own permissions +Permission342=Create/modify his own user information +Permission343=Modify his own password +Permission344=Modify its own permissions +Permission351=Read groups +Permission352=Read groups permissions +Permission353=Create/modify groups +Permission354=Delete or disable groups +Permission358=Export users +Permission401=Read discounts +Permission402=Create/modify discounts +Permission403=Validate discounts +Permission404=Delete discounts +Permission510=Read Salaries +Permission512=Create/modify salaries +Permission514=Delete salaries +Permission517=Export salaries +Permission531=Read services +Permission532=Create/modify services +Permission534=Delete services +Permission536=See/manage hidden services +Permission538=Export services +Permission701=Read donations +Permission702=Create/modify donations +Permission703=Delete donations +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports +Permission1001=Read stocks +Permission1002=Create/modify warehouses +Permission1003=Delete warehouses +Permission1004=Read stock movements +Permission1005=Create/modify stock movements +Permission1101=Read delivery orders +Permission1102=Create/modify delivery orders +Permission1104=Validate delivery orders +Permission1109=Delete delivery orders +Permission1181=Read suppliers +Permission1182=Read supplier orders +Permission1183=Create/modify supplier orders +Permission1184=Validate supplier orders +Permission1185=Approve supplier orders +Permission1186=Order supplier orders +Permission1187=Acknowledge receipt of supplier orders +Permission1188=Delete supplier orders +Permission1201=Get result of an export +Permission1202=Create/Modify an export +Permission1231=Read supplier invoices +Permission1232=Create/modify supplier invoices +Permission1233=Validate supplier invoices +Permission1234=Delete supplier invoices +Permission1235=Send supplier invoices by email +Permission1236=Export supplier invoices, attributes and payments +Permission1237=Export supplier orders and their details +Permission1251=Run mass imports of external data into database (data load) +Permission1321=Export customer invoices, attributes and payments +Permission1421=Export customer orders and attributes +Permission23001 = Read Scheduled task +Permission23002 = Create/update Scheduled task +Permission23003 = Delete Scheduled task +Permission23004 = Execute Scheduled task +Permission2401=Read actions (events or tasks) linked to his account +Permission2402=Create/modify actions (events or tasks) linked to his account +Permission2403=Delete actions (events or tasks) linked to his account +Permission2411=Read actions (events or tasks) of others +Permission2412=Create/modify actions (events or tasks) of others +Permission2413=Delete actions (events or tasks) of others +Permission2501=Read/Download documents +Permission2502=Download documents +Permission2503=Submit or delete documents +Permission2515=Setup documents directories +Permission2801=Use FTP client in read mode (browse and download only) +Permission2802=Use FTP client in write mode (delete or upload files) +Permission50101=Use Point of sales +Permission50201=Read transactions +Permission50202=Import transactions +Permission54001=Print +Permission55001=Read polls +Permission55002=Create/modify polls +Permission59001=Read commercial margins +Permission59002=Define commercial margins +Permission59003=Read every user margin +DictionaryCompanyType=Thirdparties type +DictionaryCompanyJuridicalType=Juridical kinds of thirdparties +DictionaryProspectLevel=Prospect potential level +DictionaryCanton=State/Cantons +DictionaryRegion=Regions +DictionaryCountry=Countries +DictionaryCurrency=Currencies +DictionaryCivility=Civility title +DictionaryActions=Type of agenda events +DictionarySocialContributions=Social contributions types +DictionaryVAT=VAT Rates or Sales Tax Rates +DictionaryRevenueStamp=Amount of revenue stamps +DictionaryPaymentConditions=Payment terms +DictionaryPaymentModes=Payment modes +DictionaryTypeContact=Contact/Address types +DictionaryEcotaxe=Ecotax (WEEE) +DictionaryPaperFormat=Paper formats +DictionaryFees=Type of fees +DictionarySendingMethods=Shipping methods +DictionaryStaff=Staff +DictionaryAvailability=Delivery delay +DictionaryOrderMethods=Ordering methods +DictionarySource=Origin of proposals/orders +DictionaryAccountancyplan=Chart of accounts +DictionaryAccountancysystem=Models for chart of accounts +DictionaryEMailTemplates=Emails templates +SetupSaved=Setup saved +BackToModuleList=Back to modules list +BackToDictionaryList=Back to dictionaries list +VATReceivedOnly=Special rate not charged +VATManagement=VAT Management +VATIsUsedDesc=The VAT rate by default when creating prospects, invoices, orders etc follow the active standard rule:
If the seller is not subjected to VAT, then VAT by default=0. End of rule.
If the (selling country= buying country), then the VAT by default=VAT of the product in the selling country. End of rule.
If seller and buyer in the European Community and goods are transport products (car, ship, plane), the default VAT=0 ( The VAT should be paid by the buyer at the customoffice of his country and not at the seller). End of rule.
If seller and buyer in the European Community and buyer is not a company, then the VAT by default=VAT of product sold. End of rule.
If seller and buyer in the European Community and buyer is a company, then the VAT by default=0. End of rule.
Else the proposed default VAT=0. End of rule. +VATIsNotUsedDesc=By default the proposed VAT is 0 which can be used for cases like associations, individuals ou small companies. +VATIsUsedExampleFR=In France, it means companies or organisations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. +VATIsNotUsedExampleFR=In France, it means associations that are non VAT declared or companies, organisations or liberal professions that have chosen the micro enterprise fiscal system (VAT in franchise) and paid a franchise VAT without any VAT declaration. This choice will display the reference "Non applicable VAT - art-293B of CGI" on invoices. +##### Local Taxes ##### +LTRate=Rate +LocalTax1IsUsed=Use second tax +LocalTax1IsNotUsed=Do not use second tax +LocalTax1IsUsedDesc=Use a second type of tax (other than VAT) +LocalTax1IsNotUsedDesc=Do not use other type of tax (other than VAT) +LocalTax1Management=Second type of tax +LocalTax1IsUsedExample= +LocalTax1IsNotUsedExample= +LocalTax2IsUsed=Use third tax +LocalTax2IsNotUsed=Do not use third tax +LocalTax2IsUsedDesc=Use a third type of tax (other than VAT) +LocalTax2IsNotUsedDesc=Do not use other type of tax (other than VAT) +LocalTax2Management=Third type of tax +LocalTax2IsUsedExample= +LocalTax2IsNotUsedExample= +LocalTax1ManagementES= RE Management +LocalTax1IsUsedDescES= The RE rate by default when creating prospects, invoices, orders etc follow the active standard rule:
If te buyer is not subjected to RE, RE by default=0. End of rule.
If the buyer is subjected to RE then the RE by default. End of rule.
+LocalTax1IsNotUsedDescES= By default the proposed RE is 0. End of rule. +LocalTax1IsUsedExampleES= In Spain they are professionals subject to some specific sections of the Spanish IAE. +LocalTax1IsNotUsedExampleES= In Spain they are professional and societies and subject to certain sections of the Spanish IAE. +LocalTax2ManagementES= IRPF Management +LocalTax2IsUsedDescES= The RE rate by default when creating prospects, invoices, orders etc follow the active standard rule:
If the seller is not subjected to IRPF, then IRPF by default=0. End of rule.
If the seller is subjected to IRPF then the IRPF by default. End of rule.
+LocalTax2IsNotUsedDescES= By default the proposed IRPF is 0. End of rule. +LocalTax2IsUsedExampleES= In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. +LocalTax2IsNotUsedExampleES= In Spain they are bussines not subject to tax system of modules. +CalcLocaltax=Reports +CalcLocaltax1ES=Sales - Purchases +CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases +CalcLocaltax2ES=Purchases +CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases +CalcLocaltax3ES=Sales +CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +LabelUsedByDefault=Label used by default if no translation can be found for code +LabelOnDocuments=Label on documents +NbOfDays=Nb of days +AtEndOfMonth=At end of month +Offset=Offset +AlwaysActive=Always active +UpdateRequired=Your system needs to be updated. To do this, click on Update now. +Upgrade=Upgrade +MenuUpgrade=Upgrade / Extend +AddExtensionThemeModuleOrOther=Add extension (theme, module, ...) +WebServer=Web server +DocumentRootServer=Web server's root directory +DataRootServer=Data files directory +IP=IP +Port=Port +VirtualServerName=Virtual server name +AllParameters=All parameters +OS=OS +PhpEnv=Env +PhpModules=Modules +PhpConf=Conf +PhpWebLink=Web-Php link +Pear=Pear +PearPackages=Pear Packages +Browser=Browser +Server=Server +Database=Database +DatabaseServer=Database host +DatabaseName=Database name +DatabasePort=Database port +DatabaseUser=Database user +DatabasePassword=Database password +DatabaseConfiguration=Database setup +Tables=Tables +TableName=Table name +TableLineFormat=Line format +NbOfRecord=Nb of records +Constraints=Constraints +ConstraintsType=Constraints type +ConstraintsToShowOrNotEntry=Constraint to show or not the menu entry +AllMustBeOk=All of these must be checked +Host=Server +DriverType=Driver type +SummarySystem=System information summary +SummaryConst=List of all Dolibarr setup parameters +SystemUpdate=System update +SystemSuccessfulyUpdate=Your system has been updated successfuly +MenuCompanySetup=Company/Foundation +MenuNewUser=New user +MenuTopManager=Top menu manager +MenuLeftManager=Left menu manager +MenuManager=Menu manager +MenuSmartphoneManager=Smartphone menu manager +DefaultMenuTopManager=Top menu manager +DefaultMenuLeftManager=Left menu manager +DefaultMenuManager= Standard menu manager +DefaultMenuSmartphoneManager=Smartphone menu manager +Skin=Skin theme +DefaultSkin=Default skin theme +MaxSizeList=Max length for list +DefaultMaxSizeList=Default max length for list +MessageOfDay=Message of the day +MessageLogin=Login page message +PermanentLeftSearchForm=Permanent search form on left menu +DefaultLanguage=Default language to use (language code) +EnableMultilangInterface=Enable multilingual interface +EnableShowLogo=Show logo on left menu +EnableHtml5=Enable Html5 (Developement - Only available on Eldy template) +SystemSuccessfulyUpdated=Your system has been updated successfully +CompanyInfo=Company/foundation information +CompanyIds=Company/foundation identities +CompanyName=Name +CompanyAddress=Address +CompanyZip=Zip +CompanyTown=Town +CompanyCountry=Country +CompanyCurrency=Main currency +Logo=Logo +DoNotShow=Do not show +DoNotSuggestPaymentMode=Do not suggest +NoActiveBankAccountDefined=No active bank account defined +OwnerOfBankAccount=Owner of bank account %s +BankModuleNotActive=Bank accounts module not enabled +ShowBugTrackLink=Show link "Report a bug" +ShowWorkBoard=Show "workbench" on homepage +Alerts=Alerts +Delays=Delays +DelayBeforeWarning=Delay before warning +DelaysBeforeWarning=Delays before warning +DelaysOfToleranceBeforeWarning=Tolerance delays before warning +DelaysOfToleranceDesc=This screen allows you to define the tolerated delays before an alert is reported on screen with picto %s for each late element. +Delays_MAIN_DELAY_ACTIONS_TODO=Delay tolerance (in days) before alert on planned events not yet realised +Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on orders not yet processed +Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on suppliers orders not yet processed +Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Delay tolerance (in days) before alert on proposals to close +Delays_MAIN_DELAY_PROPALS_TO_BILL=Delay tolerance (in days) before alert on proposals not billed +Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Tolerance delay (in days) before alert on services to activate +Delays_MAIN_DELAY_RUNNING_SERVICES=Tolerance delay (in days) before alert on expired services +Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Tolerance delay (in days) before alert on unpaid supplier invoices +Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Tolerence delay (in days) before alert on unpaid client invoices +Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Tolerance delay (in days) before alert on pending bank reconciliation +Delays_MAIN_DELAY_MEMBERS=Tolerance delay (in days) before alert on delayed membership fee +Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Tolerance delay (in days) before alert for cheques deposit to do +SetupDescription1=All parameters available in the setup area allow you to setup Dolibarr before starting using it. +SetupDescription2=The 2 most important setup steps are the 2 first ones in the left setup menu, this means Company/foundation setup page and Modules setup page: +SetupDescription3=Parameters in menu Setup -> Company/foundation are required because input information is used on Dolibarr displays and to modify Dolibarr behaviour (for example for features related to your country). +SetupDescription4=Parameters in menu Setup -> Modules are required because Dolibarr is not a fixed ERP/CRM but a sum of several modules, all more or less independant. It's only after activating modules you're interesting in that you will see features appeared in menus. +SetupDescription5=Other menu entries manage optional parameters. +EventsSetup=Setup for events logs +LogEvents=Security audit events +Audit=Audit +InfoDolibarr=Infos Dolibarr +InfoBrowser=Infos Browser +InfoOS=Infos OS +InfoWebServer=Infos web server +InfoDatabase=Infos database +InfoPHP=Infos PHP +InfoPerf=Infos performances +BrowserName=Browser name +BrowserOS=Browser OS +ListEvents=Audit events +ListOfSecurityEvents=List of Dolibarr security events +SecurityEventsPurged=Security events purged +LogEventDesc=You can enable here the logging for Dolibarr security events. Administrators can then see its content via menu System tools - Audit. Warning, this feature can consume a large amount of data in database. +AreaForAdminOnly=Those features can be used by administrator users only. +SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. +SystemAreaForAdminOnly=This area is available for administrator users only. None of the Dolibarr permissions can reduce this limit. +CompanyFundationDesc=Edit on this page all known information of the company or foundation you need to manage (For this, click on "Modify" button at bottom of page) +DisplayDesc=You can choose each parameter related to the Dolibarr look and feel here +AvailableModules=Available modules +ToActivateModule=To activate modules, go on setup Area (Home->Setup->Modules). +SessionTimeOut=Time out for session +SessionExplanation=This number guarantee that session will never expire before this delay, if the session cleaner is done by Internal PHP session cleaner (and nothing else). Internal PHP session cleaner does not guaranty that session will expire just after this delay. It will expire, after this delay, and when the session cleaner is ran, so every %s/%s access, but only during access made by other sessions.
Note: on some servers with an external session cleaning mechanism (cron under debian, ubuntu ...), the sessions can be destroyed after a period defined by the default session.gc_maxlifetime, no matter what the value entered here. +TriggersAvailable=Available triggers +TriggersDesc=Triggers are files that will modify the behaviour of Dolibarr workflow once copied into the directory htdocs/core/triggers. They realised new actions, activated on Dolibarr events (new company creation, invoice validation, ...). +TriggerDisabledByName=Triggers in this file are disabled by the -NORUN suffix in their name. +TriggerDisabledAsModuleDisabled=Triggers in this file are disabled as module %s is disabled. +TriggerAlwaysActive=Triggers in this file are always active, whatever are the activated Dolibarr modules. +TriggerActiveAsModuleActive=Triggers in this file are active as module %s is enabled. +GeneratedPasswordDesc=Define here which rule you want to use to generate new password if you ask to have auto generated password +DictionaryDesc=Define here all reference datas. You can complete predefined value with yours. +ConstDesc=This page allows you to edit all other parameters not available in previous pages. They are reserved parameters for advanced developers or for troubleshouting. +OnceSetupFinishedCreateUsers=Warning, you are a Dolibarr administrator user. Administrator users are used to setup Dolibarr. For a usual usage of Dolibarr, it is recommended to use a non administrator user created from Users & Groups menu. +MiscellaneousDesc=Define here all other parameters related to security. +LimitsSetup=Limits/Precision setup +LimitsDesc=You can define limits, precisions and optimisations used by Dolibarr here +MAIN_MAX_DECIMALS_UNIT=Max decimals for unit prices +MAIN_MAX_DECIMALS_TOT=Max decimals for total prices +MAIN_MAX_DECIMALS_SHOWN=Max decimals for prices shown on screen (Add ... after this number if you want to see ... when number is truncated when shown on screen) +MAIN_DISABLE_PDF_COMPRESSION=Use PDF compression for generated PDF files. +MAIN_ROUNDING_RULE_TOT= Size of rounding range (for rare countries where rounding is done on something else than base 10) +UnitPriceOfProduct=Net unit price of a product +TotalPriceAfterRounding=Total price (net/vat/incl tax) after rounding +ParameterActiveForNextInputOnly=Parameter effective for next input only +NoEventOrNoAuditSetup=No security event has been recorded yet. This can be normal if audit has not been enabled on "setup - security - audit" page. +NoEventFoundWithCriteria=No security event has been found for such search criterias. +SeeLocalSendMailSetup=See your local sendmail setup +BackupDesc=To make a complete backup of Dolibarr, you must: +BackupDesc2=* Save content of documents directory (%s) that contains all uploaded and generated files (you can make a zip for example). +BackupDesc3=* Save content of your database into a dump file. For this, you can use following assistant. +BackupDescX=Archived directory should be stored in a secure place. +BackupDescY=The generated dump file should be stored in a secure place. +BackupPHPWarning=Backup can't be guaranted with this method. Prefer previous one +RestoreDesc=To restore a Dolibarr backup, you must: +RestoreDesc2=* Restore archive file (zip file for example) of documents directory to extract tree of files in documents directory of a new Dolibarr installation or into this current documents directoy (%s). +RestoreDesc3=* Restore the data, from a backup dump file, into the database of the new Dolibarr installation or into the database of this current installation. Warning, once restore is finished, you must use a login/password, that existed when backup was made, to connect again. To restore a backup database into this current installation, you can follow this assistant. +RestoreMySQL=MySQL import +ForcedToByAModule= This rule is forced to %s by an activated module +PreviousDumpFiles=Available database backup dump files +WeekStartOnDay=First day of week +RunningUpdateProcessMayBeRequired=Running the upgrade process seems to be required (Programs version %s differs from database version %s) +YouMustRunCommandFromCommandLineAfterLoginToUser=You must run this command from command line after login to a shell with user %s or you must add -W option at end of command line to provide %s password. +YourPHPDoesNotHaveSSLSupport=SSL functions not available in your PHP +DownloadMoreSkins=More skins to download +SimpleNumRefModelDesc=Returns the reference number with format %syymm-nnnn where yy is year, mm is month and nnnn is a sequence without hole and with no reset +ShowProfIdInAddress=Show professionnal id with addresses on documents +ShowVATIntaInAddress=Hide VAT Intra num with addresses on documents +TranslationUncomplete=Partial translation +SomeTranslationAreUncomplete=Some languages may be partially translated or may contains errors. If you detect some, you can fix language files registering to http://transifex.com/projects/p/dolibarr/. +MenuUseLayout=Make vertical menu hidable (option javascript must not be disabled) +MAIN_DISABLE_METEO=Disable meteo view +TestLoginToAPI=Test login to API +ProxyDesc=Some features of Dolibarr need to have an Internet access to work. Define here parameters for this. If the Dolibarr server is behind a Proxy server, those parameters tells Dolibarr how to access Internet through it. +ExternalAccess=External access +MAIN_PROXY_USE=Use a proxy server (otherwise direct access to internet) +MAIN_PROXY_HOST=Name/Address of proxy server +MAIN_PROXY_PORT=Port of proxy server +MAIN_PROXY_USER=Login to use the proxy server +MAIN_PROXY_PASS=Password to use the proxy server +DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s. +ExtraFields=Complementary attributes +ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) +ExtraFieldsThirdParties=Complementary attributes (thirdparty) +ExtraFieldsContacts=Complementary attributes (contact/address) +ExtraFieldsMember=Complementary attributes (member) +ExtraFieldsMemberType=Complementary attributes (member type) +ExtraFieldsCustomerOrders=Complementary attributes (orders) +ExtraFieldsCustomerInvoices=Complementary attributes (invoices) +ExtraFieldsSupplierOrders=Complementary attributes (orders) +ExtraFieldsSupplierInvoices=Complementary attributes (invoices) +ExtraFieldsProject=Complementary attributes (projects) +ExtraFieldsProjectTask=Complementary attributes (tasks) +ExtraFieldHasWrongValue=Attribute %s has a wrong value. +AlphaNumOnlyCharsAndNoSpace=only alphanumericals characters without space +AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space +SendingMailSetup=Setup of sendings by email +SendmailOptionNotComplete=Warning, on some Linux systems, to send email from your email, sendmail execution setup must contains option -ba (parameter mail.force_extra_parameters into your php.ini file). If some recipients never receive emails, try to edit this PHP parameter with mail.force_extra_parameters = -ba). +PathToDocuments=Path to documents +PathDirectory=Directory +SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail direct" will generate a mail message that might be not correctly parsed by some receiving mail servers. Result is that some mails can't be read by people hosted by those bugged platforms. It's case for some Internet providers (Ex: Orange in France). This is not a problem into Dolibarr nor into PHP but onto receiving mail server. You can however add option MAIN_FIX_FOR_BUGGED_MTA to 1 into setup - other to modify Dolibarr to avoid this. However, you may experience problem with other servers that respect strictly the SMTP standard. The other solution (recommended) is to use the method "SMTP socket library" that has no disadvantages. +TranslationSetup=Configuration de la traduction +TranslationDesc=Choice of language visible on screen can be modified:
* Globally from menu Home - Setup - Display
* For user only from tab User display of user card (click on login on top of screen). +TotalNumberOfActivatedModules=Total number of activated feature modules: %s +YouMustEnableOneModule=You must at least enable 1 module +ClassNotFoundIntoPathWarning=Class %s not found into PHP path +YesInSummer=Yes in summer +OnlyFollowingModulesAreOpenedToExternalUsers=Note, only following modules are opened to external users (whatever are permission of such users): +SuhosinSessionEncrypt=Session storage encrypted by Suhosin +ConditionIsCurrently=Condition is currently %s +YouUseBestDriver=You use driver %s that is best driver available currently. +YouDoNotUseBestDriver=You use drive %s but driver %s is recommended. +NbOfProductIsLowerThanNoPb=You have only %s products/services into database. This does not required any particular optimization. +SearchOptim=Search optimization +YouHaveXProductUseSearchOptim=You have %s product into database. You should add the constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 into Home-Setup-Other, you limit the search to the beginning of strings making possible for database to use index and you should get an immediate response. +BrowserIsOK=You are using the web browser %s. This browser is ok for security and performance. +BrowserIsKO=You are using the web browser %s. This browser is known to be a bad choice for security, performance and reliability. We recommand you to use Firefox, Chrome, Opera or Safari. +XDebugInstalled=XDebug is loaded. +XCacheInstalled=XCache is loaded. +AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". +FieldEdition=Edition of field %s +FixTZ=TimeZone fix +FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced) +GetBarCode=Get barcode +EmptyNumRefModelDesc=The code is free. This code can be modified at any time. +##### Module password generation +PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: 8 characters containing shared numbers and characters in lowercase. +PasswordGenerationNone=Do not suggest any generated password. Password must be type in manually. +##### Users setup ##### +UserGroupSetup=Users and groups module setup +GeneratePassword=Suggest a generated password +RuleForGeneratedPasswords=Rule to generate suggested passwords or validate passwords +DoNotSuggest=Do not suggest any password +EncryptedPasswordInDatabase=To allow the encryption of the passwords in the database +DisableForgetPasswordLinkOnLogonPage=Do not show the link "Forget password" on login page +UsersSetup=Users module setup +UserMailRequired=EMail required to create a new user +##### Company setup ##### +CompanySetup=Companies module setup +CompanyCodeChecker=Module for third parties code generation and checking (customer or supplier) +AccountCodeManager=Module for accountancy code generation (customer or supplier) +ModuleCompanyCodeAquarium=Return an accountancy code built by:
%s followed by third party supplier code for a supplier accountancy code,
%s followed by third party customer code for a customer accountancy code. +ModuleCompanyCodePanicum=Return an empty accountancy code. +ModuleCompanyCodeDigitaria=Accountancy code depends on third party code. The code is composed of the character "C" in the first position followed by the first 5 characters of the third party code. +UseNotifications=Use notifications +NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined:
* per third parties contacts (customers or suppliers), one third party at time.
* or by setting a global target email address on module setup page. +ModelModules=Documents templates +DocumentModelOdt=Generate documents from OpenDocuments templates (.ODT or .ODS files for OpenOffice, KOffice, TextEdit,...) +WatermarkOnDraft=Watermark on draft document +JSOnPaimentBill=Activate feature to autofill payment lines on payment form +CompanyIdProfChecker=Rules on Professional Ids +MustBeUnique=Must be unique ? +MustBeMandatory=Mandatory to create third parties ? +MustBeInvoiceMandatory=Mandatory to validate invoices ? +Miscellaneous=Miscellaneous +##### Webcal setup ##### +WebCalSetup=Webcalendar link setup +WebCalSyncro=Add Dolibarr events to WebCalendar +WebCalAllways=Always, no asking +WebCalYesByDefault=On demand (yes by default) +WebCalNoByDefault=On demand (no by default) +WebCalNever=Never +WebCalURL=URL for calendar access +WebCalServer=Server hosting calendar database +WebCalDatabaseName=Database name +WebCalUser=User to access database +WebCalSetupSaved=Webcalendar setup saved successfully. +WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successful. +WebCalTestKo1=Connection to server '%s' succeed but database '%s' could not be reached. +WebCalTestKo2=Connection to server '%s' with user '%s' failed. +WebCalErrorConnectOkButWrongDatabase=Connection succeeded but database doesn't look to be a Webcalendar database. +WebCalAddEventOnCreateActions=Add calendar event on actions create +WebCalAddEventOnCreateCompany=Add calendar event on companies create +WebCalAddEventOnStatusPropal=Add calendar event on commercial proposals status change +WebCalAddEventOnStatusContract=Add calendar event on contracts status change +WebCalAddEventOnStatusBill=Add calendar event on bills status change +WebCalAddEventOnStatusMember=Add calendar event on members status change +WebCalUrlForVCalExport=An export link to %s format is available at following link: %s +WebCalCheckWebcalSetup=Maybe the Webcal module setup is not correct. +##### Invoices ##### +BillsSetup=Invoices module setup +BillsDate=Invoices date +BillsNumberingModule=Invoices and credit notes numbering model +BillsPDFModules=Invoice documents models +CreditNoteSetup=Credit note module setup +CreditNotePDFModules=Credit note document models +CreditNote=Credit note +CreditNotes=Credit notes +ForceInvoiceDate=Force invoice date to validation date +DisableRepeatable=Disable repeatable invoices +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +EnableEditDeleteValidInvoice=Enable the possibility to edit/delete valid invoice with no payment +SuggestPaymentByRIBOnAccount=Suggest payment by withdraw on account +SuggestPaymentByChequeToAddress=Suggest payment by cheque to +FreeLegalTextOnInvoices=Free text on invoices +WatermarkOnDraftInvoices=Watermark on draft invoices (none if empty) +##### Proposals ##### +PropalSetup=Commercial proposals module setup +CreateForm=Create forms +NumberOfProductLines=Number of product lines +ProposalsNumberingModules=Commercial proposal numbering models +ProposalsPDFModules=Commercial proposal documents models +ClassifiedInvoiced=Classified invoiced +HideTreadedPropal=Hide the treated commercial proposals in the list +AddShippingDateAbility=Add shipping date ability +AddDeliveryAddressAbility=Add delivery date ability +UseOptionLineIfNoQuantity=A line of product/service with a zero amount is considered as an option +FreeLegalTextOnProposal=Free text on commercial proposals +WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request +##### Orders ##### +OrdersSetup=Order management setup +OrdersNumberingModules=Orders numbering models +OrdersModelModule=Order documents models +HideTreadedOrders=Hide the treated or cancelled orders in the list +ValidOrderAfterPropalClosed=To validate the order after proposal closer, makes it possible not to step by the provisional order +FreeLegalTextOnOrders=Free text on orders +WatermarkOnDraftOrders=Watermark on draft orders (none if empty) +ShippableOrderIconInList=Add an icon in Orders list which indicate if order is shippable +BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ask for bank account destination of order +##### Clicktodial ##### +ClickToDialSetup=Click To Dial module setup +ClickToDialUrlDesc=Url called when a click on phone picto is done. In URL, you can use tags
__PHONETO__ that will be replaced with the phone number of person to call
__PHONEFROM__ that will be replaced with phone number of calling person (yours)
__LOGIN__ that will be replaced with your clicktodial login (defined on your user card)
__PASS__ that will be replaced with your clicktodial password (defined on your user card). +##### Bookmark4u ##### +Bookmark4uSetup=Bookmark4u module setup +##### Interventions ##### +InterventionsSetup=Interventions module setup +FreeLegalTextOnInterventions=Free text on intervention documents +FicheinterNumberingModules=Intervention numbering models +TemplatePDFInterventions=Intervention card documents models +WatermarkOnDraftInterventionCards=Watermark on intervention card documents (none if empty) +##### Contracts ##### +ContractsSetup=Contracts/Subscriptions module setup +ContractsNumberingModules=Contracts numbering modules +TemplatePDFContracts=Contracts documents models +FreeLegalTextOnContracts=Free text on contracts +WatermarkOnDraftContractCards=Watermark on draft contracts (none if empty) +##### Members ##### +MembersSetup=Members module setup +MemberMainOptions=Main options +AddSubscriptionIntoAccount=Suggest by default to create a bank transaction, in bank module, when adding a new payed subscription +AdherentLoginRequired= Manage a Login for each member +AdherentMailRequired=EMail required to create a new member +MemberSendInformationByMailByDefault=Checkbox to send mail confirmation to members (validation or new subscription) is on by default +##### LDAP setup ##### +LDAPSetup=LDAP Setup +LDAPGlobalParameters=Global parameters +LDAPUsersSynchro=Users +LDAPGroupsSynchro=Groups +LDAPContactsSynchro=Contacts +LDAPMembersSynchro=Members +LDAPSynchronization=LDAP synchronisation +LDAPFunctionsNotAvailableOnPHP=LDAP functions are not available on your PHP +LDAPToDolibarr=LDAP -> Dolibarr +DolibarrToLDAP=Dolibarr -> LDAP +LDAPNamingAttribute=Key in LDAP +LDAPSynchronizeUsers=Organization of users in LDAP +LDAPSynchronizeGroups=Organization of groups in LDAP +LDAPSynchronizeContacts=Organization of contacts in LDAP +LDAPSynchronizeMembers=Organization of foundation's members in LDAP +LDAPTypeExample=OpenLdap, Egroupware or Active Directory +LDAPPrimaryServer=Primary server +LDAPSecondaryServer=Secondary server +LDAPServerPort=Server port +LDAPServerPortExample=Default port : 389 +LDAPServerProtocolVersion=Protocol version +LDAPServerUseTLS=Use TLS +LDAPServerUseTLSExample=Your LDAP server use TLS +LDAPServerDn=Server DN +LDAPAdminDn=Administrator DN +LDAPAdminDnExample=Complete DN (ex: cn=admin,dc=example,dc=com) +LDAPPassword=Administrator password +LDAPUserDn=Users' DN +LDAPUserDnExample=Complete DN (ex: ou=users,dc=example,dc=com) +LDAPGroupDn=Groups' DN +LDAPGroupDnExample=Complete DN (ex: ou=groups,dc=example,dc=com) +LDAPServerExample=Server address (ex: localhost, 192.168.0.2, ldaps://ldap.example.com/) +LDAPServerDnExample=Complete DN (ex: dc=example,dc=com) +LDAPPasswordExample=Admin password +LDAPDnSynchroActive=Users and groups synchronization +LDAPDnSynchroActiveExample=LDAP to Dolibarr or Dolibarr to LDAP synchronization +LDAPDnContactActive=Contacts' synchronization +LDAPDnContactActiveYes=Activated synchronization +LDAPDnContactActiveExample=Activated/Unactivated synchronization +LDAPDnMemberActive=Members' synchronization +LDAPDnMemberActiveExample=Activated/Unactivated synchronization +LDAPContactDn=Dolibarr contacts' DN +LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=example,dc=com) +LDAPMemberDn=Dolibarr members DN +LDAPMemberDnExample=Complete DN (ex: ou=members,dc=example,dc=com) +LDAPMemberObjectClassList=List of objectClass +LDAPMemberObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) +LDAPUserObjectClassList=List of objectClass +LDAPUserObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) +LDAPGroupObjectClassList=List of objectClass +LDAPGroupObjectClassListExample=List of objectClass defining record attributes (ex: top,groupOfUniqueNames) +LDAPContactObjectClassList=List of objectClass +LDAPContactObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) +LDAPMemberTypeDn=Dolibarr members type DN +LDAPMemberTypeDnExample=Complete DN (ex: ou=type_members,dc=example,dc=com) +LDAPTestConnect=Test LDAP connection +LDAPTestSynchroContact=Test contacts synchronization +LDAPTestSynchroUser=Test user synchronization +LDAPTestSynchroGroup=Test group synchronization +LDAPTestSynchroMember=Test member synchronization +LDAPTestSearch= Test a LDAP search +LDAPSynchroOK=Synchronization test successful +LDAPSynchroKO=Failed synchronization test +LDAPSynchroKOMayBePermissions=Failed synchronization test. Check that connexion to server is correctly configured and allows LDAP udpates +LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=%s) +LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=%s) +LDAPBindOK=Connect/Authentificate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPBindKO=Connect/Authentificate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPUnbindSuccessfull=Disconnect successful +LDAPUnbindFailed=Disconnect failed +LDAPConnectToDNSuccessfull=Connection to DN (%s) successful +LDAPConnectToDNFailed=Connection to DN (%s) failed +LDAPSetupForVersion3=LDAP server configured for version 3 +LDAPSetupForVersion2=LDAP server configured for version 2 +LDAPDolibarrMapping=Dolibarr Mapping +LDAPLdapMapping=LDAP Mapping +LDAPFieldLoginUnix=Login (unix) +LDAPFieldLoginExample=Example : uid +LDAPFilterConnection=Search filter +LDAPFilterConnectionExample=Example : &(objectClass=inetOrgPerson) +LDAPFieldLoginSamba=Login (samba, activedirectory) +LDAPFieldLoginSambaExample=Example : samaccountname +LDAPFieldFullname=Full name +LDAPFieldFullnameExample=Example : cn +LDAPFieldPassword=Password +LDAPFieldPasswordNotCrypted=Password not crypted +LDAPFieldPasswordCrypted=Password crypted +LDAPFieldPasswordExample=Example : userPassword +LDAPFieldCommonName=Common name +LDAPFieldCommonNameExample=Example : cn +LDAPFieldName=Name +LDAPFieldNameExample=Example : sn +LDAPFieldFirstName=First name +LDAPFieldFirstNameExample=Example : givenName +LDAPFieldMail=Email address +LDAPFieldMailExample=Example : mail +LDAPFieldPhone=Professional phone number +LDAPFieldPhoneExample=Example : telephonenumber +LDAPFieldHomePhone=Personal phone number +LDAPFieldHomePhoneExample=Example : homephone +LDAPFieldMobile=Cellular phone +LDAPFieldMobileExample=Example : mobile +LDAPFieldFax=Fax number +LDAPFieldFaxExample=Example : facsimiletelephonenumber +LDAPFieldAddress=Street +LDAPFieldAddressExample=Example : street +LDAPFieldZip=Zip +LDAPFieldZipExample=Example : postalcode +LDAPFieldTown=Town +LDAPFieldTownExample=Example : l +LDAPFieldCountry=Country +LDAPFieldCountryExample=Example : c +LDAPFieldDescription=Description +LDAPFieldDescriptionExample=Example : description +LDAPFieldGroupMembers= Group members +LDAPFieldGroupMembersExample= Example : uniqueMember +LDAPFieldBirthdate=Birthdate +LDAPFieldBirthdateExample=Example : +LDAPFieldCompany=Company +LDAPFieldCompanyExample=Example : o +LDAPFieldSid=SID +LDAPFieldSidExample=Example : objectsid +LDAPFieldEndLastSubscription=Date of subscription end +LDAPFieldTitle=Post/Function +LDAPFieldTitleExample=Example: title +LDAPParametersAreStillHardCoded=LDAP parameters are still hardcoded (in contact class) +LDAPSetupNotComplete=LDAP setup not complete (go on others tabs) +LDAPNoUserOrPasswordProvidedAccessIsReadOnly=No administrator or password provided. LDAP access will be anonymous and in read only mode. +LDAPDescContact=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr contacts. +LDAPDescUsers=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr users. +LDAPDescGroups=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr groups. +LDAPDescMembers=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr members module. +LDAPDescValues=Example values are designed for OpenLDAP with following loaded schemas: core.schema, cosine.schema, inetorgperson.schema). If you use thoose values and OpenLDAP, modify your LDAP config file slapd.conf to have all thoose schemas loaded. +ForANonAnonymousAccess=For an authenticated access (for a write access for example) +PerfDolibarr=Performance setup/optimizing report +YouMayFindPerfAdviceHere=You will find on this page some checks or advices related to performance. +NotInstalled=Not installed, so your server is not slow down by this. +ApplicativeCache=Applicative cache +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. +MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled. +OPCodeCache=OPCode cache +NoOPCodeCacheFound=No OPCode cache found. May be you use another OPCode cache than XCache or eAccelerator (good), may be you don't have OPCode cache (very bad). +HTTPCacheStaticResources=HTTP cache for static resources (css, img, javascript) +FilesOfTypeCached=Files of type %s are cached by HTTP server +FilesOfTypeNotCached=Files of type %s are not cached by HTTP server +FilesOfTypeCompressed=Files of type %s are compressed by HTTP server +FilesOfTypeNotCompressed=Files of type %s are not compressed by HTTP server +CacheByServer=Cache by server +CacheByClient=Cache by browser +CompressionOfResources=Compression of HTTP responses +TestNotPossibleWithCurrentBrowsers=Such an automatic detection is not possible with current browsers +##### Products ##### +ProductSetup=Products module setup +ServiceSetup=Services module setup +ProductServiceSetup=Products and Services modules setup +NumberOfProductShowInSelect=Max number of products in combos select lists (0=no limit) +ConfirmDeleteProductLineAbility=Confirmation when removing product lines in forms +ModifyProductDescAbility=Personalization of product descriptions in forms +ViewProductDescInFormAbility=Visualization of product descriptions in the forms (otherwise as popup tooltip) +ViewProductDescInThirdpartyLanguageAbility=Visualization of products descriptions in the thirdparty language +UseSearchToSelectProductTooltip=Also if you have a large number of product (> 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=Use a search form to choose a product (rather than a drop-down list). +UseEcoTaxeAbility=Support Eco-Taxe (WEEE) +SetDefaultBarcodeTypeProducts=Default barcode type to use for products +SetDefaultBarcodeTypeThirdParties=Default barcode type to use for third parties +ProductCodeChecker= Module for product code generation and checking (product or service) +ProductOtherConf= Product / Service configuration +##### Syslog ##### +SyslogSetup=Logs module setup +SyslogOutput=Logs outputs +SyslogSyslog=Syslog +SyslogFacility=Facility +SyslogLevel=Level +SyslogSimpleFile=File +SyslogFilename=File name and path +YouCanUseDOL_DATA_ROOT=You can use DOL_DATA_ROOT/dolibarr.log for a log file in Dolibarr "documents" directory. You can set a different path to store this file. +ErrorUnknownSyslogConstant=Constant %s is not a known Syslog constant +OnlyWindowsLOG_USER=Windows only supports LOG_USER +##### Donations ##### +DonationsSetup=Donation module setup +DonationsReceiptModel=Template of donation receipt +##### Barcode ##### +BarcodeSetup=Barcode setup +PaperFormatModule=Print format module +BarcodeEncodeModule=Barcode encoding type +UseBarcodeInProductModule=Use bar codes for products +CodeBarGenerator=Barcode generator +ChooseABarCode=No generator defined +FormatNotSupportedByGenerator=Format not supported by this generator +BarcodeDescEAN8=Barcode of type EAN8 +BarcodeDescEAN13=Barcode of type EAN13 +BarcodeDescUPC=Barcode of type UPC +BarcodeDescISBN=Barcode of type ISBN +BarcodeDescC39=Barcode of type C39 +BarcodeDescC128=Barcode of type C128 +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode +BarcodeInternalEngine=Internal engine +BarCodeNumberManager=Manager to auto define barcode numbers +##### Prelevements ##### +WithdrawalsSetup=Withdrawal module setup +##### ExternalRSS ##### +ExternalRSSSetup=External RSS imports setup +NewRSS=New RSS Feed +RSSUrl=RSS URL +RSSUrlExample=An interesting RSS feed +##### Mailing ##### +MailingSetup=EMailing module setup +MailingEMailFrom=Sender EMail (From) for emails sent by emailing module +MailingEMailError=Return EMail (Errors-to) for emails with errors +MailingDelay=Seconds to wait after sending next message +##### Notification ##### +NotificationSetup=EMail notification module setup +NotificationEMailFrom=Sender EMail (From) for emails sent for notifications +ListOfAvailableNotifications=List of events you can set notification on, for each thirdparty (go into thirdparty card to setup) or by setting a fixed email (List depends on activated modules) +FixedEmailTarget=Fixed email target +##### Sendings ##### +SendingsSetup=Sending module setup +SendingsReceiptModel=Sending receipt model +SendingsNumberingModules=Sendings numbering modules +SendingsAbility=Support shipment sheets for customer deliveries +NoNeedForDeliveryReceipts=In most cases, sendings receipts are used both as sheets for customer deliveries (list of products to send) and sheets that is recevied and signed by customer. So product deliveries receipts is a duplicated feature and is rarely activated. +FreeLegalTextOnShippings=Free text on shipments +##### Deliveries ##### +DeliveryOrderNumberingModules=Products deliveries receipt numbering module +DeliveryOrderModel=Products deliveries receipt model +DeliveriesOrderAbility=Support products deliveries receipts +FreeLegalTextOnDeliveryReceipts=Free text on delivery receipts +##### FCKeditor ##### +AdvancedEditor=Advanced editor +ActivateFCKeditor=Activate advanced editor for: +FCKeditorForCompany=WYSIWIG creation/edition of elements description and note (except products/services) +FCKeditorForProduct=WYSIWIG creation/edition of products/services description and note +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 formating when building PDF files. +FCKeditorForMailing= WYSIWIG creation/edition for mass eMailings (Tools->eMailing) +FCKeditorForUserSignature=WYSIWIG creation/edition of user signature +FCKeditorForMail=WYSIWIG creation/edition for all mail (except Outils->eMailing) +##### OSCommerce 1 ##### +OSCommerceErrorConnectOkButWrongDatabase=Connection succeeded but database doesn't look to be an OSCommerce database (Key %s not found in table %s). +OSCommerceTestOk=Connection to server '%s' on database '%s' with user '%s' successfull. +OSCommerceTestKo1=Connection to server '%s' succeed but database '%s' could not be reached. +OSCommerceTestKo2=Connection to server '%s' with user '%s' failed. +##### Stock ##### +StockSetup=Warehouse module setup +UserWarehouse=Use user personal warehouses +IfYouUsePointOfSaleCheckModule=If you use a Point of Sale module (POS module provided by default or another external module), this setup may be ignored by your Point Of Sale module. Most point of sales modules are designed to create immediatly an invoice and decrease stock by default whatever are options here. So, if you need or not to have a stock decrease when registering a sell from your Point Of Sale, check also your POS module set up. +##### Menu ##### +MenuDeleted=Menu deleted +TreeMenu=Tree menus +Menus=Menus +TreeMenuPersonalized=Personalized menus +NewMenu=New menu +MenuConf=Menus setup +Menu=Selection of menu +MenuHandler=Menu handler +MenuModule=Source module +HideUnauthorizedMenu= Hide unauthorized menus (gray) +DetailId=Id menu +DetailMenuHandler=Menu handler where to show new menu +DetailMenuModule=Module name if menu entry come from a module +DetailType=Type of menu (top or left) +DetailTitre=Menu label or label code for translation +DetailMainmenu=Group for which it belongs (obsolete) +DetailUrl=URL where menu send you (Absolute URL link or external link with http://) +DetailLeftmenu=Display condition or not (obsolete) +DetailEnabled=Condition to show or not entry +DetailRight=Condition to display unauthorized grey menus +DetailLangs=Lang file name for label code translation +DetailUser=Intern / Extern / All +Target=Target +DetailTarget=Target for links (_blank top open a new window) +DetailLevel=Level (-1:top menu, 0:header menu, >0 menu and sub menu) +ModifMenu=Menu change +DeleteMenu=Delete menu entry +ConfirmDeleteMenu=Are you sure you want to delete menu entry %s ? +DeleteLine=Delete line +ConfirmDeleteLine=Are you sure you want to delete this line ? +##### Tax ##### +TaxSetup=Taxes, social contributions and dividends module setup +OptionVatMode=VAT due +OptionVATDefault=Cash basis +OptionVATDebitOption=Accrual basis +OptionVatDefaultDesc=VAT is due:
- on delivery for goods (we use invoice date)
- on payments for services +OptionVatDebitOptionDesc=VAT is due:
- on delivery for goods (we use invoice date)
- on invoice (debit) for services +SummaryOfVatExigibilityUsedByDefault=Time of VAT exigibility by default according to chosen option: +OnDelivery=On delivery +OnPayment=On payment +OnInvoice=On invoice +SupposedToBePaymentDate=Payment date used +SupposedToBeInvoiceDate=Invoice date used +Buy=Buy +Sell=Sell +InvoiceDateUsed=Invoice date used +YourCompanyDoesNotUseVAT=Your company has been defined to not use VAT (Home - Setup - Company/Foundation), so there is no VAT options to setup. +AccountancyCode=Accountancy Code +AccountancyCodeSell=Sale account. code +AccountancyCodeBuy=Purchase account. code +##### Agenda ##### +AgendaSetup=Events and agenda module setup +PasswordTogetVCalExport=Key to authorize export link +PastDelayVCalExport=Do not export event older than +AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionary -> Type of agenda events) +AGENDA_DEFAULT_FILTER_TYPE=Set automatically this type of event into search filter of agenda view +AGENDA_DEFAULT_FILTER_STATUS=Set automatically this status for events into search filter of agenda view +AGENDA_DEFAULT_VIEW=Which tab do you want to open by default when selecting menu Agenda +##### ClickToDial ##### +ClickToDialDesc=This module allows to add an icon after phone numbers. A click on this icon will call a server with a particular URL you define below. This can be used to call a call center system from Dolibarr that can call the phone number on a SIP system for example. +##### Point Of Sales (CashDesk) ##### +CashDesk=Point of sales +CashDeskSetup=Point of sales module setup +CashDeskThirdPartyForSell=Default generic third party to use for sells +CashDeskBankAccountForSell=Default account to use to receive cash payments +CashDeskBankAccountForCheque= Default account to use to receive payments by cheque +CashDeskBankAccountForCB= Default account to use to receive payments by credit cards +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). +CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease +StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management +CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. +##### Bookmark ##### +BookmarkSetup=Bookmark module setup +BookmarkDesc=This module allows you to manage bookmarks. You can also add shortcuts to any Dolibarr pages or externale web sites on your left menu. +NbOfBoomarkToShow=Maximum number of bookmarks to show in left menu +##### WebServices ##### +WebServicesSetup=Webservices module setup +WebServicesDesc=By enabling this module, Dolibarr become a web service server to provide miscellaneous web services. +WSDLCanBeDownloadedHere=WSDL descriptor files of provided services can be download here +EndPointIs=SOAP clients must send their requests to the Dolibarr endpoint available at Url +##### Bank ##### +BankSetupModule=Bank module setup +FreeLegalTextOnChequeReceipts=Free text on cheque receipts +BankOrderShow=Display order of bank accounts for countries using "detailed bank number" +BankOrderGlobal=General +BankOrderGlobalDesc=General display order +BankOrderES=Spanish +BankOrderESDesc=Spanish display order +##### Multicompany ##### +MultiCompanySetup=Multi-company module setup +##### Suppliers ##### +SuppliersSetup=Supplier module setup +SuppliersCommandModel=Complete template of supplier order (logo...) +SuppliersInvoiceModel=Complete template of supplier invoice (logo...) +SuppliersInvoiceNumberingModel=Supplier invoices numbering models +##### GeoIPMaxmind ##### +GeoIPMaxmindSetup=GeoIP Maxmind module setup +PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.
Examples:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat +NoteOnPathLocation=Note that your ip to country data file must be inside a directory your PHP can read (Check your PHP open_basedir setup and filesystem permissions). +YouCanDownloadFreeDatFileTo=You can download a free demo version of the Maxmind GeoIP country file at %s. +YouCanDownloadAdvancedDatFileTo=You can also download a more complete version, with updates, of the Maxmind GeoIP country file at %s. +TestGeoIPResult=Test of a conversion IP -> country +##### Projects ##### +ProjectsNumberingModules=Projects numbering module +ProjectsSetup=Project module setup +ProjectsModelModule=Project reports document model +TasksNumberingModules=Tasks numbering module +TaskModelModule=Tasks reports document model +##### ECM (GED) ##### +ECMSetup = GED Setup +ECMAutoTree = Automatic tree folder and document +##### Fiscal Year ##### +FiscalYears=Fiscal years +FiscalYear=Fiscal year +FiscalYearCard=Fiscal year card +NewFiscalYear=New fiscal year +EditFiscalYear=Edit fiscal year +OpenFiscalYear=Open fiscal year +CloseFiscalYear=Close fiscal year +DeleteFiscalYear=Delete fiscal year +ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ? +Opened=Opened +Closed=Closed +AlwaysEditable=Can always be edited +MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) +NbMajMin=Minimum number of uppercase characters +NbNumMin=Minimum number of numeric characters +NbSpeMin=Minimum number of special characters +NbIteConsecutive=Maximum number of repeating same characters +NoAmbiCaracAutoGeneration=Do not use ambiguous characters ("1","l","i","|","0","O") for automatic generation +SalariesSetup=Setup of module salaries +SortOrder=Sort order +Format=Format +TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type +IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/sw_SW/agenda.lang b/htdocs/langs/sw_SW/agenda.lang new file mode 100644 index 00000000000..04e2ae30de8 --- /dev/null +++ b/htdocs/langs/sw_SW/agenda.lang @@ -0,0 +1,93 @@ +# Dolibarr language file - Source file is en_US - agenda +IdAgenda=ID event +Actions=Events +ActionsArea=Events area (Actions and tasks) +Agenda=Agenda +Agendas=Agendas +Calendar=Calendar +Calendars=Calendars +LocalAgenda=Internal calendar +ActionsOwnedBy=Event owned by +AffectedTo=Assigned to +DoneBy=Done by +Event=Event +Events=Events +EventsNb=Number of events +MyEvents=My events +OtherEvents=Other events +ListOfActions=List of events +Location=Location +EventOnFullDay=Event on all day(s) +SearchAnAction= Search an event/task +MenuToDoActions=All incomplete events +MenuDoneActions=All terminated events +MenuToDoMyActions=My incomplete events +MenuDoneMyActions=My terminated events +ListOfEvents=List of events (internal calendar) +ActionsAskedBy=Events reported by +ActionsToDoBy=Events assigned to +ActionsDoneBy=Events done by +ActionsForUser=Events for user +ActionsForUsersGroup=Events for all users of group +ActionAssignedTo=Event assigned to +AllMyActions= All my events/tasks +AllActions= All events/tasks +ViewList=List view +ViewCal=Month view +ViewDay=Day view +ViewWeek=Week view +ViewPerUser=Per user view +ViewWithPredefinedFilters= View with predefined filters +AutoActions= Automatic filling +AgendaAutoActionDesc= Define here events for which you want Dolibarr to create automatically an event in agenda. If nothing is checked (by default), only manual actions will be included in agenda. +AgendaSetupOtherDesc= This page provides options to allow export of your Dolibarr events into an external calendar (thunderbird, google calendar, ...) +AgendaExtSitesDesc=This page allows to declare external sources of calendars to see their events into Dolibarr agenda. +ActionsEvents=Events for which Dolibarr will create an action in agenda automatically +PropalValidatedInDolibarr=Proposal %s validated +InvoiceValidatedInDolibarr=Invoice %s validated +InvoiceValidatedInDolibarrFromPos=Invoice %s validated from POS +InvoiceBackToDraftInDolibarr=Invoice %s go back to draft status +InvoiceDeleteDolibarr=Invoice %s deleted +OrderValidatedInDolibarr= Order %s validated +OrderApprovedInDolibarr=Order %s approved +OrderRefusedInDolibarr=Order %s refused +OrderBackToDraftInDolibarr=Order %s go back to draft status +OrderCanceledInDolibarr=Order %s canceled +ProposalSentByEMail=Commercial proposal %s sent by EMail +OrderSentByEMail=Customer order %s sent by EMail +InvoiceSentByEMail=Customer invoice %s sent by EMail +SupplierOrderSentByEMail=Supplier order %s sent by EMail +SupplierInvoiceSentByEMail=Supplier invoice %s sent by EMail +ShippingSentByEMail=Shipment %s sent by EMail +ShippingValidated= Shipment %s validated +InterventionSentByEMail=Intervention %s sent by EMail +NewCompanyToDolibarr= Third party created +DateActionPlannedStart= Planned start date +DateActionPlannedEnd= Planned end date +DateActionDoneStart= Real start date +DateActionDoneEnd= Real end date +DateActionStart= Start date +DateActionEnd= End date +AgendaUrlOptions1=You can also add following parameters to filter output: +AgendaUrlOptions2=login=%s to restrict output to actions created by or assigned to user %s. +AgendaUrlOptions3=logina=%s to restrict output to actions owned by a user %s. +AgendaUrlOptions4=logint=%s to restrict output to actions assigned to user %s. +AgendaUrlOptionsProject=project=PROJECT_ID to restrict output to actions associated to project PROJECT_ID. +AgendaShowBirthdayEvents=Show birthday's contacts +AgendaHideBirthdayEvents=Hide birthday's contacts +Busy=Busy +ExportDataset_event1=List of agenda events +DefaultWorkingDays=Default working days range in week (Example: 1-5, 1-6) +DefaultWorkingHours=Default working hours in day (Example: 9-18) +# External Sites ical +ExportCal=Export calendar +ExtSites=Import external calendars +ExtSitesEnableThisTool=Show external calendars (defined into global setup) into agenda. Does not affect external calendars defined by users. +ExtSitesNbOfAgenda=Number of calendars +AgendaExtNb=Calendar nb %s +ExtSiteUrlAgenda=URL to access .ical file +ExtSiteNoLabel=No Description +WorkingTimeRange=Working time range +WorkingDaysRange=Working days range +AddEvent=Create event +MyAvailability=My availability diff --git a/htdocs/langs/sw_SW/banks.lang b/htdocs/langs/sw_SW/banks.lang new file mode 100644 index 00000000000..a2306950fb4 --- /dev/null +++ b/htdocs/langs/sw_SW/banks.lang @@ -0,0 +1,165 @@ +# Dolibarr language file - Source file is en_US - banks +Bank=Bank +Banks=Banks +MenuBankCash=Bank/Cash +MenuSetupBank=Bank/Cash setup +BankName=Bank name +FinancialAccount=Account +FinancialAccounts=Accounts +BankAccount=Bank account +BankAccounts=Bank accounts +ShowAccount=Show Account +AccountRef=Financial account ref +AccountLabel=Financial account label +CashAccount=Cash account +CashAccounts=Cash accounts +MainAccount=Main account +CurrentAccount=Current account +CurrentAccounts=Current accounts +SavingAccount=Savings account +SavingAccounts=Savings accounts +ErrorBankLabelAlreadyExists=Financial account label already exists +BankBalance=Balance +BankBalanceBefore=Balance before +BankBalanceAfter=Balance after +BalanceMinimalAllowed=Minimum allowed balance +BalanceMinimalDesired=Minimum desired balance +InitialBankBalance=Initial balance +EndBankBalance=End balance +CurrentBalance=Current balance +FutureBalance=Future balance +ShowAllTimeBalance=Show balance from start +AllTime=From start +Reconciliation=Reconciliation +RIB=Bank Account Number +IBAN=IBAN number +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid +BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid +StandingOrders=Standing orders +StandingOrder=Standing order +Withdrawals=Withdrawals +Withdrawal=Withdrawal +AccountStatement=Account statement +AccountStatementShort=Statement +AccountStatements=Account statements +LastAccountStatements=Last account statements +Rapprochement=Reconciliate +IOMonthlyReporting=Monthly reporting +BankAccountDomiciliation=Account address +BankAccountCountry=Account country +BankAccountOwner=Account owner name +BankAccountOwnerAddress=Account owner address +RIBControlError=Integrity check of values fails. This means information for this account number are not complete or wrong (check country, numbers and IBAN). +CreateAccount=Create account +NewAccount=New account +NewBankAccount=New bank account +NewFinancialAccount=New financial account +MenuNewFinancialAccount=New financial account +NewCurrentAccount=New current account +NewSavingAccount=New savings account +NewCashAccount=New cash account +EditFinancialAccount=Edit account +AccountSetup=Financial accounts setup +SearchBankMovement=Search bank movement +Debts=Debts +LabelBankCashAccount=Bank or cash label +AccountType=Account type +BankType0=Savings account +BankType1=Current or credit card account +BankType2=Cash account +IfBankAccount=If bank account +AccountsArea=Accounts area +AccountCard=Account card +DeleteAccount=Delete account +ConfirmDeleteAccount=Are you sure you want to delete this account ? +Account=Account +ByCategories=By categories +ByRubriques=By categories +BankTransactionByCategories=Bank transactions by categories +BankTransactionForCategory=Bank transactions for category %s +RemoveFromRubrique=Remove link with category +RemoveFromRubriqueConfirm=Are you sure you want to remove link between the transaction and the category ? +ListBankTransactions=List of bank transactions +IdTransaction=Transaction ID +BankTransactions=Bank transactions +SearchTransaction=Search transaction +ListTransactions=List transactions +ListTransactionsByCategory=List transaction/category +TransactionsToConciliate=Transactions to reconcile +Conciliable=Can be reconciled +Conciliate=Reconcile +Conciliation=Reconciliation +ConciliationForAccount=Reconcile this account +IncludeClosedAccount=Include closed accounts +OnlyOpenedAccount=Only opened accounts +AccountToCredit=Account to credit +AccountToDebit=Account to debit +DisableConciliation=Disable reconciliation feature for this account +ConciliationDisabled=Reconciliation feature disabled +StatusAccountOpened=Opened +StatusAccountClosed=Closed +AccountIdShort=Number +EditBankRecord=Edit record +LineRecord=Transaction +AddBankRecord=Add transaction +AddBankRecordLong=Add transaction manually +ConciliatedBy=Reconciled by +DateConciliating=Reconcile date +BankLineConciliated=Transaction reconciled +CustomerInvoicePayment=Customer payment +CustomerInvoicePaymentBack=Customer payment back +SupplierInvoicePayment=Supplier payment +WithdrawalPayment=Withdrawal payment +SocialContributionPayment=Social contribution payment +FinancialAccountJournal=Financial account journal +BankTransfer=Bank transfer +BankTransfers=Bank transfers +TransferDesc=Transfer from one account to another one, Dolibarr will write two records (a debit in source account and a credit in target account, of the same amount. The same label and date will be used for this transaction) +TransferFrom=From +TransferTo=To +TransferFromToDone=A transfer from %s to %s of %s %s has been recorded. +CheckTransmitter=Transmitter +ValidateCheckReceipt=Validate this check receipt ? +ConfirmValidateCheckReceipt=Are you sure you want to validate this check receipt, no change will be possible once this is done ? +DeleteCheckReceipt=Delete this check receipt ? +ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt ? +BankChecks=Bank checks +BankChecksToReceipt=Checks waiting for deposit +ShowCheckReceipt=Show check deposit receipt +NumberOfCheques=Nb of check +DeleteTransaction=Delete transaction +ConfirmDeleteTransaction=Are you sure you want to delete this transaction ? +ThisWillAlsoDeleteBankRecord=This will also delete generated bank transactions +BankMovements=Movements +CashBudget=Cash budget +PlannedTransactions=Planned transactions +Graph=Graphics +ExportDataset_banque_1=Bank transactions and account statement +ExportDataset_banque_2=Deposit slip +TransactionOnTheOtherAccount=Transaction on the other account +TransactionWithOtherAccount=Account transfer +PaymentNumberUpdateSucceeded=Payment number updated succesfully +PaymentNumberUpdateFailed=Payment number could not be updated +PaymentDateUpdateSucceeded=Payment date update succesfully +PaymentDateUpdateFailed=Payment date could not be updated +Transactions=Transactions +BankTransactionLine=Bank transaction +AllAccounts=All bank/cash accounts +BackToAccount=Back to account +ShowAllAccounts=Show for all accounts +FutureTransaction=Transaction in futur. No way to conciliate. +SelectChequeTransactionAndGenerate=Select/filter checks to include into the check deposit receipt and click on "Create". +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD +EventualyAddCategory=Eventually, specify a category in which to classify the records +ToConciliate=To conciliate? +ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click +BankDashboard=Bank accounts summary +DefaultRIB=Default BAN +AllRIB=All BAN +LabelRIB=BAN Label +NoBANRecord=No BAN record +DeleteARib=Delete BAN record +ConfirmDeleteRib=Are you sure you want to delete this BAN record ? diff --git a/htdocs/langs/sw_SW/bills.lang b/htdocs/langs/sw_SW/bills.lang new file mode 100644 index 00000000000..7232f00e91c --- /dev/null +++ b/htdocs/langs/sw_SW/bills.lang @@ -0,0 +1,430 @@ +# Dolibarr language file - Source file is en_US - bills +Bill=Invoice +Bills=Invoices +BillsCustomers=Customers invoices +BillsCustomer=Customers invoice +BillsSuppliers=Suppliers invoices +BillsCustomersUnpaid=Unpaid customers invoices +BillsCustomersUnpaidForCompany=Unpaid customer's invoices for %s +BillsSuppliersUnpaid=Unpaid supplier's invoices +BillsSuppliersUnpaidForCompany=Unpaid supplier's invoices for %s +BillsLate=Late payments +BillsStatistics=Customers invoices statistics +BillsStatisticsSuppliers=Suppliers invoices statistics +DisabledBecauseNotErasable=Disabled because can not be erased +InvoiceStandard=Standard invoice +InvoiceStandardAsk=Standard invoice +InvoiceStandardDesc=This kind of invoice is the common invoice. +InvoiceDeposit=Deposit invoice +InvoiceDepositAsk=Deposit invoice +InvoiceDepositDesc=This kind of invoice is done when a deposit has been received. +InvoiceProForma=Proforma invoice +InvoiceProFormaAsk=Proforma invoice +InvoiceProFormaDesc=Proforma invoice is an image of a true invoice but has no accountancy value. +InvoiceReplacement=Replacement invoice +InvoiceReplacementAsk=Replacement invoice for invoice +InvoiceReplacementDesc=Replacement invoice is used to cancel and replace completely an invoice with no payment already received.

Note: Only invoices with no payment on it can be replaced. If the invoice you replace is not yet closed, it will be automatically closed to 'abandoned'. +InvoiceAvoir=Credit note +InvoiceAvoirAsk=Credit note to correct invoice +InvoiceAvoirDesc=The credit note is a negative invoice used to solve fact that an invoice has an amount that differs than amount really paid (because customer paid too much by error, or will not paid completely since he returned some products for example). +invoiceAvoirWithLines=Create Credit Note with lines from the origin invoice +invoiceAvoirWithPaymentRestAmount=Create Credit Note with remaining unpaid of origin invoice +invoiceAvoirLineWithPaymentRestAmount=Credit Note for remaining unpaid amount +ReplaceInvoice=Replace invoice %s +ReplacementInvoice=Replacement invoice +ReplacedByInvoice=Replaced by invoice %s +ReplacementByInvoice=Replaced by invoice +CorrectInvoice=Correct invoice %s +CorrectionInvoice=Correction invoice +UsedByInvoice=Used to pay invoice %s +ConsumedBy=Consumed by +NotConsumed=Not consumed +NoReplacableInvoice=No replacable invoices +NoInvoiceToCorrect=No invoice to correct +InvoiceHasAvoir=Corrected by one or several invoices +CardBill=Invoice card +PredefinedInvoices=Predefined Invoices +Invoice=Invoice +Invoices=Invoices +InvoiceLine=Invoice line +InvoiceCustomer=Customer invoice +CustomerInvoice=Customer invoice +CustomersInvoices=Customers invoices +SupplierInvoice=Supplier invoice +SuppliersInvoices=Suppliers invoices +SupplierBill=Supplier invoice +SupplierBills=suppliers invoices +Payment=Payment +PaymentBack=Payment back +Payments=Payments +PaymentsBack=Payments back +PaidBack=Paid back +DatePayment=Payment date +DeletePayment=Delete payment +ConfirmDeletePayment=Are you sure you want to delete this payment ? +ConfirmConvertToReduc=Do you want to convert this credit note or deposit into an absolute discount ?
The amount will so be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. +SupplierPayments=Suppliers payments +ReceivedPayments=Received payments +ReceivedCustomersPayments=Payments received from customers +PayedSuppliersPayments=Payments payed to suppliers +ReceivedCustomersPaymentsToValid=Received customers payments to validate +PaymentsReportsForYear=Payments reports for %s +PaymentsReports=Payments reports +PaymentsAlreadyDone=Payments already done +PaymentsBackAlreadyDone=Payments back already done +PaymentRule=Payment rule +PaymentMode=Payment type +PaymentConditions=Payment term +PaymentConditionsShort=Payment term +PaymentAmount=Payment amount +ValidatePayment=Validate payment +PaymentHigherThanReminderToPay=Payment higher than reminder to pay +HelpPaymentHigherThanReminderToPay=Attention, the payment amount of one or more bills is higher than the rest to pay.
Edit your entry, otherwise confirm and think about creating a credit note of the excess received for each overpaid invoices. +HelpPaymentHigherThanReminderToPaySupplier=Attention, the payment amount of one or more bills is higher than the rest to pay.
Edit your entry, otherwise confirm. +ClassifyPaid=Classify 'Paid' +ClassifyPaidPartially=Classify 'Paid partially' +ClassifyCanceled=Classify 'Abandoned' +ClassifyClosed=Classify 'Closed' +ClassifyUnBilled=Classify 'Unbilled' +CreateBill=Create Invoice +AddBill=Create invoice or credit note +AddToDraftInvoices=Add to draft invoice +DeleteBill=Delete invoice +SearchACustomerInvoice=Search for a customer invoice +SearchASupplierInvoice=Search for a supplier invoice +CancelBill=Cancel an invoice +SendRemindByMail=Send reminder by EMail +DoPayment=Do payment +DoPaymentBack=Do payment back +ConvertToReduc=Convert into future discount +EnterPaymentReceivedFromCustomer=Enter payment received from customer +EnterPaymentDueToCustomer=Make payment due to customer +DisabledBecauseRemainderToPayIsZero=Disabled because remaining unpaid is zero +Amount=Amount +PriceBase=Price base +BillStatus=Invoice status +BillStatusDraft=Draft (needs to be validated) +BillStatusPaid=Paid +BillStatusPaidBackOrConverted=Paid or converted into discount +BillStatusConverted=Paid (ready for final invoice) +BillStatusCanceled=Abandoned +BillStatusValidated=Validated (needs to be paid) +BillStatusStarted=Started +BillStatusNotPaid=Not paid +BillStatusClosedUnpaid=Closed (unpaid) +BillStatusClosedPaidPartially=Paid (partially) +BillShortStatusDraft=Draft +BillShortStatusPaid=Paid +BillShortStatusPaidBackOrConverted=Processed +BillShortStatusConverted=Processed +BillShortStatusCanceled=Abandoned +BillShortStatusValidated=Validated +BillShortStatusStarted=Started +BillShortStatusNotPaid=Not paid +BillShortStatusClosedUnpaid=Closed +BillShortStatusClosedPaidPartially=Paid (partially) +PaymentStatusToValidShort=To validate +ErrorVATIntraNotConfigured=Intracommunautary VAT number not yet defined +ErrorNoPaiementModeConfigured=No default payment mode defined. Go to Invoice module setup to fix this. +ErrorCreateBankAccount=Create a bank account, then go to Setup panel of Invoice module to define payment modes +ErrorBillNotFound=Invoice %s does not exist +ErrorInvoiceAlreadyReplaced=Error, you try to validate an invoice to replace invoice %s. But this one has already been replaced by invoice %s. +ErrorDiscountAlreadyUsed=Error, discount already used +ErrorInvoiceAvoirMustBeNegative=Error, correct invoice must have a negative amount +ErrorInvoiceOfThisTypeMustBePositive=Error, this type of invoice must have a positive amount +ErrorCantCancelIfReplacementInvoiceNotValidated=Error, can't cancel an invoice that has been replaced by another invoice that is still in draft status +BillFrom=From +BillTo=To +ActionsOnBill=Actions on invoice +NewBill=New invoice +LastBills=Last %s invoices +LastCustomersBills=Last %s customers invoices +LastSuppliersBills=Last %s suppliers invoices +AllBills=All invoices +OtherBills=Other invoices +DraftBills=Draft invoices +CustomersDraftInvoices=Customers draft invoices +SuppliersDraftInvoices=Suppliers draft invoices +Unpaid=Unpaid +ConfirmDeleteBill=Are you sure you want to delete this invoice ? +ConfirmValidateBill=Are you sure you want to validate this invoice with reference %s ? +ConfirmUnvalidateBill=Are you sure you want to change invoice %s to draft status ? +ConfirmClassifyPaidBill=Are you sure you want to change invoice %s to status paid ? +ConfirmCancelBill=Are you sure you want to cancel invoice %s ? +ConfirmCancelBillQuestion=Why do you want to classify this invoice 'abandoned' ? +ConfirmClassifyPaidPartially=Are you sure you want to change invoice %s to status paid ? +ConfirmClassifyPaidPartiallyQuestion=This invoice has not been paid completely. What are reasons for you to close this invoice ? +ConfirmClassifyPaidPartiallyReasonAvoir=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I regularise the VAT with a credit note. +ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I accept to lose the VAT on this discount. +ConfirmClassifyPaidPartiallyReasonDiscountVat=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I recover the VAT on this discount without a credit note. +ConfirmClassifyPaidPartiallyReasonBadCustomer=Bad customer +ConfirmClassifyPaidPartiallyReasonProductReturned=Products partially returned +ConfirmClassifyPaidPartiallyReasonOther=Amount abandoned for other reason +ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=This choice is possible if your invoice have been provided with suitable comment. (Example «Only the tax corresponding to the price that have been actually paid gives rights to deduction») +ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=In some countries, this choice might be possible only if your invoice contains correct note. +ConfirmClassifyPaidPartiallyReasonAvoirDesc=Use this choice if all other does not suit +ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=A bad customer is a customer that refuse to pay his debt. +ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=This choice is used when payment is not complete because some of products were returned +ConfirmClassifyPaidPartiallyReasonOtherDesc=Use this choice if all other does not suit, 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=Other +ConfirmClassifyAbandonReasonOtherDesc=This choice will be used in all other cases. For example because you plan to create a replacing invoice. +ConfirmCustomerPayment=Do you confirm this payment input for %s %s ? +ConfirmSupplierPayment=Do you confirm this payment input for %s %s ? +ConfirmValidatePayment=Are you sure you want to validate this payment ? No change can be made once payment is validated. +ValidateBill=Validate invoice +UnvalidateBill=Unvalidate invoice +NumberOfBills=Nb of invoices +NumberOfBillsByMonth=Nb of invoices by month +AmountOfBills=Amount of invoices +AmountOfBillsByMonthHT=Amount of invoices by month (net of tax) +ShowSocialContribution=Show social contribution +ShowBill=Show invoice +ShowInvoice=Show invoice +ShowInvoiceReplace=Show replacing invoice +ShowInvoiceAvoir=Show credit note +ShowInvoiceDeposit=Show deposit invoice +ShowPayment=Show payment +File=File +AlreadyPaid=Already paid +AlreadyPaidBack=Already paid back +AlreadyPaidNoCreditNotesNoDeposits=Already paid (without credit notes and deposits) +Abandoned=Abandoned +RemainderToPay=Remaining unpaid +RemainderToTake=Remaining amount to take +RemainderToPayBack=Remaining amount to pay back +Rest=Pending +AmountExpected=Amount claimed +ExcessReceived=Excess received +EscompteOffered=Discount offered (payment before term) +SendBillRef=Submission of invoice %s +SendReminderBillRef=Submission of invoice %s (reminder) +StandingOrders=Standing orders +StandingOrder=Standing order +NoDraftBills=No draft invoices +NoOtherDraftBills=No other draft invoices +NoDraftInvoices=No draft invoices +RefBill=Invoice ref +ToBill=To bill +RemainderToBill=Remainder to bill +SendBillByMail=Send invoice by email +SendReminderBillByMail=Send reminder by email +RelatedCommercialProposals=Related commercial proposals +MenuToValid=To valid +DateMaxPayment=Payment due before +DateEcheance=Due date limit +DateInvoice=Invoice date +NoInvoice=No invoice +ClassifyBill=Classify invoice +SupplierBillsToPay=Suppliers invoices to pay +CustomerBillsUnpaid=Unpaid customers invoices +DispenseMontantLettres=The written invoices through mecanographic procedures are dispensed by the order in letters +NonPercuRecuperable=Non-recoverable +SetConditions=Set payment terms +SetMode=Set payment mode +Billed=Billed +RepeatableInvoice=Template invoice +RepeatableInvoices=Template invoices +Repeatable=Template +Repeatables=Templates +ChangeIntoRepeatableInvoice=Convert into template invoice +CreateRepeatableInvoice=Create template invoice +CreateFromRepeatableInvoice=Create from template invoice +CustomersInvoicesAndInvoiceLines=Customer invoices and invoice's lines +CustomersInvoicesAndPayments=Customer invoices and payments +ExportDataset_invoice_1=Customer invoices list and invoice's lines +ExportDataset_invoice_2=Customer invoices and payments +ProformaBill=Proforma Bill: +Reduction=Reduction +ReductionShort=Reduc. +Reductions=Reductions +ReductionsShort=Reduc. +Discount=Discount +Discounts=Discounts +AddDiscount=Create discount +AddRelativeDiscount=Create relative discount +EditRelativeDiscount=Edit relative discount +AddGlobalDiscount=Create absolute discount +EditGlobalDiscounts=Edit absolute discounts +AddCreditNote=Create credit note +ShowDiscount=Show discount +ShowReduc=Show the deduction +RelativeDiscount=Relative discount +GlobalDiscount=Global discount +CreditNote=Credit note +CreditNotes=Credit notes +Deposit=Deposit +Deposits=Deposits +DiscountFromCreditNote=Discount from credit note %s +DiscountFromDeposit=Payments from deposit invoice %s +AbsoluteDiscountUse=This kind of credit can be used on invoice before its validation +CreditNoteDepositUse=Invoice must be validated to use this king of credits +NewGlobalDiscount=New absolute discount +NewRelativeDiscount=New relative discount +NoteReason=Note/Reason +ReasonDiscount=Reason +DiscountOfferedBy=Granted by +DiscountStillRemaining=Discounts still remaining +DiscountAlreadyCounted=Discounts already counted +BillAddress=Bill address +HelpEscompte=This discount is a discount granted to customer because its payment was made before term. +HelpAbandonBadCustomer=This amount has been abandoned (customer said to be a bad customer) and is considered as an exceptional loose. +HelpAbandonOther=This amount has been abandoned since it was an error (wrong customer or invoice replaced by an other for example) +IdSocialContribution=Social contribution id +PaymentId=Payment id +InvoiceId=Invoice id +InvoiceRef=Invoice ref. +InvoiceDateCreation=Invoice creation date +InvoiceStatus=Invoice status +InvoiceNote=Invoice note +InvoicePaid=Invoice paid +PaymentNumber=Payment number +RemoveDiscount=Remove discount +WatermarkOnDraftBill=Watermark on draft invoices (nothing if empty) +InvoiceNotChecked=No invoice selected +CloneInvoice=Clone invoice +ConfirmCloneInvoice=Are you sure you want to clone this invoice %s ? +DisabledBecauseReplacedInvoice=Action disabled because invoice has been replaced +DescTaxAndDividendsArea=This area presents a summary of all payments made for special expenses. Only records with payment during the fixed year are included here. +NbOfPayments=Nb of payments +SplitDiscount=Split discount in two +ConfirmSplitDiscount=Are you sure you want to split this discount of %s %s into 2 lower discounts ? +TypeAmountOfEachNewDiscount=Input amount for each of two parts : +TotalOfTwoDiscountMustEqualsOriginal=Total of two new discount must be equal to original discount amount. +ConfirmRemoveDiscount=Are you sure you want to remove this discount ? +RelatedBill=Related invoice +RelatedBills=Related invoices +LatestRelatedBill=Latest related invoice +WarningBillExist=Warning, one or more invoice already exist + +# PaymentConditions +PaymentConditionShortRECEP=Immediate +PaymentConditionRECEP=Immediate +PaymentConditionShort30D=30 days +PaymentCondition30D=30 days +PaymentConditionShort30DENDMONTH=30 days end of month +PaymentCondition30DENDMONTH=30 days end of month +PaymentConditionShort60D=60 days +PaymentCondition60D=60 days +PaymentConditionShort60DENDMONTH=60 days end of month +PaymentCondition60DENDMONTH=60 days end of month +PaymentConditionShortPT_DELIVERY=Delivery +PaymentConditionPT_DELIVERY=On delivery +PaymentConditionShortPT_ORDER=On order +PaymentConditionPT_ORDER=On order +PaymentConditionShortPT_5050=50-50 +PaymentConditionPT_5050=50%% in advance, 50%% on delivery +FixAmount=Fix amount +VarAmount=Variable amount (%% tot.) +# PaymentType +PaymentTypeVIR=Bank deposit +PaymentTypeShortVIR=Bank deposit +PaymentTypePRE=Bank's order +PaymentTypeShortPRE=Bank's order +PaymentTypeLIQ=Cash +PaymentTypeShortLIQ=Cash +PaymentTypeCB=Credit card +PaymentTypeShortCB=Credit card +PaymentTypeCHQ=Check +PaymentTypeShortCHQ=Check +PaymentTypeTIP=TIP +PaymentTypeShortTIP=TIP +PaymentTypeVAD=On line payment +PaymentTypeShortVAD=On line payment +PaymentTypeTRA=Bill payment +PaymentTypeShortTRA=Bill +BankDetails=Bank details +BankCode=Bank code +DeskCode=Desk code +BankAccountNumber=Account number +BankAccountNumberKey=Key +Residence=Domiciliation +IBANNumber=IBAN number +IBAN=IBAN +BIC=BIC/SWIFT +BICNumber=BIC/SWIFT number +ExtraInfos=Extra infos +RegulatedOn=Regulated on +ChequeNumber=Check N° +ChequeOrTransferNumber=Check/Transfer N° +ChequeMaker=Check transmitter +ChequeBank=Bank of Check +CheckBank=Check +NetToBePaid=Net to be paid +PhoneNumber=Tel +FullPhoneNumber=Telephone +TeleFax=Fax +PrettyLittleSentence=Accept the amount of payments due by checks issued in my name as a Member of an accounting association approved by the Fiscal Administration. +IntracommunityVATNumber=Intracommunity number of VAT +PaymentByChequeOrderedTo=Check payment (including tax) are payable to %s send to +PaymentByChequeOrderedToShort=Check payment (including tax) are payable to +SendTo=sent to +PaymentByTransferOnThisBankAccount=Payment by transfer on the following bank account +VATIsNotUsedForInvoice=* Non applicable VAT art-293B of CGI +LawApplicationPart1=By application of the law 80.335 of 12/05/80 +LawApplicationPart2=the goods remain the property of +LawApplicationPart3=the seller until the complete cashing of +LawApplicationPart4=their price. +LimitedLiabilityCompanyCapital=SARL with Capital of +UseLine=Apply +UseDiscount=Use discount +UseCredit=Use credit +UseCreditNoteInInvoicePayment=Reduce amount to pay with this credit +MenuChequeDeposits=Checks deposits +MenuCheques=Checks +MenuChequesReceipts=Checks receipts +NewChequeDeposit=New deposit +ChequesReceipts=Checks receipts +ChequesArea=Checks deposits area +ChequeDeposits=Checks deposits +Cheques=Checks +CreditNoteConvertedIntoDiscount=This credit note or deposit invoice has been converted into %s +UsBillingContactAsIncoiveRecipientIfExist=Use customer billing contact address instead of third party address as recipient for invoices +ShowUnpaidAll=Show all unpaid invoices +ShowUnpaidLateOnly=Show late unpaid invoices only +PaymentInvoiceRef=Payment invoice %s +ValidateInvoice=Validate invoice +Cash=Cash +Reported=Delayed +DisabledBecausePayments=Not possible since there are some payments +CantRemovePaymentWithOneInvoicePaid=Can't remove payment since there is at least one invoice classified paid +ExpectedToPay=Expected payment +PayedByThisPayment=Paid by this payment +ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid. +ClosePaidCreditNotesAutomatically=Classify "Paid" all credit notes entirely paid back. +AllCompletelyPayedInvoiceWillBeClosed=All invoice with no remain to pay will be automatically closed to status "Paid". +ToMakePayment=Pay +ToMakePaymentBack=Pay back +ListOfYourUnpaidInvoices=List of unpaid invoices +NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. +RevenueStamp=Revenue stamp +YouMustCreateInvoiceFromThird=This option is only available when creating invoice from tab "customer" of thirdparty +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (recommended Template) +TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 +MarsNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for credit notes and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 +TerreNumRefModelError=A bill starting with $syymm already exists and is not compatible with this model of sequence. Remove it or rename it to activate this module. +##### Types de contacts ##### +TypeContact_facture_internal_SALESREPFOLL=Representative following-up customer invoice +TypeContact_facture_external_BILLING=Customer invoice contact +TypeContact_facture_external_SHIPPING=Customer shipping contact +TypeContact_facture_external_SERVICE=Customer service contact +TypeContact_invoice_supplier_internal_SALESREPFOLL=Representative following-up supplier invoice +TypeContact_invoice_supplier_external_BILLING=Supplier invoice contact +TypeContact_invoice_supplier_external_SHIPPING=Supplier shipping contact +TypeContact_invoice_supplier_external_SERVICE=Supplier service contact +# Situation invoices +InvoiceFirstSituationAsk=First situation invoice +InvoiceFirstSituationDesc=The situation invoices are tied to situations related to a progression, for example the progression of a construction. Each situation is tied to an invoice. +InvoiceSituation=Situation invoice +InvoiceSituationAsk=Invoice following the situation +InvoiceSituationDesc=Create a new situation following an already existing one +SituationAmount=Situation invoice amount(net) +SituationDeduction=Situation subtraction +Progress=Progress +ModifyAllLines=Modify all lines +CreateNextSituationInvoice=Create next situation +NotLastInCycle=This invoice in not the last in cycle and must not be modified. +DisabledBecauseNotLastInCycle=The next situation already exists. +DisabledBecauseFinal=This situation is final. +CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation. +NoSituations=No opened situations +InvoiceSituationLast=Final and general invoice diff --git a/htdocs/langs/sw_SW/bookmarks.lang b/htdocs/langs/sw_SW/bookmarks.lang new file mode 100644 index 00000000000..7acb946bb62 --- /dev/null +++ b/htdocs/langs/sw_SW/bookmarks.lang @@ -0,0 +1,19 @@ +# Dolibarr language file - Source file is en_US - marque pages +AddThisPageToBookmarks=Add this page to bookmarks +Bookmark=Bookmark +Bookmarks=Bookmarks +NewBookmark=New bookmark +ShowBookmark=Show bookmark +OpenANewWindow=Open a new window +ReplaceWindow=Replace current window +BookmarkTargetNewWindowShort=New window +BookmarkTargetReplaceWindowShort=Current window +BookmarkTitle=Bookmark title +UrlOrLink=URL +BehaviourOnClick=Behaviour when a URL is clicked +CreateBookmark=Create bookmark +SetHereATitleForLink=Set a title for the bookmark +UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external http URL or a relative Dolibarr URL +ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choose if a page opened by link must appear on current or new window +BookmarksManagement=Bookmarks management +ListOfBookmarks=List of bookmarks diff --git a/htdocs/langs/sw_SW/boxes.lang b/htdocs/langs/sw_SW/boxes.lang new file mode 100644 index 00000000000..bf118b9b88e --- /dev/null +++ b/htdocs/langs/sw_SW/boxes.lang @@ -0,0 +1,96 @@ +# Dolibarr language file - Source file is en_US - boxes +BoxLastRssInfos=Rss information +BoxLastProducts=Last %s products/services +BoxProductsAlertStock=Products in stock alert +BoxLastProductsInContract=Last %s contracted products/services +BoxLastSupplierBills=Last supplier's invoices +BoxLastCustomerBills=Last customer's invoices +BoxOldestUnpaidCustomerBills=Oldest unpaid customer's invoices +BoxOldestUnpaidSupplierBills=Oldest unpaid supplier's invoices +BoxLastProposals=Last commercial proposals +BoxLastProspects=Last modified prospects +BoxLastCustomers=Last modified customers +BoxLastSuppliers=Last modified suppliers +BoxLastCustomerOrders=Last customer orders +BoxLastValidatedCustomerOrders=Last validated customer orders +BoxLastBooks=Last books +BoxLastActions=Last actions +BoxLastContracts=Last contracts +BoxLastContacts=Last contacts/addresses +BoxLastMembers=Last members +BoxFicheInter=Last interventions +BoxCurrentAccounts=Opened accounts balance +BoxSalesTurnover=Sales turnover +BoxTotalUnpaidCustomerBills=Total unpaid customer's invoices +BoxTotalUnpaidSuppliersBills=Total unpaid supplier's invoices +BoxTitleLastBooks=Last %s recorded books +BoxTitleNbOfCustomers=Number of clients +BoxTitleLastRssInfos=Last %s news from %s +BoxTitleLastProducts=Last %s modified products/services +BoxTitleProductsAlertStock=Products in stock alert +BoxTitleLastCustomerOrders=Last %s customer orders +BoxTitleLastModifiedCustomerOrders=Last %s modified customer orders +BoxTitleLastSuppliers=Last %s recorded suppliers +BoxTitleLastCustomers=Last %s recorded customers +BoxTitleLastModifiedSuppliers=Last %s modified suppliers +BoxTitleLastModifiedCustomers=Last %s modified customers +BoxTitleLastCustomersOrProspects=Last %s customers or prospects +BoxTitleLastPropals=Last %s proposals +BoxTitleLastModifiedPropals=Last %s modified proposals +BoxTitleLastCustomerBills=Last %s customer's invoices +BoxTitleLastModifiedCustomerBills=Last %s modified customer invoices +BoxTitleLastSupplierBills=Last %s supplier's invoices +BoxTitleLastModifiedSupplierBills=Last %s modified supplier invoices +BoxTitleLastModifiedProspects=Last %s modified prospects +BoxTitleLastProductsInContract=Last %s products/services in a contract +BoxTitleLastModifiedMembers=Last %s members +BoxTitleLastFicheInter=Last %s modified intervention +BoxTitleOldestUnpaidCustomerBills=Oldest %s unpaid customer invoices +BoxTitleOldestUnpaidSupplierBills=Oldest %s unpaid supplier invoices +BoxTitleCurrentAccounts=Opened account's balances +BoxTitleSalesTurnover=Sales turnover +BoxTitleTotalUnpaidCustomerBills=Unpaid customer invoices +BoxTitleTotalUnpaidSuppliersBills=Unpaid supplier invoices +BoxTitleLastModifiedContacts=Last %s modified contacts/addresses +BoxMyLastBookmarks=My last %s bookmarks +BoxOldestExpiredServices=Oldest active expired services +BoxLastExpiredServices=Last %s oldest contacts with active expired services +BoxTitleLastActionsToDo=Last %s actions to do +BoxTitleLastContracts=Last %s contracts +BoxTitleLastModifiedDonations=Last %s modified donations +BoxTitleLastModifiedExpenses=Last %s modified expenses +BoxGlobalActivity=Global activity (invoices, proposals, orders) +FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Last successfull refresh date: %s +LastRefreshDate=Last refresh date +NoRecordedBookmarks=No bookmarks defined. +ClickToAdd=Click here to add. +NoRecordedCustomers=No recorded customers +NoRecordedContacts=No recorded contacts +NoActionsToDo=No actions to do +NoRecordedOrders=No recorded customer's orders +NoRecordedProposals=No recorded proposals +NoRecordedInvoices=No recorded customer's invoices +NoUnpaidCustomerBills=No unpaid customer's invoices +NoRecordedSupplierInvoices=No recorded supplier's invoices +NoUnpaidSupplierBills=No unpaid supplier's invoices +NoModifiedSupplierBills=No recorded supplier's invoices +NoRecordedProducts=No recorded products/services +NoRecordedProspects=No recorded prospects +NoContractedProducts=No products/services contracted +NoRecordedContracts=No recorded contracts +NoRecordedInterventions=No recorded interventions +BoxLatestSupplierOrders=Latest supplier orders +BoxTitleLatestSupplierOrders=Last %s supplier orders +BoxTitleLatestModifiedSupplierOrders=Last %s modified supplier orders +NoSupplierOrder=No recorded supplier order +BoxCustomersInvoicesPerMonth=Customer invoices per month +BoxSuppliersInvoicesPerMonth=Supplier invoices per month +BoxCustomersOrdersPerMonth=Customer orders per month +BoxSuppliersOrdersPerMonth=Supplier orders per month +BoxProposalsPerMonth=Proposals per month +NoTooLowStockProducts=No product under the low stock limit +BoxProductDistribution=Products/Services distribution +BoxProductDistributionFor=Distribution of %s for %s +ForCustomersInvoices=Customers invoices +ForCustomersOrders=Customers orders +ForProposals=Proposals diff --git a/htdocs/langs/sw_SW/cashdesk.lang b/htdocs/langs/sw_SW/cashdesk.lang new file mode 100644 index 00000000000..d3dcfb68e64 --- /dev/null +++ b/htdocs/langs/sw_SW/cashdesk.lang @@ -0,0 +1,40 @@ +# Language file - Source file is en_US - cashdesk +CashDeskMenu=Point of sale +CashDesk=Point of sale +CashDesks=Point of sales +CashDeskBank=Bank account +CashDeskBankCash=Bank account (cash) +CashDeskBankCB=Bank account (card) +CashDeskBankCheque=Bank account (cheque) +CashDeskWarehouse=Warehouse +CashdeskShowServices=Selling services +CashDeskProducts=Products +CashDeskStock=Stock +CashDeskOn=on +CashDeskThirdParty=Third party +CashdeskDashboard=Point of sale access +ShoppingCart=Shopping cart +NewSell=New sell +BackOffice=Back office +AddThisArticle=Add this article +RestartSelling=Go back on sell +SellFinished=Sell finished +PrintTicket=Print ticket +NoProductFound=No article found +ProductFound=product found +ProductsFound=products found +NoArticle=No article +Identification=Identification +Article=Article +Difference=Difference +TotalTicket=Total ticket +NoVAT=No VAT for this sale +Change=Excess received +CalTip=Click to view the calendar +CashDeskSetupStock=You ask to decrease stock on invoice creation but warehouse for this is was not defined
Change stock module setup, or choose a warehouse +BankToPay=Charge Account +ShowCompany=Show company +ShowStock=Show warehouse +DeleteArticle=Click to remove this article +FilterRefOrLabelOrBC=Search (Ref/Label) +UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock. diff --git a/htdocs/langs/sw_SW/categories.lang b/htdocs/langs/sw_SW/categories.lang new file mode 100644 index 00000000000..22914931db1 --- /dev/null +++ b/htdocs/langs/sw_SW/categories.lang @@ -0,0 +1,112 @@ +# Dolibarr language file - Source file is en_US - categories +Category=Category +Categories=Categories +Rubrique=Category +Rubriques=Categories +categories=categories +TheCategorie=The category +NoCategoryYet=No category of this type created +In=In +AddIn=Add in +modify=modify +Classify=Classify +CategoriesArea=Categories area +ProductsCategoriesArea=Products/Services categories area +SuppliersCategoriesArea=Suppliers categories area +CustomersCategoriesArea=Customers categories area +ThirdPartyCategoriesArea=Third parties categories area +MembersCategoriesArea=Members categories area +ContactsCategoriesArea=Contacts categories area +MainCats=Main categories +SubCats=Subcategories +CatStatistics=Statistics +CatList=List of categories +AllCats=All categories +ViewCat=View category +NewCat=Add category +NewCategory=New category +ModifCat=Modify category +CatCreated=Category created +CreateCat=Create category +CreateThisCat=Create this category +ValidateFields=Validate the fields +NoSubCat=No subcategory. +SubCatOf=Subcategory +FoundCats=Found categories +FoundCatsForName=Categories found for the name : +FoundSubCatsIn=Subcategories found in the category +ErrSameCatSelected=You selected the same category several times +ErrForgotCat=You forgot to choose the category +ErrForgotField=You forgot to inform the fields +ErrCatAlreadyExists=This name is already used +AddProductToCat=Add this product to a category? +ImpossibleAddCat=Impossible to add the category +ImpossibleAssociateCategory=Impossible to associate the category to +WasAddedSuccessfully=%s was added successfully. +ObjectAlreadyLinkedToCategory=Element is already linked to this category. +CategorySuccessfullyCreated=This category %s has been added with success. +ProductIsInCategories=Product/service owns to following categories +SupplierIsInCategories=Third party owns to following suppliers categories +CompanyIsInCustomersCategories=This third party owns to following customers/prospects categories +CompanyIsInSuppliersCategories=This third party owns to following suppliers categories +MemberIsInCategories=This member owns to following members categories +ContactIsInCategories=This contact owns to following contacts categories +ProductHasNoCategory=This product/service is not in any categories +SupplierHasNoCategory=This supplier is not in any categories +CompanyHasNoCategory=This company is not in any categories +MemberHasNoCategory=This member is not in any categories +ContactHasNoCategory=This contact is not in any categories +ClassifyInCategory=Classify in category +NoneCategory=None +NotCategorized=Without category +CategoryExistsAtSameLevel=This category already exists with this ref +ReturnInProduct=Back to product/service card +ReturnInSupplier=Back to supplier card +ReturnInCompany=Back to customer/prospect card +ContentsVisibleByAll=The contents will be visible by all +ContentsVisibleByAllShort=Contents visible by all +ContentsNotVisibleByAllShort=Contents not visible by all +CategoriesTree=Categories tree +DeleteCategory=Delete category +ConfirmDeleteCategory=Are you sure you want to delete this category ? +RemoveFromCategory=Remove link with categorie +RemoveFromCategoryConfirm=Are you sure you want to remove link between the transaction and the category ? +NoCategoriesDefined=No category defined +SuppliersCategoryShort=Suppliers category +CustomersCategoryShort=Customers category +ProductsCategoryShort=Products category +MembersCategoryShort=Members category +SuppliersCategoriesShort=Suppliers categories +CustomersCategoriesShort=Customers categories +CustomersProspectsCategoriesShort=Custo./Prosp. categories +ProductsCategoriesShort=Products categories +MembersCategoriesShort=Members categories +ContactCategoriesShort=Contacts categories +ThisCategoryHasNoProduct=This category does not contain any product. +ThisCategoryHasNoSupplier=This category does not contain any supplier. +ThisCategoryHasNoCustomer=This category does not contain any customer. +ThisCategoryHasNoMember=This category does not contain any member. +ThisCategoryHasNoContact=This category does not contain any contact. +AssignedToCustomer=Assigned to a customer +AssignedToTheCustomer=Assigned to the customer +InternalCategory=Internal category +CategoryContents=Category contents +CategId=Category id +CatSupList=List of supplier categories +CatCusList=List of customer/prospect categories +CatProdList=List of products categories +CatMemberList=List of members categories +CatContactList=List of contact categories and contact +CatSupLinks=Links between suppliers and categories +CatCusLinks=Links between customers/prospects and categories +CatProdLinks=Links between products/services and categories +CatMemberLinks=Links between members and categories +DeleteFromCat=Remove from category +DeletePicture=Picture delete +ConfirmDeletePicture=Confirm picture deletion? +ExtraFieldsCategories=Complementary attributes +CategoriesSetup=Categories setup +CategorieRecursiv=Link with parent category automatically +CategorieRecursivHelp=If activated, product will also linked to parent category when adding into a subcategory +AddProductServiceIntoCategory=Add the following product/service +ShowCategory=Show category diff --git a/htdocs/langs/sw_SW/commercial.lang b/htdocs/langs/sw_SW/commercial.lang new file mode 100644 index 00000000000..7acdc7bd7e6 --- /dev/null +++ b/htdocs/langs/sw_SW/commercial.lang @@ -0,0 +1,96 @@ +# Dolibarr language file - Source file is en_US - commercial +Commercial=Commercial +CommercialArea=Commercial area +CommercialCard=Commercial card +CustomerArea=Customers area +Customer=Customer +Customers=Customers +Prospect=Prospect +Prospects=Prospects +DeleteAction=Delete an event/task +NewAction=New event/task +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event +Rendez-Vous=Rendezvous +ConfirmDeleteAction=Are you sure you want to delete this event/task ? +CardAction=Event card +PercentDone=Percentage complete +ActionOnCompany=Task about company +ActionOnContact=Task about contact +TaskRDV=Meetings +TaskRDVWith=Meeting with %s +ShowTask=Show task +ShowAction=Show event +ActionsReport=Events report +ThirdPartiesOfSaleRepresentative=Thirdparties with sales representative +SalesRepresentative=Sales representative +SalesRepresentatives=Sales representatives +SalesRepresentativeFollowUp=Sales representative (follow-up) +SalesRepresentativeSignature=Sales representative (signature) +CommercialInterlocutor=Commercial interlocutor +ErrorWrongCode=Wrong code +NoSalesRepresentativeAffected=No particular sales representative assigned +ShowCustomer=Show customer +ShowProspect=Show prospect +ListOfProspects=List of prospects +ListOfCustomers=List of customers +LastDoneTasks=Last %s completed tasks +LastRecordedTasks=Last recorded tasks +LastActionsToDo=Last %s oldest actions not completed +DoneAndToDoActionsFor=Completed and To do events for %s +DoneAndToDoActions=Completed and To do events +DoneActions=Completed events +DoneActionsFor=Completed events for %s +ToDoActions=Incomplete events +ToDoActionsFor=Incomplete events for %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s +StatusNotApplicable=Not applicable +StatusActionToDo=To do +StatusActionDone=Complete +MyActionsAsked=Events I have recorded +MyActionsToDo=Events I have to do +MyActionsDone=Events assigned to me +StatusActionInProcess=In process +TasksHistoryForThisContact=Events for this contact +LastProspectDoNotContact=Do not contact +LastProspectNeverContacted=Never contacted +LastProspectToContact=To contact +LastProspectContactInProcess=Contact in process +LastProspectContactDone=Contact done +DateActionPlanned=Date event planned for +DateActionDone=Date event done +ActionAskedBy=Event reported by +ActionAffectedTo=Event assigned to +ActionDoneBy=Event done by +ActionUserAsk=Reported by +ErrorStatusCantBeZeroIfStarted=If field 'Date done' is filled, action is started (or finished), so field 'Status' can't be 0%%. +ActionAC_TEL=Phone call +ActionAC_FAX=Send fax +ActionAC_PROP=Send proposal by mail +ActionAC_EMAIL=Send Email +ActionAC_RDV=Meetings +ActionAC_INT=Intervention on site +ActionAC_FAC=Send customer invoice by mail +ActionAC_REL=Send customer invoice by mail (reminder) +ActionAC_CLO=Close +ActionAC_EMAILING=Send mass email +ActionAC_COM=Send customer order by mail +ActionAC_SHIP=Send shipping by mail +ActionAC_SUP_ORD=Send supplier order by mail +ActionAC_SUP_INV=Send supplier invoice by mail +ActionAC_OTH=Other +ActionAC_OTH_AUTO=Other (automatically inserted events) +ActionAC_MANUAL=Manually inserted events +ActionAC_AUTO=Automatically inserted events +Stats=Sales statistics +CAOrder=Sales volume (validated orders) +FromTo=from %s to %s +MargeOrder=Margins (validated orders) +RecapAnnee=Summary of the year +NoData=There is no data +StatusProsp=Prospect status +DraftPropals=Draft commercial proposals +SearchPropal=Search a commercial proposal +CommercialDashboard=Commercial summary diff --git a/htdocs/langs/sw_SW/companies.lang b/htdocs/langs/sw_SW/companies.lang new file mode 100644 index 00000000000..8abf1fd1c5a --- /dev/null +++ b/htdocs/langs/sw_SW/companies.lang @@ -0,0 +1,414 @@ +# Dolibarr language file - Source file is en_US - companies +ErrorCompanyNameAlreadyExists=Company name %s already exists. Choose another one. +ErrorPrefixAlreadyExists=Prefix %s already exists. Choose another one. +ErrorSetACountryFirst=Set the country first +SelectThirdParty=Select a third party +DeleteThirdParty=Delete a third party +ConfirmDeleteCompany=Are you sure you want to delete this company and all inherited information ? +DeleteContact=Delete a contact/address +ConfirmDeleteContact=Are you sure you want to delete this contact and all inherited information ? +MenuNewThirdParty=New third party +MenuNewCompany=New company +MenuNewCustomer=New customer +MenuNewProspect=New prospect +MenuNewSupplier=New supplier +MenuNewPrivateIndividual=New private individual +MenuSocGroup=Groups +NewCompany=New company (prospect, customer, supplier) +NewThirdParty=New third party (prospect, customer, supplier) +NewSocGroup=New company group +NewPrivateIndividual=New private individual (prospect, customer, supplier) +CreateDolibarrThirdPartySupplier=Create a third party (supplier) +ProspectionArea=Prospection area +SocGroup=Group of companies +IdThirdParty=Id third party +IdCompany=Company Id +IdContact=Contact Id +Contacts=Contacts/Addresses +ThirdPartyContacts=Third party contacts +ThirdPartyContact=Third party contact/address +StatusContactValidated=Status of contact/address +Company=Company +CompanyName=Company name +Companies=Companies +CountryIsInEEC=Country is inside European Economic Community +ThirdPartyName=Third party name +ThirdParty=Third party +ThirdParties=Third parties +ThirdPartyAll=Third parties (all) +ThirdPartyProspects=Prospects +ThirdPartyProspectsStats=Prospects +ThirdPartyCustomers=Customers +ThirdPartyCustomersStats=Customers +ThirdPartyCustomersWithIdProf12=Customers with %s or %s +ThirdPartySuppliers=Suppliers +ThirdPartyType=Third party type +Company/Fundation=Company/Foundation +Individual=Private individual +ToCreateContactWithSameName=Will create automatically a physical contact with same informations +ParentCompany=Parent company +Subsidiary=Subsidiary +Subsidiaries=Subsidiaries +NoSubsidiary=No subsidiary +ReportByCustomers=Report by customers +ReportByQuarter=Report by rate +CivilityCode=Civility code +RegisteredOffice=Registered office +Name=Name +Lastname=Last name +Firstname=First name +PostOrFunction=Post/Function +UserTitle=Title +Surname=Surname/Pseudo +Address=Address +State=State/Province +Region=Region +Country=Country +CountryCode=Country code +CountryId=Country id +Phone=Phone +Skype=Skype +Call=Call +Chat=Chat +PhonePro=Prof. phone +PhonePerso=Pers. phone +PhoneMobile=Mobile +No_Email=Don't send mass e-mailings +Fax=Fax +Zip=Zip Code +Town=City +Web=Web +Poste= Position +DefaultLang=Language by default +VATIsUsed=VAT is used +VATIsNotUsed=VAT is not used +CopyAddressFromSoc=Fill address with thirdparty address +NoEmailDefined=There is no email defined +##### Local Taxes ##### +LocalTax1IsUsedES= RE is used +LocalTax1IsNotUsedES= RE is not used +LocalTax2IsUsedES= IRPF is used +LocalTax2IsNotUsedES= IRPF is not used +LocalTax1ES=RE +LocalTax2ES=IRPF +TypeLocaltax1ES=RE Type +TypeLocaltax2ES=IRPF Type +TypeES=Type +ThirdPartyEMail=%s +WrongCustomerCode=Customer code invalid +WrongSupplierCode=Supplier code invalid +CustomerCodeModel=Customer code model +SupplierCodeModel=Supplier code model +Gencod=Bar code +##### Professional ID ##### +ProfId1Short=Prof. id 1 +ProfId2Short=Prof. id 2 +ProfId3Short=Prof. id 3 +ProfId4Short=Prof. id 4 +ProfId5Short=Prof. id 5 +ProfId6Short=Prof. id 5 +ProfId1=Professional ID 1 +ProfId2=Professional ID 2 +ProfId3=Professional ID 3 +ProfId4=Professional ID 4 +ProfId5=Professional ID 5 +ProfId6=Professional ID 6 +ProfId1AR=Prof Id 1 (CUIT/CUIL) +ProfId2AR=Prof Id 2 (Revenu brutes) +ProfId3AR=- +ProfId4AR=- +ProfId5AR=- +ProfId6AR=- +ProfId1AU=Prof Id 1 (ABN) +ProfId2AU=- +ProfId3AU=- +ProfId4AU=- +ProfId5AU=- +ProfId6AU=- +ProfId1BE=Prof Id 1 (Professional number) +ProfId2BE=- +ProfId3BE=- +ProfId4BE=- +ProfId5BE=- +ProfId6BE=- +ProfId1BR=- +ProfId2BR=IE (Inscricao Estadual) +ProfId3BR=IM (Inscricao Municipal) +ProfId4BR=CPF +#ProfId5BR=CNAE +#ProfId6BR=INSS +ProfId1CH=- +ProfId2CH=- +ProfId3CH=Prof Id 1 (Federal number) +ProfId4CH=Prof Id 2 (Commercial Record number) +ProfId5CH=- +ProfId6CH=- +ProfId1CL=Prof Id 1 (R.U.T.) +ProfId2CL=- +ProfId3CL=- +ProfId4CL=- +ProfId5CL=- +ProfId6CL=- +ProfId1CO=Prof Id 1 (R.U.T.) +ProfId2CO=- +ProfId3CO=- +ProfId4CO=- +ProfId5CO=- +ProfId6CO=- +ProfId1DE=Prof Id 1 (USt.-IdNr) +ProfId2DE=Prof Id 2 (USt.-Nr) +ProfId3DE=Prof Id 3 (Handelsregister-Nr.) +ProfId4DE=- +ProfId5DE=- +ProfId6DE=- +ProfId1ES=Prof Id 1 (CIF/NIF) +ProfId2ES=Prof Id 2 (Social security number) +ProfId3ES=Prof Id 3 (CNAE) +ProfId4ES=Prof Id 4 (Collegiate number) +ProfId5ES=- +ProfId6ES=- +ProfId1FR=Prof Id 1 (SIREN) +ProfId2FR=Prof Id 2 (SIRET) +ProfId3FR=Prof Id 3 (NAF, old APE) +ProfId4FR=Prof Id 4 (RCS/RM) +ProfId5FR=- +ProfId6FR=- +ProfId1GB=Registration Number +ProfId2GB=- +ProfId3GB=SIC +ProfId4GB=- +ProfId5GB=- +ProfId6GB=- +ProfId1HN=Id prof. 1 (RTN) +ProfId2HN=- +ProfId3HN=- +ProfId4HN=- +ProfId5HN=- +ProfId6HN=- +ProfId1IN=Prof Id 1 (TIN) +ProfId2IN=Prof Id 2 (PAN) +ProfId3IN=Prof Id 3 (SRVC TAX) +ProfId4IN=Prof Id 4 +ProfId5IN=Prof Id 5 +ProfId6IN=- +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.) +ProfId5MA=- +ProfId6MA=- +ProfId1MX=Prof Id 1 (R.F.C). +ProfId2MX=Prof Id 2 (R..P. IMSS) +ProfId3MX=Prof Id 3 (Profesional Charter) +ProfId4MX=- +ProfId5MX=- +ProfId6MX=- +ProfId1NL=KVK nummer +ProfId2NL=- +ProfId3NL=- +ProfId4NL=Burgerservicenummer (BSN) +ProfId5NL=- +ProfId6NL=- +ProfId1PT=Prof Id 1 (NIPC) +ProfId2PT=Prof Id 2 (Social security number) +ProfId3PT=Prof Id 3 (Commercial Record number) +ProfId4PT=Prof Id 4 (Conservatory) +ProfId5PT=- +ProfId6PT=- +ProfId1SN=RC +ProfId2SN=NINEA +ProfId3SN=- +ProfId4SN=- +ProfId5SN=- +ProfId6SN=- +ProfId1TN=Prof Id 1 (RC) +ProfId2TN=Prof Id 2 (Fiscal matricule) +ProfId3TN=Prof Id 3 (Douane code) +ProfId4TN=Prof Id 4 (BAN) +ProfId5TN=- +ProfId6TN=- +ProfId1RU=Prof Id 1 (OGRN) +ProfId2RU=Prof Id 2 (INN) +ProfId3RU=Prof Id 3 (KPP) +ProfId4RU=Prof Id 4 (OKPO) +ProfId5RU=- +ProfId6RU=- +VATIntra=VAT number +VATIntraShort=VAT number +VATIntraVeryShort=VAT +VATIntraSyntaxIsValid=Syntax is valid +VATIntraValueIsValid=Value is valid +ProspectCustomer=Prospect / Customer +Prospect=Prospect +CustomerCard=Customer Card +Customer=Customer +CustomerDiscount=Customer Discount +CustomerRelativeDiscount=Relative customer discount +CustomerAbsoluteDiscount=Absolute customer discount +CustomerRelativeDiscountShort=Relative discount +CustomerAbsoluteDiscountShort=Absolute discount +CompanyHasRelativeDiscount=This customer has a default discount of %s%% +CompanyHasNoRelativeDiscount=This customer has no relative discount by default +CompanyHasAbsoluteDiscount=This customer still has discount credits or deposits for %s %s +CompanyHasCreditNote=This customer still has credit notes for %s %s +CompanyHasNoAbsoluteDiscount=This customer has no discount credit available +CustomerAbsoluteDiscountAllUsers=Absolute discounts (granted by all users) +CustomerAbsoluteDiscountMy=Absolute discounts (granted by yourself) +DefaultDiscount=Default discount +AvailableGlobalDiscounts=Absolute discounts available +DiscountNone=None +Supplier=Supplier +CompanyList=Company's list +AddContact=Create contact +AddContactAddress=Create contact/address +EditContact=Edit contact +EditContactAddress=Edit contact/address +Contact=Contact +ContactsAddresses=Contacts/Addresses +NoContactDefinedForThirdParty=No contact defined for this third party +NoContactDefined=No contact defined +DefaultContact=Default contact/address +AddCompany=Create company +AddThirdParty=Create third party +DeleteACompany=Delete a company +PersonalInformations=Personal data +AccountancyCode=Accountancy code +CustomerCode=Customer code +SupplierCode=Supplier code +CustomerAccount=Customer account +SupplierAccount=Supplier account +CustomerCodeDesc=Customer code, unique for all customers +SupplierCodeDesc=Supplier code, unique for all suppliers +RequiredIfCustomer=Required if third party is a customer or prospect +RequiredIfSupplier=Required if third party is a supplier +ValidityControledByModule=Validity controled by module +ThisIsModuleRules=This is rules for this module +LastProspect=Last +ProspectToContact=Prospect to contact +CompanyDeleted=Company "%s" deleted from database. +ListOfContacts=List of contacts/addresses +ListOfContactsAddresses=List of contacts/adresses +ListOfProspectsContacts=List of prospect contacts +ListOfCustomersContacts=List of customer contacts +ListOfSuppliersContacts=List of supplier contacts +ListOfCompanies=List of companies +ListOfThirdParties=List of third parties +ShowCompany=Show company +ShowContact=Show contact +ContactsAllShort=All (No filter) +ContactType=Contact type +ContactForOrders=Order's contact +ContactForProposals=Proposal's contact +ContactForContracts=Contract's contact +ContactForInvoices=Invoice's contact +NoContactForAnyOrder=This contact is not a contact for any order +NoContactForAnyProposal=This contact is not a contact for any commercial proposal +NoContactForAnyContract=This contact is not a contact for any contract +NoContactForAnyInvoice=This contact is not a contact for any invoice +NewContact=New contact +NewContactAddress=New contact/address +LastContacts=Last contacts +MyContacts=My contacts +Phones=Phones +Capital=Capital +CapitalOf=Capital of %s +EditCompany=Edit company +EditDeliveryAddress=Edit delivery address +ThisUserIsNot=This user is not a prospect, customer nor supplier +VATIntraCheck=Check +VATIntraCheckDesc=The link %s allows to ask the european VAT checker service. An external internet access from server is required for this service to work. +VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do +VATIntraCheckableOnEUSite=Check Intracomunnautary VAT on European commision site +VATIntraManualCheck=You can also check manually from european web site %s +ErrorVATCheckMS_UNAVAILABLE=Check not possible. Check service is not provided by the member state (%s). +NorProspectNorCustomer=Nor prospect, nor customer +JuridicalStatus=Juridical status +Staff=Staff +ProspectLevelShort=Potential +ProspectLevel=Prospect potential +ContactPrivate=Private +ContactPublic=Shared +ContactVisibility=Visibility +OthersNotLinkedToThirdParty=Others, not linked to a third party +ProspectStatus=Prospect status +PL_NONE=None +PL_UNKNOWN=Unknown +PL_LOW=Low +PL_MEDIUM=Medium +PL_HIGH=High +TE_UNKNOWN=- +TE_STARTUP=Startup +TE_GROUP=Large company +TE_MEDIUM=Medium company +TE_ADMIN=Governmental +TE_SMALL=Small company +TE_RETAIL=Retailer +TE_WHOLE=Wholetailer +TE_PRIVATE=Private individual +TE_OTHER=Other +StatusProspect-1=Do not contact +StatusProspect0=Never contacted +StatusProspect1=To contact +StatusProspect2=Contact in process +StatusProspect3=Contact done +ChangeDoNotContact=Change status to 'Do not contact' +ChangeNeverContacted=Change status to 'Never contacted' +ChangeToContact=Change status to 'To contact' +ChangeContactInProcess=Change status to 'Contact in process' +ChangeContactDone=Change status to 'Contact done' +ProspectsByStatus=Prospects by status +BillingContact=Billing contact +NbOfAttachedFiles=Number of attached files +AttachANewFile=Attach a new file +NoRIB=No BAN defined +NoParentCompany=None +ExportImport=Import-Export +ExportCardToFormat=Export card to format +ContactNotLinkedToCompany=Contact not linked to any third party +DolibarrLogin=Dolibarr login +NoDolibarrAccess=No Dolibarr access +ExportDataset_company_1=Third parties (Companies/foundations/physical people) and properties +ExportDataset_company_2=Contacts and properties +ImportDataset_company_1=Third parties (Companies/foundations/physical people) and properties +ImportDataset_company_2=Contacts/Addresses (of thirdparties or not) and attributes +ImportDataset_company_3=Bank details +PriceLevel=Price level +DeliveriesAddress=Delivery addresses +DeliveryAddress=Delivery address +DeliveryAddressLabel=Delivery address label +DeleteDeliveryAddress=Delete a delivery address +ConfirmDeleteDeliveryAddress=Are you sure you want to delete this delivery address? +NewDeliveryAddress=New delivery address +AddDeliveryAddress=Create address +AddAddress=Create address +NoOtherDeliveryAddress=No alternative delivery address defined +SupplierCategory=Supplier category +JuridicalStatus200=Independant +DeleteFile=Delete file +ConfirmDeleteFile=Are you sure you want to delete this file? +AllocateCommercial=Assigned to sale representative +SelectCountry=Select a country +SelectCompany=Select a third party +Organization=Organization +AutomaticallyGenerated=Automatically generated +FiscalYearInformation=Information on the fiscal year +FiscalMonthStart=Starting month of the fiscal year +YouMustCreateContactFirst=You must create emails contacts for third party first to be able to add emails notifications. +ListSuppliersShort=List of suppliers +ListProspectsShort=List of prospects +ListCustomersShort=List of customers +ThirdPartiesArea=Third parties and contact area +LastModifiedThirdParties=Last %s modified third parties +UniqueThirdParties=Total of unique third parties +InActivity=Open +ActivityCeased=Closed +ActivityStateFilter=Activity status +ProductsIntoElements=List of products into %s +CurrentOutstandingBill=Current outstanding bill +OutstandingBill=Max. for outstanding bill +OutstandingBillReached=Reached max. for outstanding bill +MonkeyNumRefModelDesc=Return numero with format %syymm-nnnn for customer code and %syymm-nnnn for supplier code where yy is year, mm is month and nnnn is a sequence with no break and no return to 0. +LeopardNumRefModelDesc=The code is free. This code can be modified at any time. +ManagingDirectors=Manager(s) name (CEO, director, president...) +SearchThirdparty=Search thirdparty +SearchContact=Search contact diff --git a/htdocs/langs/sw_SW/compta.lang b/htdocs/langs/sw_SW/compta.lang new file mode 100644 index 00000000000..0d579a06ff1 --- /dev/null +++ b/htdocs/langs/sw_SW/compta.lang @@ -0,0 +1,207 @@ +# Dolibarr language file - Source file is en_US - compta +Accountancy=Accountancy +AccountancyCard=Accountancy card +Treasury=Treasury +MenuFinancial=Financial +TaxModuleSetupToModifyRules=Go to Taxes module setup to modify rules for calculation +TaxModuleSetupToModifyRulesLT=Go to Company setup to modify rules for calculation +OptionMode=Option for accountancy +OptionModeTrue=Option Incomes-Expenses +OptionModeVirtual=Option Claims-Debts +OptionModeTrueDesc=In this context, the turnover is calculated over payments (date of payments). The validity of the figures is assured only if the book-keeping is scrutinized through the input/output on the accounts via invoices. +OptionModeVirtualDesc=In this context, the turnover is calculated over invoices (date of validation). When these invoices are due, whether they have been paid or not, they are listed in the turnover output. +FeatureIsSupportedInInOutModeOnly=Feature only available in CREDITS-DEBTS accountancy mode (See Accountancy module configuration) +VATReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Tax module setup. +LTReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Company setup. +Param=Setup +RemainingAmountPayment=Amount payment remaining : +AmountToBeCharged=Total amount to pay : +AccountsGeneral=Accounts +Account=Account +Accounts=Accounts +Accountparent=Account parent +Accountsparent=Accounts parent +BillsForSuppliers=Bills for suppliers +Income=Income +Outcome=Expense +ReportInOut=Income / Expense +ReportTurnover=Turnover +PaymentsNotLinkedToInvoice=Payments not linked to any invoice, so not linked to any third party +PaymentsNotLinkedToUser=Payments not linked to any user +Profit=Profit +AccountingResult=Accounting result +Balance=Balance +Debit=Debit +Credit=Credit +Piece=Accounting Doc. +Withdrawal=Withdrawal +Withdrawals=Withdrawals +AmountHTVATRealReceived=Net collected +AmountHTVATRealPaid=Net paid +VATToPay=VAT sells +VATReceived=VAT received +VATToCollect=VAT purchases +VATSummary=VAT Balance +LT2SummaryES=IRPF Balance +LT1SummaryES=RE Balance +VATPaid=VAT paid +SalaryPaid=Salary paid +LT2PaidES=IRPF Paid +LT1PaidES=RE Paid +LT2CustomerES=IRPF sales +LT2SupplierES=IRPF purchases +LT1CustomerES=RE sales +LT1SupplierES=RE purchases +VATCollected=VAT collected +ToPay=To pay +ToGet=To get back +SpecialExpensesArea=Area for all special payments +TaxAndDividendsArea=Tax, social contributions and dividends area +SocialContribution=Social contribution +SocialContributions=Social contributions +MenuSpecialExpenses=Special expenses +MenuTaxAndDividends=Taxes and dividends +MenuSalaries=Salaries +MenuSocialContributions=Social contributions +MenuNewSocialContribution=New contribution +NewSocialContribution=New social contribution +ContributionsToPay=Contributions to pay +AccountancyTreasuryArea=Accountancy/Treasury area +AccountancySetup=Accountancy setup +NewPayment=New payment +Payments=Payments +PaymentCustomerInvoice=Customer invoice payment +PaymentSupplierInvoice=Supplier invoice payment +PaymentSocialContribution=Social contribution payment +PaymentVat=VAT payment +PaymentSalary=Salary payment +ListPayment=List of payments +ListOfPayments=List of payments +ListOfCustomerPayments=List of customer payments +ListOfSupplierPayments=List of supplier payments +DatePayment=Payment date +DateStartPeriod=Date start period +DateEndPeriod=Date end period +NewVATPayment=New VAT payment +newLT2PaymentES=New IRPF payment +newLT1PaymentES=New RE payment +LT2PaymentES=IRPF Payment +LT2PaymentsES=IRPF Payments +LT1PaymentES=RE Payment +LT1PaymentsES=RE Payments +VATPayment=VAT Payment +VATPayments=VAT Payments +SocialContributionsPayments=Social contributions payments +ShowVatPayment=Show VAT payment +TotalToPay=Total to pay +TotalVATReceived=Total VAT received +CustomerAccountancyCode=Customer accountancy code +SupplierAccountancyCode=Supplier accountancy code +AccountNumberShort=Account number +AccountNumber=Account number +NewAccount=New account +SalesTurnover=Sales turnover +SalesTurnoverMinimum=Minimum sales turnover +ByThirdParties=By third parties +ByUserAuthorOfInvoice=By invoice author +AccountancyExport=Accountancy export +ErrorWrongAccountancyCodeForCompany=Bad customer accountancy code for %s +SuppliersProductsSellSalesTurnover=The generated turnover by the sales of supplier's products. +CheckReceipt=Check deposit +CheckReceiptShort=Check deposit +LastCheckReceiptShort=Last %s check receipts +NewCheckReceipt=New discount +NewCheckDeposit=New check deposit +NewCheckDepositOn=Create receipt for deposit on account: %s +NoWaitingChecks=No checks waiting for deposit. +DateChequeReceived=Check reception date +NbOfCheques=Nb of checks +PaySocialContribution=Pay a social contribution +ConfirmPaySocialContribution=Are you sure you want to classify this social contribution as paid? +DeleteSocialContribution=Delete a social contribution +ConfirmDeleteSocialContribution=Are you sure you want to delete this social contribution? +ExportDataset_tax_1=Social contributions and payments +CalcModeVATDebt=Mode %sVAT on commitment accounting%s. +CalcModeVATEngagement=Mode %sVAT on incomes-expenses%s. +CalcModeDebt=Mode %sClaims-Debts%s said Commitment accounting. +CalcModeEngagement=Mode %sIncomes-Expenses%s said cash accounting +CalcModeLT1= Mode %sRE on customer invoices - suppliers invoices%s +CalcModeLT1Debt=Mode %sRE on customer invoices%s +CalcModeLT1Rec= Mode %sRE on suppliers invoices%s +CalcModeLT2= Mode %sIRPF on customer invoices - suppliers invoices%s +CalcModeLT2Debt=Mode %sIRPF on customer invoices%s +CalcModeLT2Rec= Mode %sIRPF on suppliers invoices%s +AnnualSummaryDueDebtMode=Balance of income and expenses, annual summary +AnnualSummaryInputOutputMode=Balance of income and expenses, annual summary +AnnualByCompaniesDueDebtMode=Balance of income and expenses, detail by third parties, mode %sClaims-Debts%s said Commitment accounting. +AnnualByCompaniesInputOutputMode=Balance of income and expenses, detail by third parties, mode %sIncomes-Expenses%s said cash accounting. +SeeReportInInputOutputMode=See report %sIncomes-Expenses%s said cash accounting for a calculation on actual payments made +SeeReportInDueDebtMode=See report %sClaims-Debts%s said commitment accounting for a calculation on issued invoices +RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included +RulesResultDue=- It includes outstanding invoices, expenses and VAT whether they are paid or not.
- It is based on the validation date of invoices and VAT and on the due date for expenses. +RulesResultInOut=- It includes the real payments made on invoices, expenses and VAT.
- It is based on the payment dates of the invoices, expenses and VAT. +RulesCADue=- It includes the client's due invoices whether they are paid or not.
- It is based on the validation date of these invoices.
+RulesCAIn=- It includes all the effective payments of invoices received from clients.
- It is based on the payment date of these invoices
+DepositsAreNotIncluded=- Deposit invoices are nor included +DepositsAreIncluded=- Deposit invoices are included +LT2ReportByCustomersInInputOutputModeES=Report by third party IRPF +LT1ReportByCustomersInInputOutputModeES=Report by third party RE +VATReportByCustomersInInputOutputMode=Report by the customer VAT collected and paid +VATReportByCustomersInDueDebtMode=Report by the customer VAT collected and paid +VATReportByQuartersInInputOutputMode=Report by rate of the VAT collected and paid +LT1ReportByQuartersInInputOutputMode=Report by RE rate +LT2ReportByQuartersInInputOutputMode=Report by IRPF rate +VATReportByQuartersInDueDebtMode=Report by rate of the VAT collected and paid +LT1ReportByQuartersInDueDebtMode=Report by RE rate +LT2ReportByQuartersInDueDebtMode=Report by IRPF rate +SeeVATReportInInputOutputMode=See report %sVAT encasement%s for a standard calculation +SeeVATReportInDueDebtMode=See report %sVAT on flow%s for a calculation with an option on the flow +RulesVATInServices=- For services, the report includes the VAT regulations actually received or issued on the basis of the date of payment. +RulesVATInProducts=- For material assets, it includes the VAT invoices on the basis of the invoice date. +RulesVATDueServices=- For services, the report includes VAT invoices due, paid or not, based on the invoice date. +RulesVATDueProducts=- For material assets, it includes the VAT invoices, based on the invoice date. +OptionVatInfoModuleComptabilite=Note: For material assets, it should use the date of delivery to be more fair. +PercentOfInvoice=%%/invoice +NotUsedForGoods=Not used on goods +ProposalStats=Statistics on proposals +OrderStats=Statistics on orders +InvoiceStats=Statistics on bills +Dispatch=Dispatching +Dispatched=Dispatched +ToDispatch=To dispatch +ThirdPartyMustBeEditAsCustomer=Third party must be defined as a customer +SellsJournal=Sales Journal +PurchasesJournal=Purchases Journal +DescSellsJournal=Sales Journal +DescPurchasesJournal=Purchases Journal +InvoiceRef=Invoice ref. +CodeNotDef=Not defined +AddRemind=Dispatch available amount +RemainToDivide= Remain to dispatch : +WarningDepositsNotIncluded=Deposits invoices are not included in this version with this accountancy module. +DatePaymentTermCantBeLowerThanObjectDate=Payment term date can't be lower than object date. +Pcg_version=Pcg version +Pcg_type=Pcg type +Pcg_subtype=Pcg subtype +InvoiceLinesToDispatch=Invoice lines to dispatch +InvoiceDispatched=Dispatched invoices +AccountancyDashboard=Accountancy summary +ByProductsAndServices=By products and services +RefExt=External ref +ToCreateAPredefinedInvoice=To create a predefined invoice, create a standard invoice then, without validating it, click onto button "Convert to predefined invoice". +LinkedOrder=Link to order +ReCalculate=Recalculate +Mode1=Method 1 +Mode2=Method 2 +CalculationRuleDesc=To calculate total VAT, there is two methods:
Method 1 is rounding vat on each line, then summing them.
Method 2 is summing all vat on each line, then rounding result.
Final result may differs from few cents. Default mode is mode %s. +CalculationRuleDescSupplier=according to supplier, choose appropriate method to apply same calculation rule and get same result expected by your supplier. +TurnoverPerProductInCommitmentAccountingNotRelevant=Turnover report per product, when using a cash accountancy mode is not relevant. This report is only available when using engagement accountancy mode (see setup of accountancy module). +CalculationMode=Calculation mode +AccountancyJournal=Accountancy code journal +ACCOUNTING_VAT_ACCOUNT=Default accountancy code for collecting VAT +ACCOUNTING_VAT_BUY_ACCOUNT=Default accountancy code for paying VAT +ACCOUNTING_ACCOUNT_CUSTOMER=Accountancy code by default for customer thirdparties +ACCOUNTING_ACCOUNT_SUPPLIER=Accountancy code by default for supplier thirdparties +CloneTax=Clone a social contribution +ConfirmCloneTax=Confirm the clone of a social contribution +CloneTaxForNextMonth=Clone it for next month diff --git a/htdocs/langs/sw_SW/contracts.lang b/htdocs/langs/sw_SW/contracts.lang new file mode 100644 index 00000000000..d1be0e6513f --- /dev/null +++ b/htdocs/langs/sw_SW/contracts.lang @@ -0,0 +1,103 @@ +# Dolibarr language file - Source file is en_US - contracts +ContractsArea=Contracts area +ListOfContracts=List of contracts +LastModifiedContracts=Last %s modified contracts +AllContracts=All contracts +ContractCard=Contract card +ContractStatus=Contract status +ContractStatusNotRunning=Not running +ContractStatusRunning=Running +ContractStatusDraft=Draft +ContractStatusValidated=Validated +ContractStatusClosed=Closed +ServiceStatusInitial=Not running +ServiceStatusRunning=Running +ServiceStatusNotLate=Running, not expired +ServiceStatusNotLateShort=Not expired +ServiceStatusLate=Running, expired +ServiceStatusLateShort=Expired +ServiceStatusClosed=Closed +ServicesLegend=Services legend +Contracts=Contracts +ContractsAndLine=Contracts and line of contracts +Contract=Contract +NoContracts=No contracts +MenuServices=Services +MenuInactiveServices=Services not active +MenuRunningServices=Running services +MenuExpiredServices=Expired services +MenuClosedServices=Closed services +NewContract=New contract +AddContract=Create contract +SearchAContract=Search a contract +DeleteAContract=Delete a contract +CloseAContract=Close a contract +ConfirmDeleteAContract=Are you sure you want to delete this contract and all its services ? +ConfirmValidateContract=Are you sure you want to validate this contract under name %s ? +ConfirmCloseContract=This will close all services (active or not). Are you sure you want to close this contract ? +ConfirmCloseService=Are you sure you want to close this service with date %s ? +ValidateAContract=Validate a contract +ActivateService=Activate service +ConfirmActivateService=Are you sure you want to activate this service with date %s ? +RefContract=Contract reference +DateContract=Contract date +DateServiceActivate=Service activation date +DateServiceUnactivate=Service deactivation date +DateServiceStart=Date for beginning of service +DateServiceEnd=Date for end of service +ShowContract=Show contract +ListOfServices=List of services +ListOfInactiveServices=List of not active services +ListOfExpiredServices=List of expired active services +ListOfClosedServices=List of closed services +ListOfRunningContractsLines=List of running contract lines +ListOfRunningServices=List of running services +NotActivatedServices=Inactive services (among validated contracts) +BoardNotActivatedServices=Services to activate among validated contracts +LastContracts=Last %s contracts +LastActivatedServices=Last %s activated services +LastModifiedServices=Last %s modified services +EditServiceLine=Edit service line +ContractStartDate=Start date +ContractEndDate=End date +DateStartPlanned=Planned start date +DateStartPlannedShort=Planned start date +DateEndPlanned=Planned end date +DateEndPlannedShort=Planned end date +DateStartReal=Real start date +DateStartRealShort=Real start date +DateEndReal=Real end date +DateEndRealShort=Real end date +NbOfServices=Nb of services +CloseService=Close service +ServicesNomberShort=%s service(s) +RunningServices=Running services +BoardRunningServices=Expired running services +ServiceStatus=Status of service +DraftContracts=Drafts contracts +CloseRefusedBecauseOneServiceActive=Contract can't be closed as ther is at least one open service on it +CloseAllContracts=Close all contract lines +DeleteContractLine=Delete a contract line +ConfirmDeleteContractLine=Are you sure you want to delete this contract line ? +MoveToAnotherContract=Move service into another contract. +ConfirmMoveToAnotherContract=I choosed new target contract and confirm I want to move this service into this contract. +ConfirmMoveToAnotherContractQuestion=Choose in which existing contract (of same third party), you want to move this service to ? +PaymentRenewContractId=Renew contract line (number %s) +ExpiredSince=Expiration date +RelatedContracts=Related contracts +NoExpiredServices=No expired active services +ListOfServicesToExpireWithDuration=List of Services to expire in %s days +ListOfServicesToExpireWithDurationNeg=List of Services expired from more than %s days +ListOfServicesToExpire=List of Services to expire +NoteListOfYourExpiredServices=This list contains only services of contracts for third parties you are linked to as a sale representative. +StandardContractsTemplate=Standard contracts template +ContactNameAndSignature=For %s, name and signature: +OnlyLinesWithTypeServiceAreUsed=Only lines with type "Service" will be cloned. + +##### Types de contacts ##### +TypeContact_contrat_internal_SALESREPSIGN=Sales representative signing contract +TypeContact_contrat_internal_SALESREPFOLL=Sales representative following-up contract +TypeContact_contrat_external_BILLING=Billing customer contact +TypeContact_contrat_external_CUSTOMER=Follow-up customer contact +TypeContact_contrat_external_SALESREPSIGN=Signing contract customer contact +Error_CONTRACT_ADDON_NotDefined=Constant CONTRACT_ADDON not defined diff --git a/htdocs/langs/sw_SW/cron.lang b/htdocs/langs/sw_SW/cron.lang new file mode 100644 index 00000000000..28dfc7770b2 --- /dev/null +++ b/htdocs/langs/sw_SW/cron.lang @@ -0,0 +1,87 @@ +# Dolibarr language file - Source file is en_US - cron +# About page +About = About +CronAbout = About Cron +CronAboutPage = Cron about page +# Right +Permission23101 = Read Scheduled task +Permission23102 = Create/update Scheduled task +Permission23103 = Delete Scheduled task +Permission23104 = Execute Scheduled task +# Admin +CronSetup= Scheduled job management setup +URLToLaunchCronJobs=URL to check and launch cron jobs if required +OrToLaunchASpecificJob=Or to check and launch a specific job +KeyForCronAccess=Security key for URL to launch cron jobs +FileToLaunchCronJobs=Command line to launch cron jobs +CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes +CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes +# Menu +CronJobs=Scheduled jobs +CronListActive=List of active/scheduled jobs +CronListInactive=List of disabled jobs +# Page list +CronDateLastRun=Last run +CronLastOutput=Last run output +CronLastResult=Last result code +CronListOfCronJobs=List of scheduled jobs +CronCommand=Command +CronList=Jobs list +CronDelete= Delete cron jobs +CronConfirmDelete= Are you sure you want to delete this cron job ? +CronExecute=Launch job +CronConfirmExecute= Are you sure to execute this job now +CronInfo= Jobs allow to execute task that have been planned +CronWaitingJobs=Wainting jobs +CronTask=Job +CronNone= None +CronDtStart=Start date +CronDtEnd=End date +CronDtNextLaunch=Next execution +CronDtLastLaunch=Last execution +CronFrequency=Frequancy +CronClass=Classe +CronMethod=Method +CronModule=Module +CronAction=Action +CronStatus=Status +CronStatusActive=Enabled +CronStatusInactive=Disabled +CronNoJobs=No jobs registered +CronPriority=Priority +CronLabel=Description +CronNbRun=Nb. launch +CronEach=Every +JobFinished=Job launched and finished +#Page card +CronAdd= Add jobs +CronHourStart= Start Hour and date of task +CronEvery= And execute task each +CronObject= Instance/Object to create +CronArgs=Parameters +CronSaveSucess=Save succesfully +CronNote=Comment +CronFieldMandatory=Fields %s is mandatory +CronErrEndDateStartDt=End date cannot be before start date +CronStatusActiveBtn=Enable +CronStatusInactiveBtn=Disable +CronTaskInactive=This job is disabled +CronDtLastResult=Last result date +CronId=Id +CronClassFile=Classes (filename.class.php) +CronModuleHelp=Name of Dolibarr module directory (also work with external Dolibarr module).
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of module is product +CronClassFileHelp=The file name to load.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of class file name is product.class.php +CronObjectHelp=The object name to load.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of class file name is Product +CronMethodHelp=The object method to launch.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of method is is fecth +CronArgsHelp=The method arguments.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of paramters can be 0, ProductRef +CronCommandHelp=The system command line to execute. +# Info +CronInfoPage=Information +# Common +CronType=Task type +CronType_method=Call method of a Dolibarr Class +CronType_command=Shell command +CronMenu=Cron +CronCannotLoadClass=Cannot load class %s or object %s +UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/sw_SW/deliveries.lang b/htdocs/langs/sw_SW/deliveries.lang new file mode 100644 index 00000000000..d711c3704b4 --- /dev/null +++ b/htdocs/langs/sw_SW/deliveries.lang @@ -0,0 +1,28 @@ +# Dolibarr language file - Source file is en_US - deliveries +Delivery=Delivery +Deliveries=Deliveries +DeliveryCard=Delivery card +DeliveryOrder=Delivery order +DeliveryOrders=Delivery orders +DeliveryDate=Delivery date +DeliveryDateShort=Deliv. date +CreateDeliveryOrder=Generate delivery order +QtyDelivered=Qty delivered +SetDeliveryDate=Set shipping date +ValidateDeliveryReceipt=Validate delivery receipt +ValidateDeliveryReceiptConfirm=Are you sure you want to validate this delivery receipt ? +DeleteDeliveryReceipt=Delete delivery receipt +DeleteDeliveryReceiptConfirm=Are you sure you want to delete delivery receipt %s ? +DeliveryMethod=Delivery method +TrackingNumber=Tracking number +DeliveryNotValidated=Delivery not validated +# merou PDF model +NameAndSignature=Name and Signature : +ToAndDate=To___________________________________ on ____/_____/__________ +GoodStatusDeclaration=Have received the goods above in good condition, +Deliverer=Deliverer : +Sender=Sender +Recipient=Recipient +ErrorStockIsNotEnough=There's not enough stock +Shippable=Shippable +NonShippable=Not Shippable diff --git a/htdocs/langs/sw_SW/dict.lang b/htdocs/langs/sw_SW/dict.lang new file mode 100644 index 00000000000..bef1f4821b4 --- /dev/null +++ b/htdocs/langs/sw_SW/dict.lang @@ -0,0 +1,327 @@ +# Dolibarr language file - Source file is en_US - dict +CountryFR=France +CountryBE=Belgium +CountryIT=Italy +CountryES=Spain +CountryDE=Germany +CountryCH=Switzerland +CountryGB=Great Britain +CountryUK=United Kingdom +CountryIE=Ireland +CountryCN=China +CountryTN=Tunisia +CountryUS=United States +CountryMA=Morocco +CountryDZ=Algeria +CountryCA=Canada +CountryTG=Togo +CountryGA=Gabon +CountryNL=Netherlands +CountryHU=Hungary +CountryRU=Russia +CountrySE=Sweden +CountryCI=Ivoiry Coast +CountrySN=Senegal +CountryAR=Argentina +CountryCM=Cameroon +CountryPT=Portugal +CountrySA=Saudi Arabia +CountryMC=Monaco +CountryAU=Australia +CountrySG=Singapore +CountryAF=Afghanistan +CountryAX=Åland Islands +CountryAL=Albania +CountryAS=American Samoa +CountryAD=Andorra +CountryAO=Angola +CountryAI=Anguilla +CountryAQ=Antarctica +CountryAG=Antigua and Barbuda +CountryAM=Armenia +CountryAW=Aruba +CountryAT=Austria +CountryAZ=Azerbaijan +CountryBS=Bahamas +CountryBH=Bahrain +CountryBD=Bangladesh +CountryBB=Barbados +CountryBY=Belarus +CountryBZ=Belize +CountryBJ=Benin +CountryBM=Bermuda +CountryBT=Bhutan +CountryBO=Bolivia +CountryBA=Bosnia and Herzegovina +CountryBW=Botswana +CountryBV=Bouvet Island +CountryBR=Brazil +CountryIO=British Indian Ocean Territory +CountryBN=Brunei Darussalam +CountryBG=Bulgaria +CountryBF=Burkina Faso +CountryBI=Burundi +CountryKH=Cambodia +CountryCV=Cape Verde +CountryKY=Cayman Islands +CountryCF=Central African Republic +CountryTD=Chad +CountryCL=Chile +CountryCX=Christmas Island +CountryCC=Cocos (Keeling) Islands +CountryCO=Colombia +CountryKM=Comoros +CountryCG=Congo +CountryCD=Congo, The Democratic Republic of the +CountryCK=Cook Islands +CountryCR=Costa Rica +CountryHR=Croatia +CountryCU=Cuba +CountryCY=Cyprus +CountryCZ=Czech Republic +CountryDK=Denmark +CountryDJ=Djibouti +CountryDM=Dominica +CountryDO=Dominican Republic +CountryEC=Ecuador +CountryEG=Egypt +CountrySV=El Salvador +CountryGQ=Equatorial Guinea +CountryER=Eritrea +CountryEE=Estonia +CountryET=Ethiopia +CountryFK=Falkland Islands +CountryFO=Faroe Islands +CountryFJ=Fiji Islands +CountryFI=Finland +CountryGF=French Guiana +CountryPF=French Polynesia +CountryTF=French Southern Territories +CountryGM=Gambia +CountryGE=Georgia +CountryGH=Ghana +CountryGI=Gibraltar +CountryGR=Greece +CountryGL=Greenland +CountryGD=Grenada +CountryGP=Guadeloupe +CountryGU=Guam +CountryGT=Guatemala +CountryGN=Guinea +CountryGW=Guinea-Bissau +CountryGY=Guyana +CountryHT=Haïti +CountryHM=Heard Island and McDonald +CountryVA=Holy See (Vatican City State) +CountryHN=Honduras +CountryHK=Hong Kong +CountryIS=Icelande +CountryIN=India +CountryID=Indonesia +CountryIR=Iran +CountryIQ=Iraq +CountryIL=Israel +CountryJM=Jamaica +CountryJP=Japan +CountryJO=Jordan +CountryKZ=Kazakhstan +CountryKE=Kenya +CountryKI=Kiribati +CountryKP=North Korea +CountryKR=South Korea +CountryKW=Kuwait +CountryKG=Kyrghyztan +CountryLA=Lao +CountryLV=Latvia +CountryLB=Lebanon +CountryLS=Lesotho +CountryLR=Liberia +CountryLY=Libyan +CountryLI=Liechtenstein +CountryLT=Lituania +CountryLU=Luxembourg +CountryMO=Macao +CountryMK=Macedonia, the former Yugoslav of +CountryMG=Madagascar +CountryMW=Malawi +CountryMY=Malaysia +CountryMV=Maldives +CountryML=Mali +CountryMT=Malta +CountryMH=Marshall Islands +CountryMQ=Martinique +CountryMR=Mauritania +CountryMU=Mauritius +CountryYT=Mayotte +CountryMX=Mexico +CountryFM=Micronesia +CountryMD=Moldova +CountryMN=Mongolia +CountryMS=Monserrat +CountryMZ=Mozambique +CountryMM=Birmania (Myanmar) +CountryNA=Namibia +CountryNR=Nauru +CountryNP=Nepal +CountryAN=Netherlands Antilles +CountryNC=New Caledonia +CountryNZ=New Zealand +CountryNI=Nicaragua +CountryNE=Niger +CountryNG=Nigeria +CountryNU=Niue +CountryNF=Norfolk Island +CountryMP=Northern Mariana Islands +CountryNO=Norway +CountryOM=Oman +CountryPK=Pakistan +CountryPW=Palau +CountryPS=Palestinian Territory, Occupied +CountryPA=Panama +CountryPG=Papua New Guinea +CountryPY=Paraguay +CountryPE=Peru +CountryPH=Philippines +CountryPN=Pitcairn Islands +CountryPL=Poland +CountryPR=Puerto Rico +CountryQA=Qatar +CountryRE=Reunion +CountryRO=Romania +CountryRW=Rwanda +CountrySH=Saint Helena +CountryKN=Saint Kitts and Nevis +CountryLC=Saint Lucia +CountryPM=Saint Pierre and Miquelon +CountryVC=Saint Vincent and Grenadines +CountryWS=Samoa +CountrySM=San Marino +CountryST=Sao Tome and Principe +CountryRS=Serbia +CountrySC=Seychelles +CountrySL=Sierra Leone +CountrySK=Slovakia +CountrySI=Slovenia +CountrySB=Solomon Islands +CountrySO=Somalia +CountryZA=South Africa +CountryGS=South Georgia and the South Sandwich Islands +CountryLK=Sri Lanka +CountrySD=Sudan +CountrySR=Suriname +CountrySJ=Svalbard and Jan Mayen +CountrySZ=Swaziland +CountrySY=Syrian +CountryTW=Taiwan +CountryTJ=Tajikistan +CountryTZ=Tanzania +CountryTH=Thailand +CountryTL=Timor-Leste +CountryTK=Tokelau +CountryTO=Tonga +CountryTT=Trinidad and Tobago +CountryTR=Turkey +CountryTM=Turkmenistan +CountryTC=Turks and Cailos Islands +CountryTV=Tuvalu +CountryUG=Uganda +CountryUA=Ukraine +CountryAE=United Arab Emirates +CountryUM=United States Minor Outlying Islands +CountryUY=Uruguay +CountryUZ=Uzbekistan +CountryVU=Vanuatu +CountryVE=Venezuela +CountryVN=Viet Nam +CountryVG=Virgin Islands, British +CountryVI=Virgin Islands, U.S. +CountryWF=Wallis and Futuna +CountryEH=Western Sahara +CountryYE=Yemen +CountryZM=Zambia +CountryZW=Zimbabwe +CountryGG=Guernsey +CountryIM=Isle of Man +CountryJE=Jersey +CountryME=Montenegro +CountryBL=Saint Barthelemy +CountryMF=Saint Martin + +##### Civilities ##### +CivilityMME=Mrs. +CivilityMR=Mr. +CivilityMLE=Ms. +CivilityMTRE=Master +CivilityDR=Doctor +##### Currencies ##### +Currencyeuros=Euros +CurrencyAUD=AU Dollars +CurrencySingAUD=AU Dollar +CurrencyCAD=CAN Dollars +CurrencySingCAD=CAN Dollar +CurrencyCHF=Swiss Francs +CurrencySingCHF=Swiss Franc +CurrencyEUR=Euros +CurrencySingEUR=Euro +CurrencyFRF=French Francs +CurrencySingFRF=French Franc +CurrencyGBP=GB Pounds +CurrencySingGBP=GB Pound +CurrencyINR=Indian rupees +CurrencySingINR=Indian rupee +CurrencyMAD=Dirham +CurrencySingMAD=Dirham +CurrencyMGA=Ariary +CurrencySingMGA=Ariary +CurrencyMUR=Mauritius rupees +CurrencySingMUR=Mauritius rupee +CurrencyNOK=Norwegian krones +CurrencySingNOK=Norwegian krone +CurrencyTND=Tunisian dinars +CurrencySingTND=Tunisian dinar +CurrencyUSD=US Dollars +CurrencySingUSD=US Dollar +CurrencyUAH=Hryvnia +CurrencySingUAH=Hryvnia +CurrencyXAF=CFA Francs BEAC +CurrencySingXAF=CFA Franc BEAC +CurrencyXOF=CFA Francs BCEAO +CurrencySingXOF=CFA Franc BCEAO +CurrencyXPF=CFP Francs +CurrencySingXPF=CFP Franc +CurrencyCentSingEUR=cent +CurrencyCentINR=paisa +CurrencyCentSingINR=paise +CurrencyThousandthSingTND=thousandth +#### Input reasons ##### +DemandReasonTypeSRC_INTE=Internet +DemandReasonTypeSRC_CAMP_MAIL=Mailing campaign +DemandReasonTypeSRC_CAMP_EMAIL=EMailing campaign +DemandReasonTypeSRC_CAMP_PHO=Phone campaign +DemandReasonTypeSRC_CAMP_FAX=Fax campaign +DemandReasonTypeSRC_COMM=Commercial contact +DemandReasonTypeSRC_SHOP=Shop contact +DemandReasonTypeSRC_WOM=Word of mouth +DemandReasonTypeSRC_PARTNER=Partner +DemandReasonTypeSRC_EMPLOYEE=Employee +DemandReasonTypeSRC_SPONSORING=Sponsorship +#### Paper formats #### +PaperFormatEU4A0=Format 4A0 +PaperFormatEU2A0=Format 2A0 +PaperFormatEUA0=Format A0 +PaperFormatEUA1=Format A1 +PaperFormatEUA2=Format A2 +PaperFormatEUA3=Format A3 +PaperFormatEUA4=Format A4 +PaperFormatEUA5=Format A5 +PaperFormatEUA6=Format A6 +PaperFormatUSLETTER=Format Letter US +PaperFormatUSLEGAL=Format Legal US +PaperFormatUSEXECUTIVE=Format Executive US +PaperFormatUSLEDGER=Format Ledger/Tabloid +PaperFormatCAP1=Format P1 Canada +PaperFormatCAP2=Format P2 Canada +PaperFormatCAP3=Format P3 Canada +PaperFormatCAP4=Format P4 Canada +PaperFormatCAP5=Format P5 Canada +PaperFormatCAP6=Format P6 Canada diff --git a/htdocs/langs/sw_SW/donations.lang b/htdocs/langs/sw_SW/donations.lang new file mode 100644 index 00000000000..f7aed91cf81 --- /dev/null +++ b/htdocs/langs/sw_SW/donations.lang @@ -0,0 +1,38 @@ +# Dolibarr language file - Source file is en_US - donations +Donation=Donation +Donations=Donations +DonationRef=Donation ref. +Donor=Donor +Donors=Donors +AddDonation=Create a donation +NewDonation=New donation +ShowDonation=Show donation +DonationPromise=Gift promise +PromisesNotValid=Not validated promises +PromisesValid=Validated promises +DonationsPaid=Donations paid +DonationsReceived=Donations received +PublicDonation=Public donation +DonationsNumber=Donation number +DonationsArea=Donations area +DonationStatusPromiseNotValidated=Draft promise +DonationStatusPromiseValidated=Validated promise +DonationStatusPaid=Donation received +DonationStatusPromiseNotValidatedShort=Draft +DonationStatusPromiseValidatedShort=Validated +DonationStatusPaidShort=Received +ValidPromess=Validate promise +DonationReceipt=Donation receipt +BuildDonationReceipt=Build receipt +DonationsModels=Documents models for donation receipts +LastModifiedDonations=Last %s modified donations +SearchADonation=Search a donation +DonationRecipient=Donation recipient +ThankYou=Thank You +IConfirmDonationReception=The recipient declare reception, as a donation, of the following amount +MinimumAmount=Minimum amount is %s +FreeTextOnDonations=Free text to show in footer +FrenchOptions=Options for France +DONATION_ART200=Show article 200 from CGI if you are concerned +DONATION_ART238=Show article 238 from CGI if you are concerned +DONATION_ART885=Show article 885 from CGI if you are concerned diff --git a/htdocs/langs/sw_SW/ecm.lang b/htdocs/langs/sw_SW/ecm.lang new file mode 100644 index 00000000000..4a1931a3217 --- /dev/null +++ b/htdocs/langs/sw_SW/ecm.lang @@ -0,0 +1,57 @@ +# Dolibarr language file - Source file is en_US - ecm +MenuECM=Documents +DocsMine=My documents +DocsGenerated=Generated documents +DocsElements=Elements documents +DocsThirdParties=Documents third parties +DocsContracts=Documents contracts +DocsProposals=Documents proposals +DocsOrders=Documents orders +DocsInvoices=Documents invoices +ECMNbOfDocs=Nb of documents in directory +ECMNbOfDocsSmall=Nb of doc. +ECMSection=Directory +ECMSectionManual=Manual directory +ECMSectionAuto=Automatic directory +ECMSectionsManual=Manual tree +ECMSectionsAuto=Automatic tree +ECMSections=Directories +ECMRoot=Root +ECMNewSection=New directory +ECMAddSection=Add directory +ECMNewDocument=New document +ECMCreationDate=Creation date +ECMNbOfFilesInDir=Number of files in directory +ECMNbOfSubDir=Number of sub-directories +ECMNbOfFilesInSubDir=Number of files in sub-directories +ECMCreationUser=Creator +ECMArea=EDM area +ECMAreaDesc=The EDM (Electronic Document Management) area allows you to save, share and search quickly all kind of documents in Dolibarr. +ECMAreaDesc2=* Automatic directories are filled automatically when adding documents from card of an element.
* Manual directories can be used to save documents not linked to a particular element. +ECMSectionWasRemoved=Directory %s has been deleted. +ECMDocumentsSection=Document of directory +ECMSearchByKeywords=Search by keywords +ECMSearchByEntity=Search by object +ECMSectionOfDocuments=Directories of documents +ECMTypeManual=Manual +ECMTypeAuto=Automatic +ECMDocsBySocialContributions=Documents linked to social contributions +ECMDocsByThirdParties=Documents linked to third parties +ECMDocsByProposals=Documents linked to proposals +ECMDocsByOrders=Documents linked to customers orders +ECMDocsByContracts=Documents linked to contracts +ECMDocsByInvoices=Documents linked to customers invoices +ECMDocsByProducts=Documents linked to products +ECMDocsByProjects=Documents linked to projects +ECMDocsByUsers=Documents linked to users +ECMDocsByInterventions=Documents linked to interventions +ECMNoDirectoryYet=No directory created +ShowECMSection=Show directory +DeleteSection=Remove directory +ConfirmDeleteSection=Can you confirm you want to delete the directory %s ? +ECMDirectoryForFiles=Relative directory for files +CannotRemoveDirectoryContainsFiles=Removed not possible because it contains some files +ECMFileManager=File manager +ECMSelectASection=Select a directory on left tree... +DirNotSynchronizedSyncFirst=This directory seems to be created or modified outside ECM module. You must click on "Refresh" button first to synchronize disk and database to get content of this directory. + diff --git a/htdocs/langs/sw_SW/errors.lang b/htdocs/langs/sw_SW/errors.lang new file mode 100644 index 00000000000..700e6344d7d --- /dev/null +++ b/htdocs/langs/sw_SW/errors.lang @@ -0,0 +1,183 @@ +# Dolibarr language file - Source file is en_US - errors + +# No errors +NoErrorCommitIsDone=No error, we commit +# Errors +Error=Error +Errors=Errors +ErrorButCommitIsDone=Errors found but we validate despite this +ErrorBadEMail=EMail %s is wrong +ErrorBadUrl=Url %s is wrong +ErrorLoginAlreadyExists=Login %s already exists. +ErrorGroupAlreadyExists=Group %s already exists. +ErrorRecordNotFound=Record not found. +ErrorFailToCopyFile=Failed to copy file '%s' into '%s'. +ErrorFailToRenameFile=Failed to rename file '%s' into '%s'. +ErrorFailToDeleteFile=Failed to remove file '%s'. +ErrorFailToCreateFile=Failed to create file '%s'. +ErrorFailToRenameDir=Failed to rename directory '%s' into '%s'. +ErrorFailToCreateDir=Failed to create directory '%s'. +ErrorFailToDeleteDir=Failed to delete directory '%s'. +ErrorFailedToDeleteJoinedFiles=Can not delete environment because there is some joined files. Remove join files first. +ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as contact for this type. +ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. +ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. +ErrorBadThirdPartyName=Bad value for third party name +ErrorProdIdIsMandatory=The %s is mandatory +ErrorBadCustomerCodeSyntax=Bad syntax for customer code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. +ErrorCustomerCodeRequired=Customer code required +ErrorBarCodeRequired=Bar code required +ErrorCustomerCodeAlreadyUsed=Customer code already used +ErrorBarCodeAlreadyUsed=Bar code already used +ErrorPrefixRequired=Prefix required +ErrorUrlNotValid=The website address is incorrect +ErrorBadSupplierCodeSyntax=Bad syntax for supplier code +ErrorSupplierCodeRequired=Supplier code required +ErrorSupplierCodeAlreadyUsed=Supplier code already used +ErrorBadParameters=Bad parameters +ErrorBadValueForParameter=Wrong value '%s' for parameter incorrect '%s' +ErrorBadImageFormat=Image file has not a supported format (Your PHP does not support functions to convert images of this format) +ErrorBadDateFormat=Value '%s' has wrong date format +ErrorWrongDate=Date is not correct! +ErrorFailedToWriteInDir=Failed to write in directory %s +ErrorFoundBadEmailInFile=Found incorrect email syntax for %s lines in file (example line %s with email=%s) +ErrorUserCannotBeDelete=User can not be deleted. May be it is associated on Dolibarr entities. +ErrorFieldsRequired=Some required fields were not filled. +ErrorFailedToCreateDir=Failed to create a directory. Check that Web server user has permissions to write into Dolibarr documents directory. If parameter safe_mode is enabled on this PHP, check that Dolibarr php files owns to web server user (or group). +ErrorNoMailDefinedForThisUser=No mail defined for this user +ErrorFeatureNeedJavascript=This feature need javascript to be activated to work. Change this in setup - display. +ErrorTopMenuMustHaveAParentWithId0=A menu of type 'Top' can't have a parent menu. Put 0 in parent menu or choose a menu of type 'Left'. +ErrorLeftMenuMustHaveAParentId=A menu of type 'Left' must have a parent id. +ErrorFileNotFound=File %s not found (Bad path, wrong permissions or access denied by PHP openbasedir or safe_mode parameter) +ErrorDirNotFound=Directory %s not found (Bad path, wrong permissions or access denied by PHP openbasedir or safe_mode parameter) +ErrorFunctionNotAvailableInPHP=Function %s is required for this feature but is not available in this version/setup of PHP. +ErrorDirAlreadyExists=A directory with this name already exists. +ErrorFileAlreadyExists=A file with this name already exists. +ErrorPartialFile=File not received completely by server. +ErrorNoTmpDir=Temporary directy %s does not exists. +ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. +ErrorFileSizeTooLarge=File size is too large. +ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) +ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) +ErrorNoValueForSelectType=Please fill value for select list +ErrorNoValueForCheckBoxType=Please fill value for checkbox list +ErrorNoValueForRadioType=Please fill value for radio list +ErrorBadFormatValueList=The list value cannot have more than one come : %s, but need at least one: llave,valores +ErrorFieldCanNotContainSpecialCharacters=Field %s must not contains special characters. +ErrorFieldCanNotContainSpecialNorUpperCharacters=Field %s must not contains special characters, nor upper case characters. +ErrorNoAccountancyModuleLoaded=No accountancy module activated +ErrorExportDuplicateProfil=This profile name already exists for this export set. +ErrorLDAPSetupNotComplete=Dolibarr-LDAP matching is not complete. +ErrorLDAPMakeManualTest=A .ldif file has been generated in directory %s. Try to load it manually from command line to have more information on errors. +ErrorCantSaveADoneUserWithZeroPercentage=Can't save an action with "statut not started" if field "done by" is also filled. +ErrorRefAlreadyExists=Ref used for creation already exists. +ErrorPleaseTypeBankTransactionReportName=Please type bank receipt name where transaction is reported (Format YYYYMM or YYYYMMDD) +ErrorRecordHasChildren=Failed to delete records since it has some childs. +ErrorRecordIsUsedCantDelete=Can't delete record. It is already used or included into other object. +ErrorModuleRequireJavascript=Javascript must not be disabled to have this feature working. To enable/disable Javascript, go to menu Home->Setup->Display. +ErrorPasswordsMustMatch=Both typed passwords must match each other +ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. +ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) +ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) +ErrorsOnXLines=Errors on %s source record(s) +ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) +ErrorSpecialCharNotAllowedForField=Special characters are not allowed for field "%s" +ErrorDatabaseParameterWrong=Database setup parameter '%s' has a value not compatible to use Dolibarr (must have value '%s'). +ErrorNumRefModel=A reference exists into database (%s) and is not compatible with this numbering rule. Remove record or renamed reference to activate this module. +ErrorQtyTooLowForThisSupplier=Quantity too low for this supplier or no price defined on this product for this supplier +ErrorModuleSetupNotComplete=Setup of module looks to be uncomplete. Go on Setup - Modules to complete. +ErrorBadMask=Error on mask +ErrorBadMaskFailedToLocatePosOfSequence=Error, mask without sequence number +ErrorBadMaskBadRazMonth=Error, bad reset value +ErrorMaxNumberReachForThisMask=Max number reach for this mask +ErrorCounterMustHaveMoreThan3Digits=Counter must have more than 3 digits +ErrorSelectAtLeastOne=Error. Select at least one entry. +ErrorProductWithRefNotExist=Product with reference '%s' don't exist +ErrorDeleteNotPossibleLineIsConsolidated=Delete not possible because record is linked to a bank transation that is conciliated +ErrorProdIdAlreadyExist=%s is assigned to another third +ErrorFailedToSendPassword=Failed to send password +ErrorFailedToLoadRSSFile=Fails to get RSS feed. Try to add constant MAIN_SIMPLEXMLLOAD_DEBUG if error messages does not provide enough information. +ErrorPasswordDiffers=Passwords differs, please type them again. +ErrorForbidden=Access denied.
You try to access to a page, area or feature without being in an authenticated session or that is not allowed to your user. +ErrorForbidden2=Permission for this login can be defined by your Dolibarr administrator from menu %s->%s. +ErrorForbidden3=It seems that Dolibarr is not used through an authenticated session. Take a look at Dolibarr setup documentation to know how to manage authentications (htaccess, mod_auth or other...). +ErrorNoImagickReadimage=Class Imagick is not found in this PHP. No preview can be available. Administrators can disable this tab from menu Setup - Display. +ErrorRecordAlreadyExists=Record already exists +ErrorCantReadFile=Failed to read file '%s' +ErrorCantReadDir=Failed to read directory '%s' +ErrorFailedToFindEntity=Failed to read environment '%s' +ErrorBadLoginPassword=Bad value for login or password +ErrorLoginDisabled=Your account has been disabled +ErrorFailedToRunExternalCommand=Failed to run external command. Check it is available and runnable by your PHP server. If PHP Safe Mode is enabled, check that command is inside a directory defined by parameter safe_mode_exec_dir. +ErrorFailedToChangePassword=Failed to change password +ErrorLoginDoesNotExists=User with login %s could not be found. +ErrorLoginHasNoEmail=This user has no email address. Process aborted. +ErrorBadValueForCode=Bad value for security code. Try again with new value... +ErrorBothFieldCantBeNegative=Fields %s and %s can't be both negative +ErrorQtyForCustomerInvoiceCantBeNegative=Quantity for line into customer invoices can't be negative +ErrorWebServerUserHasNotPermission=User account %s used to execute web server has no permission for that +ErrorNoActivatedBarcode=No barcode type activated +ErrUnzipFails=Failed to unzip %s with ZipArchive +ErrNoZipEngine=No engine to unzip %s file in this PHP +ErrorFileMustBeADolibarrPackage=The file %s must be a Dolibarr zip package +ErrorFileRequired=It takes a package Dolibarr file +ErrorPhpCurlNotInstalled=The PHP CURL is not installed, this is essential to talk with Paypal +ErrorFailedToAddToMailmanList=Failed to add record %s to Mailman list %s or SPIP base +ErrorFailedToRemoveToMailmanList=Failed to remove record %s to Mailman list %s or SPIP base +ErrorNewValueCantMatchOldValue=New value can't be equal to old one +ErrorFailedToValidatePasswordReset=Failed to reinit password. May be the reinit was already done (this link can be used only one time). If not, try to restart the reinit process. +ErrorToConnectToMysqlCheckInstance=Connect to database fails. Check Mysql server is running (in most cases, you can launch it from command line with 'sudo /etc/init.d/mysql start'). +ErrorFailedToAddContact=Failed to add contact +ErrorDateMustBeBeforeToday=The date can not be greater than today +ErrorPaymentModeDefinedToWithoutSetup=A payment mode was set to type %s but setup of module Invoice was not completed to define information to show for this payment mode. +ErrorPHPNeedModule=Error, your PHP must have module %s installed to use this feature. +ErrorOpenIDSetupNotComplete=You setup Dolibarr config file to allow OpenID authentication, but URL of OpenID service is not defined into constant %s +ErrorWarehouseMustDiffers=Source and target warehouses must differs +ErrorBadFormat=Bad format! +ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Error, this member is not yet linked to any thirdparty. Link member to an existing third party or create a new thirdparty before creating subscription with invoice. +ErrorThereIsSomeDeliveries=Error, there is some deliveries linked to this shipment. Deletion refused. +ErrorCantDeletePaymentReconciliated=Can't delete a payment that had generated a bank transaction that was conciliated +ErrorCantDeletePaymentSharedWithPayedInvoice=Can't delete a payment shared by at least one invoice with status Payed +ErrorPriceExpression1=Cannot assign to constant '%s' +ErrorPriceExpression2=Cannot redefine built-in function '%s' +ErrorPriceExpression3=Undefined variable '%s' in function definition +ErrorPriceExpression4=Illegal character '%s' +ErrorPriceExpression5=Unexpected '%s' +ErrorPriceExpression6=Wrong number of arguments (%s given, %s expected) +ErrorPriceExpression8=Unexpected operator '%s' +ErrorPriceExpression9=An unexpected error occured +ErrorPriceExpression10=Iperator '%s' lacks operand +ErrorPriceExpression11=Expecting '%s' +ErrorPriceExpression14=Division by zero +ErrorPriceExpression17=Undefined variable '%s' +ErrorPriceExpression19=Expression not found +ErrorPriceExpression20=Empty expression +ErrorPriceExpression21=Empty result '%s' +ErrorPriceExpression22=Negative result '%s' +ErrorPriceExpressionInternal=Internal error '%s' +ErrorPriceExpressionUnknown=Unknown error '%s' +ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs +ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action + +# Warnings +WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined +WarningSafeModeOnCheckExecDir=Warning, PHP option safe_mode is on so command must be stored inside a directory declared by php parameter safe_mode_exec_dir. +WarningAllowUrlFopenMustBeOn=Parameter allow_url_fopen must be set to on in filer php.ini for having this module working completely. You must modify this file manually. +WarningBuildScriptNotRunned=Script %s was not yet ran to build graphics, or there is no data to show. +WarningBookmarkAlreadyExists=A bookmark with this title or this target (URL) already exists. +WarningPassIsEmpty=Warning, database password is empty. This is a security hole. You should add a password to your database and change your conf.php file to reflect this. +WarningConfFileMustBeReadOnly=Warning, your config file (htdocs/conf/conf.php) can be overwritten by the web server. This is a serious security hole. Modify permissions on file to be in read only mode for operating system user used by Web server. If you use Windows and FAT format for your disk, you must know that this file system does not allow to add permissions on file, so can't be completely safe. +WarningsOnXLines=Warnings on %s source record(s) +WarningNoDocumentModelActivated=No model, for document generation, has been activated. A model will be choosed by default until you check your module setup. +WarningLockFileDoesNotExists=Warning, once setup is finished, you must disable install/migrate tools by adding a file install.lock into directory %s. Missing this file is a security hole. +WarningUntilDirRemoved=All security warnings (visible by admin users only) will remain active as long as the vulnerability is present (or that constant MAIN_REMOVE_INSTALL_WARNING is added in Setup->Other setup). +WarningCloseAlways=Warning, closing is done even if amount differs between source and target elements. Enable this feature with caution. +WarningUsingThisBoxSlowDown=Warning, using this box slow down seriously all pages showing the box. +WarningClickToDialUserSetupNotComplete=Setup of ClickToDial information for your user are not complete (see tab ClickToDial onto your user card). +WarningNotRelevant=Irrelevant operation for this dataset +WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=Feature disabled when display setup is optimized for blind person or text browsers. +WarningPaymentDateLowerThanInvoiceDate=Payment date (%s) is earlier than invoice date (%s) for invoice %s. +WarningTooManyDataPleaseUseMoreFilters=Too many data. Please use more filters diff --git a/htdocs/langs/sw_SW/exports.lang b/htdocs/langs/sw_SW/exports.lang new file mode 100644 index 00000000000..d79df485608 --- /dev/null +++ b/htdocs/langs/sw_SW/exports.lang @@ -0,0 +1,134 @@ +# Dolibarr language file - Source file is en_US - exports +ExportsArea=Exports area +ImportArea=Import area +NewExport=New export +NewImport=New import +ExportableDatas=Exportable dataset +ImportableDatas=Importable dataset +SelectExportDataSet=Choose dataset you want to export... +SelectImportDataSet=Choose dataset you want to import... +SelectExportFields=Choose fields you want to export, or select a predefined export profile +SelectImportFields=Choose source file fields you want to import and their target field in database by moving them up and down with anchor %s, or select a predefined import profile: +NotImportedFields=Fields of source file not imported +SaveExportModel=Save this export profile if you plan to reuse it later... +SaveImportModel=Save this import profile if you plan to reuse it later... +ExportModelName=Export profile name +ExportModelSaved=Export profile saved under name %s. +ExportableFields=Exportable fields +ExportedFields=Exported fields +ImportModelName=Import profile name +ImportModelSaved=Import profile saved under name %s. +ImportableFields=Importable fields +ImportedFields=Imported fields +DatasetToExport=Dataset to export +DatasetToImport=Import file into dataset +NoDiscardedFields=No fields in source file are discarded +Dataset=Dataset +ChooseFieldsOrdersAndTitle=Choose fields order... +FieldsOrder=Fields order +FieldsTitle=Fields title +FieldOrder=Field order +FieldTitle=Field title +ChooseExportFormat=Choose export format +NowClickToGenerateToBuildExportFile=Now, select file format in combo box and click on "Generate" to build export file... +AvailableFormats=Available formats +LibraryShort=Library +LibraryUsed=Library used +LibraryVersion=Version +Step=Step +FormatedImport=Import assistant +FormatedImportDesc1=This area allows to import personalized data, using an assistant to help you in process without technical knowledge. +FormatedImportDesc2=First step is to choose a king of data you want to load, then file to load, then to choose which fields you want to load. +FormatedExport=Export assistant +FormatedExportDesc1=This area allows to export personalized data, using an assistant to help you in process without technical knowledge. +FormatedExportDesc2=First step is to choose a predefined dataset, then to choose which fields you want in your result files, and which order. +FormatedExportDesc3=When data to export are selected, you can define output file format you want to export your data to. +Sheet=Sheet +NoImportableData=No importable data (no module with definitions to allow data imports) +FileSuccessfullyBuilt=Export file generated +SQLUsedForExport=SQL Request used to build export file +LineId=Id of line +LineDescription=Description of line +LineUnitPrice=Unit price of line +LineVATRate=VAT Rate of line +LineQty=Quantity for line +LineTotalHT=Amount net of tax for line +LineTotalTTC=Amount with tax for line +LineTotalVAT=Amount of VAT for line +TypeOfLineServiceOrProduct=Type of line (0=product, 1=service) +FileWithDataToImport=File with data to import +FileToImport=Source file to import +FileMustHaveOneOfFollowingFormat=File to import must have one of following format +DownloadEmptyExample=Download example of empty source file +ChooseFormatOfFileToImport=Choose file format to use as import file format by clicking on picto %s to select it... +ChooseFileToImport=Upload file then click on picto %s to select file as source import file... +SourceFileFormat=Source file format +FieldsInSourceFile=Fields in source file +FieldsInTargetDatabase=Target fields in Dolibarr database (bold=mandatory) +Field=Field +NoFields=No fields +MoveField=Move field column number %s +ExampleOfImportFile=Example_of_import_file +SaveImportProfile=Save this import profile +ErrorImportDuplicateProfil=Failed to save this import profile with this name. An existing profile already exists with this name. +ImportSummary=Import setup summary +TablesTarget=Targeted tables +FieldsTarget=Targeted fields +TableTarget=Targeted table +FieldTarget=Targeted field +FieldSource=Source field +DoNotImportFirstLine=Do not import first line of source file +NbOfSourceLines=Number of lines in source file +NowClickToTestTheImport=Check import parameters you have defined. If they are correct, click on button "%s" to launch a simulation of import process (no data will be changed in your database, it's only a simulation for the moment)... +RunSimulateImportFile=Launch the import simulation +FieldNeedSource=This field requires data from the source file +SomeMandatoryFieldHaveNoSource=Some mandatory fields have no source from data file +InformationOnSourceFile=Information on source file +InformationOnTargetTables=Information on target fields +SelectAtLeastOneField=Switch at least one source field in the column of fields to export +SelectFormat=Choose this import file format +RunImportFile=Launch import file +NowClickToRunTheImport=Check result of import simulation. If everything is ok, launch the definitive import. +DataLoadedWithId=All data will be loaded with the following import id: %s +ErrorMissingMandatoryValue=Mandatory data is empty in source file for field %s. +TooMuchErrors=There is still %s other source lines with errors but output has been limited. +TooMuchWarnings=There is still %s other source lines with warnings but output has been limited. +EmptyLine=Empty line (will be discarded) +CorrectErrorBeforeRunningImport=You must first correct all errors before running definitive import. +FileWasImported=File was imported with number %s. +YouCanUseImportIdToFindRecord=You can find all imported records in your database by filtering on field import_key='%s'. +NbOfLinesOK=Number of lines with no errors and no warnings: %s. +NbOfLinesImported=Number of lines successfully imported: %s. +DataComeFromNoWhere=Value to insert comes from nowhere in source file. +DataComeFromFileFieldNb=Value to insert comes from field number %s in source file. +DataComeFromIdFoundFromRef=Value that comes from field number %s of source file will be used to find id of parent object to use (So the objet %s that has the ref. from source file must exists into Dolibarr). +DataComeFromIdFoundFromCodeId=Code that comes from field number %s of source file will be used to find id of parent object to use (So the code from source file must exists into dictionary %s). Note that if you know id, you can also use it into source file instead of code. Import should work in both cases. +DataIsInsertedInto=Data coming from source file will be inserted into the following field: +DataIDSourceIsInsertedInto=The id of parent object found using the data in source file, will be inserted into the following field: +DataCodeIDSourceIsInsertedInto=The id of parent line found from code, will be inserted into following field: +SourceRequired=Data value is mandatory +SourceExample=Example of possible data value +ExampleAnyRefFoundIntoElement=Any ref found for element %s +ExampleAnyCodeOrIdFoundIntoDictionary=Any code (or id) found into dictionary %s +CSVFormatDesc=Comma Separated Value file format (.csv).
This is a text file format where fields are separated by separator [ %s ]. If separator is found inside a field content, field is rounded by round character [ %s ]. Escape character to escape round character is [ %s ]. +Excel95FormatDesc=Excel file format (.xls)
This is native Excel 95 format (BIFF5). +Excel2007FormatDesc=Excel file format (.xlsx)
This is native Excel 2007 format (SpreadsheetML). +TsvFormatDesc=Tab Separated Value file format (.tsv)
This is a text file format where fields are separated by a tabulator [tab]. +ExportFieldAutomaticallyAdded=Field %s was automatically added. It will avoid you to have similar lines to be treated as duplicate records (with this field added, all lines will own their own id and will differ). +CsvOptions=Csv Options +Separator=Separator +Enclosure=Enclosure +SuppliersProducts=Suppliers Products +BankCode=Bank code +DeskCode=Desk code +BankAccountNumber=Account number +BankAccountNumberKey=Key +SpecialCode=Special code +ExportStringFilter=%% allows replacing one or more characters in the text +ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day
YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days
> YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days
< YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days +ExportNumericFilter='NNNNN' filters by one value
'NNNNN+NNNNN' filters over a range of values
'>NNNNN' filters by lower values
'>NNNNN' filters by higher values +## filters +SelectFilterFields=If you want to filter on some values, just input values here. +FilterableFields=Champs Filtrables +FilteredFields=Filtered fields +FilteredFieldsValues=Value for filter diff --git a/htdocs/langs/sw_SW/externalsite.lang b/htdocs/langs/sw_SW/externalsite.lang new file mode 100644 index 00000000000..da4853df0df --- /dev/null +++ b/htdocs/langs/sw_SW/externalsite.lang @@ -0,0 +1,5 @@ +# Dolibarr language file - Source file is en_US - externalsite +ExternalSiteSetup=Setup link to external website +ExternalSiteURL=External Site URL +ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. +ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/sw_SW/ftp.lang b/htdocs/langs/sw_SW/ftp.lang new file mode 100644 index 00000000000..9984ce689ee --- /dev/null +++ b/htdocs/langs/sw_SW/ftp.lang @@ -0,0 +1,12 @@ +# Dolibarr language file - Source file is en_US - ftp +FTPClientSetup=FTP Client module setup +NewFTPClient=New FTP connection setup +FTPArea=FTP Area +FTPAreaDesc=This screen show you content of a FTP server view +SetupOfFTPClientModuleNotComplete=Setup of FTP client module seems to be not complete +FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions +FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) +FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password +FTPFailedToRemoveFile=Failed to remove file %s. +FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that directory is empty). +FTPPassiveMode=Passive mode diff --git a/htdocs/langs/sw_SW/help.lang b/htdocs/langs/sw_SW/help.lang new file mode 100644 index 00000000000..1bbd6e94f03 --- /dev/null +++ b/htdocs/langs/sw_SW/help.lang @@ -0,0 +1,28 @@ +# Dolibarr language file - Source file is en_US - help +CommunitySupport=Forum/Wiki support +EMailSupport=Emails support +RemoteControlSupport=Online real time / remote support +OtherSupport=Other support +ToSeeListOfAvailableRessources=To contact/see available resources: +ClickHere=Click here +HelpCenter=Help center +DolibarrHelpCenter=Dolibarr help and support center +ToGoBackToDolibarr=Otherwise, click here to use Dolibarr +TypeOfSupport=Source of support +TypeSupportCommunauty=Community (free) +TypeSupportCommercial=Commercial +TypeOfHelp=Type +NeedHelpCenter=Need help or support ? +Efficiency=Efficiency +TypeHelpOnly=Help only +TypeHelpDev=Help+Development +TypeHelpDevForm=Help+Development+Formation +ToGetHelpGoOnSparkAngels1=Some companies can provide a fast (sometime immediate) and more efficient online support by taking control of your computer. Such helpers can be found on %s web site: +ToGetHelpGoOnSparkAngels3=You can also go to the list of all available coaches for Dolibarr, for this click on button +ToGetHelpGoOnSparkAngels2=Sometimes, there is no company available at the moment you make your search, so think to change the filter to look for "all availability". You will be able to send more requests. +BackToHelpCenter=Otherwise, click here to go back to help center home page. +LinkToGoldMember=You can call one of the coach preselected by Dolibarr for your language (%s) by clicking his Widget (status and maximum price are automatically updated): +PossibleLanguages=Supported languages +MakeADonation=Help Dolibarr project, make a donation +SubscribeToFoundation=Help Dolibarr project, subscribe to the foundation +SeeOfficalSupport=For official Dolibarr support in your language:
%s diff --git a/htdocs/langs/sw_SW/holiday.lang b/htdocs/langs/sw_SW/holiday.lang new file mode 100644 index 00000000000..f5b87fefb08 --- /dev/null +++ b/htdocs/langs/sw_SW/holiday.lang @@ -0,0 +1,148 @@ +# Dolibarr language file - Source file is en_US - holiday +HRM=HRM +Holidays=Leaves +CPTitreMenu=Leaves +MenuReportMonth=Monthly statement +MenuAddCP=Make a leave request +NotActiveModCP=You must enable the module Leaves to view this page. +NotConfigModCP=You must configure the module Leaves to view this page. To do this, click here . +NoCPforUser=You don't have any available day. +AddCP=Make a leave request +Employe=Employee +DateDebCP=Start date +DateFinCP=End date +DateCreateCP=Creation date +DraftCP=Draft +ToReviewCP=Awaiting approval +ApprovedCP=Approved +CancelCP=Canceled +RefuseCP=Refused +ValidatorCP=Approbator +ListeCP=List of leaves +ReviewedByCP=Will be reviewed by +DescCP=Description +SendRequestCP=Create leave request +DelayToRequestCP=Leave requests must be made at least %s day(s) before them. +MenuConfCP=Edit balance of leaves +UpdateAllCP=Update the leaves +SoldeCPUser=Leaves balance is %s days. +ErrorEndDateCP=You must select an end date greater than the start date. +ErrorSQLCreateCP=An SQL error occurred during the creation: +ErrorIDFicheCP=An error has occurred, the leave request does not exist. +ReturnCP=Return to previous page +ErrorUserViewCP=You are not authorized to read this leave request. +InfosCP=Information of the leave request +InfosWorkflowCP=Information Workflow +RequestByCP=Requested by +TitreRequestCP=Leave request +NbUseDaysCP=Number of days of vacation consumed +EditCP=Edit +DeleteCP=Delete +ActionValidCP=Validate +ActionRefuseCP=Refuse +ActionCancelCP=Cancel +StatutCP=Status +SendToValidationCP=Send to validation +TitleDeleteCP=Delete the leave request +ConfirmDeleteCP=Confirm the deletion of this leave request? +ErrorCantDeleteCP=Error you don't have the right to delete this leave request. +CantCreateCP=You don't have the right to make leave requests. +InvalidValidatorCP=You must choose an approbator to your leave request. +CantUpdate=You cannot update this leave request. +NoDateDebut=You must select a start date. +NoDateFin=You must select an end date. +ErrorDureeCP=Your leave request does not contain working day. +TitleValidCP=Approve the leave request +ConfirmValidCP=Are you sure you want to approve the leave request? +DateValidCP=Date approved +TitleToValidCP=Send leave request +ConfirmToValidCP=Are you sure you want to send the leave request? +TitleRefuseCP=Refuse the leave request +ConfirmRefuseCP=Are you sure you want to refuse the leave request? +NoMotifRefuseCP=You must choose a reason for refusing the request. +TitleCancelCP=Cancel the leave request +ConfirmCancelCP=Are you sure you want to cancel the leave request? +DetailRefusCP=Reason for refusal +DateRefusCP=Date of refusal +DateCancelCP=Date of cancellation +DefineEventUserCP=Assign an exceptional leave for a user +addEventToUserCP=Assign leave +MotifCP=Reason +UserCP=User +ErrorAddEventToUserCP=An error occurred while adding the exceptional leave. +AddEventToUserOkCP=The addition of the exceptional leave has been completed. +MenuLogCP=View logs of leave requests +LogCP=Log of updates of available vacation days +ActionByCP=Performed by +UserUpdateCP=For the user +PrevSoldeCP=Previous Balance +NewSoldeCP=New Balance +alreadyCPexist=A leave request has already been done on this period. +UserName=Name +Employee=Employee +FirstDayOfHoliday=First day of vacation +LastDayOfHoliday=Last day of vacation +HolidaysMonthlyUpdate=Monthly update +ManualUpdate=Manual update +HolidaysCancelation=Leave request cancelation + +## Configuration du Module ## +ConfCP=Configuration of leave request module +DescOptionCP=Description of the option +ValueOptionCP=Value +GroupToValidateCP=Group with the ability to approve leave requests +ConfirmConfigCP=Validate the configuration +LastUpdateCP=Last automatic update of leaves allocation +UpdateConfCPOK=Updated successfully. +ErrorUpdateConfCP=An error occurred during the update, please try again. +AddCPforUsers=Please add the balance of leaves allocation of users by clicking here. +DelayForSubmitCP=Deadline to make a leave requests +AlertapprobatortorDelayCP=Prevent the approbator if the leave request does not match the deadline +AlertValidatorDelayCP=Préevent the approbator if the leave request exceed delay +AlertValidorSoldeCP=Prevent the approbator if the leave request exceed the balance +nbUserCP=Number of users supported in the module Leaves +nbHolidayDeductedCP=Number of leave days to be deducted per day of vacation taken +nbHolidayEveryMonthCP=Number of leave days added every month +Module27130Name= Management of leave requests +Module27130Desc= Management of leave requests +TitleOptionMainCP=Main settings of leave request +TitleOptionEventCP=Settings of leave requets for events +ValidEventCP=Validate +UpdateEventCP=Update events +CreateEventCP=Create +NameEventCP=Event name +OkCreateEventCP=The addition of the event went well. +ErrorCreateEventCP=Error creating the event. +UpdateEventOkCP=The update of the event went well. +ErrorUpdateEventCP=Error while updating the event. +DeleteEventCP=Delete Event +DeleteEventOkCP=The event has been deleted. +ErrorDeleteEventCP=Error while deleting the event. +TitleDeleteEventCP=Delete a exceptional leave +TitleCreateEventCP=Create a exceptional leave +TitleUpdateEventCP=Edit or delete a exceptional leave +DeleteEventOptionCP=Delete +UpdateEventOptionCP=Update +ErrorMailNotSend=An error occurred while sending email: +NoCPforMonth=No leave this month. +nbJours=Number days +TitleAdminCP=Configuration of Leaves +#Messages +Hello=Hello +HolidaysToValidate=Validate leave requests +HolidaysToValidateBody=Below is a leave request to validate +HolidaysToValidateDelay=This leave request will take place within a period of less than %s days. +HolidaysToValidateAlertSolde=The user who made this leave reques do not have enough available days. +HolidaysValidated=Validated leave requests +HolidaysValidatedBody=Your leave request for %s to %s has been validated. +HolidaysRefused=Request denied +HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason : +HolidaysCanceled=Canceled leaved request +HolidaysCanceledBody=Your leave request for %s to %s has been canceled. +Permission20000=Read you own leave requests +Permission20001=Create/modify your leave requests +Permission20002=Create/modify leave requests for everybody +Permission20003=Delete leave requests +Permission20004=Setup users available vacation days +Permission20005=Review log of modified leave requests +Permission20006=Read leaves monthly report diff --git a/htdocs/langs/sw_SW/install.lang b/htdocs/langs/sw_SW/install.lang new file mode 100644 index 00000000000..dcd8df6e7db --- /dev/null +++ b/htdocs/langs/sw_SW/install.lang @@ -0,0 +1,214 @@ +# Dolibarr language file - Source file is en_US - install +InstallEasy=Just follow the instructions step by step. +MiscellaneousChecks=Prerequisites check +DolibarrWelcome=Welcome to Dolibarr +ConfFileExists=Configuration file %s exists. +ConfFileDoesNotExists=Configuration file %s does not exist ! +ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file %s does not exist and could not be created ! +ConfFileCouldBeCreated=Configuration file %s could be created. +ConfFileIsNotWritable=Configuration file %s is not writable. Check permissions. For first install, your web server must be granted to be able to write into this file during configuration process ("chmod 666" for example on a Unix like OS). +ConfFileIsWritable=Configuration file %s is writable. +ConfFileReload=Reload all information from configuration file. +PHPSupportSessions=This PHP supports sessions. +PHPSupportPOSTGETOk=This PHP supports variables POST and GET. +PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check your parameter variables_order in php.ini. +PHPSupportGD=This PHP support GD graphical functions. +PHPSupportUTF8=This PHP support UTF8 functions. +PHPMemoryOK=Your PHP max session memory is set to %s. This should be enough. +PHPMemoryTooLow=Your PHP max session memory is set to %s bytes. This should be too low. Change your php.ini to set memory_limit parameter to at least %s bytes. +Recheck=Click here for a more significative test +ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to make Dolibarr working. Check your PHP setup. +ErrorPHPDoesNotSupportGD=Your PHP installation does not support graphical function GD. No graph will be available. +ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr can't work correctly. Solve this before installing Dolibarr. +ErrorDirDoesNotExists=Directory %s does not exist. +ErrorGoBackAndCorrectParameters=Go backward and correct wrong parameters. +ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'. +ErrorFailedToCreateDatabase=Failed to create database '%s'. +ErrorFailedToConnectToDatabase=Failed to connect to database '%s'. +ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. +ErrorPHPVersionTooLow=PHP version too old. Version %s is required. +WarningPHPVersionTooLow=PHP version too old. Version %s or more is expected. This version should allow install but is not supported. +ErrorConnectedButDatabaseNotFound=Connection to server successfull but database '%s' not found. +ErrorDatabaseAlreadyExists=Database '%s' already exists. +IfDatabaseNotExistsGoBackAndUncheckCreate=If database does not exists, go back and check option "Create database". +IfDatabaseExistsGoBackAndCheckCreate=If database already exists, go back and uncheck "Create database" option. +WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded. +PHPVersion=PHP Version +YouCanContinue=You can continue... +PleaseBePatient=Please be patient... +License=Using license +ConfigurationFile=Configuration file +WebPagesDirectory=Directory where web pages are stored +DocumentsDirectory=Directory to store uploaded and generated documents +URLRoot=URL Root +ForceHttps=Force secure connections (https) +CheckToForceHttps=Check this option to force secure connections (https).
This requires that the web server is configured with an SSL certificate. +DolibarrDatabase=Dolibarr Database +DatabaseChoice=Database choice +DatabaseType=Database type +DriverType=Driver type +Server=Server +ServerAddressDescription=Name or ip address for database server, usually 'localhost' when database server is hosted on same server than web server +ServerPortDescription=Database server port. Keep empty if unknown. +DatabaseServer=Database server +DatabaseName=Database name +DatabasePrefix=Database prefix table +Login=Login +AdminLogin=Login for Dolibarr database owner. +Password=Password +PasswordAgain=Retype password a second time +AdminPassword=Password for Dolibarr database owner. +CreateDatabase=Create database +CreateUser=Create owner +DatabaseSuperUserAccess=Database server - Superuser access +CheckToCreateDatabase=Check box if database does not exist and must be created.
In this case, you must fill the login/password for superuser account at the bottom of this page. +CheckToCreateUser=Check box if database owner does not exist and must be created.
In this case, you must choose its login and password and also fill the login/password for the superuser account at the bottom of this page. If this box is unchecked, owner database and its passwords must exists. +Experimental=(experimental) +DatabaseRootLoginDescription=Login of the user allowed to create new databases or new users, mandatory if your database or its owner does not already exists. +KeepEmptyIfNoPassword=Leave empty if user has no password (avoid this) +SaveConfigurationFile=Save values +ConfigurationSaving=Saving configuration file +ServerConnection=Server connection +DatabaseConnection=Database connection +DatabaseCreation=Database creation +UserCreation=User creation +CreateDatabaseObjects=Database objects creation +ReferenceDataLoading=Reference data loading +TablesAndPrimaryKeysCreation=Tables and Primary keys creation +CreateTableAndPrimaryKey=Create table %s +CreateOtherKeysForTable=Create foreign keys and indexes for table %s +OtherKeysCreation=Foreign keys and indexes creation +FunctionsCreation=Functions creation +AdminAccountCreation=Administrator login creation +PleaseTypePassword=Please type a password, empty passwords are not allowed ! +PleaseTypeALogin=Please type a login ! +PasswordsMismatch=Passwords differs, please try again ! +SetupEnd=End of setup +SystemIsInstalled=This installation is complete. +SystemIsUpgraded=Dolibarr has been upgraded successfully. +YouNeedToPersonalizeSetup=You need to configure Dolibarr to suit your needs (appearance, features, ...). To do this, please follow the link below: +AdminLoginCreatedSuccessfuly=Dolibarr administrator login '%s' created successfuly. +GoToDolibarr=Go to Dolibarr +GoToSetupArea=Go to Dolibarr (setup area) +MigrationNotFinished=Version of your database is not completely up to date, so you'll have to run the upgrade process again. +GoToUpgradePage=Go to upgrade page again +Examples=Examples +WithNoSlashAtTheEnd=Without the slash "/" at the end +DirectoryRecommendation=It is recommanded to use a directory outside of your directory of your web pages. +LoginAlreadyExists=Already exists +DolibarrAdminLogin=Dolibarr admin login +AdminLoginAlreadyExists=Dolibarr administrator account '%s' already exists. Go back, if you want to create another one. +WarningRemoveInstallDir=Warning, for security reasons, once the install or upgrade is complete, to avoid using install tools again, you should add a file called install.lock into Dolibarr document directory, in order to avoid malicious use of it. +ThisPHPDoesNotSupportTypeBase=This PHP system does not support any interface to access database type %s +FunctionNotAvailableInThisPHP=Not available on this PHP +MigrateScript=Migration script +ChoosedMigrateScript=Choose migration script +DataMigration=Data migration +DatabaseMigration=Structure database migration +ProcessMigrateScript=Script processing +ChooseYourSetupMode=Choose your setup mode and click "Start"... +FreshInstall=Fresh install +FreshInstallDesc=Use this mode if this is your first install. If not, this mode can repair a incomplete previous install, but if you want to upgrade your version, choose "Upgrade" mode. +Upgrade=Upgrade +UpgradeDesc=Use this mode if you have replaced old Dolibarr files with files from a newer version. This will upgrade your database and data. +Start=Start +InstallNotAllowed=Setup not allowed by conf.php permissions +NotAvailable=Not available +YouMustCreateWithPermission=You must create file %s and set write permissions on it for the web server during install process. +CorrectProblemAndReloadPage=Please fix the problem and press F5 to reload page. +AlreadyDone=Already migrated +DatabaseVersion=Database version +ServerVersion=Database server version +YouMustCreateItAndAllowServerToWrite=You must create this directory and allow for the web server to write into it. +CharsetChoice=Character set choice +CharacterSetClient=Character set used for generated HTML web pages +CharacterSetClientComment=Choose character set for web display.
Default proposed character set is the one of your database. +DBSortingCollation=Character sorting order +DBSortingCollationComment=Choose page code that defines character's sorting order used by database. This parameter is also called 'collation' by some databases.
This parameter can't be defined if database already exists. +CharacterSetDatabase=Character set for database +CharacterSetDatabaseComment=Choose character set wanted for database creation.
This parameter can't be defined if database already exists. +YouAskDatabaseCreationSoDolibarrNeedToConnect=You ask to create database %s, but for this, Dolibarr need to connect to server %s with super user %s permissions. +YouAskLoginCreationSoDolibarrNeedToConnect=You ask to create database login %s, but for this, Dolibarr need to connect to server %s with super user %s permissions. +BecauseConnectionFailedParametersMayBeWrong=As connection failed, host or super user parameters must be wrong. +OrphelinsPaymentsDetectedByMethod=Orphans payment detected by method %s +RemoveItManuallyAndPressF5ToContinue=Remove it manually and press F5 to continue. +KeepDefaultValuesWamp=You use the Dolibarr setup wizard from DoliWamp, so values proposed here are already optimized. Change them only if you know what you do. +KeepDefaultValuesDeb=You use the Dolibarr setup wizard from a Linux package (Ubuntu, Debian, Fedora...), so values proposed here are already optimized. Only the password of the database owner to create must be completed. Change other parameters only if you know what you do. +KeepDefaultValuesMamp=You use the Dolibarr setup wizard from DoliMamp, so values proposed here are already optimized. Change them only if you know what you do. +KeepDefaultValuesProxmox=You use the Dolibarr setup wizard from a Proxmox virtual appliance, so values proposed here are already optimized. Change them only if you know what you do. +FieldRenamed=Field renamed +IfLoginDoesNotExistsCheckCreateUser=If login does not exists yet, you must check option "Create user" +ErrorConnection=Server "%s", database name "%s", login "%s", or database password may be wrong or PHP client version may be too old compared to database version. +InstallChoiceRecommanded=Recommended choice to install version %s from your current version %s +InstallChoiceSuggested=Install choice suggested by installer. +MigrateIsDoneStepByStep=The targeted version (%s) has a gap of several versions, so install wizard will come back to suggest next migration once this one will be finished. +CheckThatDatabasenameIsCorrect=Check that database name "%s" is correct. +IfAlreadyExistsCheckOption=If this name is correct and that database does not exist yet, you must check option "Create database". +OpenBaseDir=PHP openbasedir parameter +YouAskToCreateDatabaseSoRootRequired=You checked the box "Create database". For this, you need to provide login/password of superuser (bottom of form). +YouAskToCreateDatabaseUserSoRootRequired=You checked the box "Create database owner". For this, you need to provide login/password of superuser (bottom of form). +NextStepMightLastALongTime=Current step may last several minutes. Please wait until the next screen is shown completely before continuing. +MigrationCustomerOrderShipping=Migrate shipping for customer orders storage +MigrationShippingDelivery=Upgrade storage of shipping +MigrationShippingDelivery2=Upgrade storage of shipping 2 +MigrationFinished=Migration finished +LastStepDesc=Last step: Define here login and password you plan to use to connect to software. Do not loose this as it is the account to administer all others. +ActivateModule=Activate module %s +ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) +WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) + +######### +# upgrade +MigrationFixData=Fix for denormalized data +MigrationOrder=Data migration for customer's orders +MigrationSupplierOrder=Data migration for supplier's orders +MigrationProposal=Data migration for commercial proposals +MigrationInvoice=Data migration for customer's invoices +MigrationContract=Data migration for contracts +MigrationSuccessfullUpdate=Upgrade successful +MigrationUpdateFailed=Failed upgrade process +MigrationRelationshipTables=Data migration for relationship tables (%s) +MigrationPaymentsUpdate=Payment data correction +MigrationPaymentsNumberToUpdate=%s payment(s) to update +MigrationProcessPaymentUpdate=Update payment(s) %s +MigrationPaymentsNothingToUpdate=No more things to do +MigrationPaymentsNothingUpdatable=No more payments that can be corrected +MigrationContractsUpdate=Contract data correction +MigrationContractsNumberToUpdate=%s contract(s) to update +MigrationContractsLineCreation=Create contract line for contract ref %s +MigrationContractsNothingToUpdate=No more things to do +MigrationContractsFieldDontExist=Field fk_facture does not exists anymore. Nothing to do. +MigrationContractsEmptyDatesUpdate=Contract empty date correction +MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfuly +MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct +MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct +MigrationContractsInvalidDatesUpdate=Bad value date contract correction +MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting service date min=%s) +MigrationContractsInvalidDatesNumber=%s contracts modified +MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct +MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction +MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done succesfuly +MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct +MigrationReopeningContracts=Open contract closed by error +MigrationReopenThisContract=Reopen contract %s +MigrationReopenedContractsNumber=%s contracts modified +MigrationReopeningContractsNothingToUpdate=No closed contract to open +MigrationBankTransfertsUpdate=Update links between bank transaction and a bank transfer +MigrationBankTransfertsNothingToUpdate=All links are up to date +MigrationShipmentOrderMatching=Sendings receipt update +MigrationDeliveryOrderMatching=Delivery receipt update +MigrationDeliveryDetail=Delivery update +MigrationStockDetail=Update stock value of products +MigrationMenusDetail=Update dynamic menus tables +MigrationDeliveryAddress=Update delivery address in shipments +MigrationProjectTaskActors=Data migration for llx_projet_task_actors table +MigrationProjectUserResp=Data migration field fk_user_resp of llx_projet to llx_element_contact +MigrationProjectTaskTime=Update time spent in seconds +MigrationActioncommElement=Update data on actions +MigrationPaymentMode=Data migration for payment mode +MigrationCategorieAssociation=Migration of categories +MigrationEvents=Migration of events to add event owner into assignement table + +ShowNotAvailableOptions=Show not available options +HideNotAvailableOptions=Hide not available options diff --git a/htdocs/langs/sw_SW/interventions.lang b/htdocs/langs/sw_SW/interventions.lang new file mode 100644 index 00000000000..c79da05364e --- /dev/null +++ b/htdocs/langs/sw_SW/interventions.lang @@ -0,0 +1,53 @@ +# Dolibarr language file - Source file is en_US - interventions +Intervention=Intervention +Interventions=Interventions +InterventionCard=Intervention card +NewIntervention=New intervention +AddIntervention=Create intervention +ListOfInterventions=List of interventions +EditIntervention=Edit intervention +ActionsOnFicheInter=Actions on intervention +LastInterventions=Last %s interventions +AllInterventions=All interventions +CreateDraftIntervention=Create draft +CustomerDoesNotHavePrefix=Customer does not have a prefix +InterventionContact=Intervention contact +DeleteIntervention=Delete intervention +ValidateIntervention=Validate intervention +ModifyIntervention=Modify intervention +DeleteInterventionLine=Delete intervention line +ConfirmDeleteIntervention=Are you sure you want to delete this intervention ? +ConfirmValidateIntervention=Are you sure you want to validate this intervention under name %s ? +ConfirmModifyIntervention=Are you sure you want to modify this intervention ? +ConfirmDeleteInterventionLine=Are you sure you want to delete this intervention line ? +NameAndSignatureOfInternalContact=Name and signature of intervening : +NameAndSignatureOfExternalContact=Name and signature of customer : +DocumentModelStandard=Standard document model for interventions +InterventionCardsAndInterventionLines=Interventions and lines of interventions +InterventionClassifyBilled=Classify "Billed" +InterventionClassifyUnBilled=Classify "Unbilled" +StatusInterInvoiced=Billed +RelatedInterventions=Related interventions +ShowIntervention=Show intervention +SendInterventionRef=Submission of intervention %s +SendInterventionByMail=Send intervention by Email +InterventionCreatedInDolibarr=Intervention %s created +InterventionValidatedInDolibarr=Intervention %s validated +InterventionModifiedInDolibarr=Intervention %s modified +InterventionClassifiedBilledInDolibarr=Intervention %s set as billed +InterventionClassifiedUnbilledInDolibarr=Intervention %s set as unbilled +InterventionSentByEMail=Intervention %s sent by EMail +InterventionDeletedInDolibarr=Intervention %s deleted +SearchAnIntervention=Search an intervention +##### Types de contacts ##### +TypeContact_fichinter_internal_INTERREPFOLL=Representative following-up intervention +TypeContact_fichinter_internal_INTERVENING=Intervening +TypeContact_fichinter_external_BILLING=Billing customer contact +TypeContact_fichinter_external_CUSTOMER=Following-up customer contact +# Modele numérotation +ArcticNumRefModelDesc1=Generic number model +ArcticNumRefModelError=Failed to activate +PacificNumRefModelDesc1=Return numero with format %syymm-nnnn where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 +PacificNumRefModelError=An intervention card starting with $syymm already exists and is not compatible with this model of sequence. Remove it or rename it to activate this module. +PrintProductsOnFichinter=Print products on intervention card +PrintProductsOnFichinterDetails=forinterventions generated from orders diff --git a/htdocs/langs/sw_SW/languages.lang b/htdocs/langs/sw_SW/languages.lang new file mode 100644 index 00000000000..acd737c3711 --- /dev/null +++ b/htdocs/langs/sw_SW/languages.lang @@ -0,0 +1,72 @@ +# Dolibarr language file - Source file is en_US - languages + +Language_ar_AR=Kiarabu +Language_ar_SA=Kiarabu +Language_bg_BG=Bulgarian +Language_bs_BA=Bosnian +Language_ca_ES=Kikatalani +Language_cs_CZ=Czech +Language_da_DA=Denmark +Language_da_DK=Denmark +Language_de_DE=Ujerumani +Language_de_AT=Ujerumani (Austria) +Language_de_CH=German (Switzerland) +Language_el_GR=Kigiriki +Language_en_AU=Kiingereza (Australia) +Language_en_CA=English (Canada) +Language_en_GB=English (United Kingdom) +Language_en_IN=English (India) +Language_en_NZ=English (New Zealand) +Language_en_SA=English (Saudi Arabia) +Language_en_US=English (United States) +Language_en_ZA=English (Afrika Kusini) +Language_es_ES=Spanish +Language_es_DO=Spanish (Dominican Republic) +Language_es_AR=Kihispania (Argentina) +Language_es_CL=Spanish (Chile) +Language_es_HN=Spanish (Honduras) +Language_es_MX=Kihispania (Mexico) +Language_es_PY=Kihispania (Paraguay) +Language_es_PE=Spanish (Peru) +Language_es_PR=Kihispania (Puerto Rico) +Language_et_EE=Estonian +Language_eu_ES=Basque +Language_fa_IR=Kiajemi +Language_fi_FI=Mapezi +Language_fr_BE=Kifaransa (Ubelgiji) +Language_fr_CA=Kifaransa (Canada) +Language_fr_CH=Kifaransa (Switzerland) +Language_fr_FR=Kifaransa +Language_fr_NC=Kifaransa (New Caledonia) +Language_he_IL=Kiebrania +Language_hr_HR=Croatian +Language_hu_HU=Hungarian +Language_id_ID=Indonesian +Language_is_IS=Kiaislandi +Language_it_IT=Italia +Language_ja_JP=Japan +Language_ko_KR=Korea +Language_lt_LT=Kilithuania +Language_lv_LV=Latvian +Language_mk_MK=Macedonian +Language_nb_NO=Norway (Bokmål) +Language_nl_BE=Uholanzi (Ubelgiji) +Language_nl_NL=Kiholanzi (Uholanzi) +Language_pl_PL=Polish +Language_pt_BR=Kireno (Brazil) +Language_pt_PT=Kireno +Language_ro_RO=Romanian +Language_ru_RU=Urusi +Language_ru_UA=Urusi (Ukraine) +Language_tr_TR=Kituruki +Language_sl_SI=Kislovenia +Language_sv_SV=Swedish +Language_sv_SE=Swedish +Language_sq_AL=Albanian +Language_sk_SK=Slovakiska +Language_th_TH=Thai +Language_uk_UA=Kiukreni +Language_uz_UZ=Uzbek +Language_vi_VN=Kivietinamu +Language_zh_CN=Kichina +Language_zh_TW=Kichina (cha Jadi) diff --git a/htdocs/langs/sw_SW/ldap.lang b/htdocs/langs/sw_SW/ldap.lang new file mode 100644 index 00000000000..02e457446a6 --- /dev/null +++ b/htdocs/langs/sw_SW/ldap.lang @@ -0,0 +1,29 @@ +# Dolibarr language file - Source file is en_US - ldap +DomainPassword=Password for domain +YouMustChangePassNextLogon=Password for user %s on the domain %s must be changed. +UserMustChangePassNextLogon=User must change password on the domain %s +LdapUacf_NORMAL_ACCOUNT=User account +LdapUacf_DONT_EXPIRE_PASSWORD=Password never expires +LdapUacf_ACCOUNTDISABLE=Account is disabled in the domain %s +LDAPInformationsForThisContact=Information in LDAP database for this contact +LDAPInformationsForThisUser=Information in LDAP database for this user +LDAPInformationsForThisGroup=Information in LDAP database for this group +LDAPInformationsForThisMember=Information in LDAP database for this member +LDAPAttribute=LDAP attribute +LDAPAttributes=LDAP attributes +LDAPCard=LDAP card +LDAPRecordNotFound=Record not found in LDAP database +LDAPUsers=Users in LDAP database +LDAPGroups=Groups in LDAP database +LDAPFieldStatus=Status +LDAPFieldFirstSubscriptionDate=First subscription date +LDAPFieldFirstSubscriptionAmount=First subscription amount +LDAPFieldLastSubscriptionDate=Last subscription date +LDAPFieldLastSubscriptionAmount=Last subscription amount +SynchronizeDolibarr2Ldap=Synchronize user (Dolibarr -> LDAP) +UserSynchronized=User synchronized +GroupSynchronized=Group synchronized +MemberSynchronized=Member synchronized +ContactSynchronized=Contact synchronized +ForceSynchronize=Force synchronizing Dolibarr -> LDAP +ErrorFailedToReadLDAP=Failed to read LDAP database. Check LDAP module setup and database accessibility. diff --git a/htdocs/langs/sw_SW/link.lang b/htdocs/langs/sw_SW/link.lang new file mode 100644 index 00000000000..8b1efb75ef3 --- /dev/null +++ b/htdocs/langs/sw_SW/link.lang @@ -0,0 +1,8 @@ +LinkANewFile=Link a new file/document +LinkedFiles=Linked files and documents +NoLinkFound=No registered links +LinkComplete=The file has been linked successfully +ErrorFileNotLinked=The file could not be linked +LinkRemoved=The link %s has been removed +ErrorFailedToDeleteLink= Failed to remove link '%s' +ErrorFailedToUpdateLink= Failed to update link '%s' diff --git a/htdocs/langs/sw_SW/mailmanspip.lang b/htdocs/langs/sw_SW/mailmanspip.lang new file mode 100644 index 00000000000..c85b3d60db2 --- /dev/null +++ b/htdocs/langs/sw_SW/mailmanspip.lang @@ -0,0 +1,27 @@ +# Dolibarr language file - Source file is en_US - mailmanspip +MailmanSpipSetup=Mailman and SPIP module Setup +MailmanTitle=Mailman mailing list system +TestSubscribe=To test subscription to Mailman lists +TestUnSubscribe=To test unsubscribe from Mailman lists +MailmanCreationSuccess=Subscription test was executed succesfully +MailmanDeletionSuccess=Unsubscription test was executed succesfully +SynchroMailManEnabled=A Mailman update will be performed +SynchroSpipEnabled=A Spip update will be performed +DescADHERENT_MAILMAN_ADMINPW=Mailman administrator password +DescADHERENT_MAILMAN_URL=URL for Mailman subscriptions +DescADHERENT_MAILMAN_UNSUB_URL=URL for Mailman unsubscriptions +DescADHERENT_MAILMAN_LISTS=List(s) for automatic inscription of new members (separated by a comma) +SPIPTitle=SPIP Content Management System +DescADHERENT_SPIP_SERVEUR=SPIP Server +DescADHERENT_SPIP_DB=SPIP database name +DescADHERENT_SPIP_USER=SPIP database login +DescADHERENT_SPIP_PASS=SPIP database password +AddIntoSpip=Add into SPIP +AddIntoSpipConfirmation=Are you sure you want to add this member into SPIP? +AddIntoSpipError=Failed to add the user in SPIP +DeleteIntoSpip=Remove from SPIP +DeleteIntoSpipConfirmation=Are you sure you want to remove this member from SPIP? +DeleteIntoSpipError=Failed to suppress the user from SPIP +SPIPConnectionFailed=Failed to connect to SPIP +SuccessToAddToMailmanList=Add of %s to mailman list %s or SPIP database done +SuccessToRemoveToMailmanList=Removal of %s from mailman list %s or SPIP database done diff --git a/htdocs/langs/sw_SW/mails.lang b/htdocs/langs/sw_SW/mails.lang new file mode 100644 index 00000000000..7a211198822 --- /dev/null +++ b/htdocs/langs/sw_SW/mails.lang @@ -0,0 +1,141 @@ +# Dolibarr language file - Source file is en_US - mails +Mailing=EMailing +EMailing=EMailing +Mailings=EMailings +EMailings=EMailings +AllEMailings=All eMailings +MailCard=EMailing card +MailTargets=Targets +MailRecipients=Recipients +MailRecipient=Recipient +MailTitle=Description +MailFrom=Sender +MailErrorsTo=Errors to +MailReply=Reply to +MailTo=Receiver(s) +MailCC=Copy to +MailCCC=Cached copy to +MailTopic=EMail topic +MailText=Message +MailFile=Attached files +MailMessage=EMail body +ShowEMailing=Show emailing +ListOfEMailings=List of emailings +NewMailing=New emailing +EditMailing=Edit emailing +ResetMailing=Resend emailing +DeleteMailing=Delete emailing +DeleteAMailing=Delete an emailing +PreviewMailing=Preview emailing +PrepareMailing=Prepare emailing +CreateMailing=Create emailing +MailingDesc=This page allows you to send emailings to a group of people. +MailingResult=Sending emails result +TestMailing=Test email +ValidMailing=Valid emailing +ApproveMailing=Approve emailing +MailingStatusDraft=Draft +MailingStatusValidated=Validated +MailingStatusApproved=Approved +MailingStatusSent=Sent +MailingStatusSentPartialy=Sent partialy +MailingStatusSentCompletely=Sent completely +MailingStatusError=Error +MailingStatusNotSent=Not sent +MailSuccessfulySent=Email successfully sent (from %s to %s) +MailingSuccessfullyValidated=EMailing successfully validated +MailUnsubcribe=Unsubscribe +Unsuscribe=Unsubscribe +MailingStatusNotContact=Don't contact anymore +ErrorMailRecipientIsEmpty=Email recipient is empty +WarningNoEMailsAdded=No new Email to add to recipient's list. +ConfirmValidMailing=Are you sure you want to validate this emailing ? +ConfirmResetMailing=Warning, by reinitializing emailing %s, you allow to make a mass sending of this email another time. Are you sure you this is what you want to do ? +ConfirmDeleteMailing=Are you sure you want to delete this emailling ? +NbOfRecipients=Number of recipients +NbOfUniqueEMails=Nb of unique emails +NbOfEMails=Nb of EMails +TotalNbOfDistinctRecipients=Number of distinct recipients +NoTargetYet=No recipients defined yet (Go on tab 'Recipients') +AddRecipients=Add recipients +RemoveRecipient=Remove recipient +CommonSubstitutions=Common substitutions +YouCanAddYourOwnPredefindedListHere=To create your email selector module, see htdocs/core/modules/mailings/README. +EMailTestSubstitutionReplacedByGenericValues=When using test mode, substitutions variables are replaced by generic values +MailingAddFile=Attach this file +NoAttachedFiles=No attached files +BadEMail=Bad value for EMail +CloneEMailing=Clone Emailing +ConfirmCloneEMailing=Are you sure you want to clone this emailing ? +CloneContent=Clone message +CloneReceivers=Cloner recipients +DateLastSend=Date of last sending +DateSending=Date sending +SentTo=Sent to %s +MailingStatusRead=Read +CheckRead=Read Receipt +YourMailUnsubcribeOK=The email %s is correctly unsubcribe from mailing list +MailtoEMail=Hyper link to email +ActivateCheckRead=Allow to use the "Unsubcribe" link +ActivateCheckReadKey=Key use to encrypt URL use for "Read Receipt" and "Unsubcribe" feature +EMailSentToNRecipients=EMail sent to %s recipients. +XTargetsAdded=%s recipients added into target list +EachInvoiceWillBeAttachedToEmail=A document using default invoice document template will be created and attached to each email. +MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s) +SendRemind=Send reminder by EMails +RemindSent=%s reminder(s) sent +AllRecipientSelectedForRemind=All thirdparties selected and if an email is set (note that one mail per invoice will be sent) +NoRemindSent=No EMail reminder sent +ResultOfMassSending=Result of mass EMail reminders sending + +# Libelle des modules de liste de destinataires mailing +MailingModuleDescContactCompanies=Contacts/addresses of all third parties (customer, prospect, supplier, ...) +MailingModuleDescDolibarrUsers=Dolibarr users +MailingModuleDescFundationMembers=Foundation members with emails +MailingModuleDescEmailsFromFile=EMails from a text file (email;lastname;firstname;other) +MailingModuleDescEmailsFromUser=EMails from user input (email;lastname;firstname;other) +MailingModuleDescContactsCategories=Third parties (by category) +MailingModuleDescDolibarrContractsLinesExpired=Third parties with expired contract's lines +MailingModuleDescContactsByCompanyCategory=Contacts/addresses of third parties (by third parties category) +MailingModuleDescContactsByCategory=Contacts/addresses of third parties by category +MailingModuleDescMembersCategories=Foundation members (by categories) +MailingModuleDescContactsByFunction=Contacts/addresses of third parties (by position/function) +LineInFile=Line %s in file +RecipientSelectionModules=Defined requests for recipient's selection +MailSelectedRecipients=Selected recipients +MailingArea=EMailings area +LastMailings=Last %s emailings +TargetsStatistics=Targets statistics +NbOfCompaniesContacts=Unique contacts/addresses +MailNoChangePossible=Recipients for validated emailing can't be changed +SearchAMailing=Search mailing +SendMailing=Send emailing +SendMail=Send email +SentBy=Sent by +MailingNeedCommand=For security reason, sending an emailing is better when performed from command line. If you have one, ask your server administrator to launch the following command to send the emailing to all recipients: +MailingNeedCommand2=You can however send them online by adding parameter MAILING_LIMIT_SENDBYWEB with value of max number of emails you want to send by session. For this, go on Home - Setup - Other. +ConfirmSendingEmailing=If you can't or prefer sending them with your www browser, please confirm you are sure you want to send emailing now from your browser ? +LimitSendingEmailing=Note: Sending of emailings from web interface is done in several times for security and timeout reasons, %s recipients at a time for each sending session. +TargetsReset=Clear list +ToClearAllRecipientsClickHere=Click here to clear the recipient list for this emailing +ToAddRecipientsChooseHere=Add recipients by choosing from the lists +NbOfEMailingsReceived=Mass emailings received +NbOfEMailingsSend=Mass emailings sent +IdRecord=ID record +DeliveryReceipt=Delivery Receipt +YouCanUseCommaSeparatorForSeveralRecipients=You can use the comma separator to specify several recipients. +TagCheckMail=Track mail opening +TagUnsubscribe=Unsubscribe link +TagSignature=Signature sending user +TagMailtoEmail=Recipient EMail +# Module Notifications +Notifications=Notifications +NoNotificationsWillBeSent=No email notifications are planned for this event and company +ANotificationsWillBeSent=1 notification will be sent by email +SomeNotificationsWillBeSent=%s notifications will be sent by email +AddNewNotification=Activate a new email notification target +ListOfActiveNotifications=List all active email notification targets +ListOfNotificationsDone=List all email notifications sent +MailSendSetupIs=Configuration of email sending has been setup to '%s'. This mode can't be used to send mass emailing. +MailSendSetupIs2=You must first go, with an admin account, into menu %sHome - Setup - EMails%s to change parameter '%s' to use mode '%s'. With this mode, you can enter setup of the SMTP server provided by your Internet Service Provider and use Mass emailing feature. +MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s. diff --git a/htdocs/langs/sw_SW/main.lang b/htdocs/langs/sw_SW/main.lang new file mode 100644 index 00000000000..d40e28cb776 --- /dev/null +++ b/htdocs/langs/sw_SW/main.lang @@ -0,0 +1,725 @@ +# Dolibarr language file - Source file is en_US - main +DIRECTION=ltr +# Note for Chinese: +# msungstdlight or cid0ct are for traditional Chinese (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese +# To read Chinese pdf with Linux: sudo apt-get install poppler-data +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 +SeparatorDecimal=. +SeparatorThousand=, +FormatDateShort=%m/%d/%Y +FormatDateShortInput=%m/%d/%Y +FormatDateShortJava=MM/dd/yyyy +FormatDateShortJavaInput=MM/dd/yyyy +FormatDateShortJQuery=mm/dd/yy +FormatDateShortJQueryInput=mm/dd/yy +FormatHourShortJQuery=HH:MI +FormatHourShort=%I:%M %p +FormatHourShortDuration=%H:%M +FormatDateTextShort=%b %d, %Y +FormatDateText=%B %d, %Y +FormatDateHourShort=%m/%d/%Y %I:%M %p +FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p +FormatDateHourTextShort=%b %d, %Y, %I:%M %p +FormatDateHourText=%B %d, %Y, %I:%M %p +DatabaseConnection=Database connection +NoTranslation=No translation +NoRecordFound=No record found +NoError=No error +Error=Error +ErrorFieldRequired=Field '%s' is required +ErrorFieldFormat=Field '%s' has a bad value +ErrorFileDoesNotExists=File %s does not exist +ErrorFailedToOpenFile=Failed to open file %s +ErrorCanNotCreateDir=Can not create dir %s +ErrorCanNotReadDir=Can not read dir %s +ErrorConstantNotDefined=Parameter %s not defined +ErrorUnknown=Unknown error +ErrorSQL=SQL Error +ErrorLogoFileNotFound=Logo file '%s' was not found +ErrorGoToGlobalSetup=Go to 'Company/Foundation' setup to fix this +ErrorGoToModuleSetup=Go to Module setup to fix this +ErrorFailedToSendMail=Failed to send mail (sender=%s, receiver=%s) +ErrorAttachedFilesDisabled=File attaching is disabled on this server +ErrorFileNotUploaded=File was not uploaded. Check that size does not exceed maximum allowed, that free space is available on disk and that there is not already a file with same name in this directory. +ErrorInternalErrorDetected=Error detected +ErrorNoRequestRan=No request ran +ErrorWrongHostParameter=Wrong host parameter +ErrorYourCountryIsNotDefined=Your country is not defined. Go to Home-Setup-Edit and post again the form. +ErrorRecordIsUsedByChild=Failed to delete this record. This record is used by at least one child records. +ErrorWrongValue=Wrong value +ErrorWrongValueForParameterX=Wrong value for parameter %s +ErrorNoRequestInError=No request in error +ErrorServiceUnavailableTryLater=Service not available for the moment. Try again later. +ErrorDuplicateField=Duplicate value in a unique field +ErrorSomeErrorWereFoundRollbackIsDone=Some errors were found. We rollback changes. +ErrorConfigParameterNotDefined=Parameter %s is not defined inside Dolibarr config file conf.php. +ErrorCantLoadUserFromDolibarrDatabase=Failed to find user %s in Dolibarr database. +ErrorNoVATRateDefinedForSellerCountry=Error, no vat rates defined for country '%s'. +ErrorNoSocialContributionForSellerCountry=Error, no social contribution type defined for country '%s'. +ErrorFailedToSaveFile=Error, failed to save file. +SetDate=Set date +SelectDate=Select a date +SeeAlso=See also %s +SeeHere=See here +BackgroundColorByDefault=Default background color +FileNotUploaded=The file was not uploaded +FileUploaded=The file was successfully uploaded +FileWasNotUploaded=A file is selected for attachment but was not yet uploaded. Click on "Attach file" for this. +NbOfEntries=Nb of entries +GoToWikiHelpPage=Read online help (need Internet access) +GoToHelpPage=Read help +RecordSaved=Record saved +RecordDeleted=Record deleted +LevelOfFeature=Level of features +NotDefined=Not defined +DefinedAndHasThisValue=Defined and value to +IsNotDefined=undefined +DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr authentication mode is setup to %s in configuration file conf.php.
This means that password database is extern to Dolibarr, so changing this field may have no effects. +Administrator=Administrator +Undefined=Undefined +PasswordForgotten=Password forgotten ? +SeeAbove=See above +HomeArea=Home area +LastConnexion=Last connection +PreviousConnexion=Previous connection +ConnectedOnMultiCompany=Connected on environment +ConnectedSince=Connected since +AuthenticationMode=Authentification mode +RequestedUrl=Requested Url +DatabaseTypeManager=Database type manager +RequestLastAccess=Request for last database access +RequestLastAccessInError=Request for last database access in error +ReturnCodeLastAccessInError=Return code for last database access in error +InformationLastAccessInError=Information for last database access in error +DolibarrHasDetectedError=Dolibarr has detected a technical error +InformationToHelpDiagnose=This is information that can help diagnostic +MoreInformation=More information +TechnicalInformation=Technical information +NotePublic=Note (public) +NotePrivate=Note (private) +PrecisionUnitIsLimitedToXDecimals=Dolibarr was setup to limit precision of unit prices to %s decimals. +DoTest=Test +ToFilter=Filter +WarningYouHaveAtLeastOneTaskLate=Warning, you have at least one element that has exceeded the tolerance delay. +yes=yes +Yes=Yes +no=no +No=No +All=All +Home=Home +Help=Help +OnlineHelp=Online help +PageWiki=Wiki page +Always=Always +Never=Never +Under=under +Period=Period +PeriodEndDate=End date for period +Activate=Activate +Activated=Activated +Closed=Closed +Closed2=Closed +Enabled=Enabled +Deprecated=Deprecated +Disable=Disable +Disabled=Disabled +Add=Add +AddLink=Add link +Update=Update +AddActionToDo=Add event to do +AddActionDone=Add event done +Close=Close +Close2=Close +Confirm=Confirm +ConfirmSendCardByMail=Do you really want to send content of this card by mail to %s ? +Delete=Delete +Remove=Remove +Resiliate=Resiliate +Cancel=Cancel +Modify=Modify +Edit=Edit +Validate=Validate +ValidateAndApprove=Validate and Approve +ToValidate=To validate +Save=Save +SaveAs=Save As +TestConnection=Test connection +ToClone=Clone +ConfirmClone=Choose data you want to clone : +NoCloneOptionsSpecified=No data to clone defined. +Of=of +Go=Go +Run=Run +CopyOf=Copy of +Show=Show +ShowCardHere=Show card +Search=Search +SearchOf=Search +Valid=Valid +Approve=Approve +Disapprove=Disapprove +ReOpen=Re-Open +Upload=Send file +ToLink=Link +Select=Select +Choose=Choose +ChooseLangage=Please choose your language +Resize=Resize +Recenter=Recenter +Author=Author +User=User +Users=Users +Group=Group +Groups=Groups +NoUserGroupDefined=No user group defined +Password=Password +PasswordRetype=Retype your password +NoteSomeFeaturesAreDisabled=Note that a lot of features/modules are disabled in this demonstration. +Name=Name +Person=Person +Parameter=Parameter +Parameters=Parameters +Value=Value +GlobalValue=Global value +PersonalValue=Personal value +NewValue=New value +CurrentValue=Current value +Code=Code +Type=Type +Language=Language +MultiLanguage=Multi-language +Note=Note +CurrentNote=Current note +Title=Title +Label=Label +RefOrLabel=Ref. or label +Info=Log +Family=Family +Description=Description +Designation=Description +Model=Model +DefaultModel=Default model +Action=Event +About=About +Number=Number +NumberByMonth=Number by month +AmountByMonth=Amount by month +Numero=Number +Limit=Limit +Limits=Limits +DevelopmentTeam=Development Team +Logout=Logout +NoLogoutProcessWithAuthMode=No applicative disconnect feature with authentication mode %s +Connection=Connection +Setup=Setup +Alert=Alert +Previous=Previous +Next=Next +Cards=Cards +Card=Card +Now=Now +Date=Date +DateAndHour=Date and hour +DateStart=Date start +DateEnd=Date end +DateCreation=Creation date +DateModification=Modification date +DateModificationShort=Modif. date +DateLastModification=Last modification date +DateValidation=Validation date +DateClosing=Closing date +DateDue=Due date +DateValue=Value date +DateValueShort=Value date +DateOperation=Operation date +DateOperationShort=Oper. Date +DateLimit=Limit date +DateRequest=Request date +DateProcess=Process date +DatePlanShort=Date planed +DateRealShort=Date real. +DateBuild=Report build date +DatePayment=Date of payment +DurationYear=year +DurationMonth=month +DurationWeek=week +DurationDay=day +DurationYears=years +DurationMonths=months +DurationWeeks=weeks +DurationDays=days +Year=Year +Month=Month +Week=Week +Day=Day +Hour=Hour +Minute=Minute +Second=Second +Years=Years +Months=Months +Days=Days +days=days +Hours=Hours +Minutes=Minutes +Seconds=Seconds +Weeks=Weeks +Today=Today +Yesterday=Yesterday +Tomorrow=Tomorrow +Morning=Morning +Afternoon=Afternoon +Quadri=Quadri +MonthOfDay=Month of the day +HourShort=H +MinuteShort=mn +Rate=Rate +UseLocalTax=Include tax +Bytes=Bytes +KiloBytes=Kilobytes +MegaBytes=Megabytes +GigaBytes=Gigabytes +TeraBytes=Terabytes +b=b. +Kb=Kb +Mb=Mb +Gb=Gb +Tb=Tb +Cut=Cut +Copy=Copy +Paste=Paste +Default=Default +DefaultValue=Default value +DefaultGlobalValue=Global value +Price=Price +UnitPrice=Unit price +UnitPriceHT=Unit price (net) +UnitPriceTTC=Unit price +PriceU=U.P. +PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested +PriceUTTC=U.P. +Amount=Amount +AmountInvoice=Invoice amount +AmountPayment=Payment amount +AmountHTShort=Amount (net) +AmountTTCShort=Amount (inc. tax) +AmountHT=Amount (net of tax) +AmountTTC=Amount (inc. tax) +AmountVAT=Amount tax +AmountLT1=Amount tax 2 +AmountLT2=Amount tax 3 +AmountLT1ES=Amount RE +AmountLT2ES=Amount IRPF +AmountTotal=Total amount +AmountAverage=Average amount +PriceQtyHT=Price for this quantity (net of tax) +PriceQtyMinHT=Price quantity min. (net of tax) +PriceQtyTTC=Price for this quantity (inc. tax) +PriceQtyMinTTC=Price quantity min. (inc. of tax) +Percentage=Percentage +Total=Total +SubTotal=Subtotal +TotalHTShort=Total (net) +TotalTTCShort=Total (inc. tax) +TotalHT=Total (net of tax) +TotalHTforthispage=Total (net of tax) for this page +TotalTTC=Total (inc. tax) +TotalTTCToYourCredit=Total (inc. tax) to your credit +TotalVAT=Total tax +TotalLT1=Total tax 2 +TotalLT2=Total tax 3 +TotalLT1ES=Total RE +TotalLT2ES=Total IRPF +IncludedVAT=Included tax +HT=Net of tax +TTC=Inc. tax +VAT=Sales tax +LT1ES=RE +LT2ES=IRPF +VATRate=Tax Rate +Average=Average +Sum=Sum +Delta=Delta +Module=Module +Option=Option +List=List +FullList=Full list +Statistics=Statistics +OtherStatistics=Other statistics +Status=Status +Favorite=Favorite +ShortInfo=Info. +Ref=Ref. +RefSupplier=Ref. supplier +RefPayment=Ref. payment +CommercialProposalsShort=Commercial proposals +Comment=Comment +Comments=Comments +ActionsToDo=Events to do +ActionsDone=Events done +ActionsToDoShort=To do +ActionsRunningshort=Started +ActionsDoneShort=Done +ActionNotApplicable=Not applicable +ActionRunningNotStarted=To start +ActionRunningShort=Started +ActionDoneShort=Finished +ActionUncomplete=Uncomplete +CompanyFoundation=Company/Foundation +ContactsForCompany=Contacts for this third party +ContactsAddressesForCompany=Contacts/addresses for this third party +AddressesForCompany=Addresses for this third party +ActionsOnCompany=Events about this third party +ActionsOnMember=Events about this member +NActions=%s events +NActionsLate=%s late +RequestAlreadyDone=Request already recorded +Filter=Filter +RemoveFilter=Remove filter +ChartGenerated=Chart generated +ChartNotGenerated=Chart not generated +GeneratedOn=Build on %s +Generate=Generate +Duration=Duration +TotalDuration=Total duration +Summary=Summary +MyBookmarks=My bookmarks +OtherInformationsBoxes=Other information boxes +DolibarrBoard=Dolibarr board +DolibarrStateBoard=Statistics +DolibarrWorkBoard=Work tasks board +Available=Available +NotYetAvailable=Not yet available +NotAvailable=Not available +Popularity=Popularity +Categories=Categories +Category=Category +By=By +From=From +to=to +and=and +or=or +Other=Other +Others=Others +OtherInformations=Other informations +Quantity=Quantity +Qty=Qty +ChangedBy=Changed by +ReCalculate=Recalculate +ResultOk=Success +ResultKo=Failure +Reporting=Reporting +Reportings=Reporting +Draft=Draft +Drafts=Drafts +Validated=Validated +Opened=Opened +New=New +Discount=Discount +Unknown=Unknown +General=General +Size=Size +Received=Received +Paid=Paid +Topic=Sujet +ByCompanies=By third parties +ByUsers=By users +Links=Links +Link=Link +Receipts=Receipts +Rejects=Rejects +Preview=Preview +NextStep=Next step +PreviousStep=Previous step +Datas=Data +None=None +NoneF=None +Late=Late +Photo=Picture +Photos=Pictures +AddPhoto=Add picture +Login=Login +CurrentLogin=Current login +January=January +February=February +March=March +April=April +May=May +June=June +July=July +August=August +September=September +October=October +November=November +December=December +JanuaryMin=Jan +FebruaryMin=Feb +MarchMin=Mar +AprilMin=Apr +MayMin=May +JuneMin=Jun +JulyMin=Jul +AugustMin=Aug +SeptemberMin=Sep +OctoberMin=Oct +NovemberMin=Nov +DecemberMin=Dec +Month01=January +Month02=February +Month03=March +Month04=April +Month05=May +Month06=June +Month07=July +Month08=August +Month09=September +Month10=October +Month11=November +Month12=December +MonthShort01=Jan +MonthShort02=Feb +MonthShort03=Mar +MonthShort04=Apr +MonthShort05=May +MonthShort06=Jun +MonthShort07=Jul +MonthShort08=Aug +MonthShort09=Sep +MonthShort10=Oct +MonthShort11=Nov +MonthShort12=Dec +AttachedFiles=Attached files and documents +FileTransferComplete=File was uploaded successfuly +DateFormatYYYYMM=YYYY-MM +DateFormatYYYYMMDD=YYYY-MM-DD +DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS +ReportName=Report name +ReportPeriod=Report period +ReportDescription=Description +Report=Report +Keyword=Mot clé +Legend=Legend +FillTownFromZip=Fill city from zip +Fill=Fill +Reset=Reset +ShowLog=Show log +File=File +Files=Files +NotAllowed=Not allowed +ReadPermissionNotAllowed=Read permission not allowed +AmountInCurrency=Amount in %s currency +Example=Example +Examples=Examples +NoExample=No example +FindBug=Report a bug +NbOfThirdParties=Number of third parties +NbOfCustomers=Number of customers +NbOfLines=Number of lines +NbOfObjects=Number of objects +NbOfReferers=Number of referrers +Referers=Refering objects +TotalQuantity=Total quantity +DateFromTo=From %s to %s +DateFrom=From %s +DateUntil=Until %s +Check=Check +Uncheck=Uncheck +Internal=Internal +External=External +Internals=Internal +Externals=External +Warning=Warning +Warnings=Warnings +BuildPDF=Build PDF +RebuildPDF=Rebuild PDF +BuildDoc=Build Doc +RebuildDoc=Rebuild Doc +Entity=Environment +Entities=Entities +EventLogs=Logs +CustomerPreview=Customer preview +SupplierPreview=Supplier preview +AccountancyPreview=Accountancy preview +ShowCustomerPreview=Show customer preview +ShowSupplierPreview=Show supplier preview +ShowAccountancyPreview=Show accountancy preview +ShowProspectPreview=Show prospect preview +RefCustomer=Ref. customer +Currency=Currency +InfoAdmin=Information for administrators +Undo=Undo +Redo=Redo +ExpandAll=Expand all +UndoExpandAll=Undo expand +Reason=Reason +FeatureNotYetSupported=Feature not yet supported +CloseWindow=Close window +Question=Question +Response=Response +Priority=Priority +SendByMail=Send by EMail +MailSentBy=Email sent by +TextUsedInTheMessageBody=Email body +SendAcknowledgementByMail=Send Ack. by email +NoEMail=No email +NoMobilePhone=No mobile phone +Owner=Owner +DetectedVersion=Detected version +FollowingConstantsWillBeSubstituted=The following constants will be replaced with the corresponding value. +Refresh=Refresh +BackToList=Back to list +GoBack=Go back +CanBeModifiedIfOk=Can be modified if valid +CanBeModifiedIfKo=Can be modified if not valid +RecordModifiedSuccessfully=Record modified successfully +RecordsModified=%s records modified +AutomaticCode=Automatic code +NotManaged=Not managed +FeatureDisabled=Feature disabled +MoveBox=Move box %s +Offered=Offered +NotEnoughPermissions=You don't have permission for this action +SessionName=Session name +Method=Method +Receive=Receive +PartialWoman=Partial +PartialMan=Partial +TotalWoman=Total +TotalMan=Total +NeverReceived=Never received +Canceled=Canceled +YouCanChangeValuesForThisListFromDictionarySetup=You can change values for this list from menu setup - dictionary +Color=Color +Documents=Linked files +DocumentsNb=Linked files (%s) +Documents2=Documents +BuildDocuments=Generated documents +UploadDisabled=Upload disabled +MenuECM=Documents +MenuAWStats=AWStats +MenuMembers=Members +MenuAgendaGoogle=Google agenda +ThisLimitIsDefinedInSetup=Dolibarr limit (Menu home-setup-security): %s Kb, PHP limit: %s Kb +NoFileFound=No documents saved in this directory +CurrentUserLanguage=Current language +CurrentTheme=Current theme +CurrentMenuManager=Current menu manager +DisabledModules=Disabled modules +For=For +ForCustomer=For customer +Signature=Signature +HidePassword=Show command with password hidden +UnHidePassword=Show real command with clear password +Root=Root +Informations=Informations +Page=Page +Notes=Notes +AddNewLine=Add new line +AddFile=Add file +ListOfFiles=List of available files +FreeZone=Free entry +FreeLineOfType=Free entry of type +CloneMainAttributes=Clone object with its main attributes +PDFMerge=PDF Merge +Merge=Merge +PrintContentArea=Show page to print main content area +MenuManager=Menu manager +NoMenu=No sub-menu +WarningYouAreInMaintenanceMode=Warning, you are in a maintenance mode, so only login %s is allowed to use application at the moment. +CoreErrorTitle=System error +CoreErrorMessage=Sorry, an error occurred. Check the logs or contact your system administrator. +CreditCard=Credit card +FieldsWithAreMandatory=Fields with %s are mandatory +FieldsWithIsForPublic=Fields with %s are shown on public list of members. If you don't want this, check off the "public" box. +AccordingToGeoIPDatabase=(according to GeoIP convertion) +Line=Line +NotSupported=Not supported +RequiredField=Required field +Result=Result +ToTest=Test +ValidateBefore=Card must be validated before using this feature +Visibility=Visibility +Private=Private +Hidden=Hidden +Resources=Resources +Source=Source +Prefix=Prefix +Before=Before +After=After +IPAddress=IP address +Frequency=Frequency +IM=Instant messaging +NewAttribute=New attribute +AttributeCode=Attribute code +OptionalFieldsSetup=Extra attributes setup +URLPhoto=URL of photo/logo +SetLinkToThirdParty=Link to another third party +CreateDraft=Create draft +SetToDraft=Back to draft +ClickToEdit=Click to edit +ObjectDeleted=Object %s deleted +ByCountry=By country +ByTown=By town +ByDate=By date +ByMonthYear=By month/year +ByYear=By year +ByMonth=By month +ByDay=By day +BySalesRepresentative=By sales representative +LinkedToSpecificUsers=Linked to a particular user contact +DeleteAFile=Delete a file +ConfirmDeleteAFile=Are you sure you want to delete file +NoResults=No results +ModulesSystemTools=Modules tools +Test=Test +Element=Element +NoPhotoYet=No pictures available yet +HomeDashboard=Home summary +Deductible=Deductible +from=from +toward=toward +Access=Access +HelpCopyToClipboard=Use Ctrl+C to copy to clipboard +SaveUploadedFileWithMask=Save file on server with name "%s" (otherwise "%s") +OriginFileName=Original filename +SetDemandReason=Set source +SetBankAccount=Define Bank Account +AccountCurrency=Account Currency +ViewPrivateNote=View notes +XMoreLines=%s line(s) hidden +PublicUrl=Public URL +AddBox=Add box +SelectElementAndClickRefresh=Select an element and click Refresh +PrintFile=Print File %s +ShowTransaction=Show transaction +# Week day +Monday=Monday +Tuesday=Tuesday +Wednesday=Wednesday +Thursday=Thursday +Friday=Friday +Saturday=Saturday +Sunday=Sunday +MondayMin=Mo +TuesdayMin=Tu +WednesdayMin=We +ThursdayMin=Th +FridayMin=Fr +SaturdayMin=Sa +SundayMin=Su +Day1=Monday +Day2=Tuesday +Day3=Wednesday +Day4=Thursday +Day5=Friday +Day6=Saturday +Day0=Sunday +ShortMonday=M +ShortTuesday=T +ShortWednesday=W +ShortThursday=T +ShortFriday=F +ShortSaturday=S +ShortSunday=S diff --git a/htdocs/langs/sw_SW/margins.lang b/htdocs/langs/sw_SW/margins.lang new file mode 100644 index 00000000000..748b3c71f30 --- /dev/null +++ b/htdocs/langs/sw_SW/margins.lang @@ -0,0 +1,45 @@ +# Dolibarr language file - Source file is en_US - marges + +Margin=Margin +Margins=Margins +TotalMargin=Total Margin +MarginOnProducts=Margin / Products +MarginOnServices=Margin / Services +MarginRate=Margin rate +MarkRate=Mark rate +DisplayMarginRates=Display margin rates +DisplayMarkRates=Display mark rates +InputPrice=Input price +margin=Profit margins management +margesSetup=Profit margins management setup +MarginDetails=Margin details +ProductMargins=Product margins +CustomerMargins=Customer margins +SalesRepresentativeMargins=Sales representative margins +UserMargins=User margins +ProductService=Product or Service +AllProducts=All products and services +ChooseProduct/Service=Choose product or service +StartDate=Start date +EndDate=End date +Launch=Start +ForceBuyingPriceIfNull=Force buying price if null +ForceBuyingPriceIfNullDetails=if "ON", margin will be zero on line (buying price = selling price), otherwise ("OFF"), marge will be equal to selling price (buying price = 0) +MARGIN_METHODE_FOR_DISCOUNT=Margin method for global discounts +UseDiscountAsProduct=As a product +UseDiscountAsService=As a service +UseDiscountOnTotal=On subtotal +MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Defines if a global discount is treated as a product, a service, or only on subtotal for margin calculation. +MARGIN_TYPE=Margin type +MargeBrute=Raw margin +MargeNette=Net margin +MARGIN_TYPE_DETAILS=Raw margin : Selling price - Buying price
Net margin : Selling price - Cost price +CostPrice=Cost price +BuyingCost=Cost price +UnitCharges=Unit charges +Charges=Charges +AgentContactType=Commercial agent contact type +AgentContactTypeDetails=Define what contact type (linked on invoices) will be used for margin report per sale representative +rateMustBeNumeric=Rate must be a numeric value +markRateShouldBeLesserThan100=Mark rate should be lower than 100 +ShowMarginInfos=Show margin infos diff --git a/htdocs/langs/sw_SW/members.lang b/htdocs/langs/sw_SW/members.lang new file mode 100644 index 00000000000..40bca8e85fb --- /dev/null +++ b/htdocs/langs/sw_SW/members.lang @@ -0,0 +1,206 @@ +# Dolibarr language file - Source file is en_US - members +MembersArea=Members area +PublicMembersArea=Public members area +MemberCard=Member card +SubscriptionCard=Subscription card +Member=Member +Members=Members +MemberAccount=Member login +ShowMember=Show member card +UserNotLinkedToMember=User not linked to a member +ThirdpartyNotLinkedToMember=Third-party not linked to a member +MembersTickets=Members Tickets +FundationMembers=Foundation members +Attributs=Attributes +ErrorMemberTypeNotDefined=Member type not defined +ListOfPublicMembers=List of public members +ListOfValidatedPublicMembers=List of validated public members +ErrorThisMemberIsNotPublic=This member is not public +ErrorMemberIsAlreadyLinkedToThisThirdParty=Another member (name: %s, login: %s) is already linked to a third party %s. Remove this link first because a third party can't be linked to only a member (and vice versa). +ErrorUserPermissionAllowsToLinksToItselfOnly=For security reasons, you must be granted permissions to edit all users to be able to link a member to a user that is not yours. +ThisIsContentOfYourCard=This is details of your card +CardContent=Content of your member card +SetLinkToUser=Link to a Dolibarr user +SetLinkToThirdParty=Link to a Dolibarr third party +MembersCards=Members business cards +MembersList=List of members +MembersListToValid=List of draft members (to be validated) +MembersListValid=List of valid members +MembersListUpToDate=List of valid members with up to date subscription +MembersListNotUpToDate=List of valid members with subscription out of date +MembersListResiliated=List of resiliated members +MembersListQualified=List of qualified members +MenuMembersToValidate=Draft members +MenuMembersValidated=Validated members +MenuMembersUpToDate=Up to date members +MenuMembersNotUpToDate=Out of date members +MenuMembersResiliated=Resiliated members +MembersWithSubscriptionToReceive=Members with subscription to receive +DateAbonment=Subscription date +DateSubscription=Subscription date +DateNextSubscription=Next subscription +DateEndSubscription=Subscription end date +EndSubscription=End subscription +SubscriptionId=Subscription id +MemberId=Member id +NewMember=New member +NewType=New member type +MemberType=Member type +MemberTypeId=Member type id +MemberTypeLabel=Member type label +MembersTypes=Members types +MembersAttributes=Members attributes +SearchAMember=Search a member +MemberStatusDraft=Draft (needs to be validated) +MemberStatusDraftShort=Draft +MemberStatusActive=Validated (waiting subscription) +MemberStatusActiveShort=Validated +MemberStatusActiveLate=subscription expired +MemberStatusActiveLateShort=Expired +MemberStatusPaid=Subscription up to date +MemberStatusPaidShort=Up to date +MemberStatusResiliated=Resiliated member +MemberStatusResiliatedShort=Resiliated +MembersStatusToValid=Draft members +MembersStatusToValidShort=Draft members +MembersStatusValidated=Validated members +MembersStatusPaid=Subscription up to date +MembersStatusPaidShort=Up to date +MembersStatusNotPaid=Subscription out of date +MembersStatusNotPaidShort=Out of date +MembersStatusResiliated=Resiliated members +MembersStatusResiliatedShort=Resiliated members +NewCotisation=New contribution +PaymentSubscription=New contribution payment +EditMember=Edit member +SubscriptionEndDate=Subscription's end date +MembersTypeSetup=Members type setup +NewSubscription=New subscription +NewSubscriptionDesc=This form allows you to record your subscription as a new member of the foundation. If you want to renew your subscription (if already a member), please contact foundation board instead by email %s. +Subscription=Subscription +Subscriptions=Subscriptions +SubscriptionLate=Late +SubscriptionNotReceived=Subscription never received +SubscriptionLateShort=Late +SubscriptionNotReceivedShort=Never received +ListOfSubscriptions=List of subscriptions +SendCardByMail=Send card by Email +AddMember=Create member +NoTypeDefinedGoToSetup=No member types defined. Go to menu "Members types" +NewMemberType=New member type +WelcomeEMail=Welcome e-mail +SubscriptionRequired=Subscription required +EditType=Edit member type +DeleteType=Delete +VoteAllowed=Vote allowed +Physical=Physical +Moral=Moral +MorPhy=Moral/Physical +Reenable=Reenable +ResiliateMember=Resiliate a member +ConfirmResiliateMember=Are you sure you want to resiliate this member ? +DeleteMember=Delete a member +ConfirmDeleteMember=Are you sure you want to delete this member (Deleting a member will delete all his subscriptions) ? +DeleteSubscription=Delete a subscription +ConfirmDeleteSubscription=Are you sure you want to delete this subscription ? +Filehtpasswd=htpasswd file +ValidateMember=Validate a member +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 formated pages, provided as example to show how to list members database. +PublicMemberList=Public member list +BlankSubscriptionForm=Public auto-subscription form +BlankSubscriptionFormDesc=Dolibarr can provide you a public URL to allow external visitors to ask to subscribe to the foundation. If an online payment module is enabled, a payment form will also be automatically provided. +EnablePublicSubscriptionForm=Enable the public auto-subscription form +MemberPublicLinks=Public links/pages +ExportDataset_member_1=Members and subscriptions +ImportDataset_member_1=Members +LastMembers=Last %s members +LastMembersModified=Last %s modified members +LastSubscriptionsModified=Last %s modified subscriptions +AttributeName=Attribute name +String=String +Text=Text +Int=Int +Date=Date +DateAndTime=Date and time +PublicMemberCard=Member public card +MemberNotOrNoMoreExpectedToSubscribe=Member not or no more expected to subscribe +AddSubscription=Create subscription +ShowSubscription=Show subscription +MemberModifiedInDolibarr=Member modified in Dolibarr +SendAnEMailToMember=Send information email to member +DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the e-mail received in case of auto-inscription of a guest +DescADHERENT_AUTOREGISTER_NOTIF_MAIL=E-mail received in case of auto-inscription of a guest +DescADHERENT_AUTOREGISTER_MAIL_SUBJECT=EMail subject for member autosubscription +DescADHERENT_AUTOREGISTER_MAIL=EMail for member autosubscription +DescADHERENT_MAIL_VALID_SUBJECT=EMail subject for member validation +DescADHERENT_MAIL_VALID=EMail for member validation +DescADHERENT_MAIL_COTIS_SUBJECT=EMail subject for subscription +DescADHERENT_MAIL_COTIS=EMail for subscription +DescADHERENT_MAIL_RESIL_SUBJECT=EMail subject for member resiliation +DescADHERENT_MAIL_RESIL=EMail for member resiliation +DescADHERENT_MAIL_FROM=Sender EMail for automatic emails +DescADHERENT_ETIQUETTE_TYPE=Format of labels page +DescADHERENT_ETIQUETTE_TEXT=Text printed on member address sheets +DescADHERENT_CARD_TYPE=Format of cards page +DescADHERENT_CARD_HEADER_TEXT=Text printed on top of member cards +DescADHERENT_CARD_TEXT=Text printed on member cards (align on left) +DescADHERENT_CARD_TEXT_RIGHT=Text printed on member cards (align on right) +DescADHERENT_CARD_FOOTER_TEXT=Text printed on bottom of member cards +GlobalConfigUsedIfNotDefined=Text defined in Foundation module setup will be used if not defined here +MayBeOverwrited=This text can be overwrited by value defined for member's type +ShowTypeCard=Show type '%s' +HTPasswordExport=htpassword file generation +NoThirdPartyAssociatedToMember=No third party associated to this member +ThirdPartyDolibarr=Dolibarr third party +MembersAndSubscriptions= Members and Subscriptions +MoreActions=Complementary action on recording +MoreActionsOnSubscription=Complementary action, suggested by default when recording a subscription +MoreActionBankDirect=Create a direct transaction record on account +MoreActionBankViaInvoice=Create an invoice and payment on account +MoreActionInvoiceOnly=Create an invoice with no payment +LinkToGeneratedPages=Generate visit cards +LinkToGeneratedPagesDesc=This screen allows you to generate PDF files with business cards for all your members or a particular member. +DocForAllMembersCards=Generate business cards for all members +DocForOneMemberCards=Generate business cards for a particular member +DocForLabels=Generate address sheets +SubscriptionPayment=Subscription payment +LastSubscriptionDate=Last subscription date +LastSubscriptionAmount=Last subscription amount +MembersStatisticsByCountries=Members statistics by country +MembersStatisticsByState=Members statistics by state/province +MembersStatisticsByTown=Members statistics by town +MembersStatisticsByRegion=Members statistics by region +MemberByRegion=Members by region +NbOfMembers=Number of members +NoValidatedMemberYet=No validated members found +MembersByCountryDesc=This screen show you statistics on members by countries. Graphic depends however on Google online graph service and is available only if an internet connection is is working. +MembersByStateDesc=This screen show you statistics on members by state/provinces/canton. +MembersByTownDesc=This screen show you statistics on members by town. +MembersStatisticsDesc=Choose statistics you want to read... +MenuMembersStats=Statistics +LastMemberDate=Last member date +Nature=Nature +Public=Information are public +Exports=Exports +NewMemberbyWeb=New member added. Awaiting approval +NewMemberForm=New member form +SubscriptionsStatistics=Statistics on subscriptions +NbOfSubscriptions=Number of subscriptions +AmountOfSubscriptions=Amount of subscriptions +TurnoverOrBudget=Turnover (for a company) or Budget (for a foundation) +DefaultAmount=Default amount of subscription +CanEditAmount=Visitor can choose/edit amount of its subscription +MEMBER_NEWFORM_PAYONLINE=Jump on integrated online payment page +Associations=Foundations +Collectivités=Organizations +Particuliers=Personal +Entreprises=Companies +DOLIBARRFOUNDATION_PAYMENT_FORM=To make your subscription payment using a bank transfer, see page http://wiki.dolibarr.org/index.php/Subscribe.
To pay using a Credit Card or Paypal, click on button at bottom of this page.
+ByProperties=By characteristics +MembersStatisticsByProperties=Members statistics by characteristics +MembersByNature=Members by nature +VATToUseForSubscriptions=VAT rate to use for subscriptions +NoVatOnSubscription=No TVA for subscriptions +MEMBER_PAYONLINE_SENDEMAIL=Email to warn when Dolibarr receive a confirmation of a validated payment for subscription +ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for subscription line into invoice: %s diff --git a/htdocs/langs/sw_SW/opensurvey.lang b/htdocs/langs/sw_SW/opensurvey.lang new file mode 100644 index 00000000000..0b191e426ec --- /dev/null +++ b/htdocs/langs/sw_SW/opensurvey.lang @@ -0,0 +1,66 @@ +# Dolibarr language file - Source file is en_US - opensurvey +Survey=Poll +Surveys=Polls +OrganizeYourMeetingEasily=Organize your meetings and polls easily. First select type of poll... +NewSurvey=New poll +NoSurveysInDatabase=%s poll(s) into database. +OpenSurveyArea=Polls area +AddACommentForPoll=You can add a comment into poll... +AddComment=Add comment +CreatePoll=Create poll +PollTitle=Poll title +ToReceiveEMailForEachVote=Receive an email for each vote +TypeDate=Type date +TypeClassic=Type standard +OpenSurveyStep2=Select your dates amoung the free days (grey). The selected days are green. You can unselect a day previously selected by clicking again on it +RemoveAllDays=Remove all days +CopyHoursOfFirstDay=Copy hours of first day +RemoveAllHours=Remove all hours +SelectedDays=Selected days +TheBestChoice=The best choice currently is +TheBestChoices=The best choices currently are +with=with +OpenSurveyHowTo=If you agree to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line. +CommentsOfVoters=Comments of voters +ConfirmRemovalOfPoll=Are you sure you want to remove this poll (and all votes) +RemovePoll=Remove poll +UrlForSurvey=URL to communicate to get a direct access to poll +PollOnChoice=You are creating a poll to make a multi-choice for a poll. First enter all possible choices for your poll: +CreateSurveyDate=Create a date poll +CreateSurveyStandard=Create a standard poll +CheckBox=Simple checkbox +YesNoList=List (empty/yes/no) +PourContreList=List (empty/for/against) +AddNewColumn=Add new column +TitleChoice=Choice label +ExportSpreadsheet=Export result spreadsheet +ExpireDate=Limit date +NbOfSurveys=Number of polls +NbOfVoters=Nb of voters +SurveyResults=Results +PollAdminDesc=You are allowed to change all vote lines of this poll with button "Edit". You can, as well, remove a column or a line with %s. You can also add a new column with %s. +5MoreChoices=5 more choices +Abstention=Abstention +Against=Against +YouAreInivitedToVote=You are invited to vote for this poll +VoteNameAlreadyExists=This name was already used for this poll +ErrorPollDoesNotExists=Error, poll %s does not exists. +OpenSurveyNothingToSetup=There is no specific setup to do. +PollWillExpire=Your poll will expire automatically %s days after the last date of your poll. +AddADate=Add a date +AddStartHour=Add start hour +AddEndHour=Add end hour +votes=vote(s) +NoCommentYet=No comments have been posted for this poll yet +CanEditVotes=Can change vote of others +CanComment=Voters can comment in the poll +CanSeeOthersVote=Voters can see other people's vote +SelectDayDesc=For each selected day, you can choose, or not, meeting hours in the following format :
- empty,
- "8h", "8H" or "8:00" to give a meeting's start hour,
- "8-11", "8h-11h", "8H-11H" or "8:00-11:00" to give a meeting's start and end hour,
- "8h15-11h15", "8H15-11H15" or "8:15-11:15" for the same thing but with minutes. +BackToCurrentMonth=Back to current month +ErrorOpenSurveyFillFirstSection=You haven't filled the first section of the poll creation +ErrorOpenSurveyOneChoice=Enter at least one choice +ErrorOpenSurveyDateFormat=Date must have the format YYYY-MM-DD +ErrorInsertingComment=There was an error while inserting your comment +MoreChoices=Enter more choices for the voters +SurveyExpiredInfo=The voting time of this poll has expired. +EmailSomeoneVoted=%s has filled a line.\nYou can find your poll at the link: \n%s diff --git a/htdocs/langs/sw_SW/orders.lang b/htdocs/langs/sw_SW/orders.lang new file mode 100644 index 00000000000..8efafa5e94e --- /dev/null +++ b/htdocs/langs/sw_SW/orders.lang @@ -0,0 +1,166 @@ +# Dolibarr language file - Source file is en_US - orders +OrdersArea=Customers orders area +SuppliersOrdersArea=Suppliers orders area +OrderCard=Order card +OrderId=Order Id +Order=Order +Orders=Orders +OrderLine=Order line +OrderFollow=Follow up +OrderDate=Order date +OrderToProcess=Order to process +NewOrder=New order +ToOrder=Make order +MakeOrder=Make order +SupplierOrder=Supplier order +SuppliersOrders=Suppliers orders +SuppliersOrdersRunning=Current suppliers orders +CustomerOrder=Customer order +CustomersOrders=Customers orders +CustomersOrdersRunning=Current customer's orders +CustomersOrdersAndOrdersLines=Customer orders and order's lines +OrdersToValid=Customers orders to validate +OrdersToBill=Customers orders delivered +OrdersInProcess=Customers orders in process +OrdersToProcess=Customers orders to process +SuppliersOrdersToProcess=Supplier's orders to process +StatusOrderCanceledShort=Canceled +StatusOrderDraftShort=Draft +StatusOrderValidatedShort=Validated +StatusOrderSentShort=In process +StatusOrderSent=Shipment in process +StatusOrderOnProcessShort=Ordered +StatusOrderProcessedShort=Processed +StatusOrderToBillShort=Delivered +StatusOrderToBill2Short=To bill +StatusOrderApprovedShort=Approved +StatusOrderRefusedShort=Refused +StatusOrderToProcessShort=To process +StatusOrderReceivedPartiallyShort=Partially received +StatusOrderReceivedAllShort=Everything received +StatusOrderCanceled=Canceled +StatusOrderDraft=Draft (needs to be validated) +StatusOrderValidated=Validated +StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation +StatusOrderProcessed=Processed +StatusOrderToBill=Delivered +StatusOrderToBill2=To bill +StatusOrderApproved=Approved +StatusOrderRefused=Refused +StatusOrderReceivedPartially=Partially received +StatusOrderReceivedAll=Everything received +ShippingExist=A shipment exists +ProductQtyInDraft=Product quantity into draft orders +ProductQtyInDraftOrWaitingApproved=Product quantity into draft or approved orders, not yet ordered +DraftOrWaitingApproved=Draft or approved not yet ordered +DraftOrWaitingShipped=Draft or validated not yet shipped +MenuOrdersToBill=Orders delivered +MenuOrdersToBill2=Billable orders +SearchOrder=Search order +SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order +ShipProduct=Ship product +Discount=Discount +CreateOrder=Create Order +RefuseOrder=Refuse order +ApproveOrder=Accept order +ValidateOrder=Validate order +UnvalidateOrder=Unvalidate order +DeleteOrder=Delete order +CancelOrder=Cancel order +AddOrder=Create order +AddToMyOrders=Add to my orders +AddToOtherOrders=Add to other orders +AddToDraftOrders=Add to draft order +ShowOrder=Show order +NoOpenedOrders=No opened orders +NoOtherOpenedOrders=No other opened orders +NoDraftOrders=No draft orders +OtherOrders=Other orders +LastOrders=Last %s orders +LastModifiedOrders=Last %s modified orders +LastClosedOrders=Last %s closed orders +AllOrders=All orders +NbOfOrders=Number of orders +OrdersStatistics=Order's statistics +OrdersStatisticsSuppliers=Supplier order's statistics +NumberOfOrdersByMonth=Number of orders by month +AmountOfOrdersByMonthHT=Amount of orders by month (net of tax) +ListOfOrders=List of orders +CloseOrder=Close order +ConfirmCloseOrder=Are you sure you want to set this order to deliverd ? Once an order is delivered, it can be set to billed. +ConfirmCloseOrderIfSending=Are you sure you want to close this order ? You must close an order only when all shipping are done. +ConfirmDeleteOrder=Are you sure you want to delete this order ? +ConfirmValidateOrder=Are you sure you want to validate this order under name %s ? +ConfirmUnvalidateOrder=Are you sure you want to restore order %s to draft status ? +ConfirmCancelOrder=Are you sure you want to cancel this order ? +ConfirmMakeOrder=Are you sure you want to confirm you made this order on %s ? +GenerateBill=Generate invoice +ClassifyShipped=Classify delivered +ClassifyBilled=Classify billed +ComptaCard=Accountancy card +DraftOrders=Draft orders +RelatedOrders=Related orders +OnProcessOrders=In process orders +RefOrder=Ref. order +RefCustomerOrder=Ref. customer order +RefCustomerOrderShort=Ref. cust. order +SendOrderByMail=Send order by mail +ActionsOnOrder=Events on order +NoArticleOfTypeProduct=No article of type 'product' so no shippable article for this order +OrderMode=Order method +AuthorRequest=Request author +UseCustomerContactAsOrderRecipientIfExist=Use customer contact address if defined instead of third party address as order recipient address +RunningOrders=Orders on process +UserWithApproveOrderGrant=Users granted with "approve orders" permission. +PaymentOrderRef=Payment of order %s +CloneOrder=Clone order +ConfirmCloneOrder=Are you sure you want to clone this order %s ? +DispatchSupplierOrder=Receiving supplier order %s +##### Types de contacts ##### +TypeContact_commande_internal_SALESREPFOLL=Representative following-up customer order +TypeContact_commande_internal_SHIPPING=Representative following-up shipping +TypeContact_commande_external_BILLING=Customer invoice contact +TypeContact_commande_external_SHIPPING=Customer shipping contact +TypeContact_commande_external_CUSTOMER=Customer contact following-up order +TypeContact_order_supplier_internal_SALESREPFOLL=Representative following-up supplier order +TypeContact_order_supplier_internal_SHIPPING=Representative following-up shipping +TypeContact_order_supplier_external_BILLING=Supplier invoice contact +TypeContact_order_supplier_external_SHIPPING=Supplier shipping contact +TypeContact_order_supplier_external_CUSTOMER=Supplier contact following-up order + +Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Constant COMMANDE_SUPPLIER_ADDON not defined +Error_COMMANDE_ADDON_NotDefined=Constant COMMANDE_ADDON not defined +Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=Failed to load module file '%s' +Error_FailedToLoad_COMMANDE_ADDON_File=Failed to load module file '%s' +Error_OrderNotChecked=No orders to invoice selected +# Sources +OrderSource0=Commercial proposal +OrderSource1=Internet +OrderSource2=Mail campaign +OrderSource3=Phone compaign +OrderSource4=Fax campaign +OrderSource5=Commercial +OrderSource6=Store +QtyOrdered=Qty ordered +AddDeliveryCostLine=Add a delivery cost line indicating the weight of the order +# Documents models +PDFEinsteinDescription=A complete order model (logo...) +PDFEdisonDescription=A simple order model +PDFProformaDescription=A complete proforma invoice (logo…) +# Orders modes +OrderByMail=Mail +OrderByFax=Fax +OrderByEMail=EMail +OrderByWWW=Online +OrderByPhone=Phone +CreateInvoiceForThisCustomer=Bill orders +NoOrdersToInvoice=No orders billable +CloseProcessedOrdersAutomatically=Classify "Processed" all selected orders. +OrderCreation=Order creation +Ordered=Ordered +OrderCreated=Your orders have been created +OrderFail=An error happened during your orders creation +CreateOrders=Create orders +ToBillSeveralOrderSelectCustomer=To create an invoice for several orders, click first onto customer, then choose "%s". diff --git a/htdocs/langs/sw_SW/other.lang b/htdocs/langs/sw_SW/other.lang new file mode 100644 index 00000000000..08747ea884b --- /dev/null +++ b/htdocs/langs/sw_SW/other.lang @@ -0,0 +1,238 @@ +# Dolibarr language file - Source file is en_US - other +SecurityCode=Security code +Calendar=Calendar +Tools=Tools +ToolsDesc=This area is dedicated to group miscellaneous tools not available into other menu entries.

Those tools can be reached from menu on the side. +Birthday=Birthday +BirthdayDate=Birthday +DateToBirth=Date of birth +BirthdayAlertOn= birthday alert active +BirthdayAlertOff= birthday alert inactive +Notify_FICHINTER_VALIDATE=Intervention validated +Notify_FICHINTER_SENTBYMAIL=Intervention sent by mail +Notify_BILL_VALIDATE=Customer invoice validated +Notify_BILL_UNVALIDATE=Customer invoice unvalidated +Notify_ORDER_SUPPLIER_APPROVE=Supplier order approved +Notify_ORDER_SUPPLIER_REFUSE=Supplier order refused +Notify_ORDER_VALIDATE=Customer order validated +Notify_PROPAL_VALIDATE=Customer proposal validated +Notify_PROPAL_CLOSE_SIGNED=Customer propal closed signed +Notify_PROPAL_CLOSE_REFUSED=Customer propal closed refused +Notify_WITHDRAW_TRANSMIT=Transmission withdrawal +Notify_WITHDRAW_CREDIT=Credit withdrawal +Notify_WITHDRAW_EMIT=Perform withdrawal +Notify_ORDER_SENTBYMAIL=Customer order sent by mail +Notify_COMPANY_CREATE=Third party created +Notify_COMPANY_SENTBYMAIL=Mails sent from third party card +Notify_PROPAL_SENTBYMAIL=Commercial proposal sent by mail +Notify_BILL_PAYED=Customer invoice payed +Notify_BILL_CANCEL=Customer invoice canceled +Notify_BILL_SENTBYMAIL=Customer invoice sent by mail +Notify_ORDER_SUPPLIER_VALIDATE=Supplier order validated +Notify_ORDER_SUPPLIER_SENTBYMAIL=Supplier order sent by mail +Notify_BILL_SUPPLIER_VALIDATE=Supplier invoice validated +Notify_BILL_SUPPLIER_PAYED=Supplier invoice payed +Notify_BILL_SUPPLIER_SENTBYMAIL=Supplier invoice sent by mail +Notify_BILL_SUPPLIER_CANCELED=Supplier invoice cancelled +Notify_CONTRACT_VALIDATE=Contract validated +Notify_FICHEINTER_VALIDATE=Intervention validated +Notify_SHIPPING_VALIDATE=Shipping validated +Notify_SHIPPING_SENTBYMAIL=Shipping sent by mail +Notify_MEMBER_VALIDATE=Member validated +Notify_MEMBER_MODIFY=Member modified +Notify_MEMBER_SUBSCRIPTION=Member subscribed +Notify_MEMBER_RESILIATE=Member resiliated +Notify_MEMBER_DELETE=Member deleted +Notify_PROJECT_CREATE=Project creation +Notify_TASK_CREATE=Task created +Notify_TASK_MODIFY=Task modified +Notify_TASK_DELETE=Task deleted +SeeModuleSetup=See module setup +NbOfAttachedFiles=Number of attached files/documents +TotalSizeOfAttachedFiles=Total size of attached files/documents +MaxSize=Maximum size +AttachANewFile=Attach a new file/document +LinkedObject=Linked object +Miscellaneous=Miscellaneous +NbOfActiveNotifications=Number of notifications (nb of recipient emails) +PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ +PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ +PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__ +DemoDesc=Dolibarr is a compact ERP/CRM composed by several functional modules. A demo that includes all modules does not mean anything as this never occurs. So, several demo profiles are available. +ChooseYourDemoProfil=Choose the demo profile that match your activity... +DemoFundation=Manage members of a foundation +DemoFundation2=Manage members and bank account of a foundation +DemoCompanyServiceOnly=Manage a freelance activity selling service only +DemoCompanyShopWithCashDesk=Manage a shop with a cash desk +DemoCompanyProductAndStocks=Manage a small or medium company selling products +DemoCompanyAll=Manage a small or medium company with multiple activities (all main modules) +GoToDemo=Go to demo +CreatedBy=Created by %s +ModifiedBy=Modified by %s +ValidatedBy=Validated by %s +CanceledBy=Canceled by %s +ClosedBy=Closed by %s +CreatedById=User id who created +ModifiedById=User id who made last change +ValidatedById=User id who validated +CanceledById=User id who canceled +ClosedById=User id who closed +CreatedByLogin=User login who created +ModifiedByLogin=User login who made last change +ValidatedByLogin=User login who validated +CanceledByLogin=User login who canceled +ClosedByLogin=User login who closed +FileWasRemoved=File %s was removed +DirWasRemoved=Directory %s was removed +FeatureNotYetAvailableShort=Available in a next version +FeatureNotYetAvailable=Feature not yet available in this version +FeatureExperimental=Experimental feature. Not stable in this version +FeatureDevelopment=Development feature. Not stable in this version +FeaturesSupported=Features supported +Width=Width +Height=Height +Depth=Depth +Top=Top +Bottom=Bottom +Left=Left +Right=Right +CalculatedWeight=Calculated weight +CalculatedVolume=Calculated volume +Weight=Weight +TotalWeight=Total weight +WeightUnitton=tonnes +WeightUnitkg=kg +WeightUnitg=g +WeightUnitmg=mg +WeightUnitpound=pound +Length=Length +LengthUnitm=m +LengthUnitdm=dm +LengthUnitcm=cm +LengthUnitmm=mm +Surface=Area +SurfaceUnitm2=m2 +SurfaceUnitdm2=dm2 +SurfaceUnitcm2=cm2 +SurfaceUnitmm2=mm2 +SurfaceUnitfoot2=ft2 +SurfaceUnitinch2=in2 +Volume=Volume +TotalVolume=Total volume +VolumeUnitm3=m3 +VolumeUnitdm3=dm3 +VolumeUnitcm3=cm3 +VolumeUnitmm3=mm3 +VolumeUnitfoot3=ft3 +VolumeUnitinch3=in3 +VolumeUnitounce=ounce +VolumeUnitlitre=litre +VolumeUnitgallon=gallon +Size=size +SizeUnitm=m +SizeUnitdm=dm +SizeUnitcm=cm +SizeUnitmm=mm +SizeUnitinch=inch +SizeUnitfoot=foot +SizeUnitpoint=point +BugTracker=Bug tracker +SendNewPasswordDesc=This form allows you to request a new password. It will be send to your email address.
Change will be effective only after clicking on confirmation link inside this email.
Check your email reader software. +BackToLoginPage=Back to login page +AuthenticationDoesNotAllowSendNewPassword=Authentication mode is %s.
In this mode, Dolibarr can't know nor change your password.
Contact your system administrator if you want to change your password. +EnableGDLibraryDesc=Install or enable GD library with your PHP for use this option. +EnablePhpAVModuleDesc=You need to install a module compatible with your anti-virus. (Clamav : php4-clamavlib ou php5-clamavlib) +ProfIdShortDesc=Prof Id %s is an information depending on third party country.
For example, for country %s, it's code %s. +DolibarrDemo=Dolibarr ERP/CRM demo +StatsByNumberOfUnits=Statistics in number of products/services units +StatsByNumberOfEntities=Statistics in number of referring entities +NumberOfProposals=Number of proposals on last 12 month +NumberOfCustomerOrders=Number of customer orders on last 12 month +NumberOfCustomerInvoices=Number of customer invoices on last 12 month +NumberOfSupplierOrders=Number of supplier orders on last 12 month +NumberOfSupplierInvoices=Number of supplier invoices on last 12 month +NumberOfUnitsProposals=Number of units on proposals on last 12 month +NumberOfUnitsCustomerOrders=Number of units on customer orders on last 12 month +NumberOfUnitsCustomerInvoices=Number of units on customer invoices on last 12 month +NumberOfUnitsSupplierOrders=Number of units on supplier orders on last 12 month +NumberOfUnitsSupplierInvoices=Number of units on supplier invoices on last 12 month +EMailTextInterventionValidated=The intervention %s has been validated. +EMailTextInvoiceValidated=The invoice %s has been validated. +EMailTextProposalValidated=The proposal %s has been validated. +EMailTextOrderValidated=The order %s has been validated. +EMailTextOrderApproved=The order %s has been approved. +EMailTextOrderApprovedBy=The order %s has been approved by %s. +EMailTextOrderRefused=The order %s has been refused. +EMailTextOrderRefusedBy=The order %s has been refused by %s. +EMailTextExpeditionValidated=The shipping %s has been validated. +ImportedWithSet=Importation data set +DolibarrNotification=Automatic notification +ResizeDesc=Enter new width OR new height. Ratio will be kept during resizing... +NewLength=New width +NewHeight=New height +NewSizeAfterCropping=New size after cropping +DefineNewAreaToPick=Define new area on image to pick (left click on image then drag until you reach the opposite corner) +CurrentInformationOnImage=This tool was designed to help you to resize or crop an image. This is informations on current edited image +ImageEditor=Image editor +YouReceiveMailBecauseOfNotification=You receive this message because your email has been added to list of targets to be informed of particular events into %s software of %s. +YouReceiveMailBecauseOfNotification2=This event is the following: +ThisIsListOfModules=This is a list of modules preselected by this demo profile (only most common modules are visible in this demo). Edit this to have a more personalized demo and click on "Start". +ClickHere=Click here +UseAdvancedPerms=Use the advanced permissions of some modules +FileFormat=File format +SelectAColor=Choose a color +AddFiles=Add Files +StartUpload=Start upload +CancelUpload=Cancel upload +FileIsTooBig=Files is too big +PleaseBePatient=Please be patient... +RequestToResetPasswordReceived=A request to change your Dolibarr password has been received +NewKeyIs=This is your new keys to login +NewKeyWillBe=Your new key to login to software will be +ClickHereToGoTo=Click here to go to %s +YouMustClickToChange=You must however first click on the following link to validate this password change +ForgetIfNothing=If you didn't request this change, just forget this email. Your credentials are kept safe. + +##### Calendar common ##### +AddCalendarEntry=Add entry in calendar %s +NewCompanyToDolibarr=Company %s added +ContractValidatedInDolibarr=Contract %s validated +ContractCanceledInDolibarr=Contract %s canceled +ContractClosedInDolibarr=Contract %s closed +PropalClosedSignedInDolibarr=Proposal %s signed +PropalClosedRefusedInDolibarr=Proposal %s refused +PropalValidatedInDolibarr=Proposal %s validated +PropalClassifiedBilledInDolibarr=Proposal %s classified billed +InvoiceValidatedInDolibarr=Invoice %s validated +InvoicePaidInDolibarr=Invoice %s changed to paid +InvoiceCanceledInDolibarr=Invoice %s canceled +PaymentDoneInDolibarr=Payment %s done +CustomerPaymentDoneInDolibarr=Customer payment %s done +SupplierPaymentDoneInDolibarr=Supplier payment %s done +MemberValidatedInDolibarr=Member %s validated +MemberResiliatedInDolibarr=Member %s resiliated +MemberDeletedInDolibarr=Member %s deleted +MemberSubscriptionAddedInDolibarr=Subscription for member %s added +ShipmentValidatedInDolibarr=Shipment %s validated +ShipmentDeletedInDolibarr=Shipment %s deleted +##### Export ##### +Export=Export +ExportsArea=Exports area +AvailableFormats=Available formats +LibraryUsed=Librairy used +LibraryVersion=Version +ExportableDatas=Exportable data +NoExportableData=No exportable data (no modules with exportable data loaded, or missing permissions) +ToExport=Export +NewExport=New export +##### External sites ##### +ExternalSites=External sites diff --git a/htdocs/langs/sw_SW/paybox.lang b/htdocs/langs/sw_SW/paybox.lang new file mode 100644 index 00000000000..aced32a4944 --- /dev/null +++ b/htdocs/langs/sw_SW/paybox.lang @@ -0,0 +1,40 @@ +# Dolibarr language file - Source file is en_US - paybox +PayBoxSetup=PayBox module setup +PayBoxDesc=This module offer pages to allow payment on Paybox by customers. This can be used for a free payment or for a payment on a particular Dolibarr object (invoice, order, ...) +FollowingUrlAreAvailableToMakePayments=Following URLs are available to offer a page to a customer to make a payment on Dolibarr objects +PaymentForm=Payment form +WelcomeOnPaymentPage=Welcome on our online payment service +ThisScreenAllowsYouToPay=This screen allow you to make an online payment to %s. +ThisIsInformationOnPayment=This is information on payment to do +ToComplete=To complete +YourEMail=Email to receive payment confirmation +Creditor=Creditor +PaymentCode=Payment code +PayBoxDoPayment=Go on payment +YouWillBeRedirectedOnPayBox=You will be redirected on secured Paybox page to input you credit card information +PleaseBePatient=Please, be patient +Continue=Next +ToOfferALinkForOnlinePayment=URL for %s payment +ToOfferALinkForOnlinePaymentOnOrder=URL to offer a %s online payment user interface for a customer order +ToOfferALinkForOnlinePaymentOnInvoice=URL to offer a %s online payment user interface for a customer invoice +ToOfferALinkForOnlinePaymentOnContractLine=URL to offer a %s online payment user interface for a contract line +ToOfferALinkForOnlinePaymentOnFreeAmount=URL to offer a %s online payment user interface for a free amount +ToOfferALinkForOnlinePaymentOnMemberSubscription=URL to offer a %s online payment user interface for a member subscription +YouCanAddTagOnUrl=You can also add url parameter &tag=value to any of those URL (required only for free payment) to add your own payment comment tag. +SetupPayBoxToHavePaymentCreatedAutomatically=Setup your PayBox with url %s to have payment created automatically when validated by paybox. +YourPaymentHasBeenRecorded=This page confirms that your payment has been recorded. Thank you. +YourPaymentHasNotBeenRecorded=You payment has not been recorded and transaction has been canceled. Thank you. +AccountParameter=Account parameters +UsageParameter=Usage parameters +InformationToFindParameters=Help to find your %s account information +PAYBOX_CGI_URL_V2=Url of Paybox CGI module for payment +VendorName=Name of vendor +CSSUrlForPaymentForm=CSS style sheet url for payment form +MessageOK=Message on validated payment return page +MessageKO=Message on canceled payment return page +NewPayboxPaymentReceived=New Paybox payment received +NewPayboxPaymentFailed=New Paybox payment tried but failed +PAYBOX_PAYONLINE_SENDEMAIL=EMail to warn after a payment (success or failed) +PAYBOX_PBX_SITE=Value for PBX SITE +PAYBOX_PBX_RANG=Value for PBX Rang +PAYBOX_PBX_IDENTIFIANT=Value for PBX ID diff --git a/htdocs/langs/sw_SW/paypal.lang b/htdocs/langs/sw_SW/paypal.lang new file mode 100644 index 00000000000..65a3dc45a23 --- /dev/null +++ b/htdocs/langs/sw_SW/paypal.lang @@ -0,0 +1,25 @@ +# Dolibarr language file - Source file is en_US - paypal +PaypalSetup=PayPal module setup +PaypalDesc=This module offer pages to allow payment on PayPal by customers. This can be used for a free payment or for a payment on a particular Dolibarr object (invoice, order, ...) +PaypalOrCBDoPayment=Pay with credit card or Paypal +PaypalDoPayment=Pay with Paypal +PaypalCBDoPayment=Pay with credit card +PAYPAL_API_SANDBOX=Mode test/sandbox +PAYPAL_API_USER=API username +PAYPAL_API_PASSWORD=API password +PAYPAL_API_SIGNATURE=API signature +PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Offer payment "integral" (Credit card+Paypal) or "Paypal" only +PaypalModeIntegral=Integral +PaypalModeOnlyPaypal=PayPal only +PAYPAL_CSS_URL=Optionnal Url of CSS style sheet on payment page +ThisIsTransactionId=This is id of transaction: %s +PAYPAL_ADD_PAYMENT_URL=Add the url of Paypal payment when you send a document by mail +PAYPAL_IPN_MAIL_ADDRESS=E-mail address for the instant notification of payment (IPN) +PredefinedMailContentLink=You can click on the secure link below to make your payment (PayPal) if it is not already done.\n\n%s\n\n +YouAreCurrentlyInSandboxMode=You are currently in the "sandbox" mode +NewPaypalPaymentReceived=New Paypal payment received +NewPaypalPaymentFailed=New Paypal payment tried but failed +PAYPAL_PAYONLINE_SENDEMAIL=EMail to warn after a payment (success or not) +ReturnURLAfterPayment=Return URL after payment +ValidationOfPaypalPaymentFailed=Validation of Paypal payment failed +PaypalConfirmPaymentPageWasCalledButFailed=Payment confirmation page for Paypal was called by Paypal but confirmation failed diff --git a/htdocs/langs/sw_SW/printipp.lang b/htdocs/langs/sw_SW/printipp.lang new file mode 100644 index 00000000000..835e6827f12 --- /dev/null +++ b/htdocs/langs/sw_SW/printipp.lang @@ -0,0 +1,14 @@ +# Dolibarr language file - Source file is en_US - printipp +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This module adds a Print button to send documents directly to a printer. It requires a Linux system with CUPS installed. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server diff --git a/htdocs/langs/sw_SW/productbatch.lang b/htdocs/langs/sw_SW/productbatch.lang new file mode 100644 index 00000000000..45263681965 --- /dev/null +++ b/htdocs/langs/sw_SW/productbatch.lang @@ -0,0 +1,21 @@ +# ProductBATCH language file - en_US - ProductBATCH +ManageLotSerial=Use batch/serial number +ProductStatusOnBatch=Yes (Batch/serial required) +ProductStatusNotOnBatch=No (Batch/serial not used) +ProductStatusOnBatchShort=Yes +ProductStatusNotOnBatchShort=No +Batch=Batch/Serial +atleast1batchfield=Eat-by date or Sell-by date or Batch number +batch_number=Batch/Serial number +l_eatby=Eat-by date +l_sellby=Sell-by date +DetailBatchNumber=Batch/Serial details +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) +printBatch=Batch: %s +printEatby=Eat-by: %s +printSellby=Sell-by: %s +printQty=Qty: %d +AddDispatchBatchLine=Add a line for Shelf Life dispatching +BatchDefaultNumber=Undefined +WhenProductBatchModuleOnOptionAreForced=When module Batch/Serial is on, increase/decrease stock mode is forced to last choice and can't be edited. Other options can be defined as you want. +ProductDoesNotUseBatchSerial=This product does not use batch/serial number diff --git a/htdocs/langs/sw_SW/products.lang b/htdocs/langs/sw_SW/products.lang new file mode 100644 index 00000000000..3a18cda69e7 --- /dev/null +++ b/htdocs/langs/sw_SW/products.lang @@ -0,0 +1,256 @@ +# Dolibarr language file - Source file is en_US - products +ProductRef=Product ref. +ProductLabel=Product label +ProductServiceCard=Products/Services card +Products=Products +Services=Services +Product=Product +Service=Service +ProductId=Product/service id +Create=Create +Reference=Reference +NewProduct=New product +NewService=New service +ProductCode=Product code +ServiceCode=Service code +ProductVatMassChange=Mass VAT change +ProductVatMassChangeDesc=This page can be used to modify a VAT rate defined on products or services from a value to another. Warning, this change is done on all database. +MassBarcodeInit=Mass barcode init +MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. +ProductAccountancyBuyCode=Accountancy code (buy) +ProductAccountancySellCode=Accountancy code (sell) +ProductOrService=Product or Service +ProductsAndServices=Products and Services +ProductsOrServices=Products or Services +ProductsAndServicesOnSell=Products and Services for sale or for purchase +ProductsAndServicesNotOnSell=Products and Services out of sale +ProductsAndServicesStatistics=Products and Services statistics +ProductsStatistics=Products statistics +ProductsOnSell=Product for sale or for pruchase +ProductsNotOnSell=Product out of sale and out of purchase +ProductsOnSellAndOnBuy=Products for sale and for purchase +ServicesOnSell=Services for sale or for purchase +ServicesNotOnSell=Services out of sale +ServicesOnSellAndOnBuy=Services for sale and for purchase +InternalRef=Internal reference +LastRecorded=Last products/services on sell recorded +LastRecordedProductsAndServices=Last %s recorded products/services +LastModifiedProductsAndServices=Last %s modified products/services +LastRecordedProducts=Last %s products recorded +LastRecordedServices=Last %s services recorded +LastProducts=Last products +CardProduct0=Product card +CardProduct1=Service card +CardContract=Contract card +Warehouse=Warehouse +Warehouses=Warehouses +WarehouseOpened=Warehouse opened +WarehouseClosed=Warehouse closed +Stock=Stock +Stocks=Stocks +Movement=Movement +Movements=Movements +Sell=Sales +Buy=Purchases +OnSell=For sale +OnBuy=For purchase +NotOnSell=Not for sale +ProductStatusOnSell=For sale +ProductStatusNotOnSell=Not for sale +ProductStatusOnSellShort=For sale +ProductStatusNotOnSellShort=Not for sale +ProductStatusOnBuy=For purchase +ProductStatusNotOnBuy=Not for purchase +ProductStatusOnBuyShort=For purchase +ProductStatusNotOnBuyShort=Not for purchase +UpdatePrice=Update price +AppliedPricesFrom=Applied prices from +SellingPrice=Selling price +SellingPriceHT=Selling price (net of tax) +SellingPriceTTC=Selling price (inc. tax) +PublicPrice=Public price +CurrentPrice=Current price +NewPrice=New price +MinPrice=Minim. selling price +MinPriceHT=Minim. selling price (net of tax) +MinPriceTTC=Minim. selling price (inc. tax) +CantBeLessThanMinPrice=The selling price can't be lower than minimum allowed for this product (%s without tax). This message can also appears if you type a too important discount. +ContractStatus=Contract status +ContractStatusClosed=Closed +ContractStatusRunning=Running +ContractStatusExpired=expired +ContractStatusOnHold=Not running +ContractStatusToRun=To get running +ContractNotRunning=This contract is not running +ErrorProductAlreadyExists=A product with reference %s already exists. +ErrorProductBadRefOrLabel=Wrong value for reference or label. +ErrorProductClone=There was a problem while trying to clone the product or service. +ErrorPriceCantBeLowerThanMinPrice=Error Price Can't Be Lower Than Minimum Price. +Suppliers=Suppliers +SupplierRef=Supplier's product ref. +ShowProduct=Show product +ShowService=Show service +ProductsAndServicesArea=Product and Services area +ProductsArea=Product area +ServicesArea=Services area +AddToMyProposals=Add to my proposals +AddToOtherProposals=Add to other proposals +AddToMyBills=Add to my bills +AddToOtherBills=Add to other bills +CorrectStock=Correct stock +AddPhoto=Add photo +ListOfStockMovements=List of stock movements +BuyingPrice=Buying price +SupplierCard=Supplier card +CommercialCard=Commercial card +AllWays=Path to find your product in stock +NoCat=Your product is not in any category +PrimaryWay=Primary path +PriceRemoved=Price removed +BarCode=Barcode +BarcodeType=Barcode type +SetDefaultBarcodeType=Set barcode type +BarcodeValue=Barcode value +NoteNotVisibleOnBill=Note (not visible on invoices, proposals...) +CreateCopy=Create copy +ServiceLimitedDuration=If product is a service with limited duration: +MultiPricesAbility=Several level of prices per product/service +MultiPricesNumPrices=Number of prices +MultiPriceLevelsName=Price categories +AssociatedProductsAbility=Activate the virtual package feature +AssociatedProducts=Package product +AssociatedProductsNumber=Number of products composing this virtual package product +ParentProductsNumber=Number of parent packaging product +IfZeroItIsNotAVirtualProduct=If 0, this product is not a virtual package product +IfZeroItIsNotUsedByVirtualProduct=If 0, this product is not used by any virtual package product +EditAssociate=Associate +Translation=Translation +KeywordFilter=Keyword filter +CategoryFilter=Category filter +ProductToAddSearch=Search product to add +AddDel=Add/Delete +Quantity=Quantity +NoMatchFound=No match found +ProductAssociationList=List of related products/services: name of product/service (quantity affected) +ProductParentList=List of package products/services with this product as a component +ErrorAssociationIsFatherOfThis=One of selected product is parent with current product +DeleteProduct=Delete a product/service +ConfirmDeleteProduct=Are you sure you want to delete this product/service? +ProductDeleted=Product/Service "%s" deleted from database. +DeletePicture=Delete a picture +ConfirmDeletePicture=Are you sure you want to delete this picture ? +ExportDataset_produit_1=Products +ExportDataset_service_1=Services +ImportDataset_produit_1=Products +ImportDataset_service_1=Services +DeleteProductLine=Delete product line +ConfirmDeleteProductLine=Are you sure you want to delete this product line? +NoProductMatching=No product/service match your criteria +MatchingProducts=Matching products/services +NoStockForThisProduct=No stock for this product +NoStock=No Stock +Restock=Restock +ProductSpecial=Special +QtyMin=Minimum Qty +PriceQty=Price for this quantity +PriceQtyMin=Price for this min. qty (w/o discount) +VATRateForSupplierProduct=VAT Rate (for this supplier/product) +DiscountQtyMin=Default discount for qty +NoPriceDefinedForThisSupplier=No price/qty defined for this supplier/product +NoSupplierPriceDefinedForThisProduct=No supplier price/qty defined for this product +RecordedProducts=Products recorded +RecordedServices=Services recorded +RecordedProductsAndServices=Products/services recorded +PredefinedProductsToSell=Predefined products to sell +PredefinedServicesToSell=Predefined services to sell +PredefinedProductsAndServicesToSell=Predefined products/services to sell +PredefinedProductsToPurchase=Predefined product to purchase +PredefinedServicesToPurchase=Predefined services to purchase +PredefinedProductsAndServicesToPurchase=Predefined products/services to puchase +GenerateThumb=Generate thumb +ProductCanvasAbility=Use special "canvas" addons +ServiceNb=Service #%s +ListProductServiceByPopularity=List of products/services by popularity +ListProductByPopularity=List of products by popularity +ListServiceByPopularity=List of services by popularity +Finished=Manufactured product +RowMaterial=Raw Material +CloneProduct=Clone product or service +ConfirmCloneProduct=Are you sure you want to clone product or service %s ? +CloneContentProduct=Clone all main informations of product/service +ClonePricesProduct=Clone main informations and prices +CloneCompositionProduct=Clone packaged product/services +ProductIsUsed=This product is used +NewRefForClone=Ref. of new product/service +CustomerPrices=Customers prices +SuppliersPrices=Suppliers prices +SuppliersPricesOfProductsOrServices=Suppliers prices (of products or services) +CustomCode=Customs code +CountryOrigin=Origin country +HiddenIntoCombo=Hidden into select lists +Nature=Nature +ProductCodeModel=Product ref template +ServiceCodeModel=Service ref template +AddThisProductCard=Create product card +HelpAddThisProductCard=This option allows you to create or clone a product if it does not exist. +AddThisServiceCard=Create service card +HelpAddThisServiceCard=This option allows you to create or clone a service if it does not exist. +CurrentProductPrice=Current price +AlwaysUseNewPrice=Always use current price of product/service +AlwaysUseFixedPrice=Use the fixed price +PriceByQuantity=Different prices by quantity +PriceByQuantityRange=Quantity range +ProductsDashboard=Products/Services summary +UpdateOriginalProductLabel=Modify original label +HelpUpdateOriginalProductLabel=Allows to edit the name of the product +### composition fabrication +Building=Production and items dispatchment +Build=Produce +BuildIt=Produce & Dispatch +BuildindListInfo=Available quantity for production per warehouse (set it to 0 for no further action) +QtyNeed=Qty +UnitPmp=Net unit VWAP +CostPmpHT=Net total VWAP +ProductUsedForBuild=Auto consumed by production +ProductBuilded=Production completed +ProductsMultiPrice=Product multi-price +ProductsOrServiceMultiPrice=Customers prices (of products or services, multi-prices) +ProductSellByQuarterHT=Products turnover quarterly VWAP +ServiceSellByQuarterHT=Services turnover quarterly VWAP +Quarter1=1st. Quarter +Quarter2=2nd. Quarter +Quarter3=3rd. Quarter +Quarter4=4th. Quarter +BarCodePrintsheet=Print bar code +PageToGenerateBarCodeSheets=With this tool, you can print sheets of bar code stickers. Choose format of your sticker page, type of barcode and value of barcode, then click on button %s. +NumberOfStickers=Number of stickers to print on page +PrintsheetForOneBarCode=Print several stickers for one barcode +BuildPageToPrint=Generate page to print +FillBarCodeTypeAndValueManually=Fill barcode type and value manually. +FillBarCodeTypeAndValueFromProduct=Fill barcode type and value from barcode of a product. +FillBarCodeTypeAndValueFromThirdParty=Fill barcode type and value from barcode of a thirdparty. +DefinitionOfBarCodeForProductNotComplete=Definition of type or value of bar code not complete for product %s. +DefinitionOfBarCodeForThirdpartyNotComplete=Definition of type or value of bar code non complete for thirdparty %s. +BarCodeDataForProduct=Barcode information of product %s : +BarCodeDataForThirdparty=Barcode information of thirdparty %s : +ResetBarcodeForAllRecords=Define barcode value for all records (this will also reset barcode value already defined with new values) +PriceByCustomer=Different price for each customer +PriceCatalogue=Unique price per product/service +PricingRule=Rules for customer prices +AddCustomerPrice=Add price by customers +ForceUpdateChildPriceSoc=Set same price on customer subsidiaries +PriceByCustomerLog=Price by customer log +MinimumPriceLimit=Minimum price can't be lower that %s +MinimumRecommendedPrice=Minimum recommended price is : %s +PriceExpressionEditor=Price expression editor +PriceExpressionSelected=Selected price expression +PriceExpressionEditorHelp1="price = 2 + 2" or "2 + 2" for setting the price. Use ; to separate expressions +PriceExpressionEditorHelp2=You can access ExtraFields with variables like #options_myextrafieldkey# +PriceExpressionEditorHelp3=In both product/service and supplier prices there are these variables available:
#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min# +PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# +PriceMode=Price mode +PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/sw_SW/projects.lang b/htdocs/langs/sw_SW/projects.lang new file mode 100644 index 00000000000..0a12f4c64b7 --- /dev/null +++ b/htdocs/langs/sw_SW/projects.lang @@ -0,0 +1,142 @@ +# Dolibarr language file - Source file is en_US - projects +RefProject=Ref. project +ProjectId=Project Id +Project=Project +Projects=Projects +ProjectStatus=Project status +SharedProject=Everybody +PrivateProject=Contacts of project +MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). +ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. +ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). +MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). +TasksPublicDesc=This view presents all projects and tasks you are allowed to read. +TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). +ProjectsArea=Projects area +NewProject=New project +AddProject=Create project +DeleteAProject=Delete a project +DeleteATask=Delete a task +ConfirmDeleteAProject=Are you sure you want to delete this project ? +ConfirmDeleteATask=Are you sure you want to delete this task ? +OfficerProject=Officer project +LastProjects=Last %s projects +AllProjects=All projects +ProjectsList=List of projects +ShowProject=Show project +SetProject=Set project +NoProject=No project defined or owned +NbOpenTasks=Nb of opened tasks +NbOfProjects=Nb of projects +TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user +TimesSpent=Time spent +RefTask=Ref. task +LabelTask=Label task +TaskTimeSpent=Time spent on tasks +TaskTimeUser=User +TaskTimeNote=Note +TaskTimeDate=Date +TasksOnOpenedProject=Tasks on opened projects +WorkloadNotDefined=Workload not defined +NewTimeSpent=New time spent +MyTimeSpent=My time spent +MyTasks=My tasks +Tasks=Tasks +Task=Task +TaskDateStart=Task start date +TaskDateEnd=Task end date +TaskDescription=Task description +NewTask=New task +AddTask=Create task +AddDuration=Add duration +Activity=Activity +Activities=Tasks/activities +MyActivity=My activity +MyActivities=My tasks/activities +MyProjects=My projects +DurationEffective=Effective duration +Progress=Progress +ProgressDeclared=Declared progress +ProgressCalculated=Calculated progress +Time=Time +ListProposalsAssociatedProject=List of the commercial proposals associated with the project +ListOrdersAssociatedProject=List of customer's orders associated with the project +ListInvoicesAssociatedProject=List of customer's invoices associated with the project +ListPredefinedInvoicesAssociatedProject=List of customer's predefined invoices associated with project +ListSupplierOrdersAssociatedProject=List of supplier's orders associated with the project +ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated with the project +ListContractAssociatedProject=List of contracts associated with the project +ListFichinterAssociatedProject=List of interventions associated with the project +ListExpenseReportsAssociatedProject=List of expense reports associated with the project +ListActionsAssociatedProject=List of events associated with the project +ActivityOnProjectThisWeek=Activity on project this week +ActivityOnProjectThisMonth=Activity on project this month +ActivityOnProjectThisYear=Activity on project this year +ChildOfTask=Child of project/task +NotOwnerOfProject=Not owner of this private project +AffectedTo=Allocated to +CantRemoveProject=This project can't be removed as it is referenced by some other objects (invoice, orders or other). See referers tab. +ValidateProject=Validate projet +ConfirmValidateProject=Are you sure you want to validate this project ? +CloseAProject=Close project +ConfirmCloseAProject=Are you sure you want to close this project ? +ReOpenAProject=Open project +ConfirmReOpenAProject=Are you sure you want to re-open this project ? +ProjectContact=Project contacts +ActionsOnProject=Events on project +YouAreNotContactOfProject=You are not a contact of this private project +DeleteATimeSpent=Delete time spent +ConfirmDeleteATimeSpent=Are you sure you want to delete this time spent ? +DoNotShowMyTasksOnly=See also tasks not assigned to me +ShowMyTasksOnly=View only tasks assigned to me +TaskRessourceLinks=Ressources +ProjectsDedicatedToThisThirdParty=Projects dedicated to this third party +NoTasks=No tasks for this project +LinkedToAnotherCompany=Linked to other third party +TaskIsNotAffectedToYou=Task not assigned to you +ErrorTimeSpentIsEmpty=Time spent is empty +ThisWillAlsoRemoveTasks=This action will also delete all tasks of project (%s tasks at the moment) and all inputs of time spent. +IfNeedToUseOhterObjectKeepEmpty=If some objects (invoice, order, ...), belonging to another third party, must be linked to the project to create, keep this empty to have the project being multi third parties. +CloneProject=Clone project +CloneTasks=Clone tasks +CloneContacts=Clone contacts +CloneNotes=Clone notes +CloneProjectFiles=Clone project joined files +CloneTaskFiles=Clone task(s) joined files (if task(s) cloned) +CloneMoveDate=Update project/tasks dates from now ? +ConfirmCloneProject=Are you sure to clone this project ? +ProjectReportDate=Change task date according project start date +ErrorShiftTaskDate=Impossible to shift task date according to new project start date +ProjectsAndTasksLines=Projects and tasks +ProjectCreatedInDolibarr=Project %s created +TaskCreatedInDolibarr=Task %s created +TaskModifiedInDolibarr=Task %s modified +TaskDeletedInDolibarr=Task %s deleted +##### Types de contacts ##### +TypeContact_project_internal_PROJECTLEADER=Project leader +TypeContact_project_external_PROJECTLEADER=Project leader +TypeContact_project_internal_PROJECTCONTRIBUTOR=Contributor +TypeContact_project_external_PROJECTCONTRIBUTOR=Contributor +TypeContact_project_task_internal_TASKEXECUTIVE=Task executive +TypeContact_project_task_external_TASKEXECUTIVE=Task executive +TypeContact_project_task_internal_TASKCONTRIBUTOR=Contributor +TypeContact_project_task_external_TASKCONTRIBUTOR=Contributor +SelectElement=Select element +AddElement=Link to element +UnlinkElement=Unlink element +# Documents models +DocumentModelBaleine=A complete project's report model (logo...) +PlannedWorkload = Planned workload +WorkloadOccupation= Workload affectation +ProjectReferers=Refering objects +SearchAProject=Search a project +ProjectMustBeValidatedFirst=Project must be validated first +ProjectDraft=Draft projects +FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerTime=Input per time +InputPerDay=Input per day +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/sw_SW/propal.lang b/htdocs/langs/sw_SW/propal.lang new file mode 100644 index 00000000000..2b6d12870a1 --- /dev/null +++ b/htdocs/langs/sw_SW/propal.lang @@ -0,0 +1,100 @@ +# Dolibarr language file - Source file is en_US - propal +Proposals=Commercial proposals +Proposal=Commercial proposal +ProposalShort=Proposal +ProposalsDraft=Draft commercial proposals +ProposalDraft=Draft commercial proposal +ProposalsOpened=Opened commercial proposals +Prop=Commercial proposals +CommercialProposal=Commercial proposal +CommercialProposals=Commercial proposals +ProposalCard=Proposal card +NewProp=New commercial proposal +NewProposal=New commercial proposal +NewPropal=New proposal +Prospect=Prospect +ProspectList=Prospect list +DeleteProp=Delete commercial proposal +ValidateProp=Validate commercial proposal +AddProp=Create proposal +ConfirmDeleteProp=Are you sure you want to delete this commercial proposal ? +ConfirmValidateProp=Are you sure you want to validate this commercial proposal under name %s ? +LastPropals=Last %s proposals +LastClosedProposals=Last %s closed proposals +LastModifiedProposals=Last %s modified proposals +AllPropals=All proposals +LastProposals=Last proposals +SearchAProposal=Search a proposal +ProposalsStatistics=Commercial proposal's statistics +NumberOfProposalsByMonth=Number by month +AmountOfProposalsByMonthHT=Amount by month (net of tax) +NbOfProposals=Number of commercial proposals +ShowPropal=Show proposal +PropalsDraft=Drafts +PropalsOpened=Opened +PropalsNotBilled=Closed not billed +PropalStatusDraft=Draft (needs to be validated) +PropalStatusValidated=Validated (proposal is open) +PropalStatusOpened=Validated (proposal is open) +PropalStatusClosed=Closed +PropalStatusSigned=Signed (needs billing) +PropalStatusNotSigned=Not signed (closed) +PropalStatusBilled=Billed +PropalStatusDraftShort=Draft +PropalStatusValidatedShort=Validated +PropalStatusOpenedShort=Opened +PropalStatusClosedShort=Closed +PropalStatusSignedShort=Signed +PropalStatusNotSignedShort=Not signed +PropalStatusBilledShort=Billed +PropalsToClose=Commercial proposals to close +PropalsToBill=Signed commercial proposals to bill +ListOfProposals=List of commercial proposals +ActionsOnPropal=Events on proposal +NoOpenedPropals=No opened commercial proposals +NoOtherOpenedPropals=No other opened commercial proposals +RefProposal=Commercial proposal ref +SendPropalByMail=Send commercial proposal by mail +AssociatedDocuments=Documents associated with the proposal: +ErrorCantOpenDir=Can't open directory +DatePropal=Date of proposal +DateEndPropal=Validity ending date +DateEndPropalShort=Date end +ValidityDuration=Validity duration +CloseAs=Close with status +ClassifyBilled=Classify billed +BuildBill=Build invoice +ErrorPropalNotFound=Propal %s not found +Estimate=Estimate : +EstimateShort=Estimate +OtherPropals=Other proposals +AddToDraftProposals=Add to draft proposal +NoDraftProposals=No draft proposals +CopyPropalFrom=Create commercial proposal by copying existing proposal +CreateEmptyPropal=Create empty commercial proposals vierge or from list of products/services +DefaultProposalDurationValidity=Default commercial proposal validity duration (in days) +UseCustomerContactAsPropalRecipientIfExist=Use customer contact address if defined instead of third party address as proposal recipient address +ClonePropal=Clone commercial proposal +ConfirmClonePropal=Are you sure you want to clone the commercial proposal %s ? +ConfirmReOpenProp=Are you sure you want to open back the commercial proposal %s ? +ProposalsAndProposalsLines=Commercial proposal and lines +ProposalLine=Proposal line +AvailabilityPeriod=Availability delay +SetAvailability=Set availability delay +AfterOrder=after order +##### Availability ##### +AvailabilityTypeAV_NOW=Immediate +AvailabilityTypeAV_1W=1 week +AvailabilityTypeAV_2W=2 weeks +AvailabilityTypeAV_3W=3 weeks +AvailabilityTypeAV_1M=1 month +##### Types de contacts ##### +TypeContact_propal_internal_SALESREPFOLL=Representative following-up proposal +TypeContact_propal_external_BILLING=Customer invoice contact +TypeContact_propal_external_CUSTOMER=Customer contact following-up proposal +# Document models +DocModelAzurDescription=A complete proposal model (logo...) +DocModelJauneDescription=Jaune proposal model +DefaultModelPropalCreate=Default model creation +DefaultModelPropalToBill=Default template when closing a business proposal (to be invoiced) +DefaultModelPropalClosed=Default template when closing a business proposal (unbilled) diff --git a/htdocs/langs/sw_SW/resource.lang b/htdocs/langs/sw_SW/resource.lang new file mode 100644 index 00000000000..32bdd92f884 --- /dev/null +++ b/htdocs/langs/sw_SW/resource.lang @@ -0,0 +1,34 @@ + +MenuResourceIndex=Resources +MenuResourceAdd=New resource +MenuResourcePlanning=Resource planning +DeleteResource=Delete resource +ConfirmDeleteResourceElement=Confirm delete the resource for this element +NoResourceInDatabase=No resource in database. +NoResourceLinked=No resource linked + +ResourcePageIndex=Resources list +ResourceSingular=Resource +ResourceCard=Resource card +AddResource=Create a resource +ResourceFormLabel_ref=Resource name +ResourceType=Resource type +ResourceFormLabel_description=Resource description + +ResourcesLinkedToElement=Resources linked to element + +ShowResourcePlanning=Show resource planning +GotoDate=Go to date + +ResourceElementPage=Element resources +ResourceCreatedWithSuccess=Resource successfully created +RessourceLineSuccessfullyDeleted=Resource line successfully deleted +RessourceLineSuccessfullyUpdated=Resource line successfully updated +ResourceLinkedWithSuccess=Resource linked with success + +TitleResourceCard=Resource card +ConfirmDeleteResource=Confirm to delete this resource +RessourceSuccessfullyDeleted=Resource successfully deleted +DictionaryResourceType=Type of resources + +SelectResource=Select resource diff --git a/htdocs/langs/sw_SW/salaries.lang b/htdocs/langs/sw_SW/salaries.lang new file mode 100644 index 00000000000..28c21adfad3 --- /dev/null +++ b/htdocs/langs/sw_SW/salaries.lang @@ -0,0 +1,13 @@ +# Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge +Salary=Salary +Salaries=Salaries +Employee=Employee +NewSalaryPayment=New salary payment +SalaryPayment=Salary payment +SalariesPayments=Salaries payments +ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/sw_SW/sendings.lang b/htdocs/langs/sw_SW/sendings.lang new file mode 100644 index 00000000000..b1ff55f71c1 --- /dev/null +++ b/htdocs/langs/sw_SW/sendings.lang @@ -0,0 +1,85 @@ +# Dolibarr language file - Source file is en_US - sendings +RefSending=Ref. shipment +Sending=Shipment +Sendings=Shipments +Shipment=Shipment +Shipments=Shipments +ShowSending=Show Sending +Receivings=Receipts +SendingsArea=Shipments area +ListOfSendings=List of shipments +SendingMethod=Shipping method +SendingReceipt=Shipping receipt +LastSendings=Last %s shipments +SearchASending=Search for shipment +StatisticsOfSendings=Statistics for shipments +NbOfSendings=Number of shipments +NumberOfShipmentsByMonth=Number of shipments by month +SendingCard=Shipment card +NewSending=New shipment +CreateASending=Create a shipment +CreateSending=Create shipment +QtyOrdered=Qty ordered +QtyShipped=Qty shipped +QtyToShip=Qty to ship +QtyReceived=Qty received +KeepToShip=Remain to ship +OtherSendingsForSameOrder=Other shipments for this order +DateSending=Date sending order +DateSendingShort=Date sending order +SendingsForSameOrder=Shipments for this order +SendingsAndReceivingForSameOrder=Shipments and receivings for this order +SendingsToValidate=Shipments to validate +StatusSendingCanceled=Canceled +StatusSendingDraft=Draft +StatusSendingValidated=Validated (products to ship or already shipped) +StatusSendingProcessed=Processed +StatusSendingCanceledShort=Canceled +StatusSendingDraftShort=Draft +StatusSendingValidatedShort=Validated +StatusSendingProcessedShort=Processed +SendingSheet=Shipment sheet +Carriers=Carriers +Carrier=Carrier +CarriersArea=Carriers area +NewCarrier=New carrier +ConfirmDeleteSending=Are you sure you want to delete this shipment ? +ConfirmValidateSending=Are you sure you want to validate this shipment with reference %s ? +ConfirmCancelSending=Are you sure you want to cancel this shipment ? +GenericTransport=Generic transport +Enlevement=Gotten by customer +DocumentModelSimple=Simple document model +DocumentModelMerou=Merou A5 model +WarningNoQtyLeftToSend=Warning, no products waiting to be shipped. +StatsOnShipmentsOnlyValidated=Statistics conducted on shipments only validated. Date used is date of validation of shipment (planed delivery date is not always known). +DateDeliveryPlanned=Planed date of delivery +DateReceived=Date delivery received +SendShippingByEMail=Send shipment by EMail +SendShippingRef=Submission of shipment %s +ActionsOnShipping=Events on shipment +LinkToTrackYourPackage=Link to track your package +ShipmentCreationIsDoneFromOrder=For the moment, creation of a new shipment is done from the order card. +RelatedShippings=Related shipments +ShipmentLine=Shipment line +CarrierList=List of transporters +SendingRunning=Product from ordered customer orders +SuppliersReceiptRunning=Product from ordered supplier orders +ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders +ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders +ProductQtyInShipmentAlreadySent=Product quantity from opended customer order already sent +ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received + +# Sending methods +SendingMethodCATCH=Catch by customer +SendingMethodTRANS=Transporter +SendingMethodCOLSUI=Colissimo +# ModelDocument +DocumentModelSirocco=Simple document model for delivery receipts +DocumentModelTyphon=More complete document model for delivery receipts (logo...) +Error_EXPEDITION_ADDON_NUMBER_NotDefined=Constant EXPEDITION_ADDON_NUMBER not defined +SumOfProductVolumes=Sum of product volumes +SumOfProductWeights=Sum of product weights + +# warehouse details +DetailWarehouseNumber= Warehouse details +DetailWarehouseFormat= W:%s (Qty : %d) diff --git a/htdocs/langs/sw_SW/sms.lang b/htdocs/langs/sw_SW/sms.lang new file mode 100644 index 00000000000..4e89bb24730 --- /dev/null +++ b/htdocs/langs/sw_SW/sms.lang @@ -0,0 +1,53 @@ +# Dolibarr language file - Source file is en_US - sms +Sms=Sms +SmsSetup=Sms setup +SmsDesc=This page allows you to define globals options on SMS features +SmsCard=SMS Card +AllSms=All SMS campains +SmsTargets=Targets +SmsRecipients=Targets +SmsRecipient=Target +SmsTitle=Description +SmsFrom=Sender +SmsTo=Target +SmsTopic=Topic of SMS +SmsText=Message +SmsMessage=SMS Message +ShowSms=Show Sms +ListOfSms=List SMS campains +NewSms=New SMS campain +EditSms=Edit Sms +ResetSms=New sending +DeleteSms=Delete Sms campain +DeleteASms=Remove a Sms campain +PreviewSms=Previuw Sms +PrepareSms=Prepare Sms +CreateSms=Create Sms +SmsResult=Result of Sms sending +TestSms=Test Sms +ValidSms=Validate Sms +ApproveSms=Approve Sms +SmsStatusDraft=Draft +SmsStatusValidated=Validated +SmsStatusApproved=Approved +SmsStatusSent=Sent +SmsStatusSentPartialy=Sent partially +SmsStatusSentCompletely=Sent completely +SmsStatusError=Error +SmsStatusNotSent=Not sent +SmsSuccessfulySent=Sms correctly sent (from %s to %s) +ErrorSmsRecipientIsEmpty=Number of target is empty +WarningNoSmsAdded=No new phone number to add to target list +ConfirmValidSms=Do you confirm validation of this campain ? +ConfirmResetMailing=Warning, if you make a reinit of Sms campain %s, you will allow to make a mass sending of it a second time. Is it really what you wan to do ? +ConfirmDeleteMailing=Do you confirm removing of campain ? +NbOfRecipients=Number of targets +NbOfUniqueSms=Nb dof unique phone numbers +NbOfSms=Nbre of phon numbers +ThisIsATestMessage=This is a test message +SendSms=Send SMS +SmsInfoCharRemain=Nb of remaining characters +SmsInfoNumero= (format international ie : +33899701761) +DelayBeforeSending=Delay before sending (minutes) +SmsNoPossibleRecipientFound=No target available. Check setup of your SMS provider. + diff --git a/htdocs/langs/sw_SW/stocks.lang b/htdocs/langs/sw_SW/stocks.lang new file mode 100644 index 00000000000..29706d17615 --- /dev/null +++ b/htdocs/langs/sw_SW/stocks.lang @@ -0,0 +1,134 @@ +# Dolibarr language file - Source file is en_US - stocks +WarehouseCard=Warehouse card +Warehouse=Warehouse +Warehouses=Warehouses +NewWarehouse=New warehouse / Stock area +WarehouseEdit=Modify warehouse +MenuNewWarehouse=New warehouse +WarehouseOpened=Warehouse opened +WarehouseClosed=Warehouse closed +WarehouseSource=Source warehouse +WarehouseSourceNotDefined=No warehouse defined, +AddOne=Add one +WarehouseTarget=Target warehouse +ValidateSending=Delete sending +CancelSending=Cancel sending +DeleteSending=Delete sending +Stock=Stock +Stocks=Stocks +Movement=Movement +Movements=Movements +ErrorWarehouseRefRequired=Warehouse reference name is required +ErrorWarehouseLabelRequired=Warehouse label is required +CorrectStock=Correct stock +ListOfWarehouses=List of warehouses +ListOfStockMovements=List of stock movements +StocksArea=Warehouses area +Location=Location +LocationSummary=Short name location +NumberOfDifferentProducts=Number of different products +NumberOfProducts=Total number of products +LastMovement=Last movement +LastMovements=Last movements +Units=Units +Unit=Unit +StockCorrection=Correct stock +StockTransfer=Stock transfer +StockMovement=Transfer +StockMovements=Stock transfers +LabelMovement=Movement label +NumberOfUnit=Number of units +UnitPurchaseValue=Unit purchase price +TotalStock=Total in stock +StockTooLow=Stock too low +StockLowerThanLimit=Stock lower than alert limit +EnhancedValue=Value +PMPValue=Weighted average price +PMPValueShort=WAP +EnhancedValueOfWarehouses=Warehouses value +UserWarehouseAutoCreate=Create a warehouse automatically when creating a user +IndependantSubProductStock=Product stock and subproduct stock are independant +QtyDispatched=Quantity dispatched +QtyDispatchedShort=Qty dispatched +QtyToDispatchShort=Qty to dispatch +OrderDispatch=Stock dispatching +RuleForStockManagementDecrease=Rule for stock management decrease +RuleForStockManagementIncrease=Rule for stock management increase +DeStockOnBill=Decrease real stocks on customers invoices/credit notes validation +DeStockOnValidateOrder=Decrease real stocks on customers orders validation +DeStockOnShipment=Decrease real stocks on shipment validation +ReStockOnBill=Increase real stocks on suppliers invoices/credit notes validation +ReStockOnValidateOrder=Increase real stocks on suppliers orders approbation +ReStockOnDispatchOrder=Increase real stocks on manual dispatching into warehouses, after supplier order receiving +ReStockOnDeleteInvoice=Increase real stocks on invoice deletion +OrderStatusNotReadyToDispatch=Order has not yet or no more a status that allows dispatching of products in stock warehouses. +StockDiffPhysicTeoric=Explanation for difference between physical and theoretical stock +NoPredefinedProductToDispatch=No predefined products for this object. So no dispatching in stock is required. +DispatchVerb=Dispatch +StockLimitShort=Limit for alert +StockLimit=Stock limit for alert +PhysicalStock=Physical stock +RealStock=Real Stock +VirtualStock=Virtual stock +MininumStock=Minimum stock +StockUp=Stock up +MininumStockShort=Stock min +StockUpShort=Stock up +IdWarehouse=Id warehouse +DescWareHouse=Description warehouse +LieuWareHouse=Localisation warehouse +WarehousesAndProducts=Warehouses and products +AverageUnitPricePMPShort=Weighted average input price +AverageUnitPricePMP=Weighted average input price +SellPriceMin=Selling Unit Price +EstimatedStockValueSellShort=Value to sell +EstimatedStockValueSell=Value to Sell +EstimatedStockValueShort=Input stock value +EstimatedStockValue=Input stock value +DeleteAWarehouse=Delete a warehouse +ConfirmDeleteWarehouse=Are you sure you want to delete the warehouse %s ? +PersonalStock=Personal stock %s +ThisWarehouseIsPersonalStock=This warehouse represents personal stock of %s %s +SelectWarehouseForStockDecrease=Choose warehouse to use for stock decrease +SelectWarehouseForStockIncrease=Choose warehouse to use for stock increase +NoStockAction=No stock action +LastWaitingSupplierOrders=Orders waiting for receptions +DesiredStock=Desired stock +StockToBuy=To order +Replenishment=Replenishment +ReplenishmentOrders=Replenishment orders +VirtualDiffersFromPhysical=According to increase/decrease stock options, physical stock and virtual stock (physical + current orders) may differs +UseVirtualStockByDefault=Use virtual stock by default, instead of physical stock, for replenishment feature +UseVirtualStock=Use virtual stock +UsePhysicalStock=Use physical stock +CurentSelectionMode=Curent selection mode +CurentlyUsingVirtualStock=Virtual stock +CurentlyUsingPhysicalStock=Physical stock +RuleForStockReplenishment=Rule for stocks replenishment +SelectProductWithNotNullQty=Select at least one product with a qty not null and a supplier +AlertOnly= Alerts only +WarehouseForStockDecrease=The warehouse %s will be used for stock decrease +WarehouseForStockIncrease=The warehouse %s will be used for stock increase +ForThisWarehouse=For this warehouse +ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. +Replenishments=Replenishments +NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) +NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) +MassMovement=Mass movement +MassStockMovement=Mass stock movement +SelectProductInAndOutWareHouse=Select a product, a quantity, a source warehouse and a target warehouse, then click "%s". Once this is done for all required movements, click onto "%s". +RecordMovement=Record transfert +ReceivingForSameOrder=Receipts for this order +StockMovementRecorded=Stock movements recorded +RuleForStockAvailability=Rules on stock requirements +StockMustBeEnoughForInvoice=Stock level must be enough to add product/service into invoice +StockMustBeEnoughForOrder=Stock level must be enough to add product/service into order +StockMustBeEnoughForShipment= Stock level must be enough to add product/service into shipment +MovementLabel=Label of movement +InventoryCode=Movement or inventory code +IsInPackage=Contained into package +ShowWarehouse=Show warehouse +MovementCorrectStock=Stock content correction for product %s +MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/sw_SW/suppliers.lang b/htdocs/langs/sw_SW/suppliers.lang new file mode 100644 index 00000000000..baf573c66ac --- /dev/null +++ b/htdocs/langs/sw_SW/suppliers.lang @@ -0,0 +1,45 @@ +# Dolibarr language file - Source file is en_US - suppliers +Suppliers=Suppliers +AddSupplier=Create a supplier +SupplierRemoved=Supplier removed +SuppliersInvoice=Suppliers invoice +NewSupplier=New supplier +History=History +ListOfSuppliers=List of suppliers +ShowSupplier=Show supplier +OrderDate=Order date +BuyingPrice=Buying price +BuyingPriceMin=Minimum buying price +BuyingPriceMinShort=Min buying price +TotalBuyingPriceMin=Total of subproducts buying prices +SomeSubProductHaveNoPrices=Some sub-products have no price defined +AddSupplierPrice=Add supplier price +ChangeSupplierPrice=Change supplier price +ErrorQtyTooLowForThisSupplier=Quantity too low for this supplier or no price defined on this product for this supplier +ErrorSupplierCountryIsNotDefined=Country for this supplier is not defined. Correct this first. +ProductHasAlreadyReferenceInThisSupplier=This product has already a reference in this supplier +ReferenceSupplierIsAlreadyAssociatedWithAProduct=This reference supplier is already associated with a reference: %s +NoRecordedSuppliers=No suppliers recorded +SupplierPayment=Supplier payment +SuppliersArea=Suppliers area +RefSupplierShort=Ref. supplier +Availability=Availability +ExportDataset_fournisseur_1=Supplier invoices list and invoice lines +ExportDataset_fournisseur_2=Supplier invoices and payments +ExportDataset_fournisseur_3=Supplier orders and order lines +ApproveThisOrder=Approve this order +ConfirmApproveThisOrder=Are you sure you want to approve order %s ? +DenyingThisOrder=Deny this order +ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? +ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? +AddCustomerOrder=Create customer order +AddCustomerInvoice=Create customer invoice +AddSupplierOrder=Create supplier order +AddSupplierInvoice=Create supplier invoice +ListOfSupplierProductForSupplier=List of products and prices for supplier %s +NoneOrBatchFileNeverRan=None or batch %s not ran recently +SentToSuppliers=Sent to suppliers +ListOfSupplierOrders=List of supplier orders +MenuOrdersSupplierToBill=Supplier orders to invoice +NbDaysToDelivery=Delivery delay in days +DescNbDaysToDelivery=The biggest delay is display among order product list diff --git a/htdocs/langs/sw_SW/trips.lang b/htdocs/langs/sw_SW/trips.lang new file mode 100644 index 00000000000..ba36fc9b07b --- /dev/null +++ b/htdocs/langs/sw_SW/trips.lang @@ -0,0 +1,126 @@ +# Dolibarr language file - Source file is en_US - trips +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report +ListOfFees=List of fees +NewTrip=New expense report +CompanyVisited=Company/foundation visited +Kilometers=Kilometers +FeesKilometersOrAmout=Amount or kilometers +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report +ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/sw_SW/users.lang b/htdocs/langs/sw_SW/users.lang new file mode 100644 index 00000000000..baf209f9d1c --- /dev/null +++ b/htdocs/langs/sw_SW/users.lang @@ -0,0 +1,122 @@ +# Dolibarr language file - Source file is en_US - users +HRMArea=HRM area +UserCard=User card +ContactCard=Contact card +GroupCard=Group card +NoContactCard=No card among contacts +Permission=Permission +Permissions=Permissions +EditPassword=Edit password +SendNewPassword=Regenerate and send password +ReinitPassword=Regenerate password +PasswordChangedTo=Password changed to: %s +SubjectNewPassword=Your new password for Dolibarr +AvailableRights=Available permissions +OwnedRights=Owned permissions +GroupRights=Group permissions +UserRights=User permissions +UserGUISetup=User display setup +DisableUser=Disable +DisableAUser=Disable a user +DeleteUser=Delete +DeleteAUser=Delete a user +DisableGroup=Disable +DisableAGroup=Disable a group +EnableAUser=Enable a user +EnableAGroup=Enable a group +DeleteGroup=Delete +DeleteAGroup=Delete a group +ConfirmDisableUser=Are you sure you want to disable user %s ? +ConfirmDisableGroup=Are you sure you want to disable group %s ? +ConfirmDeleteUser=Are you sure you want to delete user %s ? +ConfirmDeleteGroup=Are you sure you want to delete group %s ? +ConfirmEnableUser=Are you sure you want to enable user %s ? +ConfirmEnableGroup=Are you sure you want to enable group %s ? +ConfirmReinitPassword=Are you sure you want to generate a new password for user %s ? +ConfirmSendNewPassword=Are you sure you want to generate and send new password for user %s ? +NewUser=New user +CreateUser=Create user +SearchAGroup=Search a group +SearchAUser=Search a user +LoginNotDefined=Login is not defined. +NameNotDefined=Name is not defined. +ListOfUsers=List of users +Administrator=Administrator +SuperAdministrator=Super Administrator +SuperAdministratorDesc=Global administrator +AdministratorDesc=Administrator's entity +DefaultRights=Default permissions +DefaultRightsDesc=Define here default permissions that are automatically granted to a new created user (Go on user card to change permission of an existing user). +DolibarrUsers=Dolibarr users +LastName=Name +FirstName=First name +ListOfGroups=List of groups +NewGroup=New group +CreateGroup=Create group +RemoveFromGroup=Remove from group +PasswordChangedAndSentTo=Password changed and sent to %s. +PasswordChangeRequestSent=Request to change password for %s sent to %s. +MenuUsersAndGroups=Users & Groups +LastGroupsCreated=Last %s created groups +LastUsersCreated=Last %s users created +ShowGroup=Show group +ShowUser=Show user +NonAffectedUsers=Non assigned users +UserModified=User modified successfully +PhotoFile=Photo file +UserWithDolibarrAccess=User with Dolibarr access +ListOfUsersInGroup=List of users in this group +ListOfGroupsForUser=List of groups for this user +UsersToAdd=Users to add to this group +GroupsToAdd=Groups to add to this user +NoLogin=No login +LinkToCompanyContact=Link to third party / contact +LinkedToDolibarrMember=Link to member +LinkedToDolibarrUser=Link to Dolibarr user +LinkedToDolibarrThirdParty=Link to Dolibarr third party +CreateDolibarrLogin=Create a user +CreateDolibarrThirdParty=Create a third party +LoginAccountDisable=Account disabled, put a new login to activate it. +LoginAccountDisableInDolibarr=Account disabled in Dolibarr. +LoginAccountDisableInLdap=Account disabled in the domain. +UsePersonalValue=Use personal value +GuiLanguage=Interface language +InternalUser=Internal user +MyInformations=My data +ExportDataset_user_1=Dolibarr's users and properties +DomainUser=Domain user %s +Reactivate=Reactivate +CreateInternalUserDesc=This form allows you to create an user internal to your company/foundation. To create an external user (customer, supplier, ...), use the button 'Create Dolibarr user' from third party's contact card. +InternalExternalDesc=An internal user is a user that is part of your company/foundation.
An external user is a customer, supplier or other.

In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. +Inherited=Inherited +UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) +UserWillBeExternalUser=Created user will be an external user (because linked to a particular third party) +IdPhoneCaller=Id phone caller +UserLogged=User %s login +UserLogoff=User %s logout +NewUserCreated=User %s created +NewUserPassword=Password change for %s +EventUserModified=User %s modified +UserDisabled=User %s disabled +UserEnabled=User %s activated +UserDeleted=User %s removed +NewGroupCreated=Group %s created +GroupModified=Group %s modified +GroupDeleted=Group %s removed +ConfirmCreateContact=Are you sure you want to create a Dolibarr account for this contact ? +ConfirmCreateLogin=Are you sure you want to create a Dolibarr account for this member ? +ConfirmCreateThirdParty=Are you sure you want to create a third party for this member ? +LoginToCreate=Login to create +NameToCreate=Name of third party to create +YourRole=Your roles +YourQuotaOfUsersIsReached=Your quota of active users is reached ! +NbOfUsers=Nb of users +DontDowngradeSuperAdmin=Only a superadmin can downgrade a superadmin +HierarchicalResponsible=Supervisor +HierarchicView=Hierarchical view +UseTypeFieldToChange=Use field Type to change +OpenIDURL=OpenID URL +LoginUsingOpenID=Use OpenID to login +WeeklyHours=Weekly hours +ColorUser=Color of the user diff --git a/htdocs/langs/sw_SW/withdrawals.lang b/htdocs/langs/sw_SW/withdrawals.lang new file mode 100644 index 00000000000..c36ffbf025a --- /dev/null +++ b/htdocs/langs/sw_SW/withdrawals.lang @@ -0,0 +1,97 @@ +# Dolibarr language file - Source file is en_US - withdrawals +StandingOrdersArea=Standing orders area +CustomersStandingOrdersArea=Customers standing orders area +StandingOrders=Standing orders +StandingOrder=Standing orders +NewStandingOrder=New standing order +StandingOrderToProcess=To process +StandingOrderProcessed=Processed +Withdrawals=Withdrawals +Withdrawal=Withdrawal +WithdrawalsReceipts=Withdrawal receipts +WithdrawalReceipt=Withdrawal receipt +WithdrawalReceiptShort=Receipt +LastWithdrawalReceipts=Last %s withdrawal receipts +WithdrawedBills=Withdrawn invoices +WithdrawalsLines=Withdrawal lines +RequestStandingOrderToTreat=Request for standing orders to process +RequestStandingOrderTreated=Request for standing orders processed +NotPossibleForThisStatusOfWithdrawReceiptORLine=Not yet possible. Withdraw status must be set to 'credited' before declaring reject on specific lines. +CustomersStandingOrders=Customer standing orders +CustomerStandingOrder=Customer standing order +NbOfInvoiceToWithdraw=Nb. of invoice with withdraw request +NbOfInvoiceToWithdrawWithInfo=Nb. of invoice with withdraw request for customers having defined bank account information +InvoiceWaitingWithdraw=Invoice waiting for withdraw +AmountToWithdraw=Amount to withdraw +WithdrawsRefused=Withdraws refused +NoInvoiceToWithdraw=No customer invoice in payment mode "withdraw" is waiting. Go on 'Withdraw' tab on invoice card to make a request. +ResponsibleUser=Responsible user +WithdrawalsSetup=Withdrawal setup +WithdrawStatistics=Withdraw's statistics +WithdrawRejectStatistics=Withdraw reject's statistics +LastWithdrawalReceipt=Last %s withdrawing receipts +MakeWithdrawRequest=Make a withdraw request +ThirdPartyBankCode=Third party bank code +ThirdPartyDeskCode=Third party desk code +NoInvoiceCouldBeWithdrawed=No invoice withdrawed with success. Check that invoice are on companies with a valid BAN. +ClassCredited=Classify credited +ClassCreditedConfirm=Are you sure you want to classify this withdrawal receipt as credited on your bank account? +TransData=Transmission date +TransMetod=Transmission method +Send=Send +Lines=Lines +StandingOrderReject=Issue a rejection +WithdrawalRefused=Withdrawal refused +WithdrawalRefusedConfirm=Are you sure you want to enter a withdrawal rejection for society +RefusedData=Date of rejection +RefusedReason=Reason for rejection +RefusedInvoicing=Billing the rejection +NoInvoiceRefused=Do not charge the rejection +InvoiceRefused=Invoice refused (Charge the rejection to customer) +Status=Status +StatusUnknown=Unknown +StatusWaiting=Waiting +StatusTrans=Sent +StatusCredited=Credited +StatusRefused=Refused +StatusMotif0=Unspecified +StatusMotif1=Insufficient funds +StatusMotif2=Request contested +StatusMotif3=No Withdrawal order +StatusMotif4=Customer Order +StatusMotif5=RIB unusable +StatusMotif6=Account without balance +StatusMotif7=Judicial Decision +StatusMotif8=Other reason +CreateAll=Withdraw all +CreateGuichet=Only office +CreateBanque=Only bank +OrderWaiting=Waiting for treatment +NotifyTransmision=Withdrawal Transmission +NotifyEmision=Withdrawal Emission +NotifyCredit=Withdrawal Credit +NumeroNationalEmetter=National Transmitter Number +PleaseSelectCustomerBankBANToWithdraw=Select information about customer bank account to withdraw +WithBankUsingRIB=For bank accounts using RIB +WithBankUsingBANBIC=For bank accounts using IBAN/BIC/SWIFT +BankToReceiveWithdraw=Bank account to receive withdraws +CreditDate=Credit on +WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported) +ShowWithdraw=Show Withdraw +IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one withdrawal payment not yet processed, it won't be set as paid to allow prior withdrawal management. +DoStandingOrdersBeforePayments=This tab allows you to request a standing order. Once done, go into menu Bank->Withdrawal to manage the standing order. When standing order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null. +WithdrawalFile=Withdrawal file +SetToStatusSent=Set to status "File Sent" +ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid" +StatisticsByLineStatus=Statistics by status of lines + +### Notifications +InfoCreditSubject=Payment of standing order %s by the bank +InfoCreditMessage=The standing order %s has been paid by the bank
Data of payment: %s +InfoTransSubject=Transmission of standing order %s to bank +InfoTransMessage=The standing order %s has been sent to bank by %s %s.

+InfoTransData=Amount: %s
Method: %s
Date: %s +InfoFoot=This is an automated message sent by Dolibarr +InfoRejectSubject=Standing order refused +InfoRejectMessage=Hello,

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

--
%s +ModeWarning=Option for real mode was not set, we stop after this simulation diff --git a/htdocs/langs/sw_SW/workflow.lang b/htdocs/langs/sw_SW/workflow.lang new file mode 100644 index 00000000000..17c8dd3aafa --- /dev/null +++ b/htdocs/langs/sw_SW/workflow.lang @@ -0,0 +1,11 @@ +# Dolibarr language file - Source file is en_US - admin +WorkflowSetup=Workflow module setup +WorkflowDesc=This module is designed to modify the behaviour of automatic actions into application. By default, workflow is opened (you make thing in order you want). You can activate the automatic actions that you are interesting in. +ThereIsNoWorkflowToModify=There is no workflow you can modify for module you have activated. +descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Create a customer order automatically after a commercial proposal is signed +descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Create a customer invoice automatically after a commercial proposal is signed +descWORKFLOW_CONTRACT_AUTOCREATE_INVOICE=Create a customer invoice automatically after a contract is validated +descWORKFLOW_ORDER_AUTOCREATE_INVOICE=Create a customer invoice automatically after a customer order is closed +descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Classify linked source proposal to billed when customer order is set to paid +descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Classify linked source customer order(s) to billed when customer invoice is set to paid +descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Classify linked source customer order(s) to billed when customer invoice is validated diff --git a/htdocs/langs/uz_UZ/accountancy.lang b/htdocs/langs/uz_UZ/accountancy.lang new file mode 100644 index 00000000000..bb9b358c045 --- /dev/null +++ b/htdocs/langs/uz_UZ/accountancy.lang @@ -0,0 +1,160 @@ +# Dolibarr language file - en_US - Accounting Expert +CHARSET=UTF-8 + +Accounting=Accounting +Globalparameters=Global parameters +Chartofaccounts=Chart of accounts +Fiscalyear=Fiscal years +Menuaccount=Accounting accounts +Menuthirdpartyaccount=Thirdparty accounts +MenuTools=Tools + +ConfigAccountingExpert=Configuration of the module accounting expert +Journaux=Journals +JournalFinancial=Financial journals +Exports=Exports +Export=Export +Modelcsv=Model of export +OptionsDeactivatedForThisExportModel=For this export model, options are deactivated +Selectmodelcsv=Select a model of export +Modelcsv_normal=Classic export +Modelcsv_CEGID=Export towards CEGID Expert +BackToChartofaccounts=Return chart of accounts +Back=Return + +Definechartofaccounts=Define a chart of accounts +Selectchartofaccounts=Select a chart of accounts +Validate=Validate +Addanaccount=Add an accounting account +AccountAccounting=Accounting account +Ventilation=Breakdown +ToDispatch=To dispatch +Dispatched=Dispatched + +CustomersVentilation=Breakdown customers +SuppliersVentilation=Breakdown suppliers +TradeMargin=Trade margin +Reports=Reports +ByCustomerInvoice=By invoices customers +ByMonth=By Month +NewAccount=New accounting account +Update=Update +List=List +Create=Create +UpdateAccount=Modification of an accounting account +UpdateMvts=Modification of a movement +WriteBookKeeping=Record accounts in general ledger +Bookkeeping=General ledger +AccountBalanceByMonth=Account balance by month + +AccountingVentilation=Breakdown accounting +AccountingVentilationSupplier=Breakdown accounting supplier +AccountingVentilationCustomer=Breakdown accounting customer +Line=Line + +CAHTF=Total purchase supplier HT +InvoiceLines=Lines of invoice to be ventilated +InvoiceLinesDone=Ventilated lines of invoice +IntoAccount=In the accounting account + +Ventilate=Ventilate +VentilationAuto=Automatic breakdown + +Processing=Processing +EndProcessing=The end of processing +AnyLineVentilate=Any lines to ventilate +SelectedLines=Selected lines +Lineofinvoice=Line of invoice +VentilatedinAccount=Ventilated successfully in the accounting account +NotVentilatedinAccount=Not ventilated in the accounting account + +ACCOUNTING_SEPARATORCSV=Column separator in export file + +ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50) +ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements +ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the breakdown pages "Breakdown" by the most recent elements + +AccountLength=Length of the accounting accounts shown in Dolibarr +AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software. +ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounts +ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounts + +ACCOUNTING_SELL_JOURNAL=Sell journal +ACCOUNTING_PURCHASE_JOURNAL=Purchase journal +ACCOUNTING_BANK_JOURNAL=Bank journal +ACCOUNTING_CASH_JOURNAL=Cash journal +ACCOUNTING_MISCELLANEOUS_JOURNAL=Miscellaneous journal +ACCOUNTING_SOCIAL_JOURNAL=Social journal + +ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account of transfer +ACCOUNTING_ACCOUNT_SUSPENSE=Account of wait + +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for bought products (if not defined in the product sheet) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Accounting account by default for the sold products (if not defined in the product sheet) +ACCOUNTING_SERVICE_BUY_ACCOUNT=Accounting account by default for the bought services (if not defined in the service sheet) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Accounting account by default for the sold services (if not defined in the service sheet) + +Doctype=Type of document +Docdate=Date +Docref=Reference +Numerocompte=Account +Code_tiers=Thirdparty +Labelcompte=Label account +Debit=Debit +Credit=Credit +Amount=Amount +Sens=Sens +Codejournal=Journal + +DelBookKeeping=Delete the records of the general ledger + +SellsJournal=Sells journal +PurchasesJournal=Purchases journal +DescSellsJournal=Sells journal +DescPurchasesJournal=Purchases journal +BankJournal=Bank journal +DescBankJournal=Bank journal including all the types of payments other than cash +CashJournal=Cash journal +DescCashJournal=Cash journal including the type of payment cash + +CashPayment=Cash Payment + +SupplierInvoicePayment=Payment of invoice supplier +CustomerInvoicePayment=Payment of invoice customer + +ThirdPartyAccount=Thirdparty account + +NewAccountingMvt=New movement +NumMvts=Number of movement +ListeMvts=List of the movement +ErrorDebitCredit=Debit and Credit cannot have a value at the same time + +ReportThirdParty=List thirdparty account +DescThirdPartyReport=Consult here the list of the thirdparty customers and the suppliers and their accounting accounts + +ListAccounts=List of the accounting accounts + +Pcgversion=Version of the plan +Pcgtype=Class of account +Pcgsubtype=Under class of account +Accountparent=Root of the account +Active=Statement + +NewFiscalYear=New fiscal year + +DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers +TotalVente=Total turnover HT +TotalMarge=Total sales margin +DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their accounting account +DescVentilTodoCustomer=Ventilate your lines of customer invoice with an accounting account +ChangeAccount=Change the accounting account for lines selected by the account: +Vide=- +DescVentilSupplier=Consult here the annual breakdown accounting of your invoices suppliers +DescVentilTodoSupplier=Ventilate your lines of invoice supplier with an accounting account +DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account + +ValidateHistory=Validate Automatically + +ErrorAccountancyCodeIsAlreadyUse=Error, you cannot delete this accounting account because it is used + +FicheVentilation=Breakdown card diff --git a/htdocs/langs/uz_UZ/link.lang b/htdocs/langs/uz_UZ/link.lang new file mode 100644 index 00000000000..8b1efb75ef3 --- /dev/null +++ b/htdocs/langs/uz_UZ/link.lang @@ -0,0 +1,8 @@ +LinkANewFile=Link a new file/document +LinkedFiles=Linked files and documents +NoLinkFound=No registered links +LinkComplete=The file has been linked successfully +ErrorFileNotLinked=The file could not be linked +LinkRemoved=The link %s has been removed +ErrorFailedToDeleteLink= Failed to remove link '%s' +ErrorFailedToUpdateLink= Failed to update link '%s' diff --git a/htdocs/langs/uz_UZ/printipp.lang b/htdocs/langs/uz_UZ/printipp.lang new file mode 100644 index 00000000000..835e6827f12 --- /dev/null +++ b/htdocs/langs/uz_UZ/printipp.lang @@ -0,0 +1,14 @@ +# Dolibarr language file - Source file is en_US - printipp +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This module adds a Print button to send documents directly to a printer. It requires a Linux system with CUPS installed. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server diff --git a/htdocs/langs/uz_UZ/productbatch.lang b/htdocs/langs/uz_UZ/productbatch.lang new file mode 100644 index 00000000000..45263681965 --- /dev/null +++ b/htdocs/langs/uz_UZ/productbatch.lang @@ -0,0 +1,21 @@ +# ProductBATCH language file - en_US - ProductBATCH +ManageLotSerial=Use batch/serial number +ProductStatusOnBatch=Yes (Batch/serial required) +ProductStatusNotOnBatch=No (Batch/serial not used) +ProductStatusOnBatchShort=Yes +ProductStatusNotOnBatchShort=No +Batch=Batch/Serial +atleast1batchfield=Eat-by date or Sell-by date or Batch number +batch_number=Batch/Serial number +l_eatby=Eat-by date +l_sellby=Sell-by date +DetailBatchNumber=Batch/Serial details +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) +printBatch=Batch: %s +printEatby=Eat-by: %s +printSellby=Sell-by: %s +printQty=Qty: %d +AddDispatchBatchLine=Add a line for Shelf Life dispatching +BatchDefaultNumber=Undefined +WhenProductBatchModuleOnOptionAreForced=When module Batch/Serial is on, increase/decrease stock mode is forced to last choice and can't be edited. Other options can be defined as you want. +ProductDoesNotUseBatchSerial=This product does not use batch/serial number diff --git a/htdocs/langs/uz_UZ/resource.lang b/htdocs/langs/uz_UZ/resource.lang new file mode 100644 index 00000000000..32bdd92f884 --- /dev/null +++ b/htdocs/langs/uz_UZ/resource.lang @@ -0,0 +1,34 @@ + +MenuResourceIndex=Resources +MenuResourceAdd=New resource +MenuResourcePlanning=Resource planning +DeleteResource=Delete resource +ConfirmDeleteResourceElement=Confirm delete the resource for this element +NoResourceInDatabase=No resource in database. +NoResourceLinked=No resource linked + +ResourcePageIndex=Resources list +ResourceSingular=Resource +ResourceCard=Resource card +AddResource=Create a resource +ResourceFormLabel_ref=Resource name +ResourceType=Resource type +ResourceFormLabel_description=Resource description + +ResourcesLinkedToElement=Resources linked to element + +ShowResourcePlanning=Show resource planning +GotoDate=Go to date + +ResourceElementPage=Element resources +ResourceCreatedWithSuccess=Resource successfully created +RessourceLineSuccessfullyDeleted=Resource line successfully deleted +RessourceLineSuccessfullyUpdated=Resource line successfully updated +ResourceLinkedWithSuccess=Resource linked with success + +TitleResourceCard=Resource card +ConfirmDeleteResource=Confirm to delete this resource +RessourceSuccessfullyDeleted=Resource successfully deleted +DictionaryResourceType=Type of resources + +SelectResource=Select resource diff --git a/htdocs/langs/uz_UZ/salaries.lang b/htdocs/langs/uz_UZ/salaries.lang new file mode 100644 index 00000000000..28c21adfad3 --- /dev/null +++ b/htdocs/langs/uz_UZ/salaries.lang @@ -0,0 +1,13 @@ +# Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge +Salary=Salary +Salaries=Salaries +Employee=Employee +NewSalaryPayment=New salary payment +SalaryPayment=Salary payment +SalariesPayments=Salaries payments +ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary From 7cab558ed2f9076dddebfc616591b90f8f72cfb0 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Sat, 14 Mar 2015 09:44:58 +0100 Subject: [PATCH 264/429] Fix: Showing system error if not enough stock of product into orders creation with lines --- ChangeLog | 1 + htdocs/commande/class/commande.class.php | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0664bda856d..2bcf02febf8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -30,6 +30,7 @@ English Dolibarr ChangeLog - Fix: [ bug #1790 ] Email form behaves in an unexpected way when pressing Enter key - Fix: Bad SEPA xml file creation - Fix: [ bug #1892 ] PHP Fatal error when using USER_UPDATE_SESSION trigger and adding a supplier invoice payment +- Fix: Showing system error if not enough stock of product into orders creation with lines ***** ChangeLog for 3.6.2 compared to 3.6.1 ***** - Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice. diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 573778e808c..cac43ced746 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -3,7 +3,7 @@ * Copyright (C) 2004-2012 Laurent Destailleur * Copyright (C) 2005-2014 Regis Houssin * Copyright (C) 2006 Andre Cianfarani - * Copyright (C) 2010-2013 Juanjo Menent + * Copyright (C) 2010-2015 Juanjo Menent * Copyright (C) 2011 Jean Heimburger * Copyright (C) 2012-2014 Christophe Battarel * Copyright (C) 2013 Florian Henry @@ -100,6 +100,11 @@ class Commande extends CommonOrder // Pour board var $nbtodo; var $nbtodolate; + + /** + * ERR Not engouch stock + */ + const STOCK_NOT_ENOUGH_FOR_ORDER = -3; /** @@ -734,8 +739,11 @@ class Commande extends CommonOrder ); if ($result < 0) { - $this->error=$this->db->lasterror(); - dol_print_error($this->db); + if ($result != self::STOCK_NOT_ENOUGH_FOR_ORDER) + { + $this->error=$this->db->lasterror(); + dol_print_error($this->db); + } $this->db->rollback(); return -1; } @@ -1169,10 +1177,12 @@ class Commande extends CommonOrder $result=$product->fetch($fk_product); $product_type=$product->type; - if($conf->global->STOCK_MUST_BE_ENOUGH_FOR_ORDER && $product_type == 0 && $product->stock_reel < $qty) { + if($conf->global->STOCK_MUST_BE_ENOUGH_FOR_ORDER && $product_type == 0 && $product->stock_reel < $qty) + { $this->error=$langs->trans('ErrorStockIsNotEnough'); + dol_syslog(get_class($this)."::addline error=Product ".$product->ref.": ".$this->error, LOG_ERR); $this->db->rollback(); - return -3; + return self::STOCK_NOT_ENOUGH_FOR_ORDER; } } From 4ae1106ffb1b31bc286d72a32c31ba7c66fc1b6d Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Sat, 14 Mar 2015 09:50:38 +0100 Subject: [PATCH 265/429] Fix: Showing system error if not enough stock of product into orders creation with lines Conflicts: htdocs/commande/class/commande.class.php --- ChangeLog | 1 + htdocs/commande/class/commande.class.php | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 64cd43f7030..2d8c32c7986 100644 --- a/ChangeLog +++ b/ChangeLog @@ -202,6 +202,7 @@ Dolibarr better: - Fix: [ bug #1790 ] Email form behaves in an unexpected way when pressing Enter key - Fix: Bad SEPA xml file creation - Fix: [ bug #1892 ] PHP Fatal error when using USER_UPDATE_SESSION trigger and adding a supplier invoice payment +- Fix: Showing system error if not enough stock of product into orders creation with lines ***** ChangeLog for 3.6.2 compared to 3.6.1 ***** - Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice. diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 1cdd57b1b6a..519ba8cd43f 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -3,7 +3,7 @@ * Copyright (C) 2004-2012 Laurent Destailleur * Copyright (C) 2005-2014 Regis Houssin * Copyright (C) 2006 Andre Cianfarani - * Copyright (C) 2010-2014 Juanjo Menent + * Copyright (C) 2010-2015 Juanjo Menent * Copyright (C) 2011 Jean Heimburger * Copyright (C) 2012-2014 Christophe Battarel * Copyright (C) 2013 Florian Henry @@ -109,6 +109,11 @@ class Commande extends CommonOrder // Pour board var $nbtodo; var $nbtodolate; + + /** + * ERR Not engouch stock + */ + const STOCK_NOT_ENOUGH_FOR_ORDER = -3; /** @@ -745,8 +750,11 @@ class Commande extends CommonOrder ); if ($result < 0) { - $this->error=$this->db->lasterror(); - dol_print_error($this->db); + if ($result != self::STOCK_NOT_ENOUGH_FOR_ORDER) + { + $this->error=$this->db->lasterror(); + dol_print_error($this->db); + } $this->db->rollback(); return -1; } @@ -1185,10 +1193,12 @@ class Commande extends CommonOrder $result=$product->fetch($fk_product); $product_type=$product->type; - if($conf->global->STOCK_MUST_BE_ENOUGH_FOR_ORDER && $product_type == 0 && $product->stock_reel < $qty) { + if($conf->global->STOCK_MUST_BE_ENOUGH_FOR_ORDER && $product_type == 0 && $product->stock_reel < $qty) + { $this->error=$langs->trans('ErrorStockIsNotEnough'); + dol_syslog(get_class($this)."::addline error=Product ".$product->ref.": ".$this->error, LOG_ERR); $this->db->rollback(); - return -3; + return self::STOCK_NOT_ENOUGH_FOR_ORDER; } } From a63b1cf4c30c2fa124fc5f227a250c5726ee0c55 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Sat, 14 Mar 2015 09:57:28 +0100 Subject: [PATCH 266/429] Fix: Showing system error if not enough stock of product into orders creation with lines Conflicts: htdocs/commande/class/commande.class.php --- ChangeLog | 1 + htdocs/commande/class/commande.class.php | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index e250846ffe1..60521f04c81 100644 --- a/ChangeLog +++ b/ChangeLog @@ -234,6 +234,7 @@ Dolibarr better: - Fix: [ bug #1790 ] Email form behaves in an unexpected way when pressing Enter key - Fix: Bad SEPA xml file creation - Fix: [ bug #1892 ] PHP Fatal error when using USER_UPDATE_SESSION trigger and adding a supplier invoice payment +- Fix: Showing system error if not enough stock of product into orders creation with lines ***** ChangeLog for 3.6.2 compared to 3.6.1 ***** - Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice. diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 3402999b350..8dcaca59a97 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -3,7 +3,7 @@ * Copyright (C) 2004-2012 Laurent Destailleur * Copyright (C) 2005-2014 Regis Houssin * Copyright (C) 2006 Andre Cianfarani - * Copyright (C) 2010-2014 Juanjo Menent + * Copyright (C) 2010-2015 Juanjo Menent * Copyright (C) 2011 Jean Heimburger * Copyright (C) 2012-2014 Christophe Battarel * Copyright (C) 2013 Florian Henry @@ -110,6 +110,11 @@ class Commande extends CommonOrder var $fk_incoterms; var $location_incoterms; var $libelle_incoterms; //Used into tooltip + + /** + * ERR Not engouch stock + */ + const STOCK_NOT_ENOUGH_FOR_ORDER = -3; /** @@ -752,8 +757,11 @@ class Commande extends CommonOrder ); if ($result < 0) { - $this->error=$this->db->lasterror(); - dol_print_error($this->db); + if ($result != self::STOCK_NOT_ENOUGH_FOR_ORDER) + { + $this->error=$this->db->lasterror(); + dol_print_error($this->db); + } $this->db->rollback(); return -1; } @@ -1192,10 +1200,12 @@ class Commande extends CommonOrder $result=$product->fetch($fk_product); $product_type=$product->type; - if($conf->global->STOCK_MUST_BE_ENOUGH_FOR_ORDER && $product_type == 0 && $product->stock_reel < $qty) { + if($conf->global->STOCK_MUST_BE_ENOUGH_FOR_ORDER && $product_type == 0 && $product->stock_reel < $qty) + { $this->error=$langs->trans('ErrorStockIsNotEnough'); + dol_syslog(get_class($this)."::addline error=Product ".$product->ref.": ".$this->error, LOG_ERR); $this->db->rollback(); - return -3; + return self::STOCK_NOT_ENOUGH_FOR_ORDER; } } From 851cae80a26b0cc8c5aa73f2d98d3c015fd18d6e Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Sat, 14 Mar 2015 10:16:50 +0100 Subject: [PATCH 267/429] Fix: [ bug #1836 ] Required parameter missing in Rejetprelevement line 159 --- htdocs/compta/prelevement/class/rejetprelevement.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/prelevement/class/rejetprelevement.class.php b/htdocs/compta/prelevement/class/rejetprelevement.class.php index 176a561378b..2ef37c29e18 100644 --- a/htdocs/compta/prelevement/class/rejetprelevement.class.php +++ b/htdocs/compta/prelevement/class/rejetprelevement.class.php @@ -156,7 +156,7 @@ class RejetPrelevement } else { - $result=$pai->addPaymentToBank($user,'payment','(InvoiceRefused)',$bankaccount); + $result=$pai->addPaymentToBank($user,'payment','(InvoiceRefused)',$bankaccount,'',''); if ($result < 0) { dol_syslog("RejetPrelevement::Create AddPaymentToBan Error"); From a2adeb28073d06f6963e4b187d408b974ef95d1f Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Sat, 14 Mar 2015 10:16:50 +0100 Subject: [PATCH 268/429] Fix: [ bug #1836 ] Required parameter missing in Rejetprelevement line 159 --- htdocs/compta/prelevement/class/rejetprelevement.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/prelevement/class/rejetprelevement.class.php b/htdocs/compta/prelevement/class/rejetprelevement.class.php index 176a561378b..2ef37c29e18 100644 --- a/htdocs/compta/prelevement/class/rejetprelevement.class.php +++ b/htdocs/compta/prelevement/class/rejetprelevement.class.php @@ -156,7 +156,7 @@ class RejetPrelevement } else { - $result=$pai->addPaymentToBank($user,'payment','(InvoiceRefused)',$bankaccount); + $result=$pai->addPaymentToBank($user,'payment','(InvoiceRefused)',$bankaccount,'',''); if ($result < 0) { dol_syslog("RejetPrelevement::Create AddPaymentToBan Error"); From 605a7dee0e0253b3c85c465dae6e0f919977d779 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Mar 2015 11:56:28 +0100 Subject: [PATCH 269/429] Fix: Deleting task do not return to correct page --- htdocs/projet/tasks/task.php | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/htdocs/projet/tasks/task.php b/htdocs/projet/tasks/task.php index a9cd64e33b5..4bd361d452b 100644 --- a/htdocs/projet/tasks/task.php +++ b/htdocs/projet/tasks/task.php @@ -110,17 +110,14 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->projet->creer) if ($action == 'confirm_delete' && $confirm == "yes" && $user->rights->projet->supprimer) { - if ($object->fetch($id,$ref) >= 0 ) + if ($object->fetch($id,$ref) >= 0) { - $result=$projectstatic->fetch($object->fk_projet); - if (! empty($projectstatic->socid)) - { - $projectstatic->societe->fetch($projectstatic->socid); - } + $result=$projectstatic->fetch($object->fk_project); + $projectstatic->fetch_thirdparty(); if ($object->delete($user) > 0) { - header('Location: '.DOL_URL_ROOT.'/projet/tasks.php?id='.$projectstatic->id); + header('Location: '.DOL_URL_ROOT.'/projet/tasks.php?id='.$projectstatic->id.($withproject?'&withproject=1':'')); exit; } else From 41a05bc4bad8260d01796beecadeae92e80cc40a Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Sat, 14 Mar 2015 12:04:00 +0100 Subject: [PATCH 270/429] Update actions_extrafields.inc.php add new type of extrafields "link" : linked to dolibarr element --- htdocs/core/actions_extrafields.inc.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/htdocs/core/actions_extrafields.inc.php b/htdocs/core/actions_extrafields.inc.php index d5f8ea7c18c..03d724b9bba 100644 --- a/htdocs/core/actions_extrafields.inc.php +++ b/htdocs/core/actions_extrafields.inc.php @@ -80,6 +80,13 @@ if ($action == 'add') $mesg[]=$langs->trans("ErrorNoValueForCheckBoxType"); $action = 'create'; } + if (GETPOST('type')=='link' && !GETPOST('param')) + { + $error++; + $langs->load("errors"); + $mesg[]=$langs->trans("ErrorNoValueForLinkType"); + $action = 'create'; + } if (GETPOST('type')=='radio' && !GETPOST('param')) { $error++; From df9f822a705968e57349ad487eab910dfeabfa16 Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Sat, 14 Mar 2015 12:25:17 +0100 Subject: [PATCH 271/429] Update commonobject.class.php new extafields type --- htdocs/core/class/commonobject.class.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 36101e4b081..a316c3cd511 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -3624,6 +3624,7 @@ abstract class CommonObject $attributeType = $extrafields->attribute_type[$attributeKey]; $attributeSize = $extrafields->attribute_size[$attributeKey]; $attributeLabel = $extrafields->attribute_label[$attributeKey]; + $attributeParam = $extrafields->attribute_param[$attributeKey]; switch ($attributeType) { case 'int': @@ -3646,6 +3647,19 @@ abstract class CommonObject case 'datetime': $this->array_options[$key]=$this->db->idate($this->array_options[$key]); break; + case 'link': + $param_list=array_keys($attributeParam ['options']); + // 0 : ObjectName + // 1 : classPath + $InfoFieldList = explode(":", $param_list[0]); + dol_include_once($InfoFieldList[1]); + $object = new $InfoFieldList[0]($this->db); + if ($value) + { + $object->fetch(0,$value); + $this->array_options[$key]=$object->id; + } + break; } } $this->db->begin(); From 0aa236069193adc9e0704153ed25edaafd80c7f2 Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Sat, 14 Mar 2015 12:31:22 +0100 Subject: [PATCH 272/429] Update extrafields.class.php add new extrafields type 'link' --- htdocs/core/class/extrafields.class.php | 36 +++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 7bebeb0b660..361c14319eb 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -6,6 +6,7 @@ * Copyright (C) 2009-2012 Laurent Destailleur * Copyright (C) 2009-2012 Regis Houssin * Copyright (C) 2013 Florian Henry + * Copyright (C) 2015 Charles-Fr BENKE * * 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 @@ -77,6 +78,7 @@ class ExtraFields 'checkbox' => 'ExtrafieldCheckBox', 'radio' => 'ExtrafieldRadio', 'chkbxlst' => 'ExtrafieldCheckBoxFromList', + 'link' => 'ExtrafieldLink', ); /** @@ -187,6 +189,9 @@ class ExtraFields } elseif (($type=='select') || ($type=='sellist') || ($type=='radio') ||($type=='checkbox') ||($type=='chkbxlst')){ $typedb='text'; $lengthdb=''; + } elseif ($type=='link') { + $typedb='int'; + $lengthdb='11'; } else { $typedb=$type; $lengthdb=$length; @@ -404,6 +409,9 @@ class ExtraFields } elseif (($type=='select') || ($type=='sellist') || ($type=='radio') || ($type=='checkbox') || ($type=='chkbxlst')) { $typedb='text'; $lengthdb=''; + } elseif ($type=='link') { + $typedb='int'; + $lengthdb='11'; } else { $typedb=$type; $lengthdb=$length; @@ -1043,6 +1051,19 @@ class ExtraFields } $out .= ''; } + elseif ($type == 'link') + { + $out=''; + $param_list=array_keys($param['options']); + // 0 : ObjectName + // 1 : classPath + $InfoFieldList = explode(":", $param_list[0]); + dol_include_once($InfoFieldList[1]); + $object = new $InfoFieldList[0]($this->db); + $object->fetch($value); + $out=''; + + } /* Add comments if ($type == 'date') $out.=' (YYYY-MM-DD)'; elseif ($type == 'datetime') $out.=' (YYYY-MM-DD HH:MM:SS)'; @@ -1268,6 +1289,21 @@ class ExtraFields } else dol_syslog(get_class($this) . '::showOutputField error ' . $this->db->lasterror(), LOG_WARNING); } + elseif ($type == 'link') + { + $out=''; + $param_list=array_keys($params['options']); + // 0 : ObjectName + // 1 : classPath + $InfoFieldList = explode(":", $param_list[0]); + dol_include_once($InfoFieldList[1]); + $object = new $InfoFieldList[0]($this->db); + if ($value) + { + $object->fetch($value); + $value=$object->getNomUrl(3); + } + } else { $showsize=round($size); From 5670e928427acb729abcdc54b6713beb4fee5e60 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Mar 2015 12:35:03 +0100 Subject: [PATCH 273/429] Position of field into pdf baleine --- .../project/doc/pdf_baleine.modules.php | 35 ++++++++++++++----- htdocs/langs/en_US/projects.lang | 5 +-- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/htdocs/core/modules/project/doc/pdf_baleine.modules.php b/htdocs/core/modules/project/doc/pdf_baleine.modules.php index 6ce839daf99..db0017a2e98 100644 --- a/htdocs/core/modules/project/doc/pdf_baleine.modules.php +++ b/htdocs/core/modules/project/doc/pdf_baleine.modules.php @@ -28,6 +28,7 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; /** @@ -77,6 +78,7 @@ class pdf_baleine extends ModelePDFProjects // Defini position des colonnes $this->posxref=$this->marge_gauche+1; $this->posxlabel=$this->marge_gauche+25; + $this->posxworkload=$this->marge_gauche+100; $this->posxprogress=$this->marge_gauche+140; $this->posxdatestart=$this->marge_gauche+150; $this->posxdateend=$this->marge_gauche+170; @@ -216,20 +218,22 @@ class pdf_baleine extends ModelePDFProjects $progress=$object->lines[$i]->progress.'%'; $datestart=dol_print_date($object->lines[$i]->date_start,'day'); $dateend=dol_print_date($object->lines[$i]->date_end,'day'); - + $planned_workload=convertSecondToTime($object->lines[$i]->planned_workload,'allhourmin'); $pdf->SetFont('','', $default_font_size - 1); // Dans boucle pour gerer multi-page $pdf->SetXY($this->posxref, $curY); - $pdf->MultiCell(60, 3, $outputlangs->convToOutputCharset($ref), 0, 'L'); + $pdf->MultiCell($this->posxlabel-$this->posxref, 3, $outputlangs->convToOutputCharset($ref), 0, 'L'); $pdf->SetXY($this->posxlabel, $curY); - $pdf->MultiCell(108, 3, $outputlangs->convToOutputCharset($libelleline), 0, 'L'); + $pdf->MultiCell($this->posxworkload-$this->posxlabel, 3, $outputlangs->convToOutputCharset($libelleline), 0, 'L'); + $pdf->SetXY($this->posxworkload, $curY); + $pdf->MultiCell($this->posxprogress-$this->posxworkload, 3, $planned_workload, 0, 'R'); $pdf->SetXY($this->posxprogress, $curY); - $pdf->MultiCell(16, 3, $progress, 0, 'L'); + $pdf->MultiCell($this->posxdatestart-$this->posxprogress, 3, $progress, 0, 'R'); $pdf->SetXY($this->posxdatestart, $curY); - $pdf->MultiCell(20, 3, $datestart, 0, 'L'); + $pdf->MultiCell($this->posxdateend-$this->posxdatestart, 3, $datestart, 0, 'C'); $pdf->SetXY($this->posxdateend, $curY); - $pdf->MultiCell(20, 3, $dateend, 0, 'L'); + $pdf->MultiCell($this->page_largeur-$this->marge_droite-$this->posxdateend, 3, $dateend, 0, 'C'); $pageposafter=$pdf->getPage(); @@ -362,8 +366,23 @@ class pdf_baleine extends ModelePDFProjects $pdf->SetTextColor(0,0,0); $pdf->SetFont('','', $default_font_size); - $pdf->SetXY($this->posxref-1, $tab_top+2); - $pdf->MultiCell(80,2, $outputlangs->transnoentities("Tasks"),'','L'); + $pdf->SetXY($this->posxref, $tab_top+1); + $pdf->MultiCell($this->posxlabel-$this->posxref,3, $outputlangs->transnoentities("Tasks"),'','L'); + + $pdf->SetXY($this->posxlabel, $tab_top+1); + $pdf->MultiCell($this->posxworkload-$this->posxlabel, 3, $outputlangs->transnoentities("Description"), 0, 'L'); + + $pdf->SetXY($this->posxworkload, $tab_top+1); + $pdf->MultiCell($this->posxprogress-$this->posxworkload, 3, $outputlangs->transnoentities("PlannedWorkloadShort"), 0, 'R'); + + $pdf->SetXY($this->posxprogress, $tab_top+1); + $pdf->MultiCell($this->posxdatestart-$this->posxprogress, 3, '%', 0, 'R'); + + $pdf->SetXY($this->posxdatestart, $tab_top+1); + $pdf->MultiCell($this->posxdateend-$this->posxdatestart, 3, '', 0, 'C'); + + $pdf->SetXY($this->posxdateend, $tab_top+1); + $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxdatestart, 3, '', 0, 'C'); } diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 52f4376d57b..5b73527b0f4 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -127,8 +127,9 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first From 4783db82ac034eba9d7a13e004a89197d5d497d2 Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Sat, 14 Mar 2015 12:42:52 +0100 Subject: [PATCH 274/429] Update admin_extrafields_add.tpl.php new type of extrafield : link --- htdocs/core/tpl/admin_extrafields_add.tpl.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/tpl/admin_extrafields_add.tpl.php b/htdocs/core/tpl/admin_extrafields_add.tpl.php index 1f61064183b..72eddc012d2 100644 --- a/htdocs/core/tpl/admin_extrafields_add.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_add.tpl.php @@ -48,6 +48,7 @@ else if (type == 'boolean') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled'); jQuery("#value_choice").hide();jQuery("#helpchkbxlst").hide();} else if (type == 'price') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled'); jQuery("#value_choice").hide();jQuery("#helpchkbxlst").hide();} else if (type == 'select') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled'); jQuery("#value_choice").show();jQuery("#helpselect").show();jQuery("#helpsellist").hide();jQuery("#helpchkbxlst").hide();} + else if (type == 'link') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled'); jQuery("#value_choice").show();jQuery("#helpselect").show();jQuery("#helpsellist").hide();} else if (type == 'sellist') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled'); jQuery("#value_choice").show();jQuery("#helpselect").hide();jQuery("#helpsellist").show();jQuery("#helpchkbxlst").hide();} else if (type == 'checkbox') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled'); jQuery("#value_choice").show();jQuery("#helpselect").show();jQuery("#helpsellist").hide();jQuery("#helpchkbxlst").hide();} else if (type == 'radio') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled'); jQuery("#value_choice").show();jQuery("#helpselect").show();jQuery("#helpsellist").hide();jQuery("#helpchkbxlst").hide();} From 9e62013bcadddec54ef66ed8c779fe03f6be3aa1 Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Sat, 14 Mar 2015 12:44:26 +0100 Subject: [PATCH 275/429] Update admin_extrafields_edit.tpl.php add new type of extrafields : link --- htdocs/core/tpl/admin_extrafields_edit.tpl.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/tpl/admin_extrafields_edit.tpl.php b/htdocs/core/tpl/admin_extrafields_edit.tpl.php index 13a6486aa4f..76713be57df 100644 --- a/htdocs/core/tpl/admin_extrafields_edit.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_edit.tpl.php @@ -68,7 +68,7 @@ if((($type == 'select') || ($type == 'checkbox') || ($type == 'radio')) && is_ar } } } -elseif (($type== 'sellist') || ($type == 'chkbxlst')) +elseif (($type== 'sellist') || ($type == 'chkbxlst') || ($type == 'link') ) { $paramlist=array_keys($param['options']); $param_chain = $paramlist[0]; From 2a09e34bdf068e793be9b86ab2f4f6eeec22c484 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Mar 2015 13:05:28 +0100 Subject: [PATCH 276/429] Uniformize etrafields visibility for thirdparties card --- htdocs/comm/card.php | 20 +++++++++++++++++--- htdocs/fourn/card.php | 15 ++++++++++++++- htdocs/societe/soc.php | 20 +++++++++++--------- 3 files changed, 42 insertions(+), 13 deletions(-) diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index 78b786d2366..9b7c3150c71 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -68,10 +68,15 @@ if (! $sortorder) $sortorder="ASC"; if (! $sortfield) $sortfield="nom"; $cancelbutton = GETPOST('cancel'); +$object = new Client($db); +$extrafields = new ExtraFields($db); + +// fetch optionals attributes and labels +$extralabels=$extrafields->fetch_name_optionals_label($object->table_element); + // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('commcard','globalcard')); -$object = new Societe($db); /* * Actions @@ -425,9 +430,9 @@ if ($id > 0) print ''; } - // Level of prospect if ($object->client == 2 || $object->client == 3) { + // Level of prospect print ''; print ''; } - // Sales representative + // Other attributes + $parameters=array('socid'=>$object->id, 'colspan' => ' colspan="3"', 'colspanvalue' => '3'); + $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + if (empty($reshook) && ! empty($extrafields->attribute_label)) + { + print $object->showOptionals($extrafields); + } + + // Sales representative include DOL_DOCUMENT_ROOT.'/societe/tpl/linesalesrepresentative.tpl.php'; // Module Adherent diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index 1d4c144a098..1825349e83b 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -52,9 +52,13 @@ $result = restrictedArea($user, 'societe&fournisseur', $id, '&societe'); $object = new Fournisseur($db); $extrafields = new ExtraFields($db); +// fetch optionals attributes and labels +$extralabels=$extrafields->fetch_name_optionals_label($object->table_element); + // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('suppliercard','globalcard')); + /* * Action */ @@ -253,7 +257,16 @@ if ($object->id > 0) print ""; print ''; - // Module Adherent + // Other attributes + $parameters=array('socid'=>$object->id, 'colspan' => ' colspan="3"', 'colspanvalue' => '3'); + $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + if (empty($reshook) && ! empty($extrafields->attribute_label)) + { + print $object->showOptionals($extrafields); + } + + // Module Adherent if (! empty($conf->adherent->enabled)) { $langs->load("members"); diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index 0f17851b89e..84b47983d5c 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -63,6 +63,10 @@ $extrafields = new ExtraFields($db); // fetch optionals attributes and labels $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$hookmanager->initHooks(array('thirdpartycard','globalcard')); + + // Get object canvas (By default, this is not defined, so standard usage of dolibarr) $object->getCanvas($socid); $canvas = $object->canvas?$object->canvas:GETPOST("canvas"); @@ -77,8 +81,6 @@ if (! empty($canvas)) // Security check $result = restrictedArea($user, 'societe', $socid, '&societe', '', 'fk_soc', 'rowid', $objcanvas); -// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array -$hookmanager->initHooks(array('thirdpartycard','globalcard')); /* @@ -1091,7 +1093,7 @@ else $form->select_users((! empty($object->commercial_id)?$object->commercial_id:$user->id),'commercial_id',1); // Add current user by default print ''; } - + // Incoterms if (!empty($conf->incoterm->enabled)) { @@ -1101,7 +1103,7 @@ else print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:'')); print ''; } - + // Other attributes $parameters=array('colspan' => ' colspan="3"', 'colspanvalue' => '3'); $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook @@ -1226,11 +1228,11 @@ else //Incoterms if (!empty($conf->incoterm->enabled)) - { + { $object->fk_incoterms = GETPOST('incoterm_id', 'int'); $object->location_incoterms = GETPOST('lcoation_incoterms', 'alpha'); } - + //Local Taxes $object->localtax1_assuj = GETPOST('localtax1assuj_value'); $object->localtax2_assuj = GETPOST('localtax2assuj_value'); @@ -1627,7 +1629,7 @@ else print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:'')); print ''; } - + // Logo print ''; print ''; @@ -2016,7 +2018,7 @@ else // Incoterms if (!empty($conf->incoterm->enabled)) - { + { print ''; + //Parameters + print ''; + $help = $langs->trans("GlobalVariableUpdaterHelp".$type).'
'.$langs->trans("GlobalVariableUpdaterHelpFormat".$type).''; + print ''; + print ''; + //Interval + print ''; + print ''; + print ''; + print ''; + print '
'; print $langs->trans('ProspectLevel'); @@ -453,7 +458,16 @@ if ($id > 0) print '
'; print ''; +//Help text +$help_text = $langs->trans("PriceExpressionEditorHelp1"); +$help_text.= '

'.$langs->trans("PriceExpressionEditorHelp2"); +$help_text.= '

'.$langs->trans("PriceExpressionEditorHelp3"); +$help_text.= '

'.$langs->trans("PriceExpressionEditorHelp4"); +$help_text.= '

'.$langs->trans("PriceExpressionEditorHelp5"); +foreach ($price_globals->listGlobalVariables() as $entry) { + $help_text.= '
#globals_'.$entry->code.'# '.$entry->description.' = '.$entry->value; +} + //Price expression editor -$help_text = $langs->trans("PriceExpressionEditorHelp1").'

'.$langs->trans("PriceExpressionEditorHelp2").'

'.$langs->trans("PriceExpressionEditorHelp3").'

'.$langs->trans("PriceExpressionEditorHelp4"); print ''; print '
'; print $langs->trans('IncotermLabel'); @@ -2030,7 +2032,7 @@ else { print $form->textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1); } - else + else { print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:''), $_SERVER['PHP_SELF'].'?socid='.$object->id); } From 306eff62ad4c8a03d0b3572ae768a321e5493b04 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Mar 2015 13:23:36 +0100 Subject: [PATCH 277/429] NEW: Show last official stable version into system - update page. --- htdocs/admin/tools/update.php | 54 +++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/htdocs/admin/tools/update.php b/htdocs/admin/tools/update.php index e12ef58cebf..7c85f820eab 100644 --- a/htdocs/admin/tools/update.php +++ b/htdocs/admin/tools/update.php @@ -24,6 +24,7 @@ require '../../main.inc.php'; include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; +include_once DOL_DOCUMENT_ROOT . '/core/lib/geturl.lib.php'; $langs->load("admin"); $langs->load("other"); @@ -105,28 +106,39 @@ llxHeader('',$langs->trans("Upgrade"),$wikihelp); print_fiche_titre($langs->trans("Upgrade"),'','setup'); print $langs->trans("CurrentVersion").' : '.DOL_VERSION.'
'; -if ($sfurl = simplexml_load_file('http://sourceforge.net/projects/dolibarr/rss')) { - $title=$sfurl->channel[0]->item[0]->title; -function word_limiter( $text, $limit = 30, $chars = '0123456789.' ) { - if( strlen( $text ) > $limit ) { - $words = str_word_count( $text, 2, $chars ); - $words = array_reverse( $words, TRUE ); - foreach( $words as $length => $word ) { - if( $length + strlen( $word ) >= $limit ) { - array_shift( $words ); - } else { - break; - } - } - $words = array_reverse( $words ); - $text = implode( " ", $words ) . ''; - } - return $text; -} -$str = $title; -print $langs->trans("LastStableVersion").' : '. word_limiter( $str ).'
'; -} else { +$result = getURLContent('http://sourceforge.net/projects/dolibarr/rss'); +//var_dump($result['content']); +$sfurl = simplexml_load_string($result['content']); +if ($sfurl) +{ + $title=$sfurl->channel[0]->item[0]->title; + + function word_limiter($text, $limit = 30, $chars = '0123456789.') + { + if (strlen( $text ) > $limit) + { + $words = str_word_count($text, 2, $chars); + $words = array_reverse($words, TRUE); + foreach($words as $length => $word) { + if ($length + strlen( $word ) >= $limit) + { + array_shift($words); + } else { + break; + } + } + $words = array_reverse($words); + $text = implode(" ", $words) . ''; + } + return $text; + } + + $str = $title; + print $langs->trans("LastStableVersion").' : '. word_limiter( $str ).'
'; +} +else +{ print $langs->trans("LastStableVersion").' : ' .$langs->trans("UpdateServerOffline").'
'; } print '
'; From ca34575df447e312a0b2416c248fa2bf39780764 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Mar 2015 13:42:00 +0100 Subject: [PATCH 278/429] FIXED: Allowed 0 to be used as an account mask. Required by CEGID. --- htdocs/core/modules/societe/mod_codecompta_aquarium.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/societe/mod_codecompta_aquarium.php b/htdocs/core/modules/societe/mod_codecompta_aquarium.php index 1efc062ab2c..c8e005c79c7 100644 --- a/htdocs/core/modules/societe/mod_codecompta_aquarium.php +++ b/htdocs/core/modules/societe/mod_codecompta_aquarium.php @@ -45,8 +45,8 @@ class mod_codecompta_aquarium extends ModeleAccountancyCode function __construct() { global $conf; - if (empty($conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER)) $conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER='411'; - if (empty($conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER)) $conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER='401'; + if (! isset($conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER) || trim($conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER) == '') $conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER='411'; + if (! isset($conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER) || trim($conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER) == '') $conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER='401'; $this->prefixcustomeraccountancycode=$conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER; $this->prefixsupplieraccountancycode=$conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER; } From 4a9a3ab04ba396128ed392a83fb9b9916186781b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Mar 2015 13:42:58 +0100 Subject: [PATCH 279/429] Revert "FIXED Allowed 0 to be used as an account mask" --- htdocs/core/modules/societe/mod_codecompta_aquarium.php | 4 ++-- htdocs/societe/admin/societe.php | 6 +----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/htdocs/core/modules/societe/mod_codecompta_aquarium.php b/htdocs/core/modules/societe/mod_codecompta_aquarium.php index 65a1f6192b5..1cc70aa009e 100644 --- a/htdocs/core/modules/societe/mod_codecompta_aquarium.php +++ b/htdocs/core/modules/societe/mod_codecompta_aquarium.php @@ -44,8 +44,8 @@ class mod_codecompta_aquarium extends ModeleAccountancyCode function __construct() { global $conf; - if (is_null($conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER)) $conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER='411'; - if (is_null($conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER)) $conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER='401'; + if (empty($conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER)) $conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER='411'; + if (empty($conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER)) $conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER='401'; $this->prefixcustomeraccountancycode=$conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER; $this->prefixsupplieraccountancycode=$conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER; } diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php index 65728435910..9834959273c 100644 --- a/htdocs/societe/admin/societe.php +++ b/htdocs/societe/admin/societe.php @@ -114,11 +114,7 @@ if ($action == 'setModuleOptions') { $param=GETPOST("param".$i,'alpha'); $value=GETPOST("value".$i,'alpha'); - // Use the default values if the field is not set - if ($param == '') { - $param = null; - } - $res = dolibarr_set_const($db,$param,$value,'chaine',0,'',$conf->entity); + if ($param) $res = dolibarr_set_const($db,$param,$value,'chaine',0,'',$conf->entity); if (! $res > 0) $error++; } } From 89b22be063b2c1f2b032e3e9a7b416cfa3c11859 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Mar 2015 13:44:26 +0100 Subject: [PATCH 280/429] FIXED: Allowed 0 to be used as an account mask. Required by CEGID. --- htdocs/core/modules/societe/mod_codecompta_aquarium.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/societe/mod_codecompta_aquarium.php b/htdocs/core/modules/societe/mod_codecompta_aquarium.php index 1cc70aa009e..a4514efbce4 100644 --- a/htdocs/core/modules/societe/mod_codecompta_aquarium.php +++ b/htdocs/core/modules/societe/mod_codecompta_aquarium.php @@ -44,8 +44,8 @@ class mod_codecompta_aquarium extends ModeleAccountancyCode function __construct() { global $conf; - if (empty($conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER)) $conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER='411'; - if (empty($conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER)) $conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER='401'; + if (! isset($conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER) || trim($conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER) == '') $conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER='411'; + if (! isset($conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER) || trim($conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER) == '') $conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER='401'; $this->prefixcustomeraccountancycode=$conf->global->COMPANY_AQUARIUM_MASK_CUSTOMER; $this->prefixsupplieraccountancycode=$conf->global->COMPANY_AQUARIUM_MASK_SUPPLIER; } From 44d6bdb1c5fb354adfea96f2a0911e72c31ed176 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Mar 2015 14:27:45 +0100 Subject: [PATCH 281/429] Doc --- htdocs/install/mysql/tables/llx_commande.sql | 4 ++-- htdocs/install/mysql/tables/llx_commande_fournisseur.sql | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_commande.sql b/htdocs/install/mysql/tables/llx_commande.sql index 90e8fd7af71..7bf22df1a1d 100644 --- a/htdocs/install/mysql/tables/llx_commande.sql +++ b/htdocs/install/mysql/tables/llx_commande.sql @@ -40,7 +40,7 @@ create table llx_commande fk_user_modif integer, -- user making last change fk_user_valid integer, -- user validating fk_user_cloture integer, -- user closing - source smallint, + source smallint, -- not used, except by setting this to 42 for orders coming for replenishment and 0 in other case ? fk_statut smallint default 0, amount_ht real default 0, remise_percent real default 0, @@ -64,7 +64,7 @@ create table llx_commande date_livraison date default NULL, fk_shipping_method integer, -- shipping method id fk_availability integer NULL, - fk_input_reason integer, + fk_input_reason integer, -- id coming from c_input_reason, '0' if no defined fk_delivery_address integer, -- delivery address (deprecated) import_key varchar(14), extraparams varchar(255) -- for stock other parameters with json format diff --git a/htdocs/install/mysql/tables/llx_commande_fournisseur.sql b/htdocs/install/mysql/tables/llx_commande_fournisseur.sql index f9f440d0db4..17027e16960 100644 --- a/htdocs/install/mysql/tables/llx_commande_fournisseur.sql +++ b/htdocs/install/mysql/tables/llx_commande_fournisseur.sql @@ -41,7 +41,7 @@ create table llx_commande_fournisseur fk_user_modif integer, -- user making last change fk_user_valid integer, -- user validating fk_user_approve integer, -- user approving - source smallint NOT NULL, + source smallint NOT NULL, -- not used, except by setting this to 42 for orders coming for replenishment and 0 in other case ? fk_statut smallint default 0, amount_ht real default 0, remise_percent real default 0, @@ -59,7 +59,7 @@ create table llx_commande_fournisseur fk_account integer, -- bank account fk_cond_reglement integer, -- condition de reglement fk_mode_reglement integer, -- mode de reglement - fk_input_method integer default 0, + fk_input_method integer default 0, -- id coming from c_input_reason, '0' if no defined import_key varchar(14), extraparams varchar(255) -- for stock other parameters with json format From cbacfa313731665b5676c1f79207cd61915e9643 Mon Sep 17 00:00:00 2001 From: Scrutinizer Auto-Fixer Date: Sat, 14 Mar 2015 13:30:19 +0000 Subject: [PATCH 282/429] Scrutinizer Auto-Fixes This commit consists of patches automatically generated for this project on https://scrutinizer-ci.com --- htdocs/categories/class/categorie.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index e4ff0e4e0d1..63aab39f6f8 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -1000,7 +1000,7 @@ class Categorie extends CommonObject /** * Check if no category with same label already exists for this cat's parent or root and for this cat's type * - * @return boolean 1 if already exist, 0 otherwise, -1 if error + * @return integer 1 if already exist, 0 otherwise, -1 if error */ function already_exists() { From 10bbf463e7c91df3deb44207e186475ef04f9401 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 14 Mar 2015 14:55:41 +0100 Subject: [PATCH 283/429] Several bug fixes from scrutinizer --- htdocs/admin/system/dolibarr.php | 2 +- htdocs/categories/class/categorie.class.php | 31 ++------------------- htdocs/commande/list.php | 6 ++-- htdocs/core/class/commonobject.class.php | 27 +++++++++++++++++- htdocs/core/lib/date.lib.php | 1 + htdocs/core/lib/functions.lib.php | 2 +- htdocs/product/class/product.class.php | 27 ++---------------- 7 files changed, 36 insertions(+), 60 deletions(-) diff --git a/htdocs/admin/system/dolibarr.php b/htdocs/admin/system/dolibarr.php index 96700ba1e16..4ec093dfafc 100644 --- a/htdocs/admin/system/dolibarr.php +++ b/htdocs/admin/system/dolibarr.php @@ -179,7 +179,7 @@ $c=getServerTimeZoneInt('summer'); $daylight=(is_numeric($c) && is_numeric($b))?round($c-$b):'unknown'; //print $a." ".$b." ".$c." ".$daylight; $val=($a>=0?'+':'').$a; -$val.=' ('.($a==='unknown'?'unknown':($a>=0?'+':'').($a*3600)).')'; +$val.=' ('.($a=='unknown'?'unknown':($a>=0?'+':'').($a*3600)).')'; $val.='       '.getServerTimeZoneString(); $val.='       '.$langs->trans("DaylingSavingTime").': '.($daylight==='unknown'?'unknown':($a==$c?yn($daylight):yn(0).($daylight?'     ('.$langs->trans('YesInSummer').')':''))); print $form->textwithtooltip($val,$txt,2,1,img_info('')); diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index e4ff0e4e0d1..5d64b7d9327 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -1295,11 +1295,9 @@ class Categorie extends CommonObject * * @param string $sdir Repertoire destination finale * @param string $file Nom du fichier uploade - * @param int $maxWidth Largeur maximum que dois faire la miniature (160 par defaut) - * @param int $maxHeight Hauteur maximum que dois faire la miniature (120 par defaut) * @return void */ - function add_photo($sdir, $file, $maxWidth = 160, $maxHeight = 120) + function add_photo($sdir, $file) { require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; @@ -1321,36 +1319,11 @@ class Categorie extends CommonObject if (file_exists($originImage)) { // Cree fichier en taille vignette - $this->add_thumb($originImage,$maxWidth,$maxHeight); + $this->add_thumb($originImage); } } } - /** - * Build thumb - * - * @param string $file Chemin du fichier d'origine - * @return void - */ - function add_thumb($file) - { - global $maxwidthsmall, $maxheightsmall, $maxwidthmini, $maxheightmini, $quality; - - require_once DOL_DOCUMENT_ROOT .'/core/lib/images.lib.php'; // This define also $maxwidthsmall, $quality, ... - - if (file_exists($file)) - { - // Create small thumbs for company (Ratio is near 16/9) - // Used on logon for example - $imgThumbSmall = vignette($file, $maxwidthsmall, $maxheightsmall, '_small', $quality); - - // Create mini thumbs for company (Ratio is near 16/9) - // Used on menu or for setup page for example - $imgThumbMini = vignette($file, $maxwidthmini, $maxheightmini, '_mini', $quality); - } - } - - /** * Return tableau de toutes les photos de la categorie * diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index c38b1a8e34f..e51ded5e297 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -259,7 +259,7 @@ if ($resql) if ($search_user > 0) $param.='&search_user='.$search_user; if ($search_sale > 0) $param.='&search_sale='.$search_sale; if ($search_total_ht != '') $param.='&search_total_ht='.$search_total_ht; - + $num = $db->num_rows($resql); print_barre_liste($title, $page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords); $i = 0; @@ -337,7 +337,7 @@ if ($resql) $generic_commande = new Commande($db); $generic_product = new Product($db); - while ($i < min($num,$limit)) + while ($i < min($num,$limit)) { $objp = $db->fetch_object($resql); $var=!$var; @@ -368,7 +368,7 @@ if ($resql) $nbprod++; // order contains real products $generic_product->id = $generic_commande->lines[$lig]->fk_product; if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product])) { - $generic_product->load_stock(true); + $generic_product->load_stock(); $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stock_reel'] = $generic_product->stock_reel; } else { $generic_product->stock_reel = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stock_reel']; diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index a316c3cd511..fe9cfd24013 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -3458,6 +3458,31 @@ abstract class CommonObject } } + /** + * Build thumb + * + * @param string $file Path file in UTF8 to original file to create thumbs from. + * @return void + */ + function add_thumb($file) + { + global $maxwidthsmall, $maxheightsmall, $maxwidthmini, $maxheightmini, $quality; + + require_once DOL_DOCUMENT_ROOT .'/core/lib/images.lib.php'; // This define also $maxwidthsmall, $quality, ... + + $file_osencoded=dol_osencode($file); + if (file_exists($file_osencoded)) + { + // Create small thumbs for company (Ratio is near 16/9) + // Used on logon for example + $imgThumbSmall = vignette($file_osencoded, $maxwidthsmall, $maxheightsmall, '_small', $quality); + + // Create mini thumbs for company (Ratio is near 16/9) + // Used on menu or for setup page for example + $imgThumbMini = vignette($file_osencoded, $maxwidthmini, $maxheightmini, '_mini', $quality); + } + } + /* Functions common to commonobject and commonobjectline */ @@ -3624,7 +3649,7 @@ abstract class CommonObject $attributeType = $extrafields->attribute_type[$attributeKey]; $attributeSize = $extrafields->attribute_size[$attributeKey]; $attributeLabel = $extrafields->attribute_label[$attributeKey]; - $attributeParam = $extrafields->attribute_param[$attributeKey]; + $attributeParam = $extrafields->attribute_param[$attributeKey]; switch ($attributeType) { case 'int': diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index 777b3633cb5..e5b60f4094c 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -95,6 +95,7 @@ function getServerTimeZoneInt($refgmtdate='now') } else { + $tmp=0; dol_print_error('','PHP version must be 5.3+'); /* // Method 2 (does not include daylight, not supported by adodb) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 63c0f6ce433..c1845482eaf 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4542,7 +4542,7 @@ function utf8_check($str) /** - * Return an UTF-8 string encoded into OS filesystem encoding. This function is used to define + * Return a string encoded into OS filesystem encoding. This function is used to define * value to pass to filesystem PHP functions. * * @param string $str String to encode (UTF-8) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 02686a94f03..4c341e58906 100755 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -138,6 +138,8 @@ class Product extends CommonObject var $stats_commande=array(); var $stats_contrat=array(); var $stats_facture=array(); + var $stats_commande_fournisseur=array(); + var $multilangs=array(); //! Taille de l'image @@ -3311,31 +3313,6 @@ class Product extends CommonObject else return -1; } - /** - * Build thumb - * - * @param string $file Chemin du fichier d'origine - * @return void - */ - function add_thumb($file) - { - global $maxwidthsmall, $maxheightsmall, $maxwidthmini, $maxheightmini, $quality; - - require_once DOL_DOCUMENT_ROOT .'/core/lib/images.lib.php'; // This define also $maxwidthsmall, $quality, ... - - $file_osencoded=dol_osencode($file); - if (file_exists($file_osencoded)) - { - // Create small thumbs for company (Ratio is near 16/9) - // Used on logon for example - $imgThumbSmall = vignette($file, $maxwidthsmall, $maxheightsmall, '_small', $quality); - - // Create mini thumbs for company (Ratio is near 16/9) - // Used on menu or for setup page for example - $imgThumbMini = vignette($file, $maxwidthmini, $maxheightmini, '_mini', $quality); - } - } - /** * Affiche la premiere photo du produit * From fc5899174be30836c958bda923f43851ec4d919b Mon Sep 17 00:00:00 2001 From: Ion Agorria Date: Sat, 14 Mar 2015 16:48:56 +0100 Subject: [PATCH 284/429] Relocation of expression files --- .../class/price_expression.class.php} | 25 ++--- .../class/price_parser.class.php} | 93 +++++++++++-------- .../editor.php} | 29 ++++-- 3 files changed, 88 insertions(+), 59 deletions(-) rename htdocs/product/{class/priceexpression.class.php => dynamic_price/class/price_expression.class.php} (92%) rename htdocs/product/{class/priceparser.class.php => dynamic_price/class/price_parser.class.php} (78%) rename htdocs/product/{expression.php => dynamic_price/editor.php} (85%) diff --git a/htdocs/product/class/priceexpression.class.php b/htdocs/product/dynamic_price/class/price_expression.class.php similarity index 92% rename from htdocs/product/class/priceexpression.class.php rename to htdocs/product/dynamic_price/class/price_expression.class.php index c5e24d3a228..babf86235c0 100644 --- a/htdocs/product/class/priceexpression.class.php +++ b/htdocs/product/dynamic_price/class/price_expression.class.php @@ -1,7 +1,7 @@ * Copyright (C) 2014 Juanjo Menent -/* Copyright (C) 2014 Ion Agorria +/* Copyright (C) 2015 Ion Agorria * * 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 @@ -18,7 +18,7 @@ */ /** - * \file htdocs/product/class/priceexpression.class.php + * \file htdocs/product/expression/class/price_expression.class.php * \ingroup product * \brief Class for accessing price expression table */ @@ -35,6 +35,7 @@ class PriceExpression var $id; var $title; var $expression; + public $table_element = "c_price_expression"; /** * Constructor @@ -57,14 +58,14 @@ class PriceExpression */ function create($user, $notrigger=0) { - $error=0; + $error=0; // Clean parameters if (isset($this->title)) $this->title=trim($this->title); if (isset($this->expression)) $this->expression=trim($this->expression); // Insert request - $sql = "INSERT INTO ".MAIN_DB_PREFIX."c_price_expression ("; + $sql = "INSERT INTO ".MAIN_DB_PREFIX.$this->table_element." ("; $sql.= "title, expression"; $sql.= ") VALUES ("; $sql.= " ".(isset($this->title)?"'".$this->db->escape($this->title)."'":"''").","; @@ -121,7 +122,7 @@ class PriceExpression function fetch($id) { $sql = "SELECT title, expression"; - $sql.= " FROM ".MAIN_DB_PREFIX."c_price_expression"; + $sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element; $sql.= " WHERE rowid = ".$id; dol_syslog(get_class($this)."::fetch"); @@ -133,8 +134,8 @@ class PriceExpression { $this->id = $id; $this->title = $obj->title; - $this->expression = $obj->expression; - return 1; + $this->expression = $obj->expression; + return 1; } else { @@ -156,10 +157,10 @@ class PriceExpression function list_price_expression() { $sql = "SELECT rowid, title, expression"; - $sql.= " FROM ".MAIN_DB_PREFIX."c_price_expression"; + $sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element; $sql.= " ORDER BY title"; - dol_syslog(get_class($this)."::list_price_expression"); + dol_syslog(get_class($this)."::list_price_expression"); $resql=$this->db->query($sql); if ($resql) { @@ -194,7 +195,7 @@ class PriceExpression function find_title($title) { $sql = "SELECT rowid"; - $sql.= " FROM ".MAIN_DB_PREFIX."c_price_expression"; + $sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element; $sql.= " WHERE title = '".$this->db->escape($title)."'"; dol_syslog(get_class($this)."::find_title"); @@ -235,7 +236,7 @@ class PriceExpression if (isset($this->expression)) $this->expression=trim($this->expression); // Update request - $sql = "UPDATE ".MAIN_DB_PREFIX."c_price_expression SET"; + $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET"; $sql.= " title = ".(isset($this->title)?"'".$this->db->escape($this->title)."'":"''").","; $sql.= " expression = ".(isset($this->expression)?"'".$this->db->escape($this->expression)."'":"''").""; $sql.= " WHERE rowid = ".$this->id; @@ -309,7 +310,7 @@ class PriceExpression if (! $error) { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."c_price_expression"; + $sql = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element; $sql.= " WHERE rowid = ".$rowid; dol_syslog(get_class($this)."::delete"); diff --git a/htdocs/product/class/priceparser.class.php b/htdocs/product/dynamic_price/class/price_parser.class.php similarity index 78% rename from htdocs/product/class/priceparser.class.php rename to htdocs/product/dynamic_price/class/price_parser.class.php index c2b047a7ae1..68367d8ba5f 100644 --- a/htdocs/product/class/priceparser.class.php +++ b/htdocs/product/dynamic_price/class/price_parser.class.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2015 Ion Agorria * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,13 +16,15 @@ */ /** - * \file htdocs/product/class/priceparser.class.php + * \file htdocs/product/expression/class/price_parser.class.php * \ingroup product * \brief File of class to calculate prices using expression */ require_once DOL_DOCUMENT_ROOT.'/includes/evalmath/evalmath.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php'; -require_once DOL_DOCUMENT_ROOT.'/product/class/priceexpression.class.php'; +require_once DOL_DOCUMENT_ROOT.'/product/dynamic_price/class/price_expression.class.php'; +require_once DOL_DOCUMENT_ROOT.'/product/dynamic_price/class/price_global_variable.class.php'; +require_once DOL_DOCUMENT_ROOT.'/product/dynamic_price/class/price_global_variable_updater.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; /** @@ -30,17 +32,17 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; */ class PriceParser { - protected $db; - // Limit of expressions per price - public $limit = 100; - // The error that ocurred when parsing price - public $error; - // The expression that caused the error - public $error_expr; - //The special char - public $special_chr = "#"; - //The separator char - public $separator_chr = ";"; + protected $db; + // Limit of expressions per price + public $limit = 100; + // The error that occurred when parsing price + public $error; + // The expression that caused the error + public $error_expr; + //The special char + public $special_chr = "#"; + //The separator char + public $separator_chr = ";"; /** * Constructor @@ -104,7 +106,7 @@ class PriceParser { return $langs->trans("ErrorPriceExpression".$code, $info); } - else if (in_array($code, array(6))) //Errors which have 2 args + else if (in_array($code, array(6, 23))) //Errors which have 2 args { return $langs->trans("ErrorPriceExpression".$code, $info[0], $info[1]); } @@ -128,6 +130,7 @@ class PriceParser */ public function parseExpression($product, $expression, $values) { + global $user; //Accessible product values by expressions $values = array_merge($values, array( "tva_tx" => $product->tva_tx, @@ -139,13 +142,31 @@ class PriceParser "price_min" => $product->price_min, )); - //Retreive all extrafield for product and add it to values + //Retrieve all extrafield for product and add it to values $extrafields = new ExtraFields($this->db); $extralabels = $extrafields->fetch_name_optionals_label('product', true); $product->fetch_optionals($product->id, $extralabels); foreach ($extrafields->attribute_label as $key=>$label) { - $values['options_'.$key] = $product->array_options['options_'.$key]; + $values["extrafield_".$key] = $product->array_options['options_'.$key]; + } + + //Process any pending updaters + $price_updaters = new PriceGlobalVariableUpdater($this->db); + foreach ($price_updaters->listPendingUpdaters() as $entry) { + //Schedule the next update by adding current timestamp (secs) + interval (mins) + $entry->update_next_update(dol_now() + ($entry->update_interval * 60), $user); + //Do processing + $res = $entry->process(); + //Store any error or clear status if OK + $entry->update_status($res < 1?$entry->error:'', $user); + } + + //Get all global values + $price_globals = new PriceGlobalVariable($this->db); + foreach ($price_globals->listGlobalVariables() as $entry) + { + $values["global_".$entry->code] = $entry->value; } //Check if empty @@ -153,36 +174,32 @@ class PriceParser if (empty($expression)) { $this->error = array(20, null); - return -1; + return -2; } //Prepare the lib, parameters and values $em = new EvalMath(); $em->suppress_errors = true; //Don't print errors on page $this->error_expr = null; - $search = array(); - $replace = array(); - foreach ($values as $key => $value) { - if ($value !== null) { - $search[] = $this->special_chr.$key.$this->special_chr; - $replace[] = $value; - } - } + $last_result = null; //Iterate over each expression splitted by $separator_chr $expression = str_replace("\n", $this->separator_chr, $expression); + foreach ($values as $key => $value) + { + $expression = str_replace($this->special_chr.$key.$this->special_chr, "$value", $expression); + } $expressions = explode($this->separator_chr, $expression); - $expressions = array_slice($expressions, 0, $limit); + $expressions = array_slice($expressions, 0, $this->limit); foreach ($expressions as $expr) { $expr = trim($expr); if (!empty($expr)) { - $expr = str_ireplace($search, $replace, $expr); $last_result = $em->evaluate($expr); $this->error = $em->last_error_code; if ($this->error !== null) { //$em->last_error is null if no error happened, so just check if error is not null $this->error_expr = $expr; - return -2; + return -3; } } } @@ -190,15 +207,15 @@ class PriceParser if (empty($vars["price"])) { $vars["price"] = $last_result; } - if ($vars["price"] === null) + if (!isset($vars["price"])) { $this->error = array(21, $expression); - return -3; + return -4; } if ($vars["price"] < 0) { $this->error = array(22, $expression); - return -4; + return -5; } return $vars["price"]; } @@ -209,13 +226,13 @@ class PriceParser * @param Product $product The Product object to get information * @param string $expression The expression to parse * @param array $extra_values Any aditional values for expression - * @return int > 0 if OK, < 1 if KO + * @return int > 0 if OK, < 1 if KO */ public function parseProductExpression($product, $expression, $extra_values = array()) { //Get the supplier min - $productFournisseur = new ProductFournisseur($this->db); - $supplier_min_price = $productFournisseur->find_min_price_product_fournisseur($product->id); + $productFournisseur = new ProductFournisseur($this->db); + $supplier_min_price = $productFournisseur->find_min_price_product_fournisseur($product->id); //Accessible values by expressions $extra_values = array_merge($extra_values, array( @@ -237,7 +254,7 @@ class PriceParser * * @param Product $product The Product object to get information * @param array $extra_values Any aditional values for expression - * @return int > 0 if OK, < 1 if KO + * @return int > 0 if OK, < 1 if KO */ public function parseProduct($product, $extra_values = array()) { @@ -261,7 +278,7 @@ class PriceParser * @param int $quantity Supplier Min quantity * @param int $tva_tx Supplier VAT rate * @param array $extra_values Any aditional values for expression - * @return int > 0 if OK, < 1 if KO + * @return int > 0 if OK, < 1 if KO */ public function parseProductSupplierExpression($product_id, $expression, $quantity = null, $tva_tx = null, $extra_values = array()) { @@ -285,7 +302,7 @@ class PriceParser * @param int $quantity Min quantity * @param int $tva_tx VAT rate * @param array $extra_values Any aditional values for expression - * @return int > 0 if OK, < 1 if KO + * @return int > 0 if OK, < 1 if KO */ public function parseProductSupplier($product_id, $expression_id, $quantity = null, $tva_tx = null, $extra_values = array()) { diff --git a/htdocs/product/expression.php b/htdocs/product/dynamic_price/editor.php similarity index 85% rename from htdocs/product/expression.php rename to htdocs/product/dynamic_price/editor.php index be3e5401789..1fc7df3b731 100644 --- a/htdocs/product/expression.php +++ b/htdocs/product/dynamic_price/editor.php @@ -16,16 +16,17 @@ */ /** - * \file htdocs/product/expression.php + * \file htdocs/product/expression/editor.php * \ingroup product * \brief Page for editing expression */ -require '../main.inc.php'; +require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php'; -require_once DOL_DOCUMENT_ROOT.'/product/class/priceexpression.class.php'; -require_once DOL_DOCUMENT_ROOT.'/product/class/priceparser.class.php'; +require_once DOL_DOCUMENT_ROOT.'/product/dynamic_price/class/price_expression.class.php'; +require_once DOL_DOCUMENT_ROOT.'/product/dynamic_price/class/price_global_variable.class.php'; +require_once DOL_DOCUMENT_ROOT.'/product/dynamic_price/class/price_parser.class.php'; $langs->load("products"); $langs->load("accountancy"); //"Back" translation is on this file @@ -47,6 +48,7 @@ $product = new Product($db); $product->fetch($id, ''); $price_expression = new PriceExpression($db); +$price_globals = new PriceGlobalVariable($db); //Fetch expression data if (empty($eid)) //This also disables fetch when eid == 0 @@ -184,8 +186,17 @@ print '
'.$langs->trans("Name").''; print ''; print '
'.$form->textwithpicto($langs->trans("PriceExpressionEditor"),$help_text,1).''; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $doleditor=new DolEditor('expression',isset($price_expression->expression)?$price_expression->expression:'','',300,'','',false,false,false,4,80); @@ -194,7 +205,7 @@ print '
'; //Buttons -print '
'; +print '
'; print ''; print ''.$langs->trans("Back").''; if ($eid == 0) @@ -205,9 +216,9 @@ else { print ''; } -print '
'; +print ''; -print ''; +print ''; // This code reloads the page depending of selected option, goes to page selected by tab when back is pressed print ''; + print '
'.$form->textwithpicto($langs->trans("Parameters"),$help,1).''; + require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; + $doleditor=new DolEditor('parameters',empty($price_updaters->parameters)?'':$price_updaters->parameters,'',300,'','',false,false,false,10,80); + $doleditor->Create(); + print '
'.$langs->trans("UpdateInterval").'
'; + + //Form Buttons + print '
'; + print '  '; + print ''; + print '
'; + print ''; +} else { + //Action Buttons + print '
'; + print ''.$langs->trans("Add").''; + print '
'; +} + +llxFooter(); +$db->close(); From 2d09d8196f85e56b970de315e9f5fa686782cc28 Mon Sep 17 00:00:00 2001 From: Ion Agorria Date: Sat, 14 Mar 2015 16:51:50 +0100 Subject: [PATCH 288/429] Language additions --- htdocs/langs/en_US/errors.lang | 6 ++++++ htdocs/langs/en_US/products.lang | 17 +++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 3d83901194b..37670b7f003 100755 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -161,6 +161,12 @@ ErrorPriceExpressionUnknown=Unknown error '%s' ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action +ErrorGlobalVariableUpdater0=HTTP request failed with error '%s' +ErrorGlobalVariableUpdater1=Invalid JSON format '%s' +ErrorGlobalVariableUpdater2=Missing parameter '%s' +ErrorGlobalVariableUpdater3=The requested data was not found in result +ErrorGlobalVariableUpdater4=SOAP client failed with error '%s' +ErrorGlobalVariableUpdater5=No global variable selected # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index eb7261ab613..1b9a49b559d 100755 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -245,12 +245,25 @@ MinimumRecommendedPrice=Minimum recommended price is : %s PriceExpressionEditor=Price expression editor PriceExpressionSelected=Selected price expression PriceExpressionEditorHelp1="price = 2 + 2" or "2 + 2" for setting the price. Use ; to separate expressions -PriceExpressionEditorHelp2=You can access ExtraFields with variables like #options_myextrafieldkey# +PriceExpressionEditorHelp2=You can access ExtraFields with variables like #extrafield_myextrafieldkey# and global variables with #global_mycode# PriceExpressionEditorHelp3=In both product/service and supplier prices there are these variables available:
#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min# PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# +PriceExpressionEditorHelp5=Available global values: PriceMode=Price mode PriceNumeric=Number DefaultPrice=Default price ComposedProductIncDecStock=Increase/Decrease stock on parent change ComposedProduct=Sub-product -MinSupplierPrice=Minimun supplier price +MinSupplierPrice=Minimum supplier price +DynamicPriceConfiguration=Dynamic price configuration +GlobalVariables=Global variables +GlobalVariableUpdaters=Global variable updaters +GlobalVariableUpdaterType0=JSON data +GlobalVariableUpdaterHelp0=Parses JSON data from specified URL, VALUE specifies the location of relevant value, +GlobalVariableUpdaterHelpFormat0=format is {"URL": "http://example.com/urlofjson", "VALUE": "array1,array2,targetvalue"} +GlobalVariableUpdaterType1=WebService data +GlobalVariableUpdaterHelp1=Parses WebService data from specified URL, NS specifies the namespace, VALUE specifies the location of relevant value, DATA should contain the data to send and METHOD is the calling WS method +GlobalVariableUpdaterHelpFormat1=format is {"URL": "http://example.com/urlofws", "VALUE": "array,targetvalue", "NS": "http://example.com/urlofns", "METHOD": "myWSMethod", "DATA": {"your": "data, "to": "send"}} +UpdateInterval=Update interval (minutes) +LastUpdated=Last updated +CorrectlyUpdated=Correctly updated \ No newline at end of file From e76b6e740f442e865939303134488f821f709c46 Mon Sep 17 00:00:00 2001 From: Ion Agorria Date: Sat, 14 Mar 2015 16:52:01 +0100 Subject: [PATCH 289/429] SQL additions --- .../install/mysql/migration/3.7.0-3.8.0.sql | 20 +++++++++++++ .../tables/llx_c_price_global_variable.sql | 25 ++++++++++++++++ .../llx_c_price_global_variable_updater.sql | 29 +++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 htdocs/install/mysql/tables/llx_c_price_global_variable.sql create mode 100644 htdocs/install/mysql/tables/llx_c_price_global_variable_updater.sql diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index b7475d88f91..12d6cce2022 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -370,3 +370,23 @@ INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('DDP', 'Delivered Du -- Extrafields fk_object must be unique (1-1 relation) ALTER TABLE llx_societe_extrafields DROP INDEX idx_societe_extrafields; ALTER TABLE llx_societe_extrafields ADD UNIQUE INDEX uk_societe_extrafields (fk_object); + +create table llx_c_price_global_variable +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + code varchar(20) NOT NULL, + description text DEFAULT NULL, + value double(24,8) DEFAULT 0 +)ENGINE=innodb; + +create table llx_c_price_global_variable_updater +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + type integer NOT NULL, + description text DEFAULT NULL, + parameters text DEFAULT NULL, + fk_variable integer NOT NULL, + update_interval integer DEFAULT 0, + next_update integer DEFAULT 0, + last_status text DEFAULT NULL +)ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_c_price_global_variable.sql b/htdocs/install/mysql/tables/llx_c_price_global_variable.sql new file mode 100644 index 00000000000..0f5630ed193 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_c_price_global_variable.sql @@ -0,0 +1,25 @@ +-- ============================================================================ +-- Copyright (C) 2015 Ion agorria +-- +-- 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_c_price_global_variable +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + code varchar(20) NOT NULL, + description text DEFAULT NULL, + value double(24,8) DEFAULT 0 +)ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_c_price_global_variable_updater.sql b/htdocs/install/mysql/tables/llx_c_price_global_variable_updater.sql new file mode 100644 index 00000000000..0c1dcfba701 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_c_price_global_variable_updater.sql @@ -0,0 +1,29 @@ +-- ============================================================================ +-- Copyright (C) 2015 Ion agorria +-- +-- 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_c_price_global_variable_updater +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + type integer NOT NULL, + description text DEFAULT NULL, + parameters text DEFAULT NULL, + fk_variable integer NOT NULL, + update_interval integer DEFAULT 0, + next_update integer DEFAULT 0, + last_status text DEFAULT NULL +)ENGINE=innodb; From 8f0e514f8364a98ebcc25c4a9639e90a598a4543 Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Sun, 15 Mar 2015 10:49:16 +0100 Subject: [PATCH 290/429] Update pdf_paiement.class.php Add bank account on detail line (usefull when you have many bank account) Add society name in the header (usefull when you nanage many society) --- .../modules/rapport/pdf_paiement.class.php | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/htdocs/core/modules/rapport/pdf_paiement.class.php b/htdocs/core/modules/rapport/pdf_paiement.class.php index f9726eedbed..b7aea75836f 100644 --- a/htdocs/core/modules/rapport/pdf_paiement.class.php +++ b/htdocs/core/modules/rapport/pdf_paiement.class.php @@ -1,6 +1,7 @@ * Copyright (C) 2006-2014 Laurent Destailleur + * Copyright (C) 2015 Charles-Fr BENKE * * 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 @@ -65,7 +66,8 @@ class pdf_paiement $this->posxdate=$this->marge_gauche+2; $this->posxpaymenttype=42; $this->posxinvoice=82; - $this->posxinvoiceamount=122; + $this->posxbankaccount=110; + $this->posxinvoiceamount=132; $this->posxpaymentamount=162; if ($this->page_largeur < 210) // To work with US executive format { @@ -147,16 +149,18 @@ class pdf_paiement //$sql .= ", c.libelle as paiement_type, p.num_paiement"; $sql.= ", c.code as paiement_code, p.num_paiement"; $sql.= ", p.amount as paiement_amount, f.total_ttc as facture_amount "; - $sql.= ", pf.amount as pf_amount "; + $sql.= ", pf.amount as pf_amount , ba.ref as bankaccount "; $sql.= ", p.rowid as prowid"; $sql.= " FROM ".MAIN_DB_PREFIX."paiement as p, ".MAIN_DB_PREFIX."facture as f,"; $sql.= " ".MAIN_DB_PREFIX."c_paiement as c, ".MAIN_DB_PREFIX."paiement_facture as pf,"; + $sql.= " ".MAIN_DB_PREFIX."bank as b, ".MAIN_DB_PREFIX."bank_account as ba,"; $sql.= " ".MAIN_DB_PREFIX."societe as s"; if (! $user->rights->societe->client->voir && ! $socid) { $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; } $sql.= " WHERE f.fk_soc = s.rowid AND pf.fk_facture = f.rowid AND pf.fk_paiement = p.rowid"; + $sql.= " AND p.fk_bank = b.rowid AND b.fk_account = ba.rowid "; $sql.= " AND f.entity = ".$conf->entity; $sql.= " AND p.fk_paiement = c.id "; $sql.= " AND p.datep BETWEEN '".$this->db->idate(dol_get_first_day($year,$month))."' AND '".$this->db->idate(dol_get_last_day($year,$month))."'"; @@ -188,6 +192,7 @@ class pdf_paiement $lines[$i][5] = price($objp->facture_amount); $lines[$i][6] = price($objp->pf_amount); $lines[$i][7] = $objp->prowid; + $lines[$i][8] = $objp->bankaccount; $i++; } } @@ -275,7 +280,8 @@ class pdf_paiement $default_font_size = pdf_getPDFFontSize($outputlangs); - $title=$outputlangs->transnoentities("ListOfCustomerPayments"); + $title=$conf->global->MAIN_INFO_SOCIETE_NOM; + $title.=' - '.$outputlangs->transnoentities("ListOfCustomerPayments"); $title.=' - '.dol_print_date(dol_mktime(0,0,0,$this->month,1,$this->year),"%B %Y",false,$outputlangs,true); $pdf->SetFont('','B',$default_font_size + 1); $pdf->SetXY($this->marge_gauche,10); @@ -300,7 +306,12 @@ class pdf_paiement $pdf->line($this->posxinvoice - 1, $this->tab_top, $this->posxinvoice - 1, $this->tab_top + $this->tab_height + 10); $pdf->SetXY($this->posxinvoice, $this->tab_top+2); - $pdf->MultiCell($this->posxinvoiceamount - $this->posxinvoice, 2, $outputlangs->transnoentities("Invoice"), 0, 'L'); + $pdf->MultiCell($this->posxbankaccount - $this->posxinvoice, 2, $outputlangs->transnoentities("Invoice"), 0, 'L'); + + $pdf->line($this->posxbankaccount - 1, $this->tab_top, $this->posxbankaccount - 1, $this->tab_top + $this->tab_height + 10); + $pdf->SetXY($this->posxbankaccount, $this->tab_top+2); + $pdf->MultiCell($this->posxinvoiceamount - $this->posxbankaccount, 2, $outputlangs->transnoentities("Account"), 0, 'L'); + $pdf->line($this->posxinvoiceamount - 1, $this->tab_top, $this->posxinvoiceamount - 1, $this->tab_top + $this->tab_height + 10); $pdf->SetXY($this->posxinvoiceamount, $this->tab_top+2); @@ -364,8 +375,12 @@ class pdf_paiement // Invoice number $pdf->SetXY($this->posxinvoice, $this->tab_top + 10 + $yp); - $pdf->MultiCell($this->posxinvoiceamount - $this->posxdate, $this->line_height, $lines[$j][0], 0, 'L', 0); + $pdf->MultiCell($this->posxinvoiceamount - $this->posxbankaccount, $this->line_height, $lines[$j][0], 0, 'L', 0); + // BankAccount + $pdf->SetXY($this->posxbankaccount, $this->tab_top + 10 + $yp); + $pdf->MultiCell($this->posxbankaccount - $this->posxdate, $this->line_height, $lines[$j][8], 0, 'L', 0); + // Invoice amount $pdf->SetXY($this->posxinvoiceamount, $this->tab_top + 10 + $yp); $pdf->MultiCell($this->posxpaymentamount- $this->posxinvoiceamount - 1, $this->line_height, $lines[$j][5], 0, 'R', 0); @@ -381,6 +396,5 @@ class pdf_paiement } } } - } From d69f066735eb8f056a08fdbe7c78e246f710e777 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 15 Mar 2015 14:04:07 +0100 Subject: [PATCH 291/429] QUAL: Traduce terms + remove
--- htdocs/adherents/class/adherent.class.php | 20 ++++++------- .../adherents/class/adherent_type.class.php | 12 ++++---- htdocs/adherents/class/cotisation.class.php | 12 ++++---- htdocs/admin/mailman.php | 22 +++++++-------- htdocs/admin/spip.php | 22 +++++++-------- htdocs/bookmarks/list.php | 18 ++++++------ htdocs/categories/class/categorie.class.php | 10 +++---- htdocs/comm/action/class/actioncomm.class.php | 12 ++++---- .../class/askpricesupplier.class.php | 10 +++---- htdocs/comm/propal/class/propal.class.php | 14 +++++----- htdocs/commande/customer.php | 10 +++---- htdocs/compta/bank/annuel.php | 4 +-- htdocs/compta/bank/class/account.class.php | 28 +++++++++---------- htdocs/compta/bank/graph.php | 8 +++--- .../deplacement/class/deplacement.class.php | 10 +++---- htdocs/compta/dons/class/don.class.php | 10 +++---- .../facture/class/facture-rec.class.php | 12 ++++---- .../compta/localtax/class/localtax.class.php | 8 +++--- .../cheque/class/remisecheque.class.php | 12 ++++---- .../compta/paiement/class/paiement.class.php | 12 ++++---- .../class/bonprelevement.class.php | 12 ++++---- .../salaries/class/paymentsalary.class.php | 8 +++--- .../sociales/class/chargesociales.class.php | 12 ++++---- .../class/paymentsocialcontribution.class.php | 12 ++++---- htdocs/compta/tva/class/tva.class.php | 8 +++--- htdocs/contact/class/contact.class.php | 12 ++++---- htdocs/contrat/card.php | 2 +- htdocs/contrat/class/contrat.class.php | 24 ++++++++-------- htdocs/core/class/discount.class.php | 12 ++++---- htdocs/core/tpl/login.tpl.php | 4 +-- htdocs/core/tpl/passwordforgotten.tpl.php | 4 +-- htdocs/ecm/class/ecmdirectory.class.php | 16 +++++------ .../class/expensereport.class.php | 10 +++---- htdocs/fichinter/class/fichinter.class.php | 8 +++--- .../class/fournisseur.commande.class.php | 12 ++++---- .../fourn/class/fournisseur.facture.class.php | 16 +++++------ htdocs/fourn/class/paiementfourn.class.php | 12 ++++---- htdocs/holiday/class/holiday.class.php | 8 +++--- htdocs/livraison/class/livraison.class.php | 12 ++++---- htdocs/product/class/product.class.php | 24 ++++++++-------- htdocs/product/expression.php | 4 +-- htdocs/product/stock/class/entrepot.class.php | 8 +++--- htdocs/projet/class/project.class.php | 20 ++++++------- htdocs/projet/class/task.class.php | 12 ++++---- htdocs/resource/class/resource.class.php | 8 +++--- htdocs/societe/class/address.class.php | 8 +++--- htdocs/societe/class/societe.class.php | 28 +++++++++---------- htdocs/user/class/user.class.php | 28 +++++++++---------- 48 files changed, 305 insertions(+), 305 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 78195bfa868..c8c4f9b9ad4 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -1548,9 +1548,9 @@ class Adherent extends CommonObject } /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param int $maxlen length max libelle * @param string $option Page lien * @return string Chaine avec URL @@ -1568,25 +1568,25 @@ class Adherent extends CommonObject if ($option == 'card') { - $lien = ''; } if ($option == 'subscription') { - $lien = ''; } if ($option == 'category') { - $lien = 'ref,$maxlen):$this->ref).$lienfin; + $result.=$link.($maxlen?dol_trunc($this->ref,$maxlen):$this->ref).$linkend; return $result; } diff --git a/htdocs/adherents/class/adherent_type.class.php b/htdocs/adherents/class/adherent_type.class.php index 5fc2d7c4bd8..cbf5b428cc0 100644 --- a/htdocs/adherents/class/adherent_type.class.php +++ b/htdocs/adherents/class/adherent_type.class.php @@ -266,9 +266,9 @@ class AdherentType extends CommonObject /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param int $maxlen length max libelle * @return string String with URL */ @@ -279,14 +279,14 @@ class AdherentType extends CommonObject $result=''; $label=$langs->trans("ShowTypeCard",$this->libelle); - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='group'; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - $result.=$lien.($maxlen?dol_trunc($this->libelle,$maxlen):$this->libelle).$lienfin; + $result.=$link.($maxlen?dol_trunc($this->libelle,$maxlen):$this->libelle).$linkend; return $result; } diff --git a/htdocs/adherents/class/cotisation.class.php b/htdocs/adherents/class/cotisation.class.php index c7faf97e748..2e1966c371e 100644 --- a/htdocs/adherents/class/cotisation.class.php +++ b/htdocs/adherents/class/cotisation.class.php @@ -254,9 +254,9 @@ class Cotisation extends CommonObject /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @return string Chaine avec URL */ function getNomUrl($withpicto=0) @@ -266,14 +266,14 @@ class Cotisation extends CommonObject $result=''; $label=$langs->trans("ShowSubscription").': '.$this->ref; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='payment'; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - $result.=$lien.$this->ref.$lienfin; + $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/admin/mailman.php b/htdocs/admin/mailman.php index 3e4a2c14a98..384400b8597 100644 --- a/htdocs/admin/mailman.php +++ b/htdocs/admin/mailman.php @@ -162,11 +162,11 @@ $var=true; if (! empty($conf->global->ADHERENT_USE_MAILMAN)) { - //$lien=img_picto($langs->trans("Active"),'tick').' '; - $lien=''; - //$lien.=$langs->trans("Disable"); - $lien.=img_picto($langs->trans("Activated"),'switch_on'); - $lien.=''; + //$link=img_picto($langs->trans("Active"),'tick').' '; + $link=''; + //$link.=$langs->trans("Disable"); + $link.=img_picto($langs->trans("Activated"),'switch_on'); + $link.=''; // Edition des varibales globales $constantes=array( 'ADHERENT_MAILMAN_ADMINPW', @@ -175,7 +175,7 @@ if (! empty($conf->global->ADHERENT_USE_MAILMAN)) 'ADHERENT_MAILMAN_LISTS' ); - print_fiche_titre($langs->trans('MailmanTitle'), $lien,''); + print_fiche_titre($langs->trans('MailmanTitle'), $link,''); print '
'; @@ -207,11 +207,11 @@ if (! empty($conf->global->ADHERENT_USE_MAILMAN)) } else { - $lien=''; - //$lien.=img_$langs->trans("Activate") - $lien.=img_picto($langs->trans("Disabled"),'switch_off'); - $lien.=''; - print_fiche_titre($langs->trans('MailmanTitle'), $lien,''); + $link=''; + //$link.=img_$langs->trans("Activate") + $link.=img_picto($langs->trans("Disabled"),'switch_off'); + $link.=''; + print_fiche_titre($langs->trans('MailmanTitle'), $link,''); } dol_fiche_end(); diff --git a/htdocs/admin/spip.php b/htdocs/admin/spip.php index 9c81338562e..76f66d4e96b 100644 --- a/htdocs/admin/spip.php +++ b/htdocs/admin/spip.php @@ -124,11 +124,11 @@ $var=true; */ if (! empty($conf->global->ADHERENT_USE_SPIP)) { - //$lien=img_picto($langs->trans("Active"),'tick').' '; - $lien=''; - //$lien.=$langs->trans("Disable"); - $lien.=img_picto($langs->trans("Activated"),'switch_on'); - $lien.=''; + //$link=img_picto($langs->trans("Active"),'tick').' '; + $link=''; + //$link.=$langs->trans("Disable"); + $link.=img_picto($langs->trans("Activated"),'switch_on'); + $link.=''; // Edition des varibales globales $constantes=array( 'ADHERENT_SPIP_SERVEUR', @@ -137,18 +137,18 @@ if (! empty($conf->global->ADHERENT_USE_SPIP)) 'ADHERENT_SPIP_PASS' ); - print_fiche_titre($langs->trans('SPIPTitle'), $lien, ''); + print_fiche_titre($langs->trans('SPIPTitle'), $link, ''); print '
'; form_constantes($constantes); print '
'; } else { - $lien=''; - //$lien.=$langs->trans("Activate"); - $lien.=img_picto($langs->trans("Disabled"),'switch_off'); - $lien.=''; - print_fiche_titre($langs->trans('SPIPTitle'), $lien, ''); + $link=''; + //$link.=$langs->trans("Activate"); + $link.=img_picto($langs->trans("Disabled"),'switch_off'); + $link.=''; + print_fiche_titre($langs->trans('SPIPTitle'), $link, ''); } diff --git a/htdocs/bookmarks/list.php b/htdocs/bookmarks/list.php index e00772a0af5..be821f72af9 100644 --- a/htdocs/bookmarks/list.php +++ b/htdocs/bookmarks/list.php @@ -119,17 +119,17 @@ if ($resql) print "bid."\">".img_object($langs->trans("ShowBookmark"),"bookmark").' '.$obj->bid.""; print ''; - $lieninterne=0; + $linkintern=0; $title=dol_trunc($obj->title,24); - $lien=dol_trunc($obj->url,24); + $link=dol_trunc($obj->url,24); // Title print ""; if ($obj->rowid) { // Lien interne societe - $lieninterne=1; - $lien="Dolibarr"; + $linkintern=1; + $link="Dolibarr"; if (! $obj->title) { // For compatibility with old Dolibarr bookmarks @@ -140,16 +140,16 @@ if ($resql) } $title=img_object($langs->trans("ShowCompany"),"company").' '.$obj->title; } - if ($lieninterne) print "url."\">"; + if ($linkintern) print "url."\">"; print $title; - if ($lieninterne) print ""; + if ($linkintern) print ""; print "\n"; // Url print ""; - if (! $lieninterne) print 'target?' target="newlink"':'').'>'; - print $lien; - if (! $lieninterne) print ''; + if (! $linkintern) print 'target?' target="newlink"':'').'>'; + print $link; + if (! $linkintern) print ''; print "\n"; // Target diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 7f75e6f580b..9a76211b828 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -1265,7 +1265,7 @@ class Categorie extends CommonObject /** * Return name and link of category (with picto) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param string $option Sur quoi pointe le lien ('', 'xyz') * @param int $maxlength Max length of text * @return string Chaine avec URL @@ -1277,15 +1277,15 @@ class Categorie extends CommonObject $result=''; $label=$langs->trans("ShowCategory").': '. ($this->ref?$this->ref:$this->label); - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='category'; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.dol_trunc(($this->ref?$this->ref:$this->label),$maxlength).$lienfin; + if ($withpicto != 2) $result.=$link.dol_trunc(($this->ref?$this->ref:$this->label),$maxlength).$linkend; return $result; } diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 5be0df34371..37758eea2ab 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -957,7 +957,7 @@ class ActionComm extends CommonObject * Return URL of event * Use $this->id, $this->type_code, $this->label and $this->type_label * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param int $maxlength Nombre de caracteres max dans libelle * @param string $classname Force style class on a link * @param string $option ''=Link to action,'birthday'=Link to contact @@ -974,9 +974,9 @@ class ActionComm extends CommonObject $label = $this->label; if (empty($label)) $label=$this->libelle; // For backward compatibility $linkclose = '" title="'.dol_escape_htmltag($tooltip, 1).'" class="classfortooltip">'; - if ($option=='birthday') $lien = 'type_code) && $langs->transnoentities("Action".$this->type_code)!="Action".$this->type_code)?' ('.$langs->transnoentities("Action".$this->type_code).')':''); } - $result.=$lien.img_object($langs->trans("ShowAction").': '.$libelle, ($overwritepicto?$overwritepicto:'action'), 'class="classfortooltip"').$lienfin; + $result.=$link.img_object($langs->trans("ShowAction").': '.$libelle, ($overwritepicto?$overwritepicto:'action'), 'class="classfortooltip"').$linkend; } if ($withpicto==1) $result.=' '; - $result.=$lien.$libelleshort.$lienfin; + $result.=$link.$libelleshort.$linkend; return $result; } diff --git a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php index 8740e139235..ee0ad10d2e3 100644 --- a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php +++ b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php @@ -2240,21 +2240,21 @@ class AskPriceSupplier extends CommonObject $label=$langs->trans("ShowAskpricesupplier").': '.$this->ref; $linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; if ($option == '') { - $lien = 'ref.$lienfin; + $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index b0997cb9943..8909441b9c1 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -2658,27 +2658,27 @@ class Propal extends CommonObject $label.= '
' . $langs->trans('AmountTTC') . ': ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency); $linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; if ($option == '') { - $lien = '
ref.$lienfin; + $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/commande/customer.php b/htdocs/commande/customer.php index 333ce5f7908..e4662cc7ee8 100644 --- a/htdocs/commande/customer.php +++ b/htdocs/commande/customer.php @@ -158,12 +158,12 @@ if ($resql) print ''; $result=''; - $lien=$lienfin=''; - $lien = ''; - $lienfin=''; + $link=$linkend=''; + $link = ''; + $linkend=''; $name=$obj->name; - $result.=($lien.img_object($langs->trans("ShowCompany").': '.$name,'company').$lienfin); - $result.=$lien.(dol_trunc($name,$maxlen)).$lienfin; + $result.=($link.img_object($langs->trans("ShowCompany").': '.$name,'company').$linkend); + $result.=$link.(dol_trunc($name,$maxlen)).$linkend; print $result; print ''; diff --git a/htdocs/compta/bank/annuel.php b/htdocs/compta/bank/annuel.php index e5bafe8fed6..0a9cfc79b10 100644 --- a/htdocs/compta/bank/annuel.php +++ b/htdocs/compta/bank/annuel.php @@ -137,7 +137,7 @@ $head=bank_prepare_head($acct); dol_fiche_head($head,'annual',$langs->trans("FinancialAccount"),0,'account'); $title=$langs->trans("FinancialAccount")." : ".$acct->label; -$lien=($year_start?"".img_previous()." ".$langs->trans("Year")." ".img_next()."":""); +$link=($year_start?"".img_previous()." ".$langs->trans("Year")." ".img_next()."":""); print ''; @@ -191,7 +191,7 @@ print '
'; // Affiche tableau print '
'; -print ''; +print ''; print ''; for ($annee = $year_start ; $annee <= $year_end ; $annee++) diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index 80262babbbf..c0704ef8f7a 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -968,9 +968,9 @@ class Account extends CommonObject /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto Inclut le picto dans le lien + * @param int $withpicto Include picto into link * @param string $mode ''=Link to card, 'transactions'=Link to transactions card * @return string Chaine avec URL */ @@ -988,17 +988,17 @@ class Account extends CommonObject if (empty($mode)) { - $lien = ''; } else if ($mode == 'transactions') { - $lien = ''; } - if ($withpicto) $result.=($lien.img_object($label, 'account', 'class="classfortooltip"').$lienfin.' '); - $result.=$lien.$this->label.$lienfin; + if ($withpicto) $result.=($link.img_object($label, 'account', 'class="classfortooltip"').$linkend.' '); + $result.=$link.$this->label.$linkend; return $result; } @@ -1521,9 +1521,9 @@ class AccountLine extends CommonObject /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param int $maxlen Longueur max libelle * @param string $option Option ('showall') * @return string Chaine avec URL @@ -1534,11 +1534,11 @@ class AccountLine extends CommonObject $result=''; $label=$langs->trans("ShowTransaction").': '.$this->rowid; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; - if ($withpicto) $result.=($lien.img_object($label, 'account', 'class="classfortooltip"').$lienfin.' '); - $result.=$lien.$this->rowid.$lienfin; + if ($withpicto) $result.=($link.img_object($label, 'account', 'class="classfortooltip"').$linkend.' '); + $result.=$link.$this->rowid.$linkend; if ($option == 'showall' || $option == 'showconciliated') $result.=' ('; if ($option == 'showall') diff --git a/htdocs/compta/bank/graph.php b/htdocs/compta/bank/graph.php index 9351cc5fa9a..60592085b35 100644 --- a/htdocs/compta/bank/graph.php +++ b/htdocs/compta/bank/graph.php @@ -841,8 +841,8 @@ if ($mode == 'standard') if ($nextmonth > 12) { $nextmonth=1; $nextyear++; } // For month - $lien="".img_previous()." ".$langs->trans("Month")." ".img_next().""; - print ''; + $link="".img_previous()." ".$langs->trans("Month")." ".img_next().""; + print ''; print ''; + $link="".img_previous()." ".$langs->trans("Year")." ".img_next().""; + print ''; print '
'.$lien.'
'.$link.'
'.$langs->trans("Month").'
'.$lien.'
'.$link.'
'; $file = "movement".$account."-".$year.$month.".png"; @@ -855,8 +855,8 @@ if ($mode == 'standard') // For year $prevyear=$year-1;$nextyear=$year+1; - $lien="".img_previous()." ".$langs->trans("Year")." ".img_next().""; - print '
'.$lien.'
'.$link.'
'; print $show5; diff --git a/htdocs/compta/deplacement/class/deplacement.class.php b/htdocs/compta/deplacement/class/deplacement.class.php index 6e424d9b49c..dc2d281e2a1 100644 --- a/htdocs/compta/deplacement/class/deplacement.class.php +++ b/htdocs/compta/deplacement/class/deplacement.class.php @@ -349,7 +349,7 @@ class Deplacement extends CommonObject /** * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @return string Chaine avec URL */ function getNomUrl($withpicto=0) @@ -359,15 +359,15 @@ class Deplacement extends CommonObject $result=''; $label=$langs->trans("Show").': '.$this->ref; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='trip'; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.$this->ref.$lienfin; + if ($withpicto != 2) $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/compta/dons/class/don.class.php b/htdocs/compta/dons/class/don.class.php index e5d64eb0d9d..c018570a3b0 100644 --- a/htdocs/compta/dons/class/don.class.php +++ b/htdocs/compta/dons/class/don.class.php @@ -703,7 +703,7 @@ class Don extends CommonObject /** * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @return string Chaine avec URL */ function getNomUrl($withpicto=0) @@ -713,15 +713,15 @@ class Don extends CommonObject $result=''; $label=$langs->trans("ShowDonation").': '.$this->id; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='generic'; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.$this->id.$lienfin; + if ($withpicto != 2) $result.=$link.$this->id.$linkend; return $result; } diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index 40ab9119998..c87ddb8abfc 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -547,9 +547,9 @@ class FactureRec extends Facture } /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param string $option Sur quoi pointe le lien ('', 'withdraw') * @return string Chaine avec URL */ @@ -560,15 +560,15 @@ class FactureRec extends Facture $result=''; $label=$langs->trans("ShowInvoice").': '.$this->ref; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='bill'; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.$this->ref.$lienfin; + if ($withpicto != 2) $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/compta/localtax/class/localtax.class.php b/htdocs/compta/localtax/class/localtax.class.php index c14c117bfbe..994e3cca40c 100644 --- a/htdocs/compta/localtax/class/localtax.class.php +++ b/htdocs/compta/localtax/class/localtax.class.php @@ -582,14 +582,14 @@ class Localtax extends CommonObject $result=''; $label=$langs->trans("ShowVatPayment").': '.$this->ref; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='payment'; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.$this->ref.$lienfin; + if ($withpicto != 2) $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/compta/paiement/cheque/class/remisecheque.class.php b/htdocs/compta/paiement/cheque/class/remisecheque.class.php index 23b19c50a6e..a3fb835f194 100644 --- a/htdocs/compta/paiement/cheque/class/remisecheque.class.php +++ b/htdocs/compta/paiement/cheque/class/remisecheque.class.php @@ -768,9 +768,9 @@ class RemiseCheque extends CommonObject } /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param string $option Sur quoi pointe le lien * @return string Chaine avec URL */ @@ -781,12 +781,12 @@ class RemiseCheque extends CommonObject $result=''; $label = $langs->trans("ShowCheckReceipt").': '.$this->ref; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; - if ($withpicto) $result.=($lien.img_object($label, 'payment', 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, 'payment', 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.$this->ref.$lienfin; + if ($withpicto != 2) $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php index 01b65c0dd47..883110e9d5b 100644 --- a/htdocs/compta/paiement/class/paiement.class.php +++ b/htdocs/compta/paiement/class/paiement.class.php @@ -737,9 +737,9 @@ class Paiement extends CommonObject /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param string $option Sur quoi pointe le lien * @return string Chaine avec URL */ @@ -750,12 +750,12 @@ class Paiement extends CommonObject $result=''; $label = $langs->trans("ShowPayment").': '.$this->ref; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; - if ($withpicto) $result.=($lien.img_object($langs->trans("ShowPayment"), 'payment', 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($langs->trans("ShowPayment"), 'payment', 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.$this->ref.$lienfin; + if ($withpicto != 2) $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index e977712ab39..755e88a57b8 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -1113,17 +1113,17 @@ class BonPrelevement extends CommonObject $result=''; $label = $langs->trans("ShowWithdraw").': '.$this->ref; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; if ($option == 'xxx') { - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; } - if ($withpicto) $result.=($lien.img_object($label, 'payment', 'class="classfortooltip"').$lienfin.' '); - $result.=$lien.$this->ref.$lienfin; + if ($withpicto) $result.=($link.img_object($label, 'payment', 'class="classfortooltip"').$linkend.' '); + $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/compta/salaries/class/paymentsalary.class.php b/htdocs/compta/salaries/class/paymentsalary.class.php index f566123809c..0db00c10c7f 100644 --- a/htdocs/compta/salaries/class/paymentsalary.class.php +++ b/htdocs/compta/salaries/class/paymentsalary.class.php @@ -490,14 +490,14 @@ class PaymentSalary extends CommonObject $result=''; $label=$langs->trans("ShowSalaryPayment").': '.$this->ref; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='payment'; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.$this->ref.$lienfin; + if ($withpicto != 2) $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/compta/sociales/class/chargesociales.class.php b/htdocs/compta/sociales/class/chargesociales.class.php index 6f68e76303c..dc70126ab9e 100644 --- a/htdocs/compta/sociales/class/chargesociales.class.php +++ b/htdocs/compta/sociales/class/chargesociales.class.php @@ -408,9 +408,9 @@ class ChargeSociales extends CommonObject /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param int $maxlen Longueur max libelle * @return string Chaine avec URL */ @@ -423,12 +423,12 @@ class ChargeSociales extends CommonObject if (empty($this->ref)) $this->ref=$this->lib; $label = $langs->trans("ShowSocialContribution").': '.$this->ref; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; - if ($withpicto) $result.=($lien.img_object($label, 'bill', 'class="classfortooltip"').$lienfin.' '); + if ($withpicto) $result.=($link.img_object($label, 'bill', 'class="classfortooltip"').$linkend.' '); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.($maxlen?dol_trunc($this->ref,$maxlen):$this->ref).$lienfin; + if ($withpicto != 2) $result.=$link.($maxlen?dol_trunc($this->ref,$maxlen):$this->ref).$linkend; return $result; } diff --git a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php index e736cb2a5a3..08f9380c905 100644 --- a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php +++ b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php @@ -576,9 +576,9 @@ class PaymentSocialContribution extends CommonObject } /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param int $maxlen Longueur max libelle * @return string Chaine avec URL */ @@ -593,12 +593,12 @@ class PaymentSocialContribution extends CommonObject if (!empty($this->id)) { - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; - if ($withpicto) $result.=($lien.img_object($label, 'payment', 'class="classfortooltip"').$lienfin.' '); + if ($withpicto) $result.=($link.img_object($label, 'payment', 'class="classfortooltip"').$linkend.' '); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.($maxlen?dol_trunc($this->ref,$maxlen):$this->ref).$lienfin; + if ($withpicto != 2) $result.=$link.($maxlen?dol_trunc($this->ref,$maxlen):$this->ref).$linkend; } return $result; diff --git a/htdocs/compta/tva/class/tva.class.php b/htdocs/compta/tva/class/tva.class.php index c32297a7e12..948b5096fa3 100644 --- a/htdocs/compta/tva/class/tva.class.php +++ b/htdocs/compta/tva/class/tva.class.php @@ -640,14 +640,14 @@ class Tva extends CommonObject $result=''; $label=$langs->trans("ShowVatPayment").': '.$this->ref; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='payment'; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.$this->ref.$lienfin; + if ($withpicto != 2) $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index 94147a2904d..19ea13f6a39 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -895,17 +895,17 @@ class Contact extends CommonObject $label = '' . $langs->trans("ShowContact") . ''; $label.= '
' . $langs->trans("Name") . ': '.$this->getFullName($langs); - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; if ($option == 'xxx') { - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; } - if ($withpicto) $result.=($lien.img_object($label, 'contact', 'class="classfortooltip"').$lienfin.' '); - $result.=$lien.($maxlen?dol_trunc($this->getFullName($langs),$maxlen):$this->getFullName($langs)).$lienfin; + if ($withpicto) $result.=($link.img_object($label, 'contact', 'class="classfortooltip"').$linkend.' '); + $result.=$link.($maxlen?dol_trunc($this->getFullName($langs),$maxlen):$this->getFullName($langs)).$linkend; return $result; } diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 82563549675..232df30e280 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -1053,7 +1053,7 @@ if ($action == 'create') print "
\n"; - print '
'; + print '
'; if (is_object($objectsrc)) { diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index 65db3144bb0..daac348e920 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -1742,9 +1742,9 @@ class Contrat extends CommonObject /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param int $maxlength Max length of ref * @return string Chaine avec URL */ @@ -1755,15 +1755,15 @@ class Contrat extends CommonObject $result=''; $label=$langs->trans("ShowContract").': '.$this->ref; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='contract'; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.($maxlength?dol_trunc($this->ref,$maxlength):$this->ref).$lienfin; + if ($withpicto != 2) $result.=$link.($maxlength?dol_trunc($this->ref,$maxlength):$this->ref).$linkend; return $result; } @@ -2290,9 +2290,9 @@ class ContratLigne extends CommonObject } /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param int $maxlength Max length * @return string Chaine avec URL */ @@ -2303,15 +2303,15 @@ class ContratLigne extends CommonObject $result=''; $label=$langs->trans("ShowContractOfService").': '.$this->label; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='contract'; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.$this->label.$lienfin; + if ($withpicto != 2) $result.=$link.$this->label.$linkend; return $result; } diff --git a/htdocs/core/class/discount.class.php b/htdocs/core/class/discount.class.php index a8862ab5ed2..3542b8eb1a9 100644 --- a/htdocs/core/class/discount.class.php +++ b/htdocs/core/class/discount.class.php @@ -435,23 +435,23 @@ class DiscountAbsolute if ($option == 'invoice') { $label=$langs->trans("ShowDiscount").': '.$this->ref_facture_source; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $ref=$this->ref_facture_source; $picto='bill'; } if ($option == 'discount') { $label=$langs->trans("Discount"); - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $ref=$langs->trans("Discount"); $picto='generic'; } - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - $result.=$lien.$ref.$lienfin; + $result.=$link.$ref.$linkend; return $result; } diff --git a/htdocs/core/tpl/login.tpl.php b/htdocs/core/tpl/login.tpl.php index bf5456a7d8d..be422c218e2 100644 --- a/htdocs/core/tpl/login.tpl.php +++ b/htdocs/core/tpl/login.tpl.php @@ -46,7 +46,7 @@ $(document).ready(function () { -
+
-
+
diff --git a/htdocs/core/tpl/passwordforgotten.tpl.php b/htdocs/core/tpl/passwordforgotten.tpl.php index c517ec611d1..662bf997aa9 100644 --- a/htdocs/core/tpl/passwordforgotten.tpl.php +++ b/htdocs/core/tpl/passwordforgotten.tpl.php @@ -44,7 +44,7 @@ $(document).ready(function () { -
+
-
+
diff --git a/htdocs/ecm/class/ecmdirectory.class.php b/htdocs/ecm/class/ecmdirectory.class.php index 63fe3d477e4..99b1441e658 100644 --- a/htdocs/ecm/class/ecmdirectory.class.php +++ b/htdocs/ecm/class/ecmdirectory.class.php @@ -400,7 +400,7 @@ class EcmDirectory // extends CommonObject /** * Return directory name you can click (and picto) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=Pas de picto, 1=Include picto into link, 2=Only picto * @param string $option Sur quoi pointe le lien * @param int $max Max length * @param string $more Add more param on a link @@ -416,19 +416,19 @@ class EcmDirectory // extends CommonObject $newlabel=$langs->trans("ShowECMSection").': '.$newref; $linkclose='"'.($more?' '.$more:'').' title="'.dol_escape_htmltag($newlabel, 1).'" class="classfortooltip">'; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='trip'; $label=$langs->trans("Show").': '.$this->ref; - if ($withpicto) $result.=($lien.img_object($label,$picto).$lienfin); + if ($withpicto) $result.=($link.img_object($label,$picto).$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.$this->ref.$lienfin; + if ($withpicto != 2) $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index 7be3b0bf3bd..51d37dcc8ae 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -551,15 +551,15 @@ class Fichinter extends CommonObject if (! empty($this->ref)) $label .= '
' . $langs->trans('Ref') . ': '.$this->ref; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='intervention'; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.$this->ref.$lienfin; + if ($withpicto != 2) $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index b9477d0adc8..8b7d81fdda0 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -547,9 +547,9 @@ class CommandeFournisseur extends CommonOrder /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param string $option Sur quoi pointe le lien * @return string Chaine avec URL */ @@ -570,14 +570,14 @@ class CommandeFournisseur extends CommonOrder if (! empty($this->total_ttc)) $label.= '
' . $langs->trans('AmountTTC') . ': ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency); - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='order'; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - $result.=$lien.$this->ref.$lienfin; + $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 98d49fa5ff3..9cc6b237c41 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -1513,9 +1513,9 @@ class FactureFournisseur extends CommonInvoice /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param string $option Sur quoi pointe le lien * @param int $max Max length of shown ref * @return string Chaine avec URL @@ -1539,20 +1539,20 @@ class FactureFournisseur extends CommonInvoice if ($option == 'document') { - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; } else { - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; } $ref=$this->ref; if (empty($ref)) $ref=$this->id; - if ($withpicto) $result.=($lien.img_object($label, 'bill', 'class="classfortooltip"').$lienfin.' '); - $result.=$lien.($max?dol_trunc($ref,$max):$ref).$lienfin; + if ($withpicto) $result.=($link.img_object($label, 'bill', 'class="classfortooltip"').$linkend.' '); + $result.=$link.($max?dol_trunc($ref,$max):$ref).$linkend; return $result; } diff --git a/htdocs/fourn/class/paiementfourn.class.php b/htdocs/fourn/class/paiementfourn.class.php index 3cd3ec0496c..dc66e5abf9a 100644 --- a/htdocs/fourn/class/paiementfourn.class.php +++ b/htdocs/fourn/class/paiementfourn.class.php @@ -476,9 +476,9 @@ class PaiementFourn extends Paiement /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param string $option Sur quoi pointe le lien * @return string Chaine avec URL */ @@ -495,13 +495,13 @@ class PaiementFourn extends Paiement } $label = $langs->trans("ShowPayment").': '.$text; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; - if ($withpicto) $result.=($lien.img_object($langs->trans("ShowPayment"), 'payment', 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($langs->trans("ShowPayment"), 'payment', 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.$text.$lienfin; + if ($withpicto != 2) $result.=$link.$text.$linkend; return $result; } } diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php index 280efd4addc..f9624946531 100644 --- a/htdocs/holiday/class/holiday.class.php +++ b/htdocs/holiday/class/holiday.class.php @@ -660,14 +660,14 @@ class Holiday extends CommonObject $result=''; $label=$langs->trans("Show").': '.$this->ref; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='holiday'; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.$this->ref.$lienfin; + if ($withpicto != 2) $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/livraison/class/livraison.class.php b/htdocs/livraison/class/livraison.class.php index f1e9e3d6ca6..027f7ab3b89 100644 --- a/htdocs/livraison/class/livraison.class.php +++ b/htdocs/livraison/class/livraison.class.php @@ -668,9 +668,9 @@ class Livraison extends CommonObject } /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @return string Chaine avec URL */ function getNomUrl($withpicto=0) @@ -682,14 +682,14 @@ class Livraison extends CommonObject $label=$langs->trans("ShowReceiving").': '.$this->ref; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; $picto='sending'; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - $result.=$lien.$this->ref.$lienfin; + $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 4c341e58906..3f66a5f51fd 100755 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -2941,26 +2941,26 @@ class Product extends CommonObject $linkclose = '" title="'.str_replace('\n', '', dol_escape_htmltag($label, 1)).'" class="classfortooltip">'; if ($option == 'supplier') { - $lien = ''; } else if ($option == 'stock') { - $lien = ''; } else if ($option == 'composition') { - $lien = ''; } else if ($option == 'category') { - $lien = ''; + $link = 'label, 'product', 'class="classfortooltip"').$lienfin.' '); - if ($this->type == 1) $result.=($lien.img_object($langs->trans("ShowService").' '.$this->label, 'service', 'class="classfortooltip"').$lienfin.' '); + if ($this->type == 0) $result.=($link.img_object($langs->trans("ShowProduct").' '.$this->label, 'product', 'class="classfortooltip"').$linkend.' '); + if ($this->type == 1) $result.=($link.img_object($langs->trans("ShowService").' '.$this->label, 'service', 'class="classfortooltip"').$linkend.' '); } - $result.=$lien.$newref.$lienfin; + $result.=$link.$newref.$linkend; return $result; } diff --git a/htdocs/product/expression.php b/htdocs/product/expression.php index be3e5401789..cb612359bd5 100644 --- a/htdocs/product/expression.php +++ b/htdocs/product/expression.php @@ -194,7 +194,7 @@ print ''; print ''; //Buttons -print '
'; +print '
'; +print ''; print ''; diff --git a/htdocs/product/stock/class/entrepot.class.php b/htdocs/product/stock/class/entrepot.class.php index 09c7c21a0d5..271da598b6b 100644 --- a/htdocs/product/stock/class/entrepot.class.php +++ b/htdocs/product/stock/class/entrepot.class.php @@ -518,11 +518,11 @@ class Entrepot extends CommonObject if (! empty($this->lieu)) $label.= '
' . $langs->trans('LocationSummary').': '.$this->lieu; - $lien=''; - $lienfin=''; + $link=''; + $linkend=''; - if ($withpicto) $result.=($lien.img_object($label, 'stock', 'class="classfortooltip"').$lienfin.' '); - $result.=$lien.$this->libelle.$lienfin; + if ($withpicto) $result.=($link.img_object($label, 'stock', 'class="classfortooltip"').$linkend.' '); + $result.=$link.$this->libelle.$linkend; return $result; } diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index bc9e6bd37b5..0cb72355bb0 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -810,9 +810,9 @@ class Project extends CommonObject } /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param string $option Variant ('', 'nolink') * @param int $addlabel 0=Default, 1=Add label into string, >1=Add first chars into string * @return string Chaine avec URL @@ -822,8 +822,8 @@ class Project extends CommonObject global $langs; $result = ''; - $lien = ''; - $lienfin = ''; + $link = ''; + $linkend = ''; $label = '' . $langs->trans("ShowProject") . ''; if (! empty($this->ref)) $label .= '
' . $langs->trans('Ref') . ': ' . $this->ref; @@ -833,11 +833,11 @@ class Project extends CommonObject if ($option != 'nolink') { if (preg_match('/\.php$/',$option)) { - $lien = ''; } else { - $lien = ''; } } @@ -845,9 +845,9 @@ class Project extends CommonObject if (!$this->public) $picto = 'project'; - if ($withpicto) $result.=($lien . img_object($label, $picto, 'class="classfortooltip"') . $lienfin); + if ($withpicto) $result.=($link . img_object($label, $picto, 'class="classfortooltip"') . $linkend); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien . $this->ref . $lienfin . (($addlabel && $this->title) ? ' - ' . dol_trunc($this->title, ($addlabel > 1 ? $addlabel : 0)) : ''); + if ($withpicto != 2) $result.=$link . $this->ref . $linkend . (($addlabel && $this->title) ? ' - ' . dol_trunc($this->title, ($addlabel > 1 ? $addlabel : 0)) : ''); return $result; } diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index c322e0be3cc..84888484d2c 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -494,9 +494,9 @@ class Task extends CommonObject /** - * Renvoie nom clicable (avec eventuellement le picto) + * Return clicable name (with picto eventually) * - * @param int $withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto * @param int $option Sur quoi pointe le lien * @param int $mode Mode 'task', 'time', 'contact', 'note', document' define page to link to. * @return string Chaine avec URL @@ -517,15 +517,15 @@ class Task extends CommonObject } $linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; - $lien = 'ref.$lienfin; + if ($withpicto != 2) $result.=$link.$this->ref.$linkend; return $result; } diff --git a/htdocs/resource/class/resource.class.php b/htdocs/resource/class/resource.class.php index 498291c1cc1..33df80fc095 100644 --- a/htdocs/resource/class/resource.class.php +++ b/htdocs/resource/class/resource.class.php @@ -873,18 +873,18 @@ class Resource extends CommonObject if ($option == '') { - $lien = ''; + $link = ''; $picto='resource@resource'; $label=$langs->trans("ShowResource").': '.$this->ref; } - $lienfin=''; + $linkend=''; - if ($withpicto) $result.=($lien.img_object($label, $picto, 'class="classfortooltip"').$lienfin); + if ($withpicto) $result.=($link.img_object($label, $picto, 'class="classfortooltip"').$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - $result.=$lien.$this->ref.$lienfin; + $result.=$link.$this->ref.$linkend; return $result; } } diff --git a/htdocs/societe/class/address.class.php b/htdocs/societe/class/address.class.php index 68f58e41c34..db981834760 100644 --- a/htdocs/societe/class/address.class.php +++ b/htdocs/societe/class/address.class.php @@ -430,11 +430,11 @@ class Address $result=''; $label = $langs->trans("ShowAddress").': '.$this->label; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; - if ($withpicto) $result.=($lien.img_object($langs->trans("ShowAddress").': '.$this->label, 'address', 'class="classfortooltip"').$lienfin.' '); - $result.=$lien.$this->label.$lienfin; + if ($withpicto) $result.=($link.img_object($langs->trans("ShowAddress").': '.$this->label, 'address', 'class="classfortooltip"').$linkend.' '); + $result.=$link.$this->label.$linkend; return $result; } diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index ee81df97889..9af32e0756f 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1751,41 +1751,41 @@ class Societe extends CommonObject } $result=''; $label=''; - $lien=''; $lienfin=''; + $link=''; $linkend=''; $label.= '
'; if ($option == 'customer' || $option == 'compta') { $label.= '' . $langs->trans("ShowCustomer") . ''; - $lien = 'global->SOCIETE_DISABLE_PROSPECTS)) { $label.= '' . $langs->trans("ShowProspect") . ''; - $lien = 'trans("ShowSupplier") . ''; - $lien = 'trans("ShowCategory") . ''; - $lien = 'trans("ShowCategorySupplier") . ''; - $lien = 'trans("ShowCompany") . ''; - $lien = ''; // Add type of canvas - $lien.=(!empty($this->canvas)?'&canvas='.$this->canvas:'').'"'; - $lien.=($notooltip?'':' title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip"'); - $lien.='>'; - $lienfin=''; + $link.=(!empty($this->canvas)?'&canvas='.$this->canvas:'').'"'; + $link.=($notooltip?'':' title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip"'); + $link.='>'; + $linkend=''; - if ($withpicto) $result.=($lien.img_object(($notooltip?'':$label), 'company', ($notooltip?'':'class="classfortooltip"')).$lienfin); + if ($withpicto) $result.=($link.img_object(($notooltip?'':$label), 'company', ($notooltip?'':'class="classfortooltip"')).$linkend); if ($withpicto && $withpicto != 2) $result.=' '; - $result.=$lien.($maxlen?dol_trunc($name,$maxlen):$name).$lienfin; + $result.=$link.($maxlen?dol_trunc($name,$maxlen):$name).$linkend; return $result; } diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index babac9c33ba..4ced71a7022 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -1775,7 +1775,7 @@ class User extends CommonObject * Return a link to the user card (with optionaly the picto) * Use this->id,this->lastname, this->firstname * - * @param int $withpicto Include picto in link (0=No picto, 1=Inclut le picto dans le lien, 2=Picto seul) + * @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto) * @param string $option On what the link point to * @param boolean $infologin Add connection info to the tooltip * @param string $notooltip 1=Disable tooltip @@ -1836,24 +1836,24 @@ class User extends CommonObject } - $lien = 'getFullName($langs,'','',$maxlen) . $companylink . $lienfin; + $result.= $link . $this->getFullName($langs,'','',$maxlen) . $companylink . $linkend; return $result; } /** * Renvoie login clicable (avec eventuellement le picto) * - * @param int $withpicto Inclut le picto dans le lien + * @param int $withpicto Include picto into link * @param string $option Sur quoi pointe le lien * @return string Chaine avec URL */ @@ -1863,17 +1863,17 @@ class User extends CommonObject $result=''; - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; if ($option == 'xxx') { - $lien = ''; - $lienfin=''; + $link = ''; + $linkend=''; } - if ($withpicto) $result.=($lien.img_object($langs->trans("ShowUser"),'user').$lienfin.' '); - $result.=$lien.$this->login.$lienfin; + if ($withpicto) $result.=($link.img_object($langs->trans("ShowUser"),'user').$linkend.' '); + $result.=$link.$this->login.$linkend; return $result; } From bcdf3407c7c1d7bbb50090bc2bf3f2215c3d7ff3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sun, 15 Mar 2015 18:01:21 +0100 Subject: [PATCH 292/429] Fixed line endings --- htdocs/includes/tcpdi/fpdf_tpl.php | 920 ++++++++++++++--------------- 1 file changed, 460 insertions(+), 460 deletions(-) diff --git a/htdocs/includes/tcpdi/fpdf_tpl.php b/htdocs/includes/tcpdi/fpdf_tpl.php index 86e38b71641..8482ba336ed 100644 --- a/htdocs/includes/tcpdi/fpdf_tpl.php +++ b/htdocs/includes/tcpdi/fpdf_tpl.php @@ -1,460 +1,460 @@ -Error('This method is only usable with FPDF. Use TCPDF methods startTemplate() instead.'); - return; - } - - if ($this->page <= 0) - $this->error("You have to add a page to fpdf first!"); - - if ($x == null) - $x = 0; - if ($y == null) - $y = 0; - if ($w == null) - $w = $this->w; - if ($h == null) - $h = $this->h; - - // Save settings - $this->tpl++; - $tpl =& $this->tpls[$this->tpl]; - $tpl = array( - 'o_x' => $this->x, - 'o_y' => $this->y, - 'o_AutoPageBreak' => $this->AutoPageBreak, - 'o_bMargin' => $this->bMargin, - 'o_tMargin' => $this->tMargin, - 'o_lMargin' => $this->lMargin, - 'o_rMargin' => $this->rMargin, - 'o_h' => $this->h, - 'o_w' => $this->w, - 'o_FontFamily' => $this->FontFamily, - 'o_FontStyle' => $this->FontStyle, - 'o_FontSizePt' => $this->FontSizePt, - 'o_FontSize' => $this->FontSize, - 'buffer' => '', - 'x' => $x, - 'y' => $y, - 'w' => $w, - 'h' => $h - ); - - $this->SetAutoPageBreak(false); - - // Define own high and width to calculate possitions correct - $this->h = $h; - $this->w = $w; - - $this->_intpl = true; - $this->SetXY($x + $this->lMargin, $y + $this->tMargin); - $this->SetRightMargin($this->w - $w + $this->rMargin); - - if ($this->CurrentFont) { - $fontkey = $this->FontFamily . $this->FontStyle; - $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; - - $this->_out(sprintf('BT /F%d %.2f Tf ET', $this->CurrentFont['i'], $this->FontSizePt)); - } - - return $this->tpl; - } - - /** - * End Template - * - * This method ends a template and reset initiated variables on beginTemplate. - * - * @return mixed If a template is opened, the ID is returned. If not a false is returned. - */ - function endTemplate() { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::endTemplate'), $args); - } - - if ($this->_intpl) { - $this->_intpl = false; - $tpl =& $this->tpls[$this->tpl]; - $this->SetXY($tpl['o_x'], $tpl['o_y']); - $this->tMargin = $tpl['o_tMargin']; - $this->lMargin = $tpl['o_lMargin']; - $this->rMargin = $tpl['o_rMargin']; - $this->h = $tpl['o_h']; - $this->w = $tpl['o_w']; - $this->SetAutoPageBreak($tpl['o_AutoPageBreak'], $tpl['o_bMargin']); - - $this->FontFamily = $tpl['o_FontFamily']; - $this->FontStyle = $tpl['o_FontStyle']; - $this->FontSizePt = $tpl['o_FontSizePt']; - $this->FontSize = $tpl['o_FontSize']; - - $fontkey = $this->FontFamily . $this->FontStyle; - if ($fontkey) - $this->CurrentFont =& $this->fonts[$fontkey]; - - return $this->tpl; - } else { - return false; - } - } - - /** - * Use a Template in current Page or other Template - * - * You can use a template in a page or in another template. - * You can give the used template a new size like you use the Image()-method. - * All parameters are optional. The width or height is calculated automaticaly - * if one is given. If no parameter is given the origin size as defined in - * beginTemplate() is used. - * The calculated or used width and height are returned as an array. - * - * @param int $tplidx A valid template-Id - * @param int $_x The x-position - * @param int $_y The y-position - * @param int $_w The new width of the template - * @param int $_h The new height of the template - * @retrun array The height and width of the template - */ - function useTemplate($tplidx, $_x = null, $_y = null, $_w = 0, $_h = 0) { - if ($this->page <= 0) - $this->error('You have to add a page first!'); - - if (!isset($this->tpls[$tplidx])) - $this->error('Template does not exist!'); - - if ($this->_intpl) { - $this->_res['tpl'][$this->tpl]['tpls'][$tplidx] =& $this->tpls[$tplidx]; - } - - $tpl =& $this->tpls[$tplidx]; - $w = $tpl['w']; - $h = $tpl['h']; - - if ($_x == null) - $_x = 0; - if ($_y == null) - $_y = 0; - - $_x += $tpl['x']; - $_y += $tpl['y']; - - $wh = $this->getTemplateSize($tplidx, $_w, $_h); - $_w = $wh['w']; - $_h = $wh['h']; - - $tData = array( - 'x' => $this->x, - 'y' => $this->y, - 'w' => $_w, - 'h' => $_h, - 'scaleX' => ($_w / $w), - 'scaleY' => ($_h / $h), - 'tx' => $_x, - 'ty' => ($this->h - $_y - $_h), - 'lty' => ($this->h - $_y - $_h) - ($this->h - $h) * ($_h / $h) - ); - - $this->_out(sprintf('q %.4F 0 0 %.4F %.4F %.4F cm', $tData['scaleX'], $tData['scaleY'], $tData['tx'] * $this->k, $tData['ty'] * $this->k)); // Translate - $this->_out(sprintf('%s%d Do Q', $this->tplprefix, $tplidx)); - - $this->lastUsedTemplateData = $tData; - - return array('w' => $_w, 'h' => $_h); - } - - /** - * Get The calculated Size of a Template - * - * If one size is given, this method calculates the other one. - * - * @param int $tplidx A valid template-Id - * @param int $_w The width of the template - * @param int $_h The height of the template - * @return array The height and width of the template - */ - function getTemplateSize($tplidx, $_w = 0, $_h = 0) { - if (!isset($this->tpls[$tplidx])) - return false; - - $tpl =& $this->tpls[$tplidx]; - $w = $tpl['w']; - $h = $tpl['h']; - - if ($_w == 0 and $_h == 0) { - $_w = $w; - $_h = $h; - } - - if($_w == 0) - $_w = $_h * $w / $h; - if($_h == 0) - $_h = $_w * $h / $w; - - return array("w" => $_w, "h" => $_h); - } - - /** - * See FPDF/TCPDF-Documentation ;-) - */ - public function SetFont($family, $style = '', $size = 0) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::SetFont'), $args); - } - - parent::SetFont($family, $style, $size); - - $fontkey = $this->FontFamily . $this->FontStyle; - - if ($this->_intpl) { - $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; - } else { - $this->_res['page'][$this->page]['fonts'][$fontkey] =& $this->fonts[$fontkey]; - } - } - - /** - * See FPDF/TCPDF-Documentation ;-) - */ - function Image( - $file, $x = '', $y = '', $w = 0, $h = 0, $type = '', $link = '', $align = '', $resize = false, - $dpi = 300, $palign = '', $ismask = false, $imgmask = false, $border = 0, $fitbox = false, - $hidden = false, $fitonpage = false, $alt = false, $altimgs = array() - ) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::Image'), $args); - } - - $ret = parent::Image($file, $x, $y, $w, $h, $type, $link); - if ($this->_intpl) { - $this->_res['tpl'][$this->tpl]['images'][$file] =& $this->images[$file]; - } else { - $this->_res['page'][$this->page]['images'][$file] =& $this->images[$file]; - } - - return $ret; - } - - /** - * See FPDF-Documentation ;-) - * - * AddPage is not available when you're "in" a template. - */ - function AddPage($orientation = '', $format = '', $keepmargins = false, $tocpage = false) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::AddPage'), $args); - } - - if ($this->_intpl) - $this->Error('Adding pages in templates isn\'t possible!'); - - parent::AddPage($orientation, $format); - } - - /** - * Preserve adding Links in Templates ...won't work - */ - function Link($x, $y, $w, $h, $link, $spaces = 0) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::Link'), $args); - } - - if ($this->_intpl) - $this->Error('Using links in templates aren\'t possible!'); - - parent::Link($x, $y, $w, $h, $link); - } - - function AddLink() { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::AddLink'), $args); - } - - if ($this->_intpl) - $this->Error('Adding links in templates aren\'t possible!'); - return parent::AddLink(); - } - - function SetLink($link, $y = 0, $page = -1) { - if (is_subclass_of($this, 'TCPDF')) { - $args = func_get_args(); - return call_user_func_array(array($this, 'TCPDF::SetLink'), $args); - } - - if ($this->_intpl) - $this->Error('Setting links in templates aren\'t possible!'); - parent::SetLink($link, $y, $page); - } - - /** - * Private Method that writes the form xobjects - */ - function _putformxobjects() { - $filter=($this->compress) ? '/Filter /FlateDecode ' : ''; - reset($this->tpls); - foreach($this->tpls AS $tplidx => $tpl) { - - $p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer']; - $this->_newobj(); - $this->tpls[$tplidx]['n'] = $this->n; - $this->_out('<<'.$filter.'/Type /XObject'); - $this->_out('/Subtype /Form'); - $this->_out('/FormType 1'); - $this->_out(sprintf('/BBox [%.2F %.2F %.2F %.2F]', - // llx - $tpl['x'] * $this->k, - // lly - -$tpl['y'] * $this->k, - // urx - ($tpl['w'] + $tpl['x']) * $this->k, - // ury - ($tpl['h'] - $tpl['y']) * $this->k - )); - - if ($tpl['x'] != 0 || $tpl['y'] != 0) { - $this->_out(sprintf('/Matrix [1 0 0 1 %.5F %.5F]', - -$tpl['x'] * $this->k * 2, $tpl['y'] * $this->k * 2 - )); - } - - $this->_out('/Resources '); - - $this->_out('<_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) { - $this->_out('/Font <<'); - foreach($this->_res['tpl'][$tplidx]['fonts'] as $font) - $this->_out('/F' . $font['i'] . ' ' . $font['n'] . ' 0 R'); - $this->_out('>>'); - } - if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) || - isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) - { - $this->_out('/XObject <<'); - if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) { - foreach($this->_res['tpl'][$tplidx]['images'] as $image) - $this->_out('/I' . $image['i'] . ' ' . $image['n'] . ' 0 R'); - } - if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) { - foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $tpl) - $this->_out($this->tplprefix . $i . ' ' . $tpl['n'] . ' 0 R'); - } - $this->_out('>>'); - } - $this->_out('>>'); - - $this->_out('/Length ' . strlen($p) . ' >>'); - $this->_putstream($p); - $this->_out('endobj'); - } - } - - /** - * Overwritten to add _putformxobjects() after _putimages() - * - */ - function _putimages() { - parent::_putimages(); - $this->_putformxobjects(); - } - - function _putxobjectdict() { - parent::_putxobjectdict(); - - if (count($this->tpls)) { - foreach($this->tpls as $tplidx => $tpl) { - $this->_out(sprintf('%s%d %d 0 R', $this->tplprefix, $tplidx, $tpl['n'])); - } - } - } - - /** - * Private Method - */ - function _out($s) { - if ($this->state == 2 && $this->_intpl) { - $this->tpls[$this->tpl]['buffer'] .= $s . "\n"; - } else { - parent::_out($s); - } - } -} +Error('This method is only usable with FPDF. Use TCPDF methods startTemplate() instead.'); + return; + } + + if ($this->page <= 0) + $this->error("You have to add a page to fpdf first!"); + + if ($x == null) + $x = 0; + if ($y == null) + $y = 0; + if ($w == null) + $w = $this->w; + if ($h == null) + $h = $this->h; + + // Save settings + $this->tpl++; + $tpl =& $this->tpls[$this->tpl]; + $tpl = array( + 'o_x' => $this->x, + 'o_y' => $this->y, + 'o_AutoPageBreak' => $this->AutoPageBreak, + 'o_bMargin' => $this->bMargin, + 'o_tMargin' => $this->tMargin, + 'o_lMargin' => $this->lMargin, + 'o_rMargin' => $this->rMargin, + 'o_h' => $this->h, + 'o_w' => $this->w, + 'o_FontFamily' => $this->FontFamily, + 'o_FontStyle' => $this->FontStyle, + 'o_FontSizePt' => $this->FontSizePt, + 'o_FontSize' => $this->FontSize, + 'buffer' => '', + 'x' => $x, + 'y' => $y, + 'w' => $w, + 'h' => $h + ); + + $this->SetAutoPageBreak(false); + + // Define own high and width to calculate possitions correct + $this->h = $h; + $this->w = $w; + + $this->_intpl = true; + $this->SetXY($x + $this->lMargin, $y + $this->tMargin); + $this->SetRightMargin($this->w - $w + $this->rMargin); + + if ($this->CurrentFont) { + $fontkey = $this->FontFamily . $this->FontStyle; + $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; + + $this->_out(sprintf('BT /F%d %.2f Tf ET', $this->CurrentFont['i'], $this->FontSizePt)); + } + + return $this->tpl; + } + + /** + * End Template + * + * This method ends a template and reset initiated variables on beginTemplate. + * + * @return mixed If a template is opened, the ID is returned. If not a false is returned. + */ + function endTemplate() { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::endTemplate'), $args); + } + + if ($this->_intpl) { + $this->_intpl = false; + $tpl =& $this->tpls[$this->tpl]; + $this->SetXY($tpl['o_x'], $tpl['o_y']); + $this->tMargin = $tpl['o_tMargin']; + $this->lMargin = $tpl['o_lMargin']; + $this->rMargin = $tpl['o_rMargin']; + $this->h = $tpl['o_h']; + $this->w = $tpl['o_w']; + $this->SetAutoPageBreak($tpl['o_AutoPageBreak'], $tpl['o_bMargin']); + + $this->FontFamily = $tpl['o_FontFamily']; + $this->FontStyle = $tpl['o_FontStyle']; + $this->FontSizePt = $tpl['o_FontSizePt']; + $this->FontSize = $tpl['o_FontSize']; + + $fontkey = $this->FontFamily . $this->FontStyle; + if ($fontkey) + $this->CurrentFont =& $this->fonts[$fontkey]; + + return $this->tpl; + } else { + return false; + } + } + + /** + * Use a Template in current Page or other Template + * + * You can use a template in a page or in another template. + * You can give the used template a new size like you use the Image()-method. + * All parameters are optional. The width or height is calculated automaticaly + * if one is given. If no parameter is given the origin size as defined in + * beginTemplate() is used. + * The calculated or used width and height are returned as an array. + * + * @param int $tplidx A valid template-Id + * @param int $_x The x-position + * @param int $_y The y-position + * @param int $_w The new width of the template + * @param int $_h The new height of the template + * @retrun array The height and width of the template + */ + function useTemplate($tplidx, $_x = null, $_y = null, $_w = 0, $_h = 0) { + if ($this->page <= 0) + $this->error('You have to add a page first!'); + + if (!isset($this->tpls[$tplidx])) + $this->error('Template does not exist!'); + + if ($this->_intpl) { + $this->_res['tpl'][$this->tpl]['tpls'][$tplidx] =& $this->tpls[$tplidx]; + } + + $tpl =& $this->tpls[$tplidx]; + $w = $tpl['w']; + $h = $tpl['h']; + + if ($_x == null) + $_x = 0; + if ($_y == null) + $_y = 0; + + $_x += $tpl['x']; + $_y += $tpl['y']; + + $wh = $this->getTemplateSize($tplidx, $_w, $_h); + $_w = $wh['w']; + $_h = $wh['h']; + + $tData = array( + 'x' => $this->x, + 'y' => $this->y, + 'w' => $_w, + 'h' => $_h, + 'scaleX' => ($_w / $w), + 'scaleY' => ($_h / $h), + 'tx' => $_x, + 'ty' => ($this->h - $_y - $_h), + 'lty' => ($this->h - $_y - $_h) - ($this->h - $h) * ($_h / $h) + ); + + $this->_out(sprintf('q %.4F 0 0 %.4F %.4F %.4F cm', $tData['scaleX'], $tData['scaleY'], $tData['tx'] * $this->k, $tData['ty'] * $this->k)); // Translate + $this->_out(sprintf('%s%d Do Q', $this->tplprefix, $tplidx)); + + $this->lastUsedTemplateData = $tData; + + return array('w' => $_w, 'h' => $_h); + } + + /** + * Get The calculated Size of a Template + * + * If one size is given, this method calculates the other one. + * + * @param int $tplidx A valid template-Id + * @param int $_w The width of the template + * @param int $_h The height of the template + * @return array The height and width of the template + */ + function getTemplateSize($tplidx, $_w = 0, $_h = 0) { + if (!isset($this->tpls[$tplidx])) + return false; + + $tpl =& $this->tpls[$tplidx]; + $w = $tpl['w']; + $h = $tpl['h']; + + if ($_w == 0 and $_h == 0) { + $_w = $w; + $_h = $h; + } + + if($_w == 0) + $_w = $_h * $w / $h; + if($_h == 0) + $_h = $_w * $h / $w; + + return array("w" => $_w, "h" => $_h); + } + + /** + * See FPDF/TCPDF-Documentation ;-) + */ + public function SetFont($family, $style = '', $size = 0) { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::SetFont'), $args); + } + + parent::SetFont($family, $style, $size); + + $fontkey = $this->FontFamily . $this->FontStyle; + + if ($this->_intpl) { + $this->_res['tpl'][$this->tpl]['fonts'][$fontkey] =& $this->fonts[$fontkey]; + } else { + $this->_res['page'][$this->page]['fonts'][$fontkey] =& $this->fonts[$fontkey]; + } + } + + /** + * See FPDF/TCPDF-Documentation ;-) + */ + function Image( + $file, $x = '', $y = '', $w = 0, $h = 0, $type = '', $link = '', $align = '', $resize = false, + $dpi = 300, $palign = '', $ismask = false, $imgmask = false, $border = 0, $fitbox = false, + $hidden = false, $fitonpage = false, $alt = false, $altimgs = array() + ) { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::Image'), $args); + } + + $ret = parent::Image($file, $x, $y, $w, $h, $type, $link); + if ($this->_intpl) { + $this->_res['tpl'][$this->tpl]['images'][$file] =& $this->images[$file]; + } else { + $this->_res['page'][$this->page]['images'][$file] =& $this->images[$file]; + } + + return $ret; + } + + /** + * See FPDF-Documentation ;-) + * + * AddPage is not available when you're "in" a template. + */ + function AddPage($orientation = '', $format = '', $keepmargins = false, $tocpage = false) { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::AddPage'), $args); + } + + if ($this->_intpl) + $this->Error('Adding pages in templates isn\'t possible!'); + + parent::AddPage($orientation, $format); + } + + /** + * Preserve adding Links in Templates ...won't work + */ + function Link($x, $y, $w, $h, $link, $spaces = 0) { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::Link'), $args); + } + + if ($this->_intpl) + $this->Error('Using links in templates aren\'t possible!'); + + parent::Link($x, $y, $w, $h, $link); + } + + function AddLink() { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::AddLink'), $args); + } + + if ($this->_intpl) + $this->Error('Adding links in templates aren\'t possible!'); + return parent::AddLink(); + } + + function SetLink($link, $y = 0, $page = -1) { + if (is_subclass_of($this, 'TCPDF')) { + $args = func_get_args(); + return call_user_func_array(array($this, 'TCPDF::SetLink'), $args); + } + + if ($this->_intpl) + $this->Error('Setting links in templates aren\'t possible!'); + parent::SetLink($link, $y, $page); + } + + /** + * Private Method that writes the form xobjects + */ + function _putformxobjects() { + $filter=($this->compress) ? '/Filter /FlateDecode ' : ''; + reset($this->tpls); + foreach($this->tpls AS $tplidx => $tpl) { + + $p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer']; + $this->_newobj(); + $this->tpls[$tplidx]['n'] = $this->n; + $this->_out('<<'.$filter.'/Type /XObject'); + $this->_out('/Subtype /Form'); + $this->_out('/FormType 1'); + $this->_out(sprintf('/BBox [%.2F %.2F %.2F %.2F]', + // llx + $tpl['x'] * $this->k, + // lly + -$tpl['y'] * $this->k, + // urx + ($tpl['w'] + $tpl['x']) * $this->k, + // ury + ($tpl['h'] - $tpl['y']) * $this->k + )); + + if ($tpl['x'] != 0 || $tpl['y'] != 0) { + $this->_out(sprintf('/Matrix [1 0 0 1 %.5F %.5F]', + -$tpl['x'] * $this->k * 2, $tpl['y'] * $this->k * 2 + )); + } + + $this->_out('/Resources '); + + $this->_out('<_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) { + $this->_out('/Font <<'); + foreach($this->_res['tpl'][$tplidx]['fonts'] as $font) + $this->_out('/F' . $font['i'] . ' ' . $font['n'] . ' 0 R'); + $this->_out('>>'); + } + if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) || + isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) + { + $this->_out('/XObject <<'); + if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) { + foreach($this->_res['tpl'][$tplidx]['images'] as $image) + $this->_out('/I' . $image['i'] . ' ' . $image['n'] . ' 0 R'); + } + if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) { + foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $tpl) + $this->_out($this->tplprefix . $i . ' ' . $tpl['n'] . ' 0 R'); + } + $this->_out('>>'); + } + $this->_out('>>'); + + $this->_out('/Length ' . strlen($p) . ' >>'); + $this->_putstream($p); + $this->_out('endobj'); + } + } + + /** + * Overwritten to add _putformxobjects() after _putimages() + * + */ + function _putimages() { + parent::_putimages(); + $this->_putformxobjects(); + } + + function _putxobjectdict() { + parent::_putxobjectdict(); + + if (count($this->tpls)) { + foreach($this->tpls as $tplidx => $tpl) { + $this->_out(sprintf('%s%d %d 0 R', $this->tplprefix, $tplidx, $tpl['n'])); + } + } + } + + /** + * Private Method + */ + function _out($s) { + if ($this->state == 2 && $this->_intpl) { + $this->tpls[$this->tpl]['buffer'] .= $s . "\n"; + } else { + parent::_out($s); + } + } +} From 79ca1fe1476c2cb7988faaee0118f9b4b1e63c85 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 15 Mar 2015 23:32:43 +0100 Subject: [PATCH 293/429] Clean code. --- htdocs/comm/card.php | 2 +- htdocs/fourn/card.php | 1 - htdocs/fourn/class/fournisseur.class.php | 3 +++ htdocs/societe/class/client.class.php | 9 ++++++--- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index 9b7c3150c71..3ea63caf256 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -31,6 +31,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/societe/class/client.class.php'; require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; if (! empty($conf->facture->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; @@ -220,7 +221,6 @@ if ($id > 0) print ''; print ''; diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index 1825349e83b..b9957c12134 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -134,7 +134,6 @@ if ($object->id > 0) print '
'.$langs->trans("ThirdPartyName").''; - $object->next_prev_filter="te.client in (1,2,3)"; print $form->showrefnav($object,'socid','',($user->societe_id?0:1),'rowid','nom','',''); print '
'; print ''; diff --git a/htdocs/fourn/class/fournisseur.class.php b/htdocs/fourn/class/fournisseur.class.php index 35620bf91fb..5fc0b3e43dd 100644 --- a/htdocs/fourn/class/fournisseur.class.php +++ b/htdocs/fourn/class/fournisseur.class.php @@ -35,6 +35,9 @@ class Fournisseur extends Societe { var $db; + var $next_prev_filter="te.fournisseur = 1"; // Used to add a filter in Form::showrefnav method + + /** * Constructor * diff --git a/htdocs/societe/class/client.class.php b/htdocs/societe/class/client.class.php index 27209c05abd..d5ac33227c5 100644 --- a/htdocs/societe/class/client.class.php +++ b/htdocs/societe/class/client.class.php @@ -29,9 +29,12 @@ include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; */ class Client extends Societe { - var $nb; - - /** + var $db; + + var $next_prev_filter="te.client in (1,2,3)"; // Used to add a filter in Form::showrefnav method + + + /** * Constructor * * @param DoliDB $db Database handler From 60c72e13b3a4b72aa707d47cd0516b212778e896 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 15 Mar 2015 23:39:53 +0100 Subject: [PATCH 294/429] Some fixes into export and translation --- htdocs/exports/class/export.class.php | 32 ++++++++++++++++------ htdocs/install/mysql/data/llx_c_stcomm.sql | 10 +++---- htdocs/langs/en_US/bills.lang | 5 ++-- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/htdocs/exports/class/export.class.php b/htdocs/exports/class/export.class.php index d332592da6d..33c4b415f0b 100644 --- a/htdocs/exports/class/export.class.php +++ b/htdocs/exports/class/export.class.php @@ -337,13 +337,15 @@ class Export /** * Build an input field used to filter the query * - * @param string $TypeField Type of Field to filter + * @param string $TypeField Type of Field to filter. Example: Text, List:c_country:label:rowid, List:c_stcom:label:code, Number, Boolean * @param string $NameField Name of the field to filter * @param string $ValueField Initial value of the field to filter * @return string html string of the input field ex : "" */ function build_filterField($TypeField, $NameField, $ValueField) { + global $langs; + $szFilterField=''; $InfoFieldList = explode(":", $TypeField); @@ -354,7 +356,7 @@ class Export case 'Date': case 'Duree': case 'Numeric': - $szFilterField='"; + $szFilterField=''; break; case 'Boolean': $szFilterField='"; - $this->db->free(); + $this->db->free($resql); } + else dol_print_error($this->db); break; } diff --git a/htdocs/install/mysql/data/llx_c_stcomm.sql b/htdocs/install/mysql/data/llx_c_stcomm.sql index 65516a27476..e1bf526d489 100644 --- a/htdocs/install/mysql/data/llx_c_stcomm.sql +++ b/htdocs/install/mysql/data/llx_c_stcomm.sql @@ -31,8 +31,8 @@ -- delete from llx_c_stcomm; -insert into llx_c_stcomm (id,code,libelle) values (-1, 'ST_NO', 'Ne pas contacter'); -insert into llx_c_stcomm (id,code,libelle) values ( 0, 'ST_NEVER', 'Jamais contacté'); -insert into llx_c_stcomm (id,code,libelle) values ( 1, 'ST_TODO', 'A contacter'); -insert into llx_c_stcomm (id,code,libelle) values ( 2, 'ST_PEND', 'Contact en cours'); -insert into llx_c_stcomm (id,code,libelle) values ( 3, 'ST_DONE', 'Contactée'); +insert into llx_c_stcomm (id,code,libelle) values (-1, 'ST_NO', 'Do not contact'); +insert into llx_c_stcomm (id,code,libelle) values ( 0, 'ST_NEVER', 'Never contacted'); +insert into llx_c_stcomm (id,code,libelle) values ( 1, 'ST_TODO', 'To contact'); +insert into llx_c_stcomm (id,code,libelle) values ( 2, 'ST_PEND', 'Contact in progress'); +insert into llx_c_stcomm (id,code,libelle) values ( 3, 'ST_DONE', 'Contacted'); diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index 5a805f4f6a1..10a8c5fecc4 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule PaymentMode=Payment type -PaymentConditions=Payment term -PaymentConditionsShort=Payment term +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Payment amount ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Payment higher than reminder to pay From 6ba3b900b7aed1b8298c4f287b73c694d2a876f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sun, 15 Mar 2015 23:42:11 +0100 Subject: [PATCH 295/429] PHPCS Fix --- htdocs/core/class/commonobject.class.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 0a682415b94..e781405344b 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2662,7 +2662,6 @@ abstract class CommonObject * @param string $buyer Object of buyer third party * @param string $selected Object line selected * @param int $dateSelector 1=Show also date range input fields - * @param int $permtoedit Permission to edit line * @return void */ function printObjectLines($action, $seller, $buyer, $selected=0, $dateSelector=0) From 1cd81f0e81c2dc779b30c58baed8d824386d93a7 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Mon, 16 Mar 2015 06:29:15 +0100 Subject: [PATCH 296/429] Work on module donations --- htdocs/compta/dons/card.php | 282 +++++++++--------- htdocs/compta/dons/class/don.class.php | 85 +++++- htdocs/compta/dons/document.php | 125 ++++++++ htdocs/compta/dons/info.php | 62 ++++ htdocs/core/lib/donation.lib.php | 61 ++++ .../install/mysql/migration/3.7.0-3.8.0.sql | 3 + htdocs/install/mysql/tables/llx_don.sql | 3 +- 7 files changed, 469 insertions(+), 152 deletions(-) create mode 100644 htdocs/compta/dons/document.php create mode 100644 htdocs/compta/dons/info.php create mode 100644 htdocs/core/lib/donation.lib.php diff --git a/htdocs/compta/dons/card.php b/htdocs/compta/dons/card.php index 71e96f60f49..a4e68fbc4de 100644 --- a/htdocs/compta/dons/card.php +++ b/htdocs/compta/dons/card.php @@ -3,6 +3,7 @@ * Copyright (C) 2004-2011 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2013 Florian Henry + * Copyright (C) 2015 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,6 +27,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/dons/modules_don.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; @@ -33,6 +35,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; if (! empty($conf->projet->enabled)) { require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; } +require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $langs->load("companies"); $langs->load("donations"); @@ -43,7 +46,7 @@ $action=GETPOST('action','alpha'); $cancel=GETPOST('cancel'); $amount=GETPOST('amount'); -$don = new Don($db); +$object = new Don($db); $donation_date=dol_mktime(12, 0, 0, GETPOST('remonth'), GETPOST('reday'), GETPOST('reyear')); // Security check @@ -83,28 +86,26 @@ if ($action == 'update') if (! $error) { - $don->fetch($id); + $object->fetch($id); - $don->firstname = $_POST["firstname"]; - $don->lastname = $_POST["lastname"]; - $don->societe = $_POST["societe"]; - $don->address = $_POST["address"]; - $don->amount = price2num($_POST["amount"]); - $don->town = $_POST["town"]; - $don->zip = $_POST["zipcode"]; - $don->country = $_POST["country"]; - $don->email = $_POST["email"]; - $don->date = $donation_date; - $don->note = $_POST["note"]; - $don->public = $_POST["public"]; - $don->fk_project = $_POST["projectid"]; - $don->note_private= GETPOST("note_private"); - $don->note_public = GETPOST("note_public"); - $don->modepaiementid = $_POST["modepaiement"]; + $object->firstname = GETPOST("firstname"); + $object->lastname = GETPOST("lastname"); + $object->societe = GETPOST("societe"); + $object->address = GETPOST("address"); + $object->amount = price2num(GETPOST("amount")); + $object->town = GETPOST("town"); + $object->zip = GETPOST("zipcode"); + $object->country_id = GETPOST('country_id', 'int'); + $object->email = GETPOST("email"); + $object->date = $donation_date; + $object->public = GETPOST("public"); + $object->fk_project = GETPOST("projectid"); + $object->note_private= GETPOST("note_private"); + $object->note_public = GETPOST("note_public"); - if ($don->update($user) > 0) + if ($object->update($user) > 0) { - header("Location: ".$_SERVER['PHP_SELF']."?id=".$don->id); + header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } } @@ -136,24 +137,23 @@ if ($action == 'add') if (! $error) { - $don->firstname = $_POST["firstname"]; - $don->lastname = $_POST["lastname"]; - $don->societe = $_POST["societe"]; - $don->address = $_POST["address"]; - $don->amount = price2num($_POST["amount"]); - $don->town = $_POST["town"]; - $don->zip = $_POST["zipcode"]; - $don->town = $_POST["town"]; - $don->country = $_POST["country"]; - $don->email = $_POST["email"]; - $don->date = $donation_date; - $don->note_private= GETPOST("note_private"); - $don->note_public = GETPOST("note_public"); - $don->public = $_POST["public"]; - $don->fk_project = $_POST["projectid"]; - $don->modepaiementid = $_POST["modepaiement"]; + $object->firstname = GETPOST("firstname"); + $object->lastname = GETPOST("lastname"); + $object->societe = GETPOST("societe"); + $object->address = GETPOST("address"); + $object->amount = price2num(GETPOST("amount")); + $object->town = GETPOST("town"); + $object->zip = GETPOST("zipcode"); + $object->town = GETPOST("town"); + $object->country_id = GETPOST('country_id', 'int'); + $object->email = GETPOST("email"); + $object->date = $donation_date; + $object->note_private= GETPOST("note_private"); + $object->note_public = GETPOST("note_public"); + $object->public = GETPOST("public"); + $object->fk_project = GETPOST("projectid"); - if ($don->create($user) > 0) + if ($object->create($user) > 0) { header("Location: index.php"); exit; @@ -163,57 +163,57 @@ if ($action == 'add') if ($action == 'delete') { - $don->delete($id); + $object->delete($id); header("Location: list.php"); exit; } if ($action == 'commentaire') { - $don->fetch($id); - $don->update_note($_POST["commentaire"]); + $object->fetch($id); + $object->update_note(GETPOST("commentaire")); } if ($action == 'valid_promesse') { - if ($don->valid_promesse($id, $user->id) >= 0) + if ($object->valid_promesse($id, $user->id) >= 0) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); exit; } else { - setEventMessage($don->error, 'errors'); + setEventMessage($object->error, 'errors'); } } if ($action == 'set_cancel') { - if ($don->set_cancel($id) >= 0) + if ($object->set_cancel($id) >= 0) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); exit; } else { - setEventMessage($don->error, 'errors'); + setEventMessage($object->error, 'errors'); } } if ($action == 'set_paid') { - if ($don->set_paye($id, $modepaiement) >= 0) + if ($object->set_paye($id, $modepaiement) >= 0) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); exit; } else { - setEventMessage($don->error, 'errors'); + setEventMessage($object->error, 'errors'); } } if ($action == 'set_encaisse') { - if ($don->set_encaisse($id) >= 0) + if ($object->set_encaisse($id) >= 0) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); exit; } else { - setEventMessage($don->error, 'errors'); + setEventMessage($object->error, 'errors'); } } @@ -268,7 +268,7 @@ if ($action == 'create') { print_fiche_titre($langs->trans("AddDonation")); - print '
'; + print ''; print ''; print '
'.$langs->trans("ThirdPartyName").''; - $object->next_prev_filter="te.fournisseur = 1"; print $form->showrefnav($object,'socid','',($user->societe_id?0:1),'rowid','nom','',''); print '
'; @@ -278,40 +278,57 @@ if ($action == 'create') if (! empty($conf->projet->enabled)) $nbrows++; // Date - print ''; - print '"; - print ""; - // Amount - print "".''; + print "".''; print '\n"; - print "".''; - print "".''; - print "".''; + print "".''; + print "".''; + print "".''; print "".''; + print ''; // Zip / Town print ''; - print "".''; - print "".''; + // Country + print ''; + + print "".''; - print "\n"; + // Public note + print ''; + print ''; + print ''; + + // Private note + if (empty($user->societe_id)) { + print ''; + print ''; + print ''; + } if (! empty($conf->projet->enabled)) { @@ -320,13 +337,13 @@ if ($action == 'create') // Si module projet actif print "\n"; } // Other attributes $parameters=array('colspan' => ' colspan="1"'); - $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$don,$action); // Note that $action and $object may have been modified by hook + $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook print "
'.$langs->trans("Date").''; + print '
'.$langs->trans("Date").''; $form->select_date($donation_date?$donation_date:-1,'','','','',"add",1,1); print ''.$langs->trans("Comments").' :
'; - print "
'.$langs->trans("Amount").' '.$langs->trans("Currency".$conf->currency).'
'.$langs->trans("Amount").' '.$langs->trans("Currency".$conf->currency).'
'.$langs->trans("PublicDonation").""; print $form->selectyesno("public",isset($_POST["public"])?$_POST["public"]:1,1); print "
'.$langs->trans("Company").'
'.$langs->trans("Firstname").'
'.$langs->trans("Lastname").'
'.$langs->trans("Company").'
'.$langs->trans("Lastname").'
'.$langs->trans("Firstname").'
'.$langs->trans("Address").''; - print '
'.$langs->trans("Zip").' / '.$langs->trans("Town").''; - print $formcompany->select_ziptown((isset($_POST["zipcode"])?$_POST["zipcode"]:$don->zip),'zipcode',array('town','selectcountry_id','state_id'),6); + print $formcompany->select_ziptown((isset($_POST["zipcode"])?$_POST["zipcode"]:$object->zip),'zipcode',array('town','selectcountry_id','state_id'),6); print ' '; - print $formcompany->select_ziptown((isset($_POST["town"])?$_POST["town"]:$don->town),'town',array('zipcode','selectcountry_id','state_id')); + print $formcompany->select_ziptown((isset($_POST["town"])?$_POST["town"]:$object->town),'town',array('zipcode','selectcountry_id','state_id')); print '
'.$langs->trans("Country").'
'.$langs->trans("EMail").'
'; + print $form->select_country(GETPOST('country_id')!=''?GETPOST('country_id'):$object->country_id); + if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); + print '
'.$langs->trans("EMail").'
".$langs->trans("PaymentMode")."\n"; - $form->select_types_paiements('', 'modepaiement', 'CRDT', 0, 1); - print "
' . $langs->trans('NotePublic') . ''; + + $doleditor = new DolEditor('note_public', $note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70); + print $doleditor->Create(1); + print '
' . $langs->trans('NotePrivate') . ''; + + $doleditor = new DolEditor('note_private', $note_private, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70); + print $doleditor->Create(1); + print '
".$langs->trans("Project").""; - $formproject->select_projects('',$_POST["projectid"],"projectid"); + $formproject->select_projects('',GETPOST("projectid"),"projectid"); print "
\n"; print '
   
'; @@ -342,26 +359,21 @@ if ($action == 'create') if (! empty($id) && $action == 'edit') { - $don->fetch($id); - - $h=0; - $head[$h][0] = $_SERVER['PHP_SELF']."?id=".$don->id; - $head[$h][1] = $langs->trans("Card"); - $hselected=$h; - $h++; + $object->fetch($id); + $head = donation_prepare_head($object); dol_fiche_head($head, $hselected, $langs->trans("Donation"), 0, 'generic'); - print ''; + print ''; print ''; print ''; print ''; - print ''; + print ''; // Ref print "".''; print ''; @@ -370,15 +382,11 @@ if (! empty($id) && $action == 'edit') // Date print "".''; - print '"; - print ""; - // Amount - print "".''; + print "".''; print '\n"; $langs->load("companies"); - print "".''; - print "".''; - print "".''; + print "".''; + print "".''; + print "".''; print "".''; + print ''; // Zip / Town print ''; - print "".''; - print "".''; + // Country + print ''; + + print "".''; print "\n"; - print "".''; + print "".''; // Project if (! empty($conf->projet->enabled)) @@ -419,13 +432,13 @@ if (! empty($id) && $action == 'edit') $langs->load('projects'); print ''; } // Other attributes $parameters=array('colspan' => ' colspan="1"'); - $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$don,$action); // Note that $action and $object may have been modified by hook + $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook print "
'.$langs->trans("Ref").''; - print $don->getNomUrl(); + print $object->getNomUrl(); print '
'.$langs->trans("Date").''; - $form->select_date($don->date,'','','','',"update"); + $form->select_date($object->date,'','','','',"update"); print ''.$langs->trans("Comments").' :
'; - print "
'.$langs->trans("Amount").' '.$langs->trans("Currency".$conf->currency).'
'.$langs->trans("Amount").' '.$langs->trans("Currency".$conf->currency).'
'.$langs->trans("PublicDonation").""; print $form->selectyesno("public",1,1); @@ -386,31 +394,36 @@ if (! empty($id) && $action == 'edit') print "
'.$langs->trans("Company").'
'.$langs->trans("Firstname").'
'.$langs->trans("Lastname").'
'.$langs->trans("Company").'
'.$langs->trans("Lastname").'
'.$langs->trans("Firstname").'
'.$langs->trans("Address").''; - print '
'.$langs->trans("Zip").' / '.$langs->trans("Town").''; - print $formcompany->select_ziptown((isset($_POST["zipcode"])?$_POST["zipcode"]:$don->zip),'zipcode',array('town','selectcountry_id','state_id'),6); + print $formcompany->select_ziptown((isset($_POST["zipcode"])?$_POST["zipcode"]:$object->zip),'zipcode',array('town','selectcountry_id','state_id'),6); print ' '; - print $formcompany->select_ziptown((isset($_POST["town"])?$_POST["town"]:$don->town),'town',array('zipcode','selectcountry_id','state_id')); + print $formcompany->select_ziptown((isset($_POST["town"])?$_POST["town"]:$object->town),'town',array('zipcode','selectcountry_id','state_id')); print '
'.$langs->trans("Country").'
'.$langs->trans("EMail").'
'.$langs->trans('Country').''; + print $form->select_country((!empty($object->country_id)?$object->country_id:$mysoc->country_code),'country_id'); + if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); + print '
'.$langs->trans("EMail").'
".$langs->trans("PaymentMode")."\n"; - if ($don->modepaiementid) $selected = $don->modepaiementid; + if ($object->modepaiementid) $selected = $object->modepaiementid; else $selected = ''; $form->select_types_paiements($selected, 'modepaiement', 'CRDT', 0, 1); print "
'.$langs->trans("Status").''.$don->getLibStatut(4).'
'.$langs->trans("Status").''.$object->getLibStatut(4).'
'.$langs->trans('Project').''; - $formproject->select_projects(-1, (isset($_POST["projectid"])?$_POST["projectid"]:$don->fk_project), 'projectid'); + $formproject->select_projects(-1, (isset($_POST["projectid"])?$_POST["projectid"]:$don->fk_project), 'projectid'); print '
\n"; @@ -445,17 +458,12 @@ if (! empty($id) && $action == 'edit') /* ************************************************************ */ if (! empty($id) && $action != 'edit') { - $result=$don->fetch($id); - - $h=0; - $head[$h][0] = $_SERVER['PHP_SELF']."?id=".$don->id; - $head[$h][1] = $langs->trans("Card"); - $hselected=$h; - $h++; - + $result=$object->fetch($id); + + $head = donation_prepare_head($object); dol_fiche_head($head, $hselected, $langs->trans("Donation"), 0, 'generic'); - print ""; + print ''; print ''; print ''; @@ -466,54 +474,58 @@ if (! empty($id) && $action != 'edit') // Ref print "".''; print ''; // Date print '"; - print ''; - - print "".''; + print "".''; print "\n"; - print "".''; - print "".''; - print "".''; - print "".''; + print "".''; + print "".''; + print "".''; + print "".''; // Zip / Town - print "".''; + print "".''; // Country - print "".''; + print ''; // EMail - print "".''; + print "".''; // Payment mode print "\n"; - print "".''; + print "".''; // Project if (! empty($conf->projet->enabled)) { - print "".''; + print "".''; } // Other attributes $parameters=array('colspan' => ' colspan="1"'); - $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$don,$action); // Note that $action and $object may have been modified by hook + $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook print "
'.$langs->trans("Ref").''; - print $form->showrefnav($don, 'rowid', $linkback, 1, 'rowid', 'ref', ''); + print $form->showrefnav($object, 'rowid', $linkback, 1, 'rowid', 'ref', ''); print '
'.$langs->trans("Date").''; - print dol_print_date($don->date,"day"); + print dol_print_date($object->date,"day"); print "'.$langs->trans("Comments").' :
'; - print nl2br($don->note_private).'
'.$langs->trans("Amount").''.price($don->amount,0,$langs,0,0,-1,$conf->currency).'
'.$langs->trans("Amount").''.price($object->amount,0,$langs,0,0,-1,$conf->currency).'
".$langs->trans("PublicDonation").""; - print yn($don->public); + print yn($object->public); print "
'.$langs->trans("Company").''.$don->societe.'
'.$langs->trans("Firstname").''.$don->firstname.'
'.$langs->trans("Lastname").''.$don->lastname.'
'.$langs->trans("Address").''.dol_nl2br($don->address).'
'.$langs->trans("Company").''.$object->societe.'
'.$langs->trans("Lastname").''.$object->lastname.'
'.$langs->trans("Firstname").''.$object->firstname.'
'.$langs->trans("Address").''.dol_nl2br($object->address).'
'.$langs->trans("Zip").' / '.$langs->trans("Town").''.$don->zip.($don->zip && $don->town?' / ':'').$don->town.'
'.$langs->trans("Zip").' / '.$langs->trans("Town").''.$object->zip.($object->zip && $object->town?' / ':'').$object->town.'
'.$langs->trans("Country").''.$don->country.'
'.$langs->trans('Country').''; + if (! empty($object->country_code)) + { + $img=picto_from_langcode($object->country_code); + print ($img?$img.' ':''); + } + print $object->country; + print '
'.$langs->trans("EMail").''.dol_print_email($don->email).'
'.$langs->trans("EMail").''.dol_print_email($object->email).'
".$langs->trans("PaymentMode").""; - $form->form_modes_reglement(null, $don->modepaiementid,'none'); + $form->form_modes_reglement(null, $object->modepaiementid,'none'); print "
'.$langs->trans("Status").''.$don->getLibStatut(4).'
'.$langs->trans("Status").''.$object->getLibStatut(4).'
'.$langs->trans("Project").''.$don->projet.'
'.$langs->trans("Project").''.$object->projet.'
\n"; print "\n"; @@ -529,32 +541,32 @@ if (! empty($id) && $action != 'edit') */ print '
'; - print ''; + print ''; - if ($don->statut == 0) + if ($object->statut == 0) { - print ''; + print ''; } - if (($don->statut == 0 || $don->statut == 1) && $resteapayer == 0 && $don->paye == 0) + if (($object->statut == 0 || $object->statut == 1) && $resteapayer == 0 && $object->paye == 0) { - print '"; + print '"; } // TODO Gerer action emettre paiement - if ($don->statut == 1 && $resteapayer > 0) + if ($object->statut == 1 && $resteapayer > 0) { - print '"; + print '"; } - if ($don->statut == 1 && $resteapayer == 0 && $don->paye == 0) + if ($object->statut == 1 && $resteapayer == 0 && $object->paye == 0) { - print '"; + print '"; } if ($user->rights->don->supprimer) { - print '"; + print '"; } else { @@ -569,9 +581,9 @@ if (! empty($id) && $action != 'edit') /* * Documents generes */ - $filename=dol_sanitizeFileName($don->id); + $filename=dol_sanitizeFileName($object->id); $filedir=$conf->don->dir_output . '/' . get_exdir($filename,2); - $urlsource=$_SERVER['PHP_SELF'].'?rowid='.$don->id; + $urlsource=$_SERVER['PHP_SELF'].'?rowid='.$object->id; // $genallowed=($fac->statut == 1 && ($fac->paye == 0 || $user->admin) && $user->rights->facture->creer); // $delallowed=$user->rights->facture->supprimer; $genallowed=1; diff --git a/htdocs/compta/dons/class/don.class.php b/htdocs/compta/dons/class/don.class.php index e5d64eb0d9d..6435e82ed8c 100644 --- a/htdocs/compta/dons/class/don.class.php +++ b/htdocs/compta/dons/class/don.class.php @@ -2,7 +2,8 @@ /* Copyright (C) 2002 Rodolphe Quiedeville * Copyright (C) 2004-2008 Laurent Destailleur * Copyright (C) 2009 Regis Houssin - * Copyright (C) 2014 Florian Henry + * Copyright (C) 2014 Florian Henry + * Copyright (C) 2015 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,8 +21,8 @@ /** * \file htdocs/compta/dons/class/don.class.php - * \ingroup don - * \brief Fichier de la classe des dons + * \ingroup Donation + * \brief File of class to manage donations */ require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php'; @@ -46,6 +47,8 @@ class Don extends CommonObject var $address; var $zip; var $town; + var $country_id; + var $country_code; var $country; var $email; var $public; @@ -326,7 +329,8 @@ class Don extends CommonObject $sql.= ", address"; $sql.= ", zip"; $sql.= ", town"; - $sql.= ", country"; + // $sql.= ", country"; -- Deprecated + $sql.= ", fk_pays"; $sql.= ", public"; $sql.= ", fk_don_projet"; $sql.= ", note_private"; @@ -348,7 +352,7 @@ class Don extends CommonObject $sql.= ", '".$this->db->escape($this->address)."'"; $sql.= ", '".$this->db->escape($this->zip)."'"; $sql.= ", '".$this->db->escape($this->town)."'"; - $sql.= ", '".$this->db->escape($this->country)."'"; // TODO use country_id + $sql.= ", ".$this->country_id; $sql.= ", ".$this->public; $sql.= ", ".($this->fk_project > 0?$this->fk_project:"null"); $sql.= ", ".(!empty($this->note_private)?("'".$this->db->escape($this->note_private)."'"):"NULL"); @@ -409,7 +413,7 @@ class Don extends CommonObject $sql .= ",address='".$this->db->escape($this->address)."'"; $sql .= ",zip='".$this->db->escape($this->zip)."'"; $sql .= ",town='".$this->db->escape($this->town)."'"; - $sql .= ",country='".$this->db->escape($this->country)."'"; // TODO use country_id + $sql .= ",fk_pays = ".$this->country_id; $sql .= ",public=".$this->public; $sql .= ",fk_don_projet=".($this->fk_project>0?$this->fk_project:'null'); $sql .= ",note_private=".(!empty($this->note_private)?("'".$this->db->escape($this->note_private)."'"):"NULL"); @@ -493,12 +497,14 @@ class Don extends CommonObject $sql = "SELECT d.rowid, d.datec, d.tms as datem, d.datedon,"; $sql.= " d.firstname, d.lastname, d.societe, d.amount, d.fk_statut, d.address, d.zip, d.town, "; - $sql.= " d.country, d.public, d.amount, d.fk_paiement, d.note_private, d.note_public, cp.libelle, d.email, d.phone, "; - $sql.= " d.phone_mobile, d.fk_don_projet,"; - $sql.= " p.title as project_label"; + $sql.= " d.fk_pays, d.public, d.amount, d.fk_paiement, d.note_private, d.note_public, cp.libelle, d.email, d.phone, "; + $sql.= " d.phone_mobile, d.fk_don_projet,"; + $sql.= " p.title as project_label,"; + $sql.= " c.code as country_code, c.label as country"; $sql.= " FROM ".MAIN_DB_PREFIX."don as d"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet as p ON p.rowid = d.fk_don_projet"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as cp ON cp.id = d.fk_paiement"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON d.fk_pays = c.rowid"; $sql.= " WHERE d.rowid = ".$rowid." AND d.entity = ".$conf->entity; dol_syslog(get_class($this)."::fetch", LOG_DEBUG); @@ -522,7 +528,9 @@ class Don extends CommonObject $this->town = $obj->town; $this->zip = $obj->zip; $this->town = $obj->town; - $this->country = $obj->country; + $this->country_id = $obj->country_id; + $this->country_code = $obj->country_code; + $this->country = $obj->country; $this->email = $obj->email; $this->phone = $obj->phone; $this->phone_mobile = $obj->phone_mobile; @@ -547,10 +555,10 @@ class Don extends CommonObject } /** - * Valide une promesse de don + * Validate a promise of donation * - * @param int $rowid id du don a modifier - * @param int $userid utilisateur qui valide la promesse + * @param int $rowid id of donation + * @param int $userid User who validate the promise * @return int <0 if KO, >0 if OK */ function valid_promesse($rowid, $userid) @@ -644,9 +652,9 @@ class Don extends CommonObject } /** - * Set donation sto status canceled + * Set donation to status canceled * - * @param int $rowid id du don a modifier + * @param int $rowid id of donation * @return int <0 if KO, >0 if OK */ function set_cancel($rowid) @@ -673,7 +681,7 @@ class Don extends CommonObject } /** - * Somme des dons + * Sum of donations * * @param string $param 1=promesses de dons validees , 2=xxx, 3=encaisses * @return int Summ of donations @@ -724,5 +732,50 @@ class Don extends CommonObject if ($withpicto != 2) $result.=$lien.$this->id.$lienfin; return $result; } + + /** + * Information on record + * + * @param int $id Id of record + * @return void + */ + function info($id) + { + $sql = 'SELECT d.rowid, d.datec, d.fk_user_author, d.fk_user_valid,'; + $sql.= ' d.tms'; + $sql.= ' FROM '.MAIN_DB_PREFIX.'don as d'; + $sql.= ' WHERE d.rowid = '.$id; + + dol_syslog(get_class($this).'::info', LOG_DEBUG); + $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_modification = $vuser; + } + $this->date_creation = $this->db->jdate($obj->datec); + $this->date_modification = $this->db->jdate($obj->tms); + } + $this->db->free($result); + } + else + { + dol_print_error($this->db); + } + } } diff --git a/htdocs/compta/dons/document.php b/htdocs/compta/dons/document.php new file mode 100644 index 00000000000..d4671097fad --- /dev/null +++ b/htdocs/compta/dons/document.php @@ -0,0 +1,125 @@ + + * + * 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/compta/dons/document.php + * \ingroup Donation + * \brief Page of linked files into donations + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; + +$langs->load("other"); +$langs->load("donations"); +$langs->load("companies"); +$langs->load("interventions"); + +$id = GETPOST('id','int'); +$ref = GETPOST('ref', 'alpha'); +$action = GETPOST('action','alpha'); +$confirm = GETPOST('confirm','alpha'); + +// Security check +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'don', $id, ''); + +// Get parameters +$sortfield = GETPOST('sortfield','alpha'); +$sortorder = GETPOST('sortorder','alpha'); +$page = GETPOST('page','int'); +if ($page == -1) { $page = 0; } +$offset = $conf->liste_limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; +if (! $sortorder) $sortorder="ASC"; +if (! $sortfield) $sortfield="name"; + +$object = new Don($db); +$object->fetch($id, $ref); + +$upload_dir = $conf->dons->dir_output.'/'.dol_sanitizeFileName($object->ref); +$modulepart='don'; + + +/* + * Actions + */ + +include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php'; + + +/* + * View + */ + +$form = new Form($db); + +llxHeader("","",$langs->trans("Don")); + + +if ($object->id) +{ + $object->fetch_thirdparty(); + + $head=donation_prepare_head($object); + + dol_fiche_head($head, 'documents', $langs->trans("Don"), 0, 'bill'); + + + // Built files list + $filearray=dol_dir_list($upload_dir,"files",0,'','(\.meta|_preview\.png)$',$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + $totalsize=0; + foreach($filearray as $key => $file) + { + $totalsize+=$file['size']; + } + + + print ''; + + $linkback = ''.$langs->trans("BackToList").''; + + // Ref + print ''; + + print ''; + print ''; + print '
'.$langs->trans("Ref").''; + print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref', ''); + print '
'.$langs->trans("NbOfAttachedFiles").''.count($filearray).'
'.$langs->trans("TotalSizeOfAttachedFiles").''.$totalsize.' '.$langs->trans("bytes").'
'; + + print '
'; + + $modulepart = 'don'; + $permission = $user->rights->don->creer; + $param = '&id=' . $object->id; + include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php'; + +} +else +{ + print $langs->trans("ErrorUnknown"); +} + +llxFooter(); + +$db->close(); diff --git a/htdocs/compta/dons/info.php b/htdocs/compta/dons/info.php new file mode 100644 index 00000000000..ca2c03878d6 --- /dev/null +++ b/htdocs/compta/dons/info.php @@ -0,0 +1,62 @@ + + * + * 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/compta/dons/info.php + * \ingroup Donation + * \brief Page to show a donation information + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; + +$langs->load("donations"); + +// Security check +$id = GETPOST('id','int'); +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'don', $id, ''); + + +/* + * View + */ + +llxHeader(); + +if ($id) +{ + $object = new Don($db); + $object->fetch($id); + $object->info($id); + + $head = donation_prepare_head($object); + + dol_fiche_head($head, 'info', $langs->trans("Donation"), 0, 'bill'); + + print '
'; + dol_print_object_info($object); + print '
'; + + print '
'; +} + +$db->close(); + +llxFooter(); diff --git a/htdocs/core/lib/donation.lib.php b/htdocs/core/lib/donation.lib.php new file mode 100644 index 00000000000..dcbe2d30e84 --- /dev/null +++ b/htdocs/core/lib/donation.lib.php @@ -0,0 +1,61 @@ + + * + * 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/core/lib/donation.lib.php + * \ingroup Donation + * \brief Library of donation functions + */ + +/** + * Prepare array with list of tabs + * + * @param Donation $object Donation + * @return array Array of tabs to show + */ +function donation_prepare_head($object) +{ + global $langs, $conf; + + $h = 0; + $head = array (); + + $head[$h][0] = DOL_URL_ROOT . '/compta/dons/card.php?id=' . $object->id; + $head[$h][1] = $langs->trans("Card"); + $head[$h][2] = 'card'; + $h ++; + + // Show more tabs from modules + // Entries must be declared in modules descriptor with line + // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab + // $this->tabs = array('entity:-tabname); to remove a tab + complete_head_from_modules($conf, $langs, $object, $head, $h, 'donation'); + + $head[$h][0] = DOL_URL_ROOT . '/compta/dons/document.php?id='.$object->id; + $head[$h][1] = $langs->trans("Documents"); + $head[$h][2] = 'documents'; + $h++; + + $head[$h][0] = DOL_URL_ROOT . '/compta/dons/info.php?id=' . $object->id; + $head[$h][1] = $langs->trans("Info"); + $head[$h][2] = 'info'; + $h++; + + complete_head_from_modules($conf, $langs, $object, $head, $h, 'donation', 'remove'); + + return $head; +} diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index b7475d88f91..d2520973275 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -370,3 +370,6 @@ INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('DDP', 'Delivered Du -- Extrafields fk_object must be unique (1-1 relation) ALTER TABLE llx_societe_extrafields DROP INDEX idx_societe_extrafields; ALTER TABLE llx_societe_extrafields ADD UNIQUE INDEX uk_societe_extrafields (fk_object); + +-- Module Donation +ALTER TABLE llx_don ADD COLUMN fk_pays integer NOT NULL after country; diff --git a/htdocs/install/mysql/tables/llx_don.sql b/htdocs/install/mysql/tables/llx_don.sql index 259cac22966..bf434e11518 100644 --- a/htdocs/install/mysql/tables/llx_don.sql +++ b/htdocs/install/mysql/tables/llx_don.sql @@ -36,7 +36,8 @@ create table llx_don address text, zip varchar(30), town varchar(50), - country varchar(50), + country varchar(50), -- Deprecated - Replace with fk_pays + fk_pays integer NOT NULL, email varchar(255), phone varchar(24), phone_mobile varchar(24), From 88d9f7f0f1a3f1139868ac6f8bfeb0f6f5305819 Mon Sep 17 00:00:00 2001 From: Sof Date: Mon, 16 Mar 2015 12:23:25 +0100 Subject: [PATCH 297/429] FIX : Force ref Even if you set ref in object class Commande, ref will be set to '(PROVid)' until you call 'valid' function --- htdocs/commande/class/commande.class.php | 44 +++++++++++++----------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 8dcaca59a97..229b88d656c 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -629,8 +629,8 @@ class Commande extends CommonOrder * Note that this->ref can be set or empty. If empty, we will use "(PROV)" * * @param User $user Objet user that make creation - * @param int $notrigger Disable all triggers - * @return int <0 if KO, >0 if OK + * @param int $notrigger Disable all triggers + * @return int <0 if KO, >0 if OK */ function create($user, $notrigger=0) { @@ -638,22 +638,22 @@ class Commande extends CommonOrder $error=0; // Clean parameters - $this->brouillon = 1; // On positionne en mode brouillon la commande + $this->brouillon = 1; // set command as draft dol_syslog(get_class($this)."::create user=".$user->id); // Check parameters if (! empty($this->ref)) // We check that ref is not already used - { - $result=self::isExistingObject($this->element, 0, $this->ref); // Check ref is not yet used - if ($result > 0) - { - $this->error='ErrorRefAlreadyExists'; - dol_syslog(get_class($this)."::create ".$this->error,LOG_WARNING); - $this->db->rollback(); - return -1; - } - } + { + $result=self::isExistingObject($this->element, 0, $this->ref); // Check ref is not yet used + if ($result > 0) + { + $this->error='ErrorRefAlreadyExists'; + dol_syslog(get_class($this)."::create ".$this->error,LOG_WARNING); + $this->db->rollback(); + return -1; + } + } $soc = new Societe($this->db); $result=$soc->fetch($this->socid); @@ -682,7 +682,7 @@ class Commande extends CommonOrder $sql.= ", model_pdf, fk_cond_reglement, fk_mode_reglement, fk_account, fk_availability, fk_input_reason, date_livraison, fk_delivery_address"; $sql.= ", fk_shipping_method"; $sql.= ", remise_absolue, remise_percent"; - $sql.= ", fk_incoterms, location_incoterms"; + $sql.= ", fk_incoterms, location_incoterms"; $sql.= ", entity"; $sql.= ")"; $sql.= " VALUES ('(PROV)',".$this->socid.", '".$this->db->idate($now)."', ".$user->id; @@ -722,7 +722,7 @@ class Commande extends CommonOrder $num=count($this->lines); /* - * Insertion du detail des produits dans la base + * Insert products details into db */ for ($i=0;$i<$num;$i++) { @@ -753,7 +753,7 @@ class Commande extends CommonOrder $this->lines[$i]->fk_fournprice, $this->lines[$i]->pa_ht, $this->lines[$i]->label, - $this->lines[$i]->array_options + $this->lines[$i]->array_options ); if ($result < 0) { @@ -771,14 +771,16 @@ class Commande extends CommonOrder } } - // Mise a jour ref - $sql = 'UPDATE '.MAIN_DB_PREFIX."commande SET ref='(PROV".$this->id.")' WHERE rowid=".$this->id; + // update ref + if (empty($this->ref)) + { + $this->ref = '(PROV'.$this->id.')'; + } + $sql = 'UPDATE '.MAIN_DB_PREFIX."commande SET ref='".$this->ref."' WHERE rowid=".$this->id; if ($this->db->query($sql)) { if ($this->id) { - $this->ref="(PROV".$this->id.")"; - // Add object linked if (is_array($this->linked_objects) && ! empty($this->linked_objects)) { @@ -796,7 +798,7 @@ class Commande extends CommonOrder { // On recupere les differents contact interne et externe $prop = new Propal($this->db); - $prop->fetch($origin_id); + $prop->fetch($origin_id); // We get ids of sales representatives of proposal $this->userid = $prop->getIdcontact('internal', 'SALESREPFOLL'); From bc4ecf8619e8235bd01844b0afa67700508b82fa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Mar 2015 18:25:26 +0100 Subject: [PATCH 298/429] Fix the debug option must works for admin user --- htdocs/admin/const.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/const.php b/htdocs/admin/const.php index fc7fbc74f4d..f8fdb461d1e 100644 --- a/htdocs/admin/const.php +++ b/htdocs/admin/const.php @@ -229,7 +229,7 @@ $sql.= ", note"; $sql.= ", entity"; $sql.= " FROM ".MAIN_DB_PREFIX."const"; $sql.= " WHERE entity IN (".$user->entity.",".$conf->entity.")"; -if (empty($user->entity) && $debug) {} // to force for superadmin +if ((empty($user->entity) || $user->admin) && $debug) {} // to force for superadmin else $sql.= " AND visible = 1"; // We must always have this. Otherwise, array is too large and submitting data fails due to apache POST or GET limits $sql.= " ORDER BY entity, name ASC"; From 141fa56d67450063d388f98d6216eed8bc6537e3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 Mar 2015 00:11:04 +0100 Subject: [PATCH 299/429] Fixed bad parameter --- htdocs/core/lib/functions.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 07193c356e2..585fa65b75d 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4845,7 +4845,7 @@ function printCommonFooter($zone='private') print 'MAIN_OPTIMIZE_SPEED='.(isset($conf->global->MAIN_OPTIMIZE_SPEED)?$conf->global->MAIN_OPTIMIZE_SPEED:'off'); if ($micro_start_time) { - $micro_end_time=dol_microtime_float(true); + $micro_end_time=dol_microtime_float(); print ' - Build time: '.ceil(1000*($micro_end_time-$micro_start_time)).' ms'; } if (function_exists("memory_get_usage")) From b693ed3f51eb141bdf77268190814dd9e56c080a Mon Sep 17 00:00:00 2001 From: Scrutinizer Auto-Fixer Date: Mon, 16 Mar 2015 23:21:17 +0000 Subject: [PATCH 300/429] Scrutinizer Auto-Fixes This commit consists of patches automatically generated for this project on https://scrutinizer-ci.com --- htdocs/core/db/sqlite3.class.php | 14 ++++++------- .../filemanagerdol/connectors/php/basexml.php | 2 +- .../filemanagerdol/connectors/php/upload.php | 2 +- htdocs/core/lib/bank.lib.php | 6 +++--- htdocs/core/lib/functions.lib.php | 20 +++++++++---------- htdocs/core/lib/pdf.lib.php | 10 +++++----- htdocs/core/lib/price.lib.php | 2 +- htdocs/core/lib/product.lib.php | 4 ++-- htdocs/core/lib/treeview.lib.php | 2 +- htdocs/core/menus/standard/auguria_menu.php | 2 +- htdocs/core/menus/standard/eldy_menu.php | 2 +- htdocs/core/menus/standard/empty.php | 2 +- htdocs/core/modules/action/rapport.pdf.php | 2 +- .../barcode/doc/phpbarcode.modules.php | 4 ++-- .../cheque/pdf/modules_chequereceipts.php | 2 +- .../modules/export/export_csv.modules.php | 2 +- .../modules/export/export_excel.modules.php | 2 +- .../modules/export/export_tsv.modules.php | 2 +- .../fichinter/doc/pdf_soleil.modules.php | 2 +- .../modules/fichinter/modules_fichinter.php | 2 +- .../modules/import/import_csv.modules.php | 4 ++-- .../modules/mailings/modules_mailings.php | 2 +- .../core/modules/mailings/pomme.modules.php | 2 +- htdocs/core/modules/member/modules_cards.php | 2 +- .../modules/printsheet/modules_labels.php | 2 +- .../project/doc/pdf_baleine.modules.php | 6 +++--- .../core/modules/project/modules_project.php | 4 ++-- .../task/doc/doc_generic_task_odt.modules.php | 2 +- .../modules/project/task/modules_task.php | 4 ++-- .../pdf/pdf_muscadet.modules.php | 10 +++++----- .../modules/syslog/mod_syslog_chromephp.php | 2 +- .../modules/syslog/mod_syslog_firephp.php | 2 +- htdocs/ftp/index.php | 2 +- htdocs/imports/import.php | 2 +- htdocs/install/etape1.php | 2 +- htdocs/install/inc.php | 4 ++-- htdocs/install/upgrade2.php | 2 +- .../mailmanspip/class/mailmanspip.class.php | 8 ++++---- htdocs/opensurvey/fonctions.php | 2 +- .../product/actions_card_product.class.php | 2 +- .../product/class/html.formproduct.class.php | 2 +- htdocs/projet/class/project.class.php | 2 +- htdocs/support/inc.php | 2 +- htdocs/user/class/user.class.php | 8 ++++---- 44 files changed, 83 insertions(+), 83 deletions(-) diff --git a/htdocs/core/db/sqlite3.class.php b/htdocs/core/db/sqlite3.class.php index 50d9e5c9c79..973a6147bdd 100644 --- a/htdocs/core/db/sqlite3.class.php +++ b/htdocs/core/db/sqlite3.class.php @@ -315,7 +315,7 @@ class DoliDBSqlite3 extends DoliDB * @param string $login login * @param string $passwd password * @param string $name name of database (not used for mysql, used for pgsql) - * @param string $port Port of database server + * @param integer $port Port of database server * @return resource Database access handler * @see close */ @@ -530,7 +530,7 @@ class DoliDBSqlite3 extends DoliDB /** * Return datas as an array * - * @param Resultset $resultset Resultset of request + * @param resource $resultset Resultset of request * @return array Array */ function fetch_row($resultset) @@ -588,7 +588,7 @@ class DoliDBSqlite3 extends DoliDB /** * Free last resultset used. * - * @param resultset $resultset Curseur de la requete voulue + * @param integer $resultset Curseur de la requete voulue * @return void */ function free($resultset=0) @@ -709,7 +709,7 @@ class DoliDBSqlite3 extends DoliDB * * @param string $fieldorvalue Field name or value to encrypt * @param int $withQuotes Return string with quotes - * @return return XXX(field) or XXX('value') or field or 'value' + * @return string XXX(field) or XXX('value') or field or 'value' */ function encrypt($fieldorvalue, $withQuotes=0) { @@ -1277,7 +1277,7 @@ class DoliDBSqlite3 extends DoliDB * Cette fonction est l'equivalent de la fonction MONTH de MySql. * * @param string $date Date - * @return integer + * @return string */ public static function dbMONTH($date) { @@ -1320,7 +1320,7 @@ class DoliDBSqlite3 extends DoliDB * dbWEEKDAY * * @param int $date Date - * @return string + * @return double */ public static function dbWEEKDAY($date) { $arr = date_parse($date); @@ -1472,7 +1472,7 @@ class DoliDBSqlite3 extends DoliDB * week_mode * * @param string $mode Mode - * @return string Week format + * @return integer Week format */ private static function week_mode($mode) { $week_format= ($mode & 7); diff --git a/htdocs/core/filemanagerdol/connectors/php/basexml.php b/htdocs/core/filemanagerdol/connectors/php/basexml.php index 7565aae8211..a14b843b465 100644 --- a/htdocs/core/filemanagerdol/connectors/php/basexml.php +++ b/htdocs/core/filemanagerdol/connectors/php/basexml.php @@ -84,7 +84,7 @@ function CreateXmlFooter() /** * SendError * - * @param unknown_type $number Number + * @param integer $number Number * @param unknown_type $text Text * @return void */ diff --git a/htdocs/core/filemanagerdol/connectors/php/upload.php b/htdocs/core/filemanagerdol/connectors/php/upload.php index 664ffbf2bdb..eb9600b20a9 100644 --- a/htdocs/core/filemanagerdol/connectors/php/upload.php +++ b/htdocs/core/filemanagerdol/connectors/php/upload.php @@ -30,7 +30,7 @@ require 'commands.php'; /** * SendError * - * @param string $number Number + * @param integer $number Number * @param string $text Text * @return void */ diff --git a/htdocs/core/lib/bank.lib.php b/htdocs/core/lib/bank.lib.php index a0f670c1958..df9a25ae7c8 100644 --- a/htdocs/core/lib/bank.lib.php +++ b/htdocs/core/lib/bank.lib.php @@ -120,7 +120,7 @@ function bank_admin_prepare_head($object) * Check SWIFT informations for a bank account * * @param Account $account A bank account - * @return int True if informations are valid, false otherwise + * @return boolean True if informations are valid, false otherwise */ function checkSwiftForAccount($account) { @@ -137,7 +137,7 @@ function checkSwiftForAccount($account) * Check IBAN number informations for a bank account * * @param Account $account A bank account - * @return int True if informations are valid, false otherwise + * @return boolean True if informations are valid, false otherwise */ function checkIbanForAccount($account) { @@ -156,7 +156,7 @@ function checkIbanForAccount($account) * Check account number informations for a bank account * * @param Account $account A bank account - * @return int True if informations are valid, false otherwise + * @return boolean True if informations are valid, false otherwise */ function checkBanForAccount($account) { diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 07193c356e2..6f197279ef6 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2116,7 +2116,7 @@ function img_edit_remove($titlealt = 'default', $other='') * Show logo editer/modifier fiche * * @param string $titlealt Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title. - * @param float $float Si il faut y mettre le style "float: right" + * @param integer $float Si il faut y mettre le style "float: right" * @param string $other Add more attributes on img * @return string Return tag img */ @@ -2133,7 +2133,7 @@ function img_edit($titlealt = 'default', $float = 0, $other = '') * Show logo view card * * @param string $titlealt Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title. - * @param float $float Si il faut y mettre le style "float: right" + * @param integer $float Si il faut y mettre le style "float: right" * @param string $other Add more attributes on img * @return string Return tag img */ @@ -2446,7 +2446,7 @@ function img_searchclear($titlealt = 'default', $other = '') * Show information for admin users * * @param string $text Text info - * @param string $infoonimgalt Info is shown only on alt of star picto, otherwise it is show on output after the star picto + * @param integer $infoonimgalt Info is shown only on alt of star picto, otherwise it is show on output after the star picto * @param int $nodiv No div * @return string String with info text */ @@ -2866,7 +2866,7 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so * @param int $page Number of page * @param string $file Lien * @param string $options Autres parametres d'url a propager dans les liens ("" par defaut) - * @param boolean|int $nextpage Do we show a next page button + * @param integer $nextpage Do we show a next page button * @param string $betweenarrows HTML Content to show between arrows * @return void */ @@ -2923,7 +2923,7 @@ function vatrate($rate,$addpercent=false,$info_bits=0,$usestarfornpr=0) * Function used into PDF and HTML pages * * @param float $amount Amount to format - * @param string $form Type of format, HTML or not (not by default) + * @param integer $form Type of format, HTML or not (not by default) * @param Translate $outlangs Object langs for output * @param int $trunc 1=Truncate if there is too much decimals (default), 0=Does not truncate * @param int $rounding Minimum number of decimal to show. If 0, no change, if -1, we use min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOTAL) @@ -3622,7 +3622,7 @@ function get_default_npr($thirdparty_seller, $thirdparty_buyer, $idprod=0, $idpr * @param Societe $thirdparty_buyer Thirdparty buyer * @param int $local Localtax to process (1 or 2) * @param int $idprod Id product - * @return float localtax, -1 si ne peut etre determine + * @return integer localtax, -1 si ne peut etre determine * @see get_default_tva, get_default_npr */ function get_default_localtax($thirdparty_seller, $thirdparty_buyer, $local, $idprod=0) @@ -3664,7 +3664,7 @@ function get_default_localtax($thirdparty_seller, $thirdparty_buyer, $local, $id * Return yes or no in current language * * @param string $yesno Value to test (1, 'yes', 'true' or 0, 'no', 'false') - * @param string $case 1=Yes/No, 0=yes/no, 2=Disabled checkbox, 3=Disabled checkbox + Yes/No + * @param integer $case 1=Yes/No, 0=yes/no, 2=Disabled checkbox, 3=Disabled checkbox + Yes/No * @param int $color 0=texte only, 1=Text is formated with a color font style ('ok' or 'error'), 2=Text is formated with 'ok' color. * @return string HTML string */ @@ -3805,7 +3805,7 @@ function picto_required() * Clean a string from all HTML tags and entities * * @param string $StringHtml String to clean - * @param string $removelinefeed Replace also all lines feeds by a space, otherwise only last one are removed + * @param integer $removelinefeed Replace also all lines feeds by a space, otherwise only last one are removed * @param string $pagecodeto Encoding of input/output string * @return string String cleaned * @@ -4183,7 +4183,7 @@ function print_date_range($date_start,$date_end,$format = '',$outputlangs='') * @param int $date_end End date * @param string $format Output format * @param Translate $outputlangs Output language - * @param string $withparenthesis 1=Add parenthesis, 0=non parenthesis + * @param integer $withparenthesis 1=Add parenthesis, 0=non parenthesis * @return string String */ function get_date_range($date_start,$date_end,$format = '',$outputlangs='', $withparenthesis=1) @@ -4952,7 +4952,7 @@ function dol_getmypid() * @param string $value The value to look for. * If param $numeric is 0, can contains several keywords separated with a space, like "keyword1 keyword2" = We want record field like keyword1 and field like keyword2 * If param $numeric is 1, can contains an operator <>= like "<10" or ">=100.5 < 1000" - * @param string $numeric 0=value is list of keywords, 1=value is a numeric test + * @param integer $numeric 0=value is list of keywords, 1=value is a numeric test * @return string $res The statement to append to the SQL query */ function natural_search($fields, $value, $numeric=0) diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index e1d1df04346..e671f519607 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -941,7 +941,7 @@ function pdf_writeLinkedObjects(&$pdf,$object,$outputlangs,$posx,$posy,$w,$h,$al * @param int $hideref Hide reference * @param int $hidedesc Hide description * @param int $issupplierline Is it a line for a supplier object ? - * @return void + * @return string|null */ function pdf_writelinedesc(&$pdf,$object,$i,$outputlangs,$w,$h,$posx,$posy,$hideref=0,$hidedesc=0,$issupplierline=0) { @@ -1159,7 +1159,7 @@ function pdf_getlinedesc($object,$i,$outputlangs,$hideref=0,$hidedesc=0,$issuppl * @param int $i Current line number * @param Translate $outputlangs Object langs for output * @param int $hidedetails Hide details (0=no, 1=yes, 2=just special lines) - * @return void + * @return null|string */ function pdf_getlinenum($object,$i,$outputlangs,$hidedetails=0) { @@ -1185,7 +1185,7 @@ function pdf_getlinenum($object,$i,$outputlangs,$hidedetails=0) * @param int $i Current line number * @param Translate $outputlangs Object langs for output * @param int $hidedetails Hide details (0=no, 1=yes, 2=just special lines) - * @return void + * @return null|string */ function pdf_getlineref($object,$i,$outputlangs,$hidedetails=0) { @@ -1210,7 +1210,7 @@ function pdf_getlineref($object,$i,$outputlangs,$hidedetails=0) * @param int $i Current line number * @param Translate $outputlangs Object langs for output * @param int $hidedetails Hide details (0=no, 1=yes, 2=just special lines) - * @return void + * @return null|string */ function pdf_getlineref_supplier($object,$i,$outputlangs,$hidedetails=0) { @@ -1569,7 +1569,7 @@ function pdf_getlinetotalwithtax($object,$i,$outputlangs,$hidedetails=0) * @param Object $object Object * @param string $type Type * @param Translate $outputlangs Object langs for output - * @return void + * @return integer */ function pdf_getTotalQty($object,$type,$outputlangs) { diff --git a/htdocs/core/lib/price.lib.php b/htdocs/core/lib/price.lib.php index aac29ad5256..983f2f27d53 100644 --- a/htdocs/core/lib/price.lib.php +++ b/htdocs/core/lib/price.lib.php @@ -49,7 +49,7 @@ * @param int $type 0/1=Product/service * @param Societe $seller Thirdparty seller (we need $seller->country_id property). Provided only if seller is the supplier, otherwise $seller will be $mysoc. * @param array $localtaxes_array Array with localtaxes info (loaded by getLocalTaxesFromRate function). - * @param float $progress Situation invoices progress (value from 0 to 100, 100 by default) + * @param integer $progress Situation invoices progress (value from 0 to 100, 100 by default) * @return result[ 0=total_ht, * 1=total_vat, * 2=total_ttc, diff --git a/htdocs/core/lib/product.lib.php b/htdocs/core/lib/product.lib.php index 1aea8f9e37b..a02747bb8aa 100644 --- a/htdocs/core/lib/product.lib.php +++ b/htdocs/core/lib/product.lib.php @@ -27,7 +27,7 @@ /** * Prepare array with list of tabs * - * @param Object $object Object related to tabs + * @param Product $object Object related to tabs * @param User $user Object user * @return array Array of tabs to show */ @@ -183,7 +183,7 @@ function product_admin_prepare_head() * * @param Product $product Product object * @param int $socid Thirdparty id - * @return void + * @return integer */ function show_stats_for_company($product,$socid) { diff --git a/htdocs/core/lib/treeview.lib.php b/htdocs/core/lib/treeview.lib.php index 470da211f2e..08fa63c52c6 100644 --- a/htdocs/core/lib/treeview.lib.php +++ b/htdocs/core/lib/treeview.lib.php @@ -31,7 +31,7 @@ * @param array $fulltree Array of entries in correct order * @param string $key Key of entry into fulltree to show picto * @param int $silent Do not output indent and picto, returns only value - * @return array array(0 or 1 if at least one of this level after, 0 or 1 if at least one of higher level after, nbofdirinsub, nbofdocinsub) + * @return integer[] array(0 or 1 if at least one of this level after, 0 or 1 if at least one of higher level after, nbofdirinsub, nbofdocinsub) */ function tree_showpad(&$fulltree,$key,$silent=0) { diff --git a/htdocs/core/menus/standard/auguria_menu.php b/htdocs/core/menus/standard/auguria_menu.php index 88052f380c0..36ecfd7effa 100644 --- a/htdocs/core/menus/standard/auguria_menu.php +++ b/htdocs/core/menus/standard/auguria_menu.php @@ -158,7 +158,7 @@ class MenuManager * Show menu * * @param string $mode 'top', 'left', 'jmobile' - * @return void + * @return string */ function showmenu($mode) { diff --git a/htdocs/core/menus/standard/eldy_menu.php b/htdocs/core/menus/standard/eldy_menu.php index af85537d455..40d1d562552 100644 --- a/htdocs/core/menus/standard/eldy_menu.php +++ b/htdocs/core/menus/standard/eldy_menu.php @@ -112,7 +112,7 @@ class MenuManager * Show menu * * @param string $mode 'top', 'left', 'jmobile' - * @return void + * @return string */ function showmenu($mode) { diff --git a/htdocs/core/menus/standard/empty.php b/htdocs/core/menus/standard/empty.php index 83f54c050d6..ec783af938d 100644 --- a/htdocs/core/menus/standard/empty.php +++ b/htdocs/core/menus/standard/empty.php @@ -61,7 +61,7 @@ class MenuManager * Show menu * * @param string $mode 'top', 'left', 'jmobile' - * @return void + * @return string */ function showmenu($mode) { diff --git a/htdocs/core/modules/action/rapport.pdf.php b/htdocs/core/modules/action/rapport.pdf.php index 32554e1511a..65a80d97e5b 100644 --- a/htdocs/core/modules/action/rapport.pdf.php +++ b/htdocs/core/modules/action/rapport.pdf.php @@ -303,7 +303,7 @@ class CommActionRapport * @param PDF $pdf Object PDF * @param Translate $outputlangs Object lang for output * @param int $pagenb Page nb - * @return void + * @return integer */ function _pagehead(&$pdf, $outputlangs, $pagenb) { diff --git a/htdocs/core/modules/barcode/doc/phpbarcode.modules.php b/htdocs/core/modules/barcode/doc/phpbarcode.modules.php index d476d2fa3f4..8f76595bf88 100644 --- a/htdocs/core/modules/barcode/doc/phpbarcode.modules.php +++ b/htdocs/core/modules/barcode/doc/phpbarcode.modules.php @@ -108,7 +108,7 @@ class modPhpbarcode extends ModeleBarCode * @param string $code Value to encode * @param string $encoding Mode of encoding * @param string $readable Code can be read - * @param string $scale Scale + * @param integer $scale Scale * @return int <0 if KO, >0 if OK */ function buildBarCode($code,$encoding,$readable='Y',$scale=1) @@ -148,7 +148,7 @@ class modPhpbarcode extends ModeleBarCode * @param string $code Value to encode * @param string $encoding Mode of encoding * @param string $readable Code can be read - * @param string $scale Scale + * @param integer $scale Scale * @return int <0 if KO, >0 if OK */ function writeBarCode($code,$encoding,$readable='Y',$scale=1) diff --git a/htdocs/core/modules/cheque/pdf/modules_chequereceipts.php b/htdocs/core/modules/cheque/pdf/modules_chequereceipts.php index 1fde7ef8bdb..11ff9b509ad 100644 --- a/htdocs/core/modules/cheque/pdf/modules_chequereceipts.php +++ b/htdocs/core/modules/cheque/pdf/modules_chequereceipts.php @@ -42,7 +42,7 @@ abstract class ModeleChequeReceipts extends CommonDocGenerator * Return list of active generation modules * * @param DoliDB $db Database handler - * @param string $maxfilenamelength Max length of value to show + * @param integer $maxfilenamelength Max length of value to show * @return array List of templates */ static function liste_modeles($db,$maxfilenamelength=0) diff --git a/htdocs/core/modules/export/export_csv.modules.php b/htdocs/core/modules/export/export_csv.modules.php index ce058a93455..85bf6151055 100644 --- a/htdocs/core/modules/export/export_csv.modules.php +++ b/htdocs/core/modules/export/export_csv.modules.php @@ -74,7 +74,7 @@ class ExportCsv extends ModeleExports /** * getDriverId * - * @return int + * @return string */ function getDriverId() { diff --git a/htdocs/core/modules/export/export_excel.modules.php b/htdocs/core/modules/export/export_excel.modules.php index 87923b4cb9c..e5281150296 100644 --- a/htdocs/core/modules/export/export_excel.modules.php +++ b/htdocs/core/modules/export/export_excel.modules.php @@ -76,7 +76,7 @@ class ExportExcel extends ModeleExports /** * getDriverId * - * @return int + * @return string */ function getDriverId() { diff --git a/htdocs/core/modules/export/export_tsv.modules.php b/htdocs/core/modules/export/export_tsv.modules.php index 409102fd857..a1b553bbe57 100644 --- a/htdocs/core/modules/export/export_tsv.modules.php +++ b/htdocs/core/modules/export/export_tsv.modules.php @@ -69,7 +69,7 @@ class ExportTsv extends ModeleExports /** * getDriverId * - * @return int + * @return string */ function getDriverId() { diff --git a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php index 1a26a161511..c10c24508e8 100644 --- a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php +++ b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php @@ -657,7 +657,7 @@ class pdf_soleil extends ModelePDFFicheinter * @param Object $object Object to show * @param Translate $outputlangs Object lang for output * @param int $hidefreetext 1=Hide free text - * @return void + * @return integer */ function _pagefoot(&$pdf,$object,$outputlangs,$hidefreetext=0) { diff --git a/htdocs/core/modules/fichinter/modules_fichinter.php b/htdocs/core/modules/fichinter/modules_fichinter.php index dbcdab37530..6f4b68f801c 100644 --- a/htdocs/core/modules/fichinter/modules_fichinter.php +++ b/htdocs/core/modules/fichinter/modules_fichinter.php @@ -41,7 +41,7 @@ abstract class ModelePDFFicheinter extends CommonDocGenerator * Return list of active generation modules * * @param DoliDB $db Database handler - * @param string $maxfilenamelength Max length of value to show + * @param integer $maxfilenamelength Max length of value to show * @return array List of templates */ static function liste_modeles($db,$maxfilenamelength=0) diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index cd3a35e4060..22008bb054d 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -88,7 +88,7 @@ class ImportCsv extends ModeleImports /** * getDriverId * - * @return int Id + * @return string Id */ function getDriverId() { @@ -305,7 +305,7 @@ class ImportCsv extends ModeleImports /** * Close file handle * - * @return void + * @return integer */ function import_close_file() { diff --git a/htdocs/core/modules/mailings/modules_mailings.php b/htdocs/core/modules/mailings/modules_mailings.php index 50da9252ecc..5561526a7ff 100644 --- a/htdocs/core/modules/mailings/modules_mailings.php +++ b/htdocs/core/modules/mailings/modules_mailings.php @@ -62,7 +62,7 @@ class MailingTargets // This can't be abstract as it is used for some method /** * Return number of records for email selector * - * @return string Example + * @return integer Example */ function getNbOfRecords() { diff --git a/htdocs/core/modules/mailings/pomme.modules.php b/htdocs/core/modules/mailings/pomme.modules.php index 2c93b588524..ce4a8b89e09 100644 --- a/htdocs/core/modules/mailings/pomme.modules.php +++ b/htdocs/core/modules/mailings/pomme.modules.php @@ -57,7 +57,7 @@ class mailing_pomme extends MailingTargets * array of SQL request that returns two field: * One called "label", One called "nb". * - * @return array Array with SQL requests + * @return string[] Array with SQL requests */ function getSqlArrayForStats() { diff --git a/htdocs/core/modules/member/modules_cards.php b/htdocs/core/modules/member/modules_cards.php index 0b5d9e482ac..d7fa0cbaae1 100644 --- a/htdocs/core/modules/member/modules_cards.php +++ b/htdocs/core/modules/member/modules_cards.php @@ -41,7 +41,7 @@ class ModelePDFCards * Return list of active generation modules * * @param DoliDB $db Database handler - * @param string $maxfilenamelength Max length of value to show + * @param integer $maxfilenamelength Max length of value to show * @return array List of templates */ function liste_modeles($db,$maxfilenamelength=0) diff --git a/htdocs/core/modules/printsheet/modules_labels.php b/htdocs/core/modules/printsheet/modules_labels.php index d2594d75b21..15ef011ea04 100644 --- a/htdocs/core/modules/printsheet/modules_labels.php +++ b/htdocs/core/modules/printsheet/modules_labels.php @@ -41,7 +41,7 @@ class ModelePDFLabels * Return list of active generation modules * * @param DoliDB $db Database handler - * @param string $maxfilenamelength Max length of value to show + * @param integer $maxfilenamelength Max length of value to show * @return array List of templates */ function liste_modeles($db,$maxfilenamelength=0) diff --git a/htdocs/core/modules/project/doc/pdf_baleine.modules.php b/htdocs/core/modules/project/doc/pdf_baleine.modules.php index 28a704d6f8d..fcac8bd2646 100644 --- a/htdocs/core/modules/project/doc/pdf_baleine.modules.php +++ b/htdocs/core/modules/project/doc/pdf_baleine.modules.php @@ -390,7 +390,7 @@ class pdf_baleine extends ModelePDFProjects * Show top header of page. * * @param PDF $pdf Object PDF - * @param Object $object Object to show + * @param Project $object Object to show * @param int $showaddress 0=no, 1=yes * @param Translate $outputlangs Object lang for output * @return void @@ -476,10 +476,10 @@ class pdf_baleine extends ModelePDFProjects * Show footer of page. Need this->emetteur object * * @param PDF $pdf PDF - * @param Object $object Object to show + * @param Project $object Object to show * @param Translate $outputlangs Object lang for output * @param int $hidefreetext 1=Hide free text - * @return void + * @return integer */ function _pagefoot(&$pdf,$object,$outputlangs,$hidefreetext=0) { diff --git a/htdocs/core/modules/project/modules_project.php b/htdocs/core/modules/project/modules_project.php index 54d981e51a4..f79de708164 100644 --- a/htdocs/core/modules/project/modules_project.php +++ b/htdocs/core/modules/project/modules_project.php @@ -38,7 +38,7 @@ abstract class ModelePDFProjects extends CommonDocGenerator * Return list of active generation modules * * @param DoliDB $db Database handler - * @param string $maxfilenamelength Max length of value to show + * @param integer $maxfilenamelength Max length of value to show * @return array List of templates */ static function liste_modeles($db,$maxfilenamelength=0) @@ -145,7 +145,7 @@ abstract class ModeleNumRefProjects * Create an intervention document on disk using template defined into PROJECT_ADDON_PDF * * @param DoliDB $db objet base de donnee - * @param Object $object Object fichinter + * @param Project $object Object fichinter * @param string $modele force le modele a utiliser ('' par defaut) * @param Translate $outputlangs objet lang a utiliser pour traduction * @param int $hidedetails Hide details of lines 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 c074cba31e5..8a9669dadf1 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 @@ -106,7 +106,7 @@ class doc_generic_task_odt extends ModelePDFTask /** * Define array with couple substitution key => substitution value * - * @param Object $object Main object to use as data source + * @param Project $object Main object to use as data source * @param Translate $outputlangs Lang object to use for output * @return array Array of substitution */ diff --git a/htdocs/core/modules/project/task/modules_task.php b/htdocs/core/modules/project/task/modules_task.php index f861b1bf002..9f9cb5041c8 100644 --- a/htdocs/core/modules/project/task/modules_task.php +++ b/htdocs/core/modules/project/task/modules_task.php @@ -39,7 +39,7 @@ abstract class ModelePDFTask extends CommonDocGenerator * Return list of active generation modules * * @param DoliDB $db Database handler - * @param string $maxfilenamelength Max length of value to show + * @param integer $maxfilenamelength Max length of value to show * @return array List of templates */ static function liste_modeles($db,$maxfilenamelength=0) @@ -145,7 +145,7 @@ abstract class ModeleNumRefTask * Create an intervention document on disk using template defined into PROJECT_TASK_ADDON_PDF * * @param DoliDB $db objet base de donnee - * @param Object $object Object fichinter + * @param Task $object Object fichinter * @param string $modele force le modele a utiliser ('' par defaut) * @param Translate $outputlangs objet lang a utiliser pour traduction * @param int $hidedetails Hide details of lines diff --git a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php index 43d00cfbdfe..9a0291d5e8d 100644 --- a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php @@ -554,7 +554,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders * Show payments table * * @param PDF $pdf Object PDF - * @param Object $object Object order + * @param CommandeFournisseur $object Object order * @param int $posy Position y in PDF * @param Translate $outputlangs Object langs for output * @return int <0 if KO, >0 if OK @@ -569,10 +569,10 @@ class pdf_muscadet extends ModelePDFSuppliersOrders * Show miscellaneous information (payment mode, payment term, ...) * * @param PDF $pdf Object PDF - * @param Object $object Object to show + * @param CommandeFournisseur $object Object to show * @param int $posy Y * @param Translate $outputlangs Langs object - * @return void + * @return integer */ function _tableau_info(&$pdf, $object, $posy, $outputlangs) { @@ -938,7 +938,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders * Show top header of page. * * @param PDF $pdf Object PDF - * @param Object $object Object to show + * @param CommandeFournisseur $object Object to show * @param int $showaddress 0=no, 1=yes * @param Translate $outputlangs Object lang for output * @return void @@ -1139,7 +1139,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders * Show footer of page. Need this->emetteur object * * @param PDF $pdf PDF - * @param Object $object Object to show + * @param CommandeFournisseur $object Object to show * @param Translate $outputlangs Object lang for output * @param int $hidefreetext 1=Hide free text * @return int Return height of bottom margin including footer text diff --git a/htdocs/core/modules/syslog/mod_syslog_chromephp.php b/htdocs/core/modules/syslog/mod_syslog_chromephp.php index b2520d27d7b..b376595fd2b 100644 --- a/htdocs/core/modules/syslog/mod_syslog_chromephp.php +++ b/htdocs/core/modules/syslog/mod_syslog_chromephp.php @@ -114,7 +114,7 @@ class mod_syslog_chromephp extends LogHandler implements LogHandlerInterface * Output log content * * @param array $content Content to log - * @return void + * @return null|false */ public function export($content) { diff --git a/htdocs/core/modules/syslog/mod_syslog_firephp.php b/htdocs/core/modules/syslog/mod_syslog_firephp.php index 31addd8b17a..a9d4de979e3 100644 --- a/htdocs/core/modules/syslog/mod_syslog_firephp.php +++ b/htdocs/core/modules/syslog/mod_syslog_firephp.php @@ -111,7 +111,7 @@ class mod_syslog_firephp extends LogHandler implements LogHandlerInterface * Output log content * * @param array $content Content to log - * @return void + * @return null|false */ public function export($content) { diff --git a/htdocs/ftp/index.php b/htdocs/ftp/index.php index f1a051bcf2a..4da37cde779 100644 --- a/htdocs/ftp/index.php +++ b/htdocs/ftp/index.php @@ -634,7 +634,7 @@ llxFooter(); * @param string $ftp_user FTP user * @param string $ftp_password FTP password * @param string $section Directory - * @param string $ftp_passive Use a passive mode + * @param integer $ftp_passive Use a passive mode * @return int <0 if OK, >0 if KO */ function dol_ftp_connect($ftp_server, $ftp_port, $ftp_user, $ftp_password, $section, $ftp_passive=0) diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index 17c9f717253..5fc55dd3dab 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -1754,7 +1754,7 @@ function show_elem($fieldssource,$pos,$key,$var,$nostyle='') * * @param array $fieldssource Array of field source * @param array $listofkey Array of keys - * @return void + * @return integer */ function getnewkey(&$fieldssource,&$listofkey) { diff --git a/htdocs/install/etape1.php b/htdocs/install/etape1.php index f7b81e1da66..32f85a0860d 100644 --- a/htdocs/install/etape1.php +++ b/htdocs/install/etape1.php @@ -776,7 +776,7 @@ function write_master_file($masterfile,$main_dir) * Save configuration file. No particular permissions are set by installer. * * @param string $conffile Path to conf file to generate/update - * @return void + * @return integer */ function write_conf_file($conffile) { diff --git a/htdocs/install/inc.php b/htdocs/install/inc.php index a7e66fbcf94..bac0ffe6eda 100644 --- a/htdocs/install/inc.php +++ b/htdocs/install/inc.php @@ -411,10 +411,10 @@ function pHeader($subtitle,$next,$action='set',$param='',$forcejqueryurl='') /** * Print HTML footer of install pages * - * @param string $nonext No button "Next step" + * @param integer $nonext No button "Next step" * @param string $setuplang Language code * @param string $jscheckfunction Add a javascript check function - * @param string $withpleasewait Add also please wait tags + * @param integer $withpleasewait Add also please wait tags * @return void */ function pFooter($nonext=0,$setuplang='',$jscheckfunction='', $withpleasewait=0) diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index a7226c1621d..f32506f54d1 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -2407,7 +2407,7 @@ function migrate_commande_deliveryaddress($db,$langs,$conf) * @param DoliDB $db Database handler * @param Translate $langs Object langs * @param Conf $conf Object conf - * @return void + * @return integer|null */ function migrate_restore_missing_links($db,$langs,$conf) { diff --git a/htdocs/mailmanspip/class/mailmanspip.class.php b/htdocs/mailmanspip/class/mailmanspip.class.php index d874e539164..f7ae2608da5 100644 --- a/htdocs/mailmanspip/class/mailmanspip.class.php +++ b/htdocs/mailmanspip/class/mailmanspip.class.php @@ -166,7 +166,7 @@ class MailmanSpip /** * Fonction qui donne les droits redacteurs dans spip * - * @param object $object Object with data (->firstname, ->lastname, ->email and ->login) + * @param Adherent $object Object with data (->firstname, ->lastname, ->email and ->login) * @return int =0 if KO, >0 if OK */ function add_to_spip($object) @@ -208,7 +208,7 @@ class MailmanSpip /** * Fonction qui enleve les droits redacteurs dans spip * - * @param object $object Object with data (->login) + * @param Adherent $object Object with data (->login) * @return int =0 if KO, >0 if OK */ function del_to_spip($object) @@ -297,7 +297,7 @@ class MailmanSpip /** * Subscribe an email to all mailing-lists * - * @param object $object Object with data (->email, ->pass, ->element, ->type) + * @param Adherent $object Object with data (->email, ->pass, ->element, ->type) * @param array $listes To force mailing-list (string separated with ,) * @return int <0 if KO, >=0 if OK */ @@ -369,7 +369,7 @@ class MailmanSpip * Unsubscribe an email from all mailing-lists * Used when a user is resiliated * - * @param object $object Object with data (->email, ->pass, ->element, ->type) + * @param Adherent $object Object with data (->email, ->pass, ->element, ->type) * @param array $listes To force mailing-list (string separated with ,) * @return int <0 if KO, >=0 if OK */ diff --git a/htdocs/opensurvey/fonctions.php b/htdocs/opensurvey/fonctions.php index b65abcaffe9..5b11a821b7c 100644 --- a/htdocs/opensurvey/fonctions.php +++ b/htdocs/opensurvey/fonctions.php @@ -184,7 +184,7 @@ function getUrlSondage($id, $admin = false) * Generate a random id * * @param string $car Char to generate key - * @return void + * @return string */ function dol_survey_random($car) { diff --git a/htdocs/product/canvas/product/actions_card_product.class.php b/htdocs/product/canvas/product/actions_card_product.class.php index 44c28f383b5..3537dc288a9 100644 --- a/htdocs/product/canvas/product/actions_card_product.class.php +++ b/htdocs/product/canvas/product/actions_card_product.class.php @@ -68,7 +68,7 @@ class ActionsCardProduct * Assign custom values for canvas (for example into this->tpl to be used by templates) * * @param string $action Type of action - * @param string $id Id of object + * @param integer $id Id of object * @param string $ref Ref of object * @return void */ diff --git a/htdocs/product/class/html.formproduct.class.php b/htdocs/product/class/html.formproduct.class.php index 69e999b18ea..d67b575023b 100644 --- a/htdocs/product/class/html.formproduct.class.php +++ b/htdocs/product/class/html.formproduct.class.php @@ -161,7 +161,7 @@ class FormProduct * @param string $measuring_style Unit to show: weight, size, surface, volume * @param string $default Force unit * @param int $adddefault Add empty unit called "Default" - * @return void + * @return string */ function load_measuring_units($name='measuring_units', $measuring_style='', $default='0', $adddefault=0) { diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 0cb72355bb0..21293fac121 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -1031,7 +1031,7 @@ class Project extends CommonObject * @param bool $clone_task_file clone file of task (if task are copied) * @param bool $clone_note clone note of project * @param bool $move_date move task date on clone - * @param bool $notrigger no trigger flag + * @param integer $notrigger no trigger flag * @return int New id of clone */ function createFromClone($fromid,$clone_contact=false,$clone_task=true,$clone_project_file=false,$clone_task_file=false,$clone_note=true,$move_date=true,$notrigger=0) diff --git a/htdocs/support/inc.php b/htdocs/support/inc.php index 58b9de1d38c..c5f74469faa 100644 --- a/htdocs/support/inc.php +++ b/htdocs/support/inc.php @@ -225,7 +225,7 @@ function pHeader($soutitre,$next,$action='none') /** * Print HTML footer * - * @param string $nonext No button "Next step" + * @param integer $nonext No button "Next step" * @param string $setuplang Language code * @return void */ diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 4ced71a7022..e8f3487a32c 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -1066,7 +1066,7 @@ class User extends CommonObject /** * Assign rights by default * - * @return Si erreur <0, si ok renvoi le nbre de droits par defaut positionnes + * @return integer erreur <0, si ok renvoi le nbre de droits par defaut positionnes */ function set_default_rights() { @@ -1621,7 +1621,7 @@ class User extends CommonObject /** * Update clicktodial info * - * @return void + * @return integer */ function update_clicktodial() { @@ -1777,8 +1777,8 @@ class User extends CommonObject * * @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto) * @param string $option On what the link point to - * @param boolean $infologin Add connection info to the tooltip - * @param string $notooltip 1=Disable tooltip + * @param integer $infologin Add connection info to the tooltip + * @param integer $notooltip 1=Disable tooltip * @param int $maxlen Max length of visible user name * @return string String with URL */ From 435be30047efbd80f8d2695dec1fac03769fd560 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 Mar 2015 00:35:17 +0100 Subject: [PATCH 301/429] Clean code --- htdocs/commande/class/commande.class.php | 13 +++++++------ test/phpunit/CommandeTest.php | 2 ++ test/phpunit/FactureTest.php | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index b8d47ddf95c..1bcfa1ee7cb 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -777,15 +777,16 @@ class Commande extends CommonOrder } // update ref - if (empty($this->ref)) - { - $this->ref = '(PROV'.$this->id.')'; - } - $sql = 'UPDATE '.MAIN_DB_PREFIX."commande SET ref='".$this->ref."' WHERE rowid=".$this->id; + $initialref='(PROV'.$this->id.')'; + if (! empty($this->ref)) $initialref=$this->ref; + + $sql = 'UPDATE '.MAIN_DB_PREFIX."commande SET ref='".$this->db->escape($initialref)."' WHERE rowid=".$this->id; if ($this->db->query($sql)) { if ($this->id) { + $this->ref = $initialref; + // Add object linked if (is_array($this->linked_objects) && ! empty($this->linked_objects)) { @@ -803,7 +804,7 @@ class Commande extends CommonOrder { // On recupere les differents contact interne et externe $prop = new Propal($this->db); - $prop->fetch($origin_id); + $prop->fetch($origin_id); // We get ids of sales representatives of proposal $this->userid = $prop->getIdcontact('internal', 'SALESREPFOLL'); diff --git a/test/phpunit/CommandeTest.php b/test/phpunit/CommandeTest.php index 0bb7788d33f..aaba882cc87 100644 --- a/test/phpunit/CommandeTest.php +++ b/test/phpunit/CommandeTest.php @@ -77,6 +77,8 @@ class CommandeTest extends PHPUnit_Framework_TestCase global $conf,$user,$langs,$db; $db->begin(); // This is to have all actions inside a transaction even if test launched without suite. + if (empty($conf->commande->enabled)) { print __METHOD__." module customer order must be enabled.\n"; die(); } + print __METHOD__."\n"; } diff --git a/test/phpunit/FactureTest.php b/test/phpunit/FactureTest.php index 3248be7104c..d2ad97454bf 100644 --- a/test/phpunit/FactureTest.php +++ b/test/phpunit/FactureTest.php @@ -76,6 +76,7 @@ class FactureTest extends PHPUnit_Framework_TestCase { global $conf,$user,$langs,$db; + if (empty($conf->facture->enabled)) { print __METHOD__." module customer invoice must be enabled.\n"; die(); } if (! empty($conf->ecotaxdeee->enabled)) { print __METHOD__." ecotaxdeee module must not be enabled.\n"; die(); } $db->begin(); // This is to have all actions inside a transaction even if test launched without suite. From bfd979224fdbd3ae2b8e2d0482657bb017ab223b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 Mar 2015 10:38:25 +0100 Subject: [PATCH 302/429] Var not declared --- htdocs/core/class/ldap.class.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/htdocs/core/class/ldap.class.php b/htdocs/core/class/ldap.class.php index ca0cbab3925..2783c55ee03 100644 --- a/htdocs/core/class/ldap.class.php +++ b/htdocs/core/class/ldap.class.php @@ -2,7 +2,7 @@ /* Copyright (C) 2004 Rodolphe Quiedeville * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2005-2011 Regis Houssin - * Copyright (C) 2006-2011 Laurent Destailleur + * Copyright (C) 2006-2015 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 @@ -25,11 +25,12 @@ */ /** - * \class Ldap - * \brief Class to manage LDAP features + * Class to manage LDAP features */ class Ldap { + var $error; + /** * Tableau des serveurs (IP addresses ou nom d'hotes) */ @@ -78,7 +79,7 @@ class Ldap var $name; var $firstname; var $login; - var $phone; + var $phone; var $skype; var $fax; var $mail; @@ -414,9 +415,10 @@ class Ldap } else { - $this->error=@ldap_error($this->connection); - $this->errno=@ldap_errno($this->connection); - dol_syslog(get_class($this)."::add failed: ".$this->errno." ".$this->error, LOG_ERR); + $this->ldapErrorCode = @ldap_errno($this->connection); + $this->ldapErrorText = @ldap_error($this->connection); + $this->error=$this->ldapErrorCode." ".$this->ldapErrorText; + dol_syslog(get_class($this)."::add failed: ".$this->error, LOG_ERR); return -1; } } From 689d27055243b529295eb95dd21f3f35531c2ea2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 Mar 2015 10:47:20 +0100 Subject: [PATCH 303/429] Doxygen --- htdocs/core/class/commonobject.class.php | 66 ++++++++++++++++-------- htdocs/core/class/fiscalyear.class.php | 2 +- 2 files changed, 45 insertions(+), 23 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index fe9cfd24013..f12938bda28 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -35,46 +35,68 @@ */ abstract class CommonObject { - public $db; + /** + * @var db Database handler (result of a new DoliDB) + */ + public $db; /** - * @var error Error string - * @deprecated Use instead the array of error strings + * @var error Error string + * @deprecated Use instead the array of error strings */ public $error; /** - * @var errors Aray of error string + * @var errors Array of error string */ public $errors; - public $canvas; // Contains canvas name if it is - public $context=array(); // Use to pass context information + /** + * @var string Column name of the ref field. + */ + protected $table_ref_field = ''; + + /** + * @var context Can be used to pass information when only object is provied to method + */ + public $context=array(); + + /** + * @var context Contains canvas name if record is an alternative canvas record + */ + public $canvas; + + /** + * @var import_key Key value used to track if data is coming from import wizard + */ + public $import_key; + + /** + * @var array_options Contains data to manage extrafields + */ + public $array_options=array(); + + /** + * @var linkedObjectsIds Array of linked objects ids. Loaded by ->fetchObjectLinked + */ + public $linkedObjectsIds; + + /** + * @var linkedObjectsIds Array of linked objects. Loaded by ->fetchObjectLinked + */ + public $linkedObjects; + + + // Following var are used by some objects only. We keep this property here in CommonObject to be able to provide common method using them. public $name; public $lastname; public $firstname; public $civility_id; - public $import_key; - - public $array_options=array(); - - /** - * @var Societe - */ public $thirdparty; - public $linkedObjectsIds; // Loaded by ->fetchObjectLinked - public $linkedObjects; // Loaded by ->fetchObjectLinked - // No constructor as it is an abstract class - /** - * Column name of the ref field. - * @var string - */ - protected $table_ref_field = ''; - /** * Check an object id/ref exists diff --git a/htdocs/core/class/fiscalyear.class.php b/htdocs/core/class/fiscalyear.class.php index 1abde51c263..a48fb4b15cf 100644 --- a/htdocs/core/class/fiscalyear.class.php +++ b/htdocs/core/class/fiscalyear.class.php @@ -26,7 +26,7 @@ require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php'; /** * Class to manage fiscal year */ -class Fiscalyear +class Fiscalyear extends CommonObject { public $element='fiscalyear'; public $table_element='accounting_fiscalyear'; From 4fffeb3a89d51d828301528980520c87a510e7b0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 Mar 2015 10:52:27 +0100 Subject: [PATCH 304/429] Clean code --- htdocs/adherents/class/cotisation.class.php | 10 +++++----- htdocs/core/class/commonobject.class.php | 11 ++++++----- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/htdocs/adherents/class/cotisation.class.php b/htdocs/adherents/class/cotisation.class.php index 2e1966c371e..ee9358b51da 100644 --- a/htdocs/adherents/class/cotisation.class.php +++ b/htdocs/adherents/class/cotisation.class.php @@ -1,6 +1,6 @@ - * Copyright (C) 2006-2008 Laurent Destailleur + * Copyright (C) 2006-2015 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 @@ -90,7 +90,7 @@ class Cotisation extends CommonObject } else { - $this->error=$this->db->error(); + $this->error=$this->db->lasterror(); return -1; } } @@ -140,7 +140,7 @@ class Cotisation extends CommonObject } else { - $this->error=$this->db->error(); + $this->error=$this->db->lasterror(); return -1; } } @@ -181,7 +181,7 @@ class Cotisation extends CommonObject else { $this->db->rollback(); - $this->error=$this->db->error(); + $this->error=$this->db->lasterror(); return -1; } } @@ -217,7 +217,7 @@ class Cotisation extends CommonObject $result=$member->fetch($this->fk_adherent); $result=$member->update_end_date($user); - if ($accountline->rowid > 0) // If we found bank account line (this means this->fk_bank defined) + if ($accountline->id > 0) // If we found bank account line (this means this->fk_bank defined) { $result=$accountline->delete($user); // Return false if refused because line is conciliated if ($result > 0) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index f12938bda28..1fa6e924325 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -51,11 +51,6 @@ abstract class CommonObject */ public $errors; - /** - * @var string Column name of the ref field. - */ - protected $table_ref_field = ''; - /** * @var context Can be used to pass information when only object is provied to method */ @@ -86,6 +81,12 @@ abstract class CommonObject */ public $linkedObjects; + /** + * @var string Column name of the ref field. + */ + protected $table_ref_field = ''; + + // Following var are used by some objects only. We keep this property here in CommonObject to be able to provide common method using them. From 84bea6166ecf2aa1621c1a3384c026cce5328c87 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 Mar 2015 10:55:45 +0100 Subject: [PATCH 305/429] Doxygen --- htdocs/core/class/commonobject.class.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 1fa6e924325..97157c6d408 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -36,48 +36,48 @@ abstract class CommonObject { /** - * @var db Database handler (result of a new DoliDB) + * @var DoliDb Database handler (result of a new DoliDB) */ public $db; /** - * @var error Error string + * @var string Error string * @deprecated Use instead the array of error strings */ public $error; /** - * @var errors Array of error string + * @var string[] Array of error strings */ public $errors; /** - * @var context Can be used to pass information when only object is provied to method + * @var string Can be used to pass information when only object is provied to method */ public $context=array(); /** - * @var context Contains canvas name if record is an alternative canvas record + * @var string Contains canvas name if record is an alternative canvas record */ public $canvas; /** - * @var import_key Key value used to track if data is coming from import wizard + * @var string Key value used to track if data is coming from import wizard */ public $import_key; /** - * @var array_options Contains data to manage extrafields + * @var mixed Contains data to manage extrafields */ public $array_options=array(); /** - * @var linkedObjectsIds Array of linked objects ids. Loaded by ->fetchObjectLinked + * @var int[] Array of linked objects ids. Loaded by ->fetchObjectLinked */ public $linkedObjectsIds; /** - * @var linkedObjectsIds Array of linked objects. Loaded by ->fetchObjectLinked + * @var mixed Array of linked objects. Loaded by ->fetchObjectLinked */ public $linkedObjects; From 6e251690ab1ac680e7d465eb7fa5264e06f122fa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 Mar 2015 11:23:45 +0100 Subject: [PATCH 306/429] Doxygen --- htdocs/compta/bank/class/account.class.php | 4 +- htdocs/contrat/class/contrat.class.php | 67 ++++++------------- .../modules/modAskPriceSupplier.class.php | 2 +- .../core/modules/modExpenseReport.class.php | 9 ++- htdocs/core/modules/modFTP.class.php | 2 +- htdocs/core/modules/modFicheinter.class.php | 2 +- htdocs/core/modules/modGeoIPMaxmind.class.php | 2 +- htdocs/core/modules/modResource.class.php | 2 +- htdocs/expensereport/ajax/ajaxprojet.php | 1 + htdocs/expensereport/card.php | 13 ++-- .../class/expensereport.class.php | 7 +- .../class/expensereportstats.class.php | 2 +- htdocs/expensereport/export_csv.php | 1 + htdocs/expensereport/index.php | 1 + htdocs/expensereport/info.php | 2 +- htdocs/expensereport/list.php | 1 + 16 files changed, 51 insertions(+), 67 deletions(-) diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index c0704ef8f7a..900a970d949 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -39,12 +39,12 @@ class Account extends CommonObject public $table_element='bank_account'; /** - * //TODO: Discuss this. $rowid is preferred over $id - * @var + * @var int Use id instead of rowid * @deprecated */ var $rowid; var $id; + var $ref; var $label; //! 1=Compte courant/check/carte, 2=Compte liquide, 0=Compte épargne diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index daac348e920..dcabc4e0b52 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -89,23 +89,7 @@ class Contrat extends CommonObject var $product; /** - * TODO: Which is the correct one? - * Author of the contract - * @var - */ - var $user_author; - - /** - * TODO: Which is the correct one? - * Author of the contract - * @var User - */ - public $user_creation; - - /** - * TODO: Which is the correct one? - * Author of the contract - * @var int + * @var int Id of user author of the contract */ public $fk_user_author; @@ -117,38 +101,37 @@ class Contrat extends CommonObject public $user_author_id; /** - * @var User + * @var User Object user that create the contract. Set by the info method. + */ + public $user_creation; + + /** + * @var User Object user that close the contract. Set by the info method. */ public $user_cloture; /** - * Date of creation - * @var int + * @var int Date of creation */ var $date_creation; /** - * Date of last modification - * Not filled until you call ->info() - * @var int + * @var int Date of last modification. Not filled until you call ->info() */ public $date_modification; /** - * Date of validation - * @var int + * @var int Date of validation */ var $date_validation; /** - * Date when contract was signed - * @var int + * @var int Date when contract was signed */ var $date_contrat; /** - * Date of contract closure - * @var int + * @var int Date of contract closure * @deprecated we close contract lines, not a contract */ var $date_cloture; @@ -157,21 +140,15 @@ class Contrat extends CommonObject var $commercial_suivi_id; /** - * @deprecated Use note_private or note_public instead - */ - var $note; - - /** - * Private note - * @var string + * @var string Private note */ var $note_private; /** - * Public note - * @var string + * @var string Public note */ var $note_public; + var $modelpdf; /** @@ -184,8 +161,7 @@ class Contrat extends CommonObject var $extraparams=array(); /** - * Contract lines - * @var ContratLigne[] + * @var ContratLigne[] Contract lines */ var $lines=array(); @@ -569,7 +545,6 @@ class Contrat extends CommonObject $this->commercial_signature_id = $result["fk_commercial_signature"]; $this->commercial_suivi_id = $result["fk_commercial_suivi"]; - $this->note = $result["note_private"]; // deprecated $this->note_private = $result["note_private"]; $this->note_public = $result["note_public"]; $this->modelpdf = $result["model_pdf"]; @@ -726,7 +701,7 @@ class Contrat extends CommonObject // Retreive all extrafield for propal // fetch optionals attributes and labels $line->fetch_optionals($line->id,$extralabelsline); - + $this->lines[] = $line; //dol_syslog("1 ".$line->desc); @@ -822,13 +797,13 @@ class Contrat extends CommonObject if ($line->statut == 4 && (! empty($line->date_fin_prevue) && $line->date_fin_prevue < $now)) $this->nbofservicesexpired++; if ($line->statut == 5) $this->nbofservicesclosed++; - + // Retreive all extrafield for propal // fetch optionals attributes and labels - + $line->fetch_optionals($line->id,$extralabelsline); - - + + $this->lines[] = $line; $total_ttc+=$objp->total_ttc; diff --git a/htdocs/core/modules/modAskPriceSupplier.class.php b/htdocs/core/modules/modAskPriceSupplier.class.php index 4614b0b819d..451caccf649 100644 --- a/htdocs/core/modules/modAskPriceSupplier.class.php +++ b/htdocs/core/modules/modAskPriceSupplier.class.php @@ -21,7 +21,7 @@ */ /** - * \defgroup askpricesupplier Module to request supplier price proposals + * \defgroup askpricesupplier Module askpricesupplier * \brief Module to request supplier price proposals * \file htdocs/core/modules/modAskPriceSupplier.class.php * \ingroup askpricesupplier diff --git a/htdocs/core/modules/modExpenseReport.class.php b/htdocs/core/modules/modExpenseReport.class.php index 53289c512ff..dfe8180e0c1 100755 --- a/htdocs/core/modules/modExpenseReport.class.php +++ b/htdocs/core/modules/modExpenseReport.class.php @@ -17,14 +17,13 @@ */ /** - * \defgroup Indicateurs - * \brief Module indicateurs - * Such a file must be copied into htdocs/includes/module directory. + * \defgroup expensereport Module expensereport + * \brief Module to manage expense report. Replace old module Deplacement. */ /** - * \file htdocs/indicateurs/core/modules/modExpenseReport.class.php - * \ingroup indicateur + * \file htdocs/core/modules/modExpenseReport.class.php + * \ingroup expensereport * \brief Description and activation file for module ExpenseReport */ include_once(DOL_DOCUMENT_ROOT ."/core/modules/DolibarrModules.class.php"); diff --git a/htdocs/core/modules/modFTP.class.php b/htdocs/core/modules/modFTP.class.php index 2d6e1689ba9..38b16127c90 100644 --- a/htdocs/core/modules/modFTP.class.php +++ b/htdocs/core/modules/modFTP.class.php @@ -17,7 +17,7 @@ */ /** - * \defgroup ftp Module FTP + * \defgroup ftp Module ftp * \brief Module for FTP client module * \file htdocs/core/modules/modFTP.class.php * \ingroup ftp diff --git a/htdocs/core/modules/modFicheinter.class.php b/htdocs/core/modules/modFicheinter.class.php index 7c54679bd9c..b41b291711a 100644 --- a/htdocs/core/modules/modFicheinter.class.php +++ b/htdocs/core/modules/modFicheinter.class.php @@ -21,7 +21,7 @@ */ /** - * \defgroup ficheinter Module intervention cards + * \defgroup ficheinter Module Interventions * \brief Module to manage intervention cards * \file htdocs/core/modules/modFicheinter.class.php * \ingroup ficheinter diff --git a/htdocs/core/modules/modGeoIPMaxmind.class.php b/htdocs/core/modules/modGeoIPMaxmind.class.php index 06d9d8f7f5e..cfe7acbdfa6 100644 --- a/htdocs/core/modules/modGeoIPMaxmind.class.php +++ b/htdocs/core/modules/modGeoIPMaxmind.class.php @@ -16,7 +16,7 @@ */ /** - * \defgroup geoip Module GeoIP + * \defgroup geoip Module geoipmaxmind * \brief Module to make geoip conversions * \file htdocs/core/modules/modGeoIPMaxmind.class.php * \ingroup geoip diff --git a/htdocs/core/modules/modResource.class.php b/htdocs/core/modules/modResource.class.php index 26fe0b4bd31..9acebd5d90d 100644 --- a/htdocs/core/modules/modResource.class.php +++ b/htdocs/core/modules/modResource.class.php @@ -17,7 +17,7 @@ */ /** - * \defgroup resource Resource module + * \defgroup resource Module resource * \brief Resource module descriptor. * \file core/modules/modResource.class.php * \ingroup resource diff --git a/htdocs/expensereport/ajax/ajaxprojet.php b/htdocs/expensereport/ajax/ajaxprojet.php index 77d22d1ac90..6b9dd7e062f 100755 --- a/htdocs/expensereport/ajax/ajaxprojet.php +++ b/htdocs/expensereport/ajax/ajaxprojet.php @@ -20,6 +20,7 @@ /** * \file htdocs/expensereport/ajax/ajaxprojet.php + * \ingroup expensereport * \brief File to return Ajax response on third parties request */ diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index c71705628b6..fad813a570b 100755 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -19,7 +19,8 @@ /** * \file htdocs/expensereport/card.php - * \brief Page for trip and expense card + * \ingroup expensereport + * \brief Page for trip and expense report card */ $res=0; @@ -1135,7 +1136,7 @@ if ($action == 'create') print ''; print ''; } - + // Public note print ''; print '' . $langs->trans('NotePublic') . ''; @@ -1155,7 +1156,7 @@ if ($action == 'create') print $doleditor->Create(1); print ''; } - + print ''; print ''; @@ -1286,7 +1287,7 @@ else print ''; } - + // Public note print ''; print '' . $langs->trans('NotePublic') . ''; @@ -1295,7 +1296,7 @@ else $doleditor = new DolEditor('note_public', $object->note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70); print $doleditor->Create(1); print ''; - + // Private note if (empty($user->societe_id)) { print ''; @@ -1306,7 +1307,7 @@ else print $doleditor->Create(1); print ''; } - + print ''; dol_fiche_end(); diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index e43c6dd4507..0d30602987f 100755 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -16,6 +16,11 @@ * along with this program. If not, see . */ +/** + * \file htdocs/expensereport/class/expensereport.class.php + * \ingroup expensereport + * \brief File to manage Expense Reports + */ require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php'; /** @@ -1420,7 +1425,7 @@ class ExpenseReport extends CommonObject return $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref); } - + /** * List of types * diff --git a/htdocs/expensereport/class/expensereportstats.class.php b/htdocs/expensereport/class/expensereportstats.class.php index 140e492972e..57c970b9fc8 100644 --- a/htdocs/expensereport/class/expensereportstats.class.php +++ b/htdocs/expensereport/class/expensereportstats.class.php @@ -19,7 +19,7 @@ /** * \file htdocs/expensereport/class/expensereportstats.class.php - * \ingroup ExpenseReport + * \ingroup expensereport * \brief Fichier de la classe de gestion des stats des expensereport et notes de frais */ include_once DOL_DOCUMENT_ROOT . '/core/class/stats.class.php'; diff --git a/htdocs/expensereport/export_csv.php b/htdocs/expensereport/export_csv.php index 8228eb68532..ba3621d1ac0 100755 --- a/htdocs/expensereport/export_csv.php +++ b/htdocs/expensereport/export_csv.php @@ -17,6 +17,7 @@ /** * \file htdocs/expensereport/index.php + * \ingroup expensereport * \brief Page list of expenses */ diff --git a/htdocs/expensereport/index.php b/htdocs/expensereport/index.php index 62f5cbe89fc..4af39adb633 100644 --- a/htdocs/expensereport/index.php +++ b/htdocs/expensereport/index.php @@ -21,6 +21,7 @@ /** * \file htdocs/expensereport/index.php + * \ingroup expensereport * \brief Page list of expenses */ diff --git a/htdocs/expensereport/info.php b/htdocs/expensereport/info.php index e548c6521d7..c1e0b598e7e 100644 --- a/htdocs/expensereport/info.php +++ b/htdocs/expensereport/info.php @@ -19,7 +19,7 @@ /** * \file htdocs/expensereport/info.php - * \ingroup trip + * \ingroup expensereport * \brief Page to show a trip information */ diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index 6d82b86e4af..9ef9c05a328 100755 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -21,6 +21,7 @@ /** * \file htdocs/expensereport/index.php + * \ingroup expensereport * \brief list of expense reports */ From 166fda490969ab1d92e4c96fe55d493c30a588a1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 Mar 2015 11:26:23 +0100 Subject: [PATCH 307/429] Normalize class names --- .../class/askpricesupplier.class.php | 26 +++++++++---------- htdocs/core/tpl/objectline_create.tpl.php | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php index ee0ad10d2e3..844e851a20c 100644 --- a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php +++ b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php @@ -185,7 +185,7 @@ class AskPriceSupplier extends CommonObject $price = $prod->price; } - $line = new AskPriceSupplierLigne($this->db); + $line = new AskPriceSupplierLine($this->db); $line->fk_product=$idproduct; $line->desc=$productdesc; @@ -225,7 +225,7 @@ class AskPriceSupplier extends CommonObject return -5; } - $askpricesupplierligne=new AskPriceSupplierLigne($this->db); + $askpricesupplierligne=new AskPriceSupplierLine($this->db); $askpricesupplierligne->fk_askpricesupplier=$this->id; $askpricesupplierligne->fk_remise_except=$remise->id; $askpricesupplierligne->desc=$remise->description; // Description ligne @@ -376,7 +376,7 @@ class AskPriceSupplier extends CommonObject } // Insert line - $this->line=new AskPriceSupplierLigne($this->db); + $this->line=new AskPriceSupplierLine($this->db); $this->line->fk_askpricesupplier=$this->id; $this->line->label=$label; @@ -525,10 +525,10 @@ class AskPriceSupplier extends CommonObject } // Update line - $this->line=new AskPriceSupplierLigne($this->db); + $this->line=new AskPriceSupplierLine($this->db); // Stock previous line records - $staticline=new AskPriceSupplierLigne($this->db); + $staticline=new AskPriceSupplierLine($this->db); $staticline->fetch($rowid); $this->line->oldline = $staticline; @@ -621,7 +621,7 @@ class AskPriceSupplier extends CommonObject { if ($this->statut == 0) { - $line=new AskPriceSupplierLigne($this->db); + $line=new AskPriceSupplierLine($this->db); // For triggers $line->fetch($lineid); @@ -1106,7 +1106,7 @@ class AskPriceSupplier extends CommonObject { $objp = $this->db->fetch_object($result); - $line = new AskPriceSupplierLigne($this->db); + $line = new AskPriceSupplierLine($this->db); $line->rowid = $objp->rowid; $line->fk_askpricesupplier = $objp->fk_askpricesupplier; @@ -2088,7 +2088,7 @@ class AskPriceSupplier extends CommonObject $xnbp = 0; while ($xnbp < $nbp) { - $line=new AskPriceSupplierLigne($this->db); + $line=new AskPriceSupplierLine($this->db); $line->desc=$langs->trans("Description")." ".$xnbp; $line->qty=1; $line->subprice=100; @@ -2287,7 +2287,7 @@ class AskPriceSupplier extends CommonObject { $obj = $this->db->fetch_object($resql); - $this->lines[$i] = new AskPriceSupplierLigne($this->db); + $this->lines[$i] = new AskPriceSupplierLine($this->db); $this->lines[$i]->id = $obj->rowid; // for backward compatibility $this->lines[$i]->rowid = $obj->rowid; $this->lines[$i]->label = $obj->custom_label; @@ -2412,10 +2412,10 @@ class AskPriceSupplier extends CommonObject /** - * \class AskPriceSupplierLigne + * \class AskPriceSupplierLine * \brief Class to manage askpricesupplier lines */ -class AskPriceSupplierLigne extends CommonObject +class AskPriceSupplierLine extends CommonObject { var $db; var $error; @@ -2689,7 +2689,7 @@ class AskPriceSupplierLigne extends CommonObject $this->db->begin(); $sql = "DELETE FROM ".MAIN_DB_PREFIX."askpricesupplierdet WHERE rowid = ".$this->rowid; - dol_syslog("AskPriceSupplierLigne::delete", LOG_DEBUG); + dol_syslog("AskPriceSupplierLine::delete", LOG_DEBUG); if ($this->db->query($sql) ) { @@ -2852,7 +2852,7 @@ class AskPriceSupplierLigne extends CommonObject $sql.= ",total_ttc=".price2num($this->total_ttc,'MT').""; $sql.= " WHERE rowid = ".$this->rowid; - dol_syslog("AskPriceSupplierLigne::update_total", LOG_DEBUG); + dol_syslog("AskPriceSupplierLine::update_total", LOG_DEBUG); $resql=$this->db->query($sql); if ($resql) diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index c7c6f455168..027e6b3d816 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -274,7 +274,7 @@ else { $newline = new PropaleLigne($this->db); } elseif ($this->table_element_line=='askpricesupplierdet') { - $newline = new AskPriceSupplierLigne($this->db); + $newline = new AskPriceSupplierLine($this->db); } elseif ($this->table_element_line=='facturedet') { $newline = new FactureLigne($this->db); From c700d8a8ec637a2fd9ab9d4f5951798a6627e7bb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 Mar 2015 11:59:44 +0100 Subject: [PATCH 308/429] Fix remove warning --- htdocs/core/boxes/box_activity.php | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/htdocs/core/boxes/box_activity.php b/htdocs/core/boxes/box_activity.php index 66753f10f04..515cf26241e 100644 --- a/htdocs/core/boxes/box_activity.php +++ b/htdocs/core/boxes/box_activity.php @@ -233,7 +233,7 @@ class box_activity extends ModeleBoxes 'url' => DOL_URL_ROOT."/compta/facture/list.php?".$billurl."&mainmenu=accountancy&leftmenu=customers_bills", ); $totalnb += $data[$j]->nb; - $this->info_box_contents[$line][3] = array( + $this->info_box_contents[$line][3] = array( 'td' => 'align="right"', 'text' => price($data[$j]->Mnttot,1,$langs,0,0,-1,$conf->currency), ); @@ -342,7 +342,8 @@ class box_activity extends ModeleBoxes } // list the summary of the propals - if (! empty($conf->propal->enabled) && $user->rights->propal->lire) { + if (! empty($conf->propal->enabled) && $user->rights->propal->lire) + { include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; $propalstatic=new Propal($db); @@ -350,7 +351,8 @@ class box_activity extends ModeleBoxes $filename = '/boxactivity-propal'.$fileid; $refresh = dol_cache_refresh($cachedir, $filename, $cachetime); $data = array(); - if ($refresh) { + if ($refresh) + { $sql = "SELECT p.fk_statut, SUM(p.total) as Mnttot, COUNT(*) as nb"; $sql.= " FROM (".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."propal as p"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; @@ -365,8 +367,8 @@ class box_activity extends ModeleBoxes $sql.= " ORDER BY p.fk_statut DESC"; $result = $db->query($sql); - - if ($result) { + if ($result) + { $num = $db->num_rows($result) + $line; $j=0; while ($j < $num) { @@ -380,12 +382,17 @@ class box_activity extends ModeleBoxes } else { dol_print_error($db); } - } else { + } + else + { $data = dol_readcachefile($cachedir, $filename); } - if (! empty($data)) { + + if (! empty($data)) + { $j=0; - while ($line < count($data)) { + while ($line < count($data)) + { $this->info_box_contents[$line][] = array( 'td' => 'align="left" width="16"', 'url' => DOL_URL_ROOT."/comm/propal/list.php?mainmenu=commercial&leftmenu=propals&viewstatut=".$data[$j]->fk_statut, @@ -393,7 +400,6 @@ class box_activity extends ModeleBoxes 'logo' => 'object_propal' ); - $objp = $db->fetch_object($result); $this->info_box_contents[$line][] = array( 'td' => 'align="left"', 'text' => $langs->trans("Proposals")." ".$propalstatic->LibStatut($data[$j]->fk_statut,0), From 9e9a8894ea17c198fee8e3e2d68dd8d81d4de6d8 Mon Sep 17 00:00:00 2001 From: jean Date: Tue, 17 Mar 2015 14:20:08 +0100 Subject: [PATCH 309/429] Add global $langs to method, necessary for triggers to function correctly --- htdocs/fourn/class/fournisseur.product.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index 3d12352903f..4db72d48814 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -154,7 +154,7 @@ class ProductFournisseur extends Product */ function update_buyprice($qty, $buyprice, $user, $price_base_type, $fourn, $availability, $ref_fourn, $tva_tx, $charges=0, $remise_percent=0, $remise=0, $newnpr=0) { - global $conf; + global $conf, $langs; // Clean parameter if (empty($qty)) $qty=0; From 37c216cfe403d7b1c669d9e51cfbb20694f48d51 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 17 Mar 2015 15:43:11 +0100 Subject: [PATCH 310/429] Fix limit for very slow os. --- htdocs/install/upgrade.php | 2 +- htdocs/install/upgrade2.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php index 89e54ef4443..22c18c15fee 100644 --- a/htdocs/install/upgrade.php +++ b/htdocs/install/upgrade.php @@ -47,7 +47,7 @@ $ok = 0; // Ne fonctionne que si on est pas en safe_mode. $err=error_reporting(); error_reporting(0); -@set_time_limit(120); +@set_time_limit(300); error_reporting($err); diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index a7226c1621d..0c96c3c6d5c 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -55,7 +55,7 @@ $error = 0; // Ne fonctionne que si on est pas en safe_mode. $err=error_reporting(); error_reporting(0); -@set_time_limit(120); +@set_time_limit(300); error_reporting($err); $setuplang=GETPOST("selectlang",'',3)?GETPOST("selectlang",'',3):'auto'; From 4e839524855c3d8806d41b81b0f8f74410901126 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 18 Mar 2015 05:07:32 +0100 Subject: [PATCH 311/429] Add payment on donation --- htdocs/compta/dons/card.php | 71 +- htdocs/compta/dons/class/don.class.php | 30 +- .../dons/class/paymentdonation.class.php | 607 ++++++++++++++++++ htdocs/compta/dons/payment.php | 313 +++++++++ .../install/mysql/migration/3.7.0-3.8.0.sql | 20 +- htdocs/install/mysql/tables/llx_don.sql | 8 +- .../mysql/tables/llx_payment_donation.sql | 33 + 7 files changed, 1041 insertions(+), 41 deletions(-) create mode 100644 htdocs/compta/dons/class/paymentdonation.class.php create mode 100644 htdocs/compta/dons/payment.php create mode 100644 htdocs/install/mysql/tables/llx_payment_donation.sql diff --git a/htdocs/compta/dons/card.php b/htdocs/compta/dons/card.php index a4e68fbc4de..0c4c92cecd7 100644 --- a/htdocs/compta/dons/card.php +++ b/htdocs/compta/dons/card.php @@ -142,7 +142,6 @@ if ($action == 'add') $object->societe = GETPOST("societe"); $object->address = GETPOST("address"); $object->amount = price2num(GETPOST("amount")); - $object->town = GETPOST("town"); $object->zip = GETPOST("zipcode"); $object->town = GETPOST("town"); $object->country_id = GETPOST('country_id', 'int'); @@ -196,7 +195,7 @@ if ($action == 'set_cancel') } if ($action == 'set_paid') { - if ($object->set_paye($id, $modepaiement) >= 0) + if ($object->set_paye($id, $modepayment) >= 0) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); exit; @@ -260,7 +259,7 @@ $formcompany = new FormCompany($db); /* ************************************************************************** */ /* */ -/* Creation */ +/* Donation card in create mode */ /* */ /* ************************************************************************** */ @@ -353,7 +352,7 @@ if ($action == 'create') /* ************************************************************ */ /* */ -/* Fiche don en mode edition */ +/* Donation card in edit mode */ /* */ /* ************************************************************ */ @@ -417,10 +416,10 @@ if (! empty($id) && $action == 'edit') print "".$langs->trans("PaymentMode")."\n"; - if ($object->modepaiementid) $selected = $object->modepaiementid; + if ($object->modepaymentid) $selected = $object->modepaymentid; else $selected = ''; - $form->select_types_paiements($selected, 'modepaiement', 'CRDT', 0, 1); + $form->select_types_paiements($selected, 'modepayment', 'CRDT', 0, 1); print "\n"; print "".''.$langs->trans("Status").''.$object->getLibStatut(4).''; @@ -453,7 +452,7 @@ if (! empty($id) && $action == 'edit') /* ************************************************************ */ /* */ -/* Fiche don en mode visu */ +/* Donation card in view mode */ /* */ /* ************************************************************ */ if (! empty($id) && $action != 'edit') @@ -503,8 +502,12 @@ if (! empty($id) && $action != 'edit') { $img=picto_from_langcode($object->country_code); print ($img?$img.' ':''); + print $object->country; } - print $object->country; + else + { + print $object->country_olddata; + } print ''; // EMail @@ -512,7 +515,7 @@ if (! empty($id) && $action != 'edit') // Payment mode print "".$langs->trans("PaymentMode").""; - $form->form_modes_reglement(null, $object->modepaiementid,'none'); + $form->form_modes_reglement(null, $object->modepaymentid,'none'); print "\n"; print "".''.$langs->trans("Status").''.$object->getLibStatut(4).''; @@ -532,41 +535,63 @@ if (! empty($id) && $action != 'edit') print ""; - // TODO Gerer action emettre paiement - $resteapayer = 0; - + $remaintopay = $object->amount - $totalpaid; /** - * Barre d'actions + * Actions buttons */ print '
'; - print ''; + print ''; if ($object->statut == 0) { - print ''; + print ''; } - if (($object->statut == 0 || $object->statut == 1) && $resteapayer == 0 && $object->paye == 0) + if (($object->statut == 0 || $object->statut == 1) && $remaintopay == 0 && $object->paye == 0) { - print '"; + print '"; } - // TODO Gerer action emettre paiement - if ($object->statut == 1 && $resteapayer > 0) + // Create payment + if ($object->statut == 1 && $object->paid == 0 && $user->rights->don->creer) { - print '"; + if ($remaintopay == 0) + { + print '
' . $langs->trans('DoPayment') . '
'; + } + else + { + print ''; + } } - if ($object->statut == 1 && $resteapayer == 0 && $object->paye == 0) + /* + // Classify paid + if ($object->statut == 1 && $object->paye == 0 && $user->rights->facture->paiement && (($object->type != Facture::TYPE_CREDIT_NOTE && $object->type != Facture::TYPE_DEPOSIT && $resteapayer <= 0) || ($object->type == Facture::TYPE_CREDIT_NOTE && $resteapayer >= 0)) + || ($object->type == Facture::TYPE_DEPOSIT && $object->paye == 0 && $resteapayer == 0 && $user->rights->facture->paiement && empty($discount->id)) + ) + { + print ''; + } + + // Emit payment + if ($object->statut == 1 && $object->paid == 0 && ((price2num($object->amount) > 0 && round($remaintopay) > 0)) && $user->rights->don->creer) { - print '"; + print ''; } + */ + // Classify 'paid' + if ($object->statut == 1 && round($remaintopay) == 0 && $object->paid == 0 && $user->rights->don->creer) + { + print '"; + } + if ($user->rights->don->supprimer) { - print '"; + print '"; } else { diff --git a/htdocs/compta/dons/class/don.class.php b/htdocs/compta/dons/class/don.class.php index 88682b9d738..b677a3afad2 100644 --- a/htdocs/compta/dons/class/don.class.php +++ b/htdocs/compta/dons/class/don.class.php @@ -322,7 +322,7 @@ class Don extends CommonObject $sql.= "datec"; $sql.= ", entity"; $sql.= ", amount"; - $sql.= ", fk_paiement"; + $sql.= ", fk_payment"; $sql.= ", firstname"; $sql.= ", lastname"; $sql.= ", societe"; @@ -330,7 +330,7 @@ class Don extends CommonObject $sql.= ", zip"; $sql.= ", town"; // $sql.= ", country"; -- Deprecated - $sql.= ", fk_pays"; + $sql.= ", fk_country"; $sql.= ", public"; $sql.= ", fk_don_projet"; $sql.= ", note_private"; @@ -406,14 +406,14 @@ class Don extends CommonObject $sql = "UPDATE ".MAIN_DB_PREFIX."don SET "; $sql .= "amount = " . price2num($this->amount); - $sql .= ",fk_paiement = ".($this->modepaiementid?$this->modepaiementid:"null"); + $sql .= ",fk_payment = ".($this->modepaymentid?$this->modepaymentid:"null"); $sql .= ",firstname = '".$this->db->escape($this->firstname)."'"; $sql .= ",lastname='".$this->db->escape($this->lastname)."'"; $sql .= ",societe='".$this->db->escape($this->societe)."'"; $sql .= ",address='".$this->db->escape($this->address)."'"; $sql .= ",zip='".$this->db->escape($this->zip)."'"; $sql .= ",town='".$this->db->escape($this->town)."'"; - $sql .= ",fk_pays = ".$this->country_id; + $sql .= ",fk_country = ".$this->country_id; $sql .= ",public=".$this->public; $sql .= ",fk_don_projet=".($this->fk_project>0?$this->fk_project:'null'); $sql .= ",note_private=".(!empty($this->note_private)?("'".$this->db->escape($this->note_private)."'"):"NULL"); @@ -497,14 +497,14 @@ class Don extends CommonObject $sql = "SELECT d.rowid, d.datec, d.tms as datem, d.datedon,"; $sql.= " d.firstname, d.lastname, d.societe, d.amount, d.fk_statut, d.address, d.zip, d.town, "; - $sql.= " d.fk_pays, d.public, d.amount, d.fk_paiement, d.note_private, d.note_public, cp.libelle, d.email, d.phone, "; + $sql.= " d.fk_country, d.country as country_olddata, d.public, d.amount, d.fk_payment, d.paid, d.note_private, d.note_public, cp.libelle, d.email, d.phone, "; $sql.= " d.phone_mobile, d.fk_don_projet,"; $sql.= " p.title as project_label,"; $sql.= " c.code as country_code, c.label as country"; $sql.= " FROM ".MAIN_DB_PREFIX."don as d"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet as p ON p.rowid = d.fk_don_projet"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as cp ON cp.id = d.fk_paiement"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON d.fk_pays = c.rowid"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as cp ON cp.id = d.fk_payment"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON d.fk_country = c.rowid"; $sql.= " WHERE d.rowid = ".$rowid." AND d.entity = ".$conf->entity; dol_syslog(get_class($this)."::fetch", LOG_DEBUG); @@ -528,17 +528,19 @@ class Don extends CommonObject $this->town = $obj->town; $this->zip = $obj->zip; $this->town = $obj->town; - $this->country_id = $obj->country_id; - $this->country_code = $obj->country_code; - $this->country = $obj->country; - $this->email = $obj->email; + $this->country_id = $obj->country_id; + $this->country_code = $obj->country_code; + $this->country = $obj->country; + $this->country_olddata= $obj->country_olddata; + $this->email = $obj->email; $this->phone = $obj->phone; $this->phone_mobile = $obj->phone_mobile; $this->projet = $obj->project_label; $this->fk_project = $obj->fk_don_projet; $this->public = $obj->public; - $this->modepaiementid = $obj->fk_paiement; - $this->modepaiement = $obj->libelle; + $this->modepaymentid = $obj->fk_payment; + $this->modepayment = $obj->libelle; + $this->paid = $obj->paid; $this->amount = $obj->amount; $this->note_private = $obj->note_private; $this->note_public = $obj->note_public; @@ -597,7 +599,7 @@ class Don extends CommonObject $sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = 2"; if ($modepaiement) { - $sql .= ", fk_paiement=$modepaiement"; + $sql .= ", fk_payment=$modepayment"; } $sql .= " WHERE rowid = $rowid AND fk_statut = 1"; diff --git a/htdocs/compta/dons/class/paymentdonation.class.php b/htdocs/compta/dons/class/paymentdonation.class.php new file mode 100644 index 00000000000..65d72fbfb52 --- /dev/null +++ b/htdocs/compta/dons/class/paymentdonation.class.php @@ -0,0 +1,607 @@ + + * + * 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/compta/dons/class/paymentdonation.class.php + * \ingroup Donation + * \brief File of class to manage payment of donations + */ + +require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; + + +/** \class PaymentDonation + * \brief Class to manage payments of donations + */ +class PaymentDonation extends CommonObject +{ + public $element='payment_donation'; //!< Id that identify managed objects + public $table_element='payment_donation'; //!< Name of table without prefix where object is stored + + var $id; + var $ref; + + var $fk_donation; + var $datec=''; + var $tms=''; + var $datep=''; + var $amount; // Total amount of payment + var $amounts=array(); // Array of amounts + var $fk_typepayment; + var $num_payment; + var $note; + var $fk_bank; + var $fk_user_creat; + var $fk_user_modif; + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + function __construct($db) + { + $this->db = $db; + } + + /** + * Create payment of donation into database. + * Use this->amounts to have list of lines for the payment + * + * @param User $user User making payment + * @return int <0 if KO, id of payment if OK + */ + function create($user) + { + global $conf, $langs; + + $error=0; + + $now=dol_now(); + + // Validate parameters + if (! $this->datepaye) + { + $this->error='ErrorBadValueForParameterCreatePaymentDonation'; + return -1; + } + + // Clean parameters + if (isset($this->fk_donation)) $this->fk_donation=trim($this->fk_donation); + if (isset($this->amount)) $this->amount=trim($this->amount); + if (isset($this->fk_typepayment)) $this->fk_typepayment=trim($this->fk_typepayment); + if (isset($this->num_payment)) $this->num_payment=trim($this->num_payment); + if (isset($this->note)) $this->note=trim($this->note); + if (isset($this->fk_bank)) $this->fk_bank=trim($this->fk_bank); + if (isset($this->fk_user_creat)) $this->fk_user_creat=trim($this->fk_user_creat); + if (isset($this->fk_user_modif)) $this->fk_user_modif=trim($this->fk_user_modif); + + $totalamount = 0; + foreach ($this->amounts as $key => $value) // How payment is dispatch + { + $newvalue = price2num($value,'MT'); + $this->amounts[$key] = $newvalue; + $totalamount += $newvalue; + } + $totalamount = price2num($totalamount); + + // Check parameters + if ($totalamount == 0) return -1; // On accepte les montants negatifs pour les rejets de prelevement mais pas null + + + $this->db->begin(); + + if ($totalamount != 0) + { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."payment_donation (fk_donation, datec, datep, amount,"; + $sql.= " fk_typepayment, num_payment, note, fk_user_creat, fk_bank)"; + $sql.= " VALUES ($this->chid, '".$this->db->idate($now)."',"; + $sql.= " '".$this->db->idate($this->datepaye)."',"; + $sql.= " ".$totalamount.","; + $sql.= " ".$this->paymenttype.", '".$this->db->escape($this->num_payment)."', '".$this->db->escape($this->note)."', ".$user->id.","; + $sql.= " 0)"; + + 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."payment_donation"); + } + else + { + $error++; + } + + } + + if ($totalamount != 0 && ! $error) + { + $this->amount=$totalamount; + $this->total=$totalamount; // deprecated + $this->db->commit(); + return $this->id; + } + else + { + $this->error=$this->db->error(); + $this->db->rollback(); + return -1; + } + } + + /** + * Load object in memory from database + * + * @param int $id Id object + * @return int <0 if KO, >0 if OK + */ + function fetch($id) + { + global $langs; + $sql = "SELECT"; + $sql.= " t.rowid,"; + $sql.= " t.fk_donation,"; + $sql.= " t.datec,"; + $sql.= " t.tms,"; + $sql.= " t.datep,"; + $sql.= " t.amount,"; + $sql.= " t.fk_typepayment,"; + $sql.= " t.num_payment,"; + $sql.= " t.note,"; + $sql.= " t.fk_bank,"; + $sql.= " t.fk_user_creat,"; + $sql.= " t.fk_user_modif,"; + $sql.= " pt.code as type_code, pt.libelle as type_libelle,"; + $sql.= ' b.fk_account'; + $sql.= " FROM (".MAIN_DB_PREFIX."c_paiement as pt, ".MAIN_DB_PREFIX."payment_donation as t)"; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'bank as b ON t.fk_bank = b.rowid'; + $sql.= " WHERE t.rowid = ".$id." AND t.fk_typepayment = pt.id"; + + dol_syslog(get_class($this)."::fetch", LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + if ($this->db->num_rows($resql)) + { + $obj = $this->db->fetch_object($resql); + + $this->id = $obj->rowid; + $this->ref = $obj->rowid; + + $this->fk_donation = $obj->fk_donation; + $this->datec = $this->db->jdate($obj->datec); + $this->tms = $this->db->jdate($obj->tms); + $this->datep = $this->db->jdate($obj->datep); + $this->amount = $obj->amount; + $this->fk_typepayment = $obj->fk_typepayment; + $this->num_payment = $obj->num_payment; + $this->note = $obj->note; + $this->fk_bank = $obj->fk_bank; + $this->fk_user_creat = $obj->fk_user_creat; + $this->fk_user_modif = $obj->fk_user_modif; + + $this->type_code = $obj->type_code; + $this->type_libelle = $obj->type_libelle; + + $this->bank_account = $obj->fk_account; + $this->bank_line = $obj->fk_bank; + } + $this->db->free($resql); + + return 1; + } + else + { + $this->error="Error ".$this->db->lasterror(); + return -1; + } + } + + + /** + * Update database + * + * @param User $user User that modify + * @param int $notrigger 0=launch triggers after, 1=disable triggers + * @return int <0 if KO, >0 if OK + */ + function update($user=null, $notrigger=0) + { + global $conf, $langs; + $error=0; + + // Clean parameters + + if (isset($this->fk_donation)) $this->fk_donation=trim($this->fk_donation); + if (isset($this->amount)) $this->amount=trim($this->amount); + if (isset($this->fk_typepayment)) $this->fk_typepayment=trim($this->fk_typepayment); + if (isset($this->num_payment)) $this->num_payment=trim($this->num_payment); + if (isset($this->note)) $this->note=trim($this->note); + if (isset($this->fk_bank)) $this->fk_bank=trim($this->fk_bank); + if (isset($this->fk_user_creat)) $this->fk_user_creat=trim($this->fk_user_creat); + if (isset($this->fk_user_modif)) $this->fk_user_modif=trim($this->fk_user_modif); + + + + // Check parameters + // Put here code to add control on parameters values + + // Update request + $sql = "UPDATE ".MAIN_DB_PREFIX."payment_donation SET"; + + $sql.= " fk_donation=".(isset($this->fk_donation)?$this->fk_donation:"null").","; + $sql.= " datec=".(dol_strlen($this->datec)!=0 ? "'".$this->db->idate($this->datec)."'" : 'null').","; + $sql.= " tms=".(dol_strlen($this->tms)!=0 ? "'".$this->db->idate($this->tms)."'" : 'null').","; + $sql.= " datep=".(dol_strlen($this->datep)!=0 ? "'".$this->db->idate($this->datep)."'" : 'null').","; + $sql.= " amount=".(isset($this->amount)?$this->amount:"null").","; + $sql.= " fk_typepayment=".(isset($this->fk_typepayment)?$this->fk_typepayment:"null").","; + $sql.= " num_payment=".(isset($this->num_payment)?"'".$this->db->escape($this->num_payment)."'":"null").","; + $sql.= " note=".(isset($this->note)?"'".$this->db->escape($this->note)."'":"null").","; + $sql.= " fk_bank=".(isset($this->fk_bank)?$this->fk_bank:"null").","; + $sql.= " fk_user_creat=".(isset($this->fk_user_creat)?$this->fk_user_creat:"null").","; + $sql.= " fk_user_modif=".(isset($this->fk_user_modif)?$this->fk_user_modif:"null").""; + + + $sql.= " WHERE rowid=".$this->id; + + $this->db->begin(); + + dol_syslog(get_class($this)."::update", LOG_DEBUG); + $resql = $this->db->query($sql); + if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } + + if (! $error) + { + if (! $notrigger) + { + // Uncomment this and change MYOBJECT to your own tag if you + // want this action call a trigger. + + //// Call triggers + //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; + //$interface=new Interfaces($this->db); + //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); + //if ($result < 0) { $error++; $this->errors=$interface->errors; } + //// End call triggers + } + } + + // Commit or rollback + if ($error) + { + foreach($this->errors as $errmsg) + { + dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR); + $this->error.=($this->error?', '.$errmsg:$errmsg); + } + $this->db->rollback(); + return -1*$error; + } + else + { + $this->db->commit(); + return 1; + } + } + + + /** + * Delete object in database + * + * @param User $user User that delete + * @param int $notrigger 0=launch triggers after, 1=disable triggers + * @return int <0 if KO, >0 if OK + */ + function delete($user, $notrigger=0) + { + global $conf, $langs; + $error=0; + + $this->db->begin(); + + if (! $error) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_url"; + $sql.= " WHERE type='payment_sc' AND url_id=".$this->id; + + dol_syslog(get_class($this)."::delete", LOG_DEBUG); + $resql = $this->db->query($sql); + if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } + } + + if (! $error) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."payment_donation"; + $sql.= " WHERE rowid=".$this->id; + + dol_syslog(get_class($this)."::delete", LOG_DEBUG); + $resql = $this->db->query($sql); + if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } + } + + if (! $error) + { + if (! $notrigger) + { + // Uncomment this and change MYOBJECT to your own tag if you + // want this action call a trigger. + + //// Call triggers + //include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; + //$interface=new Interfaces($this->db); + //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); + //if ($result < 0) { $error++; $this->errors=$interface->errors; } + //// End call triggers + } + } + + // Commit or rollback + if ($error) + { + foreach($this->errors as $errmsg) + { + dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR); + $this->error.=($this->error?', '.$errmsg:$errmsg); + } + $this->db->rollback(); + return -1*$error; + } + else + { + $this->db->commit(); + return 1; + } + } + + + + /** + * Load an object from its id and create a new one in database + * + * @param int $fromid Id of object to clone + * @return int New id of clone + */ + function createFromClone($fromid) + { + global $user,$langs; + + $error=0; + + $object=new PaymentSocialContribution($this->db); + + $object->context['createfromclone'] = 'createfromclone'; + + $this->db->begin(); + + // Load source object + $object->fetch($fromid); + $object->id=0; + $object->statut=0; + + // Clear fields + // ... + + // Create clone + $result=$object->create($user); + + // Other options + if ($result < 0) + { + $this->error=$object->error; + $error++; + } + + if (! $error) + { + + + + } + + unset($this->context['createfromclone']); + + // End + if (! $error) + { + $this->db->commit(); + return $object->id; + } + else + { + $this->db->rollback(); + return -1; + } + } + + + /** + * Initialise an instance with random values. + * Used to build previews or test instances. + * id must be 0 if object instance is a specimen. + * + * @return void + */ + function initAsSpecimen() + { + $this->id=0; + + $this->fk_donation=''; + $this->datec=''; + $this->tms=''; + $this->datep=''; + $this->amount=''; + $this->fk_typepayment=''; + $this->num_payment=''; + $this->note=''; + $this->fk_bank=''; + $this->fk_user_creat=''; + $this->fk_user_modif=''; + + + } + + + /** + * Add record into bank for payment with links between this bank record and invoices of payment. + * All payment properties must have been set first like after a call to create(). + * + * @param User $user Object of user making payment + * @param string $mode 'payment_sc' + * @param string $label Label to use in bank record + * @param int $accountid Id of bank account to do link with + * @param string $emetteur_nom Name of transmitter + * @param string $emetteur_banque Name of bank + * @return int <0 if KO, >0 if OK + */ + function addPaymentToBank($user,$mode,$label,$accountid,$emetteur_nom,$emetteur_banque) + { + global $conf; + + $error=0; + + if (! empty($conf->banque->enabled)) + { + require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; + + $acc = new Account($this->db); + $acc->fetch($accountid); + + $total=$this->total; + if ($mode == 'payment_sc') $total=-$total; + + // Insert payment into llx_bank + $bank_line_id = $acc->addline( + $this->datepaye, + $this->paymenttype, // Payment mode id or code ("CHQ or VIR for example") + $label, + $total, + $this->num_payment, + '', + $user, + $emetteur_nom, + $emetteur_banque + ); + + // Mise a jour fk_bank dans llx_paiement. + // On connait ainsi le paiement qui a genere l'ecriture bancaire + if ($bank_line_id > 0) + { + $result=$this->update_fk_bank($bank_line_id); + if ($result <= 0) + { + $error++; + dol_print_error($this->db); + } + + // Add link 'payment', 'payment_supplier', 'payment_sc' in bank_url between payment and bank transaction + $url=''; + if ($mode == 'payment_sc') $url=DOL_URL_ROOT.'/compta/payment_sc/card.php?id='; + if ($url) + { + $result=$acc->add_url_line($bank_line_id, $this->id, $url, '(paiement)', $mode); + if ($result <= 0) + { + $error++; + dol_print_error($this->db); + } + } + + // Add link 'company' in bank_url between invoice and bank transaction (for each invoice concerned by payment) + $linkaddedforthirdparty=array(); + foreach ($this->amounts as $key => $value) + { + if ($mode == 'payment_sc') + { + $socialcontrib = new ChargeSociales($this->db); + $socialcontrib->fetch($key); + $result=$acc->add_url_line($bank_line_id, $socialcontrib->id, DOL_URL_ROOT.'/compta/charges.php?id=', $socialcontrib->type_libelle.(($socialcontrib->lib && $socialcontrib->lib!=$socialcontrib->type_libelle)?' ('.$socialcontrib->lib.')':''),'sc'); + if ($result <= 0) dol_print_error($this->db); + } + } + } + else + { + $this->error=$acc->error; + $error++; + } + } + + if (! $error) + { + return 1; + } + else + { + return -1; + } + } + + + /** + * Mise a jour du lien entre le paiement de charge et la ligne dans llx_bank generee + * + * @param int $id_bank Id if bank + * @return int >0 if OK, <=0 if KO + */ + function update_fk_bank($id_bank) + { + $sql = "UPDATE ".MAIN_DB_PREFIX."payment_donation SET fk_bank = ".$id_bank." WHERE rowid = ".$this->id; + + dol_syslog(get_class($this)."::update_fk_bank", LOG_DEBUG); + $result = $this->db->query($sql); + if ($result) + { + return 1; + } + else + { + $this->error=$this->db->error(); + return 0; + } + } + + /** + * Return clicable name (with picto eventually) + * + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto + * @param int $maxlen Longueur max libelle + * @return string Chaine avec URL + */ + function getNomUrl($withpicto=0,$maxlen=0) + { + global $langs; + + $result=''; + + if (empty($this->ref)) $this->ref=$this->lib; + $label = $langs->trans("ShowPayment").': '.$this->ref; + + if (!empty($this->id)) + { + $link = ''; + $linkend=''; + + if ($withpicto) $result.=($link.img_object($label, 'payment', 'class="classfortooltip"').$linkend.' '); + if ($withpicto && $withpicto != 2) $result.=' '; + if ($withpicto != 2) $result.=$link.($maxlen?dol_trunc($this->ref,$maxlen):$this->ref).$linkend; + } + + return $result; + } +} + + diff --git a/htdocs/compta/dons/payment.php b/htdocs/compta/dons/payment.php new file mode 100644 index 00000000000..12b0296ca5a --- /dev/null +++ b/htdocs/compta/dons/payment.php @@ -0,0 +1,313 @@ + + * + * 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/compta/dons/payment.php + * \ingroup Donation + * \brief Page to add payment of a donation + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/paymentdonation.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; + +$langs->load("bills"); + +$chid=GETPOST("rowid"); +$action=GETPOST('action'); +$amounts = array(); + +// Security check +$socid=0; +if ($user->societe_id > 0) +{ + $socid = $user->societe_id; +} + + +/* + * Actions + */ + +if ($action == 'add_payment') +{ + $error=0; + + if ($_POST["cancel"]) + { + $loc = DOL_URL_ROOT.'/compta/dons/card.php?rowid='.$chid; + header("Location: ".$loc); + exit; + } + + $datepaye = dol_mktime(12, 0, 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]); + + if (! $_POST["paymenttype"] > 0) + { + $mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("PaymentMode")); + $error++; + } + if ($datepaye == '') + { + $mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("Date")); + $error++; + } + if (! empty($conf->banque->enabled) && ! $_POST["accountid"] > 0) + { + $mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("AccountToCredit")); + $error++; + } + + if (! $error) + { + $paymentid = 0; + + // Read possible payments + foreach ($_POST as $key => $value) + { + if (substr($key,0,7) == 'amount_') + { + $other_chid = substr($key,7); + $amounts[$other_chid] = price2num($_POST[$key]); + } + } + + if (count($amounts) <= 0) + { + $error++; + $errmsg='ErrorNoPaymentDefined'; + } + + if (! $error) + { + $db->begin(); + + // Create a line of payments + $payment = new PaymentDonation($db); + $payment->chid = $chid; + $payment->datepaye = $datepaye; + $payment->amounts = $amounts; // Tableau de montant + $payment->paymenttype = $_POST["paymenttype"]; + $payment->num_payment = $_POST["num_payment"]; + $payment->note = $_POST["note"]; + + if (! $error) + { + $paymentid = $payment->create($user); + if ($paymentid < 0) + { + $errmsg=$payment->error; + $error++; + } + } + + if (! $error) + { + $result=$payment->addPaymentToBank($user,'payment_donation','(DonationPayment)',$_POST['accountid'],'',''); + if (! $result > 0) + { + $errmsg=$payment->error; + $error++; + } + } + + if (! $error) + { + $db->commit(); + $loc = DOL_URL_ROOT.'/compta/dons/card.php?rowid='.$chid; + header('Location: '.$loc); + exit; + } + else + { + $db->rollback(); + } + } + } + + $_GET["action"]='create'; +} + + +/* + * View + */ + +llxHeader(); + +$form=new Form($db); + + +// Form to create donation payment +if (GETPOST("action") == 'create') +{ + + $don = new Don($db); + $don->fetch($chid); + + $total = $don->amount; + + print_fiche_titre($langs->trans("DoPayment")); + print "
\n"; + + if ($mesg) + { + print "
$mesg
"; + } + + print '
'; + print ''; + print ''; + print ''; + print ''; + + print ''; + + print ''; + + print ''; + print '\n"; + print ''; + + $sql = "SELECT sum(p.amount) as total"; + $sql.= " FROM ".MAIN_DB_PREFIX."payment_donation as p"; + $sql.= " WHERE p.fk_donation = ".$chid; + $resql = $db->query($sql); + if ($resql) + { + $obj=$db->fetch_object($resql); + $sumpaid = $obj->total; + $db->free(); + } + print ''; + print ''; + + print ''; + print "'; + print ''; + + print '"; + print ''; + + print '\n"; + print ''; + + print ''; + print ''; + print ''; + + // Number + print ''; + print ''."\n"; + + print ''; + print ''; + print ''; + print ''; + + print '
'.$langs->trans("Donation").'
'.$langs->trans("Ref").''.$chid.'
'.$langs->trans("Date")."".dol_print_date($don->date,'day')."
'.$langs->trans("Amount")."".price($don->amount,0,$outputlangs,1,-1,-1,$conf->currency).'
'.$langs->trans("AlreadyPaid").''.price($sumpaid,0,$outputlangs,1,-1,-1,$conf->currency).'
'.$langs->trans("RemainderToPay").''.price($total-$sumpaid,0,$outputlangs,1,-1,-1,$conf->currency).'
".$langs->trans("Payment").'
'.$langs->trans("Date").''; + $datepaye = dol_mktime(12, 0, 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]); + $datepayment=empty($conf->global->MAIN_AUTOFILL_DATE)?(empty($_POST["remonth"])?-1:$datepaye):0; + $form->select_date($datepayment,'','','','',"add_payment",1,1); + print "
'.$langs->trans("PaymentMode").''; + $form->select_types_paiements(isset($_POST["paymenttype"])?$_POST["paymenttype"]:$don->paymenttype, "paymenttype"); + print "
'.$langs->trans('AccountToDebit').''; + $form->select_comptes(isset($_POST["accountid"])?$_POST["accountid"]:$don->accountid, "accountid", 0, '',1); // Show opend bank account list + print '
'.$langs->trans('Numero'); + print ' ('.$langs->trans("ChequeOrTransferNumber").')'; + print '
'.$langs->trans("Comments").'
'; + + print '
'; + + /* + * Autres charges impayees + */ + $num = 1; + $i = 0; + + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + + $var=true; + $total=0; + $totalrecu=0; + + while ($i < $num) + { + $objp = $don; + + $var=!$var; + + print ""; + + print '"; + + print '"; + + print '"; + + print '"; + + print "\n"; + $total+=$objp->total; + $total_ttc+=$objp->total_ttc; + $totalrecu+=$objp->am; + $i++; + } + if ($i > 1) + { + // Print total + print ""; + print ''; + print ""; + print ""; + print ""; + print ''; + print "\n"; + } + + print "
'.$langs->trans("Amount").''.$langs->trans("AlreadyPaid").''.$langs->trans("RemainderToPay").''.$langs->trans("Amount").'
'.price($objp->amount)."'.price($sumpaid)."'.price($objp->amount - $sumpaid)."'; + if ($sumpaid < $objp->amount) + { + $namef = "amount_".$objp->id; + print ''; + } + else + { + print '-'; + } + print "
'.$langs->trans("Total").':".price($total_ttc)."".price($totalrecu)."".price($total_ttc - $totalrecu)." 
"; + + print '
'; + print ''; + print '     '; + print ''; + print '
'; + + print "
\n"; +} + + +$db->close(); + +llxFooter(); diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index d2520973275..c92c78014cb 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -372,4 +372,22 @@ ALTER TABLE llx_societe_extrafields DROP INDEX idx_societe_extrafields; ALTER TABLE llx_societe_extrafields ADD UNIQUE INDEX uk_societe_extrafields (fk_object); -- Module Donation -ALTER TABLE llx_don ADD COLUMN fk_pays integer NOT NULL after country; +ALTER TABLE llx_don ADD COLUMN fk_country integer NOT NULL after country; +ALTER TABLE llx_don CHANGE COLUMN fk_paiement fk_payment integer; +ALTER TABLE llx_don ADD COLUMN paid smallint default 0 NOT NULL after fk_payment; + +create table llx_payment_donation +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + fk_donation integer, + datec datetime, -- date de creation + tms timestamp, + datep datetime, -- payment date + amount real DEFAULT 0, + fk_typepayment integer NOT NULL, + num_payment varchar(50), + note text, + fk_bank integer NOT NULL, + fk_user_creat integer, -- creation user + fk_user_modif integer -- last modification user +)ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_don.sql b/htdocs/install/mysql/tables/llx_don.sql index bf434e11518..d4e03c55d0c 100644 --- a/htdocs/install/mysql/tables/llx_don.sql +++ b/htdocs/install/mysql/tables/llx_don.sql @@ -2,6 +2,7 @@ -- Copyright (C) 2001-2002 Rodolphe Quiedeville -- Copyright (C) 2009 Regis Houssin -- Copyright (C) 2011 Laurent Destailleur +-- Copyright (C) 2015 Alexandre Spangaro -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -29,15 +30,16 @@ create table llx_don datec datetime, -- date de creation de l'enregistrement datedon datetime, -- date du don/promesse amount real DEFAULT 0, - fk_paiement integer, + fk_payment integer, + paid smallint default 0 NOT NULL, firstname varchar(50), lastname varchar(50), societe varchar(50), address text, zip varchar(30), town varchar(50), - country varchar(50), -- Deprecated - Replace with fk_pays - fk_pays integer NOT NULL, + country varchar(50), -- Deprecated - Replace with fk_country + fk_country integer NOT NULL, email varchar(255), phone varchar(24), phone_mobile varchar(24), diff --git a/htdocs/install/mysql/tables/llx_payment_donation.sql b/htdocs/install/mysql/tables/llx_payment_donation.sql new file mode 100644 index 00000000000..0389a59e06e --- /dev/null +++ b/htdocs/install/mysql/tables/llx_payment_donation.sql @@ -0,0 +1,33 @@ +-- =================================================================== +-- Copyright (C) 2015 Alexandre Spangaro +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . +-- +-- =================================================================== + +create table llx_payment_donation +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + fk_donation integer, + datec datetime, -- date de creation + tms timestamp, + datep datetime, -- payment date + amount real DEFAULT 0, + fk_typepayment integer NOT NULL, + num_payment varchar(50), + note text, + fk_bank integer NOT NULL, + fk_user_creat integer, -- creation user + fk_user_modif integer -- last modification user +)ENGINE=innodb; From e6d9d18f252613b5fc92bf9e72a6a0347c7644de Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 18 Mar 2015 06:29:10 +0100 Subject: [PATCH 312/429] Update work on donation --- htdocs/compta/dons/card.php | 36 ++++++------------- htdocs/compta/dons/class/don.class.php | 12 +++---- .../dons/class/paymentdonation.class.php | 21 +++++------ htdocs/compta/dons/payment.php | 14 ++++---- .../install/mysql/migration/3.7.0-3.8.0.sql | 1 + htdocs/install/mysql/tables/llx_don.sql | 2 +- 6 files changed, 37 insertions(+), 49 deletions(-) diff --git a/htdocs/compta/dons/card.php b/htdocs/compta/dons/card.php index 0c4c92cecd7..d20af7f8ba6 100644 --- a/htdocs/compta/dons/card.php +++ b/htdocs/compta/dons/card.php @@ -32,7 +32,8 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; -if (! empty($conf->projet->enabled)) { +if (! empty($conf->projet->enabled)) +{ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; } require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; @@ -99,7 +100,7 @@ if ($action == 'update') $object->email = GETPOST("email"); $object->date = $donation_date; $object->public = GETPOST("public"); - $object->fk_project = GETPOST("projectid"); + $object->fk_project = GETPOST("fk_project"); $object->note_private= GETPOST("note_private"); $object->note_public = GETPOST("note_public"); @@ -334,10 +335,9 @@ if ($action == 'create') $formproject=new FormProjets($db); - // Si module projet actif print "".$langs->trans("Project").""; - $formproject->select_projects('',GETPOST("projectid"),"projectid"); - print "\n"; + $formproject->select_projects(-1, GETPOST("fk_project"),'fk_project', 0, 1, 0, 1); + print "\n"; } // Other attributes @@ -431,7 +431,7 @@ if (! empty($id) && $action == 'edit') $langs->load('projects'); print ''.$langs->trans('Project').''; - $formproject->select_projects(-1, (isset($_POST["projectid"])?$_POST["projectid"]:$don->fk_project), 'projectid'); + $formproject->select_projects(-1, $object->fk_project,'fk_project', 0, 1, 0, 1); print ''; } @@ -523,7 +523,10 @@ if (! empty($id) && $action != 'edit') // Project if (! empty($conf->projet->enabled)) { - print "".''.$langs->trans("Project").''.$object->projet.''; + print ''; + print ''.$langs->trans("Project").''; + print ''.$object->projet.''; + print ''; } // Other attributes @@ -567,22 +570,6 @@ if (! empty($id) && $action != 'edit') } } - /* - // Classify paid - if ($object->statut == 1 && $object->paye == 0 && $user->rights->facture->paiement && (($object->type != Facture::TYPE_CREDIT_NOTE && $object->type != Facture::TYPE_DEPOSIT && $resteapayer <= 0) || ($object->type == Facture::TYPE_CREDIT_NOTE && $resteapayer >= 0)) - || ($object->type == Facture::TYPE_DEPOSIT && $object->paye == 0 && $resteapayer == 0 && $user->rights->facture->paiement && empty($discount->id)) - ) - { - print ''; - } - - // Emit payment - if ($object->statut == 1 && $object->paid == 0 && ((price2num($object->amount) > 0 && round($remaintopay) > 0)) && $user->rights->don->creer) - { - print ''; - } - */ - // Classify 'paid' if ($object->statut == 1 && round($remaintopay) == 0 && $object->paid == 0 && $user->rights->don->creer) { @@ -625,6 +612,5 @@ if (! empty($id) && $action != 'edit') } - llxFooter(); -$db->close(); +$db->close(); \ No newline at end of file diff --git a/htdocs/compta/dons/class/don.class.php b/htdocs/compta/dons/class/don.class.php index b677a3afad2..273d54a6eef 100644 --- a/htdocs/compta/dons/class/don.class.php +++ b/htdocs/compta/dons/class/don.class.php @@ -332,7 +332,7 @@ class Don extends CommonObject // $sql.= ", country"; -- Deprecated $sql.= ", fk_country"; $sql.= ", public"; - $sql.= ", fk_don_projet"; + $sql.= ", fk_project"; $sql.= ", note_private"; $sql.= ", note_public"; $sql.= ", fk_user_author"; @@ -415,7 +415,7 @@ class Don extends CommonObject $sql .= ",town='".$this->db->escape($this->town)."'"; $sql .= ",fk_country = ".$this->country_id; $sql .= ",public=".$this->public; - $sql .= ",fk_don_projet=".($this->fk_project>0?$this->fk_project:'null'); + $sql .= ",fk_project=".($this->fk_project>0?$this->fk_project:'null'); $sql .= ",note_private=".(!empty($this->note_private)?("'".$this->db->escape($this->note_private)."'"):"NULL"); $sql .= ",note_public=".(!empty($this->note_public)?("'".$this->db->escape($this->note_public)."'"):"NULL"); $sql .= ",datedon='".$this->db->idate($this->date)."'"; @@ -498,11 +498,11 @@ class Don extends CommonObject $sql = "SELECT d.rowid, d.datec, d.tms as datem, d.datedon,"; $sql.= " d.firstname, d.lastname, d.societe, d.amount, d.fk_statut, d.address, d.zip, d.town, "; $sql.= " d.fk_country, d.country as country_olddata, d.public, d.amount, d.fk_payment, d.paid, d.note_private, d.note_public, cp.libelle, d.email, d.phone, "; - $sql.= " d.phone_mobile, d.fk_don_projet,"; + $sql.= " d.phone_mobile, d.fk_project,"; $sql.= " p.title as project_label,"; $sql.= " c.code as country_code, c.label as country"; $sql.= " FROM ".MAIN_DB_PREFIX."don as d"; - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet as p ON p.rowid = d.fk_don_projet"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet as p ON p.rowid = d.fk_project"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as cp ON cp.id = d.fk_payment"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON d.fk_country = c.rowid"; $sql.= " WHERE d.rowid = ".$rowid." AND d.entity = ".$conf->entity; @@ -535,8 +535,8 @@ class Don extends CommonObject $this->email = $obj->email; $this->phone = $obj->phone; $this->phone_mobile = $obj->phone_mobile; - $this->projet = $obj->project_label; - $this->fk_project = $obj->fk_don_projet; + $this->project = $obj->project_label; + $this->fk_project = $obj->fk_project; $this->public = $obj->public; $this->modepaymentid = $obj->fk_payment; $this->modepayment = $obj->libelle; diff --git a/htdocs/compta/dons/class/paymentdonation.class.php b/htdocs/compta/dons/class/paymentdonation.class.php index 65d72fbfb52..907ea46bf72 100644 --- a/htdocs/compta/dons/class/paymentdonation.class.php +++ b/htdocs/compta/dons/class/paymentdonation.class.php @@ -33,6 +33,7 @@ class PaymentDonation extends CommonObject public $table_element='payment_donation'; //!< Name of table without prefix where object is stored var $id; + var $rowid; var $ref; var $fk_donation; @@ -74,7 +75,7 @@ class PaymentDonation extends CommonObject $now=dol_now(); // Validate parameters - if (! $this->datepaye) + if (! $this->datepaid) { $this->error='ErrorBadValueForParameterCreatePaymentDonation'; return -1; @@ -110,7 +111,7 @@ class PaymentDonation extends CommonObject $sql = "INSERT INTO ".MAIN_DB_PREFIX."payment_donation (fk_donation, datec, datep, amount,"; $sql.= " fk_typepayment, num_payment, note, fk_user_creat, fk_bank)"; $sql.= " VALUES ($this->chid, '".$this->db->idate($now)."',"; - $sql.= " '".$this->db->idate($this->datepaye)."',"; + $sql.= " '".$this->db->idate($this->datepaid)."',"; $sql.= " ".$totalamount.","; $sql.= " ".$this->paymenttype.", '".$this->db->escape($this->num_payment)."', '".$this->db->escape($this->note)."', ".$user->id.","; $sql.= " 0)"; @@ -485,7 +486,7 @@ class PaymentDonation extends CommonObject // Insert payment into llx_bank $bank_line_id = $acc->addline( - $this->datepaye, + $this->datepaid, $this->paymenttype, // Payment mode id or code ("CHQ or VIR for example") $label, $total, @@ -496,7 +497,7 @@ class PaymentDonation extends CommonObject $emetteur_banque ); - // Mise a jour fk_bank dans llx_paiement. + // Update fk_bank in llx_paiement. // On connait ainsi le paiement qui a genere l'ecriture bancaire if ($bank_line_id > 0) { @@ -509,7 +510,7 @@ class PaymentDonation extends CommonObject // Add link 'payment', 'payment_supplier', 'payment_sc' in bank_url between payment and bank transaction $url=''; - if ($mode == 'payment_sc') $url=DOL_URL_ROOT.'/compta/payment_sc/card.php?id='; + if ($mode == 'payment_donation') $url=DOL_URL_ROOT.'/compta/dons/card.php?rowid='; if ($url) { $result=$acc->add_url_line($bank_line_id, $this->id, $url, '(paiement)', $mode); @@ -520,15 +521,15 @@ class PaymentDonation extends CommonObject } } - // Add link 'company' in bank_url between invoice and bank transaction (for each invoice concerned by payment) + // Add link 'thirdparty' in bank_url between donation and bank transaction (for each donation concerned by payment) $linkaddedforthirdparty=array(); foreach ($this->amounts as $key => $value) { - if ($mode == 'payment_sc') + if ($mode == 'payment_donation') { - $socialcontrib = new ChargeSociales($this->db); - $socialcontrib->fetch($key); - $result=$acc->add_url_line($bank_line_id, $socialcontrib->id, DOL_URL_ROOT.'/compta/charges.php?id=', $socialcontrib->type_libelle.(($socialcontrib->lib && $socialcontrib->lib!=$socialcontrib->type_libelle)?' ('.$socialcontrib->lib.')':''),'sc'); + $don = new Don($this->db); + $don->fetch($key); + $result=$acc->add_url_line($bank_line_id, $don->rowid, DOL_URL_ROOT.'/compta/card.php?rowid=', $don->type_libelle.(($don->lib && $don->lib!=$don->type_libelle)?' ('.$don->lib.')':''),'sc'); if ($result <= 0) dol_print_error($this->db); } } diff --git a/htdocs/compta/dons/payment.php b/htdocs/compta/dons/payment.php index 12b0296ca5a..948cd221b0c 100644 --- a/htdocs/compta/dons/payment.php +++ b/htdocs/compta/dons/payment.php @@ -55,14 +55,14 @@ if ($action == 'add_payment') exit; } - $datepaye = dol_mktime(12, 0, 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]); + $datepaid = dol_mktime(12, 0, 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]); if (! $_POST["paymenttype"] > 0) { $mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("PaymentMode")); $error++; } - if ($datepaye == '') + if ($datepaid == '') { $mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("Date")); $error++; @@ -100,7 +100,7 @@ if ($action == 'add_payment') // Create a line of payments $payment = new PaymentDonation($db); $payment->chid = $chid; - $payment->datepaye = $datepaye; + $payment->datepaid = $datepaid; $payment->amounts = $amounts; // Tableau de montant $payment->paymenttype = $_POST["paymenttype"]; $payment->num_payment = $_POST["num_payment"]; @@ -202,8 +202,8 @@ if (GETPOST("action") == 'create') print ''; print ''.$langs->trans("Date").''; - $datepaye = dol_mktime(12, 0, 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]); - $datepayment=empty($conf->global->MAIN_AUTOFILL_DATE)?(empty($_POST["remonth"])?-1:$datepaye):0; + $datepaid = dol_mktime(12, 0, 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]); + $datepayment=empty($conf->global->MAIN_AUTOFILL_DATE)?(empty($_POST["remonth"])?-1:$datepaid):0; $form->select_date($datepayment,'','','','',"add_payment",1,1); print ""; print ''; @@ -214,9 +214,9 @@ if (GETPOST("action") == 'create') print ''; print ''; - print ''.$langs->trans('AccountToDebit').''; + print ''.$langs->trans('AccountToCredit').''; print ''; - $form->select_comptes(isset($_POST["accountid"])?$_POST["accountid"]:$don->accountid, "accountid", 0, '',1); // Show opend bank account list + $form->select_comptes(isset($_POST["accountid"])?$_POST["accountid"]:$don->accountid, "accountid", 0, '',1); // Show open bank account list print ''; // Number diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index c92c78014cb..b07974b8889 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -375,6 +375,7 @@ ALTER TABLE llx_societe_extrafields ADD UNIQUE INDEX uk_societe_extrafields (fk_ ALTER TABLE llx_don ADD COLUMN fk_country integer NOT NULL after country; ALTER TABLE llx_don CHANGE COLUMN fk_paiement fk_payment integer; ALTER TABLE llx_don ADD COLUMN paid smallint default 0 NOT NULL after fk_payment; +ALTER TABLE llx_don CHANGE COLUMN fk_don_projet fk_project integer NULL; create table llx_payment_donation ( diff --git a/htdocs/install/mysql/tables/llx_don.sql b/htdocs/install/mysql/tables/llx_don.sql index d4e03c55d0c..a3882fc6f99 100644 --- a/htdocs/install/mysql/tables/llx_don.sql +++ b/htdocs/install/mysql/tables/llx_don.sql @@ -44,7 +44,7 @@ create table llx_don phone varchar(24), phone_mobile varchar(24), public smallint DEFAULT 1 NOT NULL, -- le don est-il public (0,1) - fk_don_projet integer NULL, -- projet auquel est fait le don + fk_project integer NULL, -- projet auquel est fait le don fk_user_author integer NOT NULL, fk_user_valid integer NULL, note_private text, From 5d4d8151c14a384cb77aaa1025675db0edbfb6d6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 Mar 2015 11:04:50 +0100 Subject: [PATCH 313/429] Work on new timesheet input pages. --- htdocs/core/js/timesheet.js | 41 ++++- htdocs/core/lib/project.lib.php | 45 +++-- htdocs/core/menus/init_menu_auguria.sql | 4 +- htdocs/core/menus/standard/eldy.lib.php | 4 +- .../install/mysql/migration/3.7.0-3.8.0.sql | 3 + htdocs/langs/en_US/projects.lang | 3 +- htdocs/projet/activity/perday.php | 160 ++++++++--------- .../activity/{pertime.php => perweek.php} | 169 ++++++++++-------- htdocs/projet/class/project.class.php | 33 ++-- htdocs/projet/class/task.class.php | 6 +- htdocs/projet/tasks/task.php | 6 +- 11 files changed, 272 insertions(+), 202 deletions(-) rename htdocs/projet/activity/{pertime.php => perweek.php} (53%) diff --git a/htdocs/core/js/timesheet.js b/htdocs/core/js/timesheet.js index 7c85cb1afd0..c36c03f55ff 100644 --- a/htdocs/core/js/timesheet.js +++ b/htdocs/core/js/timesheet.js @@ -122,7 +122,28 @@ function updateTotal(days,mode) var nbline = document.getElementById('numberOfLines').value; for (var i=0;i= 0) + { + total.setHours(total.getHours()+taskTime.getHours()); + total.setMinutes(total.getMinutes()+taskTime.getMinutes()); + } + } + + var id='timeadded['+i+']['+days+']'; var taskTime= new Date(0); var element=document.getElementById(id); if(element) @@ -152,7 +173,23 @@ function updateTotal(days,mode) var nbline = document.getElementById('numberOfLines').value; for (var i=0;iglobal->PROJECT_DISABLE_TIMESHEET_PERDAY)) + if (empty($conf->global->PROJECT_DISABLE_TIMESHEET_PERWEEK)) + { + $head[$h][0] = DOL_URL_ROOT."/projet/activity/perweek.php".($mode?'?mode='.$mode:''); + $head[$h][1] = $langs->trans("InputPerWeek"); + $head[$h][2] = 'inputperweek'; + $h++; + } + + if (empty($conf->global->PROJECT_DISABLE_TIMESHEET_PERTIME)) { $head[$h][0] = DOL_URL_ROOT."/projet/activity/perday.php".($mode?'?mode='.$mode:''); $head[$h][1] = $langs->trans("InputPerDay"); @@ -185,11 +193,11 @@ function project_timesheet_prepare_head($mode) $h++; } - if (empty($conf->global->PROJECT_DISABLE_TIMESHEET_PERTIME)) + if (empty($conf->global->PROJECT_DISABLE_TIMESHEET_PERACTION)) { - $head[$h][0] = DOL_URL_ROOT."/projet/activity/pertime.php".($mode?'?mode='.$mode:''); - $head[$h][1] = $langs->trans("InputPerTime"); - $head[$h][2] = 'inputpertime'; + $head[$h][0] = DOL_URL_ROOT."/projet/activity/peraction.php".($mode?'?mode='.$mode:''); + $head[$h][1] = $langs->trans("InputPerAction"); + $head[$h][2] = 'inputperaction'; $h++; } @@ -649,6 +657,8 @@ function projectLinesPerTime(&$inc, $parent, $lines, &$level, &$projectsrole, &$ * Output a task line into a perday intput mode * * @param string $inc Line number (start to 0, then increased by recursive call) + * @param int $firstdaytoshow First day to show + * @param User|null $fuser Restrict list to user if defined * @param string $parent Id of parent project to show (0 to show all) * @param Task[] $lines Array of lines * @param int $level Level (start to 0, then increased/decrease by recursive call) @@ -658,7 +668,7 @@ function projectLinesPerTime(&$inc, $parent, $lines, &$level, &$projectsrole, &$ * @param int $restricteditformytask 0=No restriction, 1=Enable add time only if task is a task i am affected to * @return $inc */ -function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask=0) +function projectLinesPerDay(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask=0) { global $db, $user, $bc, $langs; global $form, $formother, $projectstatic, $taskstatic; @@ -687,7 +697,7 @@ function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$t $lastprojectid=$lines[$i]->fk_project; $projectstatic->id = $lines[$i]->fk_project; - $projectstatic->loadTimeSpent($datestart, $lines[$i]->id, $fuser->id); + $projectstatic->loadTimeSpent($firstdaytoshow, 0, $fuser->id); // Load time spent into this->weekWorkLoad and this->weekWorkLoadPerTaks for all day of a week } // If we want all or we have a role on task, we show it @@ -708,17 +718,18 @@ function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$t print ''; $taskstatic->id=$lines[$i]->id; $taskstatic->ref=($lines[$i]->ref?$lines[$i]->ref:$lines[$i]->id); - print $taskstatic->getNomUrl(1); + print $taskstatic->getNomUrl(1, 'withproject', 'time'); print ''; // Label task print ""; + print ''; for ($k = 0 ; $k < $level ; $k++) print "   "; $taskstatic->id=$lines[$i]->id; $taskstatic->ref=$lines[$i]->label; $taskstatic->date_start=$lines[$i]->date_start; $taskstatic->date_end=$lines[$i]->date_end; - print $taskstatic->getNomUrl(0); + print $taskstatic->getNomUrl(0, 'withproject', 'time'); //print "
"; //for ($k = 0 ; $k < $level ; $k++) print "   "; //print get_date_range($lines[$i]->date_start,$lines[$i]->date_end,'',$langs,0); @@ -770,18 +781,22 @@ function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$t $disabledtask=1; } - //var_dump($projectstatic->weekWorkLoad); + //var_dump($projectstatic->weekWorkLoadPerTask); // Fields to show current time $tableCell=''; $modeinput='hours'; for ($idw = 0; $idw < 7; $idw++) { - $dayWorkLoad = 0; + $tmpday=dol_time_plus_duree($firstdaytoshow, $idw, 'd'); + $dayWorkLoad = $projectstatic->weekWorkLoadPerTask[$tmpday][$lines[$i]->id]; + $alreadyspent=''; + if ($dayWorkLoad > 0) $alreadyspent=convertSecondToTime($dayWorkLoad,'allhourmin'); $tableCell =''; - $tableCell.='+'; - $tableCell.=''; + $tableCell.='+'; + $tableCell.=''; + $tableCell.= 'onblur="regexEvent(this,event,\''.$modeinput.'\'); updateTotal('.$idw.',\''.$modeinput.'\')" />'; $tableCell.=''; print $tableCell; } @@ -790,7 +805,7 @@ function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$t $inc++; $level++; - if ($lines[$i]->id) projectLinesPerDay($inc, $lines[$i]->id, $lines, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); + if ($lines[$i]->id) projectLinesPerDay($inc, $firstdaytoshow, $lines[$i]->id, $lines, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); $level--; } else diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index b2f81ed1769..ec265cd4d3f 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -244,12 +244,12 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3700__+MAX_llx_menu__, 'project', '', 7__+MAX_llx_menu__, '/projet/activity/index.php?leftmenu=projects', 'Activities', 0, 'projects', '$user->rights->projet->lire', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3701__+MAX_llx_menu__, 'project', '', 3700__+MAX_llx_menu__, '/projet/tasks.php?leftmenu=projects&action=create', 'NewTask', 1, 'projects', '$user->rights->projet->creer', '', 2, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3702__+MAX_llx_menu__, 'project', '', 3700__+MAX_llx_menu__, '/projet/tasks/index.php?leftmenu=projects', 'List', 1, 'projects', '$user->rights->projet->lire', '', 2, 2, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3703__+MAX_llx_menu__, 'project', '', 3700__+MAX_llx_menu__, '/projet/activity/perday.php?leftmenu=projects', 'NewTimeSpent', 1, 'projects', '$user->rights->projet->lire', '', 2, 3, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3703__+MAX_llx_menu__, 'project', '', 3700__+MAX_llx_menu__, '/projet/activity/perweek.php?leftmenu=projects', 'NewTimeSpent', 1, 'projects', '$user->rights->projet->lire', '', 2, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3800__+MAX_llx_menu__, 'project', '', 7__+MAX_llx_menu__, '/projet/activity/index.php?leftmenu=projects&mode=mine', 'MyActivities', 0, 'projects', '$user->rights->projet->lire', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3801__+MAX_llx_menu__, 'project', '', 3800__+MAX_llx_menu__, '/projet/tasks.php?leftmenu=projects&action=create&mode=mine', 'NewTask', 1, 'projects', '$user->rights->projet->creer', '', 2, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3802__+MAX_llx_menu__, 'project', '', 3800__+MAX_llx_menu__, '/projet/tasks/index.php?leftmenu=projects&mode=mine', 'List', 1, 'projects', '$user->rights->projet->lire', '', 2, 2, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3803__+MAX_llx_menu__, 'project', '', 3800__+MAX_llx_menu__, '/projet/activity/perday.php?leftmenu=projects&mode=mine', 'NewTimeSpent', 1, 'projects', '$user->rights->projet->lire', '', 2, 3, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->projet->enabled', __HANDLER__, 'left', 3803__+MAX_llx_menu__, 'project', '', 3800__+MAX_llx_menu__, '/projet/activity/perweek.php?leftmenu=projects&mode=mine', 'NewTimeSpent', 1, 'projects', '$user->rights->projet->lire', '', 2, 3, __ENTITY__); -- Tools insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->mailing->enabled', __HANDLER__, 'left', 3900__+MAX_llx_menu__, 'tools', 'mailing', 8__+MAX_llx_menu__, '/comm/mailing/index.php?leftmenu=mailing', 'EMailings', 0, 'mails', '$user->rights->mailing->lire', '', 0, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->mailing->enabled', __HANDLER__, 'left', 3901__+MAX_llx_menu__, 'tools', '', 3900__+MAX_llx_menu__, '/comm/mailing/card.php?leftmenu=mailing&action=create', 'NewMailing', 1, 'mails', '$user->rights->mailing->creer', '', 0, 0, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 24af20ea4af..7c6ef944f7c 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1148,13 +1148,13 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/projet/activity/index.php?mode=mine", $langs->trans("MyActivities"), 0, $user->rights->projet->lire); $newmenu->add("/projet/tasks.php?action=create&mode=mine", $langs->trans("NewTask"), 1, $user->rights->projet->creer); $newmenu->add("/projet/tasks/index.php?mode=mine", $langs->trans("List"), 1, $user->rights->projet->lire); - $newmenu->add("/projet/activity/perday.php?mode=mine", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer); + $newmenu->add("/projet/activity/perweek.php?mode=mine", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer); // All project i have permission on $newmenu->add("/projet/activity/index.php", $langs->trans("Activities"), 0, $user->rights->projet->lire && $user->rights->projet->lire); $newmenu->add("/projet/tasks.php?action=create", $langs->trans("NewTask"), 1, $user->rights->projet->creer && $user->rights->projet->creer); $newmenu->add("/projet/tasks/index.php", $langs->trans("List"), 1, $user->rights->projet->lire && $user->rights->projet->lire); - $newmenu->add("/projet/activity/perday.php", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer && $user->rights->projet->creer); + $newmenu->add("/projet/activity/perweek.php", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer && $user->rights->projet->creer); } } } diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index b7475d88f91..d4e56a980a6 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -27,6 +27,9 @@ ALTER TABLE llx_payment_salary ADD COLUMN salary real after datev; UPDATE llx_projet_task_time SET task_datehour = task_date where task_datehour IS NULL; ALTER TABLE llx_projet_task_time ADD COLUMN task_date_withhour integer DEFAULT 0 after task_datehour; +ALTER TABLE llx_projet_task MODIFY COLUMN duration_effective real DEFAULT 0 NULL; +ALTER TABLE llx_projet_task MODIFY COLUMN planned_workload real DEFAULT 0 NULL; + ALTER TABLE llx_commande_fournisseur MODIFY COLUMN date_livraison datetime; diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 8e7e29f7278..ef270909120 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -138,6 +138,7 @@ SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/projet/activity/perday.php b/htdocs/projet/activity/perday.php index abec2e8cf7c..5dc873cfccc 100644 --- a/htdocs/projet/activity/perday.php +++ b/htdocs/projet/activity/perday.php @@ -19,9 +19,9 @@ */ /** - * \file htdocs/projet/activity/pertime.php + * \file htdocs/projet/activity/perday.php * \ingroup projet - * \brief List activities of tasks (per time entry) + * \brief List activities of tasks (per day entry) */ require ("../../main.inc.php"); @@ -29,7 +29,6 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; $langs->load('projects'); @@ -48,13 +47,6 @@ $socid=0; if ($user->societe_id > 0) $socid=$user->societe_id; $result = restrictedArea($user, 'projet', $projectid); -$now=dol_now(); - -$year=GETPOST("year","int")?GETPOST("year","int"):date("Y"); -$month=GETPOST("month","int")?GETPOST("month","int"):date("m"); -$week=GETPOST("week","int")?GETPOST("week","int"):date("W"); -$day=GETPOST("day","int")?GETPOST("day","int"):date("d"); - /* * Actions @@ -64,8 +56,68 @@ if ($action == 'addtime' && $user->rights->projet->creer) { $task = new Task($db); + $timespent_duration=array(); + foreach($_POST as $key => $time) + { + if (intval($time) > 0) + { + // Hours or minutes of duration + if (preg_match("/([0-9]+)duration(hour|min)/",$key,$matches)) + { + $id = $matches[1]; + if ($id > 0) + { + // We store HOURS in seconds + if($matches[2]=='hour') $timespent_duration[$id] += $time*60*60; + // We store MINUTES in seconds + if($matches[2]=='min') $timespent_duration[$id] += $time*60; + } + } + } + } + + if (count($timespent_duration) > 0) + { + foreach($timespent_duration as $key => $val) + { + $task->fetch($key); + $task->progress = GETPOST($key . 'progress', 'int'); + $task->timespent_duration = $val; + $task->timespent_fk_user = $user->id; + if (GETPOST($key."hour") != '' && GETPOST($key."hour") >= 0) // If hour was entered + { + $task->timespent_date = dol_mktime(GETPOST($key."hour"),GETPOST($key."min"),0,GETPOST($key."month"),GETPOST($key."day"),GETPOST($key."year")); + $task->timespent_withhour = 1; + } + else + { + $task->timespent_date = dol_mktime(12,0,0,GETPOST($key."month"),GETPOST($key."day"),GETPOST($key."year")); + } + + $result=$task->addTimeSpent($user); + if ($result < 0) + { + setEventMessages($task->error, $task->errors, 'errors'); + $error++; + break; + } + } + + if (! $error) + { + setEventMessage($langs->trans("RecordSaved")); + + // Redirect to avoid submit twice on back + header('Location: '.$_SERVER["PHP_SELF"].($projectid?'?id='.$projectid:'?').($mode?'&mode='.$mode:'')); + exit; + } + } + else + { + setEventMessage($langs->trans("ErrorTimeSpentIsEmpty"), 'errors'); + } } @@ -75,7 +127,6 @@ if ($action == 'addtime' && $user->rights->projet->creer) */ $form=new Form($db); -$formother=new FormOther($db); $projectstatic=new Project($db); $project = new Project($db); $taskstatic = new Task($db); @@ -83,9 +134,8 @@ $taskstatic = new Task($db); $title=$langs->trans("TimeSpent"); if ($mine) $title=$langs->trans("MyTimeSpent"); -$usertoprocess=$user; +$usertoprocess = $user; -//$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1); $projectsListId = $projectstatic->getProjectsAuthorizedForUser($usertoprocess,0,1); // Return all project i have permission on. I want my tasks and some of my task may be on a public projet that is not my project if ($id) @@ -103,50 +153,15 @@ $tasksrole=$taskstatic->getUserRolesForProjectsOrTasks(0,$usertoprocess,($projec //var_dump($taskrole); -llxHeader("",$title,"",'','','',array('/core/js/timesheet.js')); +llxHeader("",$title,""); print_barre_liste($title, $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, "", $num); -$startdayarray=dol_get_first_day_week($day, $month, $year); - -$prev = $startdayarray; -$prev_year = $prev['prev_year']; -$prev_month = $prev['prev_month']; -$prev_day = $prev['prev_day']; -$first_day = $prev['first_day']; -$first_month= $prev['first_month']; -$first_year = $prev['first_year']; -$week = $prev['week']; - -$day = (int) $day; -$next = dol_get_next_week($first_day, $week, $first_month, $first_year); -$next_year = $next['year']; -$next_month = $next['month']; -$next_day = $next['day']; - -// Define firstdaytoshow and lastdaytoshow (warning: lastdaytoshow is last second to show + 1) -$firstdaytoshow=dol_mktime(0,0,0,$first_month,$first_day,$first_year); -$lastdaytoshow=dol_time_plus_duree($firstdaytoshow, 7, 'd'); - -$tmpday = $first_day; - -// Show navigation bar -$nav ="".img_previous($langs->trans("Previous"))."\n"; -$nav.=" ".dol_print_date(dol_mktime(0,0,0,$first_month,$first_day,$first_year),"%Y").", ".$langs->trans("Week")." ".$week; -$nav.=" \n"; -$nav.="".img_next($langs->trans("Next"))."\n"; -$nav.="   (".$langs->trans("Today").")"; -$picto='calendarweek'; - - -print '
'; +print ''; print ''; print ''; print ''; -print ''; -print ''; -print ''; $head=project_timesheet_prepare_head($mode); dol_fiche_head($head, 'inputperday', '', 0, 'task'); @@ -158,7 +173,7 @@ else if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").($onlyopened?' '.$langs->trans("OnlyOpenedProject"):'').'

'; else print $langs->trans("ProjectsPublicTaskDesc").($onlyopened?' '.$langs->trans("AlsoOnlyOpenedProject"):'').'

'; } -print "\n"; + // Filter on user /* dol_fiche_head(''); @@ -180,10 +195,6 @@ print "\n"; dol_fiche_end(); */ - -print '
'.$nav.'
'; - - print ''; print ''; print ''; @@ -194,14 +205,8 @@ print ''; print ''; if ($usertoprocess->id == $user->id) print ''; else print ''; - -$startday=dol_mktime(12, 0, 0, $startdayarray['first_month'], $startdayarray['first_day'], $startdayarray['first_year']); - -for($i=0;$i<7;$i++) -{ - print ''; -} - +print ''; +print ''; print "\n"; // By default, we can edit only tasks we are assigned to @@ -210,18 +215,7 @@ $restricteditformytask=(empty($conf->global->PROJECT_TIME_ON_ALL_TASKS_MY_PROJEC if (count($tasksarray) > 0) { $j=0; - projectLinesPerDay($j, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); - - print ' - - - - - - - - - '; + projectLinesPerTime($j, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); } else { @@ -229,23 +223,9 @@ else } print "
'.$langs->trans("Project").''.$langs->trans("ProgressDeclared").''.$langs->trans("TimeSpent").''.$langs->trans("TimeSpentByYou").''.$langs->trans("TimeSpentByUser").''.dol_print_date($startday + ($i * 3600 * 24), '%a').'
'.dol_print_date($startday + ($i * 3600 * 24), 'day').'
'.$langs->trans("DateAndHour").''.$langs->trans("Duration").'
'.$langs->trans("Total").'
 
 
 
 
 
 
 
"; -print ''."\n"; -print ''."\n"; - dol_fiche_end(); -print '
'; -print ''; -print '
'; - -print '
'."\n\n"; - - -print ''; +print ''; llxFooter(); diff --git a/htdocs/projet/activity/pertime.php b/htdocs/projet/activity/perweek.php similarity index 53% rename from htdocs/projet/activity/pertime.php rename to htdocs/projet/activity/perweek.php index 9f2dc3e99ca..8a9adc04f17 100644 --- a/htdocs/projet/activity/pertime.php +++ b/htdocs/projet/activity/perweek.php @@ -19,9 +19,9 @@ */ /** - * \file htdocs/projet/activity/perday.php + * \file htdocs/projet/activity/perweek.php * \ingroup projet - * \brief List activities of tasks (per day entry) + * \brief List activities of tasks (per week entry) */ require ("../../main.inc.php"); @@ -29,6 +29,7 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; $langs->load('projects'); @@ -47,6 +48,13 @@ $socid=0; if ($user->societe_id > 0) $socid=$user->societe_id; $result = restrictedArea($user, 'projet', $projectid); +$now=dol_now(); + +$year=GETPOST("year","int")?GETPOST("year","int"):date("Y"); +$month=GETPOST("month","int")?GETPOST("month","int"):date("m"); +$week=GETPOST("week","int")?GETPOST("week","int"):date("W"); +$day=GETPOST("day","int")?GETPOST("day","int"):date("d"); + /* * Actions @@ -56,68 +64,8 @@ if ($action == 'addtime' && $user->rights->projet->creer) { $task = new Task($db); - $timespent_duration=array(); - foreach($_POST as $key => $time) - { - if (intval($time) > 0) - { - // Hours or minutes of duration - if (preg_match("/([0-9]+)duration(hour|min)/",$key,$matches)) - { - $id = $matches[1]; - if ($id > 0) - { - // We store HOURS in seconds - if($matches[2]=='hour') $timespent_duration[$id] += $time*60*60; - // We store MINUTES in seconds - if($matches[2]=='min') $timespent_duration[$id] += $time*60; - } - } - } - } - - if (count($timespent_duration) > 0) - { - foreach($timespent_duration as $key => $val) - { - $task->fetch($key); - $task->progress = GETPOST($key . 'progress', 'int'); - $task->timespent_duration = $val; - $task->timespent_fk_user = $user->id; - if (GETPOST($key."hour") != '' && GETPOST($key."hour") >= 0) // If hour was entered - { - $task->timespent_date = dol_mktime(GETPOST($key."hour"),GETPOST($key."min"),0,GETPOST($key."month"),GETPOST($key."day"),GETPOST($key."year")); - $task->timespent_withhour = 1; - } - else - { - $task->timespent_date = dol_mktime(12,0,0,GETPOST($key."month"),GETPOST($key."day"),GETPOST($key."year")); - } - - $result=$task->addTimeSpent($user); - if ($result < 0) - { - setEventMessages($task->error, $task->errors, 'errors'); - $error++; - break; - } - } - - if (! $error) - { - setEventMessage($langs->trans("RecordSaved")); - - // Redirect to avoid submit twice on back - header('Location: '.$_SERVER["PHP_SELF"].($projectid?'?id='.$projectid:'?').($mode?'&mode='.$mode:'')); - exit; - } - } - else - { - setEventMessage($langs->trans("ErrorTimeSpentIsEmpty"), 'errors'); - } } @@ -127,6 +75,7 @@ if ($action == 'addtime' && $user->rights->projet->creer) */ $form=new Form($db); +$formother=new FormOther($db); $projectstatic=new Project($db); $project = new Project($db); $taskstatic = new Task($db); @@ -134,8 +83,9 @@ $taskstatic = new Task($db); $title=$langs->trans("TimeSpent"); if ($mine) $title=$langs->trans("MyTimeSpent"); -$usertoprocess = $user; +$usertoprocess=$user; +//$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1); $projectsListId = $projectstatic->getProjectsAuthorizedForUser($usertoprocess,0,1); // Return all project i have permission on. I want my tasks and some of my task may be on a public projet that is not my project if ($id) @@ -153,18 +103,53 @@ $tasksrole=$taskstatic->getUserRolesForProjectsOrTasks(0,$usertoprocess,($projec //var_dump($taskrole); -llxHeader("",$title,""); +llxHeader("",$title,"",'','','',array('/core/js/timesheet.js')); print_barre_liste($title, $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, "", $num); -print '
'; +$startdayarray=dol_get_first_day_week($day, $month, $year); + +$prev = $startdayarray; +$prev_year = $prev['prev_year']; +$prev_month = $prev['prev_month']; +$prev_day = $prev['prev_day']; +$first_day = $prev['first_day']; +$first_month= $prev['first_month']; +$first_year = $prev['first_year']; +$week = $prev['week']; + +$day = (int) $day; +$next = dol_get_next_week($first_day, $week, $first_month, $first_year); +$next_year = $next['year']; +$next_month = $next['month']; +$next_day = $next['day']; + +// Define firstdaytoshow and lastdaytoshow (warning: lastdaytoshow is last second to show + 1) +$firstdaytoshow=dol_mktime(0,0,0,$first_month,$first_day,$first_year); +$lastdaytoshow=dol_time_plus_duree($firstdaytoshow, 7, 'd'); + +$tmpday = $first_day; + +// Show navigation bar +$nav ="".img_previous($langs->trans("Previous"))."\n"; +$nav.=" ".dol_print_date(dol_mktime(0,0,0,$first_month,$first_day,$first_year),"%Y").", ".$langs->trans("Week")." ".$week; +$nav.=" \n"; +$nav.="".img_next($langs->trans("Next"))."\n"; +$nav.="   (".$langs->trans("Today").")"; +$picto='calendarweek'; + + +print ''; print ''; print ''; print ''; +print ''; +print ''; +print ''; $head=project_timesheet_prepare_head($mode); -dol_fiche_head($head, 'inputpertime', '', 0, 'task'); +dol_fiche_head($head, 'inputperweek', '', 0, 'task'); // Show description of content if ($mine) print $langs->trans("MyTasksDesc").($onlyopened?' '.$langs->trans("OnlyOpenedProject"):'').'

'; @@ -173,7 +158,7 @@ else if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").($onlyopened?' '.$langs->trans("OnlyOpenedProject"):'').'

'; else print $langs->trans("ProjectsPublicTaskDesc").($onlyopened?' '.$langs->trans("AlsoOnlyOpenedProject"):'').'

'; } - +print "\n"; // Filter on user /* dol_fiche_head(''); @@ -195,6 +180,10 @@ else dol_fiche_end(); */ + +print '
'.$nav.'
'; + + print ''; print ''; print ''; @@ -205,8 +194,14 @@ print ''; print ''; if ($usertoprocess->id == $user->id) print ''; else print ''; -print ''; -print ''; + +$startday=dol_mktime(12, 0, 0, $startdayarray['first_month'], $startdayarray['first_day'], $startdayarray['first_year']); + +for($i=0;$i<7;$i++) +{ + print ''; +} + print "\n"; // By default, we can edit only tasks we are assigned to @@ -215,7 +210,18 @@ $restricteditformytask=(empty($conf->global->PROJECT_TIME_ON_ALL_TASKS_MY_PROJEC if (count($tasksarray) > 0) { $j=0; - projectLinesPerTime($j, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); + projectLinesPerDay($j, $firstdaytoshow, $usertoprocess, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); + + print ' + + + + + + + + + '; } else { @@ -223,9 +229,30 @@ else } print "
'.$langs->trans("Project").''.$langs->trans("ProgressDeclared").''.$langs->trans("TimeSpent").''.$langs->trans("TimeSpentByYou").''.$langs->trans("TimeSpentByUser").''.$langs->trans("DateAndHour").''.$langs->trans("Duration").''.dol_print_date($startday + ($i * 3600 * 24), '%a').'
'.dol_print_date($startday + ($i * 3600 * 24), 'day').'
'.$langs->trans("Total").'
 
 
 
 
 
 
 
"; +print ''."\n"; +print ''."\n"; + dol_fiche_end(); -print '
'; +print '
'; +print ''; +print '
'; + +print ''."\n\n"; + +$modeinput='hours'; + +print ''; llxFooter(); diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 21293fac121..681abb411ce 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -63,6 +63,9 @@ class Project extends CommonObject var $oldcopy; + var $weekWorkLoad; // Used to store workload details of a projet + var $weekWorkLoadPerTask; // Used to store workload details of tasks of a projet + /** * Constructor @@ -1442,23 +1445,29 @@ class Project extends CommonObject /** - * load time spent into this->weekWorkLoad for all day of a week and task id + * Load time spent into this->weekWorkLoad and this->weekWorkLoadPerTask for all day of a week of project * * @param int $datestart First day of week (use dol_get_first_day to find this date) - * @param int $taskid Task id - * @param int $userid Time consumed per a particular user + * @param int $taskid Filter on a task id + * @param int $userid Time spent by a particular user * @return int <0 if OK, >0 if KO */ - public function loadTimeSpent($datestart,$taskid,$userid=0) + public function loadTimeSpent($datestart,$taskid=0,$userid=0) { $error=0; - $sql = "SELECT ptt.rowid, ptt.task_duration, ptt.task_date"; - $sql.= " FROM ".MAIN_DB_PREFIX."projet_task_time AS ptt"; - $sql.= " WHERE ptt.fk_task='".$taskid."'"; - $sql.= " AND ptt.fk_user='".$userid."'"; - $sql .= "AND (ptt.task_date >= '".$this->db->idate($datestart)."' "; - $sql .= "AND (ptt.task_date < '".$this->db->idate($datestart + 7 * 24 * 3600)."' "; + if (empty($datestart)) dol_print_error('','Error datestart parameter is empty'); + + $sql = "SELECT ptt.rowid as taskid, ptt.task_duration, ptt.task_date, ptt.fk_task"; + $sql.= " FROM ".MAIN_DB_PREFIX."projet_task_time AS ptt, ".MAIN_DB_PREFIX."projet_task as pt"; + $sql.= " WHERE ptt.fk_task = pt.rowid"; + $sql.= " AND pt.fk_projet = ".$this->id; + $sql.= " AND (ptt.task_date >= '".$this->db->idate($datestart)."' "; + $sql.= " AND ptt.task_date <= '".$this->db->idate($datestart + (7 * 24 * 3600) - 1)."')"; + if ($task_id) $sql.= " AND ptt.fk_task=".$taskid; + if (is_numeric($userid)) $sql.= " AND ptt.fk_user=".$userid; + + //print $sql; $resql=$this->db->query($sql); if ($resql) { @@ -1470,10 +1479,8 @@ class Project extends CommonObject { $obj=$this->db->fetch_object($resql); $day=$this->db->jdate($obj->task_date); - //$day=(intval(date('w',strtotime($obj->task_date)))+1)%6; - // if several tasktime in one day then only the last is used $this->weekWorkLoad[$day] += $obj->task_duration; - $this->taskTimeId[$day]= ($obj->rowid)?($obj->rowid):0; + $this->weekWorkLoadPerTask[$day][$obj->fk_task] += $obj->task_duration; $i++; } $this->db->free($resql); diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 84888484d2c..5e02efe6463 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -287,7 +287,7 @@ class Task extends CommonObject $sql.= " label=".(isset($this->label)?"'".$this->db->escape($this->label)."'":"null").","; $sql.= " description=".(isset($this->description)?"'".$this->db->escape($this->description)."'":"null").","; $sql.= " duration_effective=".(isset($this->duration_effective)?$this->duration_effective:"null").","; - $sql.= " planned_workload=".(isset($this->planned_workload)?$this->planned_workload:"0").","; + $sql.= " planned_workload=".((isset($this->planned_workload) && $this->planned_workload != '')?$this->planned_workload:"null").","; $sql.= " dateo=".($this->date_start!=''?"'".$this->db->idate($this->date_start)."'":'null').","; $sql.= " datee=".($this->date_end!=''?"'".$this->db->idate($this->date_end)."'":'null').","; $sql.= " progress=".$this->progress.","; @@ -497,8 +497,8 @@ class Task extends CommonObject * Return clicable name (with picto eventually) * * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto - * @param int $option Sur quoi pointe le lien - * @param int $mode Mode 'task', 'time', 'contact', 'note', document' define page to link to. + * @param string $option 'withproject' or '' + * @param string $mode Mode 'task', 'time', 'contact', 'note', document' define page to link to. * @return string Chaine avec URL */ function getNomUrl($withpicto=0,$option='',$mode='task') diff --git a/htdocs/projet/tasks/task.php b/htdocs/projet/tasks/task.php index b6c35b2d73c..8dd7bac68d8 100644 --- a/htdocs/projet/tasks/task.php +++ b/htdocs/projet/tasks/task.php @@ -1,6 +1,6 @@ - * Copyright (C) 2006-2014 Laurent Destailleur + * Copyright (C) 2006-2015 Laurent Destailleur * Copyright (C) 2010-2012 Regis Houssin * * This program is free software; you can redistribute it and/or modify @@ -42,7 +42,7 @@ $action=GETPOST('action','alpha'); $confirm=GETPOST('confirm','alpha'); $withproject=GETPOST('withproject','int'); $project_ref=GETPOST('project_ref','alpha'); -$planned_workload=GETPOST('planned_workloadhour')*3600+GETPOST('planned_workloadmin')*60; +$planned_workload=((GETPOST('planned_workloadhour')!='' && GETPOST('planned_workloadmin')!='')?GETPOST('planned_workloadhour')*3600+GETPOST('planned_workloadmin')*60:''); // Security check $socid=0; @@ -457,7 +457,7 @@ if ($id > 0 || ! empty($ref)) if ($object->planned_workload != '') { $tmparray=$object->getSummaryOfTimeSpent(); - if ($tmparray['total_duration'] > 0) print round($tmparray['total_duration'] / $object->planned_workload * 100, 2).' %'; + if ($tmparray['total_duration'] > 0 && ! empty($object->planned_workload)) print round($tmparray['total_duration'] / $object->planned_workload * 100, 2).' %'; else print '0 %'; } else print ''; From 840b04746820d0732efea6749139f2775d35da99 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 Mar 2015 11:20:08 +0100 Subject: [PATCH 314/429] Work on new timesheet input pages. --- htdocs/core/lib/project.lib.php | 22 +++++----------------- htdocs/projet/activity/perday.php | 8 +++++++- htdocs/projet/activity/perweek.php | 2 +- 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index d353fea2af0..938130a5936 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -506,17 +506,11 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t * @param int $restricteditformytask 0=No restriction, 1=Enable add time only if task is a task i am affected to * @return $inc */ -function projectLinesPerTime(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask=0) +function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask=0) { global $db, $user, $bc, $langs; global $form, $formother, $projectstatic, $taskstatic; - if (! is_object($formother)) - { - require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; - $formother = new FormOther($db); - } - $lastprojectid=0; $var=true; @@ -625,7 +619,7 @@ function projectLinesPerTime(&$inc, $parent, $lines, &$level, &$projectsrole, &$ print ''; //$s.='   '; $s=$form->select_duration($lines[$i]->id.'duration','',$disabledtask,'text',0,1); - $s.=' '; + //$s.=' '; print $s; print ''; @@ -639,7 +633,7 @@ function projectLinesPerTime(&$inc, $parent, $lines, &$level, &$projectsrole, &$ $inc++; $level++; - if ($lines[$i]->id) projectLinesPerTime($inc, $lines[$i]->id, $lines, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); + if ($lines[$i]->id) projectLinesPerDay($inc, $lines[$i]->id, $lines, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); $level--; } else @@ -668,17 +662,11 @@ function projectLinesPerTime(&$inc, $parent, $lines, &$level, &$projectsrole, &$ * @param int $restricteditformytask 0=No restriction, 1=Enable add time only if task is a task i am affected to * @return $inc */ -function projectLinesPerDay(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask=0) +function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask=0) { global $db, $user, $bc, $langs; global $form, $formother, $projectstatic, $taskstatic; - if (! is_object($formother)) - { - require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; - $formother = new FormOther($db); - } - $lastprojectid=0; $var=true; @@ -805,7 +793,7 @@ function projectLinesPerDay(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$l $inc++; $level++; - if ($lines[$i]->id) projectLinesPerDay($inc, $firstdaytoshow, $lines[$i]->id, $lines, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); + if ($lines[$i]->id) projectLinesPerWeek($inc, $firstdaytoshow, $fuser, $lines[$i]->id, $lines, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); $level--; } else diff --git a/htdocs/projet/activity/perday.php b/htdocs/projet/activity/perday.php index 5dc873cfccc..9c55874a762 100644 --- a/htdocs/projet/activity/perday.php +++ b/htdocs/projet/activity/perday.php @@ -29,6 +29,7 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; $langs->load('projects'); @@ -127,6 +128,7 @@ if ($action == 'addtime' && $user->rights->projet->creer) */ $form=new Form($db); +$formother = new FormOther($db); $projectstatic=new Project($db); $project = new Project($db); $taskstatic = new Task($db); @@ -215,7 +217,7 @@ $restricteditformytask=(empty($conf->global->PROJECT_TIME_ON_ALL_TASKS_MY_PROJEC if (count($tasksarray) > 0) { $j=0; - projectLinesPerTime($j, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); + projectLinesPerDay($j, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); } else { @@ -225,6 +227,10 @@ print ""; dol_fiche_end(); +print '
'; +print ''; +print '
'; + print ''; diff --git a/htdocs/projet/activity/perweek.php b/htdocs/projet/activity/perweek.php index 8a9adc04f17..548210abf7f 100644 --- a/htdocs/projet/activity/perweek.php +++ b/htdocs/projet/activity/perweek.php @@ -210,7 +210,7 @@ $restricteditformytask=(empty($conf->global->PROJECT_TIME_ON_ALL_TASKS_MY_PROJEC if (count($tasksarray) > 0) { $j=0; - projectLinesPerDay($j, $firstdaytoshow, $usertoprocess, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); + projectLinesPerWeek($j, $firstdaytoshow, $usertoprocess, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask); print ' '.$langs->trans("Total").' From 426835781a68fedd05f06cb8a2a8bececcd4e7dc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 Mar 2015 12:03:47 +0100 Subject: [PATCH 315/429] Fix hook usage --- htdocs/fourn/list.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/fourn/list.php b/htdocs/fourn/list.php index 4c16f3a1d61..2bf4b616414 100644 --- a/htdocs/fourn/list.php +++ b/htdocs/fourn/list.php @@ -104,7 +104,7 @@ if (!$user->rights->societe->client->voir && !$socid) $sql .= ", sc.fk_soc, sc.f foreach ($extrafields->attribute_list as $key => $val) $sql.=",ef.".$key; // Add fields from hooks $parameters=array(); -$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook +$result=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook $sql.=$hookmanager->resPrint; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_extrafields as ef ON ef.fk_object = s.rowid"; @@ -136,7 +136,8 @@ if ($search_categ > 0) $sql.= " AND cf.fk_categorie = ".$search_categ; if ($search_categ == -2) $sql.= " AND cf.fk_categorie IS NULL"; // Add where from hooks $parameters=array(); -$sql.=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook +$result=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; // Count total nb of records $nbtotalofrecords = 0; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) From dd82ad69fe6cae2bbf5294194d60024a212a5996 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 Mar 2015 12:30:49 +0100 Subject: [PATCH 316/429] printLeftBlock is now compliant with hook development rules. It is an "addreplace" hook so you must return content by doing ->resprints='mycontent' and not by doing return 'mycontent' --- ChangeLog | 3 ++- htdocs/main.inc.php | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 60521f04c81..e499c5b4e1c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -31,7 +31,8 @@ WARNING: Following changes may create regression for some external modules, but Dolibarr better: - Removed hoo supplierorderdao into supplier order creation. This is a business event, so we must use the trigger ORDER_SUPPLIER_CREATE instead. - +- printLeftBlock is now compliant with hook development rules. It is an "addreplace" hook so you must +return content by doing ->resprints='mycontent' and not by doing return 'mycontent' ***** ChangeLog for 3.7 compared to 3.6.* ***** diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 1855ff9b42e..edf86c52853 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1686,8 +1686,8 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me // Execute hook printLeftBlock $parameters=array(); - $leftblock=$hookmanager->executeHooks('printLeftBlock',$parameters); // Note that $action and $object may have been modified by some hooks - print $leftblock; + $reshook=$hookmanager->executeHooks('printLeftBlock',$parameters); // Note that $action and $object may have been modified by some hooks + print $hookmanager->resPrint; if (empty($conf->dol_use_jmobile) && ! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print '
'."\n"; else print ' '; // End div id="id-left" From 7ef11b2f38a09e1a920b55496065dc4e1f56ad96 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 Mar 2015 13:16:59 +0100 Subject: [PATCH 317/429] Fix selected attribute not set correctly --- htdocs/core/class/html.form.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 6d83561e2a9..c909df601f8 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4303,7 +4303,7 @@ class Form } else { - $selected=($useempty?'':' selected="selected"'); + $selected=(($useempty && $value != '0' && $value != 'no')?'':' selected="selected"'); $resultyesno .= ''."\n"; $resultyesno .= ''."\n"; } From d5afa1b29f040349eb1b27382ee0e8fa5be4d4d3 Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Wed, 18 Mar 2015 13:23:14 +0100 Subject: [PATCH 318/429] Update extrafields.class.php Link object : include only if something to display --- htdocs/core/class/extrafields.class.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 361c14319eb..a1ac0d5b6e3 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1054,6 +1054,7 @@ class ExtraFields elseif ($type == 'link') { $out=''; + $param_list=array_keys($param['options']); // 0 : ObjectName // 1 : classPath @@ -1292,14 +1293,15 @@ class ExtraFields elseif ($type == 'link') { $out=''; - $param_list=array_keys($params['options']); - // 0 : ObjectName - // 1 : classPath - $InfoFieldList = explode(":", $param_list[0]); - dol_include_once($InfoFieldList[1]); - $object = new $InfoFieldList[0]($this->db); + // only if something to display (perf) if ($value) { + $param_list=array_keys($params['options']); + // 0 : ObjectName + // 1 : classPath + $InfoFieldList = explode(":", $param_list[0]); + dol_include_once($InfoFieldList[1]); + $object = new $InfoFieldList[0]($this->db); $object->fetch($value); $value=$object->getNomUrl(3); } From bbef07ef3d212e9712115ff6e5b1da03697ec23c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 Mar 2015 14:08:37 +0100 Subject: [PATCH 319/429] Finished prototype to use hook to add a column by a module. --- htdocs/comm/prospect/list.php | 3 ++- htdocs/fourn/list.php | 30 +++++++++++++++++------------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/htdocs/comm/prospect/list.php b/htdocs/comm/prospect/list.php index 999c212a80d..b2202a21b88 100644 --- a/htdocs/comm/prospect/list.php +++ b/htdocs/comm/prospect/list.php @@ -399,7 +399,8 @@ if ($resql) print "\n"; $parameters=array(); - $formconfirm=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook + $reshook=$hookmanager->executeHooks('printFieldListSearch',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; print "\n"; diff --git a/htdocs/fourn/list.php b/htdocs/fourn/list.php index 2bf4b616414..77202f989fe 100644 --- a/htdocs/fourn/list.php +++ b/htdocs/fourn/list.php @@ -101,7 +101,7 @@ $sql = "SELECT s.rowid as socid, s.nom as name, s.zip, s.town, s.datec, st.libel $sql.= "code_fournisseur, code_compta_fournisseur"; if (!$user->rights->societe->client->voir && !$socid) $sql .= ", sc.fk_soc, sc.fk_user "; // Add fields for extrafields -foreach ($extrafields->attribute_list as $key => $val) $sql.=",ef.".$key; +foreach ($extrafields->attribute_list as $key => $val) $sql.=",ef.".$key.' as options_'.$key; // Add fields from hooks $parameters=array(); $result=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook @@ -187,11 +187,12 @@ if ($resql) print_liste_field_titre($langs->trans("SupplierCode"),$_SERVER["PHP_SELF"],"s.code_fournisseur","",$param,'align="left"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("AccountancyCode"),$_SERVER["PHP_SELF"],"s.code_compta_fournisseur","",$param,'align="left"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateCreation"),$_SERVER["PHP_SELF"],"s.datec","",$param,'align="right"',$sortfield,$sortorder); + + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"s.status","",$param,'align="right"',$sortfield,$sortorder); - - $parameters=array(); - $formconfirm=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook - print "\n"; print ''; @@ -214,13 +215,14 @@ if ($resql) print ''; print ''; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldListSearch',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print ''; print ''; print "\n"; - $parameters=array(); - $formconfirm=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook - print ''; $var=True; @@ -242,12 +244,13 @@ if ($resql) print ''.$obj->town.''."\n"; print ''.$obj->code_fournisseur.' '; print ''.$obj->code_compta_fournisseur.' '; - print ''; - print dol_print_date($db->jdate($obj->datec),'day').''; - print ''.$thirdpartystatic->getLibStatut(3).''; + print ''.dol_print_date($db->jdate($obj->datec),'day').''; $parameters=array('obj' => $obj); - $formconfirm=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook + $reshook=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + + print ''.$thirdpartystatic->getLibStatut(3).''; print "\n"; $i++; @@ -257,7 +260,8 @@ if ($resql) $db->free($resql); $parameters=array('sql' => $sql); - $formconfirm=$hookmanager->executeHooks('printFieldListFooter',$parameters); // Note that $action and $object may have been modified by hook + $reshook=$hookmanager->executeHooks('printFieldListFooter',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; } else { From 2c61717e1076d8995dd0e9cf04b9b6c2c5d1b3dd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 Mar 2015 14:19:17 +0100 Subject: [PATCH 320/429] Fix sql syntax error --- htdocs/core/class/extrafields.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 361c14319eb..c821f6a1f34 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -530,7 +530,7 @@ class ExtraFields $sql.= " ".($perms?"'".$this->db->escape($perms)."'":"null").","; $sql.= " '".$pos."',"; $sql.= " '".$alwayseditable."',"; - $sql.= " '".$param."'"; + $sql.= " '".$param."',"; $sql.= " ".$list; $sql.= ")"; dol_syslog(get_class($this)."::update_label", LOG_DEBUG); @@ -1062,7 +1062,7 @@ class ExtraFields $object = new $InfoFieldList[0]($this->db); $object->fetch($value); $out=''; - + } /* Add comments if ($type == 'date') $out.=' (YYYY-MM-DD)'; From cd2fc2f89096d05bc5cc0c4eddf9a01e8301f2da Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 Mar 2015 14:31:37 +0100 Subject: [PATCH 321/429] Hooks 'printLeftBlock' and 'formConfirm' are now compliant with hook development rules. They are "addreplace" hooks, so you must return content with"->resprints='mycontent'" and not with "return 'mycontent'" --- ChangeLog | 4 ++-- htdocs/comm/askpricesupplier/card.php | 6 +++--- htdocs/comm/propal.php | 6 +++--- htdocs/commande/card.php | 21 +++++++++++---------- htdocs/compta/facture.php | 15 ++++++++------- htdocs/fichinter/card.php | 4 +++- htdocs/fourn/commande/card.php | 4 +++- htdocs/fourn/facture/card.php | 4 +++- 8 files changed, 36 insertions(+), 28 deletions(-) diff --git a/ChangeLog b/ChangeLog index e499c5b4e1c..b641ebf3ddb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -31,8 +31,8 @@ WARNING: Following changes may create regression for some external modules, but Dolibarr better: - Removed hoo supplierorderdao into supplier order creation. This is a business event, so we must use the trigger ORDER_SUPPLIER_CREATE instead. -- printLeftBlock is now compliant with hook development rules. It is an "addreplace" hook so you must -return content by doing ->resprints='mycontent' and not by doing return 'mycontent' +- Hooks 'printLeftBlock' and 'formConfirm' are now compliant with hook development rules. They are + "addreplace" hooks, so you must return content with "->resprints='mycontent'" and not with "return 'mycontent'" ***** ChangeLog for 3.7 compared to 3.6.* ***** diff --git a/htdocs/comm/askpricesupplier/card.php b/htdocs/comm/askpricesupplier/card.php index f2ca52f1f89..cbd0436e2ef 100644 --- a/htdocs/comm/askpricesupplier/card.php +++ b/htdocs/comm/askpricesupplier/card.php @@ -1346,9 +1346,9 @@ if ($action == 'create') if (! $formconfirm) { $parameters = array('lineid' => $lineid); - $formconfirm = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified - // by - // hook + $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 diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index de68313e6f8..c9d5170f7e6 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -1680,9 +1680,9 @@ if ($action == 'create') if (! $formconfirm) { $parameters = array('lineid' => $lineid); - $formconfirm = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified - // by - // hook + $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 diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index bef752f5954..aa72ec9bf68 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -253,7 +253,7 @@ if (empty($reshook)) $object->contactid = GETPOST('contactid'); $object->fk_incoterms = GETPOST('incoterm_id', 'int'); $object->location_incoterms = GETPOST('location_incoterms', 'alpha'); - + // If creation from another object of another module (Example: origin=propal, originid=1) if (! empty($origin) && ! empty($originid)) { @@ -523,7 +523,7 @@ if (empty($reshook)) { $result = $object->setIncoterms(GETPOST('incoterm_id', 'int'), GETPOST('location_incoterms', 'alpha')); } - + // bank account else if ($action == 'setbankaccount' && $user->rights->commande->creer) { $result=$object->setBankAccount(GETPOST('fk_account', 'int')); @@ -1726,8 +1726,9 @@ if ($action == 'create' && $user->rights->commande->creer) if (! $formconfirm) { $parameters = array('lineid' => $lineid); - $formconfirm = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified - // by hook + $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 @@ -1988,10 +1989,10 @@ if ($action == 'create' && $user->rights->commande->creer) print ''; print ''; } - + // Incoterms if (!empty($conf->incoterm->enabled)) - { + { print ''; print ''; } - + // Other attributes $cols = 3; include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_view.tpl.php'; @@ -2243,10 +2244,10 @@ if ($action == 'create' && $user->rights->commande->creer) } // Cancel order - if ($object->statut == 1 && + if ($object->statut == 1 && ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->cloturer)) || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->commande->order_advance->annuler))) - ) + ) { print ''; } diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index d38519bf6d5..f87f797509b 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -324,7 +324,7 @@ if (empty($reshook)) { $result = $object->setIncoterms(GETPOST('incoterm_id', 'int'), GETPOST('location_incoterms', 'alpha')); } - + // bank account else if ($action == 'setbankaccount' && $user->rights->facture->creer) { @@ -2289,7 +2289,7 @@ if ($action == 'create') print $form->select_incoterms((!empty($objectsrc->fk_incoterms) ? $objectsrc->fk_incoterms : ''), (!empty($objectsrc->location_incoterms)?$objectsrc->location_incoterms:'')); print ''; } - + // Other attributes $parameters = array('objectsrc' => $objectsrc,'colspan' => ' colspan="3"'); $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by @@ -2749,8 +2749,9 @@ if ($action == 'create') if (! $formconfirm) { $parameters = array('lineid' => $lineid); - $formconfirm = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by - // hook + $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 @@ -3389,10 +3390,10 @@ if ($action == 'create') print ''; print ''; } - + // Incoterms if (!empty($conf->incoterm->enabled)) - { + { print '
'; print $langs->trans('IncotermLabel'); @@ -2005,13 +2006,13 @@ if ($action == 'create' && $user->rights->commande->creer) { print $form->textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1); } - else + else { print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:''), $_SERVER['PHP_SELF'].'?id='.$object->id); } print '
'; print '
'; print $langs->trans('IncotermLabel'); @@ -3406,7 +3407,7 @@ if ($action == 'create') { print $form->textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1); } - else + else { print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:''), $_SERVER['PHP_SELF'].'?id='.$object->id); } diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index 661ffc9af30..9eb9b243830 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -1210,7 +1210,9 @@ else if ($id > 0 || ! empty($ref)) if (!$formconfirm) { $parameters=array('lineid'=>$lineid); - $formconfirm=$hookmanager->executeHooks('formConfirm',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + $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 diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 41d06bebf43..3f6877d8d14 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1733,7 +1733,9 @@ elseif (! empty($object->id)) if (!$formconfirm) { $parameters=array('lineid'=>$lineid); - $formconfirm=$hookmanager->executeHooks('formConfirm',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + $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 diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 1a37baa9937..cd6a9f64abd 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -1716,7 +1716,9 @@ else if (!$formconfirm) { $parameters=array('lineid'=>$lineid); - $formconfirm=$hookmanager->executeHooks('formConfirm',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + $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 From b0b88be81fdbe9b55db48fdfed51da70ddef806b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 Mar 2015 15:27:27 +0100 Subject: [PATCH 322/429] Sync transifex --- .tx/config | 6 + htdocs/core/lib/project.lib.php | 4 +- htdocs/langs/ar_SA/bills.lang | 5 +- htdocs/langs/ar_SA/incoterm.lang | 7 + htdocs/langs/ar_SA/printing.lang | 74 ++ htdocs/langs/ar_SA/projects.lang | 8 +- htdocs/langs/bg_BG/bills.lang | 5 +- htdocs/langs/bg_BG/incoterm.lang | 7 + htdocs/langs/bg_BG/printing.lang | 74 ++ htdocs/langs/bg_BG/projects.lang | 8 +- htdocs/langs/bn_BD/accountancy.lang | 160 +++ htdocs/langs/bn_BD/admin.lang | 1603 +++++++++++++++++++++++++ htdocs/langs/bn_BD/agenda.lang | 93 ++ htdocs/langs/bn_BD/banks.lang | 165 +++ htdocs/langs/bn_BD/bills.lang | 431 +++++++ htdocs/langs/bn_BD/bookmarks.lang | 19 + htdocs/langs/bn_BD/boxes.lang | 96 ++ htdocs/langs/bn_BD/cashdesk.lang | 40 + htdocs/langs/bn_BD/categories.lang | 112 ++ htdocs/langs/bn_BD/commercial.lang | 96 ++ htdocs/langs/bn_BD/companies.lang | 414 +++++++ htdocs/langs/bn_BD/compta.lang | 207 ++++ htdocs/langs/bn_BD/contracts.lang | 103 ++ htdocs/langs/bn_BD/cron.lang | 87 ++ htdocs/langs/bn_BD/deliveries.lang | 28 + htdocs/langs/bn_BD/dict.lang | 327 +++++ htdocs/langs/bn_BD/donations.lang | 38 + htdocs/langs/bn_BD/ecm.lang | 57 + htdocs/langs/bn_BD/errors.lang | 183 +++ htdocs/langs/bn_BD/exports.lang | 134 +++ htdocs/langs/bn_BD/externalsite.lang | 5 + htdocs/langs/bn_BD/ftp.lang | 12 + htdocs/langs/bn_BD/help.lang | 28 + htdocs/langs/bn_BD/holiday.lang | 148 +++ htdocs/langs/bn_BD/incoterm.lang | 7 + htdocs/langs/bn_BD/install.lang | 214 ++++ htdocs/langs/bn_BD/interventions.lang | 53 + htdocs/langs/bn_BD/languages.lang | 72 ++ htdocs/langs/bn_BD/ldap.lang | 29 + htdocs/langs/bn_BD/link.lang | 8 + htdocs/langs/bn_BD/mailmanspip.lang | 27 + htdocs/langs/bn_BD/mails.lang | 141 +++ htdocs/langs/bn_BD/main.lang | 725 +++++++++++ htdocs/langs/bn_BD/margins.lang | 45 + htdocs/langs/bn_BD/members.lang | 206 ++++ htdocs/langs/bn_BD/opensurvey.lang | 66 + htdocs/langs/bn_BD/orders.lang | 166 +++ htdocs/langs/bn_BD/other.lang | 238 ++++ htdocs/langs/bn_BD/paybox.lang | 40 + htdocs/langs/bn_BD/paypal.lang | 25 + htdocs/langs/bn_BD/printing.lang | 74 ++ htdocs/langs/bn_BD/productbatch.lang | 21 + htdocs/langs/bn_BD/products.lang | 256 ++++ htdocs/langs/bn_BD/projects.lang | 144 +++ htdocs/langs/bn_BD/propal.lang | 100 ++ htdocs/langs/bn_BD/resource.lang | 34 + htdocs/langs/bn_BD/salaries.lang | 13 + htdocs/langs/bn_BD/sendings.lang | 85 ++ htdocs/langs/bn_BD/sms.lang | 53 + htdocs/langs/bn_BD/stocks.lang | 134 +++ htdocs/langs/bn_BD/suppliers.lang | 45 + htdocs/langs/bn_BD/trips.lang | 126 ++ htdocs/langs/bn_BD/users.lang | 122 ++ htdocs/langs/bn_BD/withdrawals.lang | 97 ++ htdocs/langs/bn_BD/workflow.lang | 11 + htdocs/langs/bs_BA/bills.lang | 5 +- htdocs/langs/bs_BA/incoterm.lang | 7 + htdocs/langs/bs_BA/printing.lang | 74 ++ htdocs/langs/bs_BA/projects.lang | 8 +- htdocs/langs/ca_ES/bills.lang | 5 +- htdocs/langs/ca_ES/incoterm.lang | 7 + htdocs/langs/ca_ES/printing.lang | 74 ++ htdocs/langs/ca_ES/projects.lang | 8 +- htdocs/langs/cs_CZ/bills.lang | 5 +- htdocs/langs/cs_CZ/incoterm.lang | 7 + htdocs/langs/cs_CZ/printing.lang | 74 ++ htdocs/langs/cs_CZ/projects.lang | 8 +- htdocs/langs/da_DK/bills.lang | 5 +- htdocs/langs/da_DK/incoterm.lang | 7 + htdocs/langs/da_DK/printing.lang | 74 ++ htdocs/langs/da_DK/projects.lang | 8 +- htdocs/langs/de_DE/bills.lang | 5 +- htdocs/langs/de_DE/incoterm.lang | 7 + htdocs/langs/de_DE/printing.lang | 74 ++ htdocs/langs/de_DE/projects.lang | 8 +- htdocs/langs/el_GR/bills.lang | 5 +- htdocs/langs/el_GR/incoterm.lang | 7 + htdocs/langs/el_GR/printing.lang | 74 ++ htdocs/langs/el_GR/projects.lang | 8 +- htdocs/langs/en_AU/main.lang | 1 + htdocs/langs/en_CA/main.lang | 1 + htdocs/langs/en_GB/bills.lang | 24 - htdocs/langs/en_GB/commercial.lang | 2 - htdocs/langs/en_GB/cron.lang | 3 - htdocs/langs/en_GB/main.lang | 1 + htdocs/langs/en_GB/orders.lang | 3 - htdocs/langs/en_GB/suppliers.lang | 2 - htdocs/langs/en_GB/trips.lang | 14 - htdocs/langs/en_IN/main.lang | 1 + htdocs/langs/en_NZ/main.lang | 1 + htdocs/langs/en_SA/main.lang | 1 + htdocs/langs/en_US/incoterm.lang | 7 + htdocs/langs/en_US/products.lang | 0 htdocs/langs/en_ZA/main.lang | 1 + htdocs/langs/es_AR/bills.lang | 21 - htdocs/langs/es_AR/cron.lang | 3 - htdocs/langs/es_AR/orders.lang | 3 - htdocs/langs/es_AR/trips.lang | 13 - htdocs/langs/es_CO/admin.lang | 1 - htdocs/langs/es_CO/bills.lang | 2 - htdocs/langs/es_CO/cron.lang | 3 - htdocs/langs/es_CO/externalsite.lang | 2 + htdocs/langs/es_CO/main.lang | 53 +- htdocs/langs/es_CO/orders.lang | 3 - htdocs/langs/es_CO/salaries.lang | 6 + htdocs/langs/es_CO/trips.lang | 13 - htdocs/langs/es_ES/bills.lang | 5 +- htdocs/langs/es_ES/incoterm.lang | 7 + htdocs/langs/es_ES/printing.lang | 74 ++ htdocs/langs/es_ES/projects.lang | 8 +- htdocs/langs/et_EE/bills.lang | 5 +- htdocs/langs/et_EE/incoterm.lang | 7 + htdocs/langs/et_EE/printing.lang | 74 ++ htdocs/langs/et_EE/projects.lang | 8 +- htdocs/langs/eu_ES/bills.lang | 5 +- htdocs/langs/eu_ES/incoterm.lang | 7 + htdocs/langs/eu_ES/printing.lang | 74 ++ htdocs/langs/eu_ES/projects.lang | 8 +- htdocs/langs/fa_IR/bills.lang | 5 +- htdocs/langs/fa_IR/boxes.lang | 49 +- htdocs/langs/fa_IR/categories.lang | 4 +- htdocs/langs/fa_IR/deliveries.lang | 4 +- htdocs/langs/fa_IR/incoterm.lang | 7 + htdocs/langs/fa_IR/printing.lang | 74 ++ htdocs/langs/fa_IR/projects.lang | 8 +- htdocs/langs/fi_FI/bills.lang | 5 +- htdocs/langs/fi_FI/incoterm.lang | 7 + htdocs/langs/fi_FI/printing.lang | 74 ++ htdocs/langs/fi_FI/projects.lang | 8 +- htdocs/langs/fr_FR/bills.lang | 5 +- htdocs/langs/fr_FR/incoterm.lang | 2 +- htdocs/langs/fr_FR/printing.lang | 74 ++ htdocs/langs/fr_FR/projects.lang | 10 +- htdocs/langs/he_IL/bills.lang | 5 +- htdocs/langs/he_IL/incoterm.lang | 7 + htdocs/langs/he_IL/printing.lang | 74 ++ htdocs/langs/he_IL/projects.lang | 8 +- htdocs/langs/hr_HR/bills.lang | 5 +- htdocs/langs/hr_HR/incoterm.lang | 7 + htdocs/langs/hr_HR/printing.lang | 74 ++ htdocs/langs/hr_HR/projects.lang | 8 +- htdocs/langs/hu_HU/bills.lang | 5 +- htdocs/langs/hu_HU/incoterm.lang | 7 + htdocs/langs/hu_HU/printing.lang | 74 ++ htdocs/langs/hu_HU/projects.lang | 8 +- htdocs/langs/id_ID/bills.lang | 5 +- htdocs/langs/id_ID/incoterm.lang | 7 + htdocs/langs/id_ID/printing.lang | 74 ++ htdocs/langs/id_ID/projects.lang | 8 +- htdocs/langs/is_IS/bills.lang | 5 +- htdocs/langs/is_IS/incoterm.lang | 7 + htdocs/langs/is_IS/printing.lang | 74 ++ htdocs/langs/is_IS/projects.lang | 8 +- htdocs/langs/it_IT/bills.lang | 5 +- htdocs/langs/it_IT/incoterm.lang | 7 + htdocs/langs/it_IT/printing.lang | 74 ++ htdocs/langs/it_IT/projects.lang | 8 +- htdocs/langs/ja_JP/bills.lang | 5 +- htdocs/langs/ja_JP/incoterm.lang | 7 + htdocs/langs/ja_JP/printing.lang | 74 ++ htdocs/langs/ja_JP/projects.lang | 8 +- htdocs/langs/ka_GE/bills.lang | 5 +- htdocs/langs/ka_GE/incoterm.lang | 7 + htdocs/langs/ka_GE/printing.lang | 74 ++ htdocs/langs/ka_GE/projects.lang | 8 +- htdocs/langs/kn_IN/bills.lang | 5 +- htdocs/langs/kn_IN/incoterm.lang | 7 + htdocs/langs/kn_IN/printing.lang | 74 ++ htdocs/langs/kn_IN/projects.lang | 8 +- htdocs/langs/ko_KR/bills.lang | 5 +- htdocs/langs/ko_KR/incoterm.lang | 7 + htdocs/langs/ko_KR/printing.lang | 74 ++ htdocs/langs/ko_KR/projects.lang | 8 +- htdocs/langs/lo_LA/bills.lang | 5 +- htdocs/langs/lo_LA/incoterm.lang | 7 + htdocs/langs/lo_LA/printing.lang | 74 ++ htdocs/langs/lo_LA/projects.lang | 8 +- htdocs/langs/lt_LT/bills.lang | 5 +- htdocs/langs/lt_LT/incoterm.lang | 7 + htdocs/langs/lt_LT/printing.lang | 74 ++ htdocs/langs/lt_LT/projects.lang | 8 +- htdocs/langs/lv_LV/admin.lang | 10 +- htdocs/langs/lv_LV/bills.lang | 5 +- htdocs/langs/lv_LV/incoterm.lang | 7 + htdocs/langs/lv_LV/printing.lang | 74 ++ htdocs/langs/lv_LV/projects.lang | 8 +- htdocs/langs/mk_MK/bills.lang | 5 +- htdocs/langs/mk_MK/incoterm.lang | 7 + htdocs/langs/mk_MK/printing.lang | 74 ++ htdocs/langs/mk_MK/projects.lang | 8 +- htdocs/langs/nb_NO/bills.lang | 5 +- htdocs/langs/nb_NO/incoterm.lang | 7 + htdocs/langs/nb_NO/printing.lang | 74 ++ htdocs/langs/nb_NO/projects.lang | 8 +- htdocs/langs/nl_NL/bills.lang | 5 +- htdocs/langs/nl_NL/incoterm.lang | 7 + htdocs/langs/nl_NL/printing.lang | 74 ++ htdocs/langs/nl_NL/projects.lang | 8 +- htdocs/langs/pl_PL/bills.lang | 5 +- htdocs/langs/pl_PL/incoterm.lang | 7 + htdocs/langs/pl_PL/interventions.lang | 32 +- htdocs/langs/pl_PL/mailmanspip.lang | 52 +- htdocs/langs/pl_PL/mails.lang | 66 +- htdocs/langs/pl_PL/printing.lang | 74 ++ htdocs/langs/pl_PL/projects.lang | 8 +- htdocs/langs/pl_PL/workflow.lang | 10 +- htdocs/langs/pt_BR/banks.lang | 2 +- htdocs/langs/pt_BR/bills.lang | 42 +- htdocs/langs/pt_BR/commercial.lang | 1 - htdocs/langs/pt_BR/contracts.lang | 3 + htdocs/langs/pt_BR/cron.lang | 5 +- htdocs/langs/pt_BR/ecm.lang | 2 + htdocs/langs/pt_BR/errors.lang | 19 +- htdocs/langs/pt_BR/exports.lang | 2 +- htdocs/langs/pt_BR/externalsite.lang | 1 + htdocs/langs/pt_BR/interventions.lang | 11 + htdocs/langs/pt_BR/link.lang | 8 + htdocs/langs/pt_BR/margins.lang | 1 + htdocs/langs/pt_BR/printing.lang | 59 + htdocs/langs/pt_BR/products.lang | 20 +- htdocs/langs/pt_BR/projects.lang | 6 +- htdocs/langs/pt_BR/salaries.lang | 4 + htdocs/langs/pt_BR/sendings.lang | 4 - htdocs/langs/pt_BR/stocks.lang | 6 +- htdocs/langs/pt_BR/trips.lang | 12 - htdocs/langs/pt_BR/withdrawals.lang | 3 +- htdocs/langs/pt_BR/workflow.lang | 2 +- htdocs/langs/pt_PT/bills.lang | 5 +- htdocs/langs/pt_PT/incoterm.lang | 7 + htdocs/langs/pt_PT/printing.lang | 74 ++ htdocs/langs/pt_PT/projects.lang | 8 +- htdocs/langs/ro_RO/bills.lang | 5 +- htdocs/langs/ro_RO/incoterm.lang | 7 + htdocs/langs/ro_RO/printing.lang | 74 ++ htdocs/langs/ro_RO/productbatch.lang | 2 +- htdocs/langs/ro_RO/products.lang | 8 +- htdocs/langs/ro_RO/projects.lang | 22 +- htdocs/langs/ro_RO/salaries.lang | 2 +- htdocs/langs/ro_RO/stocks.lang | 4 +- htdocs/langs/ro_RO/trips.lang | 162 +-- htdocs/langs/ru_RU/bills.lang | 5 +- htdocs/langs/ru_RU/incoterm.lang | 7 + htdocs/langs/ru_RU/printing.lang | 74 ++ htdocs/langs/ru_RU/projects.lang | 8 +- htdocs/langs/sk_SK/bills.lang | 5 +- htdocs/langs/sk_SK/incoterm.lang | 7 + htdocs/langs/sk_SK/printing.lang | 74 ++ htdocs/langs/sk_SK/projects.lang | 8 +- htdocs/langs/sl_SI/bills.lang | 5 +- htdocs/langs/sl_SI/incoterm.lang | 7 + htdocs/langs/sl_SI/install.lang | 2 +- htdocs/langs/sl_SI/main.lang | 12 +- htdocs/langs/sl_SI/printing.lang | 74 ++ htdocs/langs/sl_SI/projects.lang | 8 +- htdocs/langs/sq_AL/bills.lang | 5 +- htdocs/langs/sq_AL/incoterm.lang | 7 + htdocs/langs/sq_AL/printing.lang | 74 ++ htdocs/langs/sq_AL/projects.lang | 8 +- htdocs/langs/sv_SE/bills.lang | 5 +- htdocs/langs/sv_SE/incoterm.lang | 7 + htdocs/langs/sv_SE/printing.lang | 74 ++ htdocs/langs/sv_SE/projects.lang | 8 +- htdocs/langs/sw_SW/bills.lang | 5 +- htdocs/langs/sw_SW/projects.lang | 8 +- htdocs/langs/th_TH/bills.lang | 5 +- htdocs/langs/th_TH/incoterm.lang | 7 + htdocs/langs/th_TH/printing.lang | 74 ++ htdocs/langs/th_TH/projects.lang | 8 +- htdocs/langs/tr_TR/agenda.lang | 2 +- htdocs/langs/tr_TR/bills.lang | 5 +- htdocs/langs/tr_TR/incoterm.lang | 7 + htdocs/langs/tr_TR/printing.lang | 74 ++ htdocs/langs/tr_TR/projects.lang | 12 +- htdocs/langs/uk_UA/bills.lang | 5 +- htdocs/langs/uk_UA/incoterm.lang | 7 + htdocs/langs/uk_UA/printing.lang | 74 ++ htdocs/langs/uk_UA/projects.lang | 8 +- htdocs/langs/uz_UZ/bills.lang | 5 +- htdocs/langs/uz_UZ/projects.lang | 8 +- htdocs/langs/vi_VN/bills.lang | 5 +- htdocs/langs/vi_VN/incoterm.lang | 7 + htdocs/langs/vi_VN/printing.lang | 74 ++ htdocs/langs/vi_VN/projects.lang | 8 +- htdocs/langs/zh_CN/bills.lang | 5 +- htdocs/langs/zh_CN/incoterm.lang | 7 + htdocs/langs/zh_CN/printing.lang | 74 ++ htdocs/langs/zh_CN/projects.lang | 8 +- htdocs/langs/zh_TW/bills.lang | 5 +- htdocs/langs/zh_TW/incoterm.lang | 7 + htdocs/langs/zh_TW/printing.lang | 74 ++ htdocs/langs/zh_TW/projects.lang | 8 +- htdocs/projet/activity/perweek.php | 93 +- 302 files changed, 12416 insertions(+), 646 deletions(-) create mode 100644 htdocs/langs/ar_SA/incoterm.lang create mode 100644 htdocs/langs/ar_SA/printing.lang create mode 100644 htdocs/langs/bg_BG/incoterm.lang create mode 100644 htdocs/langs/bg_BG/printing.lang create mode 100644 htdocs/langs/bn_BD/accountancy.lang create mode 100644 htdocs/langs/bn_BD/admin.lang create mode 100644 htdocs/langs/bn_BD/agenda.lang create mode 100644 htdocs/langs/bn_BD/banks.lang create mode 100644 htdocs/langs/bn_BD/bills.lang create mode 100644 htdocs/langs/bn_BD/bookmarks.lang create mode 100644 htdocs/langs/bn_BD/boxes.lang create mode 100644 htdocs/langs/bn_BD/cashdesk.lang create mode 100644 htdocs/langs/bn_BD/categories.lang create mode 100644 htdocs/langs/bn_BD/commercial.lang create mode 100644 htdocs/langs/bn_BD/companies.lang create mode 100644 htdocs/langs/bn_BD/compta.lang create mode 100644 htdocs/langs/bn_BD/contracts.lang create mode 100644 htdocs/langs/bn_BD/cron.lang create mode 100644 htdocs/langs/bn_BD/deliveries.lang create mode 100644 htdocs/langs/bn_BD/dict.lang create mode 100644 htdocs/langs/bn_BD/donations.lang create mode 100644 htdocs/langs/bn_BD/ecm.lang create mode 100644 htdocs/langs/bn_BD/errors.lang create mode 100644 htdocs/langs/bn_BD/exports.lang create mode 100644 htdocs/langs/bn_BD/externalsite.lang create mode 100644 htdocs/langs/bn_BD/ftp.lang create mode 100644 htdocs/langs/bn_BD/help.lang create mode 100644 htdocs/langs/bn_BD/holiday.lang create mode 100644 htdocs/langs/bn_BD/incoterm.lang create mode 100644 htdocs/langs/bn_BD/install.lang create mode 100644 htdocs/langs/bn_BD/interventions.lang create mode 100644 htdocs/langs/bn_BD/languages.lang create mode 100644 htdocs/langs/bn_BD/ldap.lang create mode 100644 htdocs/langs/bn_BD/link.lang create mode 100644 htdocs/langs/bn_BD/mailmanspip.lang create mode 100644 htdocs/langs/bn_BD/mails.lang create mode 100644 htdocs/langs/bn_BD/main.lang create mode 100644 htdocs/langs/bn_BD/margins.lang create mode 100644 htdocs/langs/bn_BD/members.lang create mode 100644 htdocs/langs/bn_BD/opensurvey.lang create mode 100644 htdocs/langs/bn_BD/orders.lang create mode 100644 htdocs/langs/bn_BD/other.lang create mode 100644 htdocs/langs/bn_BD/paybox.lang create mode 100644 htdocs/langs/bn_BD/paypal.lang create mode 100644 htdocs/langs/bn_BD/printing.lang create mode 100644 htdocs/langs/bn_BD/productbatch.lang create mode 100644 htdocs/langs/bn_BD/products.lang create mode 100644 htdocs/langs/bn_BD/projects.lang create mode 100644 htdocs/langs/bn_BD/propal.lang create mode 100644 htdocs/langs/bn_BD/resource.lang create mode 100644 htdocs/langs/bn_BD/salaries.lang create mode 100644 htdocs/langs/bn_BD/sendings.lang create mode 100644 htdocs/langs/bn_BD/sms.lang create mode 100644 htdocs/langs/bn_BD/stocks.lang create mode 100644 htdocs/langs/bn_BD/suppliers.lang create mode 100644 htdocs/langs/bn_BD/trips.lang create mode 100644 htdocs/langs/bn_BD/users.lang create mode 100644 htdocs/langs/bn_BD/withdrawals.lang create mode 100644 htdocs/langs/bn_BD/workflow.lang create mode 100644 htdocs/langs/bs_BA/incoterm.lang create mode 100644 htdocs/langs/bs_BA/printing.lang create mode 100644 htdocs/langs/ca_ES/incoterm.lang create mode 100644 htdocs/langs/ca_ES/printing.lang create mode 100644 htdocs/langs/cs_CZ/incoterm.lang create mode 100644 htdocs/langs/cs_CZ/printing.lang create mode 100644 htdocs/langs/da_DK/incoterm.lang create mode 100644 htdocs/langs/da_DK/printing.lang create mode 100644 htdocs/langs/de_DE/incoterm.lang create mode 100644 htdocs/langs/de_DE/printing.lang create mode 100644 htdocs/langs/el_GR/incoterm.lang create mode 100644 htdocs/langs/el_GR/printing.lang delete mode 100644 htdocs/langs/en_GB/bills.lang delete mode 100644 htdocs/langs/en_GB/commercial.lang delete mode 100644 htdocs/langs/en_GB/cron.lang delete mode 100644 htdocs/langs/en_GB/orders.lang delete mode 100644 htdocs/langs/en_GB/suppliers.lang delete mode 100644 htdocs/langs/en_GB/trips.lang create mode 100644 htdocs/langs/en_US/incoterm.lang mode change 100755 => 100644 htdocs/langs/en_US/products.lang delete mode 100644 htdocs/langs/es_AR/bills.lang delete mode 100644 htdocs/langs/es_AR/cron.lang delete mode 100644 htdocs/langs/es_AR/orders.lang delete mode 100644 htdocs/langs/es_AR/trips.lang delete mode 100644 htdocs/langs/es_CO/bills.lang delete mode 100644 htdocs/langs/es_CO/cron.lang create mode 100644 htdocs/langs/es_CO/externalsite.lang delete mode 100644 htdocs/langs/es_CO/orders.lang create mode 100644 htdocs/langs/es_CO/salaries.lang delete mode 100644 htdocs/langs/es_CO/trips.lang create mode 100644 htdocs/langs/es_ES/incoterm.lang create mode 100644 htdocs/langs/es_ES/printing.lang create mode 100644 htdocs/langs/et_EE/incoterm.lang create mode 100644 htdocs/langs/et_EE/printing.lang create mode 100644 htdocs/langs/eu_ES/incoterm.lang create mode 100644 htdocs/langs/eu_ES/printing.lang create mode 100644 htdocs/langs/fa_IR/incoterm.lang create mode 100644 htdocs/langs/fa_IR/printing.lang create mode 100644 htdocs/langs/fi_FI/incoterm.lang create mode 100644 htdocs/langs/fi_FI/printing.lang create mode 100644 htdocs/langs/fr_FR/printing.lang create mode 100644 htdocs/langs/he_IL/incoterm.lang create mode 100644 htdocs/langs/he_IL/printing.lang create mode 100644 htdocs/langs/hr_HR/incoterm.lang create mode 100644 htdocs/langs/hr_HR/printing.lang create mode 100644 htdocs/langs/hu_HU/incoterm.lang create mode 100644 htdocs/langs/hu_HU/printing.lang create mode 100644 htdocs/langs/id_ID/incoterm.lang create mode 100644 htdocs/langs/id_ID/printing.lang create mode 100644 htdocs/langs/is_IS/incoterm.lang create mode 100644 htdocs/langs/is_IS/printing.lang create mode 100644 htdocs/langs/it_IT/incoterm.lang create mode 100644 htdocs/langs/it_IT/printing.lang create mode 100644 htdocs/langs/ja_JP/incoterm.lang create mode 100644 htdocs/langs/ja_JP/printing.lang create mode 100644 htdocs/langs/ka_GE/incoterm.lang create mode 100644 htdocs/langs/ka_GE/printing.lang create mode 100644 htdocs/langs/kn_IN/incoterm.lang create mode 100644 htdocs/langs/kn_IN/printing.lang create mode 100644 htdocs/langs/ko_KR/incoterm.lang create mode 100644 htdocs/langs/ko_KR/printing.lang create mode 100644 htdocs/langs/lo_LA/incoterm.lang create mode 100644 htdocs/langs/lo_LA/printing.lang create mode 100644 htdocs/langs/lt_LT/incoterm.lang create mode 100644 htdocs/langs/lt_LT/printing.lang create mode 100644 htdocs/langs/lv_LV/incoterm.lang create mode 100644 htdocs/langs/lv_LV/printing.lang create mode 100644 htdocs/langs/mk_MK/incoterm.lang create mode 100644 htdocs/langs/mk_MK/printing.lang create mode 100644 htdocs/langs/nb_NO/incoterm.lang create mode 100644 htdocs/langs/nb_NO/printing.lang create mode 100644 htdocs/langs/nl_NL/incoterm.lang create mode 100644 htdocs/langs/nl_NL/printing.lang create mode 100644 htdocs/langs/pl_PL/incoterm.lang create mode 100644 htdocs/langs/pl_PL/printing.lang create mode 100644 htdocs/langs/pt_BR/link.lang create mode 100644 htdocs/langs/pt_BR/printing.lang create mode 100644 htdocs/langs/pt_PT/incoterm.lang create mode 100644 htdocs/langs/pt_PT/printing.lang create mode 100644 htdocs/langs/ro_RO/incoterm.lang create mode 100644 htdocs/langs/ro_RO/printing.lang create mode 100644 htdocs/langs/ru_RU/incoterm.lang create mode 100644 htdocs/langs/ru_RU/printing.lang create mode 100644 htdocs/langs/sk_SK/incoterm.lang create mode 100644 htdocs/langs/sk_SK/printing.lang create mode 100644 htdocs/langs/sl_SI/incoterm.lang create mode 100644 htdocs/langs/sl_SI/printing.lang create mode 100644 htdocs/langs/sq_AL/incoterm.lang create mode 100644 htdocs/langs/sq_AL/printing.lang create mode 100644 htdocs/langs/sv_SE/incoterm.lang create mode 100644 htdocs/langs/sv_SE/printing.lang create mode 100644 htdocs/langs/th_TH/incoterm.lang create mode 100644 htdocs/langs/th_TH/printing.lang create mode 100644 htdocs/langs/tr_TR/incoterm.lang create mode 100644 htdocs/langs/tr_TR/printing.lang create mode 100644 htdocs/langs/uk_UA/incoterm.lang create mode 100644 htdocs/langs/uk_UA/printing.lang create mode 100644 htdocs/langs/vi_VN/incoterm.lang create mode 100644 htdocs/langs/vi_VN/printing.lang create mode 100644 htdocs/langs/zh_CN/incoterm.lang create mode 100644 htdocs/langs/zh_CN/printing.lang create mode 100644 htdocs/langs/zh_TW/incoterm.lang create mode 100644 htdocs/langs/zh_TW/printing.lang diff --git a/.tx/config b/.tx/config index 2a5224f1667..0e71a09468e 100644 --- a/.tx/config +++ b/.tx/config @@ -146,6 +146,12 @@ source_file = htdocs/langs/en_US/holiday.lang source_lang = en_US type = MOZILLAPROPERTIES +[dolibarr.incoterm] +file_filter = htdocs/langs//incoterm.lang +source_file = htdocs/langs/en_US/incoterm.lang +source_lang = en_US +type = MOZILLAPROPERTIES + [dolibarr.install] file_filter = htdocs/langs//install.lang source_file = htdocs/langs/en_US/install.lang diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 938130a5936..0d4b43c9172 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -193,13 +193,13 @@ function project_timesheet_prepare_head($mode) $h++; } - if (empty($conf->global->PROJECT_DISABLE_TIMESHEET_PERACTION)) + /*if (empty($conf->global->PROJECT_DISABLE_TIMESHEET_PERACTION)) { $head[$h][0] = DOL_URL_ROOT."/projet/activity/peraction.php".($mode?'?mode='.$mode:''); $head[$h][1] = $langs->trans("InputPerAction"); $head[$h][2] = 'inputperaction'; $h++; - } + }*/ complete_head_from_modules($conf,$langs,null,$head,$h,'project_timesheet'); diff --git a/htdocs/langs/ar_SA/bills.lang b/htdocs/langs/ar_SA/bills.lang index d0514e828ab..1ca60a487d1 100644 --- a/htdocs/langs/ar_SA/bills.lang +++ b/htdocs/langs/ar_SA/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=المدفوعات قد فعلت PaymentsBackAlreadyDone=Payments back already done PaymentRule=دفع الحكم PaymentMode=نوع الدفع -PaymentConditions=مدة السداد -PaymentConditionsShort=مدة السداد +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=دفع مبلغ ValidatePayment=Validate payment PaymentHigherThanReminderToPay=دفع أعلى من دفع تذكرة diff --git a/htdocs/langs/ar_SA/incoterm.lang b/htdocs/langs/ar_SA/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/ar_SA/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/ar_SA/printing.lang b/htdocs/langs/ar_SA/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/ar_SA/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/ar_SA/projects.lang b/htdocs/langs/ar_SA/projects.lang index b1625a43fdf..61d3720906e 100644 --- a/htdocs/langs/ar_SA/projects.lang +++ b/htdocs/langs/ar_SA/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=وهناك مشروع كامل لنموذج التقرير (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/bg_BG/bills.lang b/htdocs/langs/bg_BG/bills.lang index 8e51c4cf697..afa18f81cac 100644 --- a/htdocs/langs/bg_BG/bills.lang +++ b/htdocs/langs/bg_BG/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Плащания направили PaymentsBackAlreadyDone=Payments back already done PaymentRule=Плащане правило PaymentMode=Начин на плащане -PaymentConditions=Начин на плащане -PaymentConditionsShort=Начин на плащане +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Сума за плащане ValidatePayment=Проверка на плащане PaymentHigherThanReminderToPay=Плащането по-висока от напомняне за плащане diff --git a/htdocs/langs/bg_BG/incoterm.lang b/htdocs/langs/bg_BG/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/bg_BG/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/bg_BG/printing.lang b/htdocs/langs/bg_BG/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/bg_BG/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/bg_BG/projects.lang b/htdocs/langs/bg_BG/projects.lang index 76dc1909c2d..7fda3412b19 100644 --- a/htdocs/langs/bg_BG/projects.lang +++ b/htdocs/langs/bg_BG/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Прекъсни връзката към елемента # Documents models DocumentModelBaleine=Доклад за цялостния проект модел (logo. ..) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Свържете със средство за да определите времето -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/bn_BD/accountancy.lang b/htdocs/langs/bn_BD/accountancy.lang new file mode 100644 index 00000000000..bb9b358c045 --- /dev/null +++ b/htdocs/langs/bn_BD/accountancy.lang @@ -0,0 +1,160 @@ +# Dolibarr language file - en_US - Accounting Expert +CHARSET=UTF-8 + +Accounting=Accounting +Globalparameters=Global parameters +Chartofaccounts=Chart of accounts +Fiscalyear=Fiscal years +Menuaccount=Accounting accounts +Menuthirdpartyaccount=Thirdparty accounts +MenuTools=Tools + +ConfigAccountingExpert=Configuration of the module accounting expert +Journaux=Journals +JournalFinancial=Financial journals +Exports=Exports +Export=Export +Modelcsv=Model of export +OptionsDeactivatedForThisExportModel=For this export model, options are deactivated +Selectmodelcsv=Select a model of export +Modelcsv_normal=Classic export +Modelcsv_CEGID=Export towards CEGID Expert +BackToChartofaccounts=Return chart of accounts +Back=Return + +Definechartofaccounts=Define a chart of accounts +Selectchartofaccounts=Select a chart of accounts +Validate=Validate +Addanaccount=Add an accounting account +AccountAccounting=Accounting account +Ventilation=Breakdown +ToDispatch=To dispatch +Dispatched=Dispatched + +CustomersVentilation=Breakdown customers +SuppliersVentilation=Breakdown suppliers +TradeMargin=Trade margin +Reports=Reports +ByCustomerInvoice=By invoices customers +ByMonth=By Month +NewAccount=New accounting account +Update=Update +List=List +Create=Create +UpdateAccount=Modification of an accounting account +UpdateMvts=Modification of a movement +WriteBookKeeping=Record accounts in general ledger +Bookkeeping=General ledger +AccountBalanceByMonth=Account balance by month + +AccountingVentilation=Breakdown accounting +AccountingVentilationSupplier=Breakdown accounting supplier +AccountingVentilationCustomer=Breakdown accounting customer +Line=Line + +CAHTF=Total purchase supplier HT +InvoiceLines=Lines of invoice to be ventilated +InvoiceLinesDone=Ventilated lines of invoice +IntoAccount=In the accounting account + +Ventilate=Ventilate +VentilationAuto=Automatic breakdown + +Processing=Processing +EndProcessing=The end of processing +AnyLineVentilate=Any lines to ventilate +SelectedLines=Selected lines +Lineofinvoice=Line of invoice +VentilatedinAccount=Ventilated successfully in the accounting account +NotVentilatedinAccount=Not ventilated in the accounting account + +ACCOUNTING_SEPARATORCSV=Column separator in export file + +ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50) +ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements +ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the breakdown pages "Breakdown" by the most recent elements + +AccountLength=Length of the accounting accounts shown in Dolibarr +AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software. +ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounts +ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounts + +ACCOUNTING_SELL_JOURNAL=Sell journal +ACCOUNTING_PURCHASE_JOURNAL=Purchase journal +ACCOUNTING_BANK_JOURNAL=Bank journal +ACCOUNTING_CASH_JOURNAL=Cash journal +ACCOUNTING_MISCELLANEOUS_JOURNAL=Miscellaneous journal +ACCOUNTING_SOCIAL_JOURNAL=Social journal + +ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account of transfer +ACCOUNTING_ACCOUNT_SUSPENSE=Account of wait + +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for bought products (if not defined in the product sheet) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Accounting account by default for the sold products (if not defined in the product sheet) +ACCOUNTING_SERVICE_BUY_ACCOUNT=Accounting account by default for the bought services (if not defined in the service sheet) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Accounting account by default for the sold services (if not defined in the service sheet) + +Doctype=Type of document +Docdate=Date +Docref=Reference +Numerocompte=Account +Code_tiers=Thirdparty +Labelcompte=Label account +Debit=Debit +Credit=Credit +Amount=Amount +Sens=Sens +Codejournal=Journal + +DelBookKeeping=Delete the records of the general ledger + +SellsJournal=Sells journal +PurchasesJournal=Purchases journal +DescSellsJournal=Sells journal +DescPurchasesJournal=Purchases journal +BankJournal=Bank journal +DescBankJournal=Bank journal including all the types of payments other than cash +CashJournal=Cash journal +DescCashJournal=Cash journal including the type of payment cash + +CashPayment=Cash Payment + +SupplierInvoicePayment=Payment of invoice supplier +CustomerInvoicePayment=Payment of invoice customer + +ThirdPartyAccount=Thirdparty account + +NewAccountingMvt=New movement +NumMvts=Number of movement +ListeMvts=List of the movement +ErrorDebitCredit=Debit and Credit cannot have a value at the same time + +ReportThirdParty=List thirdparty account +DescThirdPartyReport=Consult here the list of the thirdparty customers and the suppliers and their accounting accounts + +ListAccounts=List of the accounting accounts + +Pcgversion=Version of the plan +Pcgtype=Class of account +Pcgsubtype=Under class of account +Accountparent=Root of the account +Active=Statement + +NewFiscalYear=New fiscal year + +DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers +TotalVente=Total turnover HT +TotalMarge=Total sales margin +DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their accounting account +DescVentilTodoCustomer=Ventilate your lines of customer invoice with an accounting account +ChangeAccount=Change the accounting account for lines selected by the account: +Vide=- +DescVentilSupplier=Consult here the annual breakdown accounting of your invoices suppliers +DescVentilTodoSupplier=Ventilate your lines of invoice supplier with an accounting account +DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account + +ValidateHistory=Validate Automatically + +ErrorAccountancyCodeIsAlreadyUse=Error, you cannot delete this accounting account because it is used + +FicheVentilation=Breakdown card diff --git a/htdocs/langs/bn_BD/admin.lang b/htdocs/langs/bn_BD/admin.lang new file mode 100644 index 00000000000..9782c2ea27f --- /dev/null +++ b/htdocs/langs/bn_BD/admin.lang @@ -0,0 +1,1603 @@ +# Dolibarr language file - Source file is en_US - admin +Foundation=Foundation +Version=Version +VersionProgram=Version program +VersionLastInstall=Version initial install +VersionLastUpgrade=Version last upgrade +VersionExperimental=Experimental +VersionDevelopment=Development +VersionUnknown=Unknown +VersionRecommanded=Recommended +FileCheck=Files Integrity +FilesMissing=Missing Files +FilesUpdated=Updated Files +FileCheckDolibarr=Check Dolibarr Files Integrity +XmlNotFound=Xml File of Dolibarr Integrity Not Found +SessionId=Session ID +SessionSaveHandler=Handler to save sessions +SessionSavePath=Storage session localization +PurgeSessions=Purge of sessions +ConfirmPurgeSessions=Do you really want to purge all sessions ? This will disconnect every user (except yourself). +NoSessionListWithThisHandler=Save session handler configured in your PHP does not allow to list all running sessions. +LockNewSessions=Lock new connections +ConfirmLockNewSessions=Are you sure you want to restrict any new Dolibarr connection to yourself. Only user %s will be able to connect after that. +UnlockNewSessions=Remove connection lock +YourSession=Your session +Sessions=Users session +WebUserGroup=Web server user/group +NoSessionFound=Your PHP seems to not allow to list active sessions. Directory used to save sessions (%s) might be protected (For example, by OS permissions or by PHP directive open_basedir). +HTMLCharset=Charset for generated HTML pages +DBStoringCharset=Database charset to store data +DBSortingCharset=Database charset to sort data +WarningModuleNotActive=Module %s must be enabled +WarningOnlyPermissionOfActivatedModules=Only permissions related to activated modules are shown here. You can activate other modules in the Home->Setup->Modules page. +DolibarrSetup=Dolibarr install or upgrade +DolibarrUser=Dolibarr user +InternalUser=Internal user +ExternalUser=External user +InternalUsers=Internal users +ExternalUsers=External users +GlobalSetup=Global setup +GUISetup=Display +SetupArea=Setup area +FormToTestFileUploadForm=Form to test file upload (according to setup) +IfModuleEnabled=Note: yes is effective only if module %s is enabled +RemoveLock=Remove file %s if it exists to allow usage of the update tool. +RestoreLock=Restore file %s, with read permission only, to disable any usage of update tool. +SecuritySetup=Security setup +ErrorModuleRequirePHPVersion=Error, this module requires PHP version %s or higher +ErrorModuleRequireDolibarrVersion=Error, this module requires Dolibarr version %s or higher +ErrorDecimalLargerThanAreForbidden=Error, a precision higher than %s is not supported. +DictionarySetup=Dictionary setup +Dictionary=Dictionaries +Chartofaccounts=Chart of accounts +Fiscalyear=Fiscal years +ErrorReservedTypeSystemSystemAuto=Value 'system' and 'systemauto' for type is reserved. You can use 'user' as value to add your own record +ErrorCodeCantContainZero=Code can't contain value 0 +DisableJavascript=Disable JavaScript and Ajax functions (Recommended for blind person or text browsers) +ConfirmAjax=Use Ajax confirmation popups +UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. +UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box. +ActivityStateToSelectCompany= Add a filter option to show/hide thirdparties which are currently in activity or has ceased it +UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. +UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box). +DelaiedFullListToSelectCompany=Wait you press a key before loading content of thirdparties combo list (This may increase performance if you have a large number of thirdparties) +DelaiedFullListToSelectContact=Wait you press a key before loading content of contact combo list (This may increase performance if you have a large number of contact) +SearchFilter=Search filters options +NumberOfKeyToSearch=Nbr of characters to trigger search: %s +ViewFullDateActions=Show full dates events in the third sheet +NotAvailableWhenAjaxDisabled=Not available when Ajax disabled +JavascriptDisabled=JavaScript disabled +UsePopupCalendar=Use popup for dates input +UsePreviewTabs=Use preview tabs +ShowPreview=Show preview +PreviewNotAvailable=Preview not available +ThemeCurrentlyActive=Theme currently active +CurrentTimeZone=TimeZone PHP (server) +MySQLTimeZone=TimeZone MySql (database) +TZHasNoEffect=Dates are stored and returned by database server as if they were kept as submited string. The timezone has effect only when using UNIX_TIMESTAMP function (that should not be used by Dolibarr, so database TZ should have no effect, even if changed after data was entered). +Space=Space +Table=Table +Fields=Fields +Index=Index +Mask=Mask +NextValue=Next value +NextValueForInvoices=Next value (invoices) +NextValueForCreditNotes=Next value (credit notes) +NextValueForDeposit=Next value (deposit) +NextValueForReplacements=Next value (replacements) +MustBeLowerThanPHPLimit=Note: your PHP limits each file upload's size to %s %s, whatever this parameter's value is +NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration +MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) +UseCaptchaCode=Use graphical code (CAPTCHA) on login page +UseAvToScanUploadedFiles=Use anti-virus to scan uploaded files +AntiVirusCommand= Full path to antivirus command +AntiVirusCommandExample= Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan +AntiVirusParam= More parameters on command line +AntiVirusParamExample= Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +ComptaSetup=Accounting module setup +UserSetup=User management setup +MenuSetup=Menu management setup +MenuLimits=Limits and accuracy +MenuIdParent=Parent menu ID +DetailMenuIdParent=ID of parent menu (empty for a top menu) +DetailPosition=Sort number to define menu position +PersonalizedMenusNotSupported=Personalized menus not supported +AllMenus=All +NotConfigured=Module not configured +Setup=Setup +Activation=Activation +Active=Active +SetupShort=Setup +OtherOptions=Other options +OtherSetup=Other setup +CurrentValueSeparatorDecimal=Decimal separator +CurrentValueSeparatorThousand=Thousand separator +Destination=Destination +IdModule=Module ID +IdPermissions=Permissions ID +Modules=Modules +ModulesCommon=Main modules +ModulesOther=Other modules +ModulesInterfaces=Interfaces modules +ModulesSpecial=Modules very specific +ParameterInDolibarr=Parameter %s +LanguageParameter=Language parameter %s +LanguageBrowserParameter=Parameter %s +LocalisationDolibarrParameters=Localisation parameters +ClientTZ=Client Time Zone (user) +ClientHour=Client time (user) +OSTZ=Server OS Time Zone +PHPTZ=PHP server Time Zone +PHPServerOffsetWithGreenwich=PHP server offset width Greenwich (seconds) +ClientOffsetWithGreenwich=Client/Browser offset width Greenwich (seconds) +DaylingSavingTime=Daylight saving time +CurrentHour=PHP Time (server) +CompanyTZ=Company Time Zone (main company) +CompanyHour=Company Time (main company) +CurrentSessionTimeOut=Current session timeout +YouCanEditPHPTZ=To set a different PHP timezone (not required), you can try to add a file .htacces with a line like this "SetEnv TZ Europe/Paris" +OSEnv=OS Environment +Box=Box +Boxes=Boxes +MaxNbOfLinesForBoxes=Max number of lines for boxes +PositionByDefault=Default order +Position=Position +MenusDesc=Menus managers define content of the 2 menu bars (horizontal bar and vertical bar). +MenusEditorDesc=The menu editor allow you to define personalized entries in menus. Use it carefully to avoid making dolibarr unstable and menu entries permanently unreachable.
Some modules add entries in the menus (in menu All in most cases). If you removed some of these entries by mistake, you can restore them by disabling and reenabling the module. +MenuForUsers=Menu for users +LangFile=.lang file +System=System +SystemInfo=System information +SystemTools=System tools +SystemToolsArea=System tools area +SystemToolsAreaDesc=This area provides administration features. Use the menu to choose the feature you're looking for. +Purge=Purge +PurgeAreaDesc=This page allows you to delete all files built or stored by Dolibarr (temporary files or all files in %s directory). Using this feature is not necessary. It is provided for users whose Dolibarr is hosted by a provider that does not offer permissions to delete files built by the web server. +PurgeDeleteLogFile=Delete log file %s defined for Syslog module (no risk to loose data) +PurgeDeleteTemporaryFiles=Delete all temporary files (no risk to loose data) +PurgeDeleteAllFilesInDocumentsDir=Delete all files in directory %s. Temporary files but also database backup dumps, files attached to elements (third parties, invoices, ...) and uploaded into the ECM module will be deleted. +PurgeRunNow=Purge now +PurgeNothingToDelete=No directory or file to delete. +PurgeNDirectoriesDeleted=%s files or directories deleted. +PurgeAuditEvents=Purge all security events +ConfirmPurgeAuditEvents=Are you sure you want to purge all security events ? All security logs will be deleted, no other data will be removed. +NewBackup=New backup +GenerateBackup=Generate backup +Backup=Backup +Restore=Restore +RunCommandSummary=Backup has been launched with the following command +RunCommandSummaryToLaunch=Backup can be launched with the following command +WebServerMustHavePermissionForCommand=Your web server must have the permission to run such commands +BackupResult=Backup result +BackupFileSuccessfullyCreated=Backup file successfully generated +YouCanDownloadBackupFile=Generated files can now be downloaded +NoBackupFileAvailable=No backup files available. +ExportMethod=Export method +ImportMethod=Import method +ToBuildBackupFileClickHere=To build a backup file, click here. +ImportMySqlDesc=To import a backup file, you must use mysql command from command line: +ImportPostgreSqlDesc=To import a backup file, you must use pg_restore command from command line: +ImportMySqlCommand=%s %s < mybackupfile.sql +ImportPostgreSqlCommand=%s %s mybackupfile.sql +FileNameToGenerate=File name to generate +Compression=Compression +CommandsToDisableForeignKeysForImport=Command to disable foreign keys on import +CommandsToDisableForeignKeysForImportWarning=Mandatory if you want to be able to restore your sql dump later +ExportCompatibility=Compatibility of generated export file +MySqlExportParameters=MySQL export parameters +PostgreSqlExportParameters= PostgreSQL export parameters +UseTransactionnalMode=Use transactional mode +FullPathToMysqldumpCommand=Full path to mysqldump command +FullPathToPostgreSQLdumpCommand=Full path to pg_dump command +ExportOptions=Export Options +AddDropDatabase=Add DROP DATABASE command +AddDropTable=Add DROP TABLE command +ExportStructure=Structure +Datas=Data +NameColumn=Name columns +ExtendedInsert=Extended INSERT +NoLockBeforeInsert=No lock commands around INSERT +DelayedInsert=Delayed insert +EncodeBinariesInHexa=Encode binary data in hexadecimal +IgnoreDuplicateRecords=Ignore errors of duplicate records (INSERT IGNORE) +Yes=Yes +No=No +AutoDetectLang=Autodetect (browser language) +FeatureDisabledInDemo=Feature disabled in demo +Rights=Permissions +BoxesDesc=Boxes are screen area that show a piece of information on some pages. You can choose between showing the box or not by selecting target page and clicking 'Activate', or by clicking the dustbin to disable it. +OnlyActiveElementsAreShown=Only elements from enabled modules are shown. +ModulesDesc=Dolibarr modules define which functionality is enabled in software. Some modules require permissions you must grant to users, after enabling module. Click on button on/off in column "Status" to enable a module/feature. +ModulesInterfaceDesc=The Dolibarr modules interface allows you to add features depending on external software, systems or services. +ModulesSpecialDesc=Special modules are very specific or seldom used modules. +ModulesJobDesc=Business modules provide simple predefined setup of Dolibarr for a particular business. +ModulesMarketPlaceDesc=You can find more modules to download on external web sites on the Internet... +ModulesMarketPlaces=More modules... +DoliStoreDesc=DoliStore, the official market place for Dolibarr ERP/CRM external modules +DoliPartnersDesc=List with some companies that can provide/develop on-demand modules or features (Note: any Open Source company knowning PHP language can provide you specific development) +WebSiteDesc=Web site providers you can search to find more modules... +URL=Link +BoxesAvailable=Boxes available +BoxesActivated=Boxes activated +ActivateOn=Activate on +ActiveOn=Activated on +SourceFile=Source file +AutomaticIfJavascriptDisabled=Automatic if Javascript is disabled +AvailableOnlyIfJavascriptNotDisabled=Available only if JavaScript is not disabled +AvailableOnlyIfJavascriptAndAjaxNotDisabled=Available only if JavaScript is not disabled +Required=Required +UsedOnlyWithTypeOption=Used by some agenda option only +Security=Security +Passwords=Passwords +DoNotStoreClearPassword=Do no store clear passwords in database but store only encrypted value (Activated recommended) +MainDbPasswordFileConfEncrypted=Database password encrypted in conf.php (Activated recommended) +InstrucToEncodePass=To have password encoded into the conf.php file, replace the line
$dolibarr_main_db_pass="..."
by
$dolibarr_main_db_pass="crypted:%s" +InstrucToClearPass=To have password decoded (clear) into the conf.php file, replace the line
$dolibarr_main_db_pass="crypted:..."
by
$dolibarr_main_db_pass="%s" +ProtectAndEncryptPdfFiles=Protection of generated pdf files (Activated NOT recommended, breaks mass pdf generation) +ProtectAndEncryptPdfFilesDesc=Protection of a PDF document keeps it available to read and print with any PDF browser. However, editing and copying is not possible anymore. Note that using this feature make building of a global cumulated pdf not working (like unpaid invoices). +Feature=Feature +DolibarrLicense=License +DolibarrProjectLeader=Project leader +Developpers=Developers/contributors +OtherDeveloppers=Other developers/contributors +OfficialWebSite=Dolibarr international official web site +OfficialWebSiteFr=French official web site +OfficialWiki=Dolibarr documentation on Wiki +OfficialDemo=Dolibarr online demo +OfficialMarketPlace=Official market place for external modules/addons +OfficialWebHostingService=Referenced web hosting services (Cloud hosting) +ReferencedPreferredPartners=Preferred Partners +OtherResources=Autres ressources +ForDocumentationSeeWiki=For user or developer documentation (Doc, FAQs...),
take a look at the Dolibarr Wiki:
%s +ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:
%s +HelpCenterDesc1=This area can help you to get a Help support service on Dolibarr. +HelpCenterDesc2=Some part of this service are available in english only. +CurrentTopMenuHandler=Current top menu handler +CurrentLeftMenuHandler=Current left menu handler +CurrentMenuHandler=Current menu handler +CurrentSmartphoneMenuHandler=Current smartphone menu handler +MeasuringUnit=Measuring unit +Emails=E-mails +EMailsSetup=E-mails setup +EMailsDesc=This page allows you to overwrite your PHP parameters for e-mails sending. In most cases on Unix/Linux OS, your PHP setup is correct and these parameters are useless. +MAIN_MAIL_SMTP_PORT=SMTP/SMTPS Port (By default in php.ini: %s) +MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (By default in php.ini: %s) +MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix like systems) +MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix like systems) +MAIN_MAIL_EMAIL_FROM=Sender e-mail for automatic emails (By default in php.ini: %s) +MAIN_MAIL_ERRORS_TO=Sender e-mail used for error returns emails sent +MAIN_MAIL_AUTOCOPY_TO= Send systematically a hidden carbon-copy of all sent emails to +MAIN_MAIL_AUTOCOPY_PROPOSAL_TO= Send systematically a hidden carbon-copy of proposals sent by email to +MAIN_MAIL_AUTOCOPY_ORDER_TO= Send systematically a hidden carbon-copy of orders sent by email to +MAIN_MAIL_AUTOCOPY_INVOICE_TO= Send systematically a hidden carbon-copy of invoice sent by emails to +MAIN_DISABLE_ALL_MAILS=Disable all e-mails sendings (for test purposes or demos) +MAIN_MAIL_SENDMODE=Method to use to send EMails +MAIN_MAIL_SMTPS_ID=SMTP ID if authentication required +MAIN_MAIL_SMTPS_PW=SMTP Password if authentication required +MAIN_MAIL_EMAIL_TLS= Use TLS (SSL) encrypt +MAIN_DISABLE_ALL_SMS=Disable all SMS sendings (for test purposes or demos) +MAIN_SMS_SENDMODE=Method to use to send SMS +MAIN_MAIL_SMS_FROM=Default sender phone number for Sms sending +FeatureNotAvailableOnLinux=Feature not available on Unix like systems. Test your sendmail program locally. +SubmitTranslation=If translation for this language is not complete or you find errors, you can correct this by editing files into directory langs/%s and submit modified files on www.dolibarr.org forum. +ModuleSetup=Module setup +ModulesSetup=Modules setup +ModuleFamilyBase=System +ModuleFamilyCrm=Customer Relation Management (CRM) +ModuleFamilyProducts=Products Management +ModuleFamilyHr=Human Resource Management +ModuleFamilyProjects=Projects/Collaborative work +ModuleFamilyOther=Other +ModuleFamilyTechnic=Multi-modules tools +ModuleFamilyExperimental=Experimental modules +ModuleFamilyFinancial=Financial Modules (Accounting/Treasury) +ModuleFamilyECM=Electronic Content Management (ECM) +MenuHandlers=Menu handlers +MenuAdmin=Menu editor +DoNotUseInProduction=Do not use in production +ThisIsProcessToFollow=This is setup to process: +StepNb=Step %s +FindPackageFromWebSite=Find a package that provides feature you want (for example on official web site %s). +DownloadPackageFromWebSite=Download package %s. +UnpackPackageInDolibarrRoot=Unpack package file into Dolibarr's root directory %s +SetupIsReadyForUse=Install is finished and Dolibarr is ready to use with this new component. +NotExistsDirect=The alternative root directory is not defined.
+InfDirAlt=Since version 3 it is possible to define an alternative root directory.This allows you to store, same place, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
+InfDirExample=
Then declare it in the file conf.php
$dolibarr_main_url_root_alt='http://myserver/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
*These lines are commented with "#", to uncomment only remove the character. +YouCanSubmitFile=Select module: +CurrentVersion=Dolibarr current version +CallUpdatePage=Go to the page that updates the database structure and datas: %s. +LastStableVersion=Last stable version +UpdateServerOffline=Update server offline +GenericMaskCodes=You may enter any numbering mask. In this mask, the following tags could 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 previous but an offset corresponding to the number to the right of the + sign is applied starting on first %s.
{000000@x} same as previous 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 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 for customer. This counter dedicated to customer is reset at same time than global counter.
{tttt} The code of thirdparty type on n characters (see dictionary-thirdparty types).
+GenericMaskCodes3=All other characters in the mask will remain intact.
Spaces are not allowed.
+GenericMaskCodes4a=Example on the 99th %s of the third party TheCompany done 2007-01-31:
+GenericMaskCodes4b=Example on third party created on 2007-03-01:
+GenericMaskCodes4c=Example on product created on 2007-03-01:
+GenericMaskCodes5=ABC{yy}{mm}-{000000} will give ABC0701-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX +GenericNumRefModelDesc=Returns a customizable number according to a defined mask. +ServerAvailableOnIPOrPort=Server is available at address %s on port %s +ServerNotAvailableOnIPOrPort=Server is not available at address %s on port %s +DoTestServerAvailability=Test server connectivity +DoTestSend=Test sending +DoTestSendHTML=Test sending HTML +ErrorCantUseRazIfNoYearInMask=Error, can't use option @ to reset counter each year if sequence {yy} or {yyyy} is not in mask. +ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Error, can't use option @ if sequence {yy}{mm} or {yyyy}{mm} is not in mask. +UMask=UMask parameter for new files on Unix/Linux/BSD/Mac file system. +UMaskExplanation=This parameter allow you to define permissions set by default on files created by Dolibarr on server (during upload for example).
It must be the octal value (for example, 0666 means read and write for everyone).
This parameter is useless on a Windows server. +SeeWikiForAllTeam=Take a look at the wiki page for full list of all actors and their organisation +UseACacheDelay= Delay for caching export response in seconds (0 or empty for no cache) +DisableLinkToHelpCenter=Hide link "Need help or support" on login page +DisableLinkToHelp=Hide link "%s Online help" on left menu +AddCRIfTooLong=There is no automatic wrapping, so if line is out of page on documents because too long, you must add yourself carriage returns in the textarea. +ModuleDisabled=Module disabled +ModuleDisabledSoNoEvent=Module disabled so event never created +ConfirmPurge=Are you sure you want to execute this purge ?
This will delete definitely all your data files with no way to restore them (ECM files, attached files...). +MinLength=Minimum length +LanguageFilesCachedIntoShmopSharedMemory=Files .lang loaded in shared memory +ExamplesWithCurrentSetup=Examples with current running setup +ListOfDirectories=List of OpenDocument templates directories +ListOfDirectoriesForModelGenODT=List of directories containing templates files with OpenDocument format.

Put here full path of directories.
Add a carriage return between eah directory.
To add a directory of the GED module, add here DOL_DATA_ROOT/ecm/yourdirectoryname.

Files in those directories must end with .odt. +NumberOfModelFilesFound=Number of ODT/ODS templates files found in those directories +ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir +FollowingSubstitutionKeysCanBeUsed=
To know how to create your odt document templates, before storing them in those directories, read wiki documentation: +FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template +FirstnameNamePosition=Position of Name/Lastname +DescWeather=The following pictures will be shown on dashboard when number of late actions reach the following values: +KeyForWebServicesAccess=Key to use Web Services (parameter "dolibarrkey" in webservices) +TestSubmitForm=Input test form +ThisForceAlsoTheme=Using this menu manager will also use its own theme whatever is user choice. Also this menu manager specialized for smartphones does not works on all smartphone. Use another menu manager if you experience problems on yours. +ThemeDir=Skins directory +ConnectionTimeout=Connexion timeout +ResponseTimeout=Response timeout +SmsTestMessage=Test message from __PHONEFROM__ to __PHONETO__ +ModuleMustBeEnabledFirst=Module %s must be enabled first before using this feature. +SecurityToken=Key to secure URLs +NoSmsEngine=No SMS sender manager available. SMS sender manager are not installed with default distribution (because they depends on an external supplier) but you can find some on %s +PDF=PDF +PDFDesc=You can set each global options related to the PDF generation +PDFAddressForging=Rules to forge address boxes +HideAnyVATInformationOnPDF=Hide all information related to VAT on generated PDF +HideDescOnPDF=Hide products description on generated PDF +HideRefOnPDF=Hide products ref. on generated PDF +HideDetailsOnPDF=Hide products lines details on generated PDF +Library=Library +UrlGenerationParameters=Parameters to secure URLs +SecurityTokenIsUnique=Use a unique securekey parameter for each URL +EnterRefToBuildUrl=Enter reference for object %s +GetSecuredUrl=Get calculated URL +ButtonHideUnauthorized=Hide buttons for unauthorized actions instead of showing disabled buttons +OldVATRates=Old VAT rate +NewVATRates=New VAT rate +PriceBaseTypeToChange=Modify on prices with base reference value defined on +MassConvert=Launch mass convert +String=String +TextLong=Long text +Int=Integer +Float=Float +DateAndTime=Date and hour +Unique=Unique +Boolean=Boolean (Checkbox) +ExtrafieldPhone = Phone +ExtrafieldPrice = Price +ExtrafieldMail = Email +ExtrafieldSelect = Select list +ExtrafieldSelectList = Select from table +ExtrafieldSeparator=Separator +ExtrafieldCheckBox=Checkbox +ExtrafieldRadio=Radio button +ExtrafieldCheckBoxFromList= Checkbox from table +ExtrafieldParamHelpselect=Parameters list have to be like key,value

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

In order to have the list depending on another :
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key +ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value

for example :
1,value1
2,value2
3,value3
... +ExtrafieldParamHelpradio=Parameters list have to be like key,value

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

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

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

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter +LibraryToBuildPDF=Library used to build PDF +WarningUsingFPDF=Warning: Your conf.php contains directive dolibarr_pdf_force_fpdf=1. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.
To solve this and have a full support of PDF generation, please download TCPDF library, then comment or remove the line $dolibarr_pdf_force_fpdf=1, and add instead $dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir' +LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:
1 : local tax apply on products and services without vat (vat is not applied on local tax)
2 : local tax apply on products and services before vat (vat is calculated on amount + localtax)
3 : local tax apply on products without vat (vat is not applied on local tax)
4 : local tax apply on products before vat (vat is calculated on amount + localtax)
5 : local tax apply on services without vat (vat is not applied on local tax)
6 : local tax apply on services before vat (vat is calculated on amount + localtax) +SMS=SMS +LinkToTestClickToDial=Enter a phone number to call to show a link to test the ClickToDial url for user %s +RefreshPhoneLink=Refresh link +LinkToTest=Clickable link generated for user %s (click phone number to test) +KeepEmptyToUseDefault=Keep empty to use default value +DefaultLink=Default link +ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) +ExternalModule=External module - Installed into directory %s +BarcodeInitForThirdparties=Mass barcode init for thirdparties +BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services +CurrentlyNWithoutBarCode=Currently, you have %s records on %s %s without barcode defined. +InitEmptyBarCode=Init value for next %s empty records +EraseAllCurrentBarCode=Erase all current barcode values +ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values ? +AllBarcodeReset=All barcode values have been removed +NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup. +NoRecordWithoutBarcodeDefined=No record with no barcode value defined. + +# Modules +Module0Name=Users & groups +Module0Desc=Users and groups management +Module1Name=Third parties +Module1Desc=Companies and contact management (customers, prospects...) +Module2Name=Commercial +Module2Desc=Commercial management +Module10Name=Accounting +Module10Desc=Simple accounting reports (journals, turnover) based onto database content. No dispatching. +Module20Name=Proposals +Module20Desc=Commercial proposal management +Module22Name=Mass E-mailings +Module22Desc=Mass E-mailing management +Module23Name= Energy +Module23Desc= Monitoring the consumption of energies +Module25Name=Customer Orders +Module25Desc=Customer order management +Module30Name=Invoices +Module30Desc=Invoice and credit note management for customers. Invoice management for suppliers +Module40Name=Suppliers +Module40Desc=Supplier management and buying (orders and invoices) +Module42Name=Logs +Module42Desc=Logging facilities (file, syslog, ...) +Module49Name=Editors +Module49Desc=Editor management +Module50Name=Products +Module50Desc=Product management +Module51Name=Mass mailings +Module51Desc=Mass paper mailing management +Module52Name=Stocks +Module52Desc=Stock management (products) +Module53Name=Services +Module53Desc=Service management +Module54Name=Contracts/Subscriptions +Module54Desc=Management of contracts (services or reccuring subscriptions) +Module55Name=Barcodes +Module55Desc=Barcode management +Module56Name=Telephony +Module56Desc=Telephony integration +Module57Name=Standing orders +Module57Desc=Standing orders and withdrawal management. Also includes generation of SEPA file for european countries. +Module58Name=ClickToDial +Module58Desc=Integration of a ClickToDial system (Asterisk, ...) +Module59Name=Bookmark4u +Module59Desc=Add function to generate Bookmark4u account from a Dolibarr account +Module70Name=Interventions +Module70Desc=Intervention management +Module75Name=Expense and trip notes +Module75Desc=Expense and trip notes management +Module80Name=Shipments +Module80Desc=Shipments and delivery order management +Module85Name=Banks and cash +Module85Desc=Management of bank or cash accounts +Module100Name=External site +Module100Desc=This module include an external web site or page into Dolibarr menus and view it into a Dolibarr frame +Module105Name=Mailman and SPIP +Module105Desc=Mailman or SPIP interface for member module +Module200Name=LDAP +Module200Desc=LDAP directory synchronisation +Module210Name=PostNuke +Module210Desc=PostNuke integration +Module240Name=Data exports +Module240Desc=Tool to export Dolibarr datas (with assistants) +Module250Name=Data imports +Module250Desc=Tool to import datas in Dolibarr (with assistants) +Module310Name=Members +Module310Desc=Foundation members management +Module320Name=RSS Feed +Module320Desc=Add RSS feed inside Dolibarr screen pages +Module330Name=Bookmarks +Module330Desc=Bookmark management +Module400Name=Projects/Opportunities/Leads +Module400Desc=Management of projects, opportunities or leads. You can then assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. +Module410Name=Webcalendar +Module410Desc=Webcalendar integration +Module500Name=Special expenses (tax, social contributions, dividends) +Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries +Module510Name=Salaries +Module510Desc=Management of employees salaries and payments +Module600Name=Notifications +Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty) +Module700Name=Donations +Module700Desc=Donation management +Module770Name=Expense Report +Module770Desc=Management and claim expense reports (transportation, meal, ...) +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices +Module1200Name=Mantis +Module1200Desc=Mantis integration +Module1400Name=Accounting +Module1400Desc=Accounting management (double parties) +Module1520Name=Document Generation +Module1520Desc=Mass mail document generation +Module1780Name=Categories +Module1780Desc=Category management (products, suppliers and customers) +Module2000Name=WYSIWYG editor +Module2000Desc=Allow to edit some text area using an advanced editor +Module2200Name=Dynamic Prices +Module2200Desc=Enable the usage of math expressions for prices +Module2300Name=Cron +Module2300Desc=Scheduled task management +Module2400Name=Agenda +Module2400Desc=Events/tasks and agenda management +Module2500Name=Electronic Content Management +Module2500Desc=Save and share documents +Module2600Name=WebServices +Module2600Desc=Enable the Dolibarr web services server +Module2650Name=WebServices (client) +Module2650Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Supplier orders supported only for the moment) +Module2700Name=Gravatar +Module2700Desc=Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Need an internet access +Module2800Desc=FTP Client +Module2900Name=GeoIPMaxmind +Module2900Desc=GeoIP Maxmind conversions capabilities +Module3100Name=Skype +Module3100Desc=Add a Skype button into card of adherents / third parties / contacts +Module5000Name=Multi-company +Module5000Desc=Allows you to manage multiple companies +Module6000Name=Workflow +Module6000Desc=Workflow management +Module20000Name=Leave Requests management +Module20000Desc=Declare and follow employees leaves requests +Module39000Name=Product batch +Module39000Desc=Batch or serial number, eat-by and sell-by date management on products +Module50000Name=PayBox +Module50000Desc=Module to offer an online payment page by credit card with PayBox +Module50100Name=Point of sales +Module50100Desc=Point of sales module +Module50200Name=Paypal +Module50200Desc=Module to offer an online payment page by credit card with Paypal +Module50400Name=Accounting (advanced) +Module50400Desc=Accounting management (double parties) +Module54000Name=PrintIPP +Module54000Desc=Direct print (without opening the documents) using Cups IPP interface (Printer must be visible from server, and CUPS must be installe on server). +Module55000Name=Open Poll +Module55000Desc=Module to make online polls (like Doodle, Studs, Rdvz, ...) +Module59000Name=Margins +Module59000Desc=Module to manage margins +Module60000Name=Commissions +Module60000Desc=Module to manage commissions +Module150010Name=Batch number, eat-by date and sell-by date +Module150010Desc=batch number, eat-by date and sell-by date management for product +Permission11=Read customer invoices +Permission12=Create/modify customer invoices +Permission13=Unvalidate customer invoices +Permission14=Validate customer invoices +Permission15=Send customer invoices by email +Permission16=Create payments for customer invoices +Permission19=Delete customer invoices +Permission21=Read commercial proposals +Permission22=Create/modify commercial proposals +Permission24=Validate commercial proposals +Permission25=Send commercial proposals +Permission26=Close commercial proposals +Permission27=Delete commercial proposals +Permission28=Export commercial proposals +Permission31=Read products +Permission32=Create/modify products +Permission34=Delete products +Permission36=See/manage hidden products +Permission38=Export products +Permission41=Read projects (shared project and projects i'm contact for) +Permission42=Create/modify projects (shared project and projects i'm contact for) +Permission44=Delete projects (shared project and projects i'm contact for) +Permission61=Read interventions +Permission62=Create/modify interventions +Permission64=Delete interventions +Permission67=Export interventions +Permission71=Read members +Permission72=Create/modify members +Permission74=Delete members +Permission75=Setup types of membership +Permission76=Export datas +Permission78=Read subscriptions +Permission79=Create/modify subscriptions +Permission81=Read customers orders +Permission82=Create/modify customers orders +Permission84=Validate customers orders +Permission86=Send customers orders +Permission87=Close customers orders +Permission88=Cancel customers orders +Permission89=Delete customers orders +Permission91=Read social contributions and vat +Permission92=Create/modify social contributions and vat +Permission93=Delete social contributions and vat +Permission94=Export social contributions +Permission95=Read reports +Permission101=Read sendings +Permission102=Create/modify sendings +Permission104=Validate sendings +Permission106=Export sendings +Permission109=Delete sendings +Permission111=Read financial accounts +Permission112=Create/modify/delete and compare transactions +Permission113=Setup financial accounts (create, manage categories) +Permission114=Reconciliate transactions +Permission115=Export transactions and account statements +Permission116=Transfers between accounts +Permission117=Manage cheques dispatching +Permission121=Read third parties linked to user +Permission122=Create/modify third parties linked to user +Permission125=Delete third parties linked to user +Permission126=Export third parties +Permission141=Read projects (also private i am not contact for) +Permission142=Create/modify projects (also private i am not contact for) +Permission144=Delete projects (also private i am not contact for) +Permission146=Read providers +Permission147=Read stats +Permission151=Read standing orders +Permission152=Create/modify a standing orders request +Permission153=Transmission standing orders receipts +Permission154=Credit/refuse standing orders receipts +Permission161=Read contracts/subscriptions +Permission162=Create/modify contracts/subscriptions +Permission163=Activate a service/subscription of a contract +Permission164=Disable a service/subscription of a contract +Permission165=Delete contracts/subscriptions +Permission171=Read trips and expenses (own and his subordinates) +Permission172=Create/modify trips and expenses +Permission173=Delete trips and expenses +Permission174=Read all trips and expenses +Permission178=Export trips and expenses +Permission180=Read suppliers +Permission181=Read supplier orders +Permission182=Create/modify supplier orders +Permission183=Validate supplier orders +Permission184=Approve supplier orders +Permission185=Order or cancel supplier orders +Permission186=Receive supplier orders +Permission187=Close supplier orders +Permission188=Cancel supplier orders +Permission192=Create lines +Permission193=Cancel lines +Permission194=Read the bandwith lines +Permission202=Create ADSL connections +Permission203=Order connections orders +Permission204=Order connections +Permission205=Manage connections +Permission206=Read connections +Permission211=Read Telephony +Permission212=Order lines +Permission213=Activate line +Permission214=Setup Telephony +Permission215=Setup providers +Permission221=Read emailings +Permission222=Create/modify emailings (topic, recipients...) +Permission223=Validate emailings (allows sending) +Permission229=Delete emailings +Permission237=View recipients and info +Permission238=Manually send mailings +Permission239=Delete mailings after validation or sent +Permission241=Read categories +Permission242=Create/modify categories +Permission243=Delete categories +Permission244=See the contents of the hidden categories +Permission251=Read other users and groups +PermissionAdvanced251=Read other users +Permission252=Read permissions of other users +Permission253=Create/modify other users, groups and permisssions +PermissionAdvanced253=Create/modify internal/external users and permissions +Permission254=Create/modify external users only +Permission255=Modify other users password +Permission256=Delete or disable other users +Permission262=Extend access to all third parties (not only those linked to user). Not effective for external users (always limited to themselves). +Permission271=Read CA +Permission272=Read invoices +Permission273=Issue invoices +Permission281=Read contacts +Permission282=Create/modify contacts +Permission283=Delete contacts +Permission286=Export contacts +Permission291=Read tariffs +Permission292=Set permissions on the tariffs +Permission293=Modify costumers tariffs +Permission300=Read bar codes +Permission301=Create/modify bar codes +Permission302=Delete bar codes +Permission311=Read services +Permission312=Assign service/subscription to contract +Permission331=Read bookmarks +Permission332=Create/modify bookmarks +Permission333=Delete bookmarks +Permission341=Read its own permissions +Permission342=Create/modify his own user information +Permission343=Modify his own password +Permission344=Modify its own permissions +Permission351=Read groups +Permission352=Read groups permissions +Permission353=Create/modify groups +Permission354=Delete or disable groups +Permission358=Export users +Permission401=Read discounts +Permission402=Create/modify discounts +Permission403=Validate discounts +Permission404=Delete discounts +Permission510=Read Salaries +Permission512=Create/modify salaries +Permission514=Delete salaries +Permission517=Export salaries +Permission531=Read services +Permission532=Create/modify services +Permission534=Delete services +Permission536=See/manage hidden services +Permission538=Export services +Permission701=Read donations +Permission702=Create/modify donations +Permission703=Delete donations +Permission771=Read expense reports (own and his subordinates) +Permission772=Create/modify expense reports +Permission773=Delete expense reports +Permission774=Read all expense reports (even for user not subordinates) +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission779=Export expense reports +Permission1001=Read stocks +Permission1002=Create/modify warehouses +Permission1003=Delete warehouses +Permission1004=Read stock movements +Permission1005=Create/modify stock movements +Permission1101=Read delivery orders +Permission1102=Create/modify delivery orders +Permission1104=Validate delivery orders +Permission1109=Delete delivery orders +Permission1181=Read suppliers +Permission1182=Read supplier orders +Permission1183=Create/modify supplier orders +Permission1184=Validate supplier orders +Permission1185=Approve supplier orders +Permission1186=Order supplier orders +Permission1187=Acknowledge receipt of supplier orders +Permission1188=Delete supplier orders +Permission1201=Get result of an export +Permission1202=Create/Modify an export +Permission1231=Read supplier invoices +Permission1232=Create/modify supplier invoices +Permission1233=Validate supplier invoices +Permission1234=Delete supplier invoices +Permission1235=Send supplier invoices by email +Permission1236=Export supplier invoices, attributes and payments +Permission1237=Export supplier orders and their details +Permission1251=Run mass imports of external data into database (data load) +Permission1321=Export customer invoices, attributes and payments +Permission1421=Export customer orders and attributes +Permission23001 = Read Scheduled task +Permission23002 = Create/update Scheduled task +Permission23003 = Delete Scheduled task +Permission23004 = Execute Scheduled task +Permission2401=Read actions (events or tasks) linked to his account +Permission2402=Create/modify actions (events or tasks) linked to his account +Permission2403=Delete actions (events or tasks) linked to his account +Permission2411=Read actions (events or tasks) of others +Permission2412=Create/modify actions (events or tasks) of others +Permission2413=Delete actions (events or tasks) of others +Permission2501=Read/Download documents +Permission2502=Download documents +Permission2503=Submit or delete documents +Permission2515=Setup documents directories +Permission2801=Use FTP client in read mode (browse and download only) +Permission2802=Use FTP client in write mode (delete or upload files) +Permission50101=Use Point of sales +Permission50201=Read transactions +Permission50202=Import transactions +Permission54001=Print +Permission55001=Read polls +Permission55002=Create/modify polls +Permission59001=Read commercial margins +Permission59002=Define commercial margins +Permission59003=Read every user margin +DictionaryCompanyType=Thirdparties type +DictionaryCompanyJuridicalType=Juridical kinds of thirdparties +DictionaryProspectLevel=Prospect potential level +DictionaryCanton=State/Cantons +DictionaryRegion=Regions +DictionaryCountry=Countries +DictionaryCurrency=Currencies +DictionaryCivility=Civility title +DictionaryActions=Type of agenda events +DictionarySocialContributions=Social contributions types +DictionaryVAT=VAT Rates or Sales Tax Rates +DictionaryRevenueStamp=Amount of revenue stamps +DictionaryPaymentConditions=Payment terms +DictionaryPaymentModes=Payment modes +DictionaryTypeContact=Contact/Address types +DictionaryEcotaxe=Ecotax (WEEE) +DictionaryPaperFormat=Paper formats +DictionaryFees=Type of fees +DictionarySendingMethods=Shipping methods +DictionaryStaff=Staff +DictionaryAvailability=Delivery delay +DictionaryOrderMethods=Ordering methods +DictionarySource=Origin of proposals/orders +DictionaryAccountancyplan=Chart of accounts +DictionaryAccountancysystem=Models for chart of accounts +DictionaryEMailTemplates=Emails templates +SetupSaved=Setup saved +BackToModuleList=Back to modules list +BackToDictionaryList=Back to dictionaries list +VATReceivedOnly=Special rate not charged +VATManagement=VAT Management +VATIsUsedDesc=The VAT rate by default when creating prospects, invoices, orders etc follow the active standard rule:
If the seller is not subjected to VAT, then VAT by default=0. End of rule.
If the (selling country= buying country), then the VAT by default=VAT of the product in the selling country. End of rule.
If seller and buyer in the European Community and goods are transport products (car, ship, plane), the default VAT=0 ( The VAT should be paid by the buyer at the customoffice of his country and not at the seller). End of rule.
If seller and buyer in the European Community and buyer is not a company, then the VAT by default=VAT of product sold. End of rule.
If seller and buyer in the European Community and buyer is a company, then the VAT by default=0. End of rule.
Else the proposed default VAT=0. End of rule. +VATIsNotUsedDesc=By default the proposed VAT is 0 which can be used for cases like associations, individuals ou small companies. +VATIsUsedExampleFR=In France, it means companies or organisations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. +VATIsNotUsedExampleFR=In France, it means associations that are non VAT declared or companies, organisations or liberal professions that have chosen the micro enterprise fiscal system (VAT in franchise) and paid a franchise VAT without any VAT declaration. This choice will display the reference "Non applicable VAT - art-293B of CGI" on invoices. +##### Local Taxes ##### +LTRate=Rate +LocalTax1IsUsed=Use second tax +LocalTax1IsNotUsed=Do not use second tax +LocalTax1IsUsedDesc=Use a second type of tax (other than VAT) +LocalTax1IsNotUsedDesc=Do not use other type of tax (other than VAT) +LocalTax1Management=Second type of tax +LocalTax1IsUsedExample= +LocalTax1IsNotUsedExample= +LocalTax2IsUsed=Use third tax +LocalTax2IsNotUsed=Do not use third tax +LocalTax2IsUsedDesc=Use a third type of tax (other than VAT) +LocalTax2IsNotUsedDesc=Do not use other type of tax (other than VAT) +LocalTax2Management=Third type of tax +LocalTax2IsUsedExample= +LocalTax2IsNotUsedExample= +LocalTax1ManagementES= RE Management +LocalTax1IsUsedDescES= The RE rate by default when creating prospects, invoices, orders etc follow the active standard rule:
If te buyer is not subjected to RE, RE by default=0. End of rule.
If the buyer is subjected to RE then the RE by default. End of rule.
+LocalTax1IsNotUsedDescES= By default the proposed RE is 0. End of rule. +LocalTax1IsUsedExampleES= In Spain they are professionals subject to some specific sections of the Spanish IAE. +LocalTax1IsNotUsedExampleES= In Spain they are professional and societies and subject to certain sections of the Spanish IAE. +LocalTax2ManagementES= IRPF Management +LocalTax2IsUsedDescES= The RE rate by default when creating prospects, invoices, orders etc follow the active standard rule:
If the seller is not subjected to IRPF, then IRPF by default=0. End of rule.
If the seller is subjected to IRPF then the IRPF by default. End of rule.
+LocalTax2IsNotUsedDescES= By default the proposed IRPF is 0. End of rule. +LocalTax2IsUsedExampleES= In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. +LocalTax2IsNotUsedExampleES= In Spain they are bussines not subject to tax system of modules. +CalcLocaltax=Reports +CalcLocaltax1ES=Sales - Purchases +CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases +CalcLocaltax2ES=Purchases +CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases +CalcLocaltax3ES=Sales +CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +LabelUsedByDefault=Label used by default if no translation can be found for code +LabelOnDocuments=Label on documents +NbOfDays=Nb of days +AtEndOfMonth=At end of month +Offset=Offset +AlwaysActive=Always active +UpdateRequired=Your system needs to be updated. To do this, click on Update now. +Upgrade=Upgrade +MenuUpgrade=Upgrade / Extend +AddExtensionThemeModuleOrOther=Add extension (theme, module, ...) +WebServer=Web server +DocumentRootServer=Web server's root directory +DataRootServer=Data files directory +IP=IP +Port=Port +VirtualServerName=Virtual server name +AllParameters=All parameters +OS=OS +PhpEnv=Env +PhpModules=Modules +PhpConf=Conf +PhpWebLink=Web-Php link +Pear=Pear +PearPackages=Pear Packages +Browser=Browser +Server=Server +Database=Database +DatabaseServer=Database host +DatabaseName=Database name +DatabasePort=Database port +DatabaseUser=Database user +DatabasePassword=Database password +DatabaseConfiguration=Database setup +Tables=Tables +TableName=Table name +TableLineFormat=Line format +NbOfRecord=Nb of records +Constraints=Constraints +ConstraintsType=Constraints type +ConstraintsToShowOrNotEntry=Constraint to show or not the menu entry +AllMustBeOk=All of these must be checked +Host=Server +DriverType=Driver type +SummarySystem=System information summary +SummaryConst=List of all Dolibarr setup parameters +SystemUpdate=System update +SystemSuccessfulyUpdate=Your system has been updated successfuly +MenuCompanySetup=Company/Foundation +MenuNewUser=New user +MenuTopManager=Top menu manager +MenuLeftManager=Left menu manager +MenuManager=Menu manager +MenuSmartphoneManager=Smartphone menu manager +DefaultMenuTopManager=Top menu manager +DefaultMenuLeftManager=Left menu manager +DefaultMenuManager= Standard menu manager +DefaultMenuSmartphoneManager=Smartphone menu manager +Skin=Skin theme +DefaultSkin=Default skin theme +MaxSizeList=Max length for list +DefaultMaxSizeList=Default max length for list +MessageOfDay=Message of the day +MessageLogin=Login page message +PermanentLeftSearchForm=Permanent search form on left menu +DefaultLanguage=Default language to use (language code) +EnableMultilangInterface=Enable multilingual interface +EnableShowLogo=Show logo on left menu +EnableHtml5=Enable Html5 (Developement - Only available on Eldy template) +SystemSuccessfulyUpdated=Your system has been updated successfully +CompanyInfo=Company/foundation information +CompanyIds=Company/foundation identities +CompanyName=Name +CompanyAddress=Address +CompanyZip=Zip +CompanyTown=Town +CompanyCountry=Country +CompanyCurrency=Main currency +Logo=Logo +DoNotShow=Do not show +DoNotSuggestPaymentMode=Do not suggest +NoActiveBankAccountDefined=No active bank account defined +OwnerOfBankAccount=Owner of bank account %s +BankModuleNotActive=Bank accounts module not enabled +ShowBugTrackLink=Show link "Report a bug" +ShowWorkBoard=Show "workbench" on homepage +Alerts=Alerts +Delays=Delays +DelayBeforeWarning=Delay before warning +DelaysBeforeWarning=Delays before warning +DelaysOfToleranceBeforeWarning=Tolerance delays before warning +DelaysOfToleranceDesc=This screen allows you to define the tolerated delays before an alert is reported on screen with picto %s for each late element. +Delays_MAIN_DELAY_ACTIONS_TODO=Delay tolerance (in days) before alert on planned events not yet realised +Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on orders not yet processed +Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on suppliers orders not yet processed +Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Delay tolerance (in days) before alert on proposals to close +Delays_MAIN_DELAY_PROPALS_TO_BILL=Delay tolerance (in days) before alert on proposals not billed +Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Tolerance delay (in days) before alert on services to activate +Delays_MAIN_DELAY_RUNNING_SERVICES=Tolerance delay (in days) before alert on expired services +Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Tolerance delay (in days) before alert on unpaid supplier invoices +Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Tolerence delay (in days) before alert on unpaid client invoices +Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Tolerance delay (in days) before alert on pending bank reconciliation +Delays_MAIN_DELAY_MEMBERS=Tolerance delay (in days) before alert on delayed membership fee +Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Tolerance delay (in days) before alert for cheques deposit to do +SetupDescription1=All parameters available in the setup area allow you to setup Dolibarr before starting using it. +SetupDescription2=The 2 most important setup steps are the 2 first ones in the left setup menu, this means Company/foundation setup page and Modules setup page: +SetupDescription3=Parameters in menu Setup -> Company/foundation are required because input information is used on Dolibarr displays and to modify Dolibarr behaviour (for example for features related to your country). +SetupDescription4=Parameters in menu Setup -> Modules are required because Dolibarr is not a fixed ERP/CRM but a sum of several modules, all more or less independant. It's only after activating modules you're interesting in that you will see features appeared in menus. +SetupDescription5=Other menu entries manage optional parameters. +EventsSetup=Setup for events logs +LogEvents=Security audit events +Audit=Audit +InfoDolibarr=Infos Dolibarr +InfoBrowser=Infos Browser +InfoOS=Infos OS +InfoWebServer=Infos web server +InfoDatabase=Infos database +InfoPHP=Infos PHP +InfoPerf=Infos performances +BrowserName=Browser name +BrowserOS=Browser OS +ListEvents=Audit events +ListOfSecurityEvents=List of Dolibarr security events +SecurityEventsPurged=Security events purged +LogEventDesc=You can enable here the logging for Dolibarr security events. Administrators can then see its content via menu System tools - Audit. Warning, this feature can consume a large amount of data in database. +AreaForAdminOnly=Those features can be used by administrator users only. +SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. +SystemAreaForAdminOnly=This area is available for administrator users only. None of the Dolibarr permissions can reduce this limit. +CompanyFundationDesc=Edit on this page all known information of the company or foundation you need to manage (For this, click on "Modify" button at bottom of page) +DisplayDesc=You can choose each parameter related to the Dolibarr look and feel here +AvailableModules=Available modules +ToActivateModule=To activate modules, go on setup Area (Home->Setup->Modules). +SessionTimeOut=Time out for session +SessionExplanation=This number guarantee that session will never expire before this delay, if the session cleaner is done by Internal PHP session cleaner (and nothing else). Internal PHP session cleaner does not guaranty that session will expire just after this delay. It will expire, after this delay, and when the session cleaner is ran, so every %s/%s access, but only during access made by other sessions.
Note: on some servers with an external session cleaning mechanism (cron under debian, ubuntu ...), the sessions can be destroyed after a period defined by the default session.gc_maxlifetime, no matter what the value entered here. +TriggersAvailable=Available triggers +TriggersDesc=Triggers are files that will modify the behaviour of Dolibarr workflow once copied into the directory htdocs/core/triggers. They realised new actions, activated on Dolibarr events (new company creation, invoice validation, ...). +TriggerDisabledByName=Triggers in this file are disabled by the -NORUN suffix in their name. +TriggerDisabledAsModuleDisabled=Triggers in this file are disabled as module %s is disabled. +TriggerAlwaysActive=Triggers in this file are always active, whatever are the activated Dolibarr modules. +TriggerActiveAsModuleActive=Triggers in this file are active as module %s is enabled. +GeneratedPasswordDesc=Define here which rule you want to use to generate new password if you ask to have auto generated password +DictionaryDesc=Define here all reference datas. You can complete predefined value with yours. +ConstDesc=This page allows you to edit all other parameters not available in previous pages. They are reserved parameters for advanced developers or for troubleshouting. +OnceSetupFinishedCreateUsers=Warning, you are a Dolibarr administrator user. Administrator users are used to setup Dolibarr. For a usual usage of Dolibarr, it is recommended to use a non administrator user created from Users & Groups menu. +MiscellaneousDesc=Define here all other parameters related to security. +LimitsSetup=Limits/Precision setup +LimitsDesc=You can define limits, precisions and optimisations used by Dolibarr here +MAIN_MAX_DECIMALS_UNIT=Max decimals for unit prices +MAIN_MAX_DECIMALS_TOT=Max decimals for total prices +MAIN_MAX_DECIMALS_SHOWN=Max decimals for prices shown on screen (Add ... after this number if you want to see ... when number is truncated when shown on screen) +MAIN_DISABLE_PDF_COMPRESSION=Use PDF compression for generated PDF files. +MAIN_ROUNDING_RULE_TOT= Size of rounding range (for rare countries where rounding is done on something else than base 10) +UnitPriceOfProduct=Net unit price of a product +TotalPriceAfterRounding=Total price (net/vat/incl tax) after rounding +ParameterActiveForNextInputOnly=Parameter effective for next input only +NoEventOrNoAuditSetup=No security event has been recorded yet. This can be normal if audit has not been enabled on "setup - security - audit" page. +NoEventFoundWithCriteria=No security event has been found for such search criterias. +SeeLocalSendMailSetup=See your local sendmail setup +BackupDesc=To make a complete backup of Dolibarr, you must: +BackupDesc2=* Save content of documents directory (%s) that contains all uploaded and generated files (you can make a zip for example). +BackupDesc3=* Save content of your database into a dump file. For this, you can use following assistant. +BackupDescX=Archived directory should be stored in a secure place. +BackupDescY=The generated dump file should be stored in a secure place. +BackupPHPWarning=Backup can't be guaranted with this method. Prefer previous one +RestoreDesc=To restore a Dolibarr backup, you must: +RestoreDesc2=* Restore archive file (zip file for example) of documents directory to extract tree of files in documents directory of a new Dolibarr installation or into this current documents directoy (%s). +RestoreDesc3=* Restore the data, from a backup dump file, into the database of the new Dolibarr installation or into the database of this current installation. Warning, once restore is finished, you must use a login/password, that existed when backup was made, to connect again. To restore a backup database into this current installation, you can follow this assistant. +RestoreMySQL=MySQL import +ForcedToByAModule= This rule is forced to %s by an activated module +PreviousDumpFiles=Available database backup dump files +WeekStartOnDay=First day of week +RunningUpdateProcessMayBeRequired=Running the upgrade process seems to be required (Programs version %s differs from database version %s) +YouMustRunCommandFromCommandLineAfterLoginToUser=You must run this command from command line after login to a shell with user %s or you must add -W option at end of command line to provide %s password. +YourPHPDoesNotHaveSSLSupport=SSL functions not available in your PHP +DownloadMoreSkins=More skins to download +SimpleNumRefModelDesc=Returns the reference number with format %syymm-nnnn where yy is year, mm is month and nnnn is a sequence without hole and with no reset +ShowProfIdInAddress=Show professionnal id with addresses on documents +ShowVATIntaInAddress=Hide VAT Intra num with addresses on documents +TranslationUncomplete=Partial translation +SomeTranslationAreUncomplete=Some languages may be partially translated or may contains errors. If you detect some, you can fix language files registering to http://transifex.com/projects/p/dolibarr/. +MenuUseLayout=Make vertical menu hidable (option javascript must not be disabled) +MAIN_DISABLE_METEO=Disable meteo view +TestLoginToAPI=Test login to API +ProxyDesc=Some features of Dolibarr need to have an Internet access to work. Define here parameters for this. If the Dolibarr server is behind a Proxy server, those parameters tells Dolibarr how to access Internet through it. +ExternalAccess=External access +MAIN_PROXY_USE=Use a proxy server (otherwise direct access to internet) +MAIN_PROXY_HOST=Name/Address of proxy server +MAIN_PROXY_PORT=Port of proxy server +MAIN_PROXY_USER=Login to use the proxy server +MAIN_PROXY_PASS=Password to use the proxy server +DefineHereComplementaryAttributes=Define here all attributes, not already available by default, and that you want to be supported for %s. +ExtraFields=Complementary attributes +ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) +ExtraFieldsThirdParties=Complementary attributes (thirdparty) +ExtraFieldsContacts=Complementary attributes (contact/address) +ExtraFieldsMember=Complementary attributes (member) +ExtraFieldsMemberType=Complementary attributes (member type) +ExtraFieldsCustomerOrders=Complementary attributes (orders) +ExtraFieldsCustomerInvoices=Complementary attributes (invoices) +ExtraFieldsSupplierOrders=Complementary attributes (orders) +ExtraFieldsSupplierInvoices=Complementary attributes (invoices) +ExtraFieldsProject=Complementary attributes (projects) +ExtraFieldsProjectTask=Complementary attributes (tasks) +ExtraFieldHasWrongValue=Attribute %s has a wrong value. +AlphaNumOnlyCharsAndNoSpace=only alphanumericals characters without space +AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space +SendingMailSetup=Setup of sendings by email +SendmailOptionNotComplete=Warning, on some Linux systems, to send email from your email, sendmail execution setup must contains option -ba (parameter mail.force_extra_parameters into your php.ini file). If some recipients never receive emails, try to edit this PHP parameter with mail.force_extra_parameters = -ba). +PathToDocuments=Path to documents +PathDirectory=Directory +SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail direct" will generate a mail message that might be not correctly parsed by some receiving mail servers. Result is that some mails can't be read by people hosted by those bugged platforms. It's case for some Internet providers (Ex: Orange in France). This is not a problem into Dolibarr nor into PHP but onto receiving mail server. You can however add option MAIN_FIX_FOR_BUGGED_MTA to 1 into setup - other to modify Dolibarr to avoid this. However, you may experience problem with other servers that respect strictly the SMTP standard. The other solution (recommended) is to use the method "SMTP socket library" that has no disadvantages. +TranslationSetup=Configuration de la traduction +TranslationDesc=Choice of language visible on screen can be modified:
* Globally from menu Home - Setup - Display
* For user only from tab User display of user card (click on login on top of screen). +TotalNumberOfActivatedModules=Total number of activated feature modules: %s +YouMustEnableOneModule=You must at least enable 1 module +ClassNotFoundIntoPathWarning=Class %s not found into PHP path +YesInSummer=Yes in summer +OnlyFollowingModulesAreOpenedToExternalUsers=Note, only following modules are opened to external users (whatever are permission of such users): +SuhosinSessionEncrypt=Session storage encrypted by Suhosin +ConditionIsCurrently=Condition is currently %s +YouUseBestDriver=You use driver %s that is best driver available currently. +YouDoNotUseBestDriver=You use drive %s but driver %s is recommended. +NbOfProductIsLowerThanNoPb=You have only %s products/services into database. This does not required any particular optimization. +SearchOptim=Search optimization +YouHaveXProductUseSearchOptim=You have %s product into database. You should add the constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 into Home-Setup-Other, you limit the search to the beginning of strings making possible for database to use index and you should get an immediate response. +BrowserIsOK=You are using the web browser %s. This browser is ok for security and performance. +BrowserIsKO=You are using the web browser %s. This browser is known to be a bad choice for security, performance and reliability. We recommand you to use Firefox, Chrome, Opera or Safari. +XDebugInstalled=XDebug is loaded. +XCacheInstalled=XCache is loaded. +AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". +FieldEdition=Edition of field %s +FixTZ=TimeZone fix +FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced) +GetBarCode=Get barcode +EmptyNumRefModelDesc=The code is free. This code can be modified at any time. +##### Module password generation +PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: 8 characters containing shared numbers and characters in lowercase. +PasswordGenerationNone=Do not suggest any generated password. Password must be type in manually. +##### Users setup ##### +UserGroupSetup=Users and groups module setup +GeneratePassword=Suggest a generated password +RuleForGeneratedPasswords=Rule to generate suggested passwords or validate passwords +DoNotSuggest=Do not suggest any password +EncryptedPasswordInDatabase=To allow the encryption of the passwords in the database +DisableForgetPasswordLinkOnLogonPage=Do not show the link "Forget password" on login page +UsersSetup=Users module setup +UserMailRequired=EMail required to create a new user +##### Company setup ##### +CompanySetup=Companies module setup +CompanyCodeChecker=Module for third parties code generation and checking (customer or supplier) +AccountCodeManager=Module for accountancy code generation (customer or supplier) +ModuleCompanyCodeAquarium=Return an accountancy code built by:
%s followed by third party supplier code for a supplier accountancy code,
%s followed by third party customer code for a customer accountancy code. +ModuleCompanyCodePanicum=Return an empty accountancy code. +ModuleCompanyCodeDigitaria=Accountancy code depends on third party code. The code is composed of the character "C" in the first position followed by the first 5 characters of the third party code. +UseNotifications=Use notifications +NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined:
* per third parties contacts (customers or suppliers), one third party at time.
* or by setting a global target email address on module setup page. +ModelModules=Documents templates +DocumentModelOdt=Generate documents from OpenDocuments templates (.ODT or .ODS files for OpenOffice, KOffice, TextEdit,...) +WatermarkOnDraft=Watermark on draft document +JSOnPaimentBill=Activate feature to autofill payment lines on payment form +CompanyIdProfChecker=Rules on Professional Ids +MustBeUnique=Must be unique ? +MustBeMandatory=Mandatory to create third parties ? +MustBeInvoiceMandatory=Mandatory to validate invoices ? +Miscellaneous=Miscellaneous +##### Webcal setup ##### +WebCalSetup=Webcalendar link setup +WebCalSyncro=Add Dolibarr events to WebCalendar +WebCalAllways=Always, no asking +WebCalYesByDefault=On demand (yes by default) +WebCalNoByDefault=On demand (no by default) +WebCalNever=Never +WebCalURL=URL for calendar access +WebCalServer=Server hosting calendar database +WebCalDatabaseName=Database name +WebCalUser=User to access database +WebCalSetupSaved=Webcalendar setup saved successfully. +WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successful. +WebCalTestKo1=Connection to server '%s' succeed but database '%s' could not be reached. +WebCalTestKo2=Connection to server '%s' with user '%s' failed. +WebCalErrorConnectOkButWrongDatabase=Connection succeeded but database doesn't look to be a Webcalendar database. +WebCalAddEventOnCreateActions=Add calendar event on actions create +WebCalAddEventOnCreateCompany=Add calendar event on companies create +WebCalAddEventOnStatusPropal=Add calendar event on commercial proposals status change +WebCalAddEventOnStatusContract=Add calendar event on contracts status change +WebCalAddEventOnStatusBill=Add calendar event on bills status change +WebCalAddEventOnStatusMember=Add calendar event on members status change +WebCalUrlForVCalExport=An export link to %s format is available at following link: %s +WebCalCheckWebcalSetup=Maybe the Webcal module setup is not correct. +##### Invoices ##### +BillsSetup=Invoices module setup +BillsDate=Invoices date +BillsNumberingModule=Invoices and credit notes numbering model +BillsPDFModules=Invoice documents models +CreditNoteSetup=Credit note module setup +CreditNotePDFModules=Credit note document models +CreditNote=Credit note +CreditNotes=Credit notes +ForceInvoiceDate=Force invoice date to validation date +DisableRepeatable=Disable repeatable invoices +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice +EnableEditDeleteValidInvoice=Enable the possibility to edit/delete valid invoice with no payment +SuggestPaymentByRIBOnAccount=Suggest payment by withdraw on account +SuggestPaymentByChequeToAddress=Suggest payment by cheque to +FreeLegalTextOnInvoices=Free text on invoices +WatermarkOnDraftInvoices=Watermark on draft invoices (none if empty) +##### Proposals ##### +PropalSetup=Commercial proposals module setup +CreateForm=Create forms +NumberOfProductLines=Number of product lines +ProposalsNumberingModules=Commercial proposal numbering models +ProposalsPDFModules=Commercial proposal documents models +ClassifiedInvoiced=Classified invoiced +HideTreadedPropal=Hide the treated commercial proposals in the list +AddShippingDateAbility=Add shipping date ability +AddDeliveryAddressAbility=Add delivery date ability +UseOptionLineIfNoQuantity=A line of product/service with a zero amount is considered as an option +FreeLegalTextOnProposal=Free text on commercial proposals +WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### AskPriceSupplier ##### +AskPriceSupplierSetup=Price requests suppliers module setup +AskPriceSupplierNumberingModules=Price requests suppliers numbering models +AskPriceSupplierPDFModules=Price requests suppliers documents models +FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers +WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request +##### Orders ##### +OrdersSetup=Order management setup +OrdersNumberingModules=Orders numbering models +OrdersModelModule=Order documents models +HideTreadedOrders=Hide the treated or cancelled orders in the list +ValidOrderAfterPropalClosed=To validate the order after proposal closer, makes it possible not to step by the provisional order +FreeLegalTextOnOrders=Free text on orders +WatermarkOnDraftOrders=Watermark on draft orders (none if empty) +ShippableOrderIconInList=Add an icon in Orders list which indicate if order is shippable +BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ask for bank account destination of order +##### Clicktodial ##### +ClickToDialSetup=Click To Dial module setup +ClickToDialUrlDesc=Url called when a click on phone picto is done. In URL, you can use tags
__PHONETO__ that will be replaced with the phone number of person to call
__PHONEFROM__ that will be replaced with phone number of calling person (yours)
__LOGIN__ that will be replaced with your clicktodial login (defined on your user card)
__PASS__ that will be replaced with your clicktodial password (defined on your user card). +##### Bookmark4u ##### +Bookmark4uSetup=Bookmark4u module setup +##### Interventions ##### +InterventionsSetup=Interventions module setup +FreeLegalTextOnInterventions=Free text on intervention documents +FicheinterNumberingModules=Intervention numbering models +TemplatePDFInterventions=Intervention card documents models +WatermarkOnDraftInterventionCards=Watermark on intervention card documents (none if empty) +##### Contracts ##### +ContractsSetup=Contracts/Subscriptions module setup +ContractsNumberingModules=Contracts numbering modules +TemplatePDFContracts=Contracts documents models +FreeLegalTextOnContracts=Free text on contracts +WatermarkOnDraftContractCards=Watermark on draft contracts (none if empty) +##### Members ##### +MembersSetup=Members module setup +MemberMainOptions=Main options +AddSubscriptionIntoAccount=Suggest by default to create a bank transaction, in bank module, when adding a new payed subscription +AdherentLoginRequired= Manage a Login for each member +AdherentMailRequired=EMail required to create a new member +MemberSendInformationByMailByDefault=Checkbox to send mail confirmation to members (validation or new subscription) is on by default +##### LDAP setup ##### +LDAPSetup=LDAP Setup +LDAPGlobalParameters=Global parameters +LDAPUsersSynchro=Users +LDAPGroupsSynchro=Groups +LDAPContactsSynchro=Contacts +LDAPMembersSynchro=Members +LDAPSynchronization=LDAP synchronisation +LDAPFunctionsNotAvailableOnPHP=LDAP functions are not available on your PHP +LDAPToDolibarr=LDAP -> Dolibarr +DolibarrToLDAP=Dolibarr -> LDAP +LDAPNamingAttribute=Key in LDAP +LDAPSynchronizeUsers=Organization of users in LDAP +LDAPSynchronizeGroups=Organization of groups in LDAP +LDAPSynchronizeContacts=Organization of contacts in LDAP +LDAPSynchronizeMembers=Organization of foundation's members in LDAP +LDAPTypeExample=OpenLdap, Egroupware or Active Directory +LDAPPrimaryServer=Primary server +LDAPSecondaryServer=Secondary server +LDAPServerPort=Server port +LDAPServerPortExample=Default port : 389 +LDAPServerProtocolVersion=Protocol version +LDAPServerUseTLS=Use TLS +LDAPServerUseTLSExample=Your LDAP server use TLS +LDAPServerDn=Server DN +LDAPAdminDn=Administrator DN +LDAPAdminDnExample=Complete DN (ex: cn=admin,dc=example,dc=com) +LDAPPassword=Administrator password +LDAPUserDn=Users' DN +LDAPUserDnExample=Complete DN (ex: ou=users,dc=example,dc=com) +LDAPGroupDn=Groups' DN +LDAPGroupDnExample=Complete DN (ex: ou=groups,dc=example,dc=com) +LDAPServerExample=Server address (ex: localhost, 192.168.0.2, ldaps://ldap.example.com/) +LDAPServerDnExample=Complete DN (ex: dc=example,dc=com) +LDAPPasswordExample=Admin password +LDAPDnSynchroActive=Users and groups synchronization +LDAPDnSynchroActiveExample=LDAP to Dolibarr or Dolibarr to LDAP synchronization +LDAPDnContactActive=Contacts' synchronization +LDAPDnContactActiveYes=Activated synchronization +LDAPDnContactActiveExample=Activated/Unactivated synchronization +LDAPDnMemberActive=Members' synchronization +LDAPDnMemberActiveExample=Activated/Unactivated synchronization +LDAPContactDn=Dolibarr contacts' DN +LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=example,dc=com) +LDAPMemberDn=Dolibarr members DN +LDAPMemberDnExample=Complete DN (ex: ou=members,dc=example,dc=com) +LDAPMemberObjectClassList=List of objectClass +LDAPMemberObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) +LDAPUserObjectClassList=List of objectClass +LDAPUserObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) +LDAPGroupObjectClassList=List of objectClass +LDAPGroupObjectClassListExample=List of objectClass defining record attributes (ex: top,groupOfUniqueNames) +LDAPContactObjectClassList=List of objectClass +LDAPContactObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) +LDAPMemberTypeDn=Dolibarr members type DN +LDAPMemberTypeDnExample=Complete DN (ex: ou=type_members,dc=example,dc=com) +LDAPTestConnect=Test LDAP connection +LDAPTestSynchroContact=Test contacts synchronization +LDAPTestSynchroUser=Test user synchronization +LDAPTestSynchroGroup=Test group synchronization +LDAPTestSynchroMember=Test member synchronization +LDAPTestSearch= Test a LDAP search +LDAPSynchroOK=Synchronization test successful +LDAPSynchroKO=Failed synchronization test +LDAPSynchroKOMayBePermissions=Failed synchronization test. Check that connexion to server is correctly configured and allows LDAP udpates +LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=%s) +LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=%s) +LDAPBindOK=Connect/Authentificate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPBindKO=Connect/Authentificate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPUnbindSuccessfull=Disconnect successful +LDAPUnbindFailed=Disconnect failed +LDAPConnectToDNSuccessfull=Connection to DN (%s) successful +LDAPConnectToDNFailed=Connection to DN (%s) failed +LDAPSetupForVersion3=LDAP server configured for version 3 +LDAPSetupForVersion2=LDAP server configured for version 2 +LDAPDolibarrMapping=Dolibarr Mapping +LDAPLdapMapping=LDAP Mapping +LDAPFieldLoginUnix=Login (unix) +LDAPFieldLoginExample=Example : uid +LDAPFilterConnection=Search filter +LDAPFilterConnectionExample=Example : &(objectClass=inetOrgPerson) +LDAPFieldLoginSamba=Login (samba, activedirectory) +LDAPFieldLoginSambaExample=Example : samaccountname +LDAPFieldFullname=Full name +LDAPFieldFullnameExample=Example : cn +LDAPFieldPassword=Password +LDAPFieldPasswordNotCrypted=Password not crypted +LDAPFieldPasswordCrypted=Password crypted +LDAPFieldPasswordExample=Example : userPassword +LDAPFieldCommonName=Common name +LDAPFieldCommonNameExample=Example : cn +LDAPFieldName=Name +LDAPFieldNameExample=Example : sn +LDAPFieldFirstName=First name +LDAPFieldFirstNameExample=Example : givenName +LDAPFieldMail=Email address +LDAPFieldMailExample=Example : mail +LDAPFieldPhone=Professional phone number +LDAPFieldPhoneExample=Example : telephonenumber +LDAPFieldHomePhone=Personal phone number +LDAPFieldHomePhoneExample=Example : homephone +LDAPFieldMobile=Cellular phone +LDAPFieldMobileExample=Example : mobile +LDAPFieldFax=Fax number +LDAPFieldFaxExample=Example : facsimiletelephonenumber +LDAPFieldAddress=Street +LDAPFieldAddressExample=Example : street +LDAPFieldZip=Zip +LDAPFieldZipExample=Example : postalcode +LDAPFieldTown=Town +LDAPFieldTownExample=Example : l +LDAPFieldCountry=Country +LDAPFieldCountryExample=Example : c +LDAPFieldDescription=Description +LDAPFieldDescriptionExample=Example : description +LDAPFieldGroupMembers= Group members +LDAPFieldGroupMembersExample= Example : uniqueMember +LDAPFieldBirthdate=Birthdate +LDAPFieldBirthdateExample=Example : +LDAPFieldCompany=Company +LDAPFieldCompanyExample=Example : o +LDAPFieldSid=SID +LDAPFieldSidExample=Example : objectsid +LDAPFieldEndLastSubscription=Date of subscription end +LDAPFieldTitle=Post/Function +LDAPFieldTitleExample=Example: title +LDAPParametersAreStillHardCoded=LDAP parameters are still hardcoded (in contact class) +LDAPSetupNotComplete=LDAP setup not complete (go on others tabs) +LDAPNoUserOrPasswordProvidedAccessIsReadOnly=No administrator or password provided. LDAP access will be anonymous and in read only mode. +LDAPDescContact=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr contacts. +LDAPDescUsers=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr users. +LDAPDescGroups=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr groups. +LDAPDescMembers=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr members module. +LDAPDescValues=Example values are designed for OpenLDAP with following loaded schemas: core.schema, cosine.schema, inetorgperson.schema). If you use thoose values and OpenLDAP, modify your LDAP config file slapd.conf to have all thoose schemas loaded. +ForANonAnonymousAccess=For an authenticated access (for a write access for example) +PerfDolibarr=Performance setup/optimizing report +YouMayFindPerfAdviceHere=You will find on this page some checks or advices related to performance. +NotInstalled=Not installed, so your server is not slow down by this. +ApplicativeCache=Applicative cache +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. +MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled. +OPCodeCache=OPCode cache +NoOPCodeCacheFound=No OPCode cache found. May be you use another OPCode cache than XCache or eAccelerator (good), may be you don't have OPCode cache (very bad). +HTTPCacheStaticResources=HTTP cache for static resources (css, img, javascript) +FilesOfTypeCached=Files of type %s are cached by HTTP server +FilesOfTypeNotCached=Files of type %s are not cached by HTTP server +FilesOfTypeCompressed=Files of type %s are compressed by HTTP server +FilesOfTypeNotCompressed=Files of type %s are not compressed by HTTP server +CacheByServer=Cache by server +CacheByClient=Cache by browser +CompressionOfResources=Compression of HTTP responses +TestNotPossibleWithCurrentBrowsers=Such an automatic detection is not possible with current browsers +##### Products ##### +ProductSetup=Products module setup +ServiceSetup=Services module setup +ProductServiceSetup=Products and Services modules setup +NumberOfProductShowInSelect=Max number of products in combos select lists (0=no limit) +ConfirmDeleteProductLineAbility=Confirmation when removing product lines in forms +ModifyProductDescAbility=Personalization of product descriptions in forms +ViewProductDescInFormAbility=Visualization of product descriptions in the forms (otherwise as popup tooltip) +ViewProductDescInThirdpartyLanguageAbility=Visualization of products descriptions in the thirdparty language +UseSearchToSelectProductTooltip=Also if you have a large number of product (> 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=Use a search form to choose a product (rather than a drop-down list). +UseEcoTaxeAbility=Support Eco-Taxe (WEEE) +SetDefaultBarcodeTypeProducts=Default barcode type to use for products +SetDefaultBarcodeTypeThirdParties=Default barcode type to use for third parties +ProductCodeChecker= Module for product code generation and checking (product or service) +ProductOtherConf= Product / Service configuration +##### Syslog ##### +SyslogSetup=Logs module setup +SyslogOutput=Logs outputs +SyslogSyslog=Syslog +SyslogFacility=Facility +SyslogLevel=Level +SyslogSimpleFile=File +SyslogFilename=File name and path +YouCanUseDOL_DATA_ROOT=You can use DOL_DATA_ROOT/dolibarr.log for a log file in Dolibarr "documents" directory. You can set a different path to store this file. +ErrorUnknownSyslogConstant=Constant %s is not a known Syslog constant +OnlyWindowsLOG_USER=Windows only supports LOG_USER +##### Donations ##### +DonationsSetup=Donation module setup +DonationsReceiptModel=Template of donation receipt +##### Barcode ##### +BarcodeSetup=Barcode setup +PaperFormatModule=Print format module +BarcodeEncodeModule=Barcode encoding type +UseBarcodeInProductModule=Use bar codes for products +CodeBarGenerator=Barcode generator +ChooseABarCode=No generator defined +FormatNotSupportedByGenerator=Format not supported by this generator +BarcodeDescEAN8=Barcode of type EAN8 +BarcodeDescEAN13=Barcode of type EAN13 +BarcodeDescUPC=Barcode of type UPC +BarcodeDescISBN=Barcode of type ISBN +BarcodeDescC39=Barcode of type C39 +BarcodeDescC128=Barcode of type C128 +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode +BarcodeInternalEngine=Internal engine +BarCodeNumberManager=Manager to auto define barcode numbers +##### Prelevements ##### +WithdrawalsSetup=Withdrawal module setup +##### ExternalRSS ##### +ExternalRSSSetup=External RSS imports setup +NewRSS=New RSS Feed +RSSUrl=RSS URL +RSSUrlExample=An interesting RSS feed +##### Mailing ##### +MailingSetup=EMailing module setup +MailingEMailFrom=Sender EMail (From) for emails sent by emailing module +MailingEMailError=Return EMail (Errors-to) for emails with errors +MailingDelay=Seconds to wait after sending next message +##### Notification ##### +NotificationSetup=EMail notification module setup +NotificationEMailFrom=Sender EMail (From) for emails sent for notifications +ListOfAvailableNotifications=List of events you can set notification on, for each thirdparty (go into thirdparty card to setup) or by setting a fixed email (List depends on activated modules) +FixedEmailTarget=Fixed email target +##### Sendings ##### +SendingsSetup=Sending module setup +SendingsReceiptModel=Sending receipt model +SendingsNumberingModules=Sendings numbering modules +SendingsAbility=Support shipment sheets for customer deliveries +NoNeedForDeliveryReceipts=In most cases, sendings receipts are used both as sheets for customer deliveries (list of products to send) and sheets that is recevied and signed by customer. So product deliveries receipts is a duplicated feature and is rarely activated. +FreeLegalTextOnShippings=Free text on shipments +##### Deliveries ##### +DeliveryOrderNumberingModules=Products deliveries receipt numbering module +DeliveryOrderModel=Products deliveries receipt model +DeliveriesOrderAbility=Support products deliveries receipts +FreeLegalTextOnDeliveryReceipts=Free text on delivery receipts +##### FCKeditor ##### +AdvancedEditor=Advanced editor +ActivateFCKeditor=Activate advanced editor for: +FCKeditorForCompany=WYSIWIG creation/edition of elements description and note (except products/services) +FCKeditorForProduct=WYSIWIG creation/edition of products/services description and note +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 formating when building PDF files. +FCKeditorForMailing= WYSIWIG creation/edition for mass eMailings (Tools->eMailing) +FCKeditorForUserSignature=WYSIWIG creation/edition of user signature +FCKeditorForMail=WYSIWIG creation/edition for all mail (except Outils->eMailing) +##### OSCommerce 1 ##### +OSCommerceErrorConnectOkButWrongDatabase=Connection succeeded but database doesn't look to be an OSCommerce database (Key %s not found in table %s). +OSCommerceTestOk=Connection to server '%s' on database '%s' with user '%s' successfull. +OSCommerceTestKo1=Connection to server '%s' succeed but database '%s' could not be reached. +OSCommerceTestKo2=Connection to server '%s' with user '%s' failed. +##### Stock ##### +StockSetup=Warehouse module setup +UserWarehouse=Use user personal warehouses +IfYouUsePointOfSaleCheckModule=If you use a Point of Sale module (POS module provided by default or another external module), this setup may be ignored by your Point Of Sale module. Most point of sales modules are designed to create immediatly an invoice and decrease stock by default whatever are options here. So, if you need or not to have a stock decrease when registering a sell from your Point Of Sale, check also your POS module set up. +##### Menu ##### +MenuDeleted=Menu deleted +TreeMenu=Tree menus +Menus=Menus +TreeMenuPersonalized=Personalized menus +NewMenu=New menu +MenuConf=Menus setup +Menu=Selection of menu +MenuHandler=Menu handler +MenuModule=Source module +HideUnauthorizedMenu= Hide unauthorized menus (gray) +DetailId=Id menu +DetailMenuHandler=Menu handler where to show new menu +DetailMenuModule=Module name if menu entry come from a module +DetailType=Type of menu (top or left) +DetailTitre=Menu label or label code for translation +DetailMainmenu=Group for which it belongs (obsolete) +DetailUrl=URL where menu send you (Absolute URL link or external link with http://) +DetailLeftmenu=Display condition or not (obsolete) +DetailEnabled=Condition to show or not entry +DetailRight=Condition to display unauthorized grey menus +DetailLangs=Lang file name for label code translation +DetailUser=Intern / Extern / All +Target=Target +DetailTarget=Target for links (_blank top open a new window) +DetailLevel=Level (-1:top menu, 0:header menu, >0 menu and sub menu) +ModifMenu=Menu change +DeleteMenu=Delete menu entry +ConfirmDeleteMenu=Are you sure you want to delete menu entry %s ? +DeleteLine=Delete line +ConfirmDeleteLine=Are you sure you want to delete this line ? +##### Tax ##### +TaxSetup=Taxes, social contributions and dividends module setup +OptionVatMode=VAT due +OptionVATDefault=Cash basis +OptionVATDebitOption=Accrual basis +OptionVatDefaultDesc=VAT is due:
- on delivery for goods (we use invoice date)
- on payments for services +OptionVatDebitOptionDesc=VAT is due:
- on delivery for goods (we use invoice date)
- on invoice (debit) for services +SummaryOfVatExigibilityUsedByDefault=Time of VAT exigibility by default according to chosen option: +OnDelivery=On delivery +OnPayment=On payment +OnInvoice=On invoice +SupposedToBePaymentDate=Payment date used +SupposedToBeInvoiceDate=Invoice date used +Buy=Buy +Sell=Sell +InvoiceDateUsed=Invoice date used +YourCompanyDoesNotUseVAT=Your company has been defined to not use VAT (Home - Setup - Company/Foundation), so there is no VAT options to setup. +AccountancyCode=Accountancy Code +AccountancyCodeSell=Sale account. code +AccountancyCodeBuy=Purchase account. code +##### Agenda ##### +AgendaSetup=Events and agenda module setup +PasswordTogetVCalExport=Key to authorize export link +PastDelayVCalExport=Do not export event older than +AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionary -> Type of agenda events) +AGENDA_DEFAULT_FILTER_TYPE=Set automatically this type of event into search filter of agenda view +AGENDA_DEFAULT_FILTER_STATUS=Set automatically this status for events into search filter of agenda view +AGENDA_DEFAULT_VIEW=Which tab do you want to open by default when selecting menu Agenda +##### ClickToDial ##### +ClickToDialDesc=This module allows to add an icon after phone numbers. A click on this icon will call a server with a particular URL you define below. This can be used to call a call center system from Dolibarr that can call the phone number on a SIP system for example. +##### Point Of Sales (CashDesk) ##### +CashDesk=Point of sales +CashDeskSetup=Point of sales module setup +CashDeskThirdPartyForSell=Default generic third party to use for sells +CashDeskBankAccountForSell=Default account to use to receive cash payments +CashDeskBankAccountForCheque= Default account to use to receive payments by cheque +CashDeskBankAccountForCB= Default account to use to receive payments by credit cards +CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock). +CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease +StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with batch management +CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required. +##### Bookmark ##### +BookmarkSetup=Bookmark module setup +BookmarkDesc=This module allows you to manage bookmarks. You can also add shortcuts to any Dolibarr pages or externale web sites on your left menu. +NbOfBoomarkToShow=Maximum number of bookmarks to show in left menu +##### WebServices ##### +WebServicesSetup=Webservices module setup +WebServicesDesc=By enabling this module, Dolibarr become a web service server to provide miscellaneous web services. +WSDLCanBeDownloadedHere=WSDL descriptor files of provided services can be download here +EndPointIs=SOAP clients must send their requests to the Dolibarr endpoint available at Url +##### Bank ##### +BankSetupModule=Bank module setup +FreeLegalTextOnChequeReceipts=Free text on cheque receipts +BankOrderShow=Display order of bank accounts for countries using "detailed bank number" +BankOrderGlobal=General +BankOrderGlobalDesc=General display order +BankOrderES=Spanish +BankOrderESDesc=Spanish display order +##### Multicompany ##### +MultiCompanySetup=Multi-company module setup +##### Suppliers ##### +SuppliersSetup=Supplier module setup +SuppliersCommandModel=Complete template of supplier order (logo...) +SuppliersInvoiceModel=Complete template of supplier invoice (logo...) +SuppliersInvoiceNumberingModel=Supplier invoices numbering models +##### GeoIPMaxmind ##### +GeoIPMaxmindSetup=GeoIP Maxmind module setup +PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.
Examples:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat +NoteOnPathLocation=Note that your ip to country data file must be inside a directory your PHP can read (Check your PHP open_basedir setup and filesystem permissions). +YouCanDownloadFreeDatFileTo=You can download a free demo version of the Maxmind GeoIP country file at %s. +YouCanDownloadAdvancedDatFileTo=You can also download a more complete version, with updates, of the Maxmind GeoIP country file at %s. +TestGeoIPResult=Test of a conversion IP -> country +##### Projects ##### +ProjectsNumberingModules=Projects numbering module +ProjectsSetup=Project module setup +ProjectsModelModule=Project reports document model +TasksNumberingModules=Tasks numbering module +TaskModelModule=Tasks reports document model +##### ECM (GED) ##### +ECMSetup = GED Setup +ECMAutoTree = Automatic tree folder and document +##### Fiscal Year ##### +FiscalYears=Fiscal years +FiscalYear=Fiscal year +FiscalYearCard=Fiscal year card +NewFiscalYear=New fiscal year +EditFiscalYear=Edit fiscal year +OpenFiscalYear=Open fiscal year +CloseFiscalYear=Close fiscal year +DeleteFiscalYear=Delete fiscal year +ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ? +Opened=Opened +Closed=Closed +AlwaysEditable=Can always be edited +MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) +NbMajMin=Minimum number of uppercase characters +NbNumMin=Minimum number of numeric characters +NbSpeMin=Minimum number of special characters +NbIteConsecutive=Maximum number of repeating same characters +NoAmbiCaracAutoGeneration=Do not use ambiguous characters ("1","l","i","|","0","O") for automatic generation +SalariesSetup=Setup of module salaries +SortOrder=Sort order +Format=Format +TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type +IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. diff --git a/htdocs/langs/bn_BD/agenda.lang b/htdocs/langs/bn_BD/agenda.lang new file mode 100644 index 00000000000..04e2ae30de8 --- /dev/null +++ b/htdocs/langs/bn_BD/agenda.lang @@ -0,0 +1,93 @@ +# Dolibarr language file - Source file is en_US - agenda +IdAgenda=ID event +Actions=Events +ActionsArea=Events area (Actions and tasks) +Agenda=Agenda +Agendas=Agendas +Calendar=Calendar +Calendars=Calendars +LocalAgenda=Internal calendar +ActionsOwnedBy=Event owned by +AffectedTo=Assigned to +DoneBy=Done by +Event=Event +Events=Events +EventsNb=Number of events +MyEvents=My events +OtherEvents=Other events +ListOfActions=List of events +Location=Location +EventOnFullDay=Event on all day(s) +SearchAnAction= Search an event/task +MenuToDoActions=All incomplete events +MenuDoneActions=All terminated events +MenuToDoMyActions=My incomplete events +MenuDoneMyActions=My terminated events +ListOfEvents=List of events (internal calendar) +ActionsAskedBy=Events reported by +ActionsToDoBy=Events assigned to +ActionsDoneBy=Events done by +ActionsForUser=Events for user +ActionsForUsersGroup=Events for all users of group +ActionAssignedTo=Event assigned to +AllMyActions= All my events/tasks +AllActions= All events/tasks +ViewList=List view +ViewCal=Month view +ViewDay=Day view +ViewWeek=Week view +ViewPerUser=Per user view +ViewWithPredefinedFilters= View with predefined filters +AutoActions= Automatic filling +AgendaAutoActionDesc= Define here events for which you want Dolibarr to create automatically an event in agenda. If nothing is checked (by default), only manual actions will be included in agenda. +AgendaSetupOtherDesc= This page provides options to allow export of your Dolibarr events into an external calendar (thunderbird, google calendar, ...) +AgendaExtSitesDesc=This page allows to declare external sources of calendars to see their events into Dolibarr agenda. +ActionsEvents=Events for which Dolibarr will create an action in agenda automatically +PropalValidatedInDolibarr=Proposal %s validated +InvoiceValidatedInDolibarr=Invoice %s validated +InvoiceValidatedInDolibarrFromPos=Invoice %s validated from POS +InvoiceBackToDraftInDolibarr=Invoice %s go back to draft status +InvoiceDeleteDolibarr=Invoice %s deleted +OrderValidatedInDolibarr= Order %s validated +OrderApprovedInDolibarr=Order %s approved +OrderRefusedInDolibarr=Order %s refused +OrderBackToDraftInDolibarr=Order %s go back to draft status +OrderCanceledInDolibarr=Order %s canceled +ProposalSentByEMail=Commercial proposal %s sent by EMail +OrderSentByEMail=Customer order %s sent by EMail +InvoiceSentByEMail=Customer invoice %s sent by EMail +SupplierOrderSentByEMail=Supplier order %s sent by EMail +SupplierInvoiceSentByEMail=Supplier invoice %s sent by EMail +ShippingSentByEMail=Shipment %s sent by EMail +ShippingValidated= Shipment %s validated +InterventionSentByEMail=Intervention %s sent by EMail +NewCompanyToDolibarr= Third party created +DateActionPlannedStart= Planned start date +DateActionPlannedEnd= Planned end date +DateActionDoneStart= Real start date +DateActionDoneEnd= Real end date +DateActionStart= Start date +DateActionEnd= End date +AgendaUrlOptions1=You can also add following parameters to filter output: +AgendaUrlOptions2=login=%s to restrict output to actions created by or assigned to user %s. +AgendaUrlOptions3=logina=%s to restrict output to actions owned by a user %s. +AgendaUrlOptions4=logint=%s to restrict output to actions assigned to user %s. +AgendaUrlOptionsProject=project=PROJECT_ID to restrict output to actions associated to project PROJECT_ID. +AgendaShowBirthdayEvents=Show birthday's contacts +AgendaHideBirthdayEvents=Hide birthday's contacts +Busy=Busy +ExportDataset_event1=List of agenda events +DefaultWorkingDays=Default working days range in week (Example: 1-5, 1-6) +DefaultWorkingHours=Default working hours in day (Example: 9-18) +# External Sites ical +ExportCal=Export calendar +ExtSites=Import external calendars +ExtSitesEnableThisTool=Show external calendars (defined into global setup) into agenda. Does not affect external calendars defined by users. +ExtSitesNbOfAgenda=Number of calendars +AgendaExtNb=Calendar nb %s +ExtSiteUrlAgenda=URL to access .ical file +ExtSiteNoLabel=No Description +WorkingTimeRange=Working time range +WorkingDaysRange=Working days range +AddEvent=Create event +MyAvailability=My availability diff --git a/htdocs/langs/bn_BD/banks.lang b/htdocs/langs/bn_BD/banks.lang new file mode 100644 index 00000000000..a2306950fb4 --- /dev/null +++ b/htdocs/langs/bn_BD/banks.lang @@ -0,0 +1,165 @@ +# Dolibarr language file - Source file is en_US - banks +Bank=Bank +Banks=Banks +MenuBankCash=Bank/Cash +MenuSetupBank=Bank/Cash setup +BankName=Bank name +FinancialAccount=Account +FinancialAccounts=Accounts +BankAccount=Bank account +BankAccounts=Bank accounts +ShowAccount=Show Account +AccountRef=Financial account ref +AccountLabel=Financial account label +CashAccount=Cash account +CashAccounts=Cash accounts +MainAccount=Main account +CurrentAccount=Current account +CurrentAccounts=Current accounts +SavingAccount=Savings account +SavingAccounts=Savings accounts +ErrorBankLabelAlreadyExists=Financial account label already exists +BankBalance=Balance +BankBalanceBefore=Balance before +BankBalanceAfter=Balance after +BalanceMinimalAllowed=Minimum allowed balance +BalanceMinimalDesired=Minimum desired balance +InitialBankBalance=Initial balance +EndBankBalance=End balance +CurrentBalance=Current balance +FutureBalance=Future balance +ShowAllTimeBalance=Show balance from start +AllTime=From start +Reconciliation=Reconciliation +RIB=Bank Account Number +IBAN=IBAN number +IbanValid=IBAN is Valid +IbanNotValid=IBAN is Not Valid +BIC=BIC/SWIFT number +SwiftValid=BIC/SWIFT is Valid +SwiftNotValid=BIC/SWIFT is Not Valid +StandingOrders=Standing orders +StandingOrder=Standing order +Withdrawals=Withdrawals +Withdrawal=Withdrawal +AccountStatement=Account statement +AccountStatementShort=Statement +AccountStatements=Account statements +LastAccountStatements=Last account statements +Rapprochement=Reconciliate +IOMonthlyReporting=Monthly reporting +BankAccountDomiciliation=Account address +BankAccountCountry=Account country +BankAccountOwner=Account owner name +BankAccountOwnerAddress=Account owner address +RIBControlError=Integrity check of values fails. This means information for this account number are not complete or wrong (check country, numbers and IBAN). +CreateAccount=Create account +NewAccount=New account +NewBankAccount=New bank account +NewFinancialAccount=New financial account +MenuNewFinancialAccount=New financial account +NewCurrentAccount=New current account +NewSavingAccount=New savings account +NewCashAccount=New cash account +EditFinancialAccount=Edit account +AccountSetup=Financial accounts setup +SearchBankMovement=Search bank movement +Debts=Debts +LabelBankCashAccount=Bank or cash label +AccountType=Account type +BankType0=Savings account +BankType1=Current or credit card account +BankType2=Cash account +IfBankAccount=If bank account +AccountsArea=Accounts area +AccountCard=Account card +DeleteAccount=Delete account +ConfirmDeleteAccount=Are you sure you want to delete this account ? +Account=Account +ByCategories=By categories +ByRubriques=By categories +BankTransactionByCategories=Bank transactions by categories +BankTransactionForCategory=Bank transactions for category %s +RemoveFromRubrique=Remove link with category +RemoveFromRubriqueConfirm=Are you sure you want to remove link between the transaction and the category ? +ListBankTransactions=List of bank transactions +IdTransaction=Transaction ID +BankTransactions=Bank transactions +SearchTransaction=Search transaction +ListTransactions=List transactions +ListTransactionsByCategory=List transaction/category +TransactionsToConciliate=Transactions to reconcile +Conciliable=Can be reconciled +Conciliate=Reconcile +Conciliation=Reconciliation +ConciliationForAccount=Reconcile this account +IncludeClosedAccount=Include closed accounts +OnlyOpenedAccount=Only opened accounts +AccountToCredit=Account to credit +AccountToDebit=Account to debit +DisableConciliation=Disable reconciliation feature for this account +ConciliationDisabled=Reconciliation feature disabled +StatusAccountOpened=Opened +StatusAccountClosed=Closed +AccountIdShort=Number +EditBankRecord=Edit record +LineRecord=Transaction +AddBankRecord=Add transaction +AddBankRecordLong=Add transaction manually +ConciliatedBy=Reconciled by +DateConciliating=Reconcile date +BankLineConciliated=Transaction reconciled +CustomerInvoicePayment=Customer payment +CustomerInvoicePaymentBack=Customer payment back +SupplierInvoicePayment=Supplier payment +WithdrawalPayment=Withdrawal payment +SocialContributionPayment=Social contribution payment +FinancialAccountJournal=Financial account journal +BankTransfer=Bank transfer +BankTransfers=Bank transfers +TransferDesc=Transfer from one account to another one, Dolibarr will write two records (a debit in source account and a credit in target account, of the same amount. The same label and date will be used for this transaction) +TransferFrom=From +TransferTo=To +TransferFromToDone=A transfer from %s to %s of %s %s has been recorded. +CheckTransmitter=Transmitter +ValidateCheckReceipt=Validate this check receipt ? +ConfirmValidateCheckReceipt=Are you sure you want to validate this check receipt, no change will be possible once this is done ? +DeleteCheckReceipt=Delete this check receipt ? +ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt ? +BankChecks=Bank checks +BankChecksToReceipt=Checks waiting for deposit +ShowCheckReceipt=Show check deposit receipt +NumberOfCheques=Nb of check +DeleteTransaction=Delete transaction +ConfirmDeleteTransaction=Are you sure you want to delete this transaction ? +ThisWillAlsoDeleteBankRecord=This will also delete generated bank transactions +BankMovements=Movements +CashBudget=Cash budget +PlannedTransactions=Planned transactions +Graph=Graphics +ExportDataset_banque_1=Bank transactions and account statement +ExportDataset_banque_2=Deposit slip +TransactionOnTheOtherAccount=Transaction on the other account +TransactionWithOtherAccount=Account transfer +PaymentNumberUpdateSucceeded=Payment number updated succesfully +PaymentNumberUpdateFailed=Payment number could not be updated +PaymentDateUpdateSucceeded=Payment date update succesfully +PaymentDateUpdateFailed=Payment date could not be updated +Transactions=Transactions +BankTransactionLine=Bank transaction +AllAccounts=All bank/cash accounts +BackToAccount=Back to account +ShowAllAccounts=Show for all accounts +FutureTransaction=Transaction in futur. No way to conciliate. +SelectChequeTransactionAndGenerate=Select/filter checks to include into the check deposit receipt and click on "Create". +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD +EventualyAddCategory=Eventually, specify a category in which to classify the records +ToConciliate=To conciliate? +ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click +BankDashboard=Bank accounts summary +DefaultRIB=Default BAN +AllRIB=All BAN +LabelRIB=BAN Label +NoBANRecord=No BAN record +DeleteARib=Delete BAN record +ConfirmDeleteRib=Are you sure you want to delete this BAN record ? diff --git a/htdocs/langs/bn_BD/bills.lang b/htdocs/langs/bn_BD/bills.lang new file mode 100644 index 00000000000..69e1510ca44 --- /dev/null +++ b/htdocs/langs/bn_BD/bills.lang @@ -0,0 +1,431 @@ +# Dolibarr language file - Source file is en_US - bills +Bill=Invoice +Bills=Invoices +BillsCustomers=Customers invoices +BillsCustomer=Customers invoice +BillsSuppliers=Suppliers invoices +BillsCustomersUnpaid=Unpaid customers invoices +BillsCustomersUnpaidForCompany=Unpaid customer's invoices for %s +BillsSuppliersUnpaid=Unpaid supplier's invoices +BillsSuppliersUnpaidForCompany=Unpaid supplier's invoices for %s +BillsLate=Late payments +BillsStatistics=Customers invoices statistics +BillsStatisticsSuppliers=Suppliers invoices statistics +DisabledBecauseNotErasable=Disabled because can not be erased +InvoiceStandard=Standard invoice +InvoiceStandardAsk=Standard invoice +InvoiceStandardDesc=This kind of invoice is the common invoice. +InvoiceDeposit=Deposit invoice +InvoiceDepositAsk=Deposit invoice +InvoiceDepositDesc=This kind of invoice is done when a deposit has been received. +InvoiceProForma=Proforma invoice +InvoiceProFormaAsk=Proforma invoice +InvoiceProFormaDesc=Proforma invoice is an image of a true invoice but has no accountancy value. +InvoiceReplacement=Replacement invoice +InvoiceReplacementAsk=Replacement invoice for invoice +InvoiceReplacementDesc=Replacement invoice is used to cancel and replace completely an invoice with no payment already received.

Note: Only invoices with no payment on it can be replaced. If the invoice you replace is not yet closed, it will be automatically closed to 'abandoned'. +InvoiceAvoir=Credit note +InvoiceAvoirAsk=Credit note to correct invoice +InvoiceAvoirDesc=The credit note is a negative invoice used to solve fact that an invoice has an amount that differs than amount really paid (because customer paid too much by error, or will not paid completely since he returned some products for example). +invoiceAvoirWithLines=Create Credit Note with lines from the origin invoice +invoiceAvoirWithPaymentRestAmount=Create Credit Note with remaining unpaid of origin invoice +invoiceAvoirLineWithPaymentRestAmount=Credit Note for remaining unpaid amount +ReplaceInvoice=Replace invoice %s +ReplacementInvoice=Replacement invoice +ReplacedByInvoice=Replaced by invoice %s +ReplacementByInvoice=Replaced by invoice +CorrectInvoice=Correct invoice %s +CorrectionInvoice=Correction invoice +UsedByInvoice=Used to pay invoice %s +ConsumedBy=Consumed by +NotConsumed=Not consumed +NoReplacableInvoice=No replacable invoices +NoInvoiceToCorrect=No invoice to correct +InvoiceHasAvoir=Corrected by one or several invoices +CardBill=Invoice card +PredefinedInvoices=Predefined Invoices +Invoice=Invoice +Invoices=Invoices +InvoiceLine=Invoice line +InvoiceCustomer=Customer invoice +CustomerInvoice=Customer invoice +CustomersInvoices=Customers invoices +SupplierInvoice=Supplier invoice +SuppliersInvoices=Suppliers invoices +SupplierBill=Supplier invoice +SupplierBills=suppliers invoices +Payment=Payment +PaymentBack=Payment back +Payments=Payments +PaymentsBack=Payments back +PaidBack=Paid back +DatePayment=Payment date +DeletePayment=Delete payment +ConfirmDeletePayment=Are you sure you want to delete this payment ? +ConfirmConvertToReduc=Do you want to convert this credit note or deposit into an absolute discount ?
The amount will so be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. +SupplierPayments=Suppliers payments +ReceivedPayments=Received payments +ReceivedCustomersPayments=Payments received from customers +PayedSuppliersPayments=Payments payed to suppliers +ReceivedCustomersPaymentsToValid=Received customers payments to validate +PaymentsReportsForYear=Payments reports for %s +PaymentsReports=Payments reports +PaymentsAlreadyDone=Payments already done +PaymentsBackAlreadyDone=Payments back already done +PaymentRule=Payment rule +PaymentMode=Payment type +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms +PaymentAmount=Payment amount +ValidatePayment=Validate payment +PaymentHigherThanReminderToPay=Payment higher than reminder to pay +HelpPaymentHigherThanReminderToPay=Attention, the payment amount of one or more bills is higher than the rest to pay.
Edit your entry, otherwise confirm and think about creating a credit note of the excess received for each overpaid invoices. +HelpPaymentHigherThanReminderToPaySupplier=Attention, the payment amount of one or more bills is higher than the rest to pay.
Edit your entry, otherwise confirm. +ClassifyPaid=Classify 'Paid' +ClassifyPaidPartially=Classify 'Paid partially' +ClassifyCanceled=Classify 'Abandoned' +ClassifyClosed=Classify 'Closed' +ClassifyUnBilled=Classify 'Unbilled' +CreateBill=Create Invoice +AddBill=Create invoice or credit note +AddToDraftInvoices=Add to draft invoice +DeleteBill=Delete invoice +SearchACustomerInvoice=Search for a customer invoice +SearchASupplierInvoice=Search for a supplier invoice +CancelBill=Cancel an invoice +SendRemindByMail=Send reminder by EMail +DoPayment=Do payment +DoPaymentBack=Do payment back +ConvertToReduc=Convert into future discount +EnterPaymentReceivedFromCustomer=Enter payment received from customer +EnterPaymentDueToCustomer=Make payment due to customer +DisabledBecauseRemainderToPayIsZero=Disabled because remaining unpaid is zero +Amount=Amount +PriceBase=Price base +BillStatus=Invoice status +BillStatusDraft=Draft (needs to be validated) +BillStatusPaid=Paid +BillStatusPaidBackOrConverted=Paid or converted into discount +BillStatusConverted=Paid (ready for final invoice) +BillStatusCanceled=Abandoned +BillStatusValidated=Validated (needs to be paid) +BillStatusStarted=Started +BillStatusNotPaid=Not paid +BillStatusClosedUnpaid=Closed (unpaid) +BillStatusClosedPaidPartially=Paid (partially) +BillShortStatusDraft=Draft +BillShortStatusPaid=Paid +BillShortStatusPaidBackOrConverted=Processed +BillShortStatusConverted=Processed +BillShortStatusCanceled=Abandoned +BillShortStatusValidated=Validated +BillShortStatusStarted=Started +BillShortStatusNotPaid=Not paid +BillShortStatusClosedUnpaid=Closed +BillShortStatusClosedPaidPartially=Paid (partially) +PaymentStatusToValidShort=To validate +ErrorVATIntraNotConfigured=Intracommunautary VAT number not yet defined +ErrorNoPaiementModeConfigured=No default payment mode defined. Go to Invoice module setup to fix this. +ErrorCreateBankAccount=Create a bank account, then go to Setup panel of Invoice module to define payment modes +ErrorBillNotFound=Invoice %s does not exist +ErrorInvoiceAlreadyReplaced=Error, you try to validate an invoice to replace invoice %s. But this one has already been replaced by invoice %s. +ErrorDiscountAlreadyUsed=Error, discount already used +ErrorInvoiceAvoirMustBeNegative=Error, correct invoice must have a negative amount +ErrorInvoiceOfThisTypeMustBePositive=Error, this type of invoice must have a positive amount +ErrorCantCancelIfReplacementInvoiceNotValidated=Error, can't cancel an invoice that has been replaced by another invoice that is still in draft status +BillFrom=From +BillTo=To +ActionsOnBill=Actions on invoice +NewBill=New invoice +LastBills=Last %s invoices +LastCustomersBills=Last %s customers invoices +LastSuppliersBills=Last %s suppliers invoices +AllBills=All invoices +OtherBills=Other invoices +DraftBills=Draft invoices +CustomersDraftInvoices=Customers draft invoices +SuppliersDraftInvoices=Suppliers draft invoices +Unpaid=Unpaid +ConfirmDeleteBill=Are you sure you want to delete this invoice ? +ConfirmValidateBill=Are you sure you want to validate this invoice with reference %s ? +ConfirmUnvalidateBill=Are you sure you want to change invoice %s to draft status ? +ConfirmClassifyPaidBill=Are you sure you want to change invoice %s to status paid ? +ConfirmCancelBill=Are you sure you want to cancel invoice %s ? +ConfirmCancelBillQuestion=Why do you want to classify this invoice 'abandoned' ? +ConfirmClassifyPaidPartially=Are you sure you want to change invoice %s to status paid ? +ConfirmClassifyPaidPartiallyQuestion=This invoice has not been paid completely. What are reasons for you to close this invoice ? +ConfirmClassifyPaidPartiallyReasonAvoir=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I regularise the VAT with a credit note. +ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I accept to lose the VAT on this discount. +ConfirmClassifyPaidPartiallyReasonDiscountVat=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I recover the VAT on this discount without a credit note. +ConfirmClassifyPaidPartiallyReasonBadCustomer=Bad customer +ConfirmClassifyPaidPartiallyReasonProductReturned=Products partially returned +ConfirmClassifyPaidPartiallyReasonOther=Amount abandoned for other reason +ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=This choice is possible if your invoice have been provided with suitable comment. (Example «Only the tax corresponding to the price that have been actually paid gives rights to deduction») +ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=In some countries, this choice might be possible only if your invoice contains correct note. +ConfirmClassifyPaidPartiallyReasonAvoirDesc=Use this choice if all other does not suit +ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=A bad customer is a customer that refuse to pay his debt. +ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=This choice is used when payment is not complete because some of products were returned +ConfirmClassifyPaidPartiallyReasonOtherDesc=Use this choice if all other does not suit, 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=Other +ConfirmClassifyAbandonReasonOtherDesc=This choice will be used in all other cases. For example because you plan to create a replacing invoice. +ConfirmCustomerPayment=Do you confirm this payment input for %s %s ? +ConfirmSupplierPayment=Do you confirm this payment input for %s %s ? +ConfirmValidatePayment=Are you sure you want to validate this payment ? No change can be made once payment is validated. +ValidateBill=Validate invoice +UnvalidateBill=Unvalidate invoice +NumberOfBills=Nb of invoices +NumberOfBillsByMonth=Nb of invoices by month +AmountOfBills=Amount of invoices +AmountOfBillsByMonthHT=Amount of invoices by month (net of tax) +ShowSocialContribution=Show social contribution +ShowBill=Show invoice +ShowInvoice=Show invoice +ShowInvoiceReplace=Show replacing invoice +ShowInvoiceAvoir=Show credit note +ShowInvoiceDeposit=Show deposit invoice +ShowPayment=Show payment +File=File +AlreadyPaid=Already paid +AlreadyPaidBack=Already paid back +AlreadyPaidNoCreditNotesNoDeposits=Already paid (without credit notes and deposits) +Abandoned=Abandoned +RemainderToPay=Remaining unpaid +RemainderToTake=Remaining amount to take +RemainderToPayBack=Remaining amount to pay back +Rest=Pending +AmountExpected=Amount claimed +ExcessReceived=Excess received +EscompteOffered=Discount offered (payment before term) +SendBillRef=Submission of invoice %s +SendReminderBillRef=Submission of invoice %s (reminder) +StandingOrders=Standing orders +StandingOrder=Standing order +NoDraftBills=No draft invoices +NoOtherDraftBills=No other draft invoices +NoDraftInvoices=No draft invoices +RefBill=Invoice ref +ToBill=To bill +RemainderToBill=Remainder to bill +SendBillByMail=Send invoice by email +SendReminderBillByMail=Send reminder by email +RelatedCommercialProposals=Related commercial proposals +MenuToValid=To valid +DateMaxPayment=Payment due before +DateEcheance=Due date limit +DateInvoice=Invoice date +NoInvoice=No invoice +ClassifyBill=Classify invoice +SupplierBillsToPay=Suppliers invoices to pay +CustomerBillsUnpaid=Unpaid customers invoices +DispenseMontantLettres=The written invoices through mecanographic procedures are dispensed by the order in letters +NonPercuRecuperable=Non-recoverable +SetConditions=Set payment terms +SetMode=Set payment mode +Billed=Billed +RepeatableInvoice=Template invoice +RepeatableInvoices=Template invoices +Repeatable=Template +Repeatables=Templates +ChangeIntoRepeatableInvoice=Convert into template invoice +CreateRepeatableInvoice=Create template invoice +CreateFromRepeatableInvoice=Create from template invoice +CustomersInvoicesAndInvoiceLines=Customer invoices and invoice's lines +CustomersInvoicesAndPayments=Customer invoices and payments +ExportDataset_invoice_1=Customer invoices list and invoice's lines +ExportDataset_invoice_2=Customer invoices and payments +ProformaBill=Proforma Bill: +Reduction=Reduction +ReductionShort=Reduc. +Reductions=Reductions +ReductionsShort=Reduc. +Discount=Discount +Discounts=Discounts +AddDiscount=Create discount +AddRelativeDiscount=Create relative discount +EditRelativeDiscount=Edit relative discount +AddGlobalDiscount=Create absolute discount +EditGlobalDiscounts=Edit absolute discounts +AddCreditNote=Create credit note +ShowDiscount=Show discount +ShowReduc=Show the deduction +RelativeDiscount=Relative discount +GlobalDiscount=Global discount +CreditNote=Credit note +CreditNotes=Credit notes +Deposit=Deposit +Deposits=Deposits +DiscountFromCreditNote=Discount from credit note %s +DiscountFromDeposit=Payments from deposit invoice %s +AbsoluteDiscountUse=This kind of credit can be used on invoice before its validation +CreditNoteDepositUse=Invoice must be validated to use this king of credits +NewGlobalDiscount=New absolute discount +NewRelativeDiscount=New relative discount +NoteReason=Note/Reason +ReasonDiscount=Reason +DiscountOfferedBy=Granted by +DiscountStillRemaining=Discounts still remaining +DiscountAlreadyCounted=Discounts already counted +BillAddress=Bill address +HelpEscompte=This discount is a discount granted to customer because its payment was made before term. +HelpAbandonBadCustomer=This amount has been abandoned (customer said to be a bad customer) and is considered as an exceptional loose. +HelpAbandonOther=This amount has been abandoned since it was an error (wrong customer or invoice replaced by an other for example) +IdSocialContribution=Social contribution id +PaymentId=Payment id +InvoiceId=Invoice id +InvoiceRef=Invoice ref. +InvoiceDateCreation=Invoice creation date +InvoiceStatus=Invoice status +InvoiceNote=Invoice note +InvoicePaid=Invoice paid +PaymentNumber=Payment number +RemoveDiscount=Remove discount +WatermarkOnDraftBill=Watermark on draft invoices (nothing if empty) +InvoiceNotChecked=No invoice selected +CloneInvoice=Clone invoice +ConfirmCloneInvoice=Are you sure you want to clone this invoice %s ? +DisabledBecauseReplacedInvoice=Action disabled because invoice has been replaced +DescTaxAndDividendsArea=This area presents a summary of all payments made for special expenses. Only records with payment during the fixed year are included here. +NbOfPayments=Nb of payments +SplitDiscount=Split discount in two +ConfirmSplitDiscount=Are you sure you want to split this discount of %s %s into 2 lower discounts ? +TypeAmountOfEachNewDiscount=Input amount for each of two parts : +TotalOfTwoDiscountMustEqualsOriginal=Total of two new discount must be equal to original discount amount. +ConfirmRemoveDiscount=Are you sure you want to remove this discount ? +RelatedBill=Related invoice +RelatedBills=Related invoices +LatestRelatedBill=Latest related invoice +WarningBillExist=Warning, one or more invoice already exist + +# PaymentConditions +PaymentConditionShortRECEP=Immediate +PaymentConditionRECEP=Immediate +PaymentConditionShort30D=30 days +PaymentCondition30D=30 days +PaymentConditionShort30DENDMONTH=30 days end of month +PaymentCondition30DENDMONTH=30 days end of month +PaymentConditionShort60D=60 days +PaymentCondition60D=60 days +PaymentConditionShort60DENDMONTH=60 days end of month +PaymentCondition60DENDMONTH=60 days end of month +PaymentConditionShortPT_DELIVERY=Delivery +PaymentConditionPT_DELIVERY=On delivery +PaymentConditionShortPT_ORDER=On order +PaymentConditionPT_ORDER=On order +PaymentConditionShortPT_5050=50-50 +PaymentConditionPT_5050=50%% in advance, 50%% on delivery +FixAmount=Fix amount +VarAmount=Variable amount (%% tot.) +# PaymentType +PaymentTypeVIR=Bank deposit +PaymentTypeShortVIR=Bank deposit +PaymentTypePRE=Bank's order +PaymentTypeShortPRE=Bank's order +PaymentTypeLIQ=Cash +PaymentTypeShortLIQ=Cash +PaymentTypeCB=Credit card +PaymentTypeShortCB=Credit card +PaymentTypeCHQ=Check +PaymentTypeShortCHQ=Check +PaymentTypeTIP=TIP +PaymentTypeShortTIP=TIP +PaymentTypeVAD=On line payment +PaymentTypeShortVAD=On line payment +PaymentTypeTRA=Bill payment +PaymentTypeShortTRA=Bill +BankDetails=Bank details +BankCode=Bank code +DeskCode=Desk code +BankAccountNumber=Account number +BankAccountNumberKey=Key +Residence=Domiciliation +IBANNumber=IBAN number +IBAN=IBAN +BIC=BIC/SWIFT +BICNumber=BIC/SWIFT number +ExtraInfos=Extra infos +RegulatedOn=Regulated on +ChequeNumber=Check N° +ChequeOrTransferNumber=Check/Transfer N° +ChequeMaker=Check transmitter +ChequeBank=Bank of Check +CheckBank=Check +NetToBePaid=Net to be paid +PhoneNumber=Tel +FullPhoneNumber=Telephone +TeleFax=Fax +PrettyLittleSentence=Accept the amount of payments due by checks issued in my name as a Member of an accounting association approved by the Fiscal Administration. +IntracommunityVATNumber=Intracommunity number of VAT +PaymentByChequeOrderedTo=Check payment (including tax) are payable to %s send to +PaymentByChequeOrderedToShort=Check payment (including tax) are payable to +SendTo=sent to +PaymentByTransferOnThisBankAccount=Payment by transfer on the following bank account +VATIsNotUsedForInvoice=* Non applicable VAT art-293B of CGI +LawApplicationPart1=By application of the law 80.335 of 12/05/80 +LawApplicationPart2=the goods remain the property of +LawApplicationPart3=the seller until the complete cashing of +LawApplicationPart4=their price. +LimitedLiabilityCompanyCapital=SARL with Capital of +UseLine=Apply +UseDiscount=Use discount +UseCredit=Use credit +UseCreditNoteInInvoicePayment=Reduce amount to pay with this credit +MenuChequeDeposits=Checks deposits +MenuCheques=Checks +MenuChequesReceipts=Checks receipts +NewChequeDeposit=New deposit +ChequesReceipts=Checks receipts +ChequesArea=Checks deposits area +ChequeDeposits=Checks deposits +Cheques=Checks +CreditNoteConvertedIntoDiscount=This credit note or deposit invoice has been converted into %s +UsBillingContactAsIncoiveRecipientIfExist=Use customer billing contact address instead of third party address as recipient for invoices +ShowUnpaidAll=Show all unpaid invoices +ShowUnpaidLateOnly=Show late unpaid invoices only +PaymentInvoiceRef=Payment invoice %s +ValidateInvoice=Validate invoice +Cash=Cash +Reported=Delayed +DisabledBecausePayments=Not possible since there are some payments +CantRemovePaymentWithOneInvoicePaid=Can't remove payment since there is at least one invoice classified paid +ExpectedToPay=Expected payment +PayedByThisPayment=Paid by this payment +ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid. +ClosePaidCreditNotesAutomatically=Classify "Paid" all credit notes entirely paid back. +AllCompletelyPayedInvoiceWillBeClosed=All invoice with no remain to pay will be automatically closed to status "Paid". +ToMakePayment=Pay +ToMakePaymentBack=Pay back +ListOfYourUnpaidInvoices=List of unpaid invoices +NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. +RevenueStamp=Revenue stamp +YouMustCreateInvoiceFromThird=This option is only available when creating invoice from tab "customer" of thirdparty +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (recommended Template) +TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 +MarsNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for credit notes and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 +TerreNumRefModelError=A bill starting with $syymm already exists and is not compatible with this model of sequence. Remove it or rename it to activate this module. +##### Types de contacts ##### +TypeContact_facture_internal_SALESREPFOLL=Representative following-up customer invoice +TypeContact_facture_external_BILLING=Customer invoice contact +TypeContact_facture_external_SHIPPING=Customer shipping contact +TypeContact_facture_external_SERVICE=Customer service contact +TypeContact_invoice_supplier_internal_SALESREPFOLL=Representative following-up supplier invoice +TypeContact_invoice_supplier_external_BILLING=Supplier invoice contact +TypeContact_invoice_supplier_external_SHIPPING=Supplier shipping contact +TypeContact_invoice_supplier_external_SERVICE=Supplier service contact +# Situation invoices +InvoiceFirstSituationAsk=First situation invoice +InvoiceFirstSituationDesc=The situation invoices are tied to situations related to a progression, for example the progression of a construction. Each situation is tied to an invoice. +InvoiceSituation=Situation invoice +InvoiceSituationAsk=Invoice following the situation +InvoiceSituationDesc=Create a new situation following an already existing one +SituationAmount=Situation invoice amount(net) +SituationDeduction=Situation subtraction +Progress=Progress +ModifyAllLines=Modify all lines +CreateNextSituationInvoice=Create next situation +NotLastInCycle=This invoice in not the last in cycle and must not be modified. +DisabledBecauseNotLastInCycle=The next situation already exists. +DisabledBecauseFinal=This situation is final. +CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation. +NoSituations=No opened situations +InvoiceSituationLast=Final and general invoice diff --git a/htdocs/langs/bn_BD/bookmarks.lang b/htdocs/langs/bn_BD/bookmarks.lang new file mode 100644 index 00000000000..7acb946bb62 --- /dev/null +++ b/htdocs/langs/bn_BD/bookmarks.lang @@ -0,0 +1,19 @@ +# Dolibarr language file - Source file is en_US - marque pages +AddThisPageToBookmarks=Add this page to bookmarks +Bookmark=Bookmark +Bookmarks=Bookmarks +NewBookmark=New bookmark +ShowBookmark=Show bookmark +OpenANewWindow=Open a new window +ReplaceWindow=Replace current window +BookmarkTargetNewWindowShort=New window +BookmarkTargetReplaceWindowShort=Current window +BookmarkTitle=Bookmark title +UrlOrLink=URL +BehaviourOnClick=Behaviour when a URL is clicked +CreateBookmark=Create bookmark +SetHereATitleForLink=Set a title for the bookmark +UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external http URL or a relative Dolibarr URL +ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choose if a page opened by link must appear on current or new window +BookmarksManagement=Bookmarks management +ListOfBookmarks=List of bookmarks diff --git a/htdocs/langs/bn_BD/boxes.lang b/htdocs/langs/bn_BD/boxes.lang new file mode 100644 index 00000000000..bf118b9b88e --- /dev/null +++ b/htdocs/langs/bn_BD/boxes.lang @@ -0,0 +1,96 @@ +# Dolibarr language file - Source file is en_US - boxes +BoxLastRssInfos=Rss information +BoxLastProducts=Last %s products/services +BoxProductsAlertStock=Products in stock alert +BoxLastProductsInContract=Last %s contracted products/services +BoxLastSupplierBills=Last supplier's invoices +BoxLastCustomerBills=Last customer's invoices +BoxOldestUnpaidCustomerBills=Oldest unpaid customer's invoices +BoxOldestUnpaidSupplierBills=Oldest unpaid supplier's invoices +BoxLastProposals=Last commercial proposals +BoxLastProspects=Last modified prospects +BoxLastCustomers=Last modified customers +BoxLastSuppliers=Last modified suppliers +BoxLastCustomerOrders=Last customer orders +BoxLastValidatedCustomerOrders=Last validated customer orders +BoxLastBooks=Last books +BoxLastActions=Last actions +BoxLastContracts=Last contracts +BoxLastContacts=Last contacts/addresses +BoxLastMembers=Last members +BoxFicheInter=Last interventions +BoxCurrentAccounts=Opened accounts balance +BoxSalesTurnover=Sales turnover +BoxTotalUnpaidCustomerBills=Total unpaid customer's invoices +BoxTotalUnpaidSuppliersBills=Total unpaid supplier's invoices +BoxTitleLastBooks=Last %s recorded books +BoxTitleNbOfCustomers=Number of clients +BoxTitleLastRssInfos=Last %s news from %s +BoxTitleLastProducts=Last %s modified products/services +BoxTitleProductsAlertStock=Products in stock alert +BoxTitleLastCustomerOrders=Last %s customer orders +BoxTitleLastModifiedCustomerOrders=Last %s modified customer orders +BoxTitleLastSuppliers=Last %s recorded suppliers +BoxTitleLastCustomers=Last %s recorded customers +BoxTitleLastModifiedSuppliers=Last %s modified suppliers +BoxTitleLastModifiedCustomers=Last %s modified customers +BoxTitleLastCustomersOrProspects=Last %s customers or prospects +BoxTitleLastPropals=Last %s proposals +BoxTitleLastModifiedPropals=Last %s modified proposals +BoxTitleLastCustomerBills=Last %s customer's invoices +BoxTitleLastModifiedCustomerBills=Last %s modified customer invoices +BoxTitleLastSupplierBills=Last %s supplier's invoices +BoxTitleLastModifiedSupplierBills=Last %s modified supplier invoices +BoxTitleLastModifiedProspects=Last %s modified prospects +BoxTitleLastProductsInContract=Last %s products/services in a contract +BoxTitleLastModifiedMembers=Last %s members +BoxTitleLastFicheInter=Last %s modified intervention +BoxTitleOldestUnpaidCustomerBills=Oldest %s unpaid customer invoices +BoxTitleOldestUnpaidSupplierBills=Oldest %s unpaid supplier invoices +BoxTitleCurrentAccounts=Opened account's balances +BoxTitleSalesTurnover=Sales turnover +BoxTitleTotalUnpaidCustomerBills=Unpaid customer invoices +BoxTitleTotalUnpaidSuppliersBills=Unpaid supplier invoices +BoxTitleLastModifiedContacts=Last %s modified contacts/addresses +BoxMyLastBookmarks=My last %s bookmarks +BoxOldestExpiredServices=Oldest active expired services +BoxLastExpiredServices=Last %s oldest contacts with active expired services +BoxTitleLastActionsToDo=Last %s actions to do +BoxTitleLastContracts=Last %s contracts +BoxTitleLastModifiedDonations=Last %s modified donations +BoxTitleLastModifiedExpenses=Last %s modified expenses +BoxGlobalActivity=Global activity (invoices, proposals, orders) +FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Last successfull refresh date: %s +LastRefreshDate=Last refresh date +NoRecordedBookmarks=No bookmarks defined. +ClickToAdd=Click here to add. +NoRecordedCustomers=No recorded customers +NoRecordedContacts=No recorded contacts +NoActionsToDo=No actions to do +NoRecordedOrders=No recorded customer's orders +NoRecordedProposals=No recorded proposals +NoRecordedInvoices=No recorded customer's invoices +NoUnpaidCustomerBills=No unpaid customer's invoices +NoRecordedSupplierInvoices=No recorded supplier's invoices +NoUnpaidSupplierBills=No unpaid supplier's invoices +NoModifiedSupplierBills=No recorded supplier's invoices +NoRecordedProducts=No recorded products/services +NoRecordedProspects=No recorded prospects +NoContractedProducts=No products/services contracted +NoRecordedContracts=No recorded contracts +NoRecordedInterventions=No recorded interventions +BoxLatestSupplierOrders=Latest supplier orders +BoxTitleLatestSupplierOrders=Last %s supplier orders +BoxTitleLatestModifiedSupplierOrders=Last %s modified supplier orders +NoSupplierOrder=No recorded supplier order +BoxCustomersInvoicesPerMonth=Customer invoices per month +BoxSuppliersInvoicesPerMonth=Supplier invoices per month +BoxCustomersOrdersPerMonth=Customer orders per month +BoxSuppliersOrdersPerMonth=Supplier orders per month +BoxProposalsPerMonth=Proposals per month +NoTooLowStockProducts=No product under the low stock limit +BoxProductDistribution=Products/Services distribution +BoxProductDistributionFor=Distribution of %s for %s +ForCustomersInvoices=Customers invoices +ForCustomersOrders=Customers orders +ForProposals=Proposals diff --git a/htdocs/langs/bn_BD/cashdesk.lang b/htdocs/langs/bn_BD/cashdesk.lang new file mode 100644 index 00000000000..d3dcfb68e64 --- /dev/null +++ b/htdocs/langs/bn_BD/cashdesk.lang @@ -0,0 +1,40 @@ +# Language file - Source file is en_US - cashdesk +CashDeskMenu=Point of sale +CashDesk=Point of sale +CashDesks=Point of sales +CashDeskBank=Bank account +CashDeskBankCash=Bank account (cash) +CashDeskBankCB=Bank account (card) +CashDeskBankCheque=Bank account (cheque) +CashDeskWarehouse=Warehouse +CashdeskShowServices=Selling services +CashDeskProducts=Products +CashDeskStock=Stock +CashDeskOn=on +CashDeskThirdParty=Third party +CashdeskDashboard=Point of sale access +ShoppingCart=Shopping cart +NewSell=New sell +BackOffice=Back office +AddThisArticle=Add this article +RestartSelling=Go back on sell +SellFinished=Sell finished +PrintTicket=Print ticket +NoProductFound=No article found +ProductFound=product found +ProductsFound=products found +NoArticle=No article +Identification=Identification +Article=Article +Difference=Difference +TotalTicket=Total ticket +NoVAT=No VAT for this sale +Change=Excess received +CalTip=Click to view the calendar +CashDeskSetupStock=You ask to decrease stock on invoice creation but warehouse for this is was not defined
Change stock module setup, or choose a warehouse +BankToPay=Charge Account +ShowCompany=Show company +ShowStock=Show warehouse +DeleteArticle=Click to remove this article +FilterRefOrLabelOrBC=Search (Ref/Label) +UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock. diff --git a/htdocs/langs/bn_BD/categories.lang b/htdocs/langs/bn_BD/categories.lang new file mode 100644 index 00000000000..22914931db1 --- /dev/null +++ b/htdocs/langs/bn_BD/categories.lang @@ -0,0 +1,112 @@ +# Dolibarr language file - Source file is en_US - categories +Category=Category +Categories=Categories +Rubrique=Category +Rubriques=Categories +categories=categories +TheCategorie=The category +NoCategoryYet=No category of this type created +In=In +AddIn=Add in +modify=modify +Classify=Classify +CategoriesArea=Categories area +ProductsCategoriesArea=Products/Services categories area +SuppliersCategoriesArea=Suppliers categories area +CustomersCategoriesArea=Customers categories area +ThirdPartyCategoriesArea=Third parties categories area +MembersCategoriesArea=Members categories area +ContactsCategoriesArea=Contacts categories area +MainCats=Main categories +SubCats=Subcategories +CatStatistics=Statistics +CatList=List of categories +AllCats=All categories +ViewCat=View category +NewCat=Add category +NewCategory=New category +ModifCat=Modify category +CatCreated=Category created +CreateCat=Create category +CreateThisCat=Create this category +ValidateFields=Validate the fields +NoSubCat=No subcategory. +SubCatOf=Subcategory +FoundCats=Found categories +FoundCatsForName=Categories found for the name : +FoundSubCatsIn=Subcategories found in the category +ErrSameCatSelected=You selected the same category several times +ErrForgotCat=You forgot to choose the category +ErrForgotField=You forgot to inform the fields +ErrCatAlreadyExists=This name is already used +AddProductToCat=Add this product to a category? +ImpossibleAddCat=Impossible to add the category +ImpossibleAssociateCategory=Impossible to associate the category to +WasAddedSuccessfully=%s was added successfully. +ObjectAlreadyLinkedToCategory=Element is already linked to this category. +CategorySuccessfullyCreated=This category %s has been added with success. +ProductIsInCategories=Product/service owns to following categories +SupplierIsInCategories=Third party owns to following suppliers categories +CompanyIsInCustomersCategories=This third party owns to following customers/prospects categories +CompanyIsInSuppliersCategories=This third party owns to following suppliers categories +MemberIsInCategories=This member owns to following members categories +ContactIsInCategories=This contact owns to following contacts categories +ProductHasNoCategory=This product/service is not in any categories +SupplierHasNoCategory=This supplier is not in any categories +CompanyHasNoCategory=This company is not in any categories +MemberHasNoCategory=This member is not in any categories +ContactHasNoCategory=This contact is not in any categories +ClassifyInCategory=Classify in category +NoneCategory=None +NotCategorized=Without category +CategoryExistsAtSameLevel=This category already exists with this ref +ReturnInProduct=Back to product/service card +ReturnInSupplier=Back to supplier card +ReturnInCompany=Back to customer/prospect card +ContentsVisibleByAll=The contents will be visible by all +ContentsVisibleByAllShort=Contents visible by all +ContentsNotVisibleByAllShort=Contents not visible by all +CategoriesTree=Categories tree +DeleteCategory=Delete category +ConfirmDeleteCategory=Are you sure you want to delete this category ? +RemoveFromCategory=Remove link with categorie +RemoveFromCategoryConfirm=Are you sure you want to remove link between the transaction and the category ? +NoCategoriesDefined=No category defined +SuppliersCategoryShort=Suppliers category +CustomersCategoryShort=Customers category +ProductsCategoryShort=Products category +MembersCategoryShort=Members category +SuppliersCategoriesShort=Suppliers categories +CustomersCategoriesShort=Customers categories +CustomersProspectsCategoriesShort=Custo./Prosp. categories +ProductsCategoriesShort=Products categories +MembersCategoriesShort=Members categories +ContactCategoriesShort=Contacts categories +ThisCategoryHasNoProduct=This category does not contain any product. +ThisCategoryHasNoSupplier=This category does not contain any supplier. +ThisCategoryHasNoCustomer=This category does not contain any customer. +ThisCategoryHasNoMember=This category does not contain any member. +ThisCategoryHasNoContact=This category does not contain any contact. +AssignedToCustomer=Assigned to a customer +AssignedToTheCustomer=Assigned to the customer +InternalCategory=Internal category +CategoryContents=Category contents +CategId=Category id +CatSupList=List of supplier categories +CatCusList=List of customer/prospect categories +CatProdList=List of products categories +CatMemberList=List of members categories +CatContactList=List of contact categories and contact +CatSupLinks=Links between suppliers and categories +CatCusLinks=Links between customers/prospects and categories +CatProdLinks=Links between products/services and categories +CatMemberLinks=Links between members and categories +DeleteFromCat=Remove from category +DeletePicture=Picture delete +ConfirmDeletePicture=Confirm picture deletion? +ExtraFieldsCategories=Complementary attributes +CategoriesSetup=Categories setup +CategorieRecursiv=Link with parent category automatically +CategorieRecursivHelp=If activated, product will also linked to parent category when adding into a subcategory +AddProductServiceIntoCategory=Add the following product/service +ShowCategory=Show category diff --git a/htdocs/langs/bn_BD/commercial.lang b/htdocs/langs/bn_BD/commercial.lang new file mode 100644 index 00000000000..7acdc7bd7e6 --- /dev/null +++ b/htdocs/langs/bn_BD/commercial.lang @@ -0,0 +1,96 @@ +# Dolibarr language file - Source file is en_US - commercial +Commercial=Commercial +CommercialArea=Commercial area +CommercialCard=Commercial card +CustomerArea=Customers area +Customer=Customer +Customers=Customers +Prospect=Prospect +Prospects=Prospects +DeleteAction=Delete an event/task +NewAction=New event/task +AddAction=Create event/task +AddAnAction=Create an event/task +AddActionRendezVous=Create a Rendez-vous event +Rendez-Vous=Rendezvous +ConfirmDeleteAction=Are you sure you want to delete this event/task ? +CardAction=Event card +PercentDone=Percentage complete +ActionOnCompany=Task about company +ActionOnContact=Task about contact +TaskRDV=Meetings +TaskRDVWith=Meeting with %s +ShowTask=Show task +ShowAction=Show event +ActionsReport=Events report +ThirdPartiesOfSaleRepresentative=Thirdparties with sales representative +SalesRepresentative=Sales representative +SalesRepresentatives=Sales representatives +SalesRepresentativeFollowUp=Sales representative (follow-up) +SalesRepresentativeSignature=Sales representative (signature) +CommercialInterlocutor=Commercial interlocutor +ErrorWrongCode=Wrong code +NoSalesRepresentativeAffected=No particular sales representative assigned +ShowCustomer=Show customer +ShowProspect=Show prospect +ListOfProspects=List of prospects +ListOfCustomers=List of customers +LastDoneTasks=Last %s completed tasks +LastRecordedTasks=Last recorded tasks +LastActionsToDo=Last %s oldest actions not completed +DoneAndToDoActionsFor=Completed and To do events for %s +DoneAndToDoActions=Completed and To do events +DoneActions=Completed events +DoneActionsFor=Completed events for %s +ToDoActions=Incomplete events +ToDoActionsFor=Incomplete events for %s +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s +StatusNotApplicable=Not applicable +StatusActionToDo=To do +StatusActionDone=Complete +MyActionsAsked=Events I have recorded +MyActionsToDo=Events I have to do +MyActionsDone=Events assigned to me +StatusActionInProcess=In process +TasksHistoryForThisContact=Events for this contact +LastProspectDoNotContact=Do not contact +LastProspectNeverContacted=Never contacted +LastProspectToContact=To contact +LastProspectContactInProcess=Contact in process +LastProspectContactDone=Contact done +DateActionPlanned=Date event planned for +DateActionDone=Date event done +ActionAskedBy=Event reported by +ActionAffectedTo=Event assigned to +ActionDoneBy=Event done by +ActionUserAsk=Reported by +ErrorStatusCantBeZeroIfStarted=If field 'Date done' is filled, action is started (or finished), so field 'Status' can't be 0%%. +ActionAC_TEL=Phone call +ActionAC_FAX=Send fax +ActionAC_PROP=Send proposal by mail +ActionAC_EMAIL=Send Email +ActionAC_RDV=Meetings +ActionAC_INT=Intervention on site +ActionAC_FAC=Send customer invoice by mail +ActionAC_REL=Send customer invoice by mail (reminder) +ActionAC_CLO=Close +ActionAC_EMAILING=Send mass email +ActionAC_COM=Send customer order by mail +ActionAC_SHIP=Send shipping by mail +ActionAC_SUP_ORD=Send supplier order by mail +ActionAC_SUP_INV=Send supplier invoice by mail +ActionAC_OTH=Other +ActionAC_OTH_AUTO=Other (automatically inserted events) +ActionAC_MANUAL=Manually inserted events +ActionAC_AUTO=Automatically inserted events +Stats=Sales statistics +CAOrder=Sales volume (validated orders) +FromTo=from %s to %s +MargeOrder=Margins (validated orders) +RecapAnnee=Summary of the year +NoData=There is no data +StatusProsp=Prospect status +DraftPropals=Draft commercial proposals +SearchPropal=Search a commercial proposal +CommercialDashboard=Commercial summary diff --git a/htdocs/langs/bn_BD/companies.lang b/htdocs/langs/bn_BD/companies.lang new file mode 100644 index 00000000000..8abf1fd1c5a --- /dev/null +++ b/htdocs/langs/bn_BD/companies.lang @@ -0,0 +1,414 @@ +# Dolibarr language file - Source file is en_US - companies +ErrorCompanyNameAlreadyExists=Company name %s already exists. Choose another one. +ErrorPrefixAlreadyExists=Prefix %s already exists. Choose another one. +ErrorSetACountryFirst=Set the country first +SelectThirdParty=Select a third party +DeleteThirdParty=Delete a third party +ConfirmDeleteCompany=Are you sure you want to delete this company and all inherited information ? +DeleteContact=Delete a contact/address +ConfirmDeleteContact=Are you sure you want to delete this contact and all inherited information ? +MenuNewThirdParty=New third party +MenuNewCompany=New company +MenuNewCustomer=New customer +MenuNewProspect=New prospect +MenuNewSupplier=New supplier +MenuNewPrivateIndividual=New private individual +MenuSocGroup=Groups +NewCompany=New company (prospect, customer, supplier) +NewThirdParty=New third party (prospect, customer, supplier) +NewSocGroup=New company group +NewPrivateIndividual=New private individual (prospect, customer, supplier) +CreateDolibarrThirdPartySupplier=Create a third party (supplier) +ProspectionArea=Prospection area +SocGroup=Group of companies +IdThirdParty=Id third party +IdCompany=Company Id +IdContact=Contact Id +Contacts=Contacts/Addresses +ThirdPartyContacts=Third party contacts +ThirdPartyContact=Third party contact/address +StatusContactValidated=Status of contact/address +Company=Company +CompanyName=Company name +Companies=Companies +CountryIsInEEC=Country is inside European Economic Community +ThirdPartyName=Third party name +ThirdParty=Third party +ThirdParties=Third parties +ThirdPartyAll=Third parties (all) +ThirdPartyProspects=Prospects +ThirdPartyProspectsStats=Prospects +ThirdPartyCustomers=Customers +ThirdPartyCustomersStats=Customers +ThirdPartyCustomersWithIdProf12=Customers with %s or %s +ThirdPartySuppliers=Suppliers +ThirdPartyType=Third party type +Company/Fundation=Company/Foundation +Individual=Private individual +ToCreateContactWithSameName=Will create automatically a physical contact with same informations +ParentCompany=Parent company +Subsidiary=Subsidiary +Subsidiaries=Subsidiaries +NoSubsidiary=No subsidiary +ReportByCustomers=Report by customers +ReportByQuarter=Report by rate +CivilityCode=Civility code +RegisteredOffice=Registered office +Name=Name +Lastname=Last name +Firstname=First name +PostOrFunction=Post/Function +UserTitle=Title +Surname=Surname/Pseudo +Address=Address +State=State/Province +Region=Region +Country=Country +CountryCode=Country code +CountryId=Country id +Phone=Phone +Skype=Skype +Call=Call +Chat=Chat +PhonePro=Prof. phone +PhonePerso=Pers. phone +PhoneMobile=Mobile +No_Email=Don't send mass e-mailings +Fax=Fax +Zip=Zip Code +Town=City +Web=Web +Poste= Position +DefaultLang=Language by default +VATIsUsed=VAT is used +VATIsNotUsed=VAT is not used +CopyAddressFromSoc=Fill address with thirdparty address +NoEmailDefined=There is no email defined +##### Local Taxes ##### +LocalTax1IsUsedES= RE is used +LocalTax1IsNotUsedES= RE is not used +LocalTax2IsUsedES= IRPF is used +LocalTax2IsNotUsedES= IRPF is not used +LocalTax1ES=RE +LocalTax2ES=IRPF +TypeLocaltax1ES=RE Type +TypeLocaltax2ES=IRPF Type +TypeES=Type +ThirdPartyEMail=%s +WrongCustomerCode=Customer code invalid +WrongSupplierCode=Supplier code invalid +CustomerCodeModel=Customer code model +SupplierCodeModel=Supplier code model +Gencod=Bar code +##### Professional ID ##### +ProfId1Short=Prof. id 1 +ProfId2Short=Prof. id 2 +ProfId3Short=Prof. id 3 +ProfId4Short=Prof. id 4 +ProfId5Short=Prof. id 5 +ProfId6Short=Prof. id 5 +ProfId1=Professional ID 1 +ProfId2=Professional ID 2 +ProfId3=Professional ID 3 +ProfId4=Professional ID 4 +ProfId5=Professional ID 5 +ProfId6=Professional ID 6 +ProfId1AR=Prof Id 1 (CUIT/CUIL) +ProfId2AR=Prof Id 2 (Revenu brutes) +ProfId3AR=- +ProfId4AR=- +ProfId5AR=- +ProfId6AR=- +ProfId1AU=Prof Id 1 (ABN) +ProfId2AU=- +ProfId3AU=- +ProfId4AU=- +ProfId5AU=- +ProfId6AU=- +ProfId1BE=Prof Id 1 (Professional number) +ProfId2BE=- +ProfId3BE=- +ProfId4BE=- +ProfId5BE=- +ProfId6BE=- +ProfId1BR=- +ProfId2BR=IE (Inscricao Estadual) +ProfId3BR=IM (Inscricao Municipal) +ProfId4BR=CPF +#ProfId5BR=CNAE +#ProfId6BR=INSS +ProfId1CH=- +ProfId2CH=- +ProfId3CH=Prof Id 1 (Federal number) +ProfId4CH=Prof Id 2 (Commercial Record number) +ProfId5CH=- +ProfId6CH=- +ProfId1CL=Prof Id 1 (R.U.T.) +ProfId2CL=- +ProfId3CL=- +ProfId4CL=- +ProfId5CL=- +ProfId6CL=- +ProfId1CO=Prof Id 1 (R.U.T.) +ProfId2CO=- +ProfId3CO=- +ProfId4CO=- +ProfId5CO=- +ProfId6CO=- +ProfId1DE=Prof Id 1 (USt.-IdNr) +ProfId2DE=Prof Id 2 (USt.-Nr) +ProfId3DE=Prof Id 3 (Handelsregister-Nr.) +ProfId4DE=- +ProfId5DE=- +ProfId6DE=- +ProfId1ES=Prof Id 1 (CIF/NIF) +ProfId2ES=Prof Id 2 (Social security number) +ProfId3ES=Prof Id 3 (CNAE) +ProfId4ES=Prof Id 4 (Collegiate number) +ProfId5ES=- +ProfId6ES=- +ProfId1FR=Prof Id 1 (SIREN) +ProfId2FR=Prof Id 2 (SIRET) +ProfId3FR=Prof Id 3 (NAF, old APE) +ProfId4FR=Prof Id 4 (RCS/RM) +ProfId5FR=- +ProfId6FR=- +ProfId1GB=Registration Number +ProfId2GB=- +ProfId3GB=SIC +ProfId4GB=- +ProfId5GB=- +ProfId6GB=- +ProfId1HN=Id prof. 1 (RTN) +ProfId2HN=- +ProfId3HN=- +ProfId4HN=- +ProfId5HN=- +ProfId6HN=- +ProfId1IN=Prof Id 1 (TIN) +ProfId2IN=Prof Id 2 (PAN) +ProfId3IN=Prof Id 3 (SRVC TAX) +ProfId4IN=Prof Id 4 +ProfId5IN=Prof Id 5 +ProfId6IN=- +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.) +ProfId5MA=- +ProfId6MA=- +ProfId1MX=Prof Id 1 (R.F.C). +ProfId2MX=Prof Id 2 (R..P. IMSS) +ProfId3MX=Prof Id 3 (Profesional Charter) +ProfId4MX=- +ProfId5MX=- +ProfId6MX=- +ProfId1NL=KVK nummer +ProfId2NL=- +ProfId3NL=- +ProfId4NL=Burgerservicenummer (BSN) +ProfId5NL=- +ProfId6NL=- +ProfId1PT=Prof Id 1 (NIPC) +ProfId2PT=Prof Id 2 (Social security number) +ProfId3PT=Prof Id 3 (Commercial Record number) +ProfId4PT=Prof Id 4 (Conservatory) +ProfId5PT=- +ProfId6PT=- +ProfId1SN=RC +ProfId2SN=NINEA +ProfId3SN=- +ProfId4SN=- +ProfId5SN=- +ProfId6SN=- +ProfId1TN=Prof Id 1 (RC) +ProfId2TN=Prof Id 2 (Fiscal matricule) +ProfId3TN=Prof Id 3 (Douane code) +ProfId4TN=Prof Id 4 (BAN) +ProfId5TN=- +ProfId6TN=- +ProfId1RU=Prof Id 1 (OGRN) +ProfId2RU=Prof Id 2 (INN) +ProfId3RU=Prof Id 3 (KPP) +ProfId4RU=Prof Id 4 (OKPO) +ProfId5RU=- +ProfId6RU=- +VATIntra=VAT number +VATIntraShort=VAT number +VATIntraVeryShort=VAT +VATIntraSyntaxIsValid=Syntax is valid +VATIntraValueIsValid=Value is valid +ProspectCustomer=Prospect / Customer +Prospect=Prospect +CustomerCard=Customer Card +Customer=Customer +CustomerDiscount=Customer Discount +CustomerRelativeDiscount=Relative customer discount +CustomerAbsoluteDiscount=Absolute customer discount +CustomerRelativeDiscountShort=Relative discount +CustomerAbsoluteDiscountShort=Absolute discount +CompanyHasRelativeDiscount=This customer has a default discount of %s%% +CompanyHasNoRelativeDiscount=This customer has no relative discount by default +CompanyHasAbsoluteDiscount=This customer still has discount credits or deposits for %s %s +CompanyHasCreditNote=This customer still has credit notes for %s %s +CompanyHasNoAbsoluteDiscount=This customer has no discount credit available +CustomerAbsoluteDiscountAllUsers=Absolute discounts (granted by all users) +CustomerAbsoluteDiscountMy=Absolute discounts (granted by yourself) +DefaultDiscount=Default discount +AvailableGlobalDiscounts=Absolute discounts available +DiscountNone=None +Supplier=Supplier +CompanyList=Company's list +AddContact=Create contact +AddContactAddress=Create contact/address +EditContact=Edit contact +EditContactAddress=Edit contact/address +Contact=Contact +ContactsAddresses=Contacts/Addresses +NoContactDefinedForThirdParty=No contact defined for this third party +NoContactDefined=No contact defined +DefaultContact=Default contact/address +AddCompany=Create company +AddThirdParty=Create third party +DeleteACompany=Delete a company +PersonalInformations=Personal data +AccountancyCode=Accountancy code +CustomerCode=Customer code +SupplierCode=Supplier code +CustomerAccount=Customer account +SupplierAccount=Supplier account +CustomerCodeDesc=Customer code, unique for all customers +SupplierCodeDesc=Supplier code, unique for all suppliers +RequiredIfCustomer=Required if third party is a customer or prospect +RequiredIfSupplier=Required if third party is a supplier +ValidityControledByModule=Validity controled by module +ThisIsModuleRules=This is rules for this module +LastProspect=Last +ProspectToContact=Prospect to contact +CompanyDeleted=Company "%s" deleted from database. +ListOfContacts=List of contacts/addresses +ListOfContactsAddresses=List of contacts/adresses +ListOfProspectsContacts=List of prospect contacts +ListOfCustomersContacts=List of customer contacts +ListOfSuppliersContacts=List of supplier contacts +ListOfCompanies=List of companies +ListOfThirdParties=List of third parties +ShowCompany=Show company +ShowContact=Show contact +ContactsAllShort=All (No filter) +ContactType=Contact type +ContactForOrders=Order's contact +ContactForProposals=Proposal's contact +ContactForContracts=Contract's contact +ContactForInvoices=Invoice's contact +NoContactForAnyOrder=This contact is not a contact for any order +NoContactForAnyProposal=This contact is not a contact for any commercial proposal +NoContactForAnyContract=This contact is not a contact for any contract +NoContactForAnyInvoice=This contact is not a contact for any invoice +NewContact=New contact +NewContactAddress=New contact/address +LastContacts=Last contacts +MyContacts=My contacts +Phones=Phones +Capital=Capital +CapitalOf=Capital of %s +EditCompany=Edit company +EditDeliveryAddress=Edit delivery address +ThisUserIsNot=This user is not a prospect, customer nor supplier +VATIntraCheck=Check +VATIntraCheckDesc=The link %s allows to ask the european VAT checker service. An external internet access from server is required for this service to work. +VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do +VATIntraCheckableOnEUSite=Check Intracomunnautary VAT on European commision site +VATIntraManualCheck=You can also check manually from european web site %s +ErrorVATCheckMS_UNAVAILABLE=Check not possible. Check service is not provided by the member state (%s). +NorProspectNorCustomer=Nor prospect, nor customer +JuridicalStatus=Juridical status +Staff=Staff +ProspectLevelShort=Potential +ProspectLevel=Prospect potential +ContactPrivate=Private +ContactPublic=Shared +ContactVisibility=Visibility +OthersNotLinkedToThirdParty=Others, not linked to a third party +ProspectStatus=Prospect status +PL_NONE=None +PL_UNKNOWN=Unknown +PL_LOW=Low +PL_MEDIUM=Medium +PL_HIGH=High +TE_UNKNOWN=- +TE_STARTUP=Startup +TE_GROUP=Large company +TE_MEDIUM=Medium company +TE_ADMIN=Governmental +TE_SMALL=Small company +TE_RETAIL=Retailer +TE_WHOLE=Wholetailer +TE_PRIVATE=Private individual +TE_OTHER=Other +StatusProspect-1=Do not contact +StatusProspect0=Never contacted +StatusProspect1=To contact +StatusProspect2=Contact in process +StatusProspect3=Contact done +ChangeDoNotContact=Change status to 'Do not contact' +ChangeNeverContacted=Change status to 'Never contacted' +ChangeToContact=Change status to 'To contact' +ChangeContactInProcess=Change status to 'Contact in process' +ChangeContactDone=Change status to 'Contact done' +ProspectsByStatus=Prospects by status +BillingContact=Billing contact +NbOfAttachedFiles=Number of attached files +AttachANewFile=Attach a new file +NoRIB=No BAN defined +NoParentCompany=None +ExportImport=Import-Export +ExportCardToFormat=Export card to format +ContactNotLinkedToCompany=Contact not linked to any third party +DolibarrLogin=Dolibarr login +NoDolibarrAccess=No Dolibarr access +ExportDataset_company_1=Third parties (Companies/foundations/physical people) and properties +ExportDataset_company_2=Contacts and properties +ImportDataset_company_1=Third parties (Companies/foundations/physical people) and properties +ImportDataset_company_2=Contacts/Addresses (of thirdparties or not) and attributes +ImportDataset_company_3=Bank details +PriceLevel=Price level +DeliveriesAddress=Delivery addresses +DeliveryAddress=Delivery address +DeliveryAddressLabel=Delivery address label +DeleteDeliveryAddress=Delete a delivery address +ConfirmDeleteDeliveryAddress=Are you sure you want to delete this delivery address? +NewDeliveryAddress=New delivery address +AddDeliveryAddress=Create address +AddAddress=Create address +NoOtherDeliveryAddress=No alternative delivery address defined +SupplierCategory=Supplier category +JuridicalStatus200=Independant +DeleteFile=Delete file +ConfirmDeleteFile=Are you sure you want to delete this file? +AllocateCommercial=Assigned to sale representative +SelectCountry=Select a country +SelectCompany=Select a third party +Organization=Organization +AutomaticallyGenerated=Automatically generated +FiscalYearInformation=Information on the fiscal year +FiscalMonthStart=Starting month of the fiscal year +YouMustCreateContactFirst=You must create emails contacts for third party first to be able to add emails notifications. +ListSuppliersShort=List of suppliers +ListProspectsShort=List of prospects +ListCustomersShort=List of customers +ThirdPartiesArea=Third parties and contact area +LastModifiedThirdParties=Last %s modified third parties +UniqueThirdParties=Total of unique third parties +InActivity=Open +ActivityCeased=Closed +ActivityStateFilter=Activity status +ProductsIntoElements=List of products into %s +CurrentOutstandingBill=Current outstanding bill +OutstandingBill=Max. for outstanding bill +OutstandingBillReached=Reached max. for outstanding bill +MonkeyNumRefModelDesc=Return numero with format %syymm-nnnn for customer code and %syymm-nnnn for supplier code where yy is year, mm is month and nnnn is a sequence with no break and no return to 0. +LeopardNumRefModelDesc=The code is free. This code can be modified at any time. +ManagingDirectors=Manager(s) name (CEO, director, president...) +SearchThirdparty=Search thirdparty +SearchContact=Search contact diff --git a/htdocs/langs/bn_BD/compta.lang b/htdocs/langs/bn_BD/compta.lang new file mode 100644 index 00000000000..0d579a06ff1 --- /dev/null +++ b/htdocs/langs/bn_BD/compta.lang @@ -0,0 +1,207 @@ +# Dolibarr language file - Source file is en_US - compta +Accountancy=Accountancy +AccountancyCard=Accountancy card +Treasury=Treasury +MenuFinancial=Financial +TaxModuleSetupToModifyRules=Go to Taxes module setup to modify rules for calculation +TaxModuleSetupToModifyRulesLT=Go to Company setup to modify rules for calculation +OptionMode=Option for accountancy +OptionModeTrue=Option Incomes-Expenses +OptionModeVirtual=Option Claims-Debts +OptionModeTrueDesc=In this context, the turnover is calculated over payments (date of payments). The validity of the figures is assured only if the book-keeping is scrutinized through the input/output on the accounts via invoices. +OptionModeVirtualDesc=In this context, the turnover is calculated over invoices (date of validation). When these invoices are due, whether they have been paid or not, they are listed in the turnover output. +FeatureIsSupportedInInOutModeOnly=Feature only available in CREDITS-DEBTS accountancy mode (See Accountancy module configuration) +VATReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Tax module setup. +LTReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Company setup. +Param=Setup +RemainingAmountPayment=Amount payment remaining : +AmountToBeCharged=Total amount to pay : +AccountsGeneral=Accounts +Account=Account +Accounts=Accounts +Accountparent=Account parent +Accountsparent=Accounts parent +BillsForSuppliers=Bills for suppliers +Income=Income +Outcome=Expense +ReportInOut=Income / Expense +ReportTurnover=Turnover +PaymentsNotLinkedToInvoice=Payments not linked to any invoice, so not linked to any third party +PaymentsNotLinkedToUser=Payments not linked to any user +Profit=Profit +AccountingResult=Accounting result +Balance=Balance +Debit=Debit +Credit=Credit +Piece=Accounting Doc. +Withdrawal=Withdrawal +Withdrawals=Withdrawals +AmountHTVATRealReceived=Net collected +AmountHTVATRealPaid=Net paid +VATToPay=VAT sells +VATReceived=VAT received +VATToCollect=VAT purchases +VATSummary=VAT Balance +LT2SummaryES=IRPF Balance +LT1SummaryES=RE Balance +VATPaid=VAT paid +SalaryPaid=Salary paid +LT2PaidES=IRPF Paid +LT1PaidES=RE Paid +LT2CustomerES=IRPF sales +LT2SupplierES=IRPF purchases +LT1CustomerES=RE sales +LT1SupplierES=RE purchases +VATCollected=VAT collected +ToPay=To pay +ToGet=To get back +SpecialExpensesArea=Area for all special payments +TaxAndDividendsArea=Tax, social contributions and dividends area +SocialContribution=Social contribution +SocialContributions=Social contributions +MenuSpecialExpenses=Special expenses +MenuTaxAndDividends=Taxes and dividends +MenuSalaries=Salaries +MenuSocialContributions=Social contributions +MenuNewSocialContribution=New contribution +NewSocialContribution=New social contribution +ContributionsToPay=Contributions to pay +AccountancyTreasuryArea=Accountancy/Treasury area +AccountancySetup=Accountancy setup +NewPayment=New payment +Payments=Payments +PaymentCustomerInvoice=Customer invoice payment +PaymentSupplierInvoice=Supplier invoice payment +PaymentSocialContribution=Social contribution payment +PaymentVat=VAT payment +PaymentSalary=Salary payment +ListPayment=List of payments +ListOfPayments=List of payments +ListOfCustomerPayments=List of customer payments +ListOfSupplierPayments=List of supplier payments +DatePayment=Payment date +DateStartPeriod=Date start period +DateEndPeriod=Date end period +NewVATPayment=New VAT payment +newLT2PaymentES=New IRPF payment +newLT1PaymentES=New RE payment +LT2PaymentES=IRPF Payment +LT2PaymentsES=IRPF Payments +LT1PaymentES=RE Payment +LT1PaymentsES=RE Payments +VATPayment=VAT Payment +VATPayments=VAT Payments +SocialContributionsPayments=Social contributions payments +ShowVatPayment=Show VAT payment +TotalToPay=Total to pay +TotalVATReceived=Total VAT received +CustomerAccountancyCode=Customer accountancy code +SupplierAccountancyCode=Supplier accountancy code +AccountNumberShort=Account number +AccountNumber=Account number +NewAccount=New account +SalesTurnover=Sales turnover +SalesTurnoverMinimum=Minimum sales turnover +ByThirdParties=By third parties +ByUserAuthorOfInvoice=By invoice author +AccountancyExport=Accountancy export +ErrorWrongAccountancyCodeForCompany=Bad customer accountancy code for %s +SuppliersProductsSellSalesTurnover=The generated turnover by the sales of supplier's products. +CheckReceipt=Check deposit +CheckReceiptShort=Check deposit +LastCheckReceiptShort=Last %s check receipts +NewCheckReceipt=New discount +NewCheckDeposit=New check deposit +NewCheckDepositOn=Create receipt for deposit on account: %s +NoWaitingChecks=No checks waiting for deposit. +DateChequeReceived=Check reception date +NbOfCheques=Nb of checks +PaySocialContribution=Pay a social contribution +ConfirmPaySocialContribution=Are you sure you want to classify this social contribution as paid? +DeleteSocialContribution=Delete a social contribution +ConfirmDeleteSocialContribution=Are you sure you want to delete this social contribution? +ExportDataset_tax_1=Social contributions and payments +CalcModeVATDebt=Mode %sVAT on commitment accounting%s. +CalcModeVATEngagement=Mode %sVAT on incomes-expenses%s. +CalcModeDebt=Mode %sClaims-Debts%s said Commitment accounting. +CalcModeEngagement=Mode %sIncomes-Expenses%s said cash accounting +CalcModeLT1= Mode %sRE on customer invoices - suppliers invoices%s +CalcModeLT1Debt=Mode %sRE on customer invoices%s +CalcModeLT1Rec= Mode %sRE on suppliers invoices%s +CalcModeLT2= Mode %sIRPF on customer invoices - suppliers invoices%s +CalcModeLT2Debt=Mode %sIRPF on customer invoices%s +CalcModeLT2Rec= Mode %sIRPF on suppliers invoices%s +AnnualSummaryDueDebtMode=Balance of income and expenses, annual summary +AnnualSummaryInputOutputMode=Balance of income and expenses, annual summary +AnnualByCompaniesDueDebtMode=Balance of income and expenses, detail by third parties, mode %sClaims-Debts%s said Commitment accounting. +AnnualByCompaniesInputOutputMode=Balance of income and expenses, detail by third parties, mode %sIncomes-Expenses%s said cash accounting. +SeeReportInInputOutputMode=See report %sIncomes-Expenses%s said cash accounting for a calculation on actual payments made +SeeReportInDueDebtMode=See report %sClaims-Debts%s said commitment accounting for a calculation on issued invoices +RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included +RulesResultDue=- It includes outstanding invoices, expenses and VAT whether they are paid or not.
- It is based on the validation date of invoices and VAT and on the due date for expenses. +RulesResultInOut=- It includes the real payments made on invoices, expenses and VAT.
- It is based on the payment dates of the invoices, expenses and VAT. +RulesCADue=- It includes the client's due invoices whether they are paid or not.
- It is based on the validation date of these invoices.
+RulesCAIn=- It includes all the effective payments of invoices received from clients.
- It is based on the payment date of these invoices
+DepositsAreNotIncluded=- Deposit invoices are nor included +DepositsAreIncluded=- Deposit invoices are included +LT2ReportByCustomersInInputOutputModeES=Report by third party IRPF +LT1ReportByCustomersInInputOutputModeES=Report by third party RE +VATReportByCustomersInInputOutputMode=Report by the customer VAT collected and paid +VATReportByCustomersInDueDebtMode=Report by the customer VAT collected and paid +VATReportByQuartersInInputOutputMode=Report by rate of the VAT collected and paid +LT1ReportByQuartersInInputOutputMode=Report by RE rate +LT2ReportByQuartersInInputOutputMode=Report by IRPF rate +VATReportByQuartersInDueDebtMode=Report by rate of the VAT collected and paid +LT1ReportByQuartersInDueDebtMode=Report by RE rate +LT2ReportByQuartersInDueDebtMode=Report by IRPF rate +SeeVATReportInInputOutputMode=See report %sVAT encasement%s for a standard calculation +SeeVATReportInDueDebtMode=See report %sVAT on flow%s for a calculation with an option on the flow +RulesVATInServices=- For services, the report includes the VAT regulations actually received or issued on the basis of the date of payment. +RulesVATInProducts=- For material assets, it includes the VAT invoices on the basis of the invoice date. +RulesVATDueServices=- For services, the report includes VAT invoices due, paid or not, based on the invoice date. +RulesVATDueProducts=- For material assets, it includes the VAT invoices, based on the invoice date. +OptionVatInfoModuleComptabilite=Note: For material assets, it should use the date of delivery to be more fair. +PercentOfInvoice=%%/invoice +NotUsedForGoods=Not used on goods +ProposalStats=Statistics on proposals +OrderStats=Statistics on orders +InvoiceStats=Statistics on bills +Dispatch=Dispatching +Dispatched=Dispatched +ToDispatch=To dispatch +ThirdPartyMustBeEditAsCustomer=Third party must be defined as a customer +SellsJournal=Sales Journal +PurchasesJournal=Purchases Journal +DescSellsJournal=Sales Journal +DescPurchasesJournal=Purchases Journal +InvoiceRef=Invoice ref. +CodeNotDef=Not defined +AddRemind=Dispatch available amount +RemainToDivide= Remain to dispatch : +WarningDepositsNotIncluded=Deposits invoices are not included in this version with this accountancy module. +DatePaymentTermCantBeLowerThanObjectDate=Payment term date can't be lower than object date. +Pcg_version=Pcg version +Pcg_type=Pcg type +Pcg_subtype=Pcg subtype +InvoiceLinesToDispatch=Invoice lines to dispatch +InvoiceDispatched=Dispatched invoices +AccountancyDashboard=Accountancy summary +ByProductsAndServices=By products and services +RefExt=External ref +ToCreateAPredefinedInvoice=To create a predefined invoice, create a standard invoice then, without validating it, click onto button "Convert to predefined invoice". +LinkedOrder=Link to order +ReCalculate=Recalculate +Mode1=Method 1 +Mode2=Method 2 +CalculationRuleDesc=To calculate total VAT, there is two methods:
Method 1 is rounding vat on each line, then summing them.
Method 2 is summing all vat on each line, then rounding result.
Final result may differs from few cents. Default mode is mode %s. +CalculationRuleDescSupplier=according to supplier, choose appropriate method to apply same calculation rule and get same result expected by your supplier. +TurnoverPerProductInCommitmentAccountingNotRelevant=Turnover report per product, when using a cash accountancy mode is not relevant. This report is only available when using engagement accountancy mode (see setup of accountancy module). +CalculationMode=Calculation mode +AccountancyJournal=Accountancy code journal +ACCOUNTING_VAT_ACCOUNT=Default accountancy code for collecting VAT +ACCOUNTING_VAT_BUY_ACCOUNT=Default accountancy code for paying VAT +ACCOUNTING_ACCOUNT_CUSTOMER=Accountancy code by default for customer thirdparties +ACCOUNTING_ACCOUNT_SUPPLIER=Accountancy code by default for supplier thirdparties +CloneTax=Clone a social contribution +ConfirmCloneTax=Confirm the clone of a social contribution +CloneTaxForNextMonth=Clone it for next month diff --git a/htdocs/langs/bn_BD/contracts.lang b/htdocs/langs/bn_BD/contracts.lang new file mode 100644 index 00000000000..d1be0e6513f --- /dev/null +++ b/htdocs/langs/bn_BD/contracts.lang @@ -0,0 +1,103 @@ +# Dolibarr language file - Source file is en_US - contracts +ContractsArea=Contracts area +ListOfContracts=List of contracts +LastModifiedContracts=Last %s modified contracts +AllContracts=All contracts +ContractCard=Contract card +ContractStatus=Contract status +ContractStatusNotRunning=Not running +ContractStatusRunning=Running +ContractStatusDraft=Draft +ContractStatusValidated=Validated +ContractStatusClosed=Closed +ServiceStatusInitial=Not running +ServiceStatusRunning=Running +ServiceStatusNotLate=Running, not expired +ServiceStatusNotLateShort=Not expired +ServiceStatusLate=Running, expired +ServiceStatusLateShort=Expired +ServiceStatusClosed=Closed +ServicesLegend=Services legend +Contracts=Contracts +ContractsAndLine=Contracts and line of contracts +Contract=Contract +NoContracts=No contracts +MenuServices=Services +MenuInactiveServices=Services not active +MenuRunningServices=Running services +MenuExpiredServices=Expired services +MenuClosedServices=Closed services +NewContract=New contract +AddContract=Create contract +SearchAContract=Search a contract +DeleteAContract=Delete a contract +CloseAContract=Close a contract +ConfirmDeleteAContract=Are you sure you want to delete this contract and all its services ? +ConfirmValidateContract=Are you sure you want to validate this contract under name %s ? +ConfirmCloseContract=This will close all services (active or not). Are you sure you want to close this contract ? +ConfirmCloseService=Are you sure you want to close this service with date %s ? +ValidateAContract=Validate a contract +ActivateService=Activate service +ConfirmActivateService=Are you sure you want to activate this service with date %s ? +RefContract=Contract reference +DateContract=Contract date +DateServiceActivate=Service activation date +DateServiceUnactivate=Service deactivation date +DateServiceStart=Date for beginning of service +DateServiceEnd=Date for end of service +ShowContract=Show contract +ListOfServices=List of services +ListOfInactiveServices=List of not active services +ListOfExpiredServices=List of expired active services +ListOfClosedServices=List of closed services +ListOfRunningContractsLines=List of running contract lines +ListOfRunningServices=List of running services +NotActivatedServices=Inactive services (among validated contracts) +BoardNotActivatedServices=Services to activate among validated contracts +LastContracts=Last %s contracts +LastActivatedServices=Last %s activated services +LastModifiedServices=Last %s modified services +EditServiceLine=Edit service line +ContractStartDate=Start date +ContractEndDate=End date +DateStartPlanned=Planned start date +DateStartPlannedShort=Planned start date +DateEndPlanned=Planned end date +DateEndPlannedShort=Planned end date +DateStartReal=Real start date +DateStartRealShort=Real start date +DateEndReal=Real end date +DateEndRealShort=Real end date +NbOfServices=Nb of services +CloseService=Close service +ServicesNomberShort=%s service(s) +RunningServices=Running services +BoardRunningServices=Expired running services +ServiceStatus=Status of service +DraftContracts=Drafts contracts +CloseRefusedBecauseOneServiceActive=Contract can't be closed as ther is at least one open service on it +CloseAllContracts=Close all contract lines +DeleteContractLine=Delete a contract line +ConfirmDeleteContractLine=Are you sure you want to delete this contract line ? +MoveToAnotherContract=Move service into another contract. +ConfirmMoveToAnotherContract=I choosed new target contract and confirm I want to move this service into this contract. +ConfirmMoveToAnotherContractQuestion=Choose in which existing contract (of same third party), you want to move this service to ? +PaymentRenewContractId=Renew contract line (number %s) +ExpiredSince=Expiration date +RelatedContracts=Related contracts +NoExpiredServices=No expired active services +ListOfServicesToExpireWithDuration=List of Services to expire in %s days +ListOfServicesToExpireWithDurationNeg=List of Services expired from more than %s days +ListOfServicesToExpire=List of Services to expire +NoteListOfYourExpiredServices=This list contains only services of contracts for third parties you are linked to as a sale representative. +StandardContractsTemplate=Standard contracts template +ContactNameAndSignature=For %s, name and signature: +OnlyLinesWithTypeServiceAreUsed=Only lines with type "Service" will be cloned. + +##### Types de contacts ##### +TypeContact_contrat_internal_SALESREPSIGN=Sales representative signing contract +TypeContact_contrat_internal_SALESREPFOLL=Sales representative following-up contract +TypeContact_contrat_external_BILLING=Billing customer contact +TypeContact_contrat_external_CUSTOMER=Follow-up customer contact +TypeContact_contrat_external_SALESREPSIGN=Signing contract customer contact +Error_CONTRACT_ADDON_NotDefined=Constant CONTRACT_ADDON not defined diff --git a/htdocs/langs/bn_BD/cron.lang b/htdocs/langs/bn_BD/cron.lang new file mode 100644 index 00000000000..28dfc7770b2 --- /dev/null +++ b/htdocs/langs/bn_BD/cron.lang @@ -0,0 +1,87 @@ +# Dolibarr language file - Source file is en_US - cron +# About page +About = About +CronAbout = About Cron +CronAboutPage = Cron about page +# Right +Permission23101 = Read Scheduled task +Permission23102 = Create/update Scheduled task +Permission23103 = Delete Scheduled task +Permission23104 = Execute Scheduled task +# Admin +CronSetup= Scheduled job management setup +URLToLaunchCronJobs=URL to check and launch cron jobs if required +OrToLaunchASpecificJob=Or to check and launch a specific job +KeyForCronAccess=Security key for URL to launch cron jobs +FileToLaunchCronJobs=Command line to launch cron jobs +CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes +CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes +# Menu +CronJobs=Scheduled jobs +CronListActive=List of active/scheduled jobs +CronListInactive=List of disabled jobs +# Page list +CronDateLastRun=Last run +CronLastOutput=Last run output +CronLastResult=Last result code +CronListOfCronJobs=List of scheduled jobs +CronCommand=Command +CronList=Jobs list +CronDelete= Delete cron jobs +CronConfirmDelete= Are you sure you want to delete this cron job ? +CronExecute=Launch job +CronConfirmExecute= Are you sure to execute this job now +CronInfo= Jobs allow to execute task that have been planned +CronWaitingJobs=Wainting jobs +CronTask=Job +CronNone= None +CronDtStart=Start date +CronDtEnd=End date +CronDtNextLaunch=Next execution +CronDtLastLaunch=Last execution +CronFrequency=Frequancy +CronClass=Classe +CronMethod=Method +CronModule=Module +CronAction=Action +CronStatus=Status +CronStatusActive=Enabled +CronStatusInactive=Disabled +CronNoJobs=No jobs registered +CronPriority=Priority +CronLabel=Description +CronNbRun=Nb. launch +CronEach=Every +JobFinished=Job launched and finished +#Page card +CronAdd= Add jobs +CronHourStart= Start Hour and date of task +CronEvery= And execute task each +CronObject= Instance/Object to create +CronArgs=Parameters +CronSaveSucess=Save succesfully +CronNote=Comment +CronFieldMandatory=Fields %s is mandatory +CronErrEndDateStartDt=End date cannot be before start date +CronStatusActiveBtn=Enable +CronStatusInactiveBtn=Disable +CronTaskInactive=This job is disabled +CronDtLastResult=Last result date +CronId=Id +CronClassFile=Classes (filename.class.php) +CronModuleHelp=Name of Dolibarr module directory (also work with external Dolibarr module).
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of module is product +CronClassFileHelp=The file name to load.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of class file name is product.class.php +CronObjectHelp=The object name to load.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of class file name is Product +CronMethodHelp=The object method to launch.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of method is is fecth +CronArgsHelp=The method arguments.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of paramters can be 0, ProductRef +CronCommandHelp=The system command line to execute. +# Info +CronInfoPage=Information +# Common +CronType=Task type +CronType_method=Call method of a Dolibarr Class +CronType_command=Shell command +CronMenu=Cron +CronCannotLoadClass=Cannot load class %s or object %s +UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +TaskDisabled=Task disabled diff --git a/htdocs/langs/bn_BD/deliveries.lang b/htdocs/langs/bn_BD/deliveries.lang new file mode 100644 index 00000000000..d711c3704b4 --- /dev/null +++ b/htdocs/langs/bn_BD/deliveries.lang @@ -0,0 +1,28 @@ +# Dolibarr language file - Source file is en_US - deliveries +Delivery=Delivery +Deliveries=Deliveries +DeliveryCard=Delivery card +DeliveryOrder=Delivery order +DeliveryOrders=Delivery orders +DeliveryDate=Delivery date +DeliveryDateShort=Deliv. date +CreateDeliveryOrder=Generate delivery order +QtyDelivered=Qty delivered +SetDeliveryDate=Set shipping date +ValidateDeliveryReceipt=Validate delivery receipt +ValidateDeliveryReceiptConfirm=Are you sure you want to validate this delivery receipt ? +DeleteDeliveryReceipt=Delete delivery receipt +DeleteDeliveryReceiptConfirm=Are you sure you want to delete delivery receipt %s ? +DeliveryMethod=Delivery method +TrackingNumber=Tracking number +DeliveryNotValidated=Delivery not validated +# merou PDF model +NameAndSignature=Name and Signature : +ToAndDate=To___________________________________ on ____/_____/__________ +GoodStatusDeclaration=Have received the goods above in good condition, +Deliverer=Deliverer : +Sender=Sender +Recipient=Recipient +ErrorStockIsNotEnough=There's not enough stock +Shippable=Shippable +NonShippable=Not Shippable diff --git a/htdocs/langs/bn_BD/dict.lang b/htdocs/langs/bn_BD/dict.lang new file mode 100644 index 00000000000..bef1f4821b4 --- /dev/null +++ b/htdocs/langs/bn_BD/dict.lang @@ -0,0 +1,327 @@ +# Dolibarr language file - Source file is en_US - dict +CountryFR=France +CountryBE=Belgium +CountryIT=Italy +CountryES=Spain +CountryDE=Germany +CountryCH=Switzerland +CountryGB=Great Britain +CountryUK=United Kingdom +CountryIE=Ireland +CountryCN=China +CountryTN=Tunisia +CountryUS=United States +CountryMA=Morocco +CountryDZ=Algeria +CountryCA=Canada +CountryTG=Togo +CountryGA=Gabon +CountryNL=Netherlands +CountryHU=Hungary +CountryRU=Russia +CountrySE=Sweden +CountryCI=Ivoiry Coast +CountrySN=Senegal +CountryAR=Argentina +CountryCM=Cameroon +CountryPT=Portugal +CountrySA=Saudi Arabia +CountryMC=Monaco +CountryAU=Australia +CountrySG=Singapore +CountryAF=Afghanistan +CountryAX=Åland Islands +CountryAL=Albania +CountryAS=American Samoa +CountryAD=Andorra +CountryAO=Angola +CountryAI=Anguilla +CountryAQ=Antarctica +CountryAG=Antigua and Barbuda +CountryAM=Armenia +CountryAW=Aruba +CountryAT=Austria +CountryAZ=Azerbaijan +CountryBS=Bahamas +CountryBH=Bahrain +CountryBD=Bangladesh +CountryBB=Barbados +CountryBY=Belarus +CountryBZ=Belize +CountryBJ=Benin +CountryBM=Bermuda +CountryBT=Bhutan +CountryBO=Bolivia +CountryBA=Bosnia and Herzegovina +CountryBW=Botswana +CountryBV=Bouvet Island +CountryBR=Brazil +CountryIO=British Indian Ocean Territory +CountryBN=Brunei Darussalam +CountryBG=Bulgaria +CountryBF=Burkina Faso +CountryBI=Burundi +CountryKH=Cambodia +CountryCV=Cape Verde +CountryKY=Cayman Islands +CountryCF=Central African Republic +CountryTD=Chad +CountryCL=Chile +CountryCX=Christmas Island +CountryCC=Cocos (Keeling) Islands +CountryCO=Colombia +CountryKM=Comoros +CountryCG=Congo +CountryCD=Congo, The Democratic Republic of the +CountryCK=Cook Islands +CountryCR=Costa Rica +CountryHR=Croatia +CountryCU=Cuba +CountryCY=Cyprus +CountryCZ=Czech Republic +CountryDK=Denmark +CountryDJ=Djibouti +CountryDM=Dominica +CountryDO=Dominican Republic +CountryEC=Ecuador +CountryEG=Egypt +CountrySV=El Salvador +CountryGQ=Equatorial Guinea +CountryER=Eritrea +CountryEE=Estonia +CountryET=Ethiopia +CountryFK=Falkland Islands +CountryFO=Faroe Islands +CountryFJ=Fiji Islands +CountryFI=Finland +CountryGF=French Guiana +CountryPF=French Polynesia +CountryTF=French Southern Territories +CountryGM=Gambia +CountryGE=Georgia +CountryGH=Ghana +CountryGI=Gibraltar +CountryGR=Greece +CountryGL=Greenland +CountryGD=Grenada +CountryGP=Guadeloupe +CountryGU=Guam +CountryGT=Guatemala +CountryGN=Guinea +CountryGW=Guinea-Bissau +CountryGY=Guyana +CountryHT=Haïti +CountryHM=Heard Island and McDonald +CountryVA=Holy See (Vatican City State) +CountryHN=Honduras +CountryHK=Hong Kong +CountryIS=Icelande +CountryIN=India +CountryID=Indonesia +CountryIR=Iran +CountryIQ=Iraq +CountryIL=Israel +CountryJM=Jamaica +CountryJP=Japan +CountryJO=Jordan +CountryKZ=Kazakhstan +CountryKE=Kenya +CountryKI=Kiribati +CountryKP=North Korea +CountryKR=South Korea +CountryKW=Kuwait +CountryKG=Kyrghyztan +CountryLA=Lao +CountryLV=Latvia +CountryLB=Lebanon +CountryLS=Lesotho +CountryLR=Liberia +CountryLY=Libyan +CountryLI=Liechtenstein +CountryLT=Lituania +CountryLU=Luxembourg +CountryMO=Macao +CountryMK=Macedonia, the former Yugoslav of +CountryMG=Madagascar +CountryMW=Malawi +CountryMY=Malaysia +CountryMV=Maldives +CountryML=Mali +CountryMT=Malta +CountryMH=Marshall Islands +CountryMQ=Martinique +CountryMR=Mauritania +CountryMU=Mauritius +CountryYT=Mayotte +CountryMX=Mexico +CountryFM=Micronesia +CountryMD=Moldova +CountryMN=Mongolia +CountryMS=Monserrat +CountryMZ=Mozambique +CountryMM=Birmania (Myanmar) +CountryNA=Namibia +CountryNR=Nauru +CountryNP=Nepal +CountryAN=Netherlands Antilles +CountryNC=New Caledonia +CountryNZ=New Zealand +CountryNI=Nicaragua +CountryNE=Niger +CountryNG=Nigeria +CountryNU=Niue +CountryNF=Norfolk Island +CountryMP=Northern Mariana Islands +CountryNO=Norway +CountryOM=Oman +CountryPK=Pakistan +CountryPW=Palau +CountryPS=Palestinian Territory, Occupied +CountryPA=Panama +CountryPG=Papua New Guinea +CountryPY=Paraguay +CountryPE=Peru +CountryPH=Philippines +CountryPN=Pitcairn Islands +CountryPL=Poland +CountryPR=Puerto Rico +CountryQA=Qatar +CountryRE=Reunion +CountryRO=Romania +CountryRW=Rwanda +CountrySH=Saint Helena +CountryKN=Saint Kitts and Nevis +CountryLC=Saint Lucia +CountryPM=Saint Pierre and Miquelon +CountryVC=Saint Vincent and Grenadines +CountryWS=Samoa +CountrySM=San Marino +CountryST=Sao Tome and Principe +CountryRS=Serbia +CountrySC=Seychelles +CountrySL=Sierra Leone +CountrySK=Slovakia +CountrySI=Slovenia +CountrySB=Solomon Islands +CountrySO=Somalia +CountryZA=South Africa +CountryGS=South Georgia and the South Sandwich Islands +CountryLK=Sri Lanka +CountrySD=Sudan +CountrySR=Suriname +CountrySJ=Svalbard and Jan Mayen +CountrySZ=Swaziland +CountrySY=Syrian +CountryTW=Taiwan +CountryTJ=Tajikistan +CountryTZ=Tanzania +CountryTH=Thailand +CountryTL=Timor-Leste +CountryTK=Tokelau +CountryTO=Tonga +CountryTT=Trinidad and Tobago +CountryTR=Turkey +CountryTM=Turkmenistan +CountryTC=Turks and Cailos Islands +CountryTV=Tuvalu +CountryUG=Uganda +CountryUA=Ukraine +CountryAE=United Arab Emirates +CountryUM=United States Minor Outlying Islands +CountryUY=Uruguay +CountryUZ=Uzbekistan +CountryVU=Vanuatu +CountryVE=Venezuela +CountryVN=Viet Nam +CountryVG=Virgin Islands, British +CountryVI=Virgin Islands, U.S. +CountryWF=Wallis and Futuna +CountryEH=Western Sahara +CountryYE=Yemen +CountryZM=Zambia +CountryZW=Zimbabwe +CountryGG=Guernsey +CountryIM=Isle of Man +CountryJE=Jersey +CountryME=Montenegro +CountryBL=Saint Barthelemy +CountryMF=Saint Martin + +##### Civilities ##### +CivilityMME=Mrs. +CivilityMR=Mr. +CivilityMLE=Ms. +CivilityMTRE=Master +CivilityDR=Doctor +##### Currencies ##### +Currencyeuros=Euros +CurrencyAUD=AU Dollars +CurrencySingAUD=AU Dollar +CurrencyCAD=CAN Dollars +CurrencySingCAD=CAN Dollar +CurrencyCHF=Swiss Francs +CurrencySingCHF=Swiss Franc +CurrencyEUR=Euros +CurrencySingEUR=Euro +CurrencyFRF=French Francs +CurrencySingFRF=French Franc +CurrencyGBP=GB Pounds +CurrencySingGBP=GB Pound +CurrencyINR=Indian rupees +CurrencySingINR=Indian rupee +CurrencyMAD=Dirham +CurrencySingMAD=Dirham +CurrencyMGA=Ariary +CurrencySingMGA=Ariary +CurrencyMUR=Mauritius rupees +CurrencySingMUR=Mauritius rupee +CurrencyNOK=Norwegian krones +CurrencySingNOK=Norwegian krone +CurrencyTND=Tunisian dinars +CurrencySingTND=Tunisian dinar +CurrencyUSD=US Dollars +CurrencySingUSD=US Dollar +CurrencyUAH=Hryvnia +CurrencySingUAH=Hryvnia +CurrencyXAF=CFA Francs BEAC +CurrencySingXAF=CFA Franc BEAC +CurrencyXOF=CFA Francs BCEAO +CurrencySingXOF=CFA Franc BCEAO +CurrencyXPF=CFP Francs +CurrencySingXPF=CFP Franc +CurrencyCentSingEUR=cent +CurrencyCentINR=paisa +CurrencyCentSingINR=paise +CurrencyThousandthSingTND=thousandth +#### Input reasons ##### +DemandReasonTypeSRC_INTE=Internet +DemandReasonTypeSRC_CAMP_MAIL=Mailing campaign +DemandReasonTypeSRC_CAMP_EMAIL=EMailing campaign +DemandReasonTypeSRC_CAMP_PHO=Phone campaign +DemandReasonTypeSRC_CAMP_FAX=Fax campaign +DemandReasonTypeSRC_COMM=Commercial contact +DemandReasonTypeSRC_SHOP=Shop contact +DemandReasonTypeSRC_WOM=Word of mouth +DemandReasonTypeSRC_PARTNER=Partner +DemandReasonTypeSRC_EMPLOYEE=Employee +DemandReasonTypeSRC_SPONSORING=Sponsorship +#### Paper formats #### +PaperFormatEU4A0=Format 4A0 +PaperFormatEU2A0=Format 2A0 +PaperFormatEUA0=Format A0 +PaperFormatEUA1=Format A1 +PaperFormatEUA2=Format A2 +PaperFormatEUA3=Format A3 +PaperFormatEUA4=Format A4 +PaperFormatEUA5=Format A5 +PaperFormatEUA6=Format A6 +PaperFormatUSLETTER=Format Letter US +PaperFormatUSLEGAL=Format Legal US +PaperFormatUSEXECUTIVE=Format Executive US +PaperFormatUSLEDGER=Format Ledger/Tabloid +PaperFormatCAP1=Format P1 Canada +PaperFormatCAP2=Format P2 Canada +PaperFormatCAP3=Format P3 Canada +PaperFormatCAP4=Format P4 Canada +PaperFormatCAP5=Format P5 Canada +PaperFormatCAP6=Format P6 Canada diff --git a/htdocs/langs/bn_BD/donations.lang b/htdocs/langs/bn_BD/donations.lang new file mode 100644 index 00000000000..f7aed91cf81 --- /dev/null +++ b/htdocs/langs/bn_BD/donations.lang @@ -0,0 +1,38 @@ +# Dolibarr language file - Source file is en_US - donations +Donation=Donation +Donations=Donations +DonationRef=Donation ref. +Donor=Donor +Donors=Donors +AddDonation=Create a donation +NewDonation=New donation +ShowDonation=Show donation +DonationPromise=Gift promise +PromisesNotValid=Not validated promises +PromisesValid=Validated promises +DonationsPaid=Donations paid +DonationsReceived=Donations received +PublicDonation=Public donation +DonationsNumber=Donation number +DonationsArea=Donations area +DonationStatusPromiseNotValidated=Draft promise +DonationStatusPromiseValidated=Validated promise +DonationStatusPaid=Donation received +DonationStatusPromiseNotValidatedShort=Draft +DonationStatusPromiseValidatedShort=Validated +DonationStatusPaidShort=Received +ValidPromess=Validate promise +DonationReceipt=Donation receipt +BuildDonationReceipt=Build receipt +DonationsModels=Documents models for donation receipts +LastModifiedDonations=Last %s modified donations +SearchADonation=Search a donation +DonationRecipient=Donation recipient +ThankYou=Thank You +IConfirmDonationReception=The recipient declare reception, as a donation, of the following amount +MinimumAmount=Minimum amount is %s +FreeTextOnDonations=Free text to show in footer +FrenchOptions=Options for France +DONATION_ART200=Show article 200 from CGI if you are concerned +DONATION_ART238=Show article 238 from CGI if you are concerned +DONATION_ART885=Show article 885 from CGI if you are concerned diff --git a/htdocs/langs/bn_BD/ecm.lang b/htdocs/langs/bn_BD/ecm.lang new file mode 100644 index 00000000000..4a1931a3217 --- /dev/null +++ b/htdocs/langs/bn_BD/ecm.lang @@ -0,0 +1,57 @@ +# Dolibarr language file - Source file is en_US - ecm +MenuECM=Documents +DocsMine=My documents +DocsGenerated=Generated documents +DocsElements=Elements documents +DocsThirdParties=Documents third parties +DocsContracts=Documents contracts +DocsProposals=Documents proposals +DocsOrders=Documents orders +DocsInvoices=Documents invoices +ECMNbOfDocs=Nb of documents in directory +ECMNbOfDocsSmall=Nb of doc. +ECMSection=Directory +ECMSectionManual=Manual directory +ECMSectionAuto=Automatic directory +ECMSectionsManual=Manual tree +ECMSectionsAuto=Automatic tree +ECMSections=Directories +ECMRoot=Root +ECMNewSection=New directory +ECMAddSection=Add directory +ECMNewDocument=New document +ECMCreationDate=Creation date +ECMNbOfFilesInDir=Number of files in directory +ECMNbOfSubDir=Number of sub-directories +ECMNbOfFilesInSubDir=Number of files in sub-directories +ECMCreationUser=Creator +ECMArea=EDM area +ECMAreaDesc=The EDM (Electronic Document Management) area allows you to save, share and search quickly all kind of documents in Dolibarr. +ECMAreaDesc2=* Automatic directories are filled automatically when adding documents from card of an element.
* Manual directories can be used to save documents not linked to a particular element. +ECMSectionWasRemoved=Directory %s has been deleted. +ECMDocumentsSection=Document of directory +ECMSearchByKeywords=Search by keywords +ECMSearchByEntity=Search by object +ECMSectionOfDocuments=Directories of documents +ECMTypeManual=Manual +ECMTypeAuto=Automatic +ECMDocsBySocialContributions=Documents linked to social contributions +ECMDocsByThirdParties=Documents linked to third parties +ECMDocsByProposals=Documents linked to proposals +ECMDocsByOrders=Documents linked to customers orders +ECMDocsByContracts=Documents linked to contracts +ECMDocsByInvoices=Documents linked to customers invoices +ECMDocsByProducts=Documents linked to products +ECMDocsByProjects=Documents linked to projects +ECMDocsByUsers=Documents linked to users +ECMDocsByInterventions=Documents linked to interventions +ECMNoDirectoryYet=No directory created +ShowECMSection=Show directory +DeleteSection=Remove directory +ConfirmDeleteSection=Can you confirm you want to delete the directory %s ? +ECMDirectoryForFiles=Relative directory for files +CannotRemoveDirectoryContainsFiles=Removed not possible because it contains some files +ECMFileManager=File manager +ECMSelectASection=Select a directory on left tree... +DirNotSynchronizedSyncFirst=This directory seems to be created or modified outside ECM module. You must click on "Refresh" button first to synchronize disk and database to get content of this directory. + diff --git a/htdocs/langs/bn_BD/errors.lang b/htdocs/langs/bn_BD/errors.lang new file mode 100644 index 00000000000..700e6344d7d --- /dev/null +++ b/htdocs/langs/bn_BD/errors.lang @@ -0,0 +1,183 @@ +# Dolibarr language file - Source file is en_US - errors + +# No errors +NoErrorCommitIsDone=No error, we commit +# Errors +Error=Error +Errors=Errors +ErrorButCommitIsDone=Errors found but we validate despite this +ErrorBadEMail=EMail %s is wrong +ErrorBadUrl=Url %s is wrong +ErrorLoginAlreadyExists=Login %s already exists. +ErrorGroupAlreadyExists=Group %s already exists. +ErrorRecordNotFound=Record not found. +ErrorFailToCopyFile=Failed to copy file '%s' into '%s'. +ErrorFailToRenameFile=Failed to rename file '%s' into '%s'. +ErrorFailToDeleteFile=Failed to remove file '%s'. +ErrorFailToCreateFile=Failed to create file '%s'. +ErrorFailToRenameDir=Failed to rename directory '%s' into '%s'. +ErrorFailToCreateDir=Failed to create directory '%s'. +ErrorFailToDeleteDir=Failed to delete directory '%s'. +ErrorFailedToDeleteJoinedFiles=Can not delete environment because there is some joined files. Remove join files first. +ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as contact for this type. +ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. +ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. +ErrorBadThirdPartyName=Bad value for third party name +ErrorProdIdIsMandatory=The %s is mandatory +ErrorBadCustomerCodeSyntax=Bad syntax for customer code +ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. +ErrorCustomerCodeRequired=Customer code required +ErrorBarCodeRequired=Bar code required +ErrorCustomerCodeAlreadyUsed=Customer code already used +ErrorBarCodeAlreadyUsed=Bar code already used +ErrorPrefixRequired=Prefix required +ErrorUrlNotValid=The website address is incorrect +ErrorBadSupplierCodeSyntax=Bad syntax for supplier code +ErrorSupplierCodeRequired=Supplier code required +ErrorSupplierCodeAlreadyUsed=Supplier code already used +ErrorBadParameters=Bad parameters +ErrorBadValueForParameter=Wrong value '%s' for parameter incorrect '%s' +ErrorBadImageFormat=Image file has not a supported format (Your PHP does not support functions to convert images of this format) +ErrorBadDateFormat=Value '%s' has wrong date format +ErrorWrongDate=Date is not correct! +ErrorFailedToWriteInDir=Failed to write in directory %s +ErrorFoundBadEmailInFile=Found incorrect email syntax for %s lines in file (example line %s with email=%s) +ErrorUserCannotBeDelete=User can not be deleted. May be it is associated on Dolibarr entities. +ErrorFieldsRequired=Some required fields were not filled. +ErrorFailedToCreateDir=Failed to create a directory. Check that Web server user has permissions to write into Dolibarr documents directory. If parameter safe_mode is enabled on this PHP, check that Dolibarr php files owns to web server user (or group). +ErrorNoMailDefinedForThisUser=No mail defined for this user +ErrorFeatureNeedJavascript=This feature need javascript to be activated to work. Change this in setup - display. +ErrorTopMenuMustHaveAParentWithId0=A menu of type 'Top' can't have a parent menu. Put 0 in parent menu or choose a menu of type 'Left'. +ErrorLeftMenuMustHaveAParentId=A menu of type 'Left' must have a parent id. +ErrorFileNotFound=File %s not found (Bad path, wrong permissions or access denied by PHP openbasedir or safe_mode parameter) +ErrorDirNotFound=Directory %s not found (Bad path, wrong permissions or access denied by PHP openbasedir or safe_mode parameter) +ErrorFunctionNotAvailableInPHP=Function %s is required for this feature but is not available in this version/setup of PHP. +ErrorDirAlreadyExists=A directory with this name already exists. +ErrorFileAlreadyExists=A file with this name already exists. +ErrorPartialFile=File not received completely by server. +ErrorNoTmpDir=Temporary directy %s does not exists. +ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. +ErrorFileSizeTooLarge=File size is too large. +ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) +ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) +ErrorNoValueForSelectType=Please fill value for select list +ErrorNoValueForCheckBoxType=Please fill value for checkbox list +ErrorNoValueForRadioType=Please fill value for radio list +ErrorBadFormatValueList=The list value cannot have more than one come : %s, but need at least one: llave,valores +ErrorFieldCanNotContainSpecialCharacters=Field %s must not contains special characters. +ErrorFieldCanNotContainSpecialNorUpperCharacters=Field %s must not contains special characters, nor upper case characters. +ErrorNoAccountancyModuleLoaded=No accountancy module activated +ErrorExportDuplicateProfil=This profile name already exists for this export set. +ErrorLDAPSetupNotComplete=Dolibarr-LDAP matching is not complete. +ErrorLDAPMakeManualTest=A .ldif file has been generated in directory %s. Try to load it manually from command line to have more information on errors. +ErrorCantSaveADoneUserWithZeroPercentage=Can't save an action with "statut not started" if field "done by" is also filled. +ErrorRefAlreadyExists=Ref used for creation already exists. +ErrorPleaseTypeBankTransactionReportName=Please type bank receipt name where transaction is reported (Format YYYYMM or YYYYMMDD) +ErrorRecordHasChildren=Failed to delete records since it has some childs. +ErrorRecordIsUsedCantDelete=Can't delete record. It is already used or included into other object. +ErrorModuleRequireJavascript=Javascript must not be disabled to have this feature working. To enable/disable Javascript, go to menu Home->Setup->Display. +ErrorPasswordsMustMatch=Both typed passwords must match each other +ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. +ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) +ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) +ErrorsOnXLines=Errors on %s source record(s) +ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) +ErrorSpecialCharNotAllowedForField=Special characters are not allowed for field "%s" +ErrorDatabaseParameterWrong=Database setup parameter '%s' has a value not compatible to use Dolibarr (must have value '%s'). +ErrorNumRefModel=A reference exists into database (%s) and is not compatible with this numbering rule. Remove record or renamed reference to activate this module. +ErrorQtyTooLowForThisSupplier=Quantity too low for this supplier or no price defined on this product for this supplier +ErrorModuleSetupNotComplete=Setup of module looks to be uncomplete. Go on Setup - Modules to complete. +ErrorBadMask=Error on mask +ErrorBadMaskFailedToLocatePosOfSequence=Error, mask without sequence number +ErrorBadMaskBadRazMonth=Error, bad reset value +ErrorMaxNumberReachForThisMask=Max number reach for this mask +ErrorCounterMustHaveMoreThan3Digits=Counter must have more than 3 digits +ErrorSelectAtLeastOne=Error. Select at least one entry. +ErrorProductWithRefNotExist=Product with reference '%s' don't exist +ErrorDeleteNotPossibleLineIsConsolidated=Delete not possible because record is linked to a bank transation that is conciliated +ErrorProdIdAlreadyExist=%s is assigned to another third +ErrorFailedToSendPassword=Failed to send password +ErrorFailedToLoadRSSFile=Fails to get RSS feed. Try to add constant MAIN_SIMPLEXMLLOAD_DEBUG if error messages does not provide enough information. +ErrorPasswordDiffers=Passwords differs, please type them again. +ErrorForbidden=Access denied.
You try to access to a page, area or feature without being in an authenticated session or that is not allowed to your user. +ErrorForbidden2=Permission for this login can be defined by your Dolibarr administrator from menu %s->%s. +ErrorForbidden3=It seems that Dolibarr is not used through an authenticated session. Take a look at Dolibarr setup documentation to know how to manage authentications (htaccess, mod_auth or other...). +ErrorNoImagickReadimage=Class Imagick is not found in this PHP. No preview can be available. Administrators can disable this tab from menu Setup - Display. +ErrorRecordAlreadyExists=Record already exists +ErrorCantReadFile=Failed to read file '%s' +ErrorCantReadDir=Failed to read directory '%s' +ErrorFailedToFindEntity=Failed to read environment '%s' +ErrorBadLoginPassword=Bad value for login or password +ErrorLoginDisabled=Your account has been disabled +ErrorFailedToRunExternalCommand=Failed to run external command. Check it is available and runnable by your PHP server. If PHP Safe Mode is enabled, check that command is inside a directory defined by parameter safe_mode_exec_dir. +ErrorFailedToChangePassword=Failed to change password +ErrorLoginDoesNotExists=User with login %s could not be found. +ErrorLoginHasNoEmail=This user has no email address. Process aborted. +ErrorBadValueForCode=Bad value for security code. Try again with new value... +ErrorBothFieldCantBeNegative=Fields %s and %s can't be both negative +ErrorQtyForCustomerInvoiceCantBeNegative=Quantity for line into customer invoices can't be negative +ErrorWebServerUserHasNotPermission=User account %s used to execute web server has no permission for that +ErrorNoActivatedBarcode=No barcode type activated +ErrUnzipFails=Failed to unzip %s with ZipArchive +ErrNoZipEngine=No engine to unzip %s file in this PHP +ErrorFileMustBeADolibarrPackage=The file %s must be a Dolibarr zip package +ErrorFileRequired=It takes a package Dolibarr file +ErrorPhpCurlNotInstalled=The PHP CURL is not installed, this is essential to talk with Paypal +ErrorFailedToAddToMailmanList=Failed to add record %s to Mailman list %s or SPIP base +ErrorFailedToRemoveToMailmanList=Failed to remove record %s to Mailman list %s or SPIP base +ErrorNewValueCantMatchOldValue=New value can't be equal to old one +ErrorFailedToValidatePasswordReset=Failed to reinit password. May be the reinit was already done (this link can be used only one time). If not, try to restart the reinit process. +ErrorToConnectToMysqlCheckInstance=Connect to database fails. Check Mysql server is running (in most cases, you can launch it from command line with 'sudo /etc/init.d/mysql start'). +ErrorFailedToAddContact=Failed to add contact +ErrorDateMustBeBeforeToday=The date can not be greater than today +ErrorPaymentModeDefinedToWithoutSetup=A payment mode was set to type %s but setup of module Invoice was not completed to define information to show for this payment mode. +ErrorPHPNeedModule=Error, your PHP must have module %s installed to use this feature. +ErrorOpenIDSetupNotComplete=You setup Dolibarr config file to allow OpenID authentication, but URL of OpenID service is not defined into constant %s +ErrorWarehouseMustDiffers=Source and target warehouses must differs +ErrorBadFormat=Bad format! +ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Error, this member is not yet linked to any thirdparty. Link member to an existing third party or create a new thirdparty before creating subscription with invoice. +ErrorThereIsSomeDeliveries=Error, there is some deliveries linked to this shipment. Deletion refused. +ErrorCantDeletePaymentReconciliated=Can't delete a payment that had generated a bank transaction that was conciliated +ErrorCantDeletePaymentSharedWithPayedInvoice=Can't delete a payment shared by at least one invoice with status Payed +ErrorPriceExpression1=Cannot assign to constant '%s' +ErrorPriceExpression2=Cannot redefine built-in function '%s' +ErrorPriceExpression3=Undefined variable '%s' in function definition +ErrorPriceExpression4=Illegal character '%s' +ErrorPriceExpression5=Unexpected '%s' +ErrorPriceExpression6=Wrong number of arguments (%s given, %s expected) +ErrorPriceExpression8=Unexpected operator '%s' +ErrorPriceExpression9=An unexpected error occured +ErrorPriceExpression10=Iperator '%s' lacks operand +ErrorPriceExpression11=Expecting '%s' +ErrorPriceExpression14=Division by zero +ErrorPriceExpression17=Undefined variable '%s' +ErrorPriceExpression19=Expression not found +ErrorPriceExpression20=Empty expression +ErrorPriceExpression21=Empty result '%s' +ErrorPriceExpression22=Negative result '%s' +ErrorPriceExpressionInternal=Internal error '%s' +ErrorPriceExpressionUnknown=Unknown error '%s' +ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs +ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified before being allowed to do this action + +# Warnings +WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined +WarningSafeModeOnCheckExecDir=Warning, PHP option safe_mode is on so command must be stored inside a directory declared by php parameter safe_mode_exec_dir. +WarningAllowUrlFopenMustBeOn=Parameter allow_url_fopen must be set to on in filer php.ini for having this module working completely. You must modify this file manually. +WarningBuildScriptNotRunned=Script %s was not yet ran to build graphics, or there is no data to show. +WarningBookmarkAlreadyExists=A bookmark with this title or this target (URL) already exists. +WarningPassIsEmpty=Warning, database password is empty. This is a security hole. You should add a password to your database and change your conf.php file to reflect this. +WarningConfFileMustBeReadOnly=Warning, your config file (htdocs/conf/conf.php) can be overwritten by the web server. This is a serious security hole. Modify permissions on file to be in read only mode for operating system user used by Web server. If you use Windows and FAT format for your disk, you must know that this file system does not allow to add permissions on file, so can't be completely safe. +WarningsOnXLines=Warnings on %s source record(s) +WarningNoDocumentModelActivated=No model, for document generation, has been activated. A model will be choosed by default until you check your module setup. +WarningLockFileDoesNotExists=Warning, once setup is finished, you must disable install/migrate tools by adding a file install.lock into directory %s. Missing this file is a security hole. +WarningUntilDirRemoved=All security warnings (visible by admin users only) will remain active as long as the vulnerability is present (or that constant MAIN_REMOVE_INSTALL_WARNING is added in Setup->Other setup). +WarningCloseAlways=Warning, closing is done even if amount differs between source and target elements. Enable this feature with caution. +WarningUsingThisBoxSlowDown=Warning, using this box slow down seriously all pages showing the box. +WarningClickToDialUserSetupNotComplete=Setup of ClickToDial information for your user are not complete (see tab ClickToDial onto your user card). +WarningNotRelevant=Irrelevant operation for this dataset +WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=Feature disabled when display setup is optimized for blind person or text browsers. +WarningPaymentDateLowerThanInvoiceDate=Payment date (%s) is earlier than invoice date (%s) for invoice %s. +WarningTooManyDataPleaseUseMoreFilters=Too many data. Please use more filters diff --git a/htdocs/langs/bn_BD/exports.lang b/htdocs/langs/bn_BD/exports.lang new file mode 100644 index 00000000000..d79df485608 --- /dev/null +++ b/htdocs/langs/bn_BD/exports.lang @@ -0,0 +1,134 @@ +# Dolibarr language file - Source file is en_US - exports +ExportsArea=Exports area +ImportArea=Import area +NewExport=New export +NewImport=New import +ExportableDatas=Exportable dataset +ImportableDatas=Importable dataset +SelectExportDataSet=Choose dataset you want to export... +SelectImportDataSet=Choose dataset you want to import... +SelectExportFields=Choose fields you want to export, or select a predefined export profile +SelectImportFields=Choose source file fields you want to import and their target field in database by moving them up and down with anchor %s, or select a predefined import profile: +NotImportedFields=Fields of source file not imported +SaveExportModel=Save this export profile if you plan to reuse it later... +SaveImportModel=Save this import profile if you plan to reuse it later... +ExportModelName=Export profile name +ExportModelSaved=Export profile saved under name %s. +ExportableFields=Exportable fields +ExportedFields=Exported fields +ImportModelName=Import profile name +ImportModelSaved=Import profile saved under name %s. +ImportableFields=Importable fields +ImportedFields=Imported fields +DatasetToExport=Dataset to export +DatasetToImport=Import file into dataset +NoDiscardedFields=No fields in source file are discarded +Dataset=Dataset +ChooseFieldsOrdersAndTitle=Choose fields order... +FieldsOrder=Fields order +FieldsTitle=Fields title +FieldOrder=Field order +FieldTitle=Field title +ChooseExportFormat=Choose export format +NowClickToGenerateToBuildExportFile=Now, select file format in combo box and click on "Generate" to build export file... +AvailableFormats=Available formats +LibraryShort=Library +LibraryUsed=Library used +LibraryVersion=Version +Step=Step +FormatedImport=Import assistant +FormatedImportDesc1=This area allows to import personalized data, using an assistant to help you in process without technical knowledge. +FormatedImportDesc2=First step is to choose a king of data you want to load, then file to load, then to choose which fields you want to load. +FormatedExport=Export assistant +FormatedExportDesc1=This area allows to export personalized data, using an assistant to help you in process without technical knowledge. +FormatedExportDesc2=First step is to choose a predefined dataset, then to choose which fields you want in your result files, and which order. +FormatedExportDesc3=When data to export are selected, you can define output file format you want to export your data to. +Sheet=Sheet +NoImportableData=No importable data (no module with definitions to allow data imports) +FileSuccessfullyBuilt=Export file generated +SQLUsedForExport=SQL Request used to build export file +LineId=Id of line +LineDescription=Description of line +LineUnitPrice=Unit price of line +LineVATRate=VAT Rate of line +LineQty=Quantity for line +LineTotalHT=Amount net of tax for line +LineTotalTTC=Amount with tax for line +LineTotalVAT=Amount of VAT for line +TypeOfLineServiceOrProduct=Type of line (0=product, 1=service) +FileWithDataToImport=File with data to import +FileToImport=Source file to import +FileMustHaveOneOfFollowingFormat=File to import must have one of following format +DownloadEmptyExample=Download example of empty source file +ChooseFormatOfFileToImport=Choose file format to use as import file format by clicking on picto %s to select it... +ChooseFileToImport=Upload file then click on picto %s to select file as source import file... +SourceFileFormat=Source file format +FieldsInSourceFile=Fields in source file +FieldsInTargetDatabase=Target fields in Dolibarr database (bold=mandatory) +Field=Field +NoFields=No fields +MoveField=Move field column number %s +ExampleOfImportFile=Example_of_import_file +SaveImportProfile=Save this import profile +ErrorImportDuplicateProfil=Failed to save this import profile with this name. An existing profile already exists with this name. +ImportSummary=Import setup summary +TablesTarget=Targeted tables +FieldsTarget=Targeted fields +TableTarget=Targeted table +FieldTarget=Targeted field +FieldSource=Source field +DoNotImportFirstLine=Do not import first line of source file +NbOfSourceLines=Number of lines in source file +NowClickToTestTheImport=Check import parameters you have defined. If they are correct, click on button "%s" to launch a simulation of import process (no data will be changed in your database, it's only a simulation for the moment)... +RunSimulateImportFile=Launch the import simulation +FieldNeedSource=This field requires data from the source file +SomeMandatoryFieldHaveNoSource=Some mandatory fields have no source from data file +InformationOnSourceFile=Information on source file +InformationOnTargetTables=Information on target fields +SelectAtLeastOneField=Switch at least one source field in the column of fields to export +SelectFormat=Choose this import file format +RunImportFile=Launch import file +NowClickToRunTheImport=Check result of import simulation. If everything is ok, launch the definitive import. +DataLoadedWithId=All data will be loaded with the following import id: %s +ErrorMissingMandatoryValue=Mandatory data is empty in source file for field %s. +TooMuchErrors=There is still %s other source lines with errors but output has been limited. +TooMuchWarnings=There is still %s other source lines with warnings but output has been limited. +EmptyLine=Empty line (will be discarded) +CorrectErrorBeforeRunningImport=You must first correct all errors before running definitive import. +FileWasImported=File was imported with number %s. +YouCanUseImportIdToFindRecord=You can find all imported records in your database by filtering on field import_key='%s'. +NbOfLinesOK=Number of lines with no errors and no warnings: %s. +NbOfLinesImported=Number of lines successfully imported: %s. +DataComeFromNoWhere=Value to insert comes from nowhere in source file. +DataComeFromFileFieldNb=Value to insert comes from field number %s in source file. +DataComeFromIdFoundFromRef=Value that comes from field number %s of source file will be used to find id of parent object to use (So the objet %s that has the ref. from source file must exists into Dolibarr). +DataComeFromIdFoundFromCodeId=Code that comes from field number %s of source file will be used to find id of parent object to use (So the code from source file must exists into dictionary %s). Note that if you know id, you can also use it into source file instead of code. Import should work in both cases. +DataIsInsertedInto=Data coming from source file will be inserted into the following field: +DataIDSourceIsInsertedInto=The id of parent object found using the data in source file, will be inserted into the following field: +DataCodeIDSourceIsInsertedInto=The id of parent line found from code, will be inserted into following field: +SourceRequired=Data value is mandatory +SourceExample=Example of possible data value +ExampleAnyRefFoundIntoElement=Any ref found for element %s +ExampleAnyCodeOrIdFoundIntoDictionary=Any code (or id) found into dictionary %s +CSVFormatDesc=Comma Separated Value file format (.csv).
This is a text file format where fields are separated by separator [ %s ]. If separator is found inside a field content, field is rounded by round character [ %s ]. Escape character to escape round character is [ %s ]. +Excel95FormatDesc=Excel file format (.xls)
This is native Excel 95 format (BIFF5). +Excel2007FormatDesc=Excel file format (.xlsx)
This is native Excel 2007 format (SpreadsheetML). +TsvFormatDesc=Tab Separated Value file format (.tsv)
This is a text file format where fields are separated by a tabulator [tab]. +ExportFieldAutomaticallyAdded=Field %s was automatically added. It will avoid you to have similar lines to be treated as duplicate records (with this field added, all lines will own their own id and will differ). +CsvOptions=Csv Options +Separator=Separator +Enclosure=Enclosure +SuppliersProducts=Suppliers Products +BankCode=Bank code +DeskCode=Desk code +BankAccountNumber=Account number +BankAccountNumberKey=Key +SpecialCode=Special code +ExportStringFilter=%% allows replacing one or more characters in the text +ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day
YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days
> YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days
< YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days +ExportNumericFilter='NNNNN' filters by one value
'NNNNN+NNNNN' filters over a range of values
'>NNNNN' filters by lower values
'>NNNNN' filters by higher values +## filters +SelectFilterFields=If you want to filter on some values, just input values here. +FilterableFields=Champs Filtrables +FilteredFields=Filtered fields +FilteredFieldsValues=Value for filter diff --git a/htdocs/langs/bn_BD/externalsite.lang b/htdocs/langs/bn_BD/externalsite.lang new file mode 100644 index 00000000000..da4853df0df --- /dev/null +++ b/htdocs/langs/bn_BD/externalsite.lang @@ -0,0 +1,5 @@ +# Dolibarr language file - Source file is en_US - externalsite +ExternalSiteSetup=Setup link to external website +ExternalSiteURL=External Site URL +ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. +ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/bn_BD/ftp.lang b/htdocs/langs/bn_BD/ftp.lang new file mode 100644 index 00000000000..9984ce689ee --- /dev/null +++ b/htdocs/langs/bn_BD/ftp.lang @@ -0,0 +1,12 @@ +# Dolibarr language file - Source file is en_US - ftp +FTPClientSetup=FTP Client module setup +NewFTPClient=New FTP connection setup +FTPArea=FTP Area +FTPAreaDesc=This screen show you content of a FTP server view +SetupOfFTPClientModuleNotComplete=Setup of FTP client module seems to be not complete +FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions +FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) +FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password +FTPFailedToRemoveFile=Failed to remove file %s. +FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that directory is empty). +FTPPassiveMode=Passive mode diff --git a/htdocs/langs/bn_BD/help.lang b/htdocs/langs/bn_BD/help.lang new file mode 100644 index 00000000000..1bbd6e94f03 --- /dev/null +++ b/htdocs/langs/bn_BD/help.lang @@ -0,0 +1,28 @@ +# Dolibarr language file - Source file is en_US - help +CommunitySupport=Forum/Wiki support +EMailSupport=Emails support +RemoteControlSupport=Online real time / remote support +OtherSupport=Other support +ToSeeListOfAvailableRessources=To contact/see available resources: +ClickHere=Click here +HelpCenter=Help center +DolibarrHelpCenter=Dolibarr help and support center +ToGoBackToDolibarr=Otherwise, click here to use Dolibarr +TypeOfSupport=Source of support +TypeSupportCommunauty=Community (free) +TypeSupportCommercial=Commercial +TypeOfHelp=Type +NeedHelpCenter=Need help or support ? +Efficiency=Efficiency +TypeHelpOnly=Help only +TypeHelpDev=Help+Development +TypeHelpDevForm=Help+Development+Formation +ToGetHelpGoOnSparkAngels1=Some companies can provide a fast (sometime immediate) and more efficient online support by taking control of your computer. Such helpers can be found on %s web site: +ToGetHelpGoOnSparkAngels3=You can also go to the list of all available coaches for Dolibarr, for this click on button +ToGetHelpGoOnSparkAngels2=Sometimes, there is no company available at the moment you make your search, so think to change the filter to look for "all availability". You will be able to send more requests. +BackToHelpCenter=Otherwise, click here to go back to help center home page. +LinkToGoldMember=You can call one of the coach preselected by Dolibarr for your language (%s) by clicking his Widget (status and maximum price are automatically updated): +PossibleLanguages=Supported languages +MakeADonation=Help Dolibarr project, make a donation +SubscribeToFoundation=Help Dolibarr project, subscribe to the foundation +SeeOfficalSupport=For official Dolibarr support in your language:
%s diff --git a/htdocs/langs/bn_BD/holiday.lang b/htdocs/langs/bn_BD/holiday.lang new file mode 100644 index 00000000000..f5b87fefb08 --- /dev/null +++ b/htdocs/langs/bn_BD/holiday.lang @@ -0,0 +1,148 @@ +# Dolibarr language file - Source file is en_US - holiday +HRM=HRM +Holidays=Leaves +CPTitreMenu=Leaves +MenuReportMonth=Monthly statement +MenuAddCP=Make a leave request +NotActiveModCP=You must enable the module Leaves to view this page. +NotConfigModCP=You must configure the module Leaves to view this page. To do this, click here . +NoCPforUser=You don't have any available day. +AddCP=Make a leave request +Employe=Employee +DateDebCP=Start date +DateFinCP=End date +DateCreateCP=Creation date +DraftCP=Draft +ToReviewCP=Awaiting approval +ApprovedCP=Approved +CancelCP=Canceled +RefuseCP=Refused +ValidatorCP=Approbator +ListeCP=List of leaves +ReviewedByCP=Will be reviewed by +DescCP=Description +SendRequestCP=Create leave request +DelayToRequestCP=Leave requests must be made at least %s day(s) before them. +MenuConfCP=Edit balance of leaves +UpdateAllCP=Update the leaves +SoldeCPUser=Leaves balance is %s days. +ErrorEndDateCP=You must select an end date greater than the start date. +ErrorSQLCreateCP=An SQL error occurred during the creation: +ErrorIDFicheCP=An error has occurred, the leave request does not exist. +ReturnCP=Return to previous page +ErrorUserViewCP=You are not authorized to read this leave request. +InfosCP=Information of the leave request +InfosWorkflowCP=Information Workflow +RequestByCP=Requested by +TitreRequestCP=Leave request +NbUseDaysCP=Number of days of vacation consumed +EditCP=Edit +DeleteCP=Delete +ActionValidCP=Validate +ActionRefuseCP=Refuse +ActionCancelCP=Cancel +StatutCP=Status +SendToValidationCP=Send to validation +TitleDeleteCP=Delete the leave request +ConfirmDeleteCP=Confirm the deletion of this leave request? +ErrorCantDeleteCP=Error you don't have the right to delete this leave request. +CantCreateCP=You don't have the right to make leave requests. +InvalidValidatorCP=You must choose an approbator to your leave request. +CantUpdate=You cannot update this leave request. +NoDateDebut=You must select a start date. +NoDateFin=You must select an end date. +ErrorDureeCP=Your leave request does not contain working day. +TitleValidCP=Approve the leave request +ConfirmValidCP=Are you sure you want to approve the leave request? +DateValidCP=Date approved +TitleToValidCP=Send leave request +ConfirmToValidCP=Are you sure you want to send the leave request? +TitleRefuseCP=Refuse the leave request +ConfirmRefuseCP=Are you sure you want to refuse the leave request? +NoMotifRefuseCP=You must choose a reason for refusing the request. +TitleCancelCP=Cancel the leave request +ConfirmCancelCP=Are you sure you want to cancel the leave request? +DetailRefusCP=Reason for refusal +DateRefusCP=Date of refusal +DateCancelCP=Date of cancellation +DefineEventUserCP=Assign an exceptional leave for a user +addEventToUserCP=Assign leave +MotifCP=Reason +UserCP=User +ErrorAddEventToUserCP=An error occurred while adding the exceptional leave. +AddEventToUserOkCP=The addition of the exceptional leave has been completed. +MenuLogCP=View logs of leave requests +LogCP=Log of updates of available vacation days +ActionByCP=Performed by +UserUpdateCP=For the user +PrevSoldeCP=Previous Balance +NewSoldeCP=New Balance +alreadyCPexist=A leave request has already been done on this period. +UserName=Name +Employee=Employee +FirstDayOfHoliday=First day of vacation +LastDayOfHoliday=Last day of vacation +HolidaysMonthlyUpdate=Monthly update +ManualUpdate=Manual update +HolidaysCancelation=Leave request cancelation + +## Configuration du Module ## +ConfCP=Configuration of leave request module +DescOptionCP=Description of the option +ValueOptionCP=Value +GroupToValidateCP=Group with the ability to approve leave requests +ConfirmConfigCP=Validate the configuration +LastUpdateCP=Last automatic update of leaves allocation +UpdateConfCPOK=Updated successfully. +ErrorUpdateConfCP=An error occurred during the update, please try again. +AddCPforUsers=Please add the balance of leaves allocation of users by clicking here. +DelayForSubmitCP=Deadline to make a leave requests +AlertapprobatortorDelayCP=Prevent the approbator if the leave request does not match the deadline +AlertValidatorDelayCP=Préevent the approbator if the leave request exceed delay +AlertValidorSoldeCP=Prevent the approbator if the leave request exceed the balance +nbUserCP=Number of users supported in the module Leaves +nbHolidayDeductedCP=Number of leave days to be deducted per day of vacation taken +nbHolidayEveryMonthCP=Number of leave days added every month +Module27130Name= Management of leave requests +Module27130Desc= Management of leave requests +TitleOptionMainCP=Main settings of leave request +TitleOptionEventCP=Settings of leave requets for events +ValidEventCP=Validate +UpdateEventCP=Update events +CreateEventCP=Create +NameEventCP=Event name +OkCreateEventCP=The addition of the event went well. +ErrorCreateEventCP=Error creating the event. +UpdateEventOkCP=The update of the event went well. +ErrorUpdateEventCP=Error while updating the event. +DeleteEventCP=Delete Event +DeleteEventOkCP=The event has been deleted. +ErrorDeleteEventCP=Error while deleting the event. +TitleDeleteEventCP=Delete a exceptional leave +TitleCreateEventCP=Create a exceptional leave +TitleUpdateEventCP=Edit or delete a exceptional leave +DeleteEventOptionCP=Delete +UpdateEventOptionCP=Update +ErrorMailNotSend=An error occurred while sending email: +NoCPforMonth=No leave this month. +nbJours=Number days +TitleAdminCP=Configuration of Leaves +#Messages +Hello=Hello +HolidaysToValidate=Validate leave requests +HolidaysToValidateBody=Below is a leave request to validate +HolidaysToValidateDelay=This leave request will take place within a period of less than %s days. +HolidaysToValidateAlertSolde=The user who made this leave reques do not have enough available days. +HolidaysValidated=Validated leave requests +HolidaysValidatedBody=Your leave request for %s to %s has been validated. +HolidaysRefused=Request denied +HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason : +HolidaysCanceled=Canceled leaved request +HolidaysCanceledBody=Your leave request for %s to %s has been canceled. +Permission20000=Read you own leave requests +Permission20001=Create/modify your leave requests +Permission20002=Create/modify leave requests for everybody +Permission20003=Delete leave requests +Permission20004=Setup users available vacation days +Permission20005=Review log of modified leave requests +Permission20006=Read leaves monthly report diff --git a/htdocs/langs/bn_BD/incoterm.lang b/htdocs/langs/bn_BD/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/bn_BD/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/bn_BD/install.lang b/htdocs/langs/bn_BD/install.lang new file mode 100644 index 00000000000..dcd8df6e7db --- /dev/null +++ b/htdocs/langs/bn_BD/install.lang @@ -0,0 +1,214 @@ +# Dolibarr language file - Source file is en_US - install +InstallEasy=Just follow the instructions step by step. +MiscellaneousChecks=Prerequisites check +DolibarrWelcome=Welcome to Dolibarr +ConfFileExists=Configuration file %s exists. +ConfFileDoesNotExists=Configuration file %s does not exist ! +ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file %s does not exist and could not be created ! +ConfFileCouldBeCreated=Configuration file %s could be created. +ConfFileIsNotWritable=Configuration file %s is not writable. Check permissions. For first install, your web server must be granted to be able to write into this file during configuration process ("chmod 666" for example on a Unix like OS). +ConfFileIsWritable=Configuration file %s is writable. +ConfFileReload=Reload all information from configuration file. +PHPSupportSessions=This PHP supports sessions. +PHPSupportPOSTGETOk=This PHP supports variables POST and GET. +PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check your parameter variables_order in php.ini. +PHPSupportGD=This PHP support GD graphical functions. +PHPSupportUTF8=This PHP support UTF8 functions. +PHPMemoryOK=Your PHP max session memory is set to %s. This should be enough. +PHPMemoryTooLow=Your PHP max session memory is set to %s bytes. This should be too low. Change your php.ini to set memory_limit parameter to at least %s bytes. +Recheck=Click here for a more significative test +ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to make Dolibarr working. Check your PHP setup. +ErrorPHPDoesNotSupportGD=Your PHP installation does not support graphical function GD. No graph will be available. +ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr can't work correctly. Solve this before installing Dolibarr. +ErrorDirDoesNotExists=Directory %s does not exist. +ErrorGoBackAndCorrectParameters=Go backward and correct wrong parameters. +ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'. +ErrorFailedToCreateDatabase=Failed to create database '%s'. +ErrorFailedToConnectToDatabase=Failed to connect to database '%s'. +ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. +ErrorPHPVersionTooLow=PHP version too old. Version %s is required. +WarningPHPVersionTooLow=PHP version too old. Version %s or more is expected. This version should allow install but is not supported. +ErrorConnectedButDatabaseNotFound=Connection to server successfull but database '%s' not found. +ErrorDatabaseAlreadyExists=Database '%s' already exists. +IfDatabaseNotExistsGoBackAndUncheckCreate=If database does not exists, go back and check option "Create database". +IfDatabaseExistsGoBackAndCheckCreate=If database already exists, go back and uncheck "Create database" option. +WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded. +PHPVersion=PHP Version +YouCanContinue=You can continue... +PleaseBePatient=Please be patient... +License=Using license +ConfigurationFile=Configuration file +WebPagesDirectory=Directory where web pages are stored +DocumentsDirectory=Directory to store uploaded and generated documents +URLRoot=URL Root +ForceHttps=Force secure connections (https) +CheckToForceHttps=Check this option to force secure connections (https).
This requires that the web server is configured with an SSL certificate. +DolibarrDatabase=Dolibarr Database +DatabaseChoice=Database choice +DatabaseType=Database type +DriverType=Driver type +Server=Server +ServerAddressDescription=Name or ip address for database server, usually 'localhost' when database server is hosted on same server than web server +ServerPortDescription=Database server port. Keep empty if unknown. +DatabaseServer=Database server +DatabaseName=Database name +DatabasePrefix=Database prefix table +Login=Login +AdminLogin=Login for Dolibarr database owner. +Password=Password +PasswordAgain=Retype password a second time +AdminPassword=Password for Dolibarr database owner. +CreateDatabase=Create database +CreateUser=Create owner +DatabaseSuperUserAccess=Database server - Superuser access +CheckToCreateDatabase=Check box if database does not exist and must be created.
In this case, you must fill the login/password for superuser account at the bottom of this page. +CheckToCreateUser=Check box if database owner does not exist and must be created.
In this case, you must choose its login and password and also fill the login/password for the superuser account at the bottom of this page. If this box is unchecked, owner database and its passwords must exists. +Experimental=(experimental) +DatabaseRootLoginDescription=Login of the user allowed to create new databases or new users, mandatory if your database or its owner does not already exists. +KeepEmptyIfNoPassword=Leave empty if user has no password (avoid this) +SaveConfigurationFile=Save values +ConfigurationSaving=Saving configuration file +ServerConnection=Server connection +DatabaseConnection=Database connection +DatabaseCreation=Database creation +UserCreation=User creation +CreateDatabaseObjects=Database objects creation +ReferenceDataLoading=Reference data loading +TablesAndPrimaryKeysCreation=Tables and Primary keys creation +CreateTableAndPrimaryKey=Create table %s +CreateOtherKeysForTable=Create foreign keys and indexes for table %s +OtherKeysCreation=Foreign keys and indexes creation +FunctionsCreation=Functions creation +AdminAccountCreation=Administrator login creation +PleaseTypePassword=Please type a password, empty passwords are not allowed ! +PleaseTypeALogin=Please type a login ! +PasswordsMismatch=Passwords differs, please try again ! +SetupEnd=End of setup +SystemIsInstalled=This installation is complete. +SystemIsUpgraded=Dolibarr has been upgraded successfully. +YouNeedToPersonalizeSetup=You need to configure Dolibarr to suit your needs (appearance, features, ...). To do this, please follow the link below: +AdminLoginCreatedSuccessfuly=Dolibarr administrator login '%s' created successfuly. +GoToDolibarr=Go to Dolibarr +GoToSetupArea=Go to Dolibarr (setup area) +MigrationNotFinished=Version of your database is not completely up to date, so you'll have to run the upgrade process again. +GoToUpgradePage=Go to upgrade page again +Examples=Examples +WithNoSlashAtTheEnd=Without the slash "/" at the end +DirectoryRecommendation=It is recommanded to use a directory outside of your directory of your web pages. +LoginAlreadyExists=Already exists +DolibarrAdminLogin=Dolibarr admin login +AdminLoginAlreadyExists=Dolibarr administrator account '%s' already exists. Go back, if you want to create another one. +WarningRemoveInstallDir=Warning, for security reasons, once the install or upgrade is complete, to avoid using install tools again, you should add a file called install.lock into Dolibarr document directory, in order to avoid malicious use of it. +ThisPHPDoesNotSupportTypeBase=This PHP system does not support any interface to access database type %s +FunctionNotAvailableInThisPHP=Not available on this PHP +MigrateScript=Migration script +ChoosedMigrateScript=Choose migration script +DataMigration=Data migration +DatabaseMigration=Structure database migration +ProcessMigrateScript=Script processing +ChooseYourSetupMode=Choose your setup mode and click "Start"... +FreshInstall=Fresh install +FreshInstallDesc=Use this mode if this is your first install. If not, this mode can repair a incomplete previous install, but if you want to upgrade your version, choose "Upgrade" mode. +Upgrade=Upgrade +UpgradeDesc=Use this mode if you have replaced old Dolibarr files with files from a newer version. This will upgrade your database and data. +Start=Start +InstallNotAllowed=Setup not allowed by conf.php permissions +NotAvailable=Not available +YouMustCreateWithPermission=You must create file %s and set write permissions on it for the web server during install process. +CorrectProblemAndReloadPage=Please fix the problem and press F5 to reload page. +AlreadyDone=Already migrated +DatabaseVersion=Database version +ServerVersion=Database server version +YouMustCreateItAndAllowServerToWrite=You must create this directory and allow for the web server to write into it. +CharsetChoice=Character set choice +CharacterSetClient=Character set used for generated HTML web pages +CharacterSetClientComment=Choose character set for web display.
Default proposed character set is the one of your database. +DBSortingCollation=Character sorting order +DBSortingCollationComment=Choose page code that defines character's sorting order used by database. This parameter is also called 'collation' by some databases.
This parameter can't be defined if database already exists. +CharacterSetDatabase=Character set for database +CharacterSetDatabaseComment=Choose character set wanted for database creation.
This parameter can't be defined if database already exists. +YouAskDatabaseCreationSoDolibarrNeedToConnect=You ask to create database %s, but for this, Dolibarr need to connect to server %s with super user %s permissions. +YouAskLoginCreationSoDolibarrNeedToConnect=You ask to create database login %s, but for this, Dolibarr need to connect to server %s with super user %s permissions. +BecauseConnectionFailedParametersMayBeWrong=As connection failed, host or super user parameters must be wrong. +OrphelinsPaymentsDetectedByMethod=Orphans payment detected by method %s +RemoveItManuallyAndPressF5ToContinue=Remove it manually and press F5 to continue. +KeepDefaultValuesWamp=You use the Dolibarr setup wizard from DoliWamp, so values proposed here are already optimized. Change them only if you know what you do. +KeepDefaultValuesDeb=You use the Dolibarr setup wizard from a Linux package (Ubuntu, Debian, Fedora...), so values proposed here are already optimized. Only the password of the database owner to create must be completed. Change other parameters only if you know what you do. +KeepDefaultValuesMamp=You use the Dolibarr setup wizard from DoliMamp, so values proposed here are already optimized. Change them only if you know what you do. +KeepDefaultValuesProxmox=You use the Dolibarr setup wizard from a Proxmox virtual appliance, so values proposed here are already optimized. Change them only if you know what you do. +FieldRenamed=Field renamed +IfLoginDoesNotExistsCheckCreateUser=If login does not exists yet, you must check option "Create user" +ErrorConnection=Server "%s", database name "%s", login "%s", or database password may be wrong or PHP client version may be too old compared to database version. +InstallChoiceRecommanded=Recommended choice to install version %s from your current version %s +InstallChoiceSuggested=Install choice suggested by installer. +MigrateIsDoneStepByStep=The targeted version (%s) has a gap of several versions, so install wizard will come back to suggest next migration once this one will be finished. +CheckThatDatabasenameIsCorrect=Check that database name "%s" is correct. +IfAlreadyExistsCheckOption=If this name is correct and that database does not exist yet, you must check option "Create database". +OpenBaseDir=PHP openbasedir parameter +YouAskToCreateDatabaseSoRootRequired=You checked the box "Create database". For this, you need to provide login/password of superuser (bottom of form). +YouAskToCreateDatabaseUserSoRootRequired=You checked the box "Create database owner". For this, you need to provide login/password of superuser (bottom of form). +NextStepMightLastALongTime=Current step may last several minutes. Please wait until the next screen is shown completely before continuing. +MigrationCustomerOrderShipping=Migrate shipping for customer orders storage +MigrationShippingDelivery=Upgrade storage of shipping +MigrationShippingDelivery2=Upgrade storage of shipping 2 +MigrationFinished=Migration finished +LastStepDesc=Last step: Define here login and password you plan to use to connect to software. Do not loose this as it is the account to administer all others. +ActivateModule=Activate module %s +ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) +WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) + +######### +# upgrade +MigrationFixData=Fix for denormalized data +MigrationOrder=Data migration for customer's orders +MigrationSupplierOrder=Data migration for supplier's orders +MigrationProposal=Data migration for commercial proposals +MigrationInvoice=Data migration for customer's invoices +MigrationContract=Data migration for contracts +MigrationSuccessfullUpdate=Upgrade successful +MigrationUpdateFailed=Failed upgrade process +MigrationRelationshipTables=Data migration for relationship tables (%s) +MigrationPaymentsUpdate=Payment data correction +MigrationPaymentsNumberToUpdate=%s payment(s) to update +MigrationProcessPaymentUpdate=Update payment(s) %s +MigrationPaymentsNothingToUpdate=No more things to do +MigrationPaymentsNothingUpdatable=No more payments that can be corrected +MigrationContractsUpdate=Contract data correction +MigrationContractsNumberToUpdate=%s contract(s) to update +MigrationContractsLineCreation=Create contract line for contract ref %s +MigrationContractsNothingToUpdate=No more things to do +MigrationContractsFieldDontExist=Field fk_facture does not exists anymore. Nothing to do. +MigrationContractsEmptyDatesUpdate=Contract empty date correction +MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfuly +MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct +MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct +MigrationContractsInvalidDatesUpdate=Bad value date contract correction +MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting service date min=%s) +MigrationContractsInvalidDatesNumber=%s contracts modified +MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct +MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction +MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done succesfuly +MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct +MigrationReopeningContracts=Open contract closed by error +MigrationReopenThisContract=Reopen contract %s +MigrationReopenedContractsNumber=%s contracts modified +MigrationReopeningContractsNothingToUpdate=No closed contract to open +MigrationBankTransfertsUpdate=Update links between bank transaction and a bank transfer +MigrationBankTransfertsNothingToUpdate=All links are up to date +MigrationShipmentOrderMatching=Sendings receipt update +MigrationDeliveryOrderMatching=Delivery receipt update +MigrationDeliveryDetail=Delivery update +MigrationStockDetail=Update stock value of products +MigrationMenusDetail=Update dynamic menus tables +MigrationDeliveryAddress=Update delivery address in shipments +MigrationProjectTaskActors=Data migration for llx_projet_task_actors table +MigrationProjectUserResp=Data migration field fk_user_resp of llx_projet to llx_element_contact +MigrationProjectTaskTime=Update time spent in seconds +MigrationActioncommElement=Update data on actions +MigrationPaymentMode=Data migration for payment mode +MigrationCategorieAssociation=Migration of categories +MigrationEvents=Migration of events to add event owner into assignement table + +ShowNotAvailableOptions=Show not available options +HideNotAvailableOptions=Hide not available options diff --git a/htdocs/langs/bn_BD/interventions.lang b/htdocs/langs/bn_BD/interventions.lang new file mode 100644 index 00000000000..c79da05364e --- /dev/null +++ b/htdocs/langs/bn_BD/interventions.lang @@ -0,0 +1,53 @@ +# Dolibarr language file - Source file is en_US - interventions +Intervention=Intervention +Interventions=Interventions +InterventionCard=Intervention card +NewIntervention=New intervention +AddIntervention=Create intervention +ListOfInterventions=List of interventions +EditIntervention=Edit intervention +ActionsOnFicheInter=Actions on intervention +LastInterventions=Last %s interventions +AllInterventions=All interventions +CreateDraftIntervention=Create draft +CustomerDoesNotHavePrefix=Customer does not have a prefix +InterventionContact=Intervention contact +DeleteIntervention=Delete intervention +ValidateIntervention=Validate intervention +ModifyIntervention=Modify intervention +DeleteInterventionLine=Delete intervention line +ConfirmDeleteIntervention=Are you sure you want to delete this intervention ? +ConfirmValidateIntervention=Are you sure you want to validate this intervention under name %s ? +ConfirmModifyIntervention=Are you sure you want to modify this intervention ? +ConfirmDeleteInterventionLine=Are you sure you want to delete this intervention line ? +NameAndSignatureOfInternalContact=Name and signature of intervening : +NameAndSignatureOfExternalContact=Name and signature of customer : +DocumentModelStandard=Standard document model for interventions +InterventionCardsAndInterventionLines=Interventions and lines of interventions +InterventionClassifyBilled=Classify "Billed" +InterventionClassifyUnBilled=Classify "Unbilled" +StatusInterInvoiced=Billed +RelatedInterventions=Related interventions +ShowIntervention=Show intervention +SendInterventionRef=Submission of intervention %s +SendInterventionByMail=Send intervention by Email +InterventionCreatedInDolibarr=Intervention %s created +InterventionValidatedInDolibarr=Intervention %s validated +InterventionModifiedInDolibarr=Intervention %s modified +InterventionClassifiedBilledInDolibarr=Intervention %s set as billed +InterventionClassifiedUnbilledInDolibarr=Intervention %s set as unbilled +InterventionSentByEMail=Intervention %s sent by EMail +InterventionDeletedInDolibarr=Intervention %s deleted +SearchAnIntervention=Search an intervention +##### Types de contacts ##### +TypeContact_fichinter_internal_INTERREPFOLL=Representative following-up intervention +TypeContact_fichinter_internal_INTERVENING=Intervening +TypeContact_fichinter_external_BILLING=Billing customer contact +TypeContact_fichinter_external_CUSTOMER=Following-up customer contact +# Modele numérotation +ArcticNumRefModelDesc1=Generic number model +ArcticNumRefModelError=Failed to activate +PacificNumRefModelDesc1=Return numero with format %syymm-nnnn where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 +PacificNumRefModelError=An intervention card starting with $syymm already exists and is not compatible with this model of sequence. Remove it or rename it to activate this module. +PrintProductsOnFichinter=Print products on intervention card +PrintProductsOnFichinterDetails=forinterventions generated from orders diff --git a/htdocs/langs/bn_BD/languages.lang b/htdocs/langs/bn_BD/languages.lang new file mode 100644 index 00000000000..d20aab00146 --- /dev/null +++ b/htdocs/langs/bn_BD/languages.lang @@ -0,0 +1,72 @@ +# Dolibarr language file - Source file is en_US - languages + +Language_ar_AR=Arabic +Language_ar_SA=Arabic +Language_bg_BG=Bulgarian +Language_bs_BA=Bosnian +Language_ca_ES=Catalan +Language_cs_CZ=Czech +Language_da_DA=Danish +Language_da_DK=Danish +Language_de_DE=German +Language_de_AT=German (Austria) +Language_de_CH=German (Switzerland) +Language_el_GR=Greek +Language_en_AU=English (Australia) +Language_en_CA=English (Canada) +Language_en_GB=English (United Kingdom) +Language_en_IN=English (India) +Language_en_NZ=English (New Zealand) +Language_en_SA=English (Saudi Arabia) +Language_en_US=English (United States) +Language_en_ZA=English (South Africa) +Language_es_ES=Spanish +Language_es_DO=Spanish (Dominican Republic) +Language_es_AR=Spanish (Argentina) +Language_es_CL=Spanish (Chile) +Language_es_HN=Spanish (Honduras) +Language_es_MX=Spanish (Mexico) +Language_es_PY=Spanish (Paraguay) +Language_es_PE=Spanish (Peru) +Language_es_PR=Spanish (Puerto Rico) +Language_et_EE=Estonian +Language_eu_ES=Basque +Language_fa_IR=Persian +Language_fi_FI=Fins +Language_fr_BE=French (Belgium) +Language_fr_CA=French (Canada) +Language_fr_CH=French (Switzerland) +Language_fr_FR=French +Language_fr_NC=French (New Caledonia) +Language_he_IL=Hebrew +Language_hr_HR=Croatian +Language_hu_HU=Hungarian +Language_id_ID=Indonesian +Language_is_IS=Icelandic +Language_it_IT=Italian +Language_ja_JP=Japanese +Language_ko_KR=Korean +Language_lt_LT=Lithuanian +Language_lv_LV=Latvian +Language_mk_MK=Macedonian +Language_nb_NO=Norwegian (Bokmål) +Language_nl_BE=Dutch (Belgium) +Language_nl_NL=Dutch (Netherlands) +Language_pl_PL=Polish +Language_pt_BR=Portuguese (Brazil) +Language_pt_PT=Portuguese +Language_ro_RO=Romanian +Language_ru_RU=Russian +Language_ru_UA=Russian (Ukraine) +Language_tr_TR=Turkish +Language_sl_SI=Slovenian +Language_sv_SV=Swedish +Language_sv_SE=Swedish +Language_sq_AL=Albanian +Language_sk_SK=Slovakian +Language_th_TH=Thai +Language_uk_UA=Ukrainian +Language_uz_UZ=Uzbek +Language_vi_VN=Vietnamese +Language_zh_CN=Chinese +Language_zh_TW=Chinese (Traditional) diff --git a/htdocs/langs/bn_BD/ldap.lang b/htdocs/langs/bn_BD/ldap.lang new file mode 100644 index 00000000000..02e457446a6 --- /dev/null +++ b/htdocs/langs/bn_BD/ldap.lang @@ -0,0 +1,29 @@ +# Dolibarr language file - Source file is en_US - ldap +DomainPassword=Password for domain +YouMustChangePassNextLogon=Password for user %s on the domain %s must be changed. +UserMustChangePassNextLogon=User must change password on the domain %s +LdapUacf_NORMAL_ACCOUNT=User account +LdapUacf_DONT_EXPIRE_PASSWORD=Password never expires +LdapUacf_ACCOUNTDISABLE=Account is disabled in the domain %s +LDAPInformationsForThisContact=Information in LDAP database for this contact +LDAPInformationsForThisUser=Information in LDAP database for this user +LDAPInformationsForThisGroup=Information in LDAP database for this group +LDAPInformationsForThisMember=Information in LDAP database for this member +LDAPAttribute=LDAP attribute +LDAPAttributes=LDAP attributes +LDAPCard=LDAP card +LDAPRecordNotFound=Record not found in LDAP database +LDAPUsers=Users in LDAP database +LDAPGroups=Groups in LDAP database +LDAPFieldStatus=Status +LDAPFieldFirstSubscriptionDate=First subscription date +LDAPFieldFirstSubscriptionAmount=First subscription amount +LDAPFieldLastSubscriptionDate=Last subscription date +LDAPFieldLastSubscriptionAmount=Last subscription amount +SynchronizeDolibarr2Ldap=Synchronize user (Dolibarr -> LDAP) +UserSynchronized=User synchronized +GroupSynchronized=Group synchronized +MemberSynchronized=Member synchronized +ContactSynchronized=Contact synchronized +ForceSynchronize=Force synchronizing Dolibarr -> LDAP +ErrorFailedToReadLDAP=Failed to read LDAP database. Check LDAP module setup and database accessibility. diff --git a/htdocs/langs/bn_BD/link.lang b/htdocs/langs/bn_BD/link.lang new file mode 100644 index 00000000000..8b1efb75ef3 --- /dev/null +++ b/htdocs/langs/bn_BD/link.lang @@ -0,0 +1,8 @@ +LinkANewFile=Link a new file/document +LinkedFiles=Linked files and documents +NoLinkFound=No registered links +LinkComplete=The file has been linked successfully +ErrorFileNotLinked=The file could not be linked +LinkRemoved=The link %s has been removed +ErrorFailedToDeleteLink= Failed to remove link '%s' +ErrorFailedToUpdateLink= Failed to update link '%s' diff --git a/htdocs/langs/bn_BD/mailmanspip.lang b/htdocs/langs/bn_BD/mailmanspip.lang new file mode 100644 index 00000000000..c85b3d60db2 --- /dev/null +++ b/htdocs/langs/bn_BD/mailmanspip.lang @@ -0,0 +1,27 @@ +# Dolibarr language file - Source file is en_US - mailmanspip +MailmanSpipSetup=Mailman and SPIP module Setup +MailmanTitle=Mailman mailing list system +TestSubscribe=To test subscription to Mailman lists +TestUnSubscribe=To test unsubscribe from Mailman lists +MailmanCreationSuccess=Subscription test was executed succesfully +MailmanDeletionSuccess=Unsubscription test was executed succesfully +SynchroMailManEnabled=A Mailman update will be performed +SynchroSpipEnabled=A Spip update will be performed +DescADHERENT_MAILMAN_ADMINPW=Mailman administrator password +DescADHERENT_MAILMAN_URL=URL for Mailman subscriptions +DescADHERENT_MAILMAN_UNSUB_URL=URL for Mailman unsubscriptions +DescADHERENT_MAILMAN_LISTS=List(s) for automatic inscription of new members (separated by a comma) +SPIPTitle=SPIP Content Management System +DescADHERENT_SPIP_SERVEUR=SPIP Server +DescADHERENT_SPIP_DB=SPIP database name +DescADHERENT_SPIP_USER=SPIP database login +DescADHERENT_SPIP_PASS=SPIP database password +AddIntoSpip=Add into SPIP +AddIntoSpipConfirmation=Are you sure you want to add this member into SPIP? +AddIntoSpipError=Failed to add the user in SPIP +DeleteIntoSpip=Remove from SPIP +DeleteIntoSpipConfirmation=Are you sure you want to remove this member from SPIP? +DeleteIntoSpipError=Failed to suppress the user from SPIP +SPIPConnectionFailed=Failed to connect to SPIP +SuccessToAddToMailmanList=Add of %s to mailman list %s or SPIP database done +SuccessToRemoveToMailmanList=Removal of %s from mailman list %s or SPIP database done diff --git a/htdocs/langs/bn_BD/mails.lang b/htdocs/langs/bn_BD/mails.lang new file mode 100644 index 00000000000..7a211198822 --- /dev/null +++ b/htdocs/langs/bn_BD/mails.lang @@ -0,0 +1,141 @@ +# Dolibarr language file - Source file is en_US - mails +Mailing=EMailing +EMailing=EMailing +Mailings=EMailings +EMailings=EMailings +AllEMailings=All eMailings +MailCard=EMailing card +MailTargets=Targets +MailRecipients=Recipients +MailRecipient=Recipient +MailTitle=Description +MailFrom=Sender +MailErrorsTo=Errors to +MailReply=Reply to +MailTo=Receiver(s) +MailCC=Copy to +MailCCC=Cached copy to +MailTopic=EMail topic +MailText=Message +MailFile=Attached files +MailMessage=EMail body +ShowEMailing=Show emailing +ListOfEMailings=List of emailings +NewMailing=New emailing +EditMailing=Edit emailing +ResetMailing=Resend emailing +DeleteMailing=Delete emailing +DeleteAMailing=Delete an emailing +PreviewMailing=Preview emailing +PrepareMailing=Prepare emailing +CreateMailing=Create emailing +MailingDesc=This page allows you to send emailings to a group of people. +MailingResult=Sending emails result +TestMailing=Test email +ValidMailing=Valid emailing +ApproveMailing=Approve emailing +MailingStatusDraft=Draft +MailingStatusValidated=Validated +MailingStatusApproved=Approved +MailingStatusSent=Sent +MailingStatusSentPartialy=Sent partialy +MailingStatusSentCompletely=Sent completely +MailingStatusError=Error +MailingStatusNotSent=Not sent +MailSuccessfulySent=Email successfully sent (from %s to %s) +MailingSuccessfullyValidated=EMailing successfully validated +MailUnsubcribe=Unsubscribe +Unsuscribe=Unsubscribe +MailingStatusNotContact=Don't contact anymore +ErrorMailRecipientIsEmpty=Email recipient is empty +WarningNoEMailsAdded=No new Email to add to recipient's list. +ConfirmValidMailing=Are you sure you want to validate this emailing ? +ConfirmResetMailing=Warning, by reinitializing emailing %s, you allow to make a mass sending of this email another time. Are you sure you this is what you want to do ? +ConfirmDeleteMailing=Are you sure you want to delete this emailling ? +NbOfRecipients=Number of recipients +NbOfUniqueEMails=Nb of unique emails +NbOfEMails=Nb of EMails +TotalNbOfDistinctRecipients=Number of distinct recipients +NoTargetYet=No recipients defined yet (Go on tab 'Recipients') +AddRecipients=Add recipients +RemoveRecipient=Remove recipient +CommonSubstitutions=Common substitutions +YouCanAddYourOwnPredefindedListHere=To create your email selector module, see htdocs/core/modules/mailings/README. +EMailTestSubstitutionReplacedByGenericValues=When using test mode, substitutions variables are replaced by generic values +MailingAddFile=Attach this file +NoAttachedFiles=No attached files +BadEMail=Bad value for EMail +CloneEMailing=Clone Emailing +ConfirmCloneEMailing=Are you sure you want to clone this emailing ? +CloneContent=Clone message +CloneReceivers=Cloner recipients +DateLastSend=Date of last sending +DateSending=Date sending +SentTo=Sent to %s +MailingStatusRead=Read +CheckRead=Read Receipt +YourMailUnsubcribeOK=The email %s is correctly unsubcribe from mailing list +MailtoEMail=Hyper link to email +ActivateCheckRead=Allow to use the "Unsubcribe" link +ActivateCheckReadKey=Key use to encrypt URL use for "Read Receipt" and "Unsubcribe" feature +EMailSentToNRecipients=EMail sent to %s recipients. +XTargetsAdded=%s recipients added into target list +EachInvoiceWillBeAttachedToEmail=A document using default invoice document template will be created and attached to each email. +MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s) +SendRemind=Send reminder by EMails +RemindSent=%s reminder(s) sent +AllRecipientSelectedForRemind=All thirdparties selected and if an email is set (note that one mail per invoice will be sent) +NoRemindSent=No EMail reminder sent +ResultOfMassSending=Result of mass EMail reminders sending + +# Libelle des modules de liste de destinataires mailing +MailingModuleDescContactCompanies=Contacts/addresses of all third parties (customer, prospect, supplier, ...) +MailingModuleDescDolibarrUsers=Dolibarr users +MailingModuleDescFundationMembers=Foundation members with emails +MailingModuleDescEmailsFromFile=EMails from a text file (email;lastname;firstname;other) +MailingModuleDescEmailsFromUser=EMails from user input (email;lastname;firstname;other) +MailingModuleDescContactsCategories=Third parties (by category) +MailingModuleDescDolibarrContractsLinesExpired=Third parties with expired contract's lines +MailingModuleDescContactsByCompanyCategory=Contacts/addresses of third parties (by third parties category) +MailingModuleDescContactsByCategory=Contacts/addresses of third parties by category +MailingModuleDescMembersCategories=Foundation members (by categories) +MailingModuleDescContactsByFunction=Contacts/addresses of third parties (by position/function) +LineInFile=Line %s in file +RecipientSelectionModules=Defined requests for recipient's selection +MailSelectedRecipients=Selected recipients +MailingArea=EMailings area +LastMailings=Last %s emailings +TargetsStatistics=Targets statistics +NbOfCompaniesContacts=Unique contacts/addresses +MailNoChangePossible=Recipients for validated emailing can't be changed +SearchAMailing=Search mailing +SendMailing=Send emailing +SendMail=Send email +SentBy=Sent by +MailingNeedCommand=For security reason, sending an emailing is better when performed from command line. If you have one, ask your server administrator to launch the following command to send the emailing to all recipients: +MailingNeedCommand2=You can however send them online by adding parameter MAILING_LIMIT_SENDBYWEB with value of max number of emails you want to send by session. For this, go on Home - Setup - Other. +ConfirmSendingEmailing=If you can't or prefer sending them with your www browser, please confirm you are sure you want to send emailing now from your browser ? +LimitSendingEmailing=Note: Sending of emailings from web interface is done in several times for security and timeout reasons, %s recipients at a time for each sending session. +TargetsReset=Clear list +ToClearAllRecipientsClickHere=Click here to clear the recipient list for this emailing +ToAddRecipientsChooseHere=Add recipients by choosing from the lists +NbOfEMailingsReceived=Mass emailings received +NbOfEMailingsSend=Mass emailings sent +IdRecord=ID record +DeliveryReceipt=Delivery Receipt +YouCanUseCommaSeparatorForSeveralRecipients=You can use the comma separator to specify several recipients. +TagCheckMail=Track mail opening +TagUnsubscribe=Unsubscribe link +TagSignature=Signature sending user +TagMailtoEmail=Recipient EMail +# Module Notifications +Notifications=Notifications +NoNotificationsWillBeSent=No email notifications are planned for this event and company +ANotificationsWillBeSent=1 notification will be sent by email +SomeNotificationsWillBeSent=%s notifications will be sent by email +AddNewNotification=Activate a new email notification target +ListOfActiveNotifications=List all active email notification targets +ListOfNotificationsDone=List all email notifications sent +MailSendSetupIs=Configuration of email sending has been setup to '%s'. This mode can't be used to send mass emailing. +MailSendSetupIs2=You must first go, with an admin account, into menu %sHome - Setup - EMails%s to change parameter '%s' to use mode '%s'. With this mode, you can enter setup of the SMTP server provided by your Internet Service Provider and use Mass emailing feature. +MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s. diff --git a/htdocs/langs/bn_BD/main.lang b/htdocs/langs/bn_BD/main.lang new file mode 100644 index 00000000000..d40e28cb776 --- /dev/null +++ b/htdocs/langs/bn_BD/main.lang @@ -0,0 +1,725 @@ +# Dolibarr language file - Source file is en_US - main +DIRECTION=ltr +# Note for Chinese: +# msungstdlight or cid0ct are for traditional Chinese (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese +# To read Chinese pdf with Linux: sudo apt-get install poppler-data +FONTFORPDF=helvetica +FONTSIZEFORPDF=10 +SeparatorDecimal=. +SeparatorThousand=, +FormatDateShort=%m/%d/%Y +FormatDateShortInput=%m/%d/%Y +FormatDateShortJava=MM/dd/yyyy +FormatDateShortJavaInput=MM/dd/yyyy +FormatDateShortJQuery=mm/dd/yy +FormatDateShortJQueryInput=mm/dd/yy +FormatHourShortJQuery=HH:MI +FormatHourShort=%I:%M %p +FormatHourShortDuration=%H:%M +FormatDateTextShort=%b %d, %Y +FormatDateText=%B %d, %Y +FormatDateHourShort=%m/%d/%Y %I:%M %p +FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p +FormatDateHourTextShort=%b %d, %Y, %I:%M %p +FormatDateHourText=%B %d, %Y, %I:%M %p +DatabaseConnection=Database connection +NoTranslation=No translation +NoRecordFound=No record found +NoError=No error +Error=Error +ErrorFieldRequired=Field '%s' is required +ErrorFieldFormat=Field '%s' has a bad value +ErrorFileDoesNotExists=File %s does not exist +ErrorFailedToOpenFile=Failed to open file %s +ErrorCanNotCreateDir=Can not create dir %s +ErrorCanNotReadDir=Can not read dir %s +ErrorConstantNotDefined=Parameter %s not defined +ErrorUnknown=Unknown error +ErrorSQL=SQL Error +ErrorLogoFileNotFound=Logo file '%s' was not found +ErrorGoToGlobalSetup=Go to 'Company/Foundation' setup to fix this +ErrorGoToModuleSetup=Go to Module setup to fix this +ErrorFailedToSendMail=Failed to send mail (sender=%s, receiver=%s) +ErrorAttachedFilesDisabled=File attaching is disabled on this server +ErrorFileNotUploaded=File was not uploaded. Check that size does not exceed maximum allowed, that free space is available on disk and that there is not already a file with same name in this directory. +ErrorInternalErrorDetected=Error detected +ErrorNoRequestRan=No request ran +ErrorWrongHostParameter=Wrong host parameter +ErrorYourCountryIsNotDefined=Your country is not defined. Go to Home-Setup-Edit and post again the form. +ErrorRecordIsUsedByChild=Failed to delete this record. This record is used by at least one child records. +ErrorWrongValue=Wrong value +ErrorWrongValueForParameterX=Wrong value for parameter %s +ErrorNoRequestInError=No request in error +ErrorServiceUnavailableTryLater=Service not available for the moment. Try again later. +ErrorDuplicateField=Duplicate value in a unique field +ErrorSomeErrorWereFoundRollbackIsDone=Some errors were found. We rollback changes. +ErrorConfigParameterNotDefined=Parameter %s is not defined inside Dolibarr config file conf.php. +ErrorCantLoadUserFromDolibarrDatabase=Failed to find user %s in Dolibarr database. +ErrorNoVATRateDefinedForSellerCountry=Error, no vat rates defined for country '%s'. +ErrorNoSocialContributionForSellerCountry=Error, no social contribution type defined for country '%s'. +ErrorFailedToSaveFile=Error, failed to save file. +SetDate=Set date +SelectDate=Select a date +SeeAlso=See also %s +SeeHere=See here +BackgroundColorByDefault=Default background color +FileNotUploaded=The file was not uploaded +FileUploaded=The file was successfully uploaded +FileWasNotUploaded=A file is selected for attachment but was not yet uploaded. Click on "Attach file" for this. +NbOfEntries=Nb of entries +GoToWikiHelpPage=Read online help (need Internet access) +GoToHelpPage=Read help +RecordSaved=Record saved +RecordDeleted=Record deleted +LevelOfFeature=Level of features +NotDefined=Not defined +DefinedAndHasThisValue=Defined and value to +IsNotDefined=undefined +DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr authentication mode is setup to %s in configuration file conf.php.
This means that password database is extern to Dolibarr, so changing this field may have no effects. +Administrator=Administrator +Undefined=Undefined +PasswordForgotten=Password forgotten ? +SeeAbove=See above +HomeArea=Home area +LastConnexion=Last connection +PreviousConnexion=Previous connection +ConnectedOnMultiCompany=Connected on environment +ConnectedSince=Connected since +AuthenticationMode=Authentification mode +RequestedUrl=Requested Url +DatabaseTypeManager=Database type manager +RequestLastAccess=Request for last database access +RequestLastAccessInError=Request for last database access in error +ReturnCodeLastAccessInError=Return code for last database access in error +InformationLastAccessInError=Information for last database access in error +DolibarrHasDetectedError=Dolibarr has detected a technical error +InformationToHelpDiagnose=This is information that can help diagnostic +MoreInformation=More information +TechnicalInformation=Technical information +NotePublic=Note (public) +NotePrivate=Note (private) +PrecisionUnitIsLimitedToXDecimals=Dolibarr was setup to limit precision of unit prices to %s decimals. +DoTest=Test +ToFilter=Filter +WarningYouHaveAtLeastOneTaskLate=Warning, you have at least one element that has exceeded the tolerance delay. +yes=yes +Yes=Yes +no=no +No=No +All=All +Home=Home +Help=Help +OnlineHelp=Online help +PageWiki=Wiki page +Always=Always +Never=Never +Under=under +Period=Period +PeriodEndDate=End date for period +Activate=Activate +Activated=Activated +Closed=Closed +Closed2=Closed +Enabled=Enabled +Deprecated=Deprecated +Disable=Disable +Disabled=Disabled +Add=Add +AddLink=Add link +Update=Update +AddActionToDo=Add event to do +AddActionDone=Add event done +Close=Close +Close2=Close +Confirm=Confirm +ConfirmSendCardByMail=Do you really want to send content of this card by mail to %s ? +Delete=Delete +Remove=Remove +Resiliate=Resiliate +Cancel=Cancel +Modify=Modify +Edit=Edit +Validate=Validate +ValidateAndApprove=Validate and Approve +ToValidate=To validate +Save=Save +SaveAs=Save As +TestConnection=Test connection +ToClone=Clone +ConfirmClone=Choose data you want to clone : +NoCloneOptionsSpecified=No data to clone defined. +Of=of +Go=Go +Run=Run +CopyOf=Copy of +Show=Show +ShowCardHere=Show card +Search=Search +SearchOf=Search +Valid=Valid +Approve=Approve +Disapprove=Disapprove +ReOpen=Re-Open +Upload=Send file +ToLink=Link +Select=Select +Choose=Choose +ChooseLangage=Please choose your language +Resize=Resize +Recenter=Recenter +Author=Author +User=User +Users=Users +Group=Group +Groups=Groups +NoUserGroupDefined=No user group defined +Password=Password +PasswordRetype=Retype your password +NoteSomeFeaturesAreDisabled=Note that a lot of features/modules are disabled in this demonstration. +Name=Name +Person=Person +Parameter=Parameter +Parameters=Parameters +Value=Value +GlobalValue=Global value +PersonalValue=Personal value +NewValue=New value +CurrentValue=Current value +Code=Code +Type=Type +Language=Language +MultiLanguage=Multi-language +Note=Note +CurrentNote=Current note +Title=Title +Label=Label +RefOrLabel=Ref. or label +Info=Log +Family=Family +Description=Description +Designation=Description +Model=Model +DefaultModel=Default model +Action=Event +About=About +Number=Number +NumberByMonth=Number by month +AmountByMonth=Amount by month +Numero=Number +Limit=Limit +Limits=Limits +DevelopmentTeam=Development Team +Logout=Logout +NoLogoutProcessWithAuthMode=No applicative disconnect feature with authentication mode %s +Connection=Connection +Setup=Setup +Alert=Alert +Previous=Previous +Next=Next +Cards=Cards +Card=Card +Now=Now +Date=Date +DateAndHour=Date and hour +DateStart=Date start +DateEnd=Date end +DateCreation=Creation date +DateModification=Modification date +DateModificationShort=Modif. date +DateLastModification=Last modification date +DateValidation=Validation date +DateClosing=Closing date +DateDue=Due date +DateValue=Value date +DateValueShort=Value date +DateOperation=Operation date +DateOperationShort=Oper. Date +DateLimit=Limit date +DateRequest=Request date +DateProcess=Process date +DatePlanShort=Date planed +DateRealShort=Date real. +DateBuild=Report build date +DatePayment=Date of payment +DurationYear=year +DurationMonth=month +DurationWeek=week +DurationDay=day +DurationYears=years +DurationMonths=months +DurationWeeks=weeks +DurationDays=days +Year=Year +Month=Month +Week=Week +Day=Day +Hour=Hour +Minute=Minute +Second=Second +Years=Years +Months=Months +Days=Days +days=days +Hours=Hours +Minutes=Minutes +Seconds=Seconds +Weeks=Weeks +Today=Today +Yesterday=Yesterday +Tomorrow=Tomorrow +Morning=Morning +Afternoon=Afternoon +Quadri=Quadri +MonthOfDay=Month of the day +HourShort=H +MinuteShort=mn +Rate=Rate +UseLocalTax=Include tax +Bytes=Bytes +KiloBytes=Kilobytes +MegaBytes=Megabytes +GigaBytes=Gigabytes +TeraBytes=Terabytes +b=b. +Kb=Kb +Mb=Mb +Gb=Gb +Tb=Tb +Cut=Cut +Copy=Copy +Paste=Paste +Default=Default +DefaultValue=Default value +DefaultGlobalValue=Global value +Price=Price +UnitPrice=Unit price +UnitPriceHT=Unit price (net) +UnitPriceTTC=Unit price +PriceU=U.P. +PriceUHT=U.P. (net) +AskPriceSupplierUHT=P.U. HT Requested +PriceUTTC=U.P. +Amount=Amount +AmountInvoice=Invoice amount +AmountPayment=Payment amount +AmountHTShort=Amount (net) +AmountTTCShort=Amount (inc. tax) +AmountHT=Amount (net of tax) +AmountTTC=Amount (inc. tax) +AmountVAT=Amount tax +AmountLT1=Amount tax 2 +AmountLT2=Amount tax 3 +AmountLT1ES=Amount RE +AmountLT2ES=Amount IRPF +AmountTotal=Total amount +AmountAverage=Average amount +PriceQtyHT=Price for this quantity (net of tax) +PriceQtyMinHT=Price quantity min. (net of tax) +PriceQtyTTC=Price for this quantity (inc. tax) +PriceQtyMinTTC=Price quantity min. (inc. of tax) +Percentage=Percentage +Total=Total +SubTotal=Subtotal +TotalHTShort=Total (net) +TotalTTCShort=Total (inc. tax) +TotalHT=Total (net of tax) +TotalHTforthispage=Total (net of tax) for this page +TotalTTC=Total (inc. tax) +TotalTTCToYourCredit=Total (inc. tax) to your credit +TotalVAT=Total tax +TotalLT1=Total tax 2 +TotalLT2=Total tax 3 +TotalLT1ES=Total RE +TotalLT2ES=Total IRPF +IncludedVAT=Included tax +HT=Net of tax +TTC=Inc. tax +VAT=Sales tax +LT1ES=RE +LT2ES=IRPF +VATRate=Tax Rate +Average=Average +Sum=Sum +Delta=Delta +Module=Module +Option=Option +List=List +FullList=Full list +Statistics=Statistics +OtherStatistics=Other statistics +Status=Status +Favorite=Favorite +ShortInfo=Info. +Ref=Ref. +RefSupplier=Ref. supplier +RefPayment=Ref. payment +CommercialProposalsShort=Commercial proposals +Comment=Comment +Comments=Comments +ActionsToDo=Events to do +ActionsDone=Events done +ActionsToDoShort=To do +ActionsRunningshort=Started +ActionsDoneShort=Done +ActionNotApplicable=Not applicable +ActionRunningNotStarted=To start +ActionRunningShort=Started +ActionDoneShort=Finished +ActionUncomplete=Uncomplete +CompanyFoundation=Company/Foundation +ContactsForCompany=Contacts for this third party +ContactsAddressesForCompany=Contacts/addresses for this third party +AddressesForCompany=Addresses for this third party +ActionsOnCompany=Events about this third party +ActionsOnMember=Events about this member +NActions=%s events +NActionsLate=%s late +RequestAlreadyDone=Request already recorded +Filter=Filter +RemoveFilter=Remove filter +ChartGenerated=Chart generated +ChartNotGenerated=Chart not generated +GeneratedOn=Build on %s +Generate=Generate +Duration=Duration +TotalDuration=Total duration +Summary=Summary +MyBookmarks=My bookmarks +OtherInformationsBoxes=Other information boxes +DolibarrBoard=Dolibarr board +DolibarrStateBoard=Statistics +DolibarrWorkBoard=Work tasks board +Available=Available +NotYetAvailable=Not yet available +NotAvailable=Not available +Popularity=Popularity +Categories=Categories +Category=Category +By=By +From=From +to=to +and=and +or=or +Other=Other +Others=Others +OtherInformations=Other informations +Quantity=Quantity +Qty=Qty +ChangedBy=Changed by +ReCalculate=Recalculate +ResultOk=Success +ResultKo=Failure +Reporting=Reporting +Reportings=Reporting +Draft=Draft +Drafts=Drafts +Validated=Validated +Opened=Opened +New=New +Discount=Discount +Unknown=Unknown +General=General +Size=Size +Received=Received +Paid=Paid +Topic=Sujet +ByCompanies=By third parties +ByUsers=By users +Links=Links +Link=Link +Receipts=Receipts +Rejects=Rejects +Preview=Preview +NextStep=Next step +PreviousStep=Previous step +Datas=Data +None=None +NoneF=None +Late=Late +Photo=Picture +Photos=Pictures +AddPhoto=Add picture +Login=Login +CurrentLogin=Current login +January=January +February=February +March=March +April=April +May=May +June=June +July=July +August=August +September=September +October=October +November=November +December=December +JanuaryMin=Jan +FebruaryMin=Feb +MarchMin=Mar +AprilMin=Apr +MayMin=May +JuneMin=Jun +JulyMin=Jul +AugustMin=Aug +SeptemberMin=Sep +OctoberMin=Oct +NovemberMin=Nov +DecemberMin=Dec +Month01=January +Month02=February +Month03=March +Month04=April +Month05=May +Month06=June +Month07=July +Month08=August +Month09=September +Month10=October +Month11=November +Month12=December +MonthShort01=Jan +MonthShort02=Feb +MonthShort03=Mar +MonthShort04=Apr +MonthShort05=May +MonthShort06=Jun +MonthShort07=Jul +MonthShort08=Aug +MonthShort09=Sep +MonthShort10=Oct +MonthShort11=Nov +MonthShort12=Dec +AttachedFiles=Attached files and documents +FileTransferComplete=File was uploaded successfuly +DateFormatYYYYMM=YYYY-MM +DateFormatYYYYMMDD=YYYY-MM-DD +DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS +ReportName=Report name +ReportPeriod=Report period +ReportDescription=Description +Report=Report +Keyword=Mot clé +Legend=Legend +FillTownFromZip=Fill city from zip +Fill=Fill +Reset=Reset +ShowLog=Show log +File=File +Files=Files +NotAllowed=Not allowed +ReadPermissionNotAllowed=Read permission not allowed +AmountInCurrency=Amount in %s currency +Example=Example +Examples=Examples +NoExample=No example +FindBug=Report a bug +NbOfThirdParties=Number of third parties +NbOfCustomers=Number of customers +NbOfLines=Number of lines +NbOfObjects=Number of objects +NbOfReferers=Number of referrers +Referers=Refering objects +TotalQuantity=Total quantity +DateFromTo=From %s to %s +DateFrom=From %s +DateUntil=Until %s +Check=Check +Uncheck=Uncheck +Internal=Internal +External=External +Internals=Internal +Externals=External +Warning=Warning +Warnings=Warnings +BuildPDF=Build PDF +RebuildPDF=Rebuild PDF +BuildDoc=Build Doc +RebuildDoc=Rebuild Doc +Entity=Environment +Entities=Entities +EventLogs=Logs +CustomerPreview=Customer preview +SupplierPreview=Supplier preview +AccountancyPreview=Accountancy preview +ShowCustomerPreview=Show customer preview +ShowSupplierPreview=Show supplier preview +ShowAccountancyPreview=Show accountancy preview +ShowProspectPreview=Show prospect preview +RefCustomer=Ref. customer +Currency=Currency +InfoAdmin=Information for administrators +Undo=Undo +Redo=Redo +ExpandAll=Expand all +UndoExpandAll=Undo expand +Reason=Reason +FeatureNotYetSupported=Feature not yet supported +CloseWindow=Close window +Question=Question +Response=Response +Priority=Priority +SendByMail=Send by EMail +MailSentBy=Email sent by +TextUsedInTheMessageBody=Email body +SendAcknowledgementByMail=Send Ack. by email +NoEMail=No email +NoMobilePhone=No mobile phone +Owner=Owner +DetectedVersion=Detected version +FollowingConstantsWillBeSubstituted=The following constants will be replaced with the corresponding value. +Refresh=Refresh +BackToList=Back to list +GoBack=Go back +CanBeModifiedIfOk=Can be modified if valid +CanBeModifiedIfKo=Can be modified if not valid +RecordModifiedSuccessfully=Record modified successfully +RecordsModified=%s records modified +AutomaticCode=Automatic code +NotManaged=Not managed +FeatureDisabled=Feature disabled +MoveBox=Move box %s +Offered=Offered +NotEnoughPermissions=You don't have permission for this action +SessionName=Session name +Method=Method +Receive=Receive +PartialWoman=Partial +PartialMan=Partial +TotalWoman=Total +TotalMan=Total +NeverReceived=Never received +Canceled=Canceled +YouCanChangeValuesForThisListFromDictionarySetup=You can change values for this list from menu setup - dictionary +Color=Color +Documents=Linked files +DocumentsNb=Linked files (%s) +Documents2=Documents +BuildDocuments=Generated documents +UploadDisabled=Upload disabled +MenuECM=Documents +MenuAWStats=AWStats +MenuMembers=Members +MenuAgendaGoogle=Google agenda +ThisLimitIsDefinedInSetup=Dolibarr limit (Menu home-setup-security): %s Kb, PHP limit: %s Kb +NoFileFound=No documents saved in this directory +CurrentUserLanguage=Current language +CurrentTheme=Current theme +CurrentMenuManager=Current menu manager +DisabledModules=Disabled modules +For=For +ForCustomer=For customer +Signature=Signature +HidePassword=Show command with password hidden +UnHidePassword=Show real command with clear password +Root=Root +Informations=Informations +Page=Page +Notes=Notes +AddNewLine=Add new line +AddFile=Add file +ListOfFiles=List of available files +FreeZone=Free entry +FreeLineOfType=Free entry of type +CloneMainAttributes=Clone object with its main attributes +PDFMerge=PDF Merge +Merge=Merge +PrintContentArea=Show page to print main content area +MenuManager=Menu manager +NoMenu=No sub-menu +WarningYouAreInMaintenanceMode=Warning, you are in a maintenance mode, so only login %s is allowed to use application at the moment. +CoreErrorTitle=System error +CoreErrorMessage=Sorry, an error occurred. Check the logs or contact your system administrator. +CreditCard=Credit card +FieldsWithAreMandatory=Fields with %s are mandatory +FieldsWithIsForPublic=Fields with %s are shown on public list of members. If you don't want this, check off the "public" box. +AccordingToGeoIPDatabase=(according to GeoIP convertion) +Line=Line +NotSupported=Not supported +RequiredField=Required field +Result=Result +ToTest=Test +ValidateBefore=Card must be validated before using this feature +Visibility=Visibility +Private=Private +Hidden=Hidden +Resources=Resources +Source=Source +Prefix=Prefix +Before=Before +After=After +IPAddress=IP address +Frequency=Frequency +IM=Instant messaging +NewAttribute=New attribute +AttributeCode=Attribute code +OptionalFieldsSetup=Extra attributes setup +URLPhoto=URL of photo/logo +SetLinkToThirdParty=Link to another third party +CreateDraft=Create draft +SetToDraft=Back to draft +ClickToEdit=Click to edit +ObjectDeleted=Object %s deleted +ByCountry=By country +ByTown=By town +ByDate=By date +ByMonthYear=By month/year +ByYear=By year +ByMonth=By month +ByDay=By day +BySalesRepresentative=By sales representative +LinkedToSpecificUsers=Linked to a particular user contact +DeleteAFile=Delete a file +ConfirmDeleteAFile=Are you sure you want to delete file +NoResults=No results +ModulesSystemTools=Modules tools +Test=Test +Element=Element +NoPhotoYet=No pictures available yet +HomeDashboard=Home summary +Deductible=Deductible +from=from +toward=toward +Access=Access +HelpCopyToClipboard=Use Ctrl+C to copy to clipboard +SaveUploadedFileWithMask=Save file on server with name "%s" (otherwise "%s") +OriginFileName=Original filename +SetDemandReason=Set source +SetBankAccount=Define Bank Account +AccountCurrency=Account Currency +ViewPrivateNote=View notes +XMoreLines=%s line(s) hidden +PublicUrl=Public URL +AddBox=Add box +SelectElementAndClickRefresh=Select an element and click Refresh +PrintFile=Print File %s +ShowTransaction=Show transaction +# Week day +Monday=Monday +Tuesday=Tuesday +Wednesday=Wednesday +Thursday=Thursday +Friday=Friday +Saturday=Saturday +Sunday=Sunday +MondayMin=Mo +TuesdayMin=Tu +WednesdayMin=We +ThursdayMin=Th +FridayMin=Fr +SaturdayMin=Sa +SundayMin=Su +Day1=Monday +Day2=Tuesday +Day3=Wednesday +Day4=Thursday +Day5=Friday +Day6=Saturday +Day0=Sunday +ShortMonday=M +ShortTuesday=T +ShortWednesday=W +ShortThursday=T +ShortFriday=F +ShortSaturday=S +ShortSunday=S diff --git a/htdocs/langs/bn_BD/margins.lang b/htdocs/langs/bn_BD/margins.lang new file mode 100644 index 00000000000..748b3c71f30 --- /dev/null +++ b/htdocs/langs/bn_BD/margins.lang @@ -0,0 +1,45 @@ +# Dolibarr language file - Source file is en_US - marges + +Margin=Margin +Margins=Margins +TotalMargin=Total Margin +MarginOnProducts=Margin / Products +MarginOnServices=Margin / Services +MarginRate=Margin rate +MarkRate=Mark rate +DisplayMarginRates=Display margin rates +DisplayMarkRates=Display mark rates +InputPrice=Input price +margin=Profit margins management +margesSetup=Profit margins management setup +MarginDetails=Margin details +ProductMargins=Product margins +CustomerMargins=Customer margins +SalesRepresentativeMargins=Sales representative margins +UserMargins=User margins +ProductService=Product or Service +AllProducts=All products and services +ChooseProduct/Service=Choose product or service +StartDate=Start date +EndDate=End date +Launch=Start +ForceBuyingPriceIfNull=Force buying price if null +ForceBuyingPriceIfNullDetails=if "ON", margin will be zero on line (buying price = selling price), otherwise ("OFF"), marge will be equal to selling price (buying price = 0) +MARGIN_METHODE_FOR_DISCOUNT=Margin method for global discounts +UseDiscountAsProduct=As a product +UseDiscountAsService=As a service +UseDiscountOnTotal=On subtotal +MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Defines if a global discount is treated as a product, a service, or only on subtotal for margin calculation. +MARGIN_TYPE=Margin type +MargeBrute=Raw margin +MargeNette=Net margin +MARGIN_TYPE_DETAILS=Raw margin : Selling price - Buying price
Net margin : Selling price - Cost price +CostPrice=Cost price +BuyingCost=Cost price +UnitCharges=Unit charges +Charges=Charges +AgentContactType=Commercial agent contact type +AgentContactTypeDetails=Define what contact type (linked on invoices) will be used for margin report per sale representative +rateMustBeNumeric=Rate must be a numeric value +markRateShouldBeLesserThan100=Mark rate should be lower than 100 +ShowMarginInfos=Show margin infos diff --git a/htdocs/langs/bn_BD/members.lang b/htdocs/langs/bn_BD/members.lang new file mode 100644 index 00000000000..40bca8e85fb --- /dev/null +++ b/htdocs/langs/bn_BD/members.lang @@ -0,0 +1,206 @@ +# Dolibarr language file - Source file is en_US - members +MembersArea=Members area +PublicMembersArea=Public members area +MemberCard=Member card +SubscriptionCard=Subscription card +Member=Member +Members=Members +MemberAccount=Member login +ShowMember=Show member card +UserNotLinkedToMember=User not linked to a member +ThirdpartyNotLinkedToMember=Third-party not linked to a member +MembersTickets=Members Tickets +FundationMembers=Foundation members +Attributs=Attributes +ErrorMemberTypeNotDefined=Member type not defined +ListOfPublicMembers=List of public members +ListOfValidatedPublicMembers=List of validated public members +ErrorThisMemberIsNotPublic=This member is not public +ErrorMemberIsAlreadyLinkedToThisThirdParty=Another member (name: %s, login: %s) is already linked to a third party %s. Remove this link first because a third party can't be linked to only a member (and vice versa). +ErrorUserPermissionAllowsToLinksToItselfOnly=For security reasons, you must be granted permissions to edit all users to be able to link a member to a user that is not yours. +ThisIsContentOfYourCard=This is details of your card +CardContent=Content of your member card +SetLinkToUser=Link to a Dolibarr user +SetLinkToThirdParty=Link to a Dolibarr third party +MembersCards=Members business cards +MembersList=List of members +MembersListToValid=List of draft members (to be validated) +MembersListValid=List of valid members +MembersListUpToDate=List of valid members with up to date subscription +MembersListNotUpToDate=List of valid members with subscription out of date +MembersListResiliated=List of resiliated members +MembersListQualified=List of qualified members +MenuMembersToValidate=Draft members +MenuMembersValidated=Validated members +MenuMembersUpToDate=Up to date members +MenuMembersNotUpToDate=Out of date members +MenuMembersResiliated=Resiliated members +MembersWithSubscriptionToReceive=Members with subscription to receive +DateAbonment=Subscription date +DateSubscription=Subscription date +DateNextSubscription=Next subscription +DateEndSubscription=Subscription end date +EndSubscription=End subscription +SubscriptionId=Subscription id +MemberId=Member id +NewMember=New member +NewType=New member type +MemberType=Member type +MemberTypeId=Member type id +MemberTypeLabel=Member type label +MembersTypes=Members types +MembersAttributes=Members attributes +SearchAMember=Search a member +MemberStatusDraft=Draft (needs to be validated) +MemberStatusDraftShort=Draft +MemberStatusActive=Validated (waiting subscription) +MemberStatusActiveShort=Validated +MemberStatusActiveLate=subscription expired +MemberStatusActiveLateShort=Expired +MemberStatusPaid=Subscription up to date +MemberStatusPaidShort=Up to date +MemberStatusResiliated=Resiliated member +MemberStatusResiliatedShort=Resiliated +MembersStatusToValid=Draft members +MembersStatusToValidShort=Draft members +MembersStatusValidated=Validated members +MembersStatusPaid=Subscription up to date +MembersStatusPaidShort=Up to date +MembersStatusNotPaid=Subscription out of date +MembersStatusNotPaidShort=Out of date +MembersStatusResiliated=Resiliated members +MembersStatusResiliatedShort=Resiliated members +NewCotisation=New contribution +PaymentSubscription=New contribution payment +EditMember=Edit member +SubscriptionEndDate=Subscription's end date +MembersTypeSetup=Members type setup +NewSubscription=New subscription +NewSubscriptionDesc=This form allows you to record your subscription as a new member of the foundation. If you want to renew your subscription (if already a member), please contact foundation board instead by email %s. +Subscription=Subscription +Subscriptions=Subscriptions +SubscriptionLate=Late +SubscriptionNotReceived=Subscription never received +SubscriptionLateShort=Late +SubscriptionNotReceivedShort=Never received +ListOfSubscriptions=List of subscriptions +SendCardByMail=Send card by Email +AddMember=Create member +NoTypeDefinedGoToSetup=No member types defined. Go to menu "Members types" +NewMemberType=New member type +WelcomeEMail=Welcome e-mail +SubscriptionRequired=Subscription required +EditType=Edit member type +DeleteType=Delete +VoteAllowed=Vote allowed +Physical=Physical +Moral=Moral +MorPhy=Moral/Physical +Reenable=Reenable +ResiliateMember=Resiliate a member +ConfirmResiliateMember=Are you sure you want to resiliate this member ? +DeleteMember=Delete a member +ConfirmDeleteMember=Are you sure you want to delete this member (Deleting a member will delete all his subscriptions) ? +DeleteSubscription=Delete a subscription +ConfirmDeleteSubscription=Are you sure you want to delete this subscription ? +Filehtpasswd=htpasswd file +ValidateMember=Validate a member +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 formated pages, provided as example to show how to list members database. +PublicMemberList=Public member list +BlankSubscriptionForm=Public auto-subscription form +BlankSubscriptionFormDesc=Dolibarr can provide you a public URL to allow external visitors to ask to subscribe to the foundation. If an online payment module is enabled, a payment form will also be automatically provided. +EnablePublicSubscriptionForm=Enable the public auto-subscription form +MemberPublicLinks=Public links/pages +ExportDataset_member_1=Members and subscriptions +ImportDataset_member_1=Members +LastMembers=Last %s members +LastMembersModified=Last %s modified members +LastSubscriptionsModified=Last %s modified subscriptions +AttributeName=Attribute name +String=String +Text=Text +Int=Int +Date=Date +DateAndTime=Date and time +PublicMemberCard=Member public card +MemberNotOrNoMoreExpectedToSubscribe=Member not or no more expected to subscribe +AddSubscription=Create subscription +ShowSubscription=Show subscription +MemberModifiedInDolibarr=Member modified in Dolibarr +SendAnEMailToMember=Send information email to member +DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the e-mail received in case of auto-inscription of a guest +DescADHERENT_AUTOREGISTER_NOTIF_MAIL=E-mail received in case of auto-inscription of a guest +DescADHERENT_AUTOREGISTER_MAIL_SUBJECT=EMail subject for member autosubscription +DescADHERENT_AUTOREGISTER_MAIL=EMail for member autosubscription +DescADHERENT_MAIL_VALID_SUBJECT=EMail subject for member validation +DescADHERENT_MAIL_VALID=EMail for member validation +DescADHERENT_MAIL_COTIS_SUBJECT=EMail subject for subscription +DescADHERENT_MAIL_COTIS=EMail for subscription +DescADHERENT_MAIL_RESIL_SUBJECT=EMail subject for member resiliation +DescADHERENT_MAIL_RESIL=EMail for member resiliation +DescADHERENT_MAIL_FROM=Sender EMail for automatic emails +DescADHERENT_ETIQUETTE_TYPE=Format of labels page +DescADHERENT_ETIQUETTE_TEXT=Text printed on member address sheets +DescADHERENT_CARD_TYPE=Format of cards page +DescADHERENT_CARD_HEADER_TEXT=Text printed on top of member cards +DescADHERENT_CARD_TEXT=Text printed on member cards (align on left) +DescADHERENT_CARD_TEXT_RIGHT=Text printed on member cards (align on right) +DescADHERENT_CARD_FOOTER_TEXT=Text printed on bottom of member cards +GlobalConfigUsedIfNotDefined=Text defined in Foundation module setup will be used if not defined here +MayBeOverwrited=This text can be overwrited by value defined for member's type +ShowTypeCard=Show type '%s' +HTPasswordExport=htpassword file generation +NoThirdPartyAssociatedToMember=No third party associated to this member +ThirdPartyDolibarr=Dolibarr third party +MembersAndSubscriptions= Members and Subscriptions +MoreActions=Complementary action on recording +MoreActionsOnSubscription=Complementary action, suggested by default when recording a subscription +MoreActionBankDirect=Create a direct transaction record on account +MoreActionBankViaInvoice=Create an invoice and payment on account +MoreActionInvoiceOnly=Create an invoice with no payment +LinkToGeneratedPages=Generate visit cards +LinkToGeneratedPagesDesc=This screen allows you to generate PDF files with business cards for all your members or a particular member. +DocForAllMembersCards=Generate business cards for all members +DocForOneMemberCards=Generate business cards for a particular member +DocForLabels=Generate address sheets +SubscriptionPayment=Subscription payment +LastSubscriptionDate=Last subscription date +LastSubscriptionAmount=Last subscription amount +MembersStatisticsByCountries=Members statistics by country +MembersStatisticsByState=Members statistics by state/province +MembersStatisticsByTown=Members statistics by town +MembersStatisticsByRegion=Members statistics by region +MemberByRegion=Members by region +NbOfMembers=Number of members +NoValidatedMemberYet=No validated members found +MembersByCountryDesc=This screen show you statistics on members by countries. Graphic depends however on Google online graph service and is available only if an internet connection is is working. +MembersByStateDesc=This screen show you statistics on members by state/provinces/canton. +MembersByTownDesc=This screen show you statistics on members by town. +MembersStatisticsDesc=Choose statistics you want to read... +MenuMembersStats=Statistics +LastMemberDate=Last member date +Nature=Nature +Public=Information are public +Exports=Exports +NewMemberbyWeb=New member added. Awaiting approval +NewMemberForm=New member form +SubscriptionsStatistics=Statistics on subscriptions +NbOfSubscriptions=Number of subscriptions +AmountOfSubscriptions=Amount of subscriptions +TurnoverOrBudget=Turnover (for a company) or Budget (for a foundation) +DefaultAmount=Default amount of subscription +CanEditAmount=Visitor can choose/edit amount of its subscription +MEMBER_NEWFORM_PAYONLINE=Jump on integrated online payment page +Associations=Foundations +Collectivités=Organizations +Particuliers=Personal +Entreprises=Companies +DOLIBARRFOUNDATION_PAYMENT_FORM=To make your subscription payment using a bank transfer, see page http://wiki.dolibarr.org/index.php/Subscribe.
To pay using a Credit Card or Paypal, click on button at bottom of this page.
+ByProperties=By characteristics +MembersStatisticsByProperties=Members statistics by characteristics +MembersByNature=Members by nature +VATToUseForSubscriptions=VAT rate to use for subscriptions +NoVatOnSubscription=No TVA for subscriptions +MEMBER_PAYONLINE_SENDEMAIL=Email to warn when Dolibarr receive a confirmation of a validated payment for subscription +ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for subscription line into invoice: %s diff --git a/htdocs/langs/bn_BD/opensurvey.lang b/htdocs/langs/bn_BD/opensurvey.lang new file mode 100644 index 00000000000..0b191e426ec --- /dev/null +++ b/htdocs/langs/bn_BD/opensurvey.lang @@ -0,0 +1,66 @@ +# Dolibarr language file - Source file is en_US - opensurvey +Survey=Poll +Surveys=Polls +OrganizeYourMeetingEasily=Organize your meetings and polls easily. First select type of poll... +NewSurvey=New poll +NoSurveysInDatabase=%s poll(s) into database. +OpenSurveyArea=Polls area +AddACommentForPoll=You can add a comment into poll... +AddComment=Add comment +CreatePoll=Create poll +PollTitle=Poll title +ToReceiveEMailForEachVote=Receive an email for each vote +TypeDate=Type date +TypeClassic=Type standard +OpenSurveyStep2=Select your dates amoung the free days (grey). The selected days are green. You can unselect a day previously selected by clicking again on it +RemoveAllDays=Remove all days +CopyHoursOfFirstDay=Copy hours of first day +RemoveAllHours=Remove all hours +SelectedDays=Selected days +TheBestChoice=The best choice currently is +TheBestChoices=The best choices currently are +with=with +OpenSurveyHowTo=If you agree to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line. +CommentsOfVoters=Comments of voters +ConfirmRemovalOfPoll=Are you sure you want to remove this poll (and all votes) +RemovePoll=Remove poll +UrlForSurvey=URL to communicate to get a direct access to poll +PollOnChoice=You are creating a poll to make a multi-choice for a poll. First enter all possible choices for your poll: +CreateSurveyDate=Create a date poll +CreateSurveyStandard=Create a standard poll +CheckBox=Simple checkbox +YesNoList=List (empty/yes/no) +PourContreList=List (empty/for/against) +AddNewColumn=Add new column +TitleChoice=Choice label +ExportSpreadsheet=Export result spreadsheet +ExpireDate=Limit date +NbOfSurveys=Number of polls +NbOfVoters=Nb of voters +SurveyResults=Results +PollAdminDesc=You are allowed to change all vote lines of this poll with button "Edit". You can, as well, remove a column or a line with %s. You can also add a new column with %s. +5MoreChoices=5 more choices +Abstention=Abstention +Against=Against +YouAreInivitedToVote=You are invited to vote for this poll +VoteNameAlreadyExists=This name was already used for this poll +ErrorPollDoesNotExists=Error, poll %s does not exists. +OpenSurveyNothingToSetup=There is no specific setup to do. +PollWillExpire=Your poll will expire automatically %s days after the last date of your poll. +AddADate=Add a date +AddStartHour=Add start hour +AddEndHour=Add end hour +votes=vote(s) +NoCommentYet=No comments have been posted for this poll yet +CanEditVotes=Can change vote of others +CanComment=Voters can comment in the poll +CanSeeOthersVote=Voters can see other people's vote +SelectDayDesc=For each selected day, you can choose, or not, meeting hours in the following format :
- empty,
- "8h", "8H" or "8:00" to give a meeting's start hour,
- "8-11", "8h-11h", "8H-11H" or "8:00-11:00" to give a meeting's start and end hour,
- "8h15-11h15", "8H15-11H15" or "8:15-11:15" for the same thing but with minutes. +BackToCurrentMonth=Back to current month +ErrorOpenSurveyFillFirstSection=You haven't filled the first section of the poll creation +ErrorOpenSurveyOneChoice=Enter at least one choice +ErrorOpenSurveyDateFormat=Date must have the format YYYY-MM-DD +ErrorInsertingComment=There was an error while inserting your comment +MoreChoices=Enter more choices for the voters +SurveyExpiredInfo=The voting time of this poll has expired. +EmailSomeoneVoted=%s has filled a line.\nYou can find your poll at the link: \n%s diff --git a/htdocs/langs/bn_BD/orders.lang b/htdocs/langs/bn_BD/orders.lang new file mode 100644 index 00000000000..8efafa5e94e --- /dev/null +++ b/htdocs/langs/bn_BD/orders.lang @@ -0,0 +1,166 @@ +# Dolibarr language file - Source file is en_US - orders +OrdersArea=Customers orders area +SuppliersOrdersArea=Suppliers orders area +OrderCard=Order card +OrderId=Order Id +Order=Order +Orders=Orders +OrderLine=Order line +OrderFollow=Follow up +OrderDate=Order date +OrderToProcess=Order to process +NewOrder=New order +ToOrder=Make order +MakeOrder=Make order +SupplierOrder=Supplier order +SuppliersOrders=Suppliers orders +SuppliersOrdersRunning=Current suppliers orders +CustomerOrder=Customer order +CustomersOrders=Customers orders +CustomersOrdersRunning=Current customer's orders +CustomersOrdersAndOrdersLines=Customer orders and order's lines +OrdersToValid=Customers orders to validate +OrdersToBill=Customers orders delivered +OrdersInProcess=Customers orders in process +OrdersToProcess=Customers orders to process +SuppliersOrdersToProcess=Supplier's orders to process +StatusOrderCanceledShort=Canceled +StatusOrderDraftShort=Draft +StatusOrderValidatedShort=Validated +StatusOrderSentShort=In process +StatusOrderSent=Shipment in process +StatusOrderOnProcessShort=Ordered +StatusOrderProcessedShort=Processed +StatusOrderToBillShort=Delivered +StatusOrderToBill2Short=To bill +StatusOrderApprovedShort=Approved +StatusOrderRefusedShort=Refused +StatusOrderToProcessShort=To process +StatusOrderReceivedPartiallyShort=Partially received +StatusOrderReceivedAllShort=Everything received +StatusOrderCanceled=Canceled +StatusOrderDraft=Draft (needs to be validated) +StatusOrderValidated=Validated +StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation +StatusOrderProcessed=Processed +StatusOrderToBill=Delivered +StatusOrderToBill2=To bill +StatusOrderApproved=Approved +StatusOrderRefused=Refused +StatusOrderReceivedPartially=Partially received +StatusOrderReceivedAll=Everything received +ShippingExist=A shipment exists +ProductQtyInDraft=Product quantity into draft orders +ProductQtyInDraftOrWaitingApproved=Product quantity into draft or approved orders, not yet ordered +DraftOrWaitingApproved=Draft or approved not yet ordered +DraftOrWaitingShipped=Draft or validated not yet shipped +MenuOrdersToBill=Orders delivered +MenuOrdersToBill2=Billable orders +SearchOrder=Search order +SearchACustomerOrder=Search a customer order +SearchASupplierOrder=Search a supplier order +ShipProduct=Ship product +Discount=Discount +CreateOrder=Create Order +RefuseOrder=Refuse order +ApproveOrder=Accept order +ValidateOrder=Validate order +UnvalidateOrder=Unvalidate order +DeleteOrder=Delete order +CancelOrder=Cancel order +AddOrder=Create order +AddToMyOrders=Add to my orders +AddToOtherOrders=Add to other orders +AddToDraftOrders=Add to draft order +ShowOrder=Show order +NoOpenedOrders=No opened orders +NoOtherOpenedOrders=No other opened orders +NoDraftOrders=No draft orders +OtherOrders=Other orders +LastOrders=Last %s orders +LastModifiedOrders=Last %s modified orders +LastClosedOrders=Last %s closed orders +AllOrders=All orders +NbOfOrders=Number of orders +OrdersStatistics=Order's statistics +OrdersStatisticsSuppliers=Supplier order's statistics +NumberOfOrdersByMonth=Number of orders by month +AmountOfOrdersByMonthHT=Amount of orders by month (net of tax) +ListOfOrders=List of orders +CloseOrder=Close order +ConfirmCloseOrder=Are you sure you want to set this order to deliverd ? Once an order is delivered, it can be set to billed. +ConfirmCloseOrderIfSending=Are you sure you want to close this order ? You must close an order only when all shipping are done. +ConfirmDeleteOrder=Are you sure you want to delete this order ? +ConfirmValidateOrder=Are you sure you want to validate this order under name %s ? +ConfirmUnvalidateOrder=Are you sure you want to restore order %s to draft status ? +ConfirmCancelOrder=Are you sure you want to cancel this order ? +ConfirmMakeOrder=Are you sure you want to confirm you made this order on %s ? +GenerateBill=Generate invoice +ClassifyShipped=Classify delivered +ClassifyBilled=Classify billed +ComptaCard=Accountancy card +DraftOrders=Draft orders +RelatedOrders=Related orders +OnProcessOrders=In process orders +RefOrder=Ref. order +RefCustomerOrder=Ref. customer order +RefCustomerOrderShort=Ref. cust. order +SendOrderByMail=Send order by mail +ActionsOnOrder=Events on order +NoArticleOfTypeProduct=No article of type 'product' so no shippable article for this order +OrderMode=Order method +AuthorRequest=Request author +UseCustomerContactAsOrderRecipientIfExist=Use customer contact address if defined instead of third party address as order recipient address +RunningOrders=Orders on process +UserWithApproveOrderGrant=Users granted with "approve orders" permission. +PaymentOrderRef=Payment of order %s +CloneOrder=Clone order +ConfirmCloneOrder=Are you sure you want to clone this order %s ? +DispatchSupplierOrder=Receiving supplier order %s +##### Types de contacts ##### +TypeContact_commande_internal_SALESREPFOLL=Representative following-up customer order +TypeContact_commande_internal_SHIPPING=Representative following-up shipping +TypeContact_commande_external_BILLING=Customer invoice contact +TypeContact_commande_external_SHIPPING=Customer shipping contact +TypeContact_commande_external_CUSTOMER=Customer contact following-up order +TypeContact_order_supplier_internal_SALESREPFOLL=Representative following-up supplier order +TypeContact_order_supplier_internal_SHIPPING=Representative following-up shipping +TypeContact_order_supplier_external_BILLING=Supplier invoice contact +TypeContact_order_supplier_external_SHIPPING=Supplier shipping contact +TypeContact_order_supplier_external_CUSTOMER=Supplier contact following-up order + +Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Constant COMMANDE_SUPPLIER_ADDON not defined +Error_COMMANDE_ADDON_NotDefined=Constant COMMANDE_ADDON not defined +Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=Failed to load module file '%s' +Error_FailedToLoad_COMMANDE_ADDON_File=Failed to load module file '%s' +Error_OrderNotChecked=No orders to invoice selected +# Sources +OrderSource0=Commercial proposal +OrderSource1=Internet +OrderSource2=Mail campaign +OrderSource3=Phone compaign +OrderSource4=Fax campaign +OrderSource5=Commercial +OrderSource6=Store +QtyOrdered=Qty ordered +AddDeliveryCostLine=Add a delivery cost line indicating the weight of the order +# Documents models +PDFEinsteinDescription=A complete order model (logo...) +PDFEdisonDescription=A simple order model +PDFProformaDescription=A complete proforma invoice (logo…) +# Orders modes +OrderByMail=Mail +OrderByFax=Fax +OrderByEMail=EMail +OrderByWWW=Online +OrderByPhone=Phone +CreateInvoiceForThisCustomer=Bill orders +NoOrdersToInvoice=No orders billable +CloseProcessedOrdersAutomatically=Classify "Processed" all selected orders. +OrderCreation=Order creation +Ordered=Ordered +OrderCreated=Your orders have been created +OrderFail=An error happened during your orders creation +CreateOrders=Create orders +ToBillSeveralOrderSelectCustomer=To create an invoice for several orders, click first onto customer, then choose "%s". diff --git a/htdocs/langs/bn_BD/other.lang b/htdocs/langs/bn_BD/other.lang new file mode 100644 index 00000000000..08747ea884b --- /dev/null +++ b/htdocs/langs/bn_BD/other.lang @@ -0,0 +1,238 @@ +# Dolibarr language file - Source file is en_US - other +SecurityCode=Security code +Calendar=Calendar +Tools=Tools +ToolsDesc=This area is dedicated to group miscellaneous tools not available into other menu entries.

Those tools can be reached from menu on the side. +Birthday=Birthday +BirthdayDate=Birthday +DateToBirth=Date of birth +BirthdayAlertOn= birthday alert active +BirthdayAlertOff= birthday alert inactive +Notify_FICHINTER_VALIDATE=Intervention validated +Notify_FICHINTER_SENTBYMAIL=Intervention sent by mail +Notify_BILL_VALIDATE=Customer invoice validated +Notify_BILL_UNVALIDATE=Customer invoice unvalidated +Notify_ORDER_SUPPLIER_APPROVE=Supplier order approved +Notify_ORDER_SUPPLIER_REFUSE=Supplier order refused +Notify_ORDER_VALIDATE=Customer order validated +Notify_PROPAL_VALIDATE=Customer proposal validated +Notify_PROPAL_CLOSE_SIGNED=Customer propal closed signed +Notify_PROPAL_CLOSE_REFUSED=Customer propal closed refused +Notify_WITHDRAW_TRANSMIT=Transmission withdrawal +Notify_WITHDRAW_CREDIT=Credit withdrawal +Notify_WITHDRAW_EMIT=Perform withdrawal +Notify_ORDER_SENTBYMAIL=Customer order sent by mail +Notify_COMPANY_CREATE=Third party created +Notify_COMPANY_SENTBYMAIL=Mails sent from third party card +Notify_PROPAL_SENTBYMAIL=Commercial proposal sent by mail +Notify_BILL_PAYED=Customer invoice payed +Notify_BILL_CANCEL=Customer invoice canceled +Notify_BILL_SENTBYMAIL=Customer invoice sent by mail +Notify_ORDER_SUPPLIER_VALIDATE=Supplier order validated +Notify_ORDER_SUPPLIER_SENTBYMAIL=Supplier order sent by mail +Notify_BILL_SUPPLIER_VALIDATE=Supplier invoice validated +Notify_BILL_SUPPLIER_PAYED=Supplier invoice payed +Notify_BILL_SUPPLIER_SENTBYMAIL=Supplier invoice sent by mail +Notify_BILL_SUPPLIER_CANCELED=Supplier invoice cancelled +Notify_CONTRACT_VALIDATE=Contract validated +Notify_FICHEINTER_VALIDATE=Intervention validated +Notify_SHIPPING_VALIDATE=Shipping validated +Notify_SHIPPING_SENTBYMAIL=Shipping sent by mail +Notify_MEMBER_VALIDATE=Member validated +Notify_MEMBER_MODIFY=Member modified +Notify_MEMBER_SUBSCRIPTION=Member subscribed +Notify_MEMBER_RESILIATE=Member resiliated +Notify_MEMBER_DELETE=Member deleted +Notify_PROJECT_CREATE=Project creation +Notify_TASK_CREATE=Task created +Notify_TASK_MODIFY=Task modified +Notify_TASK_DELETE=Task deleted +SeeModuleSetup=See module setup +NbOfAttachedFiles=Number of attached files/documents +TotalSizeOfAttachedFiles=Total size of attached files/documents +MaxSize=Maximum size +AttachANewFile=Attach a new file/document +LinkedObject=Linked object +Miscellaneous=Miscellaneous +NbOfActiveNotifications=Number of notifications (nb of recipient emails) +PredefinedMailTest=This is a test mail.\nThe two lines are separated by a carriage return.\n\n__SIGNATURE__ +PredefinedMailTestHtml=This is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__SIGNATURE__ +PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ +PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__ +DemoDesc=Dolibarr is a compact ERP/CRM composed by several functional modules. A demo that includes all modules does not mean anything as this never occurs. So, several demo profiles are available. +ChooseYourDemoProfil=Choose the demo profile that match your activity... +DemoFundation=Manage members of a foundation +DemoFundation2=Manage members and bank account of a foundation +DemoCompanyServiceOnly=Manage a freelance activity selling service only +DemoCompanyShopWithCashDesk=Manage a shop with a cash desk +DemoCompanyProductAndStocks=Manage a small or medium company selling products +DemoCompanyAll=Manage a small or medium company with multiple activities (all main modules) +GoToDemo=Go to demo +CreatedBy=Created by %s +ModifiedBy=Modified by %s +ValidatedBy=Validated by %s +CanceledBy=Canceled by %s +ClosedBy=Closed by %s +CreatedById=User id who created +ModifiedById=User id who made last change +ValidatedById=User id who validated +CanceledById=User id who canceled +ClosedById=User id who closed +CreatedByLogin=User login who created +ModifiedByLogin=User login who made last change +ValidatedByLogin=User login who validated +CanceledByLogin=User login who canceled +ClosedByLogin=User login who closed +FileWasRemoved=File %s was removed +DirWasRemoved=Directory %s was removed +FeatureNotYetAvailableShort=Available in a next version +FeatureNotYetAvailable=Feature not yet available in this version +FeatureExperimental=Experimental feature. Not stable in this version +FeatureDevelopment=Development feature. Not stable in this version +FeaturesSupported=Features supported +Width=Width +Height=Height +Depth=Depth +Top=Top +Bottom=Bottom +Left=Left +Right=Right +CalculatedWeight=Calculated weight +CalculatedVolume=Calculated volume +Weight=Weight +TotalWeight=Total weight +WeightUnitton=tonnes +WeightUnitkg=kg +WeightUnitg=g +WeightUnitmg=mg +WeightUnitpound=pound +Length=Length +LengthUnitm=m +LengthUnitdm=dm +LengthUnitcm=cm +LengthUnitmm=mm +Surface=Area +SurfaceUnitm2=m2 +SurfaceUnitdm2=dm2 +SurfaceUnitcm2=cm2 +SurfaceUnitmm2=mm2 +SurfaceUnitfoot2=ft2 +SurfaceUnitinch2=in2 +Volume=Volume +TotalVolume=Total volume +VolumeUnitm3=m3 +VolumeUnitdm3=dm3 +VolumeUnitcm3=cm3 +VolumeUnitmm3=mm3 +VolumeUnitfoot3=ft3 +VolumeUnitinch3=in3 +VolumeUnitounce=ounce +VolumeUnitlitre=litre +VolumeUnitgallon=gallon +Size=size +SizeUnitm=m +SizeUnitdm=dm +SizeUnitcm=cm +SizeUnitmm=mm +SizeUnitinch=inch +SizeUnitfoot=foot +SizeUnitpoint=point +BugTracker=Bug tracker +SendNewPasswordDesc=This form allows you to request a new password. It will be send to your email address.
Change will be effective only after clicking on confirmation link inside this email.
Check your email reader software. +BackToLoginPage=Back to login page +AuthenticationDoesNotAllowSendNewPassword=Authentication mode is %s.
In this mode, Dolibarr can't know nor change your password.
Contact your system administrator if you want to change your password. +EnableGDLibraryDesc=Install or enable GD library with your PHP for use this option. +EnablePhpAVModuleDesc=You need to install a module compatible with your anti-virus. (Clamav : php4-clamavlib ou php5-clamavlib) +ProfIdShortDesc=Prof Id %s is an information depending on third party country.
For example, for country %s, it's code %s. +DolibarrDemo=Dolibarr ERP/CRM demo +StatsByNumberOfUnits=Statistics in number of products/services units +StatsByNumberOfEntities=Statistics in number of referring entities +NumberOfProposals=Number of proposals on last 12 month +NumberOfCustomerOrders=Number of customer orders on last 12 month +NumberOfCustomerInvoices=Number of customer invoices on last 12 month +NumberOfSupplierOrders=Number of supplier orders on last 12 month +NumberOfSupplierInvoices=Number of supplier invoices on last 12 month +NumberOfUnitsProposals=Number of units on proposals on last 12 month +NumberOfUnitsCustomerOrders=Number of units on customer orders on last 12 month +NumberOfUnitsCustomerInvoices=Number of units on customer invoices on last 12 month +NumberOfUnitsSupplierOrders=Number of units on supplier orders on last 12 month +NumberOfUnitsSupplierInvoices=Number of units on supplier invoices on last 12 month +EMailTextInterventionValidated=The intervention %s has been validated. +EMailTextInvoiceValidated=The invoice %s has been validated. +EMailTextProposalValidated=The proposal %s has been validated. +EMailTextOrderValidated=The order %s has been validated. +EMailTextOrderApproved=The order %s has been approved. +EMailTextOrderApprovedBy=The order %s has been approved by %s. +EMailTextOrderRefused=The order %s has been refused. +EMailTextOrderRefusedBy=The order %s has been refused by %s. +EMailTextExpeditionValidated=The shipping %s has been validated. +ImportedWithSet=Importation data set +DolibarrNotification=Automatic notification +ResizeDesc=Enter new width OR new height. Ratio will be kept during resizing... +NewLength=New width +NewHeight=New height +NewSizeAfterCropping=New size after cropping +DefineNewAreaToPick=Define new area on image to pick (left click on image then drag until you reach the opposite corner) +CurrentInformationOnImage=This tool was designed to help you to resize or crop an image. This is informations on current edited image +ImageEditor=Image editor +YouReceiveMailBecauseOfNotification=You receive this message because your email has been added to list of targets to be informed of particular events into %s software of %s. +YouReceiveMailBecauseOfNotification2=This event is the following: +ThisIsListOfModules=This is a list of modules preselected by this demo profile (only most common modules are visible in this demo). Edit this to have a more personalized demo and click on "Start". +ClickHere=Click here +UseAdvancedPerms=Use the advanced permissions of some modules +FileFormat=File format +SelectAColor=Choose a color +AddFiles=Add Files +StartUpload=Start upload +CancelUpload=Cancel upload +FileIsTooBig=Files is too big +PleaseBePatient=Please be patient... +RequestToResetPasswordReceived=A request to change your Dolibarr password has been received +NewKeyIs=This is your new keys to login +NewKeyWillBe=Your new key to login to software will be +ClickHereToGoTo=Click here to go to %s +YouMustClickToChange=You must however first click on the following link to validate this password change +ForgetIfNothing=If you didn't request this change, just forget this email. Your credentials are kept safe. + +##### Calendar common ##### +AddCalendarEntry=Add entry in calendar %s +NewCompanyToDolibarr=Company %s added +ContractValidatedInDolibarr=Contract %s validated +ContractCanceledInDolibarr=Contract %s canceled +ContractClosedInDolibarr=Contract %s closed +PropalClosedSignedInDolibarr=Proposal %s signed +PropalClosedRefusedInDolibarr=Proposal %s refused +PropalValidatedInDolibarr=Proposal %s validated +PropalClassifiedBilledInDolibarr=Proposal %s classified billed +InvoiceValidatedInDolibarr=Invoice %s validated +InvoicePaidInDolibarr=Invoice %s changed to paid +InvoiceCanceledInDolibarr=Invoice %s canceled +PaymentDoneInDolibarr=Payment %s done +CustomerPaymentDoneInDolibarr=Customer payment %s done +SupplierPaymentDoneInDolibarr=Supplier payment %s done +MemberValidatedInDolibarr=Member %s validated +MemberResiliatedInDolibarr=Member %s resiliated +MemberDeletedInDolibarr=Member %s deleted +MemberSubscriptionAddedInDolibarr=Subscription for member %s added +ShipmentValidatedInDolibarr=Shipment %s validated +ShipmentDeletedInDolibarr=Shipment %s deleted +##### Export ##### +Export=Export +ExportsArea=Exports area +AvailableFormats=Available formats +LibraryUsed=Librairy used +LibraryVersion=Version +ExportableDatas=Exportable data +NoExportableData=No exportable data (no modules with exportable data loaded, or missing permissions) +ToExport=Export +NewExport=New export +##### External sites ##### +ExternalSites=External sites diff --git a/htdocs/langs/bn_BD/paybox.lang b/htdocs/langs/bn_BD/paybox.lang new file mode 100644 index 00000000000..aced32a4944 --- /dev/null +++ b/htdocs/langs/bn_BD/paybox.lang @@ -0,0 +1,40 @@ +# Dolibarr language file - Source file is en_US - paybox +PayBoxSetup=PayBox module setup +PayBoxDesc=This module offer pages to allow payment on Paybox by customers. This can be used for a free payment or for a payment on a particular Dolibarr object (invoice, order, ...) +FollowingUrlAreAvailableToMakePayments=Following URLs are available to offer a page to a customer to make a payment on Dolibarr objects +PaymentForm=Payment form +WelcomeOnPaymentPage=Welcome on our online payment service +ThisScreenAllowsYouToPay=This screen allow you to make an online payment to %s. +ThisIsInformationOnPayment=This is information on payment to do +ToComplete=To complete +YourEMail=Email to receive payment confirmation +Creditor=Creditor +PaymentCode=Payment code +PayBoxDoPayment=Go on payment +YouWillBeRedirectedOnPayBox=You will be redirected on secured Paybox page to input you credit card information +PleaseBePatient=Please, be patient +Continue=Next +ToOfferALinkForOnlinePayment=URL for %s payment +ToOfferALinkForOnlinePaymentOnOrder=URL to offer a %s online payment user interface for a customer order +ToOfferALinkForOnlinePaymentOnInvoice=URL to offer a %s online payment user interface for a customer invoice +ToOfferALinkForOnlinePaymentOnContractLine=URL to offer a %s online payment user interface for a contract line +ToOfferALinkForOnlinePaymentOnFreeAmount=URL to offer a %s online payment user interface for a free amount +ToOfferALinkForOnlinePaymentOnMemberSubscription=URL to offer a %s online payment user interface for a member subscription +YouCanAddTagOnUrl=You can also add url parameter &tag=value to any of those URL (required only for free payment) to add your own payment comment tag. +SetupPayBoxToHavePaymentCreatedAutomatically=Setup your PayBox with url %s to have payment created automatically when validated by paybox. +YourPaymentHasBeenRecorded=This page confirms that your payment has been recorded. Thank you. +YourPaymentHasNotBeenRecorded=You payment has not been recorded and transaction has been canceled. Thank you. +AccountParameter=Account parameters +UsageParameter=Usage parameters +InformationToFindParameters=Help to find your %s account information +PAYBOX_CGI_URL_V2=Url of Paybox CGI module for payment +VendorName=Name of vendor +CSSUrlForPaymentForm=CSS style sheet url for payment form +MessageOK=Message on validated payment return page +MessageKO=Message on canceled payment return page +NewPayboxPaymentReceived=New Paybox payment received +NewPayboxPaymentFailed=New Paybox payment tried but failed +PAYBOX_PAYONLINE_SENDEMAIL=EMail to warn after a payment (success or failed) +PAYBOX_PBX_SITE=Value for PBX SITE +PAYBOX_PBX_RANG=Value for PBX Rang +PAYBOX_PBX_IDENTIFIANT=Value for PBX ID diff --git a/htdocs/langs/bn_BD/paypal.lang b/htdocs/langs/bn_BD/paypal.lang new file mode 100644 index 00000000000..65a3dc45a23 --- /dev/null +++ b/htdocs/langs/bn_BD/paypal.lang @@ -0,0 +1,25 @@ +# Dolibarr language file - Source file is en_US - paypal +PaypalSetup=PayPal module setup +PaypalDesc=This module offer pages to allow payment on PayPal by customers. This can be used for a free payment or for a payment on a particular Dolibarr object (invoice, order, ...) +PaypalOrCBDoPayment=Pay with credit card or Paypal +PaypalDoPayment=Pay with Paypal +PaypalCBDoPayment=Pay with credit card +PAYPAL_API_SANDBOX=Mode test/sandbox +PAYPAL_API_USER=API username +PAYPAL_API_PASSWORD=API password +PAYPAL_API_SIGNATURE=API signature +PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Offer payment "integral" (Credit card+Paypal) or "Paypal" only +PaypalModeIntegral=Integral +PaypalModeOnlyPaypal=PayPal only +PAYPAL_CSS_URL=Optionnal Url of CSS style sheet on payment page +ThisIsTransactionId=This is id of transaction: %s +PAYPAL_ADD_PAYMENT_URL=Add the url of Paypal payment when you send a document by mail +PAYPAL_IPN_MAIL_ADDRESS=E-mail address for the instant notification of payment (IPN) +PredefinedMailContentLink=You can click on the secure link below to make your payment (PayPal) if it is not already done.\n\n%s\n\n +YouAreCurrentlyInSandboxMode=You are currently in the "sandbox" mode +NewPaypalPaymentReceived=New Paypal payment received +NewPaypalPaymentFailed=New Paypal payment tried but failed +PAYPAL_PAYONLINE_SENDEMAIL=EMail to warn after a payment (success or not) +ReturnURLAfterPayment=Return URL after payment +ValidationOfPaypalPaymentFailed=Validation of Paypal payment failed +PaypalConfirmPaymentPageWasCalledButFailed=Payment confirmation page for Paypal was called by Paypal but confirmation failed diff --git a/htdocs/langs/bn_BD/printing.lang b/htdocs/langs/bn_BD/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/bn_BD/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/bn_BD/productbatch.lang b/htdocs/langs/bn_BD/productbatch.lang new file mode 100644 index 00000000000..45263681965 --- /dev/null +++ b/htdocs/langs/bn_BD/productbatch.lang @@ -0,0 +1,21 @@ +# ProductBATCH language file - en_US - ProductBATCH +ManageLotSerial=Use batch/serial number +ProductStatusOnBatch=Yes (Batch/serial required) +ProductStatusNotOnBatch=No (Batch/serial not used) +ProductStatusOnBatchShort=Yes +ProductStatusNotOnBatchShort=No +Batch=Batch/Serial +atleast1batchfield=Eat-by date or Sell-by date or Batch number +batch_number=Batch/Serial number +l_eatby=Eat-by date +l_sellby=Sell-by date +DetailBatchNumber=Batch/Serial details +DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) +printBatch=Batch: %s +printEatby=Eat-by: %s +printSellby=Sell-by: %s +printQty=Qty: %d +AddDispatchBatchLine=Add a line for Shelf Life dispatching +BatchDefaultNumber=Undefined +WhenProductBatchModuleOnOptionAreForced=When module Batch/Serial is on, increase/decrease stock mode is forced to last choice and can't be edited. Other options can be defined as you want. +ProductDoesNotUseBatchSerial=This product does not use batch/serial number diff --git a/htdocs/langs/bn_BD/products.lang b/htdocs/langs/bn_BD/products.lang new file mode 100644 index 00000000000..3a18cda69e7 --- /dev/null +++ b/htdocs/langs/bn_BD/products.lang @@ -0,0 +1,256 @@ +# Dolibarr language file - Source file is en_US - products +ProductRef=Product ref. +ProductLabel=Product label +ProductServiceCard=Products/Services card +Products=Products +Services=Services +Product=Product +Service=Service +ProductId=Product/service id +Create=Create +Reference=Reference +NewProduct=New product +NewService=New service +ProductCode=Product code +ServiceCode=Service code +ProductVatMassChange=Mass VAT change +ProductVatMassChangeDesc=This page can be used to modify a VAT rate defined on products or services from a value to another. Warning, this change is done on all database. +MassBarcodeInit=Mass barcode init +MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. +ProductAccountancyBuyCode=Accountancy code (buy) +ProductAccountancySellCode=Accountancy code (sell) +ProductOrService=Product or Service +ProductsAndServices=Products and Services +ProductsOrServices=Products or Services +ProductsAndServicesOnSell=Products and Services for sale or for purchase +ProductsAndServicesNotOnSell=Products and Services out of sale +ProductsAndServicesStatistics=Products and Services statistics +ProductsStatistics=Products statistics +ProductsOnSell=Product for sale or for pruchase +ProductsNotOnSell=Product out of sale and out of purchase +ProductsOnSellAndOnBuy=Products for sale and for purchase +ServicesOnSell=Services for sale or for purchase +ServicesNotOnSell=Services out of sale +ServicesOnSellAndOnBuy=Services for sale and for purchase +InternalRef=Internal reference +LastRecorded=Last products/services on sell recorded +LastRecordedProductsAndServices=Last %s recorded products/services +LastModifiedProductsAndServices=Last %s modified products/services +LastRecordedProducts=Last %s products recorded +LastRecordedServices=Last %s services recorded +LastProducts=Last products +CardProduct0=Product card +CardProduct1=Service card +CardContract=Contract card +Warehouse=Warehouse +Warehouses=Warehouses +WarehouseOpened=Warehouse opened +WarehouseClosed=Warehouse closed +Stock=Stock +Stocks=Stocks +Movement=Movement +Movements=Movements +Sell=Sales +Buy=Purchases +OnSell=For sale +OnBuy=For purchase +NotOnSell=Not for sale +ProductStatusOnSell=For sale +ProductStatusNotOnSell=Not for sale +ProductStatusOnSellShort=For sale +ProductStatusNotOnSellShort=Not for sale +ProductStatusOnBuy=For purchase +ProductStatusNotOnBuy=Not for purchase +ProductStatusOnBuyShort=For purchase +ProductStatusNotOnBuyShort=Not for purchase +UpdatePrice=Update price +AppliedPricesFrom=Applied prices from +SellingPrice=Selling price +SellingPriceHT=Selling price (net of tax) +SellingPriceTTC=Selling price (inc. tax) +PublicPrice=Public price +CurrentPrice=Current price +NewPrice=New price +MinPrice=Minim. selling price +MinPriceHT=Minim. selling price (net of tax) +MinPriceTTC=Minim. selling price (inc. tax) +CantBeLessThanMinPrice=The selling price can't be lower than minimum allowed for this product (%s without tax). This message can also appears if you type a too important discount. +ContractStatus=Contract status +ContractStatusClosed=Closed +ContractStatusRunning=Running +ContractStatusExpired=expired +ContractStatusOnHold=Not running +ContractStatusToRun=To get running +ContractNotRunning=This contract is not running +ErrorProductAlreadyExists=A product with reference %s already exists. +ErrorProductBadRefOrLabel=Wrong value for reference or label. +ErrorProductClone=There was a problem while trying to clone the product or service. +ErrorPriceCantBeLowerThanMinPrice=Error Price Can't Be Lower Than Minimum Price. +Suppliers=Suppliers +SupplierRef=Supplier's product ref. +ShowProduct=Show product +ShowService=Show service +ProductsAndServicesArea=Product and Services area +ProductsArea=Product area +ServicesArea=Services area +AddToMyProposals=Add to my proposals +AddToOtherProposals=Add to other proposals +AddToMyBills=Add to my bills +AddToOtherBills=Add to other bills +CorrectStock=Correct stock +AddPhoto=Add photo +ListOfStockMovements=List of stock movements +BuyingPrice=Buying price +SupplierCard=Supplier card +CommercialCard=Commercial card +AllWays=Path to find your product in stock +NoCat=Your product is not in any category +PrimaryWay=Primary path +PriceRemoved=Price removed +BarCode=Barcode +BarcodeType=Barcode type +SetDefaultBarcodeType=Set barcode type +BarcodeValue=Barcode value +NoteNotVisibleOnBill=Note (not visible on invoices, proposals...) +CreateCopy=Create copy +ServiceLimitedDuration=If product is a service with limited duration: +MultiPricesAbility=Several level of prices per product/service +MultiPricesNumPrices=Number of prices +MultiPriceLevelsName=Price categories +AssociatedProductsAbility=Activate the virtual package feature +AssociatedProducts=Package product +AssociatedProductsNumber=Number of products composing this virtual package product +ParentProductsNumber=Number of parent packaging product +IfZeroItIsNotAVirtualProduct=If 0, this product is not a virtual package product +IfZeroItIsNotUsedByVirtualProduct=If 0, this product is not used by any virtual package product +EditAssociate=Associate +Translation=Translation +KeywordFilter=Keyword filter +CategoryFilter=Category filter +ProductToAddSearch=Search product to add +AddDel=Add/Delete +Quantity=Quantity +NoMatchFound=No match found +ProductAssociationList=List of related products/services: name of product/service (quantity affected) +ProductParentList=List of package products/services with this product as a component +ErrorAssociationIsFatherOfThis=One of selected product is parent with current product +DeleteProduct=Delete a product/service +ConfirmDeleteProduct=Are you sure you want to delete this product/service? +ProductDeleted=Product/Service "%s" deleted from database. +DeletePicture=Delete a picture +ConfirmDeletePicture=Are you sure you want to delete this picture ? +ExportDataset_produit_1=Products +ExportDataset_service_1=Services +ImportDataset_produit_1=Products +ImportDataset_service_1=Services +DeleteProductLine=Delete product line +ConfirmDeleteProductLine=Are you sure you want to delete this product line? +NoProductMatching=No product/service match your criteria +MatchingProducts=Matching products/services +NoStockForThisProduct=No stock for this product +NoStock=No Stock +Restock=Restock +ProductSpecial=Special +QtyMin=Minimum Qty +PriceQty=Price for this quantity +PriceQtyMin=Price for this min. qty (w/o discount) +VATRateForSupplierProduct=VAT Rate (for this supplier/product) +DiscountQtyMin=Default discount for qty +NoPriceDefinedForThisSupplier=No price/qty defined for this supplier/product +NoSupplierPriceDefinedForThisProduct=No supplier price/qty defined for this product +RecordedProducts=Products recorded +RecordedServices=Services recorded +RecordedProductsAndServices=Products/services recorded +PredefinedProductsToSell=Predefined products to sell +PredefinedServicesToSell=Predefined services to sell +PredefinedProductsAndServicesToSell=Predefined products/services to sell +PredefinedProductsToPurchase=Predefined product to purchase +PredefinedServicesToPurchase=Predefined services to purchase +PredefinedProductsAndServicesToPurchase=Predefined products/services to puchase +GenerateThumb=Generate thumb +ProductCanvasAbility=Use special "canvas" addons +ServiceNb=Service #%s +ListProductServiceByPopularity=List of products/services by popularity +ListProductByPopularity=List of products by popularity +ListServiceByPopularity=List of services by popularity +Finished=Manufactured product +RowMaterial=Raw Material +CloneProduct=Clone product or service +ConfirmCloneProduct=Are you sure you want to clone product or service %s ? +CloneContentProduct=Clone all main informations of product/service +ClonePricesProduct=Clone main informations and prices +CloneCompositionProduct=Clone packaged product/services +ProductIsUsed=This product is used +NewRefForClone=Ref. of new product/service +CustomerPrices=Customers prices +SuppliersPrices=Suppliers prices +SuppliersPricesOfProductsOrServices=Suppliers prices (of products or services) +CustomCode=Customs code +CountryOrigin=Origin country +HiddenIntoCombo=Hidden into select lists +Nature=Nature +ProductCodeModel=Product ref template +ServiceCodeModel=Service ref template +AddThisProductCard=Create product card +HelpAddThisProductCard=This option allows you to create or clone a product if it does not exist. +AddThisServiceCard=Create service card +HelpAddThisServiceCard=This option allows you to create or clone a service if it does not exist. +CurrentProductPrice=Current price +AlwaysUseNewPrice=Always use current price of product/service +AlwaysUseFixedPrice=Use the fixed price +PriceByQuantity=Different prices by quantity +PriceByQuantityRange=Quantity range +ProductsDashboard=Products/Services summary +UpdateOriginalProductLabel=Modify original label +HelpUpdateOriginalProductLabel=Allows to edit the name of the product +### composition fabrication +Building=Production and items dispatchment +Build=Produce +BuildIt=Produce & Dispatch +BuildindListInfo=Available quantity for production per warehouse (set it to 0 for no further action) +QtyNeed=Qty +UnitPmp=Net unit VWAP +CostPmpHT=Net total VWAP +ProductUsedForBuild=Auto consumed by production +ProductBuilded=Production completed +ProductsMultiPrice=Product multi-price +ProductsOrServiceMultiPrice=Customers prices (of products or services, multi-prices) +ProductSellByQuarterHT=Products turnover quarterly VWAP +ServiceSellByQuarterHT=Services turnover quarterly VWAP +Quarter1=1st. Quarter +Quarter2=2nd. Quarter +Quarter3=3rd. Quarter +Quarter4=4th. Quarter +BarCodePrintsheet=Print bar code +PageToGenerateBarCodeSheets=With this tool, you can print sheets of bar code stickers. Choose format of your sticker page, type of barcode and value of barcode, then click on button %s. +NumberOfStickers=Number of stickers to print on page +PrintsheetForOneBarCode=Print several stickers for one barcode +BuildPageToPrint=Generate page to print +FillBarCodeTypeAndValueManually=Fill barcode type and value manually. +FillBarCodeTypeAndValueFromProduct=Fill barcode type and value from barcode of a product. +FillBarCodeTypeAndValueFromThirdParty=Fill barcode type and value from barcode of a thirdparty. +DefinitionOfBarCodeForProductNotComplete=Definition of type or value of bar code not complete for product %s. +DefinitionOfBarCodeForThirdpartyNotComplete=Definition of type or value of bar code non complete for thirdparty %s. +BarCodeDataForProduct=Barcode information of product %s : +BarCodeDataForThirdparty=Barcode information of thirdparty %s : +ResetBarcodeForAllRecords=Define barcode value for all records (this will also reset barcode value already defined with new values) +PriceByCustomer=Different price for each customer +PriceCatalogue=Unique price per product/service +PricingRule=Rules for customer prices +AddCustomerPrice=Add price by customers +ForceUpdateChildPriceSoc=Set same price on customer subsidiaries +PriceByCustomerLog=Price by customer log +MinimumPriceLimit=Minimum price can't be lower that %s +MinimumRecommendedPrice=Minimum recommended price is : %s +PriceExpressionEditor=Price expression editor +PriceExpressionSelected=Selected price expression +PriceExpressionEditorHelp1="price = 2 + 2" or "2 + 2" for setting the price. Use ; to separate expressions +PriceExpressionEditorHelp2=You can access ExtraFields with variables like #options_myextrafieldkey# +PriceExpressionEditorHelp3=In both product/service and supplier prices there are these variables available:
#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min# +PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# +PriceMode=Price mode +PriceNumeric=Number +DefaultPrice=Default price +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Sub-product +MinSupplierPrice=Minimun supplier price diff --git a/htdocs/langs/bn_BD/projects.lang b/htdocs/langs/bn_BD/projects.lang new file mode 100644 index 00000000000..44d0d89687a --- /dev/null +++ b/htdocs/langs/bn_BD/projects.lang @@ -0,0 +1,144 @@ +# Dolibarr language file - Source file is en_US - projects +RefProject=Ref. project +ProjectId=Project Id +Project=Project +Projects=Projects +ProjectStatus=Project status +SharedProject=Everybody +PrivateProject=Contacts of project +MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). +ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. +ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). +MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). +TasksPublicDesc=This view presents all projects and tasks you are allowed to read. +TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). +ProjectsArea=Projects area +NewProject=New project +AddProject=Create project +DeleteAProject=Delete a project +DeleteATask=Delete a task +ConfirmDeleteAProject=Are you sure you want to delete this project ? +ConfirmDeleteATask=Are you sure you want to delete this task ? +OfficerProject=Officer project +LastProjects=Last %s projects +AllProjects=All projects +ProjectsList=List of projects +ShowProject=Show project +SetProject=Set project +NoProject=No project defined or owned +NbOpenTasks=Nb of opened tasks +NbOfProjects=Nb of projects +TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user +TimesSpent=Time spent +RefTask=Ref. task +LabelTask=Label task +TaskTimeSpent=Time spent on tasks +TaskTimeUser=User +TaskTimeNote=Note +TaskTimeDate=Date +TasksOnOpenedProject=Tasks on opened projects +WorkloadNotDefined=Workload not defined +NewTimeSpent=New time spent +MyTimeSpent=My time spent +MyTasks=My tasks +Tasks=Tasks +Task=Task +TaskDateStart=Task start date +TaskDateEnd=Task end date +TaskDescription=Task description +NewTask=New task +AddTask=Create task +AddDuration=Add duration +Activity=Activity +Activities=Tasks/activities +MyActivity=My activity +MyActivities=My tasks/activities +MyProjects=My projects +DurationEffective=Effective duration +Progress=Progress +ProgressDeclared=Declared progress +ProgressCalculated=Calculated progress +Time=Time +ListProposalsAssociatedProject=List of the commercial proposals associated with the project +ListOrdersAssociatedProject=List of customer's orders associated with the project +ListInvoicesAssociatedProject=List of customer's invoices associated with the project +ListPredefinedInvoicesAssociatedProject=List of customer's predefined invoices associated with project +ListSupplierOrdersAssociatedProject=List of supplier's orders associated with the project +ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated with the project +ListContractAssociatedProject=List of contracts associated with the project +ListFichinterAssociatedProject=List of interventions associated with the project +ListExpenseReportsAssociatedProject=List of expense reports associated with the project +ListActionsAssociatedProject=List of events associated with the project +ActivityOnProjectThisWeek=Activity on project this week +ActivityOnProjectThisMonth=Activity on project this month +ActivityOnProjectThisYear=Activity on project this year +ChildOfTask=Child of project/task +NotOwnerOfProject=Not owner of this private project +AffectedTo=Allocated to +CantRemoveProject=This project can't be removed as it is referenced by some other objects (invoice, orders or other). See referers tab. +ValidateProject=Validate projet +ConfirmValidateProject=Are you sure you want to validate this project ? +CloseAProject=Close project +ConfirmCloseAProject=Are you sure you want to close this project ? +ReOpenAProject=Open project +ConfirmReOpenAProject=Are you sure you want to re-open this project ? +ProjectContact=Project contacts +ActionsOnProject=Events on project +YouAreNotContactOfProject=You are not a contact of this private project +DeleteATimeSpent=Delete time spent +ConfirmDeleteATimeSpent=Are you sure you want to delete this time spent ? +DoNotShowMyTasksOnly=See also tasks not assigned to me +ShowMyTasksOnly=View only tasks assigned to me +TaskRessourceLinks=Ressources +ProjectsDedicatedToThisThirdParty=Projects dedicated to this third party +NoTasks=No tasks for this project +LinkedToAnotherCompany=Linked to other third party +TaskIsNotAffectedToYou=Task not assigned to you +ErrorTimeSpentIsEmpty=Time spent is empty +ThisWillAlsoRemoveTasks=This action will also delete all tasks of project (%s tasks at the moment) and all inputs of time spent. +IfNeedToUseOhterObjectKeepEmpty=If some objects (invoice, order, ...), belonging to another third party, must be linked to the project to create, keep this empty to have the project being multi third parties. +CloneProject=Clone project +CloneTasks=Clone tasks +CloneContacts=Clone contacts +CloneNotes=Clone notes +CloneProjectFiles=Clone project joined files +CloneTaskFiles=Clone task(s) joined files (if task(s) cloned) +CloneMoveDate=Update project/tasks dates from now ? +ConfirmCloneProject=Are you sure to clone this project ? +ProjectReportDate=Change task date according project start date +ErrorShiftTaskDate=Impossible to shift task date according to new project start date +ProjectsAndTasksLines=Projects and tasks +ProjectCreatedInDolibarr=Project %s created +TaskCreatedInDolibarr=Task %s created +TaskModifiedInDolibarr=Task %s modified +TaskDeletedInDolibarr=Task %s deleted +##### Types de contacts ##### +TypeContact_project_internal_PROJECTLEADER=Project leader +TypeContact_project_external_PROJECTLEADER=Project leader +TypeContact_project_internal_PROJECTCONTRIBUTOR=Contributor +TypeContact_project_external_PROJECTCONTRIBUTOR=Contributor +TypeContact_project_task_internal_TASKEXECUTIVE=Task executive +TypeContact_project_task_external_TASKEXECUTIVE=Task executive +TypeContact_project_task_internal_TASKCONTRIBUTOR=Contributor +TypeContact_project_task_external_TASKCONTRIBUTOR=Contributor +SelectElement=Select element +AddElement=Link to element +UnlinkElement=Unlink element +# Documents models +DocumentModelBaleine=A complete project's report model (logo...) +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation +ProjectReferers=Refering objects +SearchAProject=Search a project +ProjectMustBeValidatedFirst=Project must be validated first +ProjectDraft=Draft projects +FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action +TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/bn_BD/propal.lang b/htdocs/langs/bn_BD/propal.lang new file mode 100644 index 00000000000..2b6d12870a1 --- /dev/null +++ b/htdocs/langs/bn_BD/propal.lang @@ -0,0 +1,100 @@ +# Dolibarr language file - Source file is en_US - propal +Proposals=Commercial proposals +Proposal=Commercial proposal +ProposalShort=Proposal +ProposalsDraft=Draft commercial proposals +ProposalDraft=Draft commercial proposal +ProposalsOpened=Opened commercial proposals +Prop=Commercial proposals +CommercialProposal=Commercial proposal +CommercialProposals=Commercial proposals +ProposalCard=Proposal card +NewProp=New commercial proposal +NewProposal=New commercial proposal +NewPropal=New proposal +Prospect=Prospect +ProspectList=Prospect list +DeleteProp=Delete commercial proposal +ValidateProp=Validate commercial proposal +AddProp=Create proposal +ConfirmDeleteProp=Are you sure you want to delete this commercial proposal ? +ConfirmValidateProp=Are you sure you want to validate this commercial proposal under name %s ? +LastPropals=Last %s proposals +LastClosedProposals=Last %s closed proposals +LastModifiedProposals=Last %s modified proposals +AllPropals=All proposals +LastProposals=Last proposals +SearchAProposal=Search a proposal +ProposalsStatistics=Commercial proposal's statistics +NumberOfProposalsByMonth=Number by month +AmountOfProposalsByMonthHT=Amount by month (net of tax) +NbOfProposals=Number of commercial proposals +ShowPropal=Show proposal +PropalsDraft=Drafts +PropalsOpened=Opened +PropalsNotBilled=Closed not billed +PropalStatusDraft=Draft (needs to be validated) +PropalStatusValidated=Validated (proposal is open) +PropalStatusOpened=Validated (proposal is open) +PropalStatusClosed=Closed +PropalStatusSigned=Signed (needs billing) +PropalStatusNotSigned=Not signed (closed) +PropalStatusBilled=Billed +PropalStatusDraftShort=Draft +PropalStatusValidatedShort=Validated +PropalStatusOpenedShort=Opened +PropalStatusClosedShort=Closed +PropalStatusSignedShort=Signed +PropalStatusNotSignedShort=Not signed +PropalStatusBilledShort=Billed +PropalsToClose=Commercial proposals to close +PropalsToBill=Signed commercial proposals to bill +ListOfProposals=List of commercial proposals +ActionsOnPropal=Events on proposal +NoOpenedPropals=No opened commercial proposals +NoOtherOpenedPropals=No other opened commercial proposals +RefProposal=Commercial proposal ref +SendPropalByMail=Send commercial proposal by mail +AssociatedDocuments=Documents associated with the proposal: +ErrorCantOpenDir=Can't open directory +DatePropal=Date of proposal +DateEndPropal=Validity ending date +DateEndPropalShort=Date end +ValidityDuration=Validity duration +CloseAs=Close with status +ClassifyBilled=Classify billed +BuildBill=Build invoice +ErrorPropalNotFound=Propal %s not found +Estimate=Estimate : +EstimateShort=Estimate +OtherPropals=Other proposals +AddToDraftProposals=Add to draft proposal +NoDraftProposals=No draft proposals +CopyPropalFrom=Create commercial proposal by copying existing proposal +CreateEmptyPropal=Create empty commercial proposals vierge or from list of products/services +DefaultProposalDurationValidity=Default commercial proposal validity duration (in days) +UseCustomerContactAsPropalRecipientIfExist=Use customer contact address if defined instead of third party address as proposal recipient address +ClonePropal=Clone commercial proposal +ConfirmClonePropal=Are you sure you want to clone the commercial proposal %s ? +ConfirmReOpenProp=Are you sure you want to open back the commercial proposal %s ? +ProposalsAndProposalsLines=Commercial proposal and lines +ProposalLine=Proposal line +AvailabilityPeriod=Availability delay +SetAvailability=Set availability delay +AfterOrder=after order +##### Availability ##### +AvailabilityTypeAV_NOW=Immediate +AvailabilityTypeAV_1W=1 week +AvailabilityTypeAV_2W=2 weeks +AvailabilityTypeAV_3W=3 weeks +AvailabilityTypeAV_1M=1 month +##### Types de contacts ##### +TypeContact_propal_internal_SALESREPFOLL=Representative following-up proposal +TypeContact_propal_external_BILLING=Customer invoice contact +TypeContact_propal_external_CUSTOMER=Customer contact following-up proposal +# Document models +DocModelAzurDescription=A complete proposal model (logo...) +DocModelJauneDescription=Jaune proposal model +DefaultModelPropalCreate=Default model creation +DefaultModelPropalToBill=Default template when closing a business proposal (to be invoiced) +DefaultModelPropalClosed=Default template when closing a business proposal (unbilled) diff --git a/htdocs/langs/bn_BD/resource.lang b/htdocs/langs/bn_BD/resource.lang new file mode 100644 index 00000000000..32bdd92f884 --- /dev/null +++ b/htdocs/langs/bn_BD/resource.lang @@ -0,0 +1,34 @@ + +MenuResourceIndex=Resources +MenuResourceAdd=New resource +MenuResourcePlanning=Resource planning +DeleteResource=Delete resource +ConfirmDeleteResourceElement=Confirm delete the resource for this element +NoResourceInDatabase=No resource in database. +NoResourceLinked=No resource linked + +ResourcePageIndex=Resources list +ResourceSingular=Resource +ResourceCard=Resource card +AddResource=Create a resource +ResourceFormLabel_ref=Resource name +ResourceType=Resource type +ResourceFormLabel_description=Resource description + +ResourcesLinkedToElement=Resources linked to element + +ShowResourcePlanning=Show resource planning +GotoDate=Go to date + +ResourceElementPage=Element resources +ResourceCreatedWithSuccess=Resource successfully created +RessourceLineSuccessfullyDeleted=Resource line successfully deleted +RessourceLineSuccessfullyUpdated=Resource line successfully updated +ResourceLinkedWithSuccess=Resource linked with success + +TitleResourceCard=Resource card +ConfirmDeleteResource=Confirm to delete this resource +RessourceSuccessfullyDeleted=Resource successfully deleted +DictionaryResourceType=Type of resources + +SelectResource=Select resource diff --git a/htdocs/langs/bn_BD/salaries.lang b/htdocs/langs/bn_BD/salaries.lang new file mode 100644 index 00000000000..28c21adfad3 --- /dev/null +++ b/htdocs/langs/bn_BD/salaries.lang @@ -0,0 +1,13 @@ +# Dolibarr language file - Source file is en_US - users +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge +Salary=Salary +Salaries=Salaries +Employee=Employee +NewSalaryPayment=New salary payment +SalaryPayment=Salary payment +SalariesPayments=Salaries payments +ShowSalaryPayment=Show salary payment +THM=Average hourly price +TJM=Average daily price +CurrentSalary=Current salary diff --git a/htdocs/langs/bn_BD/sendings.lang b/htdocs/langs/bn_BD/sendings.lang new file mode 100644 index 00000000000..b1ff55f71c1 --- /dev/null +++ b/htdocs/langs/bn_BD/sendings.lang @@ -0,0 +1,85 @@ +# Dolibarr language file - Source file is en_US - sendings +RefSending=Ref. shipment +Sending=Shipment +Sendings=Shipments +Shipment=Shipment +Shipments=Shipments +ShowSending=Show Sending +Receivings=Receipts +SendingsArea=Shipments area +ListOfSendings=List of shipments +SendingMethod=Shipping method +SendingReceipt=Shipping receipt +LastSendings=Last %s shipments +SearchASending=Search for shipment +StatisticsOfSendings=Statistics for shipments +NbOfSendings=Number of shipments +NumberOfShipmentsByMonth=Number of shipments by month +SendingCard=Shipment card +NewSending=New shipment +CreateASending=Create a shipment +CreateSending=Create shipment +QtyOrdered=Qty ordered +QtyShipped=Qty shipped +QtyToShip=Qty to ship +QtyReceived=Qty received +KeepToShip=Remain to ship +OtherSendingsForSameOrder=Other shipments for this order +DateSending=Date sending order +DateSendingShort=Date sending order +SendingsForSameOrder=Shipments for this order +SendingsAndReceivingForSameOrder=Shipments and receivings for this order +SendingsToValidate=Shipments to validate +StatusSendingCanceled=Canceled +StatusSendingDraft=Draft +StatusSendingValidated=Validated (products to ship or already shipped) +StatusSendingProcessed=Processed +StatusSendingCanceledShort=Canceled +StatusSendingDraftShort=Draft +StatusSendingValidatedShort=Validated +StatusSendingProcessedShort=Processed +SendingSheet=Shipment sheet +Carriers=Carriers +Carrier=Carrier +CarriersArea=Carriers area +NewCarrier=New carrier +ConfirmDeleteSending=Are you sure you want to delete this shipment ? +ConfirmValidateSending=Are you sure you want to validate this shipment with reference %s ? +ConfirmCancelSending=Are you sure you want to cancel this shipment ? +GenericTransport=Generic transport +Enlevement=Gotten by customer +DocumentModelSimple=Simple document model +DocumentModelMerou=Merou A5 model +WarningNoQtyLeftToSend=Warning, no products waiting to be shipped. +StatsOnShipmentsOnlyValidated=Statistics conducted on shipments only validated. Date used is date of validation of shipment (planed delivery date is not always known). +DateDeliveryPlanned=Planed date of delivery +DateReceived=Date delivery received +SendShippingByEMail=Send shipment by EMail +SendShippingRef=Submission of shipment %s +ActionsOnShipping=Events on shipment +LinkToTrackYourPackage=Link to track your package +ShipmentCreationIsDoneFromOrder=For the moment, creation of a new shipment is done from the order card. +RelatedShippings=Related shipments +ShipmentLine=Shipment line +CarrierList=List of transporters +SendingRunning=Product from ordered customer orders +SuppliersReceiptRunning=Product from ordered supplier orders +ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders +ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders +ProductQtyInShipmentAlreadySent=Product quantity from opended customer order already sent +ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received + +# Sending methods +SendingMethodCATCH=Catch by customer +SendingMethodTRANS=Transporter +SendingMethodCOLSUI=Colissimo +# ModelDocument +DocumentModelSirocco=Simple document model for delivery receipts +DocumentModelTyphon=More complete document model for delivery receipts (logo...) +Error_EXPEDITION_ADDON_NUMBER_NotDefined=Constant EXPEDITION_ADDON_NUMBER not defined +SumOfProductVolumes=Sum of product volumes +SumOfProductWeights=Sum of product weights + +# warehouse details +DetailWarehouseNumber= Warehouse details +DetailWarehouseFormat= W:%s (Qty : %d) diff --git a/htdocs/langs/bn_BD/sms.lang b/htdocs/langs/bn_BD/sms.lang new file mode 100644 index 00000000000..4e89bb24730 --- /dev/null +++ b/htdocs/langs/bn_BD/sms.lang @@ -0,0 +1,53 @@ +# Dolibarr language file - Source file is en_US - sms +Sms=Sms +SmsSetup=Sms setup +SmsDesc=This page allows you to define globals options on SMS features +SmsCard=SMS Card +AllSms=All SMS campains +SmsTargets=Targets +SmsRecipients=Targets +SmsRecipient=Target +SmsTitle=Description +SmsFrom=Sender +SmsTo=Target +SmsTopic=Topic of SMS +SmsText=Message +SmsMessage=SMS Message +ShowSms=Show Sms +ListOfSms=List SMS campains +NewSms=New SMS campain +EditSms=Edit Sms +ResetSms=New sending +DeleteSms=Delete Sms campain +DeleteASms=Remove a Sms campain +PreviewSms=Previuw Sms +PrepareSms=Prepare Sms +CreateSms=Create Sms +SmsResult=Result of Sms sending +TestSms=Test Sms +ValidSms=Validate Sms +ApproveSms=Approve Sms +SmsStatusDraft=Draft +SmsStatusValidated=Validated +SmsStatusApproved=Approved +SmsStatusSent=Sent +SmsStatusSentPartialy=Sent partially +SmsStatusSentCompletely=Sent completely +SmsStatusError=Error +SmsStatusNotSent=Not sent +SmsSuccessfulySent=Sms correctly sent (from %s to %s) +ErrorSmsRecipientIsEmpty=Number of target is empty +WarningNoSmsAdded=No new phone number to add to target list +ConfirmValidSms=Do you confirm validation of this campain ? +ConfirmResetMailing=Warning, if you make a reinit of Sms campain %s, you will allow to make a mass sending of it a second time. Is it really what you wan to do ? +ConfirmDeleteMailing=Do you confirm removing of campain ? +NbOfRecipients=Number of targets +NbOfUniqueSms=Nb dof unique phone numbers +NbOfSms=Nbre of phon numbers +ThisIsATestMessage=This is a test message +SendSms=Send SMS +SmsInfoCharRemain=Nb of remaining characters +SmsInfoNumero= (format international ie : +33899701761) +DelayBeforeSending=Delay before sending (minutes) +SmsNoPossibleRecipientFound=No target available. Check setup of your SMS provider. + diff --git a/htdocs/langs/bn_BD/stocks.lang b/htdocs/langs/bn_BD/stocks.lang new file mode 100644 index 00000000000..29706d17615 --- /dev/null +++ b/htdocs/langs/bn_BD/stocks.lang @@ -0,0 +1,134 @@ +# Dolibarr language file - Source file is en_US - stocks +WarehouseCard=Warehouse card +Warehouse=Warehouse +Warehouses=Warehouses +NewWarehouse=New warehouse / Stock area +WarehouseEdit=Modify warehouse +MenuNewWarehouse=New warehouse +WarehouseOpened=Warehouse opened +WarehouseClosed=Warehouse closed +WarehouseSource=Source warehouse +WarehouseSourceNotDefined=No warehouse defined, +AddOne=Add one +WarehouseTarget=Target warehouse +ValidateSending=Delete sending +CancelSending=Cancel sending +DeleteSending=Delete sending +Stock=Stock +Stocks=Stocks +Movement=Movement +Movements=Movements +ErrorWarehouseRefRequired=Warehouse reference name is required +ErrorWarehouseLabelRequired=Warehouse label is required +CorrectStock=Correct stock +ListOfWarehouses=List of warehouses +ListOfStockMovements=List of stock movements +StocksArea=Warehouses area +Location=Location +LocationSummary=Short name location +NumberOfDifferentProducts=Number of different products +NumberOfProducts=Total number of products +LastMovement=Last movement +LastMovements=Last movements +Units=Units +Unit=Unit +StockCorrection=Correct stock +StockTransfer=Stock transfer +StockMovement=Transfer +StockMovements=Stock transfers +LabelMovement=Movement label +NumberOfUnit=Number of units +UnitPurchaseValue=Unit purchase price +TotalStock=Total in stock +StockTooLow=Stock too low +StockLowerThanLimit=Stock lower than alert limit +EnhancedValue=Value +PMPValue=Weighted average price +PMPValueShort=WAP +EnhancedValueOfWarehouses=Warehouses value +UserWarehouseAutoCreate=Create a warehouse automatically when creating a user +IndependantSubProductStock=Product stock and subproduct stock are independant +QtyDispatched=Quantity dispatched +QtyDispatchedShort=Qty dispatched +QtyToDispatchShort=Qty to dispatch +OrderDispatch=Stock dispatching +RuleForStockManagementDecrease=Rule for stock management decrease +RuleForStockManagementIncrease=Rule for stock management increase +DeStockOnBill=Decrease real stocks on customers invoices/credit notes validation +DeStockOnValidateOrder=Decrease real stocks on customers orders validation +DeStockOnShipment=Decrease real stocks on shipment validation +ReStockOnBill=Increase real stocks on suppliers invoices/credit notes validation +ReStockOnValidateOrder=Increase real stocks on suppliers orders approbation +ReStockOnDispatchOrder=Increase real stocks on manual dispatching into warehouses, after supplier order receiving +ReStockOnDeleteInvoice=Increase real stocks on invoice deletion +OrderStatusNotReadyToDispatch=Order has not yet or no more a status that allows dispatching of products in stock warehouses. +StockDiffPhysicTeoric=Explanation for difference between physical and theoretical stock +NoPredefinedProductToDispatch=No predefined products for this object. So no dispatching in stock is required. +DispatchVerb=Dispatch +StockLimitShort=Limit for alert +StockLimit=Stock limit for alert +PhysicalStock=Physical stock +RealStock=Real Stock +VirtualStock=Virtual stock +MininumStock=Minimum stock +StockUp=Stock up +MininumStockShort=Stock min +StockUpShort=Stock up +IdWarehouse=Id warehouse +DescWareHouse=Description warehouse +LieuWareHouse=Localisation warehouse +WarehousesAndProducts=Warehouses and products +AverageUnitPricePMPShort=Weighted average input price +AverageUnitPricePMP=Weighted average input price +SellPriceMin=Selling Unit Price +EstimatedStockValueSellShort=Value to sell +EstimatedStockValueSell=Value to Sell +EstimatedStockValueShort=Input stock value +EstimatedStockValue=Input stock value +DeleteAWarehouse=Delete a warehouse +ConfirmDeleteWarehouse=Are you sure you want to delete the warehouse %s ? +PersonalStock=Personal stock %s +ThisWarehouseIsPersonalStock=This warehouse represents personal stock of %s %s +SelectWarehouseForStockDecrease=Choose warehouse to use for stock decrease +SelectWarehouseForStockIncrease=Choose warehouse to use for stock increase +NoStockAction=No stock action +LastWaitingSupplierOrders=Orders waiting for receptions +DesiredStock=Desired stock +StockToBuy=To order +Replenishment=Replenishment +ReplenishmentOrders=Replenishment orders +VirtualDiffersFromPhysical=According to increase/decrease stock options, physical stock and virtual stock (physical + current orders) may differs +UseVirtualStockByDefault=Use virtual stock by default, instead of physical stock, for replenishment feature +UseVirtualStock=Use virtual stock +UsePhysicalStock=Use physical stock +CurentSelectionMode=Curent selection mode +CurentlyUsingVirtualStock=Virtual stock +CurentlyUsingPhysicalStock=Physical stock +RuleForStockReplenishment=Rule for stocks replenishment +SelectProductWithNotNullQty=Select at least one product with a qty not null and a supplier +AlertOnly= Alerts only +WarehouseForStockDecrease=The warehouse %s will be used for stock decrease +WarehouseForStockIncrease=The warehouse %s will be used for stock increase +ForThisWarehouse=For this warehouse +ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. +Replenishments=Replenishments +NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) +NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) +MassMovement=Mass movement +MassStockMovement=Mass stock movement +SelectProductInAndOutWareHouse=Select a product, a quantity, a source warehouse and a target warehouse, then click "%s". Once this is done for all required movements, click onto "%s". +RecordMovement=Record transfert +ReceivingForSameOrder=Receipts for this order +StockMovementRecorded=Stock movements recorded +RuleForStockAvailability=Rules on stock requirements +StockMustBeEnoughForInvoice=Stock level must be enough to add product/service into invoice +StockMustBeEnoughForOrder=Stock level must be enough to add product/service into order +StockMustBeEnoughForShipment= Stock level must be enough to add product/service into shipment +MovementLabel=Label of movement +InventoryCode=Movement or inventory code +IsInPackage=Contained into package +ShowWarehouse=Show warehouse +MovementCorrectStock=Stock content correction for product %s +MovementTransferStock=Stock transfer of product %s into another warehouse +WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when batch module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps. diff --git a/htdocs/langs/bn_BD/suppliers.lang b/htdocs/langs/bn_BD/suppliers.lang new file mode 100644 index 00000000000..baf573c66ac --- /dev/null +++ b/htdocs/langs/bn_BD/suppliers.lang @@ -0,0 +1,45 @@ +# Dolibarr language file - Source file is en_US - suppliers +Suppliers=Suppliers +AddSupplier=Create a supplier +SupplierRemoved=Supplier removed +SuppliersInvoice=Suppliers invoice +NewSupplier=New supplier +History=History +ListOfSuppliers=List of suppliers +ShowSupplier=Show supplier +OrderDate=Order date +BuyingPrice=Buying price +BuyingPriceMin=Minimum buying price +BuyingPriceMinShort=Min buying price +TotalBuyingPriceMin=Total of subproducts buying prices +SomeSubProductHaveNoPrices=Some sub-products have no price defined +AddSupplierPrice=Add supplier price +ChangeSupplierPrice=Change supplier price +ErrorQtyTooLowForThisSupplier=Quantity too low for this supplier or no price defined on this product for this supplier +ErrorSupplierCountryIsNotDefined=Country for this supplier is not defined. Correct this first. +ProductHasAlreadyReferenceInThisSupplier=This product has already a reference in this supplier +ReferenceSupplierIsAlreadyAssociatedWithAProduct=This reference supplier is already associated with a reference: %s +NoRecordedSuppliers=No suppliers recorded +SupplierPayment=Supplier payment +SuppliersArea=Suppliers area +RefSupplierShort=Ref. supplier +Availability=Availability +ExportDataset_fournisseur_1=Supplier invoices list and invoice lines +ExportDataset_fournisseur_2=Supplier invoices and payments +ExportDataset_fournisseur_3=Supplier orders and order lines +ApproveThisOrder=Approve this order +ConfirmApproveThisOrder=Are you sure you want to approve order %s ? +DenyingThisOrder=Deny this order +ConfirmDenyingThisOrder=Are you sure you want to deny this order %s ? +ConfirmCancelThisOrder=Are you sure you want to cancel this order %s ? +AddCustomerOrder=Create customer order +AddCustomerInvoice=Create customer invoice +AddSupplierOrder=Create supplier order +AddSupplierInvoice=Create supplier invoice +ListOfSupplierProductForSupplier=List of products and prices for supplier %s +NoneOrBatchFileNeverRan=None or batch %s not ran recently +SentToSuppliers=Sent to suppliers +ListOfSupplierOrders=List of supplier orders +MenuOrdersSupplierToBill=Supplier orders to invoice +NbDaysToDelivery=Delivery delay in days +DescNbDaysToDelivery=The biggest delay is display among order product list diff --git a/htdocs/langs/bn_BD/trips.lang b/htdocs/langs/bn_BD/trips.lang new file mode 100644 index 00000000000..ba36fc9b07b --- /dev/null +++ b/htdocs/langs/bn_BD/trips.lang @@ -0,0 +1,126 @@ +# Dolibarr language file - Source file is en_US - trips +ExpenseReport=Expense report +ExpenseReports=Expense reports +Trip=Expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense report +ListOfFees=List of fees +NewTrip=New expense report +CompanyVisited=Company/foundation visited +Kilometers=Kilometers +FeesKilometersOrAmout=Amount or kilometers +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report ? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +SearchATripAndExpense=Search an expense report +ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to inform for validation. +TripSociete=Information company +TripSalarie=Informations user +TripNDF=Informations expense report +DeleteLine=Delete a ligne of the expense report +ConfirmDeleteLine=Are you sure you want to delete this line ? +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRANSPORTATION=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hostel +TF_TAXI=Taxi + +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +ListTripsAndExpenses=List of expense reports +AucuneNDF=No expense reports found for this criteria +AucuneLigne=There is no expense report declared yet +AddLine=Add a line +AddLineMini=Add + +Date_DEBUT=Period date start +Date_FIN=Period date end +ModePaiement=Payment mode +Note=Note +Project=Project + +VALIDATOR=User to inform for approbation +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paied by +REFUSEUR=Denied by +CANCEL_USER=Canceled by + +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason + +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_VALIDE=Validation date +DateApprove=Approving date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date + +Deny=Deny +TO_PAID=Pay +BROUILLONNER=Reopen +SendToValid=Sent to approve +ModifyInfoGen=Edit +ValidateAndSubmit=Validate and submit for approval + +NOT_VALIDATOR=You are not allowed to approve this expense report +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. + +RefuseTrip=Deny an expense report +ConfirmRefuseTrip=Are you sure you want to deny this expense report ? + +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report ? + +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? + +CancelTrip=Cancel an expense report +ConfirmCancelTrip=Are you sure you want to cancel this expense report ? + +BrouillonnerTrip=Move back expense report to status "Draft"n +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? + +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report ? + +Synchro_Compta=NDF <-> Compte + +TripSynch=Synchronisation : Notes de frais <-> Compte courant +TripToSynch=Notes de frais à intégrer dans la compta +AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". +ViewAccountSynch=Voir le compte + +ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? +ndfToAccount=Note de frais - Intégration + +ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du compte courant? +AccountToNdf=Note de frais - Retrait + +LINE_NOT_ADDED=Ligne non ajoutée : +NO_PROJECT=Aucun projet sélectionné. +NO_DATE=Aucune date sélectionnée. +NO_PRICE=Aucun prix indiqué. + +TripForValid=à Valider +TripForPaid=à Payer +TripPaid=Payée + +NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/bn_BD/users.lang b/htdocs/langs/bn_BD/users.lang new file mode 100644 index 00000000000..baf209f9d1c --- /dev/null +++ b/htdocs/langs/bn_BD/users.lang @@ -0,0 +1,122 @@ +# Dolibarr language file - Source file is en_US - users +HRMArea=HRM area +UserCard=User card +ContactCard=Contact card +GroupCard=Group card +NoContactCard=No card among contacts +Permission=Permission +Permissions=Permissions +EditPassword=Edit password +SendNewPassword=Regenerate and send password +ReinitPassword=Regenerate password +PasswordChangedTo=Password changed to: %s +SubjectNewPassword=Your new password for Dolibarr +AvailableRights=Available permissions +OwnedRights=Owned permissions +GroupRights=Group permissions +UserRights=User permissions +UserGUISetup=User display setup +DisableUser=Disable +DisableAUser=Disable a user +DeleteUser=Delete +DeleteAUser=Delete a user +DisableGroup=Disable +DisableAGroup=Disable a group +EnableAUser=Enable a user +EnableAGroup=Enable a group +DeleteGroup=Delete +DeleteAGroup=Delete a group +ConfirmDisableUser=Are you sure you want to disable user %s ? +ConfirmDisableGroup=Are you sure you want to disable group %s ? +ConfirmDeleteUser=Are you sure you want to delete user %s ? +ConfirmDeleteGroup=Are you sure you want to delete group %s ? +ConfirmEnableUser=Are you sure you want to enable user %s ? +ConfirmEnableGroup=Are you sure you want to enable group %s ? +ConfirmReinitPassword=Are you sure you want to generate a new password for user %s ? +ConfirmSendNewPassword=Are you sure you want to generate and send new password for user %s ? +NewUser=New user +CreateUser=Create user +SearchAGroup=Search a group +SearchAUser=Search a user +LoginNotDefined=Login is not defined. +NameNotDefined=Name is not defined. +ListOfUsers=List of users +Administrator=Administrator +SuperAdministrator=Super Administrator +SuperAdministratorDesc=Global administrator +AdministratorDesc=Administrator's entity +DefaultRights=Default permissions +DefaultRightsDesc=Define here default permissions that are automatically granted to a new created user (Go on user card to change permission of an existing user). +DolibarrUsers=Dolibarr users +LastName=Name +FirstName=First name +ListOfGroups=List of groups +NewGroup=New group +CreateGroup=Create group +RemoveFromGroup=Remove from group +PasswordChangedAndSentTo=Password changed and sent to %s. +PasswordChangeRequestSent=Request to change password for %s sent to %s. +MenuUsersAndGroups=Users & Groups +LastGroupsCreated=Last %s created groups +LastUsersCreated=Last %s users created +ShowGroup=Show group +ShowUser=Show user +NonAffectedUsers=Non assigned users +UserModified=User modified successfully +PhotoFile=Photo file +UserWithDolibarrAccess=User with Dolibarr access +ListOfUsersInGroup=List of users in this group +ListOfGroupsForUser=List of groups for this user +UsersToAdd=Users to add to this group +GroupsToAdd=Groups to add to this user +NoLogin=No login +LinkToCompanyContact=Link to third party / contact +LinkedToDolibarrMember=Link to member +LinkedToDolibarrUser=Link to Dolibarr user +LinkedToDolibarrThirdParty=Link to Dolibarr third party +CreateDolibarrLogin=Create a user +CreateDolibarrThirdParty=Create a third party +LoginAccountDisable=Account disabled, put a new login to activate it. +LoginAccountDisableInDolibarr=Account disabled in Dolibarr. +LoginAccountDisableInLdap=Account disabled in the domain. +UsePersonalValue=Use personal value +GuiLanguage=Interface language +InternalUser=Internal user +MyInformations=My data +ExportDataset_user_1=Dolibarr's users and properties +DomainUser=Domain user %s +Reactivate=Reactivate +CreateInternalUserDesc=This form allows you to create an user internal to your company/foundation. To create an external user (customer, supplier, ...), use the button 'Create Dolibarr user' from third party's contact card. +InternalExternalDesc=An internal user is a user that is part of your company/foundation.
An external user is a customer, supplier or other.

In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) +PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. +Inherited=Inherited +UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) +UserWillBeExternalUser=Created user will be an external user (because linked to a particular third party) +IdPhoneCaller=Id phone caller +UserLogged=User %s login +UserLogoff=User %s logout +NewUserCreated=User %s created +NewUserPassword=Password change for %s +EventUserModified=User %s modified +UserDisabled=User %s disabled +UserEnabled=User %s activated +UserDeleted=User %s removed +NewGroupCreated=Group %s created +GroupModified=Group %s modified +GroupDeleted=Group %s removed +ConfirmCreateContact=Are you sure you want to create a Dolibarr account for this contact ? +ConfirmCreateLogin=Are you sure you want to create a Dolibarr account for this member ? +ConfirmCreateThirdParty=Are you sure you want to create a third party for this member ? +LoginToCreate=Login to create +NameToCreate=Name of third party to create +YourRole=Your roles +YourQuotaOfUsersIsReached=Your quota of active users is reached ! +NbOfUsers=Nb of users +DontDowngradeSuperAdmin=Only a superadmin can downgrade a superadmin +HierarchicalResponsible=Supervisor +HierarchicView=Hierarchical view +UseTypeFieldToChange=Use field Type to change +OpenIDURL=OpenID URL +LoginUsingOpenID=Use OpenID to login +WeeklyHours=Weekly hours +ColorUser=Color of the user diff --git a/htdocs/langs/bn_BD/withdrawals.lang b/htdocs/langs/bn_BD/withdrawals.lang new file mode 100644 index 00000000000..c36ffbf025a --- /dev/null +++ b/htdocs/langs/bn_BD/withdrawals.lang @@ -0,0 +1,97 @@ +# Dolibarr language file - Source file is en_US - withdrawals +StandingOrdersArea=Standing orders area +CustomersStandingOrdersArea=Customers standing orders area +StandingOrders=Standing orders +StandingOrder=Standing orders +NewStandingOrder=New standing order +StandingOrderToProcess=To process +StandingOrderProcessed=Processed +Withdrawals=Withdrawals +Withdrawal=Withdrawal +WithdrawalsReceipts=Withdrawal receipts +WithdrawalReceipt=Withdrawal receipt +WithdrawalReceiptShort=Receipt +LastWithdrawalReceipts=Last %s withdrawal receipts +WithdrawedBills=Withdrawn invoices +WithdrawalsLines=Withdrawal lines +RequestStandingOrderToTreat=Request for standing orders to process +RequestStandingOrderTreated=Request for standing orders processed +NotPossibleForThisStatusOfWithdrawReceiptORLine=Not yet possible. Withdraw status must be set to 'credited' before declaring reject on specific lines. +CustomersStandingOrders=Customer standing orders +CustomerStandingOrder=Customer standing order +NbOfInvoiceToWithdraw=Nb. of invoice with withdraw request +NbOfInvoiceToWithdrawWithInfo=Nb. of invoice with withdraw request for customers having defined bank account information +InvoiceWaitingWithdraw=Invoice waiting for withdraw +AmountToWithdraw=Amount to withdraw +WithdrawsRefused=Withdraws refused +NoInvoiceToWithdraw=No customer invoice in payment mode "withdraw" is waiting. Go on 'Withdraw' tab on invoice card to make a request. +ResponsibleUser=Responsible user +WithdrawalsSetup=Withdrawal setup +WithdrawStatistics=Withdraw's statistics +WithdrawRejectStatistics=Withdraw reject's statistics +LastWithdrawalReceipt=Last %s withdrawing receipts +MakeWithdrawRequest=Make a withdraw request +ThirdPartyBankCode=Third party bank code +ThirdPartyDeskCode=Third party desk code +NoInvoiceCouldBeWithdrawed=No invoice withdrawed with success. Check that invoice are on companies with a valid BAN. +ClassCredited=Classify credited +ClassCreditedConfirm=Are you sure you want to classify this withdrawal receipt as credited on your bank account? +TransData=Transmission date +TransMetod=Transmission method +Send=Send +Lines=Lines +StandingOrderReject=Issue a rejection +WithdrawalRefused=Withdrawal refused +WithdrawalRefusedConfirm=Are you sure you want to enter a withdrawal rejection for society +RefusedData=Date of rejection +RefusedReason=Reason for rejection +RefusedInvoicing=Billing the rejection +NoInvoiceRefused=Do not charge the rejection +InvoiceRefused=Invoice refused (Charge the rejection to customer) +Status=Status +StatusUnknown=Unknown +StatusWaiting=Waiting +StatusTrans=Sent +StatusCredited=Credited +StatusRefused=Refused +StatusMotif0=Unspecified +StatusMotif1=Insufficient funds +StatusMotif2=Request contested +StatusMotif3=No Withdrawal order +StatusMotif4=Customer Order +StatusMotif5=RIB unusable +StatusMotif6=Account without balance +StatusMotif7=Judicial Decision +StatusMotif8=Other reason +CreateAll=Withdraw all +CreateGuichet=Only office +CreateBanque=Only bank +OrderWaiting=Waiting for treatment +NotifyTransmision=Withdrawal Transmission +NotifyEmision=Withdrawal Emission +NotifyCredit=Withdrawal Credit +NumeroNationalEmetter=National Transmitter Number +PleaseSelectCustomerBankBANToWithdraw=Select information about customer bank account to withdraw +WithBankUsingRIB=For bank accounts using RIB +WithBankUsingBANBIC=For bank accounts using IBAN/BIC/SWIFT +BankToReceiveWithdraw=Bank account to receive withdraws +CreditDate=Credit on +WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported) +ShowWithdraw=Show Withdraw +IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one withdrawal payment not yet processed, it won't be set as paid to allow prior withdrawal management. +DoStandingOrdersBeforePayments=This tab allows you to request a standing order. Once done, go into menu Bank->Withdrawal to manage the standing order. When standing order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null. +WithdrawalFile=Withdrawal file +SetToStatusSent=Set to status "File Sent" +ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid" +StatisticsByLineStatus=Statistics by status of lines + +### Notifications +InfoCreditSubject=Payment of standing order %s by the bank +InfoCreditMessage=The standing order %s has been paid by the bank
Data of payment: %s +InfoTransSubject=Transmission of standing order %s to bank +InfoTransMessage=The standing order %s has been sent to bank by %s %s.

+InfoTransData=Amount: %s
Method: %s
Date: %s +InfoFoot=This is an automated message sent by Dolibarr +InfoRejectSubject=Standing order refused +InfoRejectMessage=Hello,

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

--
%s +ModeWarning=Option for real mode was not set, we stop after this simulation diff --git a/htdocs/langs/bn_BD/workflow.lang b/htdocs/langs/bn_BD/workflow.lang new file mode 100644 index 00000000000..17c8dd3aafa --- /dev/null +++ b/htdocs/langs/bn_BD/workflow.lang @@ -0,0 +1,11 @@ +# Dolibarr language file - Source file is en_US - admin +WorkflowSetup=Workflow module setup +WorkflowDesc=This module is designed to modify the behaviour of automatic actions into application. By default, workflow is opened (you make thing in order you want). You can activate the automatic actions that you are interesting in. +ThereIsNoWorkflowToModify=There is no workflow you can modify for module you have activated. +descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Create a customer order automatically after a commercial proposal is signed +descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Create a customer invoice automatically after a commercial proposal is signed +descWORKFLOW_CONTRACT_AUTOCREATE_INVOICE=Create a customer invoice automatically after a contract is validated +descWORKFLOW_ORDER_AUTOCREATE_INVOICE=Create a customer invoice automatically after a customer order is closed +descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Classify linked source proposal to billed when customer order is set to paid +descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Classify linked source customer order(s) to billed when customer invoice is set to paid +descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Classify linked source customer order(s) to billed when customer invoice is validated diff --git a/htdocs/langs/bs_BA/bills.lang b/htdocs/langs/bs_BA/bills.lang index 1b69bd47535..9555ed5ea91 100644 --- a/htdocs/langs/bs_BA/bills.lang +++ b/htdocs/langs/bs_BA/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Izvršene uplate PaymentsBackAlreadyDone=Izvršeni povrati uplata PaymentRule=Pravilo plaćanja PaymentMode=Način plaćanja -PaymentConditions=Rok plaćanja -PaymentConditionsShort=Rok plaćanja +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Iznos plaćanja ValidatePayment=Potvrditi uplatu PaymentHigherThanReminderToPay=Uplata viša od zaostalog duga diff --git a/htdocs/langs/bs_BA/incoterm.lang b/htdocs/langs/bs_BA/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/bs_BA/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/bs_BA/printing.lang b/htdocs/langs/bs_BA/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/bs_BA/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/bs_BA/projects.lang b/htdocs/langs/bs_BA/projects.lang index 7f9d2c4415e..7bbafa2fa64 100644 --- a/htdocs/langs/bs_BA/projects.lang +++ b/htdocs/langs/bs_BA/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/ca_ES/bills.lang b/htdocs/langs/ca_ES/bills.lang index bf96794fbdc..ec60df3dd2d 100644 --- a/htdocs/langs/ca_ES/bills.lang +++ b/htdocs/langs/ca_ES/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Pagaments efectuats PaymentsBackAlreadyDone=Reemborsaments ja efectuats PaymentRule=Forma de pagament PaymentMode=Forma de pagament -PaymentConditions=Condicions de pagament -PaymentConditionsShort=Condicions pagament +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Import pagament ValidatePayment=Validar aquest pagament PaymentHigherThanReminderToPay=Pagament superior a la resta a pagar diff --git a/htdocs/langs/ca_ES/incoterm.lang b/htdocs/langs/ca_ES/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/ca_ES/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/ca_ES/printing.lang b/htdocs/langs/ca_ES/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/ca_ES/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/ca_ES/projects.lang b/htdocs/langs/ca_ES/projects.lang index 694c1c3a732..593de6fcc1c 100644 --- a/htdocs/langs/ca_ES/projects.lang +++ b/htdocs/langs/ca_ES/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=Model d'informe de projecte complet (logo...) -PlannedWorkload = Càrrega de treball prevista -WorkloadOccupation= Percentatge afectat +PlannedWorkload=Càrrega de treball prevista +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Objectes vinculats SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/cs_CZ/bills.lang b/htdocs/langs/cs_CZ/bills.lang index e40c3cbdffd..0317d44870a 100644 --- a/htdocs/langs/cs_CZ/bills.lang +++ b/htdocs/langs/cs_CZ/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Platby neučinily PaymentsBackAlreadyDone=Platby zpět neučinily PaymentRule=Platba pravidlo PaymentMode=Typ platby -PaymentConditions=Termín vyplacení -PaymentConditionsShort=Termín vyplacení +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Částka platby ValidatePayment=Ověření platby PaymentHigherThanReminderToPay=Platební vyšší než upomínce k zaplacení diff --git a/htdocs/langs/cs_CZ/incoterm.lang b/htdocs/langs/cs_CZ/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/cs_CZ/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/cs_CZ/printing.lang b/htdocs/langs/cs_CZ/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/cs_CZ/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/cs_CZ/projects.lang b/htdocs/langs/cs_CZ/projects.lang index 3e8b7a046b0..5655c05549e 100644 --- a/htdocs/langs/cs_CZ/projects.lang +++ b/htdocs/langs/cs_CZ/projects.lang @@ -130,13 +130,15 @@ AddElement=Odkaz na prvek UnlinkElement=Unlink element # Documents models DocumentModelBaleine=Kompletní projektový report (logo. ..) -PlannedWorkload = Plánované vytížení -WorkloadOccupation= Zábor vytížení +PlannedWorkload=Plánované vytížení +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Odkazující objekty SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/da_DK/bills.lang b/htdocs/langs/da_DK/bills.lang index 4fec0d6f176..94c961167d3 100644 --- a/htdocs/langs/da_DK/bills.lang +++ b/htdocs/langs/da_DK/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Betalinger allerede gjort PaymentsBackAlreadyDone=Payments back already done PaymentRule=Betaling regel PaymentMode=Betalingstype -PaymentConditions=Betaling sigt -PaymentConditionsShort=Betaling sigt +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Indbetalingsbeløb ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Betaling højere end påmindelse om at betale diff --git a/htdocs/langs/da_DK/incoterm.lang b/htdocs/langs/da_DK/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/da_DK/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/da_DK/printing.lang b/htdocs/langs/da_DK/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/da_DK/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/da_DK/projects.lang b/htdocs/langs/da_DK/projects.lang index a72024e975f..91e45f99006 100644 --- a/htdocs/langs/da_DK/projects.lang +++ b/htdocs/langs/da_DK/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=En komplet projekt rapport model (logo. ..) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/de_DE/bills.lang b/htdocs/langs/de_DE/bills.lang index 9caea1587c2..d882f33b034 100644 --- a/htdocs/langs/de_DE/bills.lang +++ b/htdocs/langs/de_DE/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Bereits getätigte Zahlungen PaymentsBackAlreadyDone=Rückzahlungen bereits erledigt PaymentRule=Zahlungsregel PaymentMode=Zahlungsart -PaymentConditions=Zahlungskonditionen -PaymentConditionsShort=Konditionen +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Zahlungsbetrag ValidatePayment=Zahlung freigeben PaymentHigherThanReminderToPay=Zahlungsbetrag übersteigt Zahlungserinnerung diff --git a/htdocs/langs/de_DE/incoterm.lang b/htdocs/langs/de_DE/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/de_DE/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/de_DE/printing.lang b/htdocs/langs/de_DE/printing.lang new file mode 100644 index 00000000000..3f783f02e08 --- /dev/null +++ b/htdocs/langs/de_DE/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direkt drucken +Module112000Desc=Direkt-Druck-System aktivieren +PrintingSetup=Direkt-Druck-System einrichten +PrintingDesc=Dieses Modul fügt einen "Drucken"-Button zu, um Dokumente direkt zu einen Drucker zu senden. Dies erfordert ein Linux-System mit installiertem CUPS. +ModuleDriverSetup=Modul Treiber einrichten +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=Treiberliste +PrintTestDesc=Druckerliste +FileWasSentToPrinter=Datei %s wurde an den Drucker gesendet +NoActivePrintingModuleFound=Kein aktives Modul, um Druckvorgang auszuführen +PleaseSelectaDriverfromList=Bitte wählen Sie einen Treiber von der Liste +SetupDriver=Treibereinstellungen +TestDriver=Test +TargetedPrinter=Zieldrucker +UserConf=Je Nutzer einrichten +PRINTGCP=Google Cloud Print +PrintGCPDesc=Dieser Treiber erlaubt das direkte senden zu ein Drucker via Google Cloud Print +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=Druckerliste für Google Cloud Print +PRINTGCP_LOGIN=Login für Google Account +PRINTGCP_PASSWORD=Passwort für Google Account +STATE_ONLINE=Online +STATE_UNKNOWN=Unbekannt +STATE_OFFLINE=Abwesend +STATE_DORMANT=Schon lange Abwesend +TYPE_GOOGLE=Google +TYPE_HP=HP Drucker +TYPE_DOCS=Docs / Dokumente +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Angezeigter Name +GCP_Id=Drucker ID +GCP_OwnerName=Besitzername +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Druckertyp +PRINTIPP=PrintIPP Treiber +PrintIPPSetup=Einstellungen des DirektDruck-Moduls +PrintIPPDesc=Dieser Treiber erlaubt es Dokumente direkt an einen Drucker zu senden. Es ist dafür erforderlich, ein Linux System mit CUPS installiert zu haben. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=Druckerliste für Treiber PrintIPP +PRINTIPP_ENABLED=Zeige " Direkt drucken" Icon in der Dokumentenliste +PRINTIPP_HOST=Druckserver +PRINTIPP_PORT=Port +PRINTIPP_USER=Anmeldung +PRINTIPP_PASSWORD=Passwort +NoPrinterFound=Keine Drucker gefunden (CUPS-Konfiguration prüfen) +FileWasSentToPrinter=Datei %s wurde an den Drucker gesendet +NoDefaultPrinterDefined=Kein Standarddrucker defininert +DefaultPrinter=Standarddrucker +Printer=Drucker +CupsServer=CUPS-Server +IPP_Uri=Drucker Uri +IPP_Name=Druckername +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Farbe +IPP_Device=Device +IPP_Media=Druckermedium +IPP_Supported=Medientyp +STATE_IPP_idle=Beschäftigt +STATE_IPP_stopped=Angehalten +STATE_IPP_paused=Pausiert +STATE_IPP_toner-low-report=Niedriger Tonerstand +STATE_IPP_none=Keine +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermisch +IPP_COLOR_print-black=BW Drucker diff --git a/htdocs/langs/de_DE/projects.lang b/htdocs/langs/de_DE/projects.lang index fbbc111f0f7..b32d37c2026 100644 --- a/htdocs/langs/de_DE/projects.lang +++ b/htdocs/langs/de_DE/projects.lang @@ -130,13 +130,15 @@ AddElement=Mit Element verknüpfen UnlinkElement=Verknüpfung zu Element aufheben # Documents models DocumentModelBaleine=Eine vollständige Projektberichtsvorlage (Logo, uwm.) -PlannedWorkload = Geplante Auslastung -WorkloadOccupation= Beeinflussung der Auslastung +PlannedWorkload=Geplante Auslastung +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Bezugnahmen SearchAProject=Suchen Sie ein Projekt ProjectMustBeValidatedFirst=Projekt muss erst bestätigt werden ProjectDraft=Projekt-Entwürfe FirstAddRessourceToAllocateTime=Eine Ressource zuordnen, um Zeit festzulegen -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/el_GR/bills.lang b/htdocs/langs/el_GR/bills.lang index 597c71d53e7..b7981cb6906 100644 --- a/htdocs/langs/el_GR/bills.lang +++ b/htdocs/langs/el_GR/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Ιστορικό Πληρωμών PaymentsBackAlreadyDone=Payments back already done PaymentRule=Κανόνας Πληρωμής PaymentMode=Τρόπος Πληρωμής -PaymentConditions=Συνθήκη Πληρωμής -PaymentConditionsShort=Συνθήκες Πληρωμής +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Σύνολο πληρωμής ValidatePayment=Επικύρωση πληρωμής PaymentHigherThanReminderToPay=Η πληρωμή είναι μεγαλύτερη από το υπόλοιπο diff --git a/htdocs/langs/el_GR/incoterm.lang b/htdocs/langs/el_GR/incoterm.lang new file mode 100644 index 00000000000..d033be2b50a --- /dev/null +++ b/htdocs/langs/el_GR/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Διεθνείς Εμπορικός Όρος +Module210009Desc=Προσθέστε δυνατότητες για τη διαχείριση του Διεθνή Εμπορικού Όρου +IncotermLabel=Διεθνείς Εμπορικοί Όροι +IncotermSetupTitle1=Χαρακτηριστικό +IncotermSetupTitle2=Κατάσταση +IncotermSetup=Ρύθμιση του module Διεθνείς Εμπορικός Όρος +IncotermFunctionDesc=Ενεργοποίηση Διεθνείς Εμπορικός Όρος χαρακτηριστικό (Πελ./Προμ., προσφορά, παραγγελία πελάτη, Τιμολογίου Πελάτη, την αποστολή, παραγγελία Προμηθευτή) diff --git a/htdocs/langs/el_GR/printing.lang b/htdocs/langs/el_GR/printing.lang new file mode 100644 index 00000000000..55bc4ce2747 --- /dev/null +++ b/htdocs/langs/el_GR/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Άμεση εκτύπωση +Module112000Desc=Ενεργοποίηση άμεσης εκτύπωσης +PrintingSetup=Ρύθμιση του συστήματος για την άμεση εκτύπωση +PrintingDesc=Το module αυτό προσθέτει ένα κουμπί Εκτύπωσης για να στείλετε έγγραφα απευθείας σε έναν εκτυπωτή (χωρίς να ανοίξετε το έγγραφο με μια εφαρμογή). +ModuleDriverSetup=Ρύθμιση Module οδήγησης +PrintingDriverDesc=Διαμόρφωση μεταβλητών για τον οδηγό εκτύπωσης. +ListDrivers=Λίστα οδηγών +PrintTestDesc=Λίστα εκτυπωτών. +FileWasSentToPrinter=Το αρχείο %s στάλθηκε στον εκτυπωτή +NoActivePrintingModuleFound=Κανένα ενεργό module εκτύπωσης για έγγραφο +PleaseSelectaDriverfromList=Παρακαλώ επιλέξτε ένα πρόγραμμα οδήγησης από τη λίστα. +SetupDriver=Ρυθμίσεις του προγράμματος οδήγησης +TestDriver=Test +TargetedPrinter=Στοχευμένη εκτύπωση +UserConf=Ρύθμισης ανά χρήστη +PRINTGCP=Google Cloud Print +PrintGCPDesc=Αυτό το πρόγραμμα οδήγησης επιτρέπει να στείλετε έγγραφα απευθείας σε έναν εκτυπωτή του Google Cloud Print. +PrintingDriverDescprintgcp=Διαμόρφωση των μεταβλητών για τον οδηγό εκτύπωσης του Google Cloud Print. +PrintTestDescprintgcp=Λίστα εκτυπωτών στο Google Cloud Print. +PRINTGCP_LOGIN=Είσοδος Χρήστη Google +PRINTGCP_PASSWORD=Google Account Κωδικός +STATE_ONLINE=Online +STATE_UNKNOWN=Άγνωστος +STATE_OFFLINE=Εκτός Σύνδεσης +STATE_DORMANT=Εκτός λειτουργίας για αρκετό διάστημα +TYPE_GOOGLE=Google +TYPE_HP=HP εκτυπωτής +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Όνομα +GCP_displayName=Εμφανιζόμενο όνομα +GCP_Id=ID εκτυπωτή +GCP_OwnerName=Όνομα Ιδιοκτήτη +GCP_State=Κατάσταση εκτυπωτή +GCP_connectionStatus=Κατάσταση Online +GCP_Type=Τύπος εκτυπωτή +PRINTIPP=Οδηγός PrintIPP +PrintIPPSetup=Ρυθμίσεις module για το Direct Print +PrintIPPDesc=Αυτό το πρόγραμμα οδήγησης επιτρέπει να στείλετε έγγραφα απευθείας σε έναν εκτυπωτή. Απαιτείται ένα σύστημα Linux με εγκατεστημένο CUPS. +PrintingDriverDescprintipp=Διαμόρφωση μεταβλητών για τον οδηγό εκτύπωσης PrintIPP. +PrintTestDescprintipp=Λίστα εκτυπωτών για τον οδηγό PrintIPP. +PRINTIPP_ENABLED=Εμφάνιση εικονιδίου "Απευθείας εκτύπωσης" στις λίστες εγγράφων +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Είσοδος +PRINTIPP_PASSWORD=Κωδικός +NoPrinterFound=Δεν βρέθηκαν εκτυπωτές (Ελέγξτε τις ρυθμίσεις του CUPS) +FileWasSentToPrinter=Το αρχείο %s στάλθηκε στον εκτυπωτή +NoDefaultPrinterDefined=Δεν έχει οριστεί προ επιλεγμένος εκτυπωτής +DefaultPrinter=Προεπιλογή εκτυπωτή +Printer=Eκτυπωτής +CupsServer=CUPS Server +IPP_Uri=Uri εκτυπωτή +IPP_Name=Όνομα εκτυπωτή +IPP_State=Κατάσταση εκτυπωτή +IPP_State_reason=Λόγος κατάστασης +IPP_State_reason1=Λόγος 1 κατάστασης +IPP_BW=Ασπρόμαυρη +IPP_Color=Έγχρωμη +IPP_Device=Συσκευή +IPP_Media=Μέσα εκτύπωσης +IPP_Supported=Τύπος των μέσων +STATE_IPP_idle=Αδρανής +STATE_IPP_stopped=Σταμάτησε +STATE_IPP_paused=Παύση +STATE_IPP_toner-low-report=Χαμηλή στάθμη Toner +STATE_IPP_none=Καμία +MEDIA_IPP_stationery=Γραφική ύλη +MEDIA_IPP_thermal=Θερμικός +IPP_COLOR_print-black=Ασπρόμαυρος Εκτυπωτής diff --git a/htdocs/langs/el_GR/projects.lang b/htdocs/langs/el_GR/projects.lang index 3e20c208dc9..4758fb8c27a 100644 --- a/htdocs/langs/el_GR/projects.lang +++ b/htdocs/langs/el_GR/projects.lang @@ -130,13 +130,15 @@ AddElement=Σύνδεση με το στοιχείο UnlinkElement=Αποσύνδεση στοιχείου # Documents models DocumentModelBaleine=Μοντέλο έκθεση Μια πλήρης έργου (logo. ..) -PlannedWorkload = Σχέδιο φόρτου εργασίας -WorkloadOccupation= Επιτήδευση Φόρτου εργασίας +PlannedWorkload=Σχέδιο φόρτου εργασίας +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Αναφορές από αντικείμενα SearchAProject=Αναζήτηση ένα έργο ProjectMustBeValidatedFirst=Το έργο πρέπει να επικυρωθεί πρώτα ProjectDraft=Πρόχειρα έργα FirstAddRessourceToAllocateTime=Συσχετίστε έναν πόρο για την κατανομή του χρόνου -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/en_AU/main.lang b/htdocs/langs/en_AU/main.lang index 27e0c30c352..e9516954cb2 100644 --- a/htdocs/langs/en_AU/main.lang +++ b/htdocs/langs/en_AU/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=dd/MM/yyyy FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/mm/yy FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y diff --git a/htdocs/langs/en_CA/main.lang b/htdocs/langs/en_CA/main.lang index fca2906cd12..5615b28145a 100644 --- a/htdocs/langs/en_CA/main.lang +++ b/htdocs/langs/en_CA/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=dd.MM.yyyy FormatDateShortJavaInput=dd.MM.yyyy FormatDateShortJQuery=dd.mm.yy FormatDateShortJQueryInput=dd.mm.yy +FormatHourShortJQuery=HH:MI FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y diff --git a/htdocs/langs/en_GB/bills.lang b/htdocs/langs/en_GB/bills.lang deleted file mode 100644 index 025fcbe0f18..00000000000 --- a/htdocs/langs/en_GB/bills.lang +++ /dev/null @@ -1,24 +0,0 @@ -# Dolibarr language file - Source file is en_US - bills -PaymentConditionShortRECEP=Due on Receipt -PaymentConditionRECEP=Due on Receipt -PaymentTypeVIR=Bank transfer -PaymentTypeShortVIR=Bank transfer -PaymentTypePRE=Direct debit -PaymentTypeShortPRE=Direct debit -PaymentTypeCHQ=Cheque -PaymentTypeShortCHQ=Cheque -BankCode=Sort code -ChequeNumber=Cheque N° -ChequeOrTransferNumber=Cheque/Transfer N° -ChequeMaker=Cheque transmitter -ChequeBank=Bank of Cheque -PrettyLittleSentence=Accept the amount of payments due by cheques issued in my name as a Member of an accounting association approved by the Fiscal Administration. -PaymentByChequeOrderedTo=Cheque payment (including tax) are payable to %s send to -PaymentByChequeOrderedToShort=Cheque payment (including tax) are payable to -MenuChequeDeposits=Cheques deposits -MenuCheques=Cheques -MenuChequesReceipts=Cheques receipts -ChequesReceipts=Cheques receipts -ChequesArea=Cheques deposits area -ChequeDeposits=Cheques deposits -Cheques=Cheques diff --git a/htdocs/langs/en_GB/commercial.lang b/htdocs/langs/en_GB/commercial.lang deleted file mode 100644 index 18d8db06801..00000000000 --- a/htdocs/langs/en_GB/commercial.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - commercial -ActionAffectedTo=Event assigned to diff --git a/htdocs/langs/en_GB/cron.lang b/htdocs/langs/en_GB/cron.lang deleted file mode 100644 index 3f755fc725d..00000000000 --- a/htdocs/langs/en_GB/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes -CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes diff --git a/htdocs/langs/en_GB/main.lang b/htdocs/langs/en_GB/main.lang index ced56a38a13..0d2a37aa449 100644 --- a/htdocs/langs/en_GB/main.lang +++ b/htdocs/langs/en_GB/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=dd/MM/yyyy FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/mm/yy FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y diff --git a/htdocs/langs/en_GB/orders.lang b/htdocs/langs/en_GB/orders.lang deleted file mode 100644 index 2c71fc66ccc..00000000000 --- a/htdocs/langs/en_GB/orders.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - orders -StatusOrderOnProcessShort=Ordered -StatusOrderOnProcess=Ordered - Standby reception diff --git a/htdocs/langs/en_GB/suppliers.lang b/htdocs/langs/en_GB/suppliers.lang deleted file mode 100644 index 5213cec4e07..00000000000 --- a/htdocs/langs/en_GB/suppliers.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - suppliers -DenyingThisOrder=Deny this order diff --git a/htdocs/langs/en_GB/trips.lang b/htdocs/langs/en_GB/trips.lang deleted file mode 100644 index f5e6f1a92eb..00000000000 --- a/htdocs/langs/en_GB/trips.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - trips -Trip=Expense report -Trips=Expense reports -TripsAndExpenses=Expenses reports -TripsAndExpensesStatistics=Expense reports statistics -TripCard=Expense report card -AddTrip=Create expense report -ListOfTrips=List of expense report -NewTrip=New expense report -DeleteTrip=Delete expense report -ConfirmDeleteTrip=Are you sure you want to delete this expense report ? -ListTripsAndExpenses=List of expense reports -ExpensesArea=Expense reports area -SearchATripAndExpense=Search an expense report diff --git a/htdocs/langs/en_IN/main.lang b/htdocs/langs/en_IN/main.lang index 7fbca74ca3d..1847a4b4ab1 100644 --- a/htdocs/langs/en_IN/main.lang +++ b/htdocs/langs/en_IN/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=dd/MM/yyyy FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/mm/yy FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI FormatHourShort=%I:%M %p FormatHourShortDuration=%H:%M FormatDateTextShort=%b %d, %Y diff --git a/htdocs/langs/en_NZ/main.lang b/htdocs/langs/en_NZ/main.lang index 93e9771e575..aaa245d3508 100644 --- a/htdocs/langs/en_NZ/main.lang +++ b/htdocs/langs/en_NZ/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=dd/MM/yyyy FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/mm/yy FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y diff --git a/htdocs/langs/en_SA/main.lang b/htdocs/langs/en_SA/main.lang index f8402963091..8fee9b5f5d9 100644 --- a/htdocs/langs/en_SA/main.lang +++ b/htdocs/langs/en_SA/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=dd/MM/yyyy FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/mm/yy FormatDateShortJQueryInput=dd/mm/yy +FormatHourShortJQuery=HH:MI FormatHourShort=%I:%M %p FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y diff --git a/htdocs/langs/en_US/incoterm.lang b/htdocs/langs/en_US/incoterm.lang new file mode 100644 index 00000000000..0a3f3c677d8 --- /dev/null +++ b/htdocs/langs/en_US/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) \ No newline at end of file diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang old mode 100755 new mode 100644 diff --git a/htdocs/langs/en_ZA/main.lang b/htdocs/langs/en_ZA/main.lang index a696d3c77d8..4c30b385ef8 100644 --- a/htdocs/langs/en_ZA/main.lang +++ b/htdocs/langs/en_ZA/main.lang @@ -10,6 +10,7 @@ FormatDateShortJava=yyy/MM/dd FormatDateShortJavaInput=yyyy/MM/yy FormatDateShortJQuery=yy/mm/yy FormatDateShortJQueryInput=yy/mm/dd +FormatHourShortJQuery=HH:MI FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y diff --git a/htdocs/langs/es_AR/bills.lang b/htdocs/langs/es_AR/bills.lang deleted file mode 100644 index 75496f66e43..00000000000 --- a/htdocs/langs/es_AR/bills.lang +++ /dev/null @@ -1,21 +0,0 @@ -# Dolibarr language file - Source file is en_US - bills -InvoiceAvoir=Nota de crédito -InvoiceAvoirAsk=Nota de crédito para corregir la factura -InvoiceAvoirDesc=La nota de crédito es una factura negativa destinada a compensar un importe de factura que difiere del importe realmente pagado (por haber pagado de más o por devolución de productos, por ejemplo). -InvoiceHasAvoir=Corregida por una o más notas de crédito -ConfirmConvertToReduc=¿Quiere convertir esta nota de crédito en una reducción futura?
El importe de esta nota de crédito se almacenará para este cliente. Podrá utilizarse para reducir el importe de una próxima factura del cliente. -AddBill=Crear factura o nota de crédito -EnterPaymentDueToCustomer=Realizar pago de notas de crédito al cliente -ErrorInvoiceAvoirMustBeNegative=Error, una factura de tipo nota de crédito debe tener un importe negativo -ConfirmClassifyPaidPartiallyReasonAvoir=El resto a pagar (%s %s) se ha regularizado (ya que artículo se ha devuelto, olvidado entregar, descuento no definido...) mediante una nota de crédito -ConfirmClassifyPaidPartiallyReasonOtherDesc=Esta elección será posible, por ejemplo, en los casos siguiente:
-pago parcial ya que una partida de productos se ha devuleto.
- reclamado por no entregar productos de la factura
En todos los casos, la reclamación debe regularizarse mediante una nota de crédito -ShowInvoiceAvoir=Ver nota de crédito -AlreadyPaidNoCreditNotesNoDeposits=Ya pagado (excluidos las notas de crédito y anticipos) -AddCreditNote=Crear nota de crédito -ShowDiscount=Ver la nota de crédito -CreditNote=Nota de crédito -CreditNotes=Notas de crédito -DiscountFromCreditNote=Descuento resultante de la nota de crédito %s -AbsoluteDiscountUse=Este tipo de crédito no puede ser utilizado en una factura antes de su validación -CreditNoteConvertedIntoDiscount=Esta nota de crédito se convirtió en %s -TerreNumRefModelDesc1=Devuelve el número bajo el formato %syymm-nnnn para las facturas y %syymm-nnnn para las notas de crédito donde yy es el año, mm. el mes y nnnn un contador secuencial sin ruptura y sin permanencia a 0 diff --git a/htdocs/langs/es_AR/cron.lang b/htdocs/langs/es_AR/cron.lang deleted file mode 100644 index 3f755fc725d..00000000000 --- a/htdocs/langs/es_AR/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes -CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes diff --git a/htdocs/langs/es_AR/orders.lang b/htdocs/langs/es_AR/orders.lang deleted file mode 100644 index 2c71fc66ccc..00000000000 --- a/htdocs/langs/es_AR/orders.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - orders -StatusOrderOnProcessShort=Ordered -StatusOrderOnProcess=Ordered - Standby reception diff --git a/htdocs/langs/es_AR/trips.lang b/htdocs/langs/es_AR/trips.lang deleted file mode 100644 index b4a068e21c4..00000000000 --- a/htdocs/langs/es_AR/trips.lang +++ /dev/null @@ -1,13 +0,0 @@ -# Dolibarr language file - Source file is en_US - trips -Trip=Expense report -Trips=Expense reports -TripsAndExpenses=Expenses reports -TripsAndExpensesStatistics=Expense reports statistics -TripCard=Expense report card -AddTrip=Create expense report -ListOfTrips=List of expense report -NewTrip=New expense report -DeleteTrip=Delete expense report -ConfirmDeleteTrip=Are you sure you want to delete this expense report ? -ListTripsAndExpenses=List of expense reports -ExpensesArea=Expense reports area diff --git a/htdocs/langs/es_CO/admin.lang b/htdocs/langs/es_CO/admin.lang index d43134a3f9c..1c53b65c99c 100644 --- a/htdocs/langs/es_CO/admin.lang +++ b/htdocs/langs/es_CO/admin.lang @@ -2,4 +2,3 @@ AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
Example for ClamAv: /usr/bin/clamscan AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\mydir
/home/mydir
DOL_DATA_ROOT/ecm/ecmdir -MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) diff --git a/htdocs/langs/es_CO/bills.lang b/htdocs/langs/es_CO/bills.lang deleted file mode 100644 index f1e67a676c3..00000000000 --- a/htdocs/langs/es_CO/bills.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - bills -ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid. diff --git a/htdocs/langs/es_CO/cron.lang b/htdocs/langs/es_CO/cron.lang deleted file mode 100644 index 3f755fc725d..00000000000 --- a/htdocs/langs/es_CO/cron.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - cron -CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes -CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes diff --git a/htdocs/langs/es_CO/externalsite.lang b/htdocs/langs/es_CO/externalsite.lang new file mode 100644 index 00000000000..41f70db06fe --- /dev/null +++ b/htdocs/langs/es_CO/externalsite.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - externalsite +ExampleMyMenuEntry=Mi entrada en el menú diff --git a/htdocs/langs/es_CO/main.lang b/htdocs/langs/es_CO/main.lang index 2e691473326..b4e3fdd0dcf 100644 --- a/htdocs/langs/es_CO/main.lang +++ b/htdocs/langs/es_CO/main.lang @@ -2,20 +2,43 @@ DIRECTION=ltr FONTFORPDF=helvetica FONTSIZEFORPDF=10 -SeparatorDecimal=. -SeparatorThousand=, -FormatDateShort=%m/%d/%Y -FormatDateShortInput=%m/%d/%Y -FormatDateShortJava=MM/dd/yyyy -FormatDateShortJavaInput=MM/dd/yyyy -FormatDateShortJQuery=mm/dd/yy -FormatDateShortJQueryInput=mm/dd/yy +SeparatorDecimal=, +SeparatorThousand=. +FormatDateShort=%d/%m/%Y +FormatDateShortInput=%d/%m/%Y +FormatDateShortJava=dd/MM/yyyy +FormatDateShortJavaInput=dd/MM/yyyy +FormatDateShortJQuery=dd/mm/yy +FormatDateShortJQueryInput=dd/mm/yy FormatHourShortJQuery=HH:MI -FormatHourShort=%I:%M %p +FormatHourShort=%H:%M FormatHourShortDuration=%H:%M -FormatDateTextShort=%b %d, %Y -FormatDateText=%B %d, %Y -FormatDateHourShort=%m/%d/%Y %I:%M %p -FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p -FormatDateHourTextShort=%b %d, %Y, %I:%M %p -FormatDateHourText=%B %d, %Y, %I:%M %p +FormatDateTextShort=%d %b %Y +FormatDateText=%d %B %Y +FormatDateHourShort=%d/%m/%Y %H:%M +FormatDateHourSecShort=%d/%m/%Y %H:%M:%S +FormatDateHourTextShort=%d %b %Y %H:%M +FormatDateHourText=%d %B %Y %H:%M +NoRecordFound=No se encontraron registros +ErrorFileNotUploaded=El archivo no se transifirió. Compruebe que el tamaño no supere el máximo permitido, el espacio libre disponible en el disco y que no hay un archivo con el mismo nombre en el directorio destino. +ErrorNoRequestRan=No hay petición +ErrorSomeErrorWereFoundRollbackIsDone=Se encontraron algunos errores. Modificaciones sin aplicar. +ErrorNoSocialContributionForSellerCountry=Error, no hay tipo de carga social definida para el país '%s'. +SeeHere=Ver aquí +FileNotUploaded=El archivo no se subió +FileWasNotUploaded=Un archivo ha sido seleccionado para adjuntarlo, pero aún no se ha subido. Haga clic en "Adjuntar este archivo". +SeeAbove=Ver arriba +InformationToHelpDiagnose=Esta es una información que puede ayudar de diagnóstico +ValidateAndApprove=Validar y aprobar +Disapprove=Desaprobar +NoUserGroupDefined=No hay grupo de usuario definido +DateAndHour=Fecha y hora +DateModificationShort=Fecha modificación +UseLocalTax=Incluir impuestos +CommercialProposalsShort=Cotizaciones +RequestAlreadyDone=La solicitud ya ha sido procesada +NbOfReferers=Número de remitentes +Currency=Moneda +SelectElementAndClickRefresh=Seleccione un elemento y haga clic en Actualizar +PrintFile=Imprimir archivo %s +ShowTransaction=Mostrar transacción diff --git a/htdocs/langs/es_CO/orders.lang b/htdocs/langs/es_CO/orders.lang deleted file mode 100644 index 2c71fc66ccc..00000000000 --- a/htdocs/langs/es_CO/orders.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - orders -StatusOrderOnProcessShort=Ordered -StatusOrderOnProcess=Ordered - Standby reception diff --git a/htdocs/langs/es_CO/salaries.lang b/htdocs/langs/es_CO/salaries.lang new file mode 100644 index 00000000000..a0ff0166a6d --- /dev/null +++ b/htdocs/langs/es_CO/salaries.lang @@ -0,0 +1,6 @@ +# Dolibarr language file - Source file is en_US - salaries +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Código contable para pagos de salarios +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Código contable para cargo financiero +THM=Valor de hora promedio +TJM=Valor día promedio +CurrentSalary=Salario actual diff --git a/htdocs/langs/es_CO/trips.lang b/htdocs/langs/es_CO/trips.lang deleted file mode 100644 index b4a068e21c4..00000000000 --- a/htdocs/langs/es_CO/trips.lang +++ /dev/null @@ -1,13 +0,0 @@ -# Dolibarr language file - Source file is en_US - trips -Trip=Expense report -Trips=Expense reports -TripsAndExpenses=Expenses reports -TripsAndExpensesStatistics=Expense reports statistics -TripCard=Expense report card -AddTrip=Create expense report -ListOfTrips=List of expense report -NewTrip=New expense report -DeleteTrip=Delete expense report -ConfirmDeleteTrip=Are you sure you want to delete this expense report ? -ListTripsAndExpenses=List of expense reports -ExpensesArea=Expense reports area diff --git a/htdocs/langs/es_ES/bills.lang b/htdocs/langs/es_ES/bills.lang index 782efdf26e2..dc4aa2e3948 100644 --- a/htdocs/langs/es_ES/bills.lang +++ b/htdocs/langs/es_ES/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Pagos efectuados PaymentsBackAlreadyDone=Reembolsos ya efectuados PaymentRule=Forma de pago PaymentMode=Forma de pago -PaymentConditions=Condiciones de pago -PaymentConditionsShort=Condiciones pago +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Importe pago ValidatePayment=Validar este pago PaymentHigherThanReminderToPay=Pago superior al resto a pagar diff --git a/htdocs/langs/es_ES/incoterm.lang b/htdocs/langs/es_ES/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/es_ES/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/es_ES/printing.lang b/htdocs/langs/es_ES/printing.lang new file mode 100644 index 00000000000..adaeafcf55d --- /dev/null +++ b/htdocs/langs/es_ES/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Impresión Directa +Module112000Desc=Activa Sistema de Impresión Directa +PrintingSetup=Configuración de la Impresión Directa +PrintingDesc=Este módulo añade un botón para enviar documentos directamente a una impresora (sin abrir documentos en la aplicación) con varios módulos. +ModuleDriverSetup=Configuración del módulo Drivers +PrintingDriverDesc=Configuración variables para el driver de impresión. +ListDrivers=Listado de drivers +PrintTestDesc=Listado de Impresoras. +FileWasSentToPrinter=El archivo %s ha sido enviado a la impresora +NoActivePrintingModuleFound=Sin módulo activo para imprimir documentos +PleaseSelectaDriverfromList=Seleccione un driver del listado. +SetupDriver=Configuración driver +TestDriver=Prueba +TargetedPrinter=Impresora destino +UserConf=Configuración por usuario +PRINTGCP=Google Cloud Print +PrintGCPDesc=Este driver le permite enviar documentos directamente a una impresora con Google Cloud Print. +PrintingDriverDescprintgcp=Configuración variables del driver de impresión Google Cloud Print. +PrintTestDescprintgcp=Listado de impresoras para Google Cloud Print. +PRINTGCP_LOGIN=Cuenta Google +PRINTGCP_PASSWORD=Contraseña Google +STATE_ONLINE=Online +STATE_UNKNOWN=Desconocido +STATE_OFFLINE=Offline +STATE_DORMANT=Desconectada +TYPE_GOOGLE=Google +TYPE_HP=Impresora HP +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Nombre +GCP_displayName=Nombre a mostrar +GCP_Id=Id Impresora +GCP_OwnerName=Nombre del propietario +GCP_State=Estado Impresora +GCP_connectionStatus=Estado Online +GCP_Type=Tipo Impresora +PRINTIPP=Driver PrintIPP +PrintIPPSetup=Configuración del módulo Impresión Directa +PrintIPPDesc=Este módulo añade un botón para enviar documentos directamente a una impresora. Es necesario un SO Linux con CUPS instalado. +PrintingDriverDescprintipp=Configuración variables del driver de impresión PrintIPP +PrintTestDescprintipp=Listado de impresoras del driver PrintIPP. +PRINTIPP_ENABLED=Mostrar icono "Impresión directa" en los listados de documentos +PRINTIPP_HOST=Servidor de Impresión +PRINTIPP_PORT=Puerto +PRINTIPP_USER=Usuario +PRINTIPP_PASSWORD=Contraseña +NoPrinterFound=No se han encontrado impresoras (Compruebe la configuración de su CUPS) +FileWasSentToPrinter=El archivo %s ha sido enviado a la impresora +NoDefaultPrinterDefined=No hay impresora por defecto definida +DefaultPrinter=Impresora por defecto +Printer=Impresora +CupsServer=Servidor CUPS +IPP_Uri=URI Impresora +IPP_Name=Nombre impresora +IPP_State=Estado Impresora +IPP_State_reason=Razón del estado +IPP_State_reason1=Razon 1 del estado +IPP_BW=Blanco y negro +IPP_Color=Color +IPP_Device=Dispositivo +IPP_Media=Comunicación Impresora +IPP_Supported=Tipo de comunicación +STATE_IPP_idle=Idle +STATE_IPP_stopped=Parada +STATE_IPP_paused=Pausada +STATE_IPP_toner-low-report=Toner bajo +STATE_IPP_none=Ninguna +MEDIA_IPP_stationery=Bandeja +MEDIA_IPP_thermal=Térmica +IPP_COLOR_print-black=Impresora Blanco y Negro diff --git a/htdocs/langs/es_ES/projects.lang b/htdocs/langs/es_ES/projects.lang index b5c4081e1ba..da3e7c8b288 100644 --- a/htdocs/langs/es_ES/projects.lang +++ b/htdocs/langs/es_ES/projects.lang @@ -130,13 +130,15 @@ AddElement=Vincular a elmento UnlinkElement=Desvincular elemento # Documents models DocumentModelBaleine=Modelo de informe de proyecto completo (logo...) -PlannedWorkload = Carga de trabajo prevista -WorkloadOccupation= Porcentaje afectado +PlannedWorkload=Carga de trabajo prevista +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Objetos vinculados SearchAProject=Buscar un proyecto ProjectMustBeValidatedFirst=El proyecto debe validarse primero ProjectDraft=Proyectos borrador FirstAddRessourceToAllocateTime=Asociar un recurso para asignar tiempo consumido -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/et_EE/bills.lang b/htdocs/langs/et_EE/bills.lang index 7fbee469a0a..4ebfb5ad8ec 100644 --- a/htdocs/langs/et_EE/bills.lang +++ b/htdocs/langs/et_EE/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Juba tehtud maksed PaymentsBackAlreadyDone=Juba tehtud tagasimaksed PaymentRule=Maksereegel PaymentMode=Makse liik -PaymentConditions=Maksetähtaeg -PaymentConditionsShort=Maksetähtaeg +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Makse summa ValidatePayment=Kinnita makse PaymentHigherThanReminderToPay=Makse on suurem, kui makstava summa jääk diff --git a/htdocs/langs/et_EE/incoterm.lang b/htdocs/langs/et_EE/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/et_EE/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/et_EE/printing.lang b/htdocs/langs/et_EE/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/et_EE/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/et_EE/projects.lang b/htdocs/langs/et_EE/projects.lang index af73d9b93c7..86d8f546767 100644 --- a/htdocs/langs/et_EE/projects.lang +++ b/htdocs/langs/et_EE/projects.lang @@ -130,13 +130,15 @@ AddElement=Seosta elemendiga UnlinkElement=Unlink element # Documents models DocumentModelBaleine=Täielik projekti aruande mudel (logo jne) -PlannedWorkload = Planeeritav koormus -WorkloadOccupation= Koormus mõjutab +PlannedWorkload=Planeeritav koormus +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Viitavad objektid SearchAProject=Otsi projekti ProjectMustBeValidatedFirst=Esmalt peab projekti kinnitama ProjectDraft=Projektide mustandid FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/eu_ES/bills.lang b/htdocs/langs/eu_ES/bills.lang index 5ded974ea16..4eb42a057b5 100644 --- a/htdocs/langs/eu_ES/bills.lang +++ b/htdocs/langs/eu_ES/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Jada egindako ordainketak PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule PaymentMode=Ordainketa mota -PaymentConditions=Payment term -PaymentConditionsShort=Payment term +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Ordainketaren zenbatekoa ValidatePayment=Ordainketak balioztatu PaymentHigherThanReminderToPay=Payment higher than reminder to pay diff --git a/htdocs/langs/eu_ES/incoterm.lang b/htdocs/langs/eu_ES/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/eu_ES/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/eu_ES/printing.lang b/htdocs/langs/eu_ES/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/eu_ES/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/eu_ES/projects.lang b/htdocs/langs/eu_ES/projects.lang index 0a12f4c64b7..44d0d89687a 100644 --- a/htdocs/langs/eu_ES/projects.lang +++ b/htdocs/langs/eu_ES/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/fa_IR/bills.lang b/htdocs/langs/fa_IR/bills.lang index 90a5b2b6aeb..db80589b564 100644 --- a/htdocs/langs/fa_IR/bills.lang +++ b/htdocs/langs/fa_IR/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=پرداخت از قبل انجام می شود PaymentsBackAlreadyDone=پرداخت به عقب در حال حاضر انجام می شود PaymentRule=قانون پرداخت PaymentMode=نحوه پرداخت -PaymentConditions=مدت پرداخت -PaymentConditionsShort=مدت پرداخت +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=مقدار پرداخت ValidatePayment=اعتبار پرداخت PaymentHigherThanReminderToPay=پرداخت بالاتر از یادآوری به پرداخت diff --git a/htdocs/langs/fa_IR/boxes.lang b/htdocs/langs/fa_IR/boxes.lang index 9ce956f693d..a903fc35967 100644 --- a/htdocs/langs/fa_IR/boxes.lang +++ b/htdocs/langs/fa_IR/boxes.lang @@ -12,6 +12,7 @@ BoxLastProspects=چشم انداز تاریخ و زمان آخرین اصلاح BoxLastCustomers=مشتریان آخرین تغییر BoxLastSuppliers=تامین کنندگان آخرین تغییر BoxLastCustomerOrders=آخرین سفارشات مشتری +BoxLastValidatedCustomerOrders=Last validated customer orders BoxLastBooks=آخرین کتاب ها BoxLastActions=تاریخ و زمان آخرین اقدامات BoxLastContracts=تاریخ و زمان آخرین قرارداد @@ -24,39 +25,42 @@ BoxTotalUnpaidCustomerBills=فاکتورها مجموع مشتری پرداخت BoxTotalUnpaidSuppliersBills=فاکتورها مجموع عرضه کننده کالا پرداخت نشده است BoxTitleLastBooks=تاریخ و زمان آخرین٪ کتاب ثبت BoxTitleNbOfCustomers=تعدادی از مشتریان -BoxTitleLastRssInfos=تاریخ و زمان آخرین٪ خبر از%s -BoxTitleLastProducts=تاریخ و زمان آخرین%s تغییر داده محصولات / خدمات +BoxTitleLastRssInfos=تاریخ و زمان آخرین٪ خبر از٪ s +BoxTitleLastProducts=تاریخ و زمان آخرین٪ s تغییر داده محصولات / خدمات BoxTitleProductsAlertStock=محصولات موجود در انبار هشدار -BoxTitleLastCustomerOrders=تاریخ و زمان آخرین%s را سفارش مشتری تغییر +BoxTitleLastCustomerOrders=Last %s customer orders +BoxTitleLastModifiedCustomerOrders=Last %s modified customer orders BoxTitleLastSuppliers=تاریخ و زمان آخرین٪ بازدید کنندگان تامین کنندگان ثبت BoxTitleLastCustomers=تاریخ و زمان آخرین٪ ثبت مشتریان BoxTitleLastModifiedSuppliers=تاریخ و زمان آخرین٪ بازدید کنندگان تامین کنندگان اصلاح شده BoxTitleLastModifiedCustomers=تاریخ و زمان آخرین٪ مشتریان اصلاح شده -BoxTitleLastCustomersOrProspects=تاریخ و زمان آخرین٪ مشتریان اصلاح و یا چشم انداز -BoxTitleLastPropals=تاریخ و زمان آخرین%s را پیشنهاد ثبت +BoxTitleLastCustomersOrProspects=Last %s customers or prospects +BoxTitleLastPropals=Last %s proposals +BoxTitleLastModifiedPropals=Last %s modified proposals BoxTitleLastCustomerBills=صورت حساب آخرین٪ بازدید کنندگان مشتری +BoxTitleLastModifiedCustomerBills=Last %s modified customer invoices BoxTitleLastSupplierBills=صورت حساب آخرین٪ کننده است -BoxTitleLastProspects=تاریخ و زمان آخرین%s در چشم انداز ثبت -BoxTitleLastModifiedProspects=تاریخ و زمان آخرین%s در چشم انداز تغییر +BoxTitleLastModifiedSupplierBills=Last %s modified supplier invoices +BoxTitleLastModifiedProspects=تاریخ و زمان آخرین٪ s در چشم انداز تغییر BoxTitleLastProductsInContract=تاریخ و زمان آخرین٪ محصولات / خدمات در قرارداد -BoxTitleLastModifiedMembers=تاریخ و زمان آخرین٪ اعضای اصلاح شده -BoxTitleLastFicheInter=تاریخ و زمان آخرین%s را مداخله اصلاح شده -BoxTitleOldestUnpaidCustomerBills=فاکتورها قدیمی تر از%s مشتری پرداخت نشده است -BoxTitleOldestUnpaidSupplierBills=فاکتورها قدیمی تر از%s عرضه کننده کالا پرداخت نشده است +BoxTitleLastModifiedMembers=Last %s members +BoxTitleLastFicheInter=تاریخ و زمان آخرین٪ s را مداخله اصلاح شده +BoxTitleOldestUnpaidCustomerBills=Oldest %s unpaid customer invoices +BoxTitleOldestUnpaidSupplierBills=Oldest %s unpaid supplier invoices BoxTitleCurrentAccounts=مانده حساب باز است BoxTitleSalesTurnover=گردش مالی فروش -BoxTitleTotalUnpaidCustomerBills=صورت حساب به مشتری پرداخت نشده است -BoxTitleTotalUnpaidSuppliersBills=فاکتورها منبع پرداخت نشده است -BoxTitleLastModifiedContacts=تاریخ و زمان آخرین%s تغییر اطلاعات تماس / آدرس +BoxTitleTotalUnpaidCustomerBills=Unpaid customer invoices +BoxTitleTotalUnpaidSuppliersBills=Unpaid supplier invoices +BoxTitleLastModifiedContacts=تاریخ و زمان آخرین٪ s تغییر اطلاعات تماس / آدرس BoxMyLastBookmarks=آخرین٪ من بازدید کنندگان بوک مارک ها BoxOldestExpiredServices=قدیمی تر خدمات منقضی فعال BoxLastExpiredServices=تاریخ و زمان آخرین٪ قدیمی ترین ارتباط با خدمات منقضی فعال -BoxTitleLastActionsToDo=تاریخ و زمان آخرین اقدامات%s را به انجام -BoxTitleLastContracts=تاریخ و زمان آخرین%s در قرارداد +BoxTitleLastActionsToDo=تاریخ و زمان آخرین اقدامات٪ s را به انجام +BoxTitleLastContracts=تاریخ و زمان آخرین٪ s در قرارداد BoxTitleLastModifiedDonations=تاریخ و زمان آخرین٪ بازدید کنندگان کمک های مالی اصلاح شده -BoxTitleLastModifiedExpenses=تاریخ و زمان آخرین%s در هزینه های اصلاح شده +BoxTitleLastModifiedExpenses=تاریخ و زمان آخرین٪ s در هزینه های اصلاح شده BoxGlobalActivity=فعالیت های جهانی (فاکتورها، پیشنهادات، سفارشات) -FailedToRefreshDataInfoNotUpToDate=به روز کردن شار RSS شکست خورده است. آخرین تاریخ تازه کردن موفق:%s را +FailedToRefreshDataInfoNotUpToDate=به روز کردن شار RSS شکست خورده است. آخرین تاریخ تازه کردن موفق:٪ s را LastRefreshDate=آخرین تاریخ تازه کردن NoRecordedBookmarks=بدون بوک مارک ها تعریف شده است. ClickToAdd=برای اضافه کردن اینجا کلیک کنید. @@ -65,8 +69,8 @@ NoRecordedContacts=بدون اطلاعات تماس ثبت NoActionsToDo=هیچ عملیاتی برای انجام NoRecordedOrders=سفارشات بدون مشتری ثبت شده است NoRecordedProposals=هیچ طرح ثبت -NoRecordedInvoices=فاکتورها هیچ مشتری ثبت شده است -NoUnpaidCustomerBills=فاکتورها هیچ مشتری پرداخت نشده است +NoRecordedInvoices=فاکتورهای هیچ مشتری ثبت شده است +NoUnpaidCustomerBills=فاکتورهای هیچ مشتری پرداخت نشده است NoRecordedSupplierInvoices=فاکتورها بدون منبع ثبت در NoUnpaidSupplierBills=فاکتورها بدون منبع پرداخت نشده است NoModifiedSupplierBills=فاکتورها بدون منبع ثبت در @@ -76,7 +80,8 @@ NoContractedProducts=محصولات / خدمات قرارداد NoRecordedContracts=بدون قرارداد ثبت NoRecordedInterventions=بدون مداخلات ثبت BoxLatestSupplierOrders=آخرین سفارشات کالا -BoxTitleLatestSupplierOrders=٪ آخرین سفارشات کالا +BoxTitleLatestSupplierOrders=Last %s supplier orders +BoxTitleLatestModifiedSupplierOrders=Last %s modified supplier orders NoSupplierOrder=بدون منظور عرضه کننده کالا ثبت BoxCustomersInvoicesPerMonth=صورت حساب به مشتری در هر ماه BoxSuppliersInvoicesPerMonth=فاکتورها منبع در هر ماه @@ -85,7 +90,7 @@ BoxSuppliersOrdersPerMonth=سفارشات تامین کننده در هر ماه BoxProposalsPerMonth=پیشنهادات در هر ماه NoTooLowStockProducts=هیچ محصولی در زیر حد سهام کم BoxProductDistribution=محصولات / خدمات توزیع -BoxProductDistributionFor=توزیع از%s را برای%s +BoxProductDistributionFor=توزیع از٪ s را برای٪ s ForCustomersInvoices=مشتریان فاکتورها ForCustomersOrders=سفارشات مشتریان ForProposals=پیشنهادات diff --git a/htdocs/langs/fa_IR/categories.lang b/htdocs/langs/fa_IR/categories.lang index 427073d5f48..d220bfe612d 100644 --- a/htdocs/langs/fa_IR/categories.lang +++ b/htdocs/langs/fa_IR/categories.lang @@ -108,5 +108,5 @@ ExtraFieldsCategories=ویژگی های مکمل CategoriesSetup=شاخه ها راه اندازی CategorieRecursiv=پیوند با گروه پدر و مادر به طور خودکار CategorieRecursivHelp=اگر فعال شود، محصول نیز به دسته پدر و مادر مرتبط است که با اضافه کردن به زیرشاخه -AddProductServiceIntoCategory=Add the following product/service -ShowCategory=Show category +AddProductServiceIntoCategory=افزودن پیگیری محصول/سرویس +ShowCategory=نمایش دسته diff --git a/htdocs/langs/fa_IR/deliveries.lang b/htdocs/langs/fa_IR/deliveries.lang index b2526f06e6b..80465cb4b4e 100644 --- a/htdocs/langs/fa_IR/deliveries.lang +++ b/htdocs/langs/fa_IR/deliveries.lang @@ -12,7 +12,7 @@ SetDeliveryDate=تنظیم تاریخ حمل و نقل ValidateDeliveryReceipt=اعتبارسنجی رسید تحویل ValidateDeliveryReceiptConfirm=آیا مطمئن هستید که می خواهید به اعتبار این رسید تحویل؟ DeleteDeliveryReceipt=حذف رسید تحویل -DeleteDeliveryReceiptConfirm=آیا مطمئن هستید که می خواهید تحویل رسید از%s را حذف کنید؟ +DeleteDeliveryReceiptConfirm=آیا مطمئن هستید که می خواهید تحویل رسید از٪ s را حذف کنید؟ DeliveryMethod=روش تحویل TrackingNumber=تعداد پیگیری DeliveryNotValidated=تحویل اعتبار نیست @@ -24,3 +24,5 @@ Deliverer=منجی: Sender=فرستنده Recipient=دریافت کننده ErrorStockIsNotEnough=این سهام به اندازه کافی وجود ندارد +Shippable=حمل و نقلی +NonShippable=حمل و نقلی نیست diff --git a/htdocs/langs/fa_IR/incoterm.lang b/htdocs/langs/fa_IR/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/fa_IR/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/fa_IR/printing.lang b/htdocs/langs/fa_IR/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/fa_IR/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/fa_IR/projects.lang b/htdocs/langs/fa_IR/projects.lang index 0e685cffc26..efcea608be1 100644 --- a/htdocs/langs/fa_IR/projects.lang +++ b/htdocs/langs/fa_IR/projects.lang @@ -130,13 +130,15 @@ AddElement=لینک به عنصر UnlinkElement=Unlink element # Documents models DocumentModelBaleine=مدل گزارش یک پروژه کامل (logo. ..) -PlannedWorkload = حجم کار برنامه ریزی شده -WorkloadOccupation= تظاهر حجم کار +PlannedWorkload=حجم کار برنامه ریزی شده +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=مراجعه اشیاء SearchAProject=جستجوی یک پروژه ProjectMustBeValidatedFirst=پروژه ابتدا باید معتبر باشد ProjectDraft=پروژه های پیش نویس FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/fi_FI/bills.lang b/htdocs/langs/fi_FI/bills.lang index 01bdc48e34e..e8d2f7c5646 100644 --- a/htdocs/langs/fi_FI/bills.lang +++ b/htdocs/langs/fi_FI/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Maksut jo PaymentsBackAlreadyDone=Payments back already done PaymentRule=Maksu sääntö PaymentMode=Maksutapa -PaymentConditions=Maksuaika -PaymentConditionsShort=Maksuaika +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Maksusumma ValidatePayment=Vahvista maksu PaymentHigherThanReminderToPay=Maksu korkeampi kuin muistutus maksaa diff --git a/htdocs/langs/fi_FI/incoterm.lang b/htdocs/langs/fi_FI/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/fi_FI/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/fi_FI/printing.lang b/htdocs/langs/fi_FI/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/fi_FI/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/fi_FI/projects.lang b/htdocs/langs/fi_FI/projects.lang index 3772988a48c..bb52a53a1b6 100644 --- a/htdocs/langs/fi_FI/projects.lang +++ b/htdocs/langs/fi_FI/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=Täydellinen hankkeen tarkastusraportin malli (logo. ..) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang index 1956ca025be..255838cede3 100644 --- a/htdocs/langs/fr_FR/bills.lang +++ b/htdocs/langs/fr_FR/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Versements déjà effectués PaymentsBackAlreadyDone=Remboursements déjà effectués PaymentRule=Mode de paiement PaymentMode=Mode de règlement -PaymentConditions=Conditions de règlement -PaymentConditionsShort=Conditions règlement +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Montant règlement ValidatePayment=Valider ce règlement PaymentHigherThanReminderToPay=Règlement supérieur au reste à payer diff --git a/htdocs/langs/fr_FR/incoterm.lang b/htdocs/langs/fr_FR/incoterm.lang index 9b01dcaa46e..5706403aec3 100644 --- a/htdocs/langs/fr_FR/incoterm.lang +++ b/htdocs/langs/fr_FR/incoterm.lang @@ -4,4 +4,4 @@ IncotermLabel=Incoterms IncotermSetupTitle1=Fonction IncotermSetupTitle2=État IncotermSetup=Configuration du module Incoterm -IncotermFunctionDesc=Activer la fonction Incoterm (Société, Proposition comercial, Commande, Facture, Expédition, Livraison, Commande fournisseur) \ No newline at end of file +IncotermFunctionDesc=Activer la fonction Incoterm (Société, Proposition comercial, Commande, Facture, Expédition, Livraison, Commande fournisseur) diff --git a/htdocs/langs/fr_FR/printing.lang b/htdocs/langs/fr_FR/printing.lang new file mode 100644 index 00000000000..b65b22a5659 --- /dev/null +++ b/htdocs/langs/fr_FR/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Impressions Directe +Module112000Desc=Activer le système d'impression Directe +PrintingSetup=Réglages du module Impression Directe +PrintingDesc=Ce module ajoute un bouton Imprimer afin d'envoyer directement les documents à une imprimante (sans ouvrir le document dans une application). +ModuleDriverSetup=Configuration des drivers impression +PrintingDriverDesc=Paramètres de configuration pour le driver d'impression +ListDrivers=Liste des drivers +PrintTestDesc=Liste des imprimantes +FileWasSentToPrinter=Le fichier %s a été envoyé à l'imprimante +NoActivePrintingModuleFound=Pas de module actif pour imprimer le document +PleaseSelectaDriverfromList=Sélection un driver dans la liste +SetupDriver=Configuration du driver +TestDriver=Test +TargetedPrinter=Imprimante cible +UserConf=Configuration par utilisateur +PRINTGCP=Impression Google Cloud Print +PrintGCPDesc=Ce driver permet d'envoyer des documents directement à l'imprimante via Google Cloud Print +PrintingDriverDescprintgcp=Paramètres de configuration pour l'impression Google Cloud Print +PrintTestDescprintgcp=Liste des imprimantes pour Google Cloud Print +PRINTGCP_LOGIN=Compte login google +PRINTGCP_PASSWORD=Mot de passe compte Google +STATE_ONLINE=En ligne +STATE_UNKNOWN=Inconnu +STATE_OFFLINE=Hors ligne +STATE_DORMANT=Hors ligne +TYPE_GOOGLE=Google +TYPE_HP=Imprimante HP +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Nom +GCP_displayName=Nom affiché +GCP_Id=Id imprimante +GCP_OwnerName=Nom propriétaire +GCP_State=Etat imprimante +GCP_connectionStatus=Etats en ligne +GCP_Type=Type d'imprimante +PRINTIPP=Driver PrintIPP +PrintIPPSetup=Configuration du module d'Impression Directe +PrintIPPDesc=Ce driver permet d'envoyer les documents directement à une imprimante. Il requiert un système Linux avec CUPS installé. +PrintingDriverDescprintipp=Paramètres de configuration pour l'impressions par le driver PrintIPP +PrintTestDescprintipp=Liste des imprimantes du driver PrintIPP +PRINTIPP_ENABLED=Afficher l'icône « Impression directe » dans les listes de documents +PRINTIPP_HOST=Serveur d'impression +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Mot de passe +NoPrinterFound=Aucune imprimante trouvée (vérifiez votre configuration CUPS) +FileWasSentToPrinter=Le fichier %s a été envoyé à l'imprimante +NoDefaultPrinterDefined=Il n'y a pas d'imprimante définie par défaut +DefaultPrinter=Imprimante par défaut +Printer=Imprimante +CupsServer=Serveur CUPS +IPP_Uri=Uri imprimante +IPP_Name=Nom imprimante +IPP_State=Etat imprimante +IPP_State_reason=Motif état +IPP_State_reason1=Motif état1 +IPP_BW=Black and White +IPP_Color=Couleur +IPP_Device=Dispositif +IPP_Media=Média d'impression +IPP_Supported=Type de média +STATE_IPP_idle=En attente +STATE_IPP_stopped=Stoppé +STATE_IPP_paused=En pause +STATE_IPP_toner-low-report=Toner faible +STATE_IPP_none=Aucune +MEDIA_IPP_stationery=En attente +MEDIA_IPP_thermal=Température +IPP_COLOR_print-black=Imprimante NB diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index 08d2436c16e..65575fd5ce8 100644 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -71,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Liste des commandes fournisseurs associées ListSupplierInvoicesAssociatedProject=Liste des factures fournisseurs associées au projet ListContractAssociatedProject=Liste des contrats associés au projet ListFichinterAssociatedProject=Liste des interventions associées au projet -ListExpenseReportsAssociatedProject=List of expense reports associated with the project +ListExpenseReportsAssociatedProject=Liste des notes de frais associées avec ce projet ListActionsAssociatedProject=Liste des événements associés au projet ActivityOnProjectThisWeek=Activité sur les projets cette semaine ActivityOnProjectThisMonth=Activité sur les projets ce mois @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Délier l'élément # Documents models DocumentModelBaleine=Modèle de rapport de projet complet (logo...) -PlannedWorkload = Charge de travail prévue -WorkloadOccupation= Pourcentage affectation +PlannedWorkload=Charge de travail prévue +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Objets associés SearchAProject=Rechercher un projet ProjectMustBeValidatedFirst=Le projet doit être validé d'abord ProjectDraft=Projets brouillons FirstAddRessourceToAllocateTime=Ajouter une ressource pour pouvoir allouer tu temps -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/he_IL/bills.lang b/htdocs/langs/he_IL/bills.lang index 0a1e1ef5d5d..28559d91fa7 100644 --- a/htdocs/langs/he_IL/bills.lang +++ b/htdocs/langs/he_IL/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule PaymentMode=Payment type -PaymentConditions=Payment term -PaymentConditionsShort=Payment term +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Payment amount ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Payment higher than reminder to pay diff --git a/htdocs/langs/he_IL/incoterm.lang b/htdocs/langs/he_IL/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/he_IL/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/he_IL/printing.lang b/htdocs/langs/he_IL/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/he_IL/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/he_IL/projects.lang b/htdocs/langs/he_IL/projects.lang index 31faca7c515..31eba8b830a 100644 --- a/htdocs/langs/he_IL/projects.lang +++ b/htdocs/langs/he_IL/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/hr_HR/bills.lang b/htdocs/langs/hr_HR/bills.lang index 784462c316b..fbc13f66546 100644 --- a/htdocs/langs/hr_HR/bills.lang +++ b/htdocs/langs/hr_HR/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Izvršena plaćanja PaymentsBackAlreadyDone=Izvršeni povrati plaćanja PaymentRule=Pravilo plaćanja PaymentMode=Oblik plaćanja -PaymentConditions=Rok plaćanja -PaymentConditionsShort=Rok plaćanja +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Iznos plaćanja ValidatePayment=Ovjeri plaćanje PaymentHigherThanReminderToPay=Plaćanje je veće nego podsjetnik za plaćanje diff --git a/htdocs/langs/hr_HR/incoterm.lang b/htdocs/langs/hr_HR/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/hr_HR/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/hr_HR/printing.lang b/htdocs/langs/hr_HR/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/hr_HR/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/hr_HR/projects.lang b/htdocs/langs/hr_HR/projects.lang index 58ef04b2e35..9c5fecce3da 100644 --- a/htdocs/langs/hr_HR/projects.lang +++ b/htdocs/langs/hr_HR/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/hu_HU/bills.lang b/htdocs/langs/hu_HU/bills.lang index 5eca0e94b49..682a36e4fde 100644 --- a/htdocs/langs/hu_HU/bills.lang +++ b/htdocs/langs/hu_HU/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Kifizetések már megtette PaymentsBackAlreadyDone=Payments back already done PaymentRule=Fizetési szabály PaymentMode=Fizetési típus -PaymentConditions=Fizetési határidő -PaymentConditionsShort=Fizetési határidő +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Fizetés összege ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Fizetési magasabb emlékeztető fizetni diff --git a/htdocs/langs/hu_HU/incoterm.lang b/htdocs/langs/hu_HU/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/hu_HU/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/hu_HU/printing.lang b/htdocs/langs/hu_HU/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/hu_HU/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/hu_HU/projects.lang b/htdocs/langs/hu_HU/projects.lang index 085c0f39bc5..75518a0bc42 100644 --- a/htdocs/langs/hu_HU/projects.lang +++ b/htdocs/langs/hu_HU/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=Teljes jelentés modell (logo, ...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/id_ID/bills.lang b/htdocs/langs/id_ID/bills.lang index 0aff57599da..27b0443877e 100644 --- a/htdocs/langs/id_ID/bills.lang +++ b/htdocs/langs/id_ID/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Pembayaran - pembayaran yang sudah selesai PaymentsBackAlreadyDone=Pembayaran - pembayaran kembali yang sudah selesai PaymentRule=Aturan pembayaran PaymentMode=Jenis pembayaran -PaymentConditions=Ketentuan pembayaran -PaymentConditionsShort=Ketentuan pembayaran +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Jumlah pembayaran ValidatePayment=Validasi pembayaran PaymentHigherThanReminderToPay=Pengingat untuk pembayaran yang lebih tinggi diff --git a/htdocs/langs/id_ID/incoterm.lang b/htdocs/langs/id_ID/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/id_ID/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/id_ID/printing.lang b/htdocs/langs/id_ID/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/id_ID/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/id_ID/projects.lang b/htdocs/langs/id_ID/projects.lang index 0a12f4c64b7..44d0d89687a 100644 --- a/htdocs/langs/id_ID/projects.lang +++ b/htdocs/langs/id_ID/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/is_IS/bills.lang b/htdocs/langs/is_IS/bills.lang index 40a85a7a31f..2da4c4085f7 100644 --- a/htdocs/langs/is_IS/bills.lang +++ b/htdocs/langs/is_IS/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Greiðslur gert þegar PaymentsBackAlreadyDone=Payments back already done PaymentRule=Greiðsla regla PaymentMode=Greiðslumáti -PaymentConditions=Greiðsla orð -PaymentConditionsShort=Greiðsla orð +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Upphæð greiðslu ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Greiðsla hærri en áminning að borga diff --git a/htdocs/langs/is_IS/incoterm.lang b/htdocs/langs/is_IS/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/is_IS/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/is_IS/printing.lang b/htdocs/langs/is_IS/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/is_IS/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/is_IS/projects.lang b/htdocs/langs/is_IS/projects.lang index ee5af4c6a48..f8426bd2033 100644 --- a/htdocs/langs/is_IS/projects.lang +++ b/htdocs/langs/is_IS/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=skýrslu lýkur verkefninu er líkan (logo. ..) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/it_IT/bills.lang b/htdocs/langs/it_IT/bills.lang index 62ab683bd6e..451631b87a7 100644 --- a/htdocs/langs/it_IT/bills.lang +++ b/htdocs/langs/it_IT/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Pagamenti già fatti PaymentsBackAlreadyDone=Rimborso già effettuato PaymentRule=Regola pagamento PaymentMode=Tipo di pagamento -PaymentConditions=Termine di pagamento -PaymentConditionsShort=Ter. di pagamento +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Importo del pagamento ValidatePayment=Convalidare questo pagamento? PaymentHigherThanReminderToPay=Pagamento superiore alla rimanenza da pagare diff --git a/htdocs/langs/it_IT/incoterm.lang b/htdocs/langs/it_IT/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/it_IT/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/it_IT/printing.lang b/htdocs/langs/it_IT/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/it_IT/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/it_IT/projects.lang b/htdocs/langs/it_IT/projects.lang index ce4d893f0fd..8520ba26e37 100644 --- a/htdocs/langs/it_IT/projects.lang +++ b/htdocs/langs/it_IT/projects.lang @@ -130,13 +130,15 @@ AddElement=Link all'elemento UnlinkElement=Rimuovi collegamento # Documents models DocumentModelBaleine=Modello per il report di un progetto completo (logo, etc..) -PlannedWorkload = Carico di lavoro previsto -WorkloadOccupation= Carico di lavoro supposto +PlannedWorkload=Carico di lavoro previsto +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Elementi correlati SearchAProject=Cerca un progetto ProjectMustBeValidatedFirst=I progetti devono prima essere validati ProjectDraft=Progetti bozza FirstAddRessourceToAllocateTime=Associa una risorsa per allocare il tempo -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/ja_JP/bills.lang b/htdocs/langs/ja_JP/bills.lang index f27ee25bc1a..0fcd2a7fcc2 100644 --- a/htdocs/langs/ja_JP/bills.lang +++ b/htdocs/langs/ja_JP/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=支払いがすでに行わ PaymentsBackAlreadyDone=Payments back already done PaymentRule=支払いルール PaymentMode=お支払い方法の種類 -PaymentConditions=支払期間 -PaymentConditionsShort=支払期間 +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=支払金額 ValidatePayment=Validate payment PaymentHigherThanReminderToPay=支払うために思い出させるよりも高い支払い diff --git a/htdocs/langs/ja_JP/incoterm.lang b/htdocs/langs/ja_JP/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/ja_JP/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/ja_JP/printing.lang b/htdocs/langs/ja_JP/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/ja_JP/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/ja_JP/projects.lang b/htdocs/langs/ja_JP/projects.lang index 0011d0ab801..92c233d9feb 100644 --- a/htdocs/langs/ja_JP/projects.lang +++ b/htdocs/langs/ja_JP/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=完全なプロジェクトのレポートモデル(logo. ..) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/ka_GE/bills.lang b/htdocs/langs/ka_GE/bills.lang index 7232f00e91c..69e1510ca44 100644 --- a/htdocs/langs/ka_GE/bills.lang +++ b/htdocs/langs/ka_GE/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule PaymentMode=Payment type -PaymentConditions=Payment term -PaymentConditionsShort=Payment term +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Payment amount ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Payment higher than reminder to pay diff --git a/htdocs/langs/ka_GE/incoterm.lang b/htdocs/langs/ka_GE/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/ka_GE/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/ka_GE/printing.lang b/htdocs/langs/ka_GE/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/ka_GE/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/ka_GE/projects.lang b/htdocs/langs/ka_GE/projects.lang index 0a12f4c64b7..44d0d89687a 100644 --- a/htdocs/langs/ka_GE/projects.lang +++ b/htdocs/langs/ka_GE/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/kn_IN/bills.lang b/htdocs/langs/kn_IN/bills.lang index 7232f00e91c..69e1510ca44 100644 --- a/htdocs/langs/kn_IN/bills.lang +++ b/htdocs/langs/kn_IN/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule PaymentMode=Payment type -PaymentConditions=Payment term -PaymentConditionsShort=Payment term +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Payment amount ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Payment higher than reminder to pay diff --git a/htdocs/langs/kn_IN/incoterm.lang b/htdocs/langs/kn_IN/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/kn_IN/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/kn_IN/printing.lang b/htdocs/langs/kn_IN/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/kn_IN/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/kn_IN/projects.lang b/htdocs/langs/kn_IN/projects.lang index 0a12f4c64b7..44d0d89687a 100644 --- a/htdocs/langs/kn_IN/projects.lang +++ b/htdocs/langs/kn_IN/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/ko_KR/bills.lang b/htdocs/langs/ko_KR/bills.lang index 7232f00e91c..69e1510ca44 100644 --- a/htdocs/langs/ko_KR/bills.lang +++ b/htdocs/langs/ko_KR/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule PaymentMode=Payment type -PaymentConditions=Payment term -PaymentConditionsShort=Payment term +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Payment amount ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Payment higher than reminder to pay diff --git a/htdocs/langs/ko_KR/incoterm.lang b/htdocs/langs/ko_KR/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/ko_KR/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/ko_KR/printing.lang b/htdocs/langs/ko_KR/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/ko_KR/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/ko_KR/projects.lang b/htdocs/langs/ko_KR/projects.lang index 0a12f4c64b7..44d0d89687a 100644 --- a/htdocs/langs/ko_KR/projects.lang +++ b/htdocs/langs/ko_KR/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/lo_LA/bills.lang b/htdocs/langs/lo_LA/bills.lang index 7232f00e91c..69e1510ca44 100644 --- a/htdocs/langs/lo_LA/bills.lang +++ b/htdocs/langs/lo_LA/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule PaymentMode=Payment type -PaymentConditions=Payment term -PaymentConditionsShort=Payment term +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Payment amount ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Payment higher than reminder to pay diff --git a/htdocs/langs/lo_LA/incoterm.lang b/htdocs/langs/lo_LA/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/lo_LA/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/lo_LA/printing.lang b/htdocs/langs/lo_LA/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/lo_LA/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/lo_LA/projects.lang b/htdocs/langs/lo_LA/projects.lang index 0a12f4c64b7..44d0d89687a 100644 --- a/htdocs/langs/lo_LA/projects.lang +++ b/htdocs/langs/lo_LA/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/lt_LT/bills.lang b/htdocs/langs/lt_LT/bills.lang index 109f690c9e9..aafc8302888 100644 --- a/htdocs/langs/lt_LT/bills.lang +++ b/htdocs/langs/lt_LT/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Jau atlikti mokėjimai PaymentsBackAlreadyDone=Jau atlikti mokėjimai atgal (grąžinimai) PaymentRule=Mokėjimo taisyklė PaymentMode=Mokėjimo būdas -PaymentConditions=Mokėjimo terminas -PaymentConditionsShort=Mokėjimo terminas +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Mokėjimo suma ValidatePayment=Mokėjimą pripažinti galiojančiu PaymentHigherThanReminderToPay=Mokėjimas svarbesnis už priminimą sumokėti diff --git a/htdocs/langs/lt_LT/incoterm.lang b/htdocs/langs/lt_LT/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/lt_LT/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/lt_LT/printing.lang b/htdocs/langs/lt_LT/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/lt_LT/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/lt_LT/projects.lang b/htdocs/langs/lt_LT/projects.lang index ad5077bc7b4..571dc0007cc 100644 --- a/htdocs/langs/lt_LT/projects.lang +++ b/htdocs/langs/lt_LT/projects.lang @@ -130,13 +130,15 @@ AddElement=Susieti su elementu UnlinkElement=Unlink element # Documents models DocumentModelBaleine=Pilnas projekto ataskaitos modelis (logo. ..) -PlannedWorkload = Planuojamas darbo krūvis -WorkloadOccupation= Darbo krūvio paskirtis +PlannedWorkload=Planuojamas darbo krūvis +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Nurodomi objektai SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/lv_LV/admin.lang b/htdocs/langs/lv_LV/admin.lang index b1e121979c8..5cfd0de415e 100644 --- a/htdocs/langs/lv_LV/admin.lang +++ b/htdocs/langs/lv_LV/admin.lang @@ -8,9 +8,9 @@ VersionExperimental=Eksperimentāls VersionDevelopment=Attīstība VersionUnknown=Nezināms VersionRecommanded=Ieteicams -FileCheck=Files Integrity -FilesMissing=Missing Files -FilesUpdated=Updated Files +FileCheck=Failu veselums +FilesMissing=Trūkstošie faili +FilesUpdated=Atjaunotie faili FileCheckDolibarr=Check Dolibarr Files Integrity XmlNotFound=Xml File of Dolibarr Integrity Not Found SessionId=Sesijas ID @@ -1436,7 +1436,7 @@ SendingsReceiptModel=Nosūtot saņemšanas modeli SendingsNumberingModules=Sendings numerācijas moduļus SendingsAbility=Support shipment sheets for customer deliveries NoNeedForDeliveryReceipts=Vairumā gadījumu, sendings ieņēmumi tiek izmantoti gan kā loksnes klientu piegādēm (produktu sarakstu, lai nosūtītu) un loksnes, kas tiek recevied un paraksta klientu. Tātad produkta piegādes kvītis ir dublēta iezīme, un reti aktivizēts. -FreeLegalTextOnShippings=Free text on shipments +FreeLegalTextOnShippings=Brīvais teksts piegādēs ##### Deliveries ##### DeliveryOrderNumberingModules=Produkti piegādes kvīts numerācija modulis DeliveryOrderModel=Produkti piegādes kvīts modelis @@ -1553,7 +1553,7 @@ BankOrderESDesc=Spāņu displejs, lai ##### Multicompany ##### MultiCompanySetup=Multi-kompānija modulis iestatīšana ##### Suppliers ##### -SuppliersSetup=Piegādātājs modulis uzstādīšana +SuppliersSetup=Piegādātāja moduļa iestatījumi SuppliersCommandModel=Pilnīga veidni no piegādātāja secībā (logo. ..) SuppliersInvoiceModel=Pilnīga veidni no piegādātāja rēķina (logo. ..) SuppliersInvoiceNumberingModel=Piegādātāju rēķinu numerācijas modeļus diff --git a/htdocs/langs/lv_LV/bills.lang b/htdocs/langs/lv_LV/bills.lang index 4216d9f6a05..cf62660e3df 100644 --- a/htdocs/langs/lv_LV/bills.lang +++ b/htdocs/langs/lv_LV/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Jau samaksāts PaymentsBackAlreadyDone=Maksājumi atpakaļ izdarījušas PaymentRule=Maksājuma noteikums PaymentMode=Maksājuma veids -PaymentConditions=Maksājuma noteikumi -PaymentConditionsShort=Maksājuma noteikumi +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Maksājuma summa ValidatePayment=Apstiprināt maksājumu PaymentHigherThanReminderToPay=Maksājumu augstāka nekā atgādinājums par samaksu diff --git a/htdocs/langs/lv_LV/incoterm.lang b/htdocs/langs/lv_LV/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/lv_LV/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/lv_LV/printing.lang b/htdocs/langs/lv_LV/printing.lang new file mode 100644 index 00000000000..7ca777ca34e --- /dev/null +++ b/htdocs/langs/lv_LV/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printeris +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Nosaukums +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Īpašnieka nosaukums +GCP_State=Printera statuss +GCP_connectionStatus=Online State +GCP_Type=Printera tips +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Ports +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Parole +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Noklusējuma printeris +Printer=Printeris +CupsServer=CUPS Serveris +IPP_Uri=Printer Uri +IPP_Name=Printera nosaukums +IPP_State=Printera statuss +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=Melnbalts +IPP_Color=Krāsainais +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/lv_LV/projects.lang b/htdocs/langs/lv_LV/projects.lang index bc4ff4c3057..975654740b1 100644 --- a/htdocs/langs/lv_LV/projects.lang +++ b/htdocs/langs/lv_LV/projects.lang @@ -130,13 +130,15 @@ AddElement=Saite uz elementu UnlinkElement=Unlink element # Documents models DocumentModelBaleine=Pilnīgu projekta ziņojums modelis (logo. ..) -PlannedWorkload = Plānotais darba apjoms -WorkloadOccupation= Darba slodze izlikšanās +PlannedWorkload=Plānotais darba apjoms +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Atsaucoties objekti SearchAProject=Meklēt projektu ProjectMustBeValidatedFirst=Projektu vispirms jāpārbauda ProjectDraft=Melnraksta projekts FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/mk_MK/bills.lang b/htdocs/langs/mk_MK/bills.lang index 7232f00e91c..69e1510ca44 100644 --- a/htdocs/langs/mk_MK/bills.lang +++ b/htdocs/langs/mk_MK/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule PaymentMode=Payment type -PaymentConditions=Payment term -PaymentConditionsShort=Payment term +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Payment amount ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Payment higher than reminder to pay diff --git a/htdocs/langs/mk_MK/incoterm.lang b/htdocs/langs/mk_MK/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/mk_MK/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/mk_MK/printing.lang b/htdocs/langs/mk_MK/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/mk_MK/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/mk_MK/projects.lang b/htdocs/langs/mk_MK/projects.lang index 0a12f4c64b7..44d0d89687a 100644 --- a/htdocs/langs/mk_MK/projects.lang +++ b/htdocs/langs/mk_MK/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/nb_NO/bills.lang b/htdocs/langs/nb_NO/bills.lang index db2883bb788..510cc00557a 100644 --- a/htdocs/langs/nb_NO/bills.lang +++ b/htdocs/langs/nb_NO/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Betalinger allerede utført PaymentsBackAlreadyDone=Tilbakebetalinger allerede utført PaymentRule=Betalingsregel PaymentMode=Betalingsmåte -PaymentConditions=Betalingsbetingelser -PaymentConditionsShort=Betalingsbetingelser +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Beløp til betaling ValidatePayment=Godkjenn betaling PaymentHigherThanReminderToPay=Betalingen er høyere enn restbeløp diff --git a/htdocs/langs/nb_NO/incoterm.lang b/htdocs/langs/nb_NO/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/nb_NO/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/nb_NO/printing.lang b/htdocs/langs/nb_NO/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/nb_NO/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/nb_NO/projects.lang b/htdocs/langs/nb_NO/projects.lang index 86f6159f0fa..e1ca6e4c987 100644 --- a/htdocs/langs/nb_NO/projects.lang +++ b/htdocs/langs/nb_NO/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Koble fra element # Documents models DocumentModelBaleine=En komplett prosjektets rapport modell (logo. ..) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/nl_NL/bills.lang b/htdocs/langs/nl_NL/bills.lang index 1f75b981c62..2b5abd111e8 100644 --- a/htdocs/langs/nl_NL/bills.lang +++ b/htdocs/langs/nl_NL/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Betalingen gedaan PaymentsBackAlreadyDone=Terugbetaling al gedaan PaymentRule=Betalingsvoorwaarde PaymentMode=Betalingstype -PaymentConditions=Betalingstermijn -PaymentConditionsShort=Betalingstermijn +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Betalingsbedrag ValidatePayment=Valideer deze betaling PaymentHigherThanReminderToPay=Betaling hoger dan herinnering te betalen diff --git a/htdocs/langs/nl_NL/incoterm.lang b/htdocs/langs/nl_NL/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/nl_NL/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/nl_NL/printing.lang b/htdocs/langs/nl_NL/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/nl_NL/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/nl_NL/projects.lang b/htdocs/langs/nl_NL/projects.lang index e242d88716f..74ddfd7837e 100644 --- a/htdocs/langs/nl_NL/projects.lang +++ b/htdocs/langs/nl_NL/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=Een compleet projectrapportagemodel (logo, etc) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/pl_PL/bills.lang b/htdocs/langs/pl_PL/bills.lang index 0d11b2c8bf0..094cf87680e 100644 --- a/htdocs/langs/pl_PL/bills.lang +++ b/htdocs/langs/pl_PL/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Płatności już PaymentsBackAlreadyDone=Payments back already done PaymentRule=Zasady płatności PaymentMode=Typ płatności -PaymentConditions=Termin płatności -PaymentConditionsShort=Termin płatności +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Kwota płatności ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Płatności wyższe niż upomnienie do zapłaty diff --git a/htdocs/langs/pl_PL/incoterm.lang b/htdocs/langs/pl_PL/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/pl_PL/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/pl_PL/interventions.lang b/htdocs/langs/pl_PL/interventions.lang index 1bd9519089d..7894486a1c6 100644 --- a/htdocs/langs/pl_PL/interventions.lang +++ b/htdocs/langs/pl_PL/interventions.lang @@ -3,7 +3,7 @@ Intervention=Interwencja Interventions=Interwencje InterventionCard=Interwencja karty NewIntervention=Nowa interwencja -AddIntervention=Create intervention +AddIntervention=Tworzenie interwencji ListOfInterventions=Wykaz interwencji EditIntervention=Editer interwencji ActionsOnFicheInter=Działania w zakresie interwencji @@ -23,22 +23,22 @@ ConfirmDeleteInterventionLine=Czy na pewno chcesz usunąć tę linię interwencj NameAndSignatureOfInternalContact=Nazwisko i podpis interwencji: NameAndSignatureOfExternalContact=Nazwisko i podpis klienta: DocumentModelStandard=Model standardowy dokument dla interwencji -InterventionCardsAndInterventionLines=Interventions and lines of interventions -InterventionClassifyBilled=Classify "Billed" -InterventionClassifyUnBilled=Classify "Unbilled" +InterventionCardsAndInterventionLines=Interwencje i kierunki interwencji +InterventionClassifyBilled=Sklasyfikować "Rozlicz" +InterventionClassifyUnBilled=Sklasyfikować "Unbilled" StatusInterInvoiced=Zapowiadane RelatedInterventions=Podobne interwencje ShowIntervention=Pokaż interwencji -SendInterventionRef=Submission of intervention %s -SendInterventionByMail=Send intervention by Email -InterventionCreatedInDolibarr=Intervention %s created -InterventionValidatedInDolibarr=Intervention %s validated -InterventionModifiedInDolibarr=Intervention %s modified -InterventionClassifiedBilledInDolibarr=Intervention %s set as billed -InterventionClassifiedUnbilledInDolibarr=Intervention %s set as unbilled -InterventionSentByEMail=Intervention %s sent by EMail -InterventionDeletedInDolibarr=Intervention %s deleted -SearchAnIntervention=Search an intervention +SendInterventionRef=Złożenie interwencyjnego% s +SendInterventionByMail=Wyślij interwencji przez e-mail +InterventionCreatedInDolibarr=% S tworzone interwencji +InterventionValidatedInDolibarr=% Interwencja s zatwierdzone +InterventionModifiedInDolibarr=% S zmodyfikowano interwencji +InterventionClassifiedBilledInDolibarr=% Interwencyjnej s zestaw jako rozliczane +InterventionClassifiedUnbilledInDolibarr=% Interwencyjnej s zestaw jako weryfikowane +InterventionSentByEMail=% Interwencja y wysyłane e-mailem +InterventionDeletedInDolibarr=% Interwencja s usunięte +SearchAnIntervention=Szukaj interwencji ##### Types de contacts ##### TypeContact_fichinter_internal_INTERREPFOLL=Przedstawiciela w ślad za interwencję TypeContact_fichinter_internal_INTERVENING=Interwencja @@ -49,5 +49,5 @@ ArcticNumRefModelDesc1=Generic numer modelu ArcticNumRefModelError=Nie można włączyć PacificNumRefModelDesc1=Wróć NUMERO z formatu %syymm rr-nnnn gdzie jest rok, mm miesiąc i nnnn jest ciągiem bez przerwy i nie ma powrotu do 0 PacificNumRefModelError=Interwencja karty zaczynające się od $ syymm już istnieje i nie jest kompatybilne z tym modelem sekwencji. Usuń go lub zmienić jego nazwę, aby włączyć ten moduł. -PrintProductsOnFichinter=Print products on intervention card -PrintProductsOnFichinterDetails=forinterventions generated from orders +PrintProductsOnFichinter=Drukarnie na karcie interwencyjną +PrintProductsOnFichinterDetails=forinterventions wygenerowane z zamówień diff --git a/htdocs/langs/pl_PL/mailmanspip.lang b/htdocs/langs/pl_PL/mailmanspip.lang index 4df2bf08bde..d5113dc6507 100644 --- a/htdocs/langs/pl_PL/mailmanspip.lang +++ b/htdocs/langs/pl_PL/mailmanspip.lang @@ -1,27 +1,27 @@ # Dolibarr language file - Source file is en_US - mailmanspip -# MailmanSpipSetup=Mailman and SPIP module Setup -# MailmanTitle=Mailman mailing list system -# TestSubscribe=To test subscription to Mailman lists -# TestUnSubscribe=To test unsubscribe from Mailman lists -# MailmanCreationSuccess=Subscription test was executed succesfully -# MailmanDeletionSuccess=Unsubscription test was executed succesfully -# SynchroMailManEnabled=A Mailman update will be performed -# SynchroSpipEnabled=A Spip update will be performed -# DescADHERENT_MAILMAN_ADMINPW=Mailman administrator password -# DescADHERENT_MAILMAN_URL=URL for Mailman subscriptions -# DescADHERENT_MAILMAN_UNSUB_URL=URL for Mailman unsubscriptions -# DescADHERENT_MAILMAN_LISTS=List(s) for automatic inscription of new members (separated by a comma) -# SPIPTitle=SPIP Content Management System -# DescADHERENT_SPIP_SERVEUR=SPIP Server -# DescADHERENT_SPIP_DB=SPIP database name -# DescADHERENT_SPIP_USER=SPIP database login -# DescADHERENT_SPIP_PASS=SPIP database password -# AddIntoSpip=Add into SPIP -# AddIntoSpipConfirmation=Are you sure you want to add this member into SPIP? -# AddIntoSpipError=Failed to add the user in SPIP -# DeleteIntoSpip=Remove from SPIP -# DeleteIntoSpipConfirmation=Are you sure you want to remove this member from SPIP? -# DeleteIntoSpipError=Failed to suppress the user from SPIP -# SPIPConnectionFailed=Failed to connect to SPIP -# SuccessToAddToMailmanList=Add of %s to mailman list %s or SPIP database done -# SuccessToRemoveToMailmanList=Removal of %s from mailman list %s or SPIP database done +MailmanSpipSetup=Listonosz i SPIP Konfiguracja modułu +MailmanTitle=Lista System listonosz pocztowy +TestSubscribe=Aby przetestować subskrypcji Liste list +TestUnSubscribe=Aby przetestować wypisać się z listy Liste +MailmanCreationSuccess=Subskrypcja Badanie zostało wykonane pomyślnie +MailmanDeletionSuccess=Badanie zostało zrealizowane pomyślnie wypisania +SynchroMailManEnabled=Listonosz aktualizacja zostanie przeprowadzona +SynchroSpipEnabled=Aktualizacja zostanie wykonana Spip +DescADHERENT_MAILMAN_ADMINPW=Listonosz hasło administratora +DescADHERENT_MAILMAN_URL=Adres do subskrypcji Liste +DescADHERENT_MAILMAN_UNSUB_URL=URL Liste unsubscriptions +DescADHERENT_MAILMAN_LISTS=Lista (y) do automatycznego napisem nowych członków (oddzielone przecinkiem) +SPIPTitle=Content Management System SPIP +DescADHERENT_SPIP_SERVEUR=SPIP Server +DescADHERENT_SPIP_DB=Nazwa bazy danych SPIP +DescADHERENT_SPIP_USER=SPIP logowania bazy danych +DescADHERENT_SPIP_PASS=Hasło bazy danych SPIP +AddIntoSpip=Dodaj do SPIP +AddIntoSpipConfirmation=Czy na pewno chcesz dodać ten element do SPIP? +AddIntoSpipError=Nie udało się dodać użytkownika w SPIP +DeleteIntoSpip=Usuń z SPIP +DeleteIntoSpipConfirmation=Czy na pewno chcesz usunąć ten element z SPIP? +DeleteIntoSpipError=Nie udało się stłumić użytkownika z SPIP +SPIPConnectionFailed=Nie można połączyć się SPIP +SuccessToAddToMailmanList=Dodaj %s do %s listonosz listy lub bazy danych SPIP wykonanej +SuccessToRemoveToMailmanList=Usuwanie %s z %s listonosz listy lub bazy danych SPIP zrobić diff --git a/htdocs/langs/pl_PL/mails.lang b/htdocs/langs/pl_PL/mails.lang index d1a930134f5..634c2963f93 100644 --- a/htdocs/langs/pl_PL/mails.lang +++ b/htdocs/langs/pl_PL/mails.lang @@ -43,10 +43,10 @@ MailingStatusSentCompletely=Wysłane całkowicie MailingStatusError=Błąd MailingStatusNotSent=Nie wysłano MailSuccessfulySent=E-mail wysłany successfuly (od %s do %s) -MailingSuccessfullyValidated=EMailing successfully validated -MailUnsubcribe=Unsubscribe -Unsuscribe=Unsubscribe -MailingStatusNotContact=Don't contact anymore +MailingSuccessfullyValidated=Wysyłanie pomyślnie zweryfikowane +MailUnsubcribe=Wyrejestrowanie +Unsuscribe=Wyrejestrowanie +MailingStatusNotContact=Nie kontaktuj się więcej ErrorMailRecipientIsEmpty=E-mail odbiorcy jest pusty WarningNoEMailsAdded=Brak nowych wiadomości e-mail, aby dodać adres do listy. ConfirmValidMailing=Czy na pewno chcesz, aby potwierdzić tego e-maila? @@ -73,31 +73,31 @@ DateLastSend=Data ostatniej wysyłanie DateSending=Data wysłania SentTo=Wysłane do %s MailingStatusRead=Czytać -CheckRead=Read Receipt -YourMailUnsubcribeOK=The email %s is correctly unsubcribe from mailing list -MailtoEMail=Hyper link to email -ActivateCheckRead=Allow to use the "Unsubcribe" link -ActivateCheckReadKey=Key use to encrypt URL use for "Read Receipt" and "Unsubcribe" feature -EMailSentToNRecipients=EMail sent to %s recipients. -XTargetsAdded=%s recipients added into target list -EachInvoiceWillBeAttachedToEmail=A document using default invoice document template will be created and attached to each email. -MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s) -SendRemind=Send reminder by EMails -RemindSent=%s reminder(s) sent -AllRecipientSelectedForRemind=All thirdparties selected and if an email is set (note that one mail per invoice will be sent) -NoRemindSent=No EMail reminder sent -ResultOfMassSending=Result of mass EMail reminders sending +CheckRead=Czytaj Otrzymanie +YourMailUnsubcribeOK=E-mail% s jest prawidłowo unsubcribe z listy mailingowej +MailtoEMail=Hyper link e-mail +ActivateCheckRead=Pozwól, aby skorzystać z linku "Unsubcribe" +ActivateCheckReadKey=Klucz do szyfrowania wykorzystanie wykorzystanie URL dla "Czytaj Pokwitowanie" oraz funkcja "Unsubcribe" +EMailSentToNRecipients=Napisz e-mail wysłany do% s odbiorców. +XTargetsAdded=% s dodany do listy odbiorców docelowych +EachInvoiceWillBeAttachedToEmail=Dokument za pomocą domyślnej faktury szablon dokumentu będą tworzone i dołączone do każdego maila. +MailTopicSendRemindUnpaidInvoices=Przypomnienie faktury% s (% s) +SendRemind=Wyślij przypomnienie poprzez e-maile +RemindSent=Przypominamy% s (e) wysłany +AllRecipientSelectedForRemind=Zaznacz wszystkie thirdparties i jeśli e-mail jest ustawiony (zauważ, że jeden elektronicznej za faktury będą wysyłane) +NoRemindSent=Bez przypomnienia e-mail wysłany +ResultOfMassSending=Wynik przypomnienia masowe wysyłanie wiadomości e-mail # Libelle des modules de liste de destinataires mailing MailingModuleDescContactCompanies=Kontakty wszystkich stron trzecich (klienta, perspektywa, dostawca, ...) MailingModuleDescDolibarrUsers=Wszystkie Dolibarr użytkownikom wiadomości e-mail MailingModuleDescFundationMembers=Fundacja użytkowników z e-maili MailingModuleDescEmailsFromFile=E-maile z pliku tekstowego (e-mail, imię, nazwisko) -MailingModuleDescEmailsFromUser=EMails from user input (email;lastname;firstname;other) +MailingModuleDescEmailsFromUser=E-maili od danych wejściowych użytkownika (e-mail; Nazwisko; imię, inne) MailingModuleDescContactsCategories=Kontakty wszystkich stron trzecich (według kategorii) MailingModuleDescDolibarrContractsLinesExpired=Trzecim minął zamówienia linie MailingModuleDescContactsByCompanyCategory=Kontakt trzecich (przez osoby trzecie kategoria) -MailingModuleDescContactsByCategory=Contacts/addresses of third parties by category +MailingModuleDescContactsByCategory=Kontakt / adresy stron trzecich według kategorii MailingModuleDescMembersCategories=Członkowie Fundacji (o kategorie) MailingModuleDescContactsByFunction=Kontakt trzecich (według pozycji / funkcji) LineInFile=Linia w pliku %s @@ -112,30 +112,30 @@ SearchAMailing=Szukaj mailowych SendMailing=Wyślij e-maila SendMail=Wyślij e-mail SentBy=Wysłane przez -MailingNeedCommand=For security reason, sending an emailing is better when performed from command line. If you have one, ask your server administrator to launch the following command to send the emailing to all recipients: +MailingNeedCommand=Ze względów bezpieczeństwa, wysyłając e-maila jest lepiej, gdy wykonywane z linii poleceń. Jeśli masz, poproś administratora serwera, aby uruchomić następujące polecenie, aby wysłać e-maila do wszystkich odbiorców: MailingNeedCommand2=Możesz jednak wysłać je w sieci poprzez dodanie parametru MAILING_LIMIT_SENDBYWEB o wartości max liczba wiadomości e-mail, który chcesz wysłać przez sesji. -ConfirmSendingEmailing=If you can't or prefer sending them with your www browser, please confirm you are sure you want to send emailing now from your browser ? -LimitSendingEmailing=Note: Sending of emailings from web interface is done in several times for security and timeout reasons, %s recipients at a time for each sending session. +ConfirmSendingEmailing=Jeśli nie możesz lub preferują wysyłanie ich z przeglądarki www, prosimy o potwierdzenie jesteś pewien, że chcesz wysłać e-maila teraz z przeglądarki? +LimitSendingEmailing=Uwaga: Wysyłanie Emailings z interfejsu WWW jest wykonywana w kilku czasach ze względów bezpieczeństwa oraz limitu czasu,% s odbiorców jednocześnie dla każdej sesji wysyłającego. TargetsReset=Wyczyść listę ToClearAllRecipientsClickHere=Aby wyczyścić odbiorców tego e-maila na listę, kliknij przycisk ToAddRecipientsChooseHere=Aby dodać odbiorców, wybierz w tych wykazach NbOfEMailingsReceived=Masa emailings otrzymała -NbOfEMailingsSend=Mass emailings sent +NbOfEMailingsSend=Masowe Emailings wysłane IdRecord=ID rekordu DeliveryReceipt=Odbiór dostawy YouCanUseCommaSeparatorForSeveralRecipients=Możesz używać przecinka separator określić kilku odbiorców. -TagCheckMail=Track mail opening -TagUnsubscribe=Unsubscribe link -TagSignature=Signature sending user -TagMailtoEmail=Recipient EMail +TagCheckMail=Utwór otwierający elektronicznej +TagUnsubscribe=Wypisz odnośnik +TagSignature=Podpis wysyłania użytkownika +TagMailtoEmail=E-mail odbiorcy # Module Notifications Notifications=Powiadomienia NoNotificationsWillBeSent=Brak powiadomień e-mail są planowane dla tego wydarzenia i spółka ANotificationsWillBeSent=1 zgłoszenie zostanie wysłane pocztą elektroniczną SomeNotificationsWillBeSent=%s powiadomienia będą wysyłane przez e-mail -AddNewNotification=Activate a new email notification target -ListOfActiveNotifications=List all active email notification targets +AddNewNotification=Aktywuj nowy cel powiadomienia e-mail +ListOfActiveNotifications=Lista wszystkich aktywnych celów powiadomienia e-mail ListOfNotificationsDone=Lista wszystkich powiadomień e-mail wysłany -MailSendSetupIs=Configuration of email sending has been setup to '%s'. This mode can't be used to send mass emailing. -MailSendSetupIs2=You must first go, with an admin account, into menu %sHome - Setup - EMails%s to change parameter '%s' to use mode '%s'. With this mode, you can enter setup of the SMTP server provided by your Internet Service Provider and use Mass emailing feature. -MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s. +MailSendSetupIs=Konfiguracja poczty e-mail wysyłającego musi być połączone z '% s'. Tryb ten może być wykorzystywany do wysyłania masowego wysyłania. +MailSendSetupIs2=Najpierw trzeba przejść, z konta administratora, w menu% sHome - Ustawienia - e-maile% s, aby zmienić parametr '% s' na tryb '% s' używać. W tym trybie można wprowadzić ustawienia serwera SMTP dostarczonych przez usługodawcę internetowego i używać funkcji e-maila Mszę św. +MailSendSetupIs3=Jeśli masz jakieś pytania na temat jak skonfigurować serwer SMTP, możesz poprosić o% s. diff --git a/htdocs/langs/pl_PL/printing.lang b/htdocs/langs/pl_PL/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/pl_PL/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/pl_PL/projects.lang b/htdocs/langs/pl_PL/projects.lang index 2c0a3ee7470..a71243d3674 100644 --- a/htdocs/langs/pl_PL/projects.lang +++ b/htdocs/langs/pl_PL/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=Kompletny model projektu sprawozdania (logo. ..) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/pl_PL/workflow.lang b/htdocs/langs/pl_PL/workflow.lang index 62b7ba48b97..90ce3d2d91f 100644 --- a/htdocs/langs/pl_PL/workflow.lang +++ b/htdocs/langs/pl_PL/workflow.lang @@ -1,11 +1,11 @@ # Dolibarr language file - Source file is en_US - admin -WorkflowSetup=Workflow konfiguracji modułu -WorkflowDesc=This module is designed to modify the behaviour of automatic actions into application. By default, workflow is opened (you make thing in order you want). You can activate the automatic actions that you are interesting in. +WorkflowSetup=Konfiguracja modułu przepływu pracy +WorkflowDesc=Moduł ten zaprojektowany został do zmiany zachowania automatycznych działań w aplikacjach. Domyślnie, przepływ pracy jest otwarty (zrobisz co chcesz w zamówieniach). Możesz aktywować automatyczne czynności, które cię interesują. ThereIsNoWorkflowToModify=Nie ma przepływu pracy można modyfikować modułu został uaktywniony. descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Tworzenie zlecenia klienta automatycznie po handlowego wniosek jest podpisany descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Tworzenie faktury klienta automatycznie po handlowego wniosek jest podpisany descWORKFLOW_CONTRACT_AUTOCREATE_INVOICE=Tworzenie faktury klienta automatycznie po zatwierdzeniu umowy descWORKFLOW_ORDER_AUTOCREATE_INVOICE=Tworzenie faktury klienta automatycznie po zamówienie klienta jest zamknięty -descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Classify linked source proposal to billed when customer order is set to paid -descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Classify linked source customer order(s) to billed when customer invoice is set to paid -descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Classify linked source customer order(s) to billed when customer invoice is validated +descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Klasyfikowania związany propozycję źródłowego zapowiadane gdy zamówienie klienta jest ustawiony na płatne +descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Klasyfikowania związane Źródło (-a), gdy klienta do faktury klienta naliczana jest ustawiony wypłacane +descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Klasyfikowania związany zamówienie klienta źródłowego (s) do grubodzioby, gdy faktura klient jest weryfikowany diff --git a/htdocs/langs/pt_BR/banks.lang b/htdocs/langs/pt_BR/banks.lang index c111878d3d6..eb99b0d2d95 100644 --- a/htdocs/langs/pt_BR/banks.lang +++ b/htdocs/langs/pt_BR/banks.lang @@ -4,6 +4,7 @@ MenuSetupBank=Configuração Banco/Caixa BankName=Nome do Banco BankAccount=Conta Bancaria BankAccounts=Contas Bancarias +ShowAccount=Visualizar Conta AccountRef=Ref. Conta Financeira AccountLabel=Etiqueta da Conta Financeira CashAccount=Conta Caixa/Efetivo @@ -103,7 +104,6 @@ AllAccounts=Todas as Contas bancarias/de Caixa BackToAccount=Voltar e a Conta FutureTransaction=Transação futura. Impossivel conciliar. SelectChequeTransactionAndGenerate=Selecionar/filtrar cheques a se incluir no recibo de deposito e clickar no "Criar" -InputReceiptNumber=Escolha o relatorio bancario relativo a conciliação. Use um valor numerico (como AAAAMM) EventualyAddCategory=Posivelmente especificar a categoria para se clasificar os registros ToConciliate=A se conciliar ? ThenCheckLinesAndConciliate=Verificar as linhas presentes no relatorio do banco e clickar diff --git a/htdocs/langs/pt_BR/bills.lang b/htdocs/langs/pt_BR/bills.lang index a807b965562..e9e3fe97c2b 100644 --- a/htdocs/langs/pt_BR/bills.lang +++ b/htdocs/langs/pt_BR/bills.lang @@ -2,45 +2,46 @@ Bill=Fatura Bills=Faturas BillsCustomers=Faturas de Clientes -BillsCustomer=Fatura de Cliente +BillsCustomer=Fatura a Clientes BillsSuppliers=Faturas de Fornecedores BillsCustomersUnpaid=Faturas de Clientes Pendentes de Cobrança -BillsCustomersUnpaidForCompany=Faturas cliente nao pagas para %s +BillsCustomersUnpaidForCompany=Faturas cliente não pagas para %s BillsSuppliersUnpaid=Faturas de Fornecedores Pendentes de Pagamento BillsSuppliersUnpaidForCompany=Faturas do fornecedor não pagas para %s BillsLate=Atrasos de Pagamento -BillsStatistics=Estatísticas faturas a clientes +BillsStatistics=Estatísticas de faturas a clientes BillsStatisticsSuppliers=Estatísticas faturas de Fornecedores DisabledBecauseNotErasable=Ação desativada porque não pode ser cancelada InvoiceStandard=Fatura Padrão InvoiceStandardAsk=Fatura Padrão InvoiceStandardDesc=Este tipo de fatura é a fatura tradicional. Também é conhecida como Fatura de Débito. -InvoiceDeposit=Depositar Fatura -InvoiceDepositAsk=Depositar Fatura +InvoiceDeposit=Fatura de depósito +InvoiceDepositAsk=Fatura de depósito InvoiceDepositDesc=Este tipo de fatura é feita com um depósito quando foi recebido. InvoiceProForma=Fatura Pro-Forma InvoiceProFormaAsk=Fatura Pro-Forma InvoiceProFormaDesc=Fatura Pro-Forma é uma verdadeira imagem de uma fatura, mas não tem valor contábil. -InvoiceReplacement=Substituição da Fatura -InvoiceReplacementAsk=Substituição da Fatura para Fatura +InvoiceReplacement=Fatura de substituição +InvoiceReplacementAsk=Fatura de substituição para Fatura InvoiceReplacementDesc=A fatura retificada serve para cancelar e para substituir uma fatura existente em que ainda não existe pagamentos.

Nota: só uma fatura sem nenhum pagamento pode retificar se. Sim esta última não está fechada, passará automaticamente ao estado 'abandonada'. InvoiceAvoirAsk=Nota de Crédito para Corrigir a Fatura InvoiceAvoirDesc=A Nota de Crédito é uma fatura negativa destinada a compensar um valor de uma fatura que difere do valor realmente pago (por ter pago a mais ou por devolução de produtos, por Exemplo).

Nota: Tenha em conta que a fatura original a corrigir deve ter sido fechada (' paga' ou ' paga parcialmente ') para poder realizar uma nota de crédito. invoiceAvoirWithLines=Criar Nota de Crédito conforme a fatura original invoiceAvoirWithPaymentRestAmount=Cirar nota de credito com restante não pago da fatura original invoiceAvoirLineWithPaymentRestAmount=Nota de credito para valor restante não pago -ReplaceInvoice=Retificar a Fatura %s -ReplacementInvoice=Substituição da Fatura +ReplaceInvoice=Substituir a Fatura %s +ReplacementInvoice=Fatura de substituição ReplacedByInvoice=Substituído por Fatura %s ReplacementByInvoice=Substituído por Fatura -CorrectInvoice=Correção de Fatura %s -CorrectionInvoice=Correção de Fatura -UsedByInvoice=Aplicar sobre a fatura %s +CorrectInvoice=Corrigir Fatura %s +CorrectionInvoice=Fatura de correção +UsedByInvoice=Usada para pagar a fatura %s NotConsumed=Sem Consumo NoReplacableInvoice=Sem Faturas Retificáveis NoInvoiceToCorrect=Sem Faturas a Corrigir +InvoiceHasAvoir=Corrigida por uma ou mais faturas CardBill=Ficha Fatura -PredefinedInvoices=Fatura Predefinida +PredefinedInvoices=Faturas Predefinidas Invoice=Fatura Invoices=Faturas InvoiceLine=Linha de Fatura @@ -176,6 +177,8 @@ ExcessReceived=Recebido em Excesso EscompteOffered=Desconto (Pagamento antecipado) SendBillRef=Confirmação de fatura %s SendReminderBillRef=Lembrete de confirmação de fatura %s +StandingOrders=Débitos Diretos +StandingOrder=Débito Direto NoDraftBills=Nenhuma Fatura Rascunho NoOtherDraftBills=Nenhuma Outra Fatura Rascunho NoDraftInvoices=Nenhuma Fatura Rascunho @@ -190,6 +193,7 @@ NoInvoice=Nenhuma Fatura ClassifyBill=Classificar a Fatura SupplierBillsToPay=Faturas de Fornecedores a Pagar CustomerBillsUnpaid=Faturas de Clientes Pendentes de Cobrança +DispenseMontantLettres=Faturas escrita atraves proceduras mecanogaficas são dispensed pelos pedidos em cartas. NonPercuRecuperable=Sem Recuperação SetConditions=Definir Condições de Pagamento SetMode=Definir Modo de Pagamento @@ -306,7 +310,6 @@ DisabledBecausePayments=Não é possível uma vez já que existem alguns pagamen CantRemovePaymentWithOneInvoicePaid=Não é possível remover o pagamento já que há pelo menos uma fatura classificada como pago ExpectedToPay=Esperando pagamento PayedByThisPayment=Pago -ClosePaidInvoicesAutomatically=Classifique "Paid" todas as faturas padrão ou a substituição inteiramente paga. ClosePaidCreditNotesAutomatically=Classificar "pagou" todas as notas de crédito totalmente pago de volta. AllCompletelyPayedInvoiceWillBeClosed=Todos fatura que permanecer sem pagar será automaticamente fechada ao status de "Paid". ToMakePaymentBack=pagar tudo @@ -314,7 +317,7 @@ NoteListOfYourUnpaidInvoices=Atenção: Esta lista inclue somente faturas para t RevenueStamp=Selo da receita YouMustCreateInvoiceFromThird=Esta opção só está disponível ao criar fatura de terceiros PDFCrabeDescription=Modelo de fatura completo (ICMS, método de pagamento a mostrar, logotipo...) -TerreNumRefModelDesc1=Mostrarr número com formato %syymm-nnnn padrão para faturas e %syymm-nnnn para notas de crédito onde yy é o ano, mm mês e nnnn é uma sequência, sem interrupção e não pode mostrar o valor 0 +TerreNumRefModelDesc1=Mostrar número com formato %syymm-nnnn padrão para faturas e %syymm-nnnn para notas de crédito onde yy é o ano, mm mês e nnnn é uma sequência, sem interrupção e não pode mostrar o valor 0 MarsNumRefModelDesc1=Mostrar número com formato %syymm-nnnn padrão para faturas e %syymm-nnnn para notas de crédito onde yy é o ano, mm mês e nnnn é uma sequência, sem interrupção e não pode mostrar o valor 0 TerreNumRefModelError=O projeto começa começado por $syymm já existe e não é compatível com este modelo de seq�ência. Remova-o ou renomei-o para ativar este módulo. TypeContact_facture_internal_SALESREPFOLL=Responsável do acompanhamento da fatura do cliente @@ -325,3 +328,12 @@ TypeContact_invoice_supplier_internal_SALESREPFOLL=Representante seguindo a fatu TypeContact_invoice_supplier_external_BILLING=Contato da Fatura de Fornecedor TypeContact_invoice_supplier_external_SHIPPING=Contato de envio do fornecedor TypeContact_invoice_supplier_external_SERVICE=Contato de servico do fornecedor +InvoiceFirstSituationAsk=Primeira situação da fatura +InvoiceSituation=Situação da fatura +InvoiceSituationAsk=Fatura acompanhando a situação +InvoiceSituationDesc=Criar uma nova situação na sequência de um um já existente +CreateNextSituationInvoice=Criar proxima situação +DisabledBecauseNotLastInCycle=A próxima situação já existe. +CantBeLessThanMinPercent=O progresso não pode ser menor do que o seu valor na situação anterior. +NoSituations=Não há situações abertas +InvoiceSituationLast=Fatura final e geral diff --git a/htdocs/langs/pt_BR/commercial.lang b/htdocs/langs/pt_BR/commercial.lang index e714cacf5f4..98fe235628e 100644 --- a/htdocs/langs/pt_BR/commercial.lang +++ b/htdocs/langs/pt_BR/commercial.lang @@ -48,7 +48,6 @@ LastProspectContactInProcess=Contato em Curso LastProspectContactDone=Clientes Potenciais Contactados DateActionPlanned=Data Planificação ActionAskedBy=Ação Questionada por -ActionAffectedTo=Responsável pelo evento ActionDoneBy=Ação Realizada por ActionUserAsk=Registrada por ErrorStatusCantBeZeroIfStarted=Se o campo 'Ficha de Realização' tiver dados a ação está em curso, por isso o campo 'Estado' não pode ser 0%%. diff --git a/htdocs/langs/pt_BR/contracts.lang b/htdocs/langs/pt_BR/contracts.lang index 1ef7f2f6dc0..e345252161d 100644 --- a/htdocs/langs/pt_BR/contracts.lang +++ b/htdocs/langs/pt_BR/contracts.lang @@ -1,6 +1,7 @@ # Dolibarr language file - Source file is en_US - contracts ContractsArea=Área Contratos ListOfContracts=Lista de Contratos +LastModifiedContracts=Os %s últimos contratos alterados AllContracts=Todos os Contratos ContractCard=Ficha Contrato ContractStatusNotRunning=Fora de Serviço @@ -37,6 +38,7 @@ ListOfRunningContractsLines=Lista de Linhas de Contratos em Serviço ListOfRunningServices=Lista de Serviços Ativos NotActivatedServices=Serviços Desativados (Com os Contratos Validados) BoardNotActivatedServices=Serviços a Ativar (Com os Contratos Validados) +LastContracts=Os %s últimos contratos LastActivatedServices=Os %s últimos Serviços Ativados LastModifiedServices=Os %s últimos Serviços Modificados EditServiceLine=Edição Linha do Serviço @@ -71,6 +73,7 @@ ListOfServicesToExpire=Lista de servicos a vencer NoteListOfYourExpiredServices=Esta lista contém apenas contratos de serviços de terceiros as quais você está ligado como representante de vendas. StandardContractsTemplate=Modelo de contratos simples ContactNameAndSignature=Para %s, nome e assinatura: +OnlyLinesWithTypeServiceAreUsed=Somente as linhas com o tipo de "serviço" será clonado. TypeContact_contrat_external_BILLING=Contato cliente de faturação do contrato TypeContact_contrat_external_CUSTOMER=Contato cliente seguimento do contrato TypeContact_contrat_external_SALESREPSIGN=Contato cliente assinante do contrato diff --git a/htdocs/langs/pt_BR/cron.lang b/htdocs/langs/pt_BR/cron.lang index 36a14dfc527..8dafd18f8ba 100644 --- a/htdocs/langs/pt_BR/cron.lang +++ b/htdocs/langs/pt_BR/cron.lang @@ -9,9 +9,10 @@ URLToLaunchCronJobs=URL para checar e iniciar os cron se necessario OrToLaunchASpecificJob=Ou checkar e iniciar um specifico trabalho KeyForCronAccess=Chave seguranca para URL que lanca tarefas cron FileToLaunchCronJobs=Linha de comando para iniciar tarefas agendadas -CronExplainHowToRunUnix=No ambiente Unix você deve usar crontab para executar linha de comando a cada minuto -CronExplainHowToRunWin=No ambiente Microsoft (tm) Windows você pode usar ferramentas tarefa agendada para executar a linha de comando cada minuto +CronExplainHowToRunUnix=No ambiente Unix você deve usar a seguinte entrada crontab para executar a linha de comando a cada 5 minutos +CronExplainHowToRunWin=Em ambiente Microsoft (tm) Windows, Você PODE USAR Ferramentas de Tarefa agendada Para executar a Linha de Comando de Cada 5 Minutos CronJobs=Trabalhos programados +CronListActive=Lista de tarefas ativas / Programadas CronListInactive=Lista de trabalhos nao ativos CronDateLastRun=Ultimo acionamento CronLastOutput=Saida do ultimo acionamento diff --git a/htdocs/langs/pt_BR/ecm.lang b/htdocs/langs/pt_BR/ecm.lang index 950e0e3cdc3..81341af1809 100644 --- a/htdocs/langs/pt_BR/ecm.lang +++ b/htdocs/langs/pt_BR/ecm.lang @@ -31,6 +31,8 @@ ECMDocsByThirdParties=Documentos associados a fornecedores ECMDocsByProposals=Documentos associados a orçamentos ECMDocsByInvoices=Documentos associados a faturas do cliente ECMDocsByProjects=Documentos associados a projetos +ECMDocsByUsers=Documentos relacionados a usuários +ECMDocsByInterventions=Documentos ligados a intervenções ShowECMSection=Exibir pasta DeleteSection=Apagar pasta ConfirmDeleteSection=Você confirmar que quer apagar a pasta %s ? diff --git a/htdocs/langs/pt_BR/errors.lang b/htdocs/langs/pt_BR/errors.lang index 6bdc570f7f9..fc051f05a77 100644 --- a/htdocs/langs/pt_BR/errors.lang +++ b/htdocs/langs/pt_BR/errors.lang @@ -18,7 +18,6 @@ ErrorFromToAccountsMustDiffers=a conta origem e destino devem ser diferentes. ErrorBadThirdPartyName=Nome de Fornecedor incorreto ErrorProdIdIsMandatory=Obrigatório ErrorBadCustomerCodeSyntax=a sintaxis do código cliente é incorreta -ErrorBadBarCodeSyntax=A sintaxe do código de barras esta incorreta ErrorBarCodeRequired=Código de barras necessário ErrorBarCodeAlreadyUsed=Código de barras já utilizado ErrorUrlNotValid=O Endereço do Site está incorreta @@ -63,9 +62,8 @@ ErrorRefAlreadyExists=a referencia utilizada para a criação já existe ErrorRecordHasChildren=não se pode eliminar o registo porque tem hijos. ErrorRecordIsUsedCantDelete=Não é possível excluir registro. Ele já é usado ou incluídos em outro objeto. ErrorModuleRequireJavascript=Javascript não deve ser desativado para ter esse recurso funcionando. Para ativar / desativar o Javascript, vá ao menu Home-> Configuração-> Display. -ErrorContactEMail=Um erro técnico ocorrido. Por favor, contate o administrador para seguinte e-mail% s en fornecer o código de erro% s em sua mensagem, ou ainda melhor, adicionando uma cópia de tela da página. +ErrorContactEMail=Ocorreu um erro técnico. Por favor, contate o administrador no seguinte e-mail %s e forneça o seguinte código de erro %s em sua mensagem. Ou, se possível, adicione uma foto da tela - print screen. ErrorWrongValueForField=Valor errado para o número do campo% s (valor '% s' não corresponde regra% s) -ErrorFieldValueNotIn=Valor errado para o número do campo% s (valor '% s' não é um valor disponível no campo% s da tabela% s) ErrorFieldRefNotIn=Valor errado para o número do campo% s (valor '% s' não é um% s ref existente) ErrorsOnXLines=Erros no registro de origem% s (s) ErrorSpecialCharNotAllowedForField=Os caracteres especiais não são permitidos para o campo "% s" @@ -75,6 +73,8 @@ ErrorQtyTooLowForThisSupplier=Quantidade insuficiente para este fornecedor ErrorModuleSetupNotComplete=Configuração do módulo parece ser incompleto. Vá em Setup - Módulos para ser concluído. ErrorBadMaskFailedToLocatePosOfSequence=Erro, máscara sem número de sequência ErrorBadMaskBadRazMonth=Erro, valor de redefinição ruim +ErrorMaxNumberReachForThisMask=Número máximo de alcance para essa máscara +ErrorCounterMustHaveMoreThan3Digits=Contador deve ter mais de 3 dígitos ErrorProductWithRefNotExist=O produto com referência não existem '% s' ErrorDeleteNotPossibleLineIsConsolidated=Não e possívelexcluir porque registro está ligada a uma transação bancária que está conciliada ErrorProdIdAlreadyExist=% S é atribuída a outro terço @@ -95,6 +95,7 @@ ErrorLoginDoesNotExists=a conta de usuário de %s não foi encontrado. ErrorLoginHasNoEmail=Este usuário não tem e-mail. impossível continuar. ErrorBadValueForCode=Valor incorreto para o código. volte a \ttentar com um Novo valor... ErrorBothFieldCantBeNegative=Campos% se% s não pode ser tanto negativo +ErrorQtyForCustomerInvoiceCantBeNegative=A quantidade nas linhas das notas de clientes não pode ser negativa ErrorWebServerUserHasNotPermission=Conta de usuário usado para executar servidor não tem permissão ErrUnzipFails=Falha ao descompactar com ZipArchive ErrNoZipEngine=Não esta instaladoo programa para descompactar o arquivo% s neste PHP @@ -116,6 +117,18 @@ ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Erro, esse membro ainda não e ErrorThereIsSomeDeliveries=Erro, há algumas entregas ligados a este envio. Supressão recusou. ErrorCantDeletePaymentReconciliated=Não posso deletar o pagamento que gerou uma transação bancaria conciliada. ErrorCantDeletePaymentSharedWithPayedInvoice=Não e possivel cancelar o pagamento condiviso para pelo menos uma fatura com estado Pago +ErrorPriceExpression1=Não é possível atribuir a constante %s' +ErrorPriceExpression2=Não é possível redefinir a função built-in '%s' +ErrorPriceExpression4=Caracter Ilegal '%s' +ErrorPriceExpression5=Inesperado '%s' +ErrorPriceExpression6=Número errado de argumentos (%s dado, %s esperado) +ErrorPriceExpression8=Operador Inesperado '%s' +ErrorPriceExpression9=Ocorreu um erro inesperado +ErrorPriceExpression14=Divisão por zero +ErrorPriceExpression19=Expressão não encontrada +ErrorPriceExpression20=Expressão vazia +ErrorSrcAndTargetWarehouseMustDiffers=Origem e de destino de armazéns devem ser diferentes +ErrorTryToMakeMoveOnProductRequiringBatchData=Erro, tentando fazer um movimento de estoque, sem lote / informação de série, em um produto que requer lote / informação de série. WarningMandatorySetupNotComplete=Parâmetros de configuração obrigatórios ainda não estão definidos WarningSafeModeOnCheckExecDir=Atenção, a opção PHP safe_mode está em modo de comando devem ser armazenados dentro de um diretório declarado pelo php parâmetro safe_mode_exec_dir. WarningAllowUrlFopenMustBeOn=o parâmetro allow_url_fopen deve ser especificado a on ao Arquivo php.ini para discolocar deste módulo completamente ativo. deve modificar este Arquivo manualmente diff --git a/htdocs/langs/pt_BR/exports.lang b/htdocs/langs/pt_BR/exports.lang index d680c4d1145..5b70e3733cb 100644 --- a/htdocs/langs/pt_BR/exports.lang +++ b/htdocs/langs/pt_BR/exports.lang @@ -85,7 +85,7 @@ Enclosure=Recinto SuppliersProducts=Fornecedores Produtos SpecialCode=Código especial ExportStringFilter=Permite substituir um ou mais caracteres no texto -ExportDateFilter='AAAA' YYYYMM 'AAAAMMDD': filtros em um ano / mês / dia
'AAAA + AAAA' YYYYMM + YYYYMM 'AAAAMMDD + AAAAMMDD': filtros mais uma série de anos / meses / dias
> AAAA ''> YYYYMM ''> AAAAMMDD ': filtros nos seguintes anos / meses / dias
'AAAA+AAAA, AAAAMM+AAAAMM, AAAAMMDD+AAAAMMDD : filtros mais de uma gama de ano / mês / dia inicial
> AAAA, > AAAAMM, > AAAAMMDD : filtros em todos seguindo anos / meses / dias
< AAAA, < AAAAMM, < AAAAMMDD : filtros em todos os anos / meses / dias anteriores ExportNumericFilter=filtros "NNNNN" por um valor
filtros "NNNNN + NNNNN 'mais de uma faixa de valores
'> NNNNN' filtros por valores mais baixos
'> NNNNN' filtros por valores mais elevados SelectFilterFields=Se você deseja filtrar alguns valores, apenas os valores de entrada aqui. FilteredFields=Campos filtrados diff --git a/htdocs/langs/pt_BR/externalsite.lang b/htdocs/langs/pt_BR/externalsite.lang index f0669dcd138..f762322072c 100644 --- a/htdocs/langs/pt_BR/externalsite.lang +++ b/htdocs/langs/pt_BR/externalsite.lang @@ -2,3 +2,4 @@ ExternalSiteSetup=Link configuraçao ao site externo ExternalSiteURL=URL site externo ExternalSiteModuleNotComplete=Modulo SiteExterno nao foi configurado corretamente. +ExampleMyMenuEntry=Minha entrada do menu diff --git a/htdocs/langs/pt_BR/interventions.lang b/htdocs/langs/pt_BR/interventions.lang index bfd7757fb23..33d186a1c04 100644 --- a/htdocs/langs/pt_BR/interventions.lang +++ b/htdocs/langs/pt_BR/interventions.lang @@ -1,4 +1,5 @@ # Dolibarr language file - Source file is en_US - interventions +AddIntervention=Criar Intervenção ActionsOnFicheInter=Açoes na intervençao CustomerDoesNotHavePrefix=O cliente não tem prefixoo de definido InterventionContact=Contato Intervenção @@ -7,9 +8,19 @@ ConfirmDeleteIntervention=Tem certeza que quer eliminar esta intervenção? ConfirmValidateIntervention=Tem certeza que quer Confirmar esta intervenção? ConfirmModifyIntervention=Tem certeza que quer modificar esta intervenção? ConfirmDeleteInterventionLine=Tem certeza que quer eliminar esta linha? +InterventionClassifyBilled=Classificar "Faturado" +InterventionClassifyUnBilled=Classificar "à faturar" StatusInterInvoiced=Faturado RelatedInterventions=Intervençoes relativas ShowIntervention=Mostrar intervençao +SendInterventionByMail=Enviar por E-mail intervenção +InterventionCreatedInDolibarr=Intervenção %s criada +InterventionValidatedInDolibarr=Intervenção %s validada +InterventionModifiedInDolibarr=Intervenção %s alterada +InterventionClassifiedBilledInDolibarr=Intervenção %s classificada como Faturada +InterventionClassifiedUnbilledInDolibarr=Intervenção %s definida como à faturar +InterventionDeletedInDolibarr=Intervenção %s excluída +SearchAnIntervention=Pesquisar uma intervenção TypeContact_fichinter_internal_INTERREPFOLL=Responsável do Seguimento da Intervenção TypeContact_fichinter_external_BILLING=Contato do cliente da faturação da intervenção TypeContact_fichinter_external_CUSTOMER=Contato do cliente do seguimento da intervenção diff --git a/htdocs/langs/pt_BR/link.lang b/htdocs/langs/pt_BR/link.lang new file mode 100644 index 00000000000..fc6685ef08d --- /dev/null +++ b/htdocs/langs/pt_BR/link.lang @@ -0,0 +1,8 @@ +# Dolibarr language file - Source file is en_US - link +LinkANewFile=Vincular um novo arquivo/documento +LinkedFiles=Arquivos vinculados e documentos +NoLinkFound=Não há links registrados +LinkComplete=O arquivo foi associada com sucesso +ErrorFileNotLinked=O arquivo não pôde ser vinculado +ErrorFailedToDeleteLink=Falha ao remover link '%s' +ErrorFailedToUpdateLink=Falha ao atualizar link '%s' diff --git a/htdocs/langs/pt_BR/margins.lang b/htdocs/langs/pt_BR/margins.lang index aad28107830..32dee0c3306 100644 --- a/htdocs/langs/pt_BR/margins.lang +++ b/htdocs/langs/pt_BR/margins.lang @@ -11,6 +11,7 @@ MarginDetails=Detalhes de margem ProductMargins=Margem de produtos CustomerMargins=Margems de clientes SalesRepresentativeMargins=Tolerância aos representante de vendas +UserMargins=Margens do Usuário ProductService=Produto ou serviço StartDate=Data inicio EndDate=Data fim diff --git a/htdocs/langs/pt_BR/printing.lang b/htdocs/langs/pt_BR/printing.lang new file mode 100644 index 00000000000..7df33364e64 --- /dev/null +++ b/htdocs/langs/pt_BR/printing.lang @@ -0,0 +1,59 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Impressão Direta +Module112000Desc=Habilitar Sistema de Impressão Direta +PrintingSetup=Configuração do Sistema de Impressão Direta +PrintingDesc=Este módulo adiciona um botão Imprimir para enviar documentos diretamente para uma impressora (sem abrir documento em um aplicativo) com vários módulos. +ModuleDriverSetup=Configuração do modulo driver +PrintingDriverDesc=Configuração de variáveis para o driver de impressão. +ListDrivers=Lista de drivers +PrintTestDesc=Lista de Impressoras. +FileWasSentToPrinter=Arquivo %s enviado para impressora +NoActivePrintingModuleFound=Sem módulo ativo para impressão de documentos +PleaseSelectaDriverfromList=Por favor, selecione um driver da lista. +SetupDriver=Configuração de Driver +TestDriver=Teste +TargetedPrinter=Impressora em questão +UserConf=Configuração por usuário +PrintGCPDesc=Este driver permite enviar documentos diretamente para uma impressora com o Google Cloud Print. +PrintingDriverDescprintgcp=Configuração das variáveis para o driver de impressão do Google Cloud Print. +PrintTestDescprintgcp=Lista de Impressoras para Google Cloud Print. +PRINTGCP_LOGIN=Login de conta GOOGLE +PRINTGCP_PASSWORD=Senha de conta GOOGLE +STATE_UNKNOWN=Desconhecido +STATE_DORMANT=Off-line por um bom tempo +TYPE_HP=HP Impressora +GCP_Name=Nome +GCP_displayName=Nome De Exibição +GCP_Id=ID da impressora +GCP_OwnerName=Nome do proprietário +GCP_State=Estado da impressora +GCP_connectionStatus=Estado online +GCP_Type=Tipo de impressora +PrintIPPSetup=Configuração do módulo de Impressão Direta +PrintIPPDesc=Este driver permite enviar documentos diretamente para uma impressora. Ele requer um sistema Linux com CUPS instalados. +PrintingDriverDescprintipp=Configuração das variáveis para o driver de impressão PrintIPP. +PrintTestDescprintipp=Lista de Impressoras para driver PrintIPP. +PRINTIPP_ENABLED=Mostrar ícone "Impressão direta" em listas de documentos +PRINTIPP_HOST=Servidor de impressão +PRINTIPP_PORT=Porta +PRINTIPP_PASSWORD=Senha +NoPrinterFound=Nenhuma impressora encontrada (verifique a configuração do CUPS) +NoDefaultPrinterDefined=Nenhuma impressora padrão definida +DefaultPrinter=Impressora padrão +Printer=Impressora +CupsServer=Servidor CUPS +IPP_Name=\nNome da impressora +IPP_State=Estado da impressora +IPP_State_reason=Estado razão +IPP_State_reason1=Estado razão1 +IPP_Color=Cor +IPP_Device=Dispositivo +IPP_Media=Mídia da impressora +IPP_Supported=Tipo de mídia +STATE_IPP_stopped=Parou +STATE_IPP_paused=Pausada +STATE_IPP_toner-low-report=Toner Baixo +STATE_IPP_none=Nenhum +MEDIA_IPP_stationery=artigos de papelaria +MEDIA_IPP_thermal=Térmico +IPP_COLOR_print-black=Impressora BW diff --git a/htdocs/langs/pt_BR/products.lang b/htdocs/langs/pt_BR/products.lang index d30c9cbbf8b..2fa64f205ad 100644 --- a/htdocs/langs/pt_BR/products.lang +++ b/htdocs/langs/pt_BR/products.lang @@ -7,8 +7,12 @@ MassBarcodeInit=Inicialização de código de barras. MassBarcodeInitDesc=Esta página pode ser usado para inicializar um código de barras em objetos que não têm código de barras definidas. Verifique antes que a instalação do módulo de código de barras é completa. ProductAccountancyBuyCode=Codigo contabilidade (compras) ProductAccountancySellCode=Codigo contabilidade (vendas) -ProductsOnSellAndOnBuy=Produtos não para venda ou compra -ServicesOnSellAndOnBuy=Serviços não para venda ou compra +ProductsAndServicesOnSell=Produtos e Serviços para venda ou para compra +ProductsOnSell=Produto para venda ou para compra +ProductsNotOnSell=Produto fora de venda e de compra +ProductsOnSellAndOnBuy=Produtos para venda e compra +ServicesOnSell=Serviços para venda ou para compra +ServicesOnSellAndOnBuy=Serviços para venda e compra LastRecorded=últimos Produtos/Serviços em Venda Registados LastRecordedProductsAndServices=Os %s últimos Produtos/Perviços Registados LastModifiedProductsAndServices=Os %s últimos Produtos/Serviços Registados @@ -32,6 +36,7 @@ MinPrice=Preço mínimo de venda MinPriceHT=Minimo preço de venda (líquido de imposto) MinPriceTTC=Minimo preço de venda (inc. taxa) CantBeLessThanMinPrice=O preço de venda não deve ser inferior ao mínimo para este produto (%s ICMS) +ContractStatusClosed=Encerrado ContractStatusToRun=Para començar ErrorProductBadRefOrLabel=O valor da referencia ou etiqueta é incorreto ErrorProductClone=Aconteceu um problema durante a clonação do produto ou serviço. @@ -55,6 +60,7 @@ ProductAssociationList=Lista de produtos/serviços associados : Nome do produto/ ProductParentList=Lista de pacote produtos/serviços com este produto como componente ErrorAssociationIsFatherOfThis=Um dos produtos selecionados é pai do produto em curso ConfirmDeleteProduct=? Tem certeza que quer eliminar este produto/serviço? +ConfirmDeletePicture=? Tem certeza que quer eliminar esta foto? ConfirmDeleteProductLine=Tem certeza que quer eliminar esta linha de produto? NoStockForThisProduct=Não existe estoque deste produto NoStock=Sem estoque @@ -96,6 +102,7 @@ AddThisServiceCard=Criar ficha serviço HelpAddThisServiceCard=Esta opção permite de criar ou clonar um serviço caso o mesmo não existe. AlwaysUseNewPrice=Usar sempre preço atual do produto/serviço AlwaysUseFixedPrice=Usar preço fixo +PriceByQuantity=Diferentes preços por quantidade PriceByQuantityRange=Intervalo de quantidade ProductsDashboard=Resumo de produtos/serviços HelpUpdateOriginalProductLabel=Permite editar o nome do produto @@ -128,10 +135,17 @@ DefinitionOfBarCodeForThirdpartyNotComplete=Definição do código ou valor do c BarCodeDataForProduct=Informações de código de barras do produto% s: BarCodeDataForThirdparty=Informações de código de barras do fornecedor: ResetBarcodeForAllRecords=Definir o valor de código de barras para todos os registros (isto também irá repor valor de código de barras já definido com novos valores) +PriceByCustomer=Preço diferente para cada cliente PriceCatalogue=Preço único por produto / serviço -PricingRule=As regras de tarifação +PricingRule=Regras para os preços dos clientes AddCustomerPrice=Adicione preço por parte dos clientes ForceUpdateChildPriceSoc=Situado mesmo preço em outros pedidos dos clientes PriceByCustomerLog=Preço por cliente MinimumPriceLimit=Preço minimo nao pode ser inferior a %s MinimumRecommendedPrice=Preço minimo recomendado e: %s +PriceExpressionEditor=Editor de expressão Preço +PriceExpressionSelected=Expressão de preço Selecionado +PriceExpressionEditorHelp1="Preço = 2 + 2" ou "2 + 2" para fixação do preço. use; para separar expressões +PriceExpressionEditorHelp2=Você pode acessar ExtraFields com variáveis como\n#options_myextrafieldkey# +PriceMode=Modo de Preço +PriceNumeric=Número diff --git a/htdocs/langs/pt_BR/projects.lang b/htdocs/langs/pt_BR/projects.lang index 1b32494e7c8..e16645e7107 100644 --- a/htdocs/langs/pt_BR/projects.lang +++ b/htdocs/langs/pt_BR/projects.lang @@ -9,11 +9,14 @@ MyTasksDesc=Esta exibição é limitado a projetos ou tarefas que você é um co TasksPublicDesc=Essa exibição apresenta todos os projetos e tarefas que você tem permissão para ler. TasksDesc=Essa exibição apresenta todos os projetos e tarefas (suas permissões de usuário concede-lhe ver tudo). AddProject=Criar projeto +DeleteAProject=Eliminar um Projeto +DeleteATask=Eliminar uma Tarefa ConfirmDeleteAProject=Tem certeza que quer eliminar este projeto? ConfirmDeleteATask=Tem certeza que quer eliminar esta tarefa? OfficerProject=Responsável do Projeto LastProjects=Os %s últimos Projetos ShowProject=Adicionar Projeto +NoProject=Nenhum Projeto Definido NbOpenTasks=No Tarefas Abertas NbOfProjects=No de Projetos TimeSpent=Tempo Dedicado @@ -74,8 +77,7 @@ SelectElement=Selecionar componente AddElement=Link para componente UnlinkElement=Desligar elemento DocumentModelBaleine=Modelo de relatório de um projeto completo (logo. ..) -PlannedWorkload =carga horária planejada -WorkloadOccupation=Carga horária empregada +PlannedWorkload=carga horária planejada ProjectReferers=Fazendo referência a objetos SearchAProject=Buscar um projeto ProjectMustBeValidatedFirst=O projeto tem que primeiramente ser validado diff --git a/htdocs/langs/pt_BR/salaries.lang b/htdocs/langs/pt_BR/salaries.lang index ae54678cc61..04f737983b5 100644 --- a/htdocs/langs/pt_BR/salaries.lang +++ b/htdocs/langs/pt_BR/salaries.lang @@ -1,4 +1,8 @@ # Dolibarr language file - Source file is en_US - salaries +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Codigo contabilidade para pagamentos de salarios +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Codigo contabilidade para despesas financeiras NewSalaryPayment=Novo pagamento de salário SalaryPayment=Pagamento de salário SalariesPayments=Pagamentos de salários +THM=Preço medio por hora +TJM=Preço medio por diaria diff --git a/htdocs/langs/pt_BR/sendings.lang b/htdocs/langs/pt_BR/sendings.lang index a17cd46bf39..a1e3c7bb152 100644 --- a/htdocs/langs/pt_BR/sendings.lang +++ b/htdocs/langs/pt_BR/sendings.lang @@ -3,7 +3,6 @@ RefSending=Ref. Envio SendingsArea=Área Envios LastSendings=Os %s últimos Envios QtyReceived=Quant. Recibida -KeepToShip=Fica por Enviar StatusSendingValidated=Validado (produtos a enviar o enviados) Carriers=Transportadoras Carrier=Transportadora @@ -22,11 +21,8 @@ SendShippingRef=Submeter para envio %s ActionsOnShipping=Eventos no envio LinkToTrackYourPackage=Atalho para rastreamento do pacote ShipmentCreationIsDoneFromOrder=No momento a criaçao de um novo envio e feito da ficha de pedido. -RelatedShippings=Envios relativos ShipmentLine=Linha de envio CarrierList=Lista de transportadoras -SendingRunning=Produto da ordem do cliente ja enviado -SuppliersReceiptRunning=Produto do pedido do fornecedor ja recebido SendingMethodCATCH=Remoção pelo cliente SendingMethodTRANS=Transportadora SendingMethodCOLSUI=Acompanhamento diff --git a/htdocs/langs/pt_BR/stocks.lang b/htdocs/langs/pt_BR/stocks.lang index 62b718a2a79..b75f00caf22 100644 --- a/htdocs/langs/pt_BR/stocks.lang +++ b/htdocs/langs/pt_BR/stocks.lang @@ -42,6 +42,7 @@ ReStockOnValidateOrder=Incrementar os estoques físicos sobre os pedidos ReStockOnDispatchOrder=Aumentar os estoques reais no envio manual para armazenamento, depois de receber ordem fornecedor ReStockOnDeleteInvoice=Aumentar os estoques reais sobre exclusão fatura OrderStatusNotReadyToDispatch=Não tem ordem ainda não ou nato tem um status que permite envio de produtos em para armazenamento. +StockDiffPhysicTeoric=Explicação para a diferença entre o estoque físico e teórico NoPredefinedProductToDispatch=Não há produtos pré-definidos para este objeto. Portanto, não envio em estoque é necessária. StockLimitShort=Limite para alerta StockLimit=Limite de estoque para alerta @@ -86,7 +87,6 @@ WarehouseForStockDecrease=Os arquivos serão utilizados para redução estoque WarehouseForStockIncrease=O arquivos serão utilizados para aumento de ForThisWarehouse=Para este armazenamento ReplenishmentStatusDesc=Esta lista de todos os produtos com um estoque menor do que o estoque desejado (ou inferior ao valor de alerta se checkbox "alerta só" está marcada), e sugerir-lhe para criar ordens de fornecedor para preencher a diferença. -ReplenishmentOrdersDesc=Esta lista de todos os pedidos de fornecedores esta aberto Replenishments=Reconstituições NbOfProductBeforePeriod=Quantidade de produtos em estoque antes do período selecionado NbOfProductAfterPeriod=Quantidade de produtos em estoque período selecionado depois @@ -94,9 +94,11 @@ MassMovement=Movimento de massas MassStockMovement=Movimento de estoque em massa SelectProductInAndOutWareHouse=Selecione um produto, uma quantidade, um armazém de origem e um armazém de destino e clique em "% s". Uma vez feito isso para todos os movimentos necessários, clique em "% s". RecordMovement=Gravar a transferência -ReceivingForSameOrder=Recebimentos para este fim StockMovementRecorded=Movimentos de estoque gravados RuleForStockAvailability=Regras sobre os requisitos de ações StockMustBeEnoughForInvoice=Banco de nível deve ser o suficiente para adicionar o produto / serviço em fatura StockMustBeEnoughForOrder=Banco de nível deve ser o suficiente para adicionar o produto / serviço em ordem StockMustBeEnoughForShipment=Banco de nível deve ser o suficiente para adicionar o produto / serviço no transporte +MovementLabel=Rótulo de Movimento +ShowWarehouse=Mostrar armazém +MovementCorrectStock=Correção da conteúdo para o produto %s diff --git a/htdocs/langs/pt_BR/trips.lang b/htdocs/langs/pt_BR/trips.lang index 8af39e7001d..2ad8b512535 100644 --- a/htdocs/langs/pt_BR/trips.lang +++ b/htdocs/langs/pt_BR/trips.lang @@ -1,16 +1,4 @@ # Dolibarr language file - Source file is en_US - trips -Trip=Deslocamento -Trips=Deslocamentos -TripsAndExpenses=Deslocamentos e Despesas -TripsAndExpensesStatistics=Estatisticas de viagems e despesas -TripCard=Ficha de Deslocamento -AddTrip=Criar viagem -ListOfTrips=Lista de Deslocamentos -NewTrip=Nova Deslocamento Kilometers=Kilometros FeesKilometersOrAmout=Quantidade de Kilometros -DeleteTrip=Eliminar Deslocamento -ConfirmDeleteTrip=Tem certeza que quer eliminar esta deslocamento? -ExpensesArea=Area de viagems e despesas -SearchATripAndExpense=Buscar para uma viagem ou despesa ClassifyRefunded=Classificar 'Rembolsado' diff --git a/htdocs/langs/pt_BR/withdrawals.lang b/htdocs/langs/pt_BR/withdrawals.lang index 08653c368d4..ef40826cfdf 100644 --- a/htdocs/langs/pt_BR/withdrawals.lang +++ b/htdocs/langs/pt_BR/withdrawals.lang @@ -30,6 +30,7 @@ WithdrawalRefused=Retirada recusada WithdrawalRefusedConfirm=Você tem certeza que quer entrar com uma rejeição de retirada para a sociedade RefusedInvoicing=Cobrança da rejeição NoInvoiceRefused=Não carregue a rejeição +InvoiceRefused=Fatura recusada (Verificar a rejeição junto ao cliente) StatusWaiting=Aguardando StatusTrans=Enviado StatusRefused=Negado @@ -51,10 +52,10 @@ BankToReceiveWithdraw=Conta bancária para receber saques CreditDate=A crédito ShowWithdraw=Mostrar Retire IfInvoiceNeedOnWithdrawPaymentWontBeClosed=No entanto, se fatura não tem pelo menos um pagamento retirada ainda processado, não vai ser definido como pago para permitir a gestão de remoção prévia. -DoStandingOrdersBeforePayments=Essa guia permite que você solicite uma ordem permanente. Depois de concluído, você pode digitar o pagamento para fechar a fatura. WithdrawalFile=Arquivo Retirada SetToStatusSent=Defina o status "arquivo enviado" ThisWillAlsoAddPaymentOnInvoice=Isto também se aplica aos pagamentos de faturas e classificá-los como "Paid" +StatisticsByLineStatus=Estatísticas por situação de linhas InfoCreditSubject=Pagamento pendente pelo banco InfoCreditMessage=O pedido pendente foi pago pelo banco
Dados de pagamento:% s InfoTransSubject=Transmissão de pedido pendente para o banco diff --git a/htdocs/langs/pt_BR/workflow.lang b/htdocs/langs/pt_BR/workflow.lang index 1f532022dee..a815cc3188a 100644 --- a/htdocs/langs/pt_BR/workflow.lang +++ b/htdocs/langs/pt_BR/workflow.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - workflow WorkflowSetup=Configuração do módulo de Fluxo de Trabalho -WorkflowDesc=Este módulo foi projetado para modificar o comportamento de ações automáticas dentro a aplicação. Por padrão, o fluxo de trabalho e abilitado (você faz as coisas em ordem que você quiser). Você pode habilitar ações automáticas que são de seu interesse. +WorkflowDesc=Este módulo é concebido para modificar o comportamento de ações automáticas para aplicação. Por padrão, o fluxo de trabalho é aberto (você faz as coisas na ordem que você quiser). Você pode ativar as ações automáticas que você tem interesse. ThereIsNoWorkflowToModify=Não há fluxo de trabalho que você pode modificar para o módulo que você ativou. descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Criar uma ordem do cliente automaticamente, após uma proposta comercial é assinada descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Criar uma factura de cliente automaticamente após um proposta comercial é assinado diff --git a/htdocs/langs/pt_PT/bills.lang b/htdocs/langs/pt_PT/bills.lang index 8a28a423f86..4c18ada3752 100644 --- a/htdocs/langs/pt_PT/bills.lang +++ b/htdocs/langs/pt_PT/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Pagamentos efectuados PaymentsBackAlreadyDone=Devolução de pagamentos efetuados PaymentRule=Estado do Pagamento PaymentMode=Forma de Pagamento -PaymentConditions=Tipo de Pagamento -PaymentConditionsShort=Tipo de Pagamento +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Montante a Pagar ValidatePayment=Validar pagamento PaymentHigherThanReminderToPay=Pagamento superior ao resto a pagar diff --git a/htdocs/langs/pt_PT/incoterm.lang b/htdocs/langs/pt_PT/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/pt_PT/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/pt_PT/printing.lang b/htdocs/langs/pt_PT/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/pt_PT/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/pt_PT/projects.lang b/htdocs/langs/pt_PT/projects.lang index 31d5119f907..aa68d1907b8 100644 --- a/htdocs/langs/pt_PT/projects.lang +++ b/htdocs/langs/pt_PT/projects.lang @@ -130,13 +130,15 @@ AddElement=Ligar ao elemento UnlinkElement=Desligar o elemento # Documents models DocumentModelBaleine=modelo de um projeto completo do relatório (logo. ..) -PlannedWorkload = Carga de trabalho planeada -WorkloadOccupation= Afectação da carga de trabalho +PlannedWorkload=Carga de trabalho planeada +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Procurar um projeto ProjectMustBeValidatedFirst=Primeiro deve validar o projeto ProjectDraft=Esboço de projetos FirstAddRessourceToAllocateTime=Associar um recuirso para alocar a hora -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/ro_RO/bills.lang b/htdocs/langs/ro_RO/bills.lang index 2365a67dac4..92e62558764 100644 --- a/htdocs/langs/ro_RO/bills.lang +++ b/htdocs/langs/ro_RO/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Plăţi deja efectuate PaymentsBackAlreadyDone=Plaţi Return deja efectuate PaymentRule=Mod de Plată PaymentMode=Tip de plată -PaymentConditions=Termen de plată -PaymentConditionsShort=Termen de plată +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Sumă de plată ValidatePayment=Validează plata PaymentHigherThanReminderToPay=Plată mai mare decât restul de plată diff --git a/htdocs/langs/ro_RO/incoterm.lang b/htdocs/langs/ro_RO/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/ro_RO/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/ro_RO/printing.lang b/htdocs/langs/ro_RO/printing.lang new file mode 100644 index 00000000000..92a4f5353fd --- /dev/null +++ b/htdocs/langs/ro_RO/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Imprimare directa +Module112000Desc=Activeaza Sistemul Imprimare directa\n\n +PrintingSetup=Configurarea Sistemuluii Imprimare directă +PrintingDesc=Acest modul adauga un buton de imprimare pentru a trimite documentele direct la o imprimantă ( fara deschiderea documentului in aplicatie) cu diferite module. +ModuleDriverSetup=Configurare Modul Driver +PrintingDriverDesc=Configurare variabile pentru driverul de imprimanta +ListDrivers=Lista driverelor +PrintTestDesc=Lista imprimantelor +FileWasSentToPrinter=Fișierul %s a fost trimis la imprimantă +NoActivePrintingModuleFound=Niciun modul activ de printare documente +PleaseSelectaDriverfromList=Selectati un driver din lista. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Imprimantă implicită +UserConf=Configurare pe utilizator +PRINTGCP=Google Cloud Print +PrintGCPDesc=Acest driver permite trimiterea documentelor direct la imprimanta cu Google Cloud Print. +PrintingDriverDescprintgcp=Configurare variabile pentru driverul imprimanta Google Cloud Print. +PrintTestDescprintgcp=Lista imprimantelor pentru Google Cloud Print +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Necunoscut +STATE_OFFLINE=Offline +STATE_DORMANT=Offline pentru o vreme +TYPE_GOOGLE=Google +TYPE_HP=Imprimanta HP +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Nume +GCP_displayName=Nume afişat +GCP_Id=Id Imprimanta +GCP_OwnerName=Nume Proprietar +GCP_State=Stare Imprimanta +GCP_connectionStatus=Stare Online +GCP_Type=Tip Imprimanta +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Configurarea modulului Imprimare directă +PrintIPPDesc=Acest driver permite trimiterea documentelor direct la o imprimanta. Este nevoie de un sistem Linux cu CUPS instalat. +PrintingDriverDescprintipp=Configurare variabile pentru driverul de imprimanta PrintPP. +PrintTestDescprintipp=Lista imprimantelor pentru driverele PrintPP +PRINTIPP_ENABLED=Afișare pictogramă "Print Direct" în listele de documente +PRINTIPP_HOST=Server print +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Parolă +NoPrinterFound=Nu există imprimante (verificați setarea CUPS) +FileWasSentToPrinter=Fișierul %s a fost trimis la imprimantă +NoDefaultPrinterDefined=Nicio imprimantă implicită definită +DefaultPrinter=Imprimantă implicită +Printer=Imprimanta +CupsServer=Server CUPS +IPP_Uri=Uri Imprimanta +IPP_Name=Nume Imprimanta +IPP_State=Stare Imprimanta +IPP_State_reason=Motiv Stare +IPP_State_reason1=Motiv 1 Stare +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Imprimanta Media +IPP_Supported=Tip Media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Oprita +STATE_IPP_paused=Pauza +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=Niciunul +MEDIA_IPP_stationery=Stationar +MEDIA_IPP_thermal=Termala +IPP_COLOR_print-black=Imprimanta BW diff --git a/htdocs/langs/ro_RO/productbatch.lang b/htdocs/langs/ro_RO/productbatch.lang index 0be80ae35d4..0337f1f875e 100644 --- a/htdocs/langs/ro_RO/productbatch.lang +++ b/htdocs/langs/ro_RO/productbatch.lang @@ -10,7 +10,7 @@ batch_number=Lot / Număr de serie l_eatby=Data expirare l_sellby=Data vânzare DetailBatchNumber=Detalii Lot / Serie -DetailBatchFormat=Batch/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d) +DetailBatchFormat=Lot/Serie: %s - Mananca de: %s - Vindem de: %s (Cant : %d) printBatch=Lot: %s printEatby=Expiră : %s printSellby=Vanzare: %s diff --git a/htdocs/langs/ro_RO/products.lang b/htdocs/langs/ro_RO/products.lang index 35cd6613d46..0a803535194 100644 --- a/htdocs/langs/ro_RO/products.lang +++ b/htdocs/langs/ro_RO/products.lang @@ -250,7 +250,7 @@ PriceExpressionEditorHelp3=In ambele preturi produs/serviciu si furnizori sunt d PriceExpressionEditorHelp4=In pret produs/serviciu numai: #supplier_min_price#
In pret furnizor numai: #supplier_quantity# and #supplier_tva_tx# PriceMode=Mod preț PriceNumeric=Număr -DefaultPrice=Default price -ComposedProductIncDecStock=Increase/Decrease stock on parent change -ComposedProduct=Sub-product -MinSupplierPrice=Minimun supplier price +DefaultPrice=Preț Implicit +ComposedProductIncDecStock=Mărește/micșorează stoc pe schimbări sintetice +ComposedProduct=Sub-produs +MinSupplierPrice=Preț Minim furnizor diff --git a/htdocs/langs/ro_RO/projects.lang b/htdocs/langs/ro_RO/projects.lang index 143ed2e0a43..5138b13125f 100644 --- a/htdocs/langs/ro_RO/projects.lang +++ b/htdocs/langs/ro_RO/projects.lang @@ -8,10 +8,10 @@ SharedProject=Toată lumea PrivateProject=Contacte proiect MyProjectsDesc=Această vedere este limitată la proiecte sau sarcini pentru care sunteţi contact(indiferent de tip). ProjectsPublicDesc=Această vedere prezintă toate proiectele la care aveţi permisiunea să le citiţi. -ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. +ProjectsPublicTaskDesc=Această vedere prezintă toate proiectele şi activităţile care sunt permise să le citiţi. ProjectsDesc=Această vedere prezintă toate proiectele (permisiuni de utilizator va acorda permisiunea de a vizualiza totul). MyTasksDesc=Această vedere este limitată la proiecte sau sarcini pentru care sunteţi contact(indiferent de tip). -OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). +OnlyOpenedProject=Numai proiectele deschise sunt vizibile (proiecte cu statutul draft sau închise nu sunt vizibile). TasksPublicDesc=Această vedere prezintă toate proiectele şi activităţile care sunt permise să le citiţi. TasksDesc=Această vedere prezintă toate proiectele şi sarcinile (permisiuni de utilizator va acorda permisiunea de a vizualiza totul). ProjectsArea=Proiecte @@ -31,8 +31,8 @@ NoProject=Niciun proiect definit sau responsabil NbOpenTasks=Nr taskuri deschise NbOfProjects=Nr proiecte TimeSpent=Timp comsumat -TimeSpentByYou=Time spent by you -TimeSpentByUser=Time spent by user +TimeSpentByYou=Timpul consumat da tine +TimeSpentByUser=Timp consumat pe utilizator TimesSpent=Timpi consumaţi RefTask=Ref. Task LabelTask=Eticheta Task @@ -71,7 +71,7 @@ ListSupplierOrdersAssociatedProject=Lista comenzi furnizori asociate la proie ListSupplierInvoicesAssociatedProject=Lista facturi furnizori asociate la proiect ListContractAssociatedProject=Lista contracte asociate la proiect ListFichinterAssociatedProject=Lista intervenţii asociate la proiectului -ListExpenseReportsAssociatedProject=List of expense reports associated with the project +ListExpenseReportsAssociatedProject=Lista rapoartelor cheltuieli asociate proiectului ListActionsAssociatedProject=Lista evenimentelor asociate la proiectului ActivityOnProjectThisWeek=Activitatea de pe proiect în această săptămână ActivityOnProjectThisMonth=Activitatea de pe proiect în această lună @@ -130,13 +130,15 @@ AddElement=Link către element UnlinkElement=Element nelegat # Documents models DocumentModelBaleine=Modelul de rapor al unui proiect complet t (logo. ..) -PlannedWorkload = Volum de lucru Planificat -WorkloadOccupation= Volum de lucru Procent +PlannedWorkload=Volum de lucru Planificat +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Obiecte asociate SearchAProject=Cauta proiect ProjectMustBeValidatedFirst=Proiectul trebuie validat mai întâi ProjectDraft=Proiecte schiţă FirstAddRessourceToAllocateTime=Asociază o resursă la timpul alocat -InputPerTime=Input per time -InputPerDay=Input per day -TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s +InputPerDay=Intrare pe zi +InputPerWeek=Input per week +InputPerAction=Input per action +TimeAlreadyRecorded=Timpul consumat deja înregistrat pentru această sarcină / zi și utilizator %s diff --git a/htdocs/langs/ro_RO/salaries.lang b/htdocs/langs/ro_RO/salaries.lang index 75c0b1969d3..232688c5b4d 100644 --- a/htdocs/langs/ro_RO/salaries.lang +++ b/htdocs/langs/ro_RO/salaries.lang @@ -10,4 +10,4 @@ SalariesPayments=Plati salarii ShowSalaryPayment=Arata plata salariu THM=Pret mediu pe ora TJM=Pret mediu zilnic -CurrentSalary=Current salary +CurrentSalary=Salariu curent diff --git a/htdocs/langs/ro_RO/stocks.lang b/htdocs/langs/ro_RO/stocks.lang index 394853cb355..8e22013d8e4 100644 --- a/htdocs/langs/ro_RO/stocks.lang +++ b/htdocs/langs/ro_RO/stocks.lang @@ -47,7 +47,7 @@ PMPValue=Valoric PMP PMPValueShort=WAP EnhancedValueOfWarehouses=Stoc valoric UserWarehouseAutoCreate=Creaţi un stoc în mod automat atunci când se creează un utilizator -IndependantSubProductStock=Product stock and subproduct stock are independant +IndependantSubProductStock=Stocul de produse și stocul de subproduse sunt independente QtyDispatched=Cantitate dipecerizată QtyDispatchedShort=Cant Expediate QtyToDispatchShort=Cant de expediat @@ -111,7 +111,7 @@ WarehouseForStockDecrease=Depozitul %s va fi utilizat pentru scăderea st WarehouseForStockIncrease=Depozitul %s va fi utilizat pentru creşterea stocului ForThisWarehouse=Pentru acest depozit ReplenishmentStatusDesc=Aceasta este lista cu toate produsele având stocul mai mic decât stocul dorit (sau valoarea de alertă dacă casuţa "doar alertă " este bifată) și sugerăm să vă creaţi comenzi furnizor pentru a completa diferența. -ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. +ReplenishmentOrdersDesc=Aceasta este lista tuturor comenzilor furnizori deschise, inclusiv produse predefinite. Doar comenzile deschise cu produse predefinite, astfel încât pot afecta stocurile, sunt vizibile aici. Replenishments=Reaprovizionări NbOfProductBeforePeriod=Cantitatea de produs %s în stoc înainte de perioada selectată (< %s) NbOfProductAfterPeriod=Cantitatea de produs %s în stoc după perioada selectată (> %s) diff --git a/htdocs/langs/ro_RO/trips.lang b/htdocs/langs/ro_RO/trips.lang index f32deae8693..88c9d0a73a4 100644 --- a/htdocs/langs/ro_RO/trips.lang +++ b/htdocs/langs/ro_RO/trips.lang @@ -1,112 +1,112 @@ # Dolibarr language file - Source file is en_US - trips -ExpenseReport=Expense report -ExpenseReports=Expense reports -Trip=Expense report -Trips=Expense reports -TripsAndExpenses=Expenses reports -TripsAndExpensesStatistics=Expense reports statistics -TripCard=Expense report card -AddTrip=Create expense report -ListOfTrips=List of expense report +ExpenseReport=Raport Cheltuieli +ExpenseReports=Rapoarte Cheltuieli +Trip=Raport Cheltuieli +Trips=Rapoarte Cheltuieli +TripsAndExpenses=Rapoarte Cheltuieli +TripsAndExpensesStatistics=Statistici Rapoarte Cheltuieli +TripCard=Fisa Raport Cheltuieli +AddTrip=Creare Raport Cheltuieli +ListOfTrips=Listă rapoarte de cheltuieli ListOfFees=Lista note cheltuieli -NewTrip=New expense report +NewTrip= Raport de cheltuieli nou CompanyVisited=Societatea / Instituţia vizitată Kilometers=Kilometri FeesKilometersOrAmout=Valoarea sau km -DeleteTrip=Delete expense report -ConfirmDeleteTrip=Are you sure you want to delete this expense report ? -ListTripsAndExpenses=List of expense reports -ListToApprove=Waiting for approval -ExpensesArea=Expense reports area -SearchATripAndExpense=Search an expense report +DeleteTrip=Șterge raport de cheltuieli +ConfirmDeleteTrip=Sunteți sigur că doriți să ștergeți acest raport cheltuieli? +ListTripsAndExpenses=Listă rapoarte de cheltuieli +ListToApprove=În așteptare pentru aprobare +ExpensesArea=Rapoarte de cheltuieli +SearchATripAndExpense=Căutați un raport de cheltuieli ClassifyRefunded=Clasează "Rambursată" ExpenseReportWaitingForApproval=A new expense report has been submitted for approval ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s -TripId=Id expense report -AnyOtherInThisListCanValidate=Person to inform for validation. -TripSociete=Information company -TripSalarie=Informations user +TripId=ID Raport de cheltuieli +AnyOtherInThisListCanValidate=Persoana de informare pentru validare. +TripSociete=Informații companie +TripSalarie=Informații Utilizator TripNDF=Informations expense report -DeleteLine=Delete a ligne of the expense report -ConfirmDeleteLine=Are you sure you want to delete this line ? +DeleteLine=Ștergeo linie a raportului de cheltuieli +ConfirmDeleteLine=Sunteţi sigur că doriţi să ştergeţi această linie? PDFStandardExpenseReports=Standard template to generate a PDF document for expense report -ExpenseReportLine=Expense report line +ExpenseReportLine=Line raport de cheltuieli TF_OTHER=Altele -TF_TRANSPORTATION=Transportation +TF_TRANSPORTATION=Transport TF_LUNCH=Prânz -TF_METRO=Metro -TF_TRAIN=Train -TF_BUS=Bus -TF_CAR=Car -TF_PEAGE=Toll -TF_ESSENCE=Fuel +TF_METRO=Metrou +TF_TRAIN=Tren +TF_BUS=Autobuz +TF_CAR=Mașină +TF_PEAGE=Taxă +TF_ESSENCE=Combustibil TF_HOTEL=Hostel TF_TAXI=Taxi -ErrorDoubleDeclaration=You have declared another expense report into a similar date range. -ListTripsAndExpenses=List of expense reports -AucuneNDF=No expense reports found for this criteria -AucuneLigne=There is no expense report declared yet -AddLine=Add a line -AddLineMini=Add +ErrorDoubleDeclaration=Ați declarat un alt raport de cheltuieli într-un interval de timp similar. +ListTripsAndExpenses=Listă rapoarte de cheltuieli +AucuneNDF=Nu există rapoarte de cheltuieli pentru acest criteriu +AucuneLigne=Nu există încă nici un raport de cheltuieli declarate +AddLine=Adaugao linie +AddLineMini=Adaugă -Date_DEBUT=Period date start -Date_FIN=Period date end -ModePaiement=Payment mode -Note=Note -Project=Project +Date_DEBUT=Perioada Dată început +Date_FIN=Perioada Dată sfârşit +ModePaiement=Mod plata +Note=Notă +Project=Proiect -VALIDATOR=User to inform for approbation -VALIDOR=Approved by -AUTHOR=Recorded by -AUTHORPAIEMENT=Paied by -REFUSEUR=Denied by -CANCEL_USER=Canceled by +VALIDATOR=Utilizatorul de informat pentru aprobare +VALIDOR=Aprobat de +AUTHOR=Înregistrat de +AUTHORPAIEMENT=Platit de +REFUSEUR=Respins de +CANCEL_USER=Anulat de -MOTIF_REFUS=Reason -MOTIF_CANCEL=Reason +MOTIF_REFUS=Motiv +MOTIF_CANCEL=Motiv -DATE_REFUS=Deny date -DATE_SAVE=Validation date -DATE_VALIDE=Validation date -DateApprove=Approving date -DATE_CANCEL=Cancelation date -DATE_PAIEMENT=Payment date +DATE_REFUS=Dată respingere +DATE_SAVE=Dată validare +DATE_VALIDE=Dată validare +DateApprove=Data Aprobare +DATE_CANCEL=Data anulare +DATE_PAIEMENT=Data Plata -Deny=Deny -TO_PAID=Pay -BROUILLONNER=Reopen -SendToValid=Sent to approve -ModifyInfoGen=Edit -ValidateAndSubmit=Validate and submit for approval +Deny=Respinge +TO_PAID=Plăteşte +BROUILLONNER=Redeschide +SendToValid=Trimis la aprobare +ModifyInfoGen=Editare +ValidateAndSubmit=Validareaza și trimite pentru aprobare -NOT_VALIDATOR=You are not allowed to approve this expense report -NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. +NOT_VALIDATOR=Nu aveti permisiunea să aprobati acest raport de cheltuieli +NOT_AUTHOR=Tu nu esti autorul acestui raport de cheltuieli. Operatiune anulata. -RefuseTrip=Deny an expense report -ConfirmRefuseTrip=Are you sure you want to deny this expense report ? +RefuseTrip=Respinge un raport de cheltuieli +ConfirmRefuseTrip=Sunteți sigur că doriți să respingeti acest raport cheltuieli? -ValideTrip=Approve expense report -ConfirmValideTrip=Are you sure you want to approve this expense report ? +ValideTrip=Aproba raport de cheltuieli +ConfirmValideTrip=Sunteți sigur că doriți să aprobati acest raport cheltuieli? -PaidTrip=Pay an expense report -ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ? +PaidTrip=Plăste un raport de cheltuieli +ConfirmPaidTrip=Sunteţi sigur că doriţi sa clasati acest raport de cheltuieli ca "Platit" ? -CancelTrip=Cancel an expense report -ConfirmCancelTrip=Are you sure you want to cancel this expense report ? +CancelTrip=Anulează un raport de cheltuieli +ConfirmCancelTrip=Sunteți sigur că doriți să anulați acest raport cheltuieli? -BrouillonnerTrip=Move back expense report to status "Draft"n +BrouillonnerTrip=Muta Inapoi raportul de cheltuieli la statutul de "Draft" ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ? -SaveTrip=Validate expense report +SaveTrip=Valideaza raport de cheltuieli ConfirmSaveTrip=Are you sure you want to validate this expense report ? -Synchro_Compta=NDF <-> Compte +Synchro_Compta=NDF <-> Cont TripSynch=Synchronisation : Notes de frais <-> Compte courant TripToSynch=Notes de frais à intégrer dans la compta AucuneTripToSynch=Aucune note de frais n'est en statut "Payée". -ViewAccountSynch=Voir le compte +ViewAccountSynch=Vezi Contul ConfirmNdfToAccount=Êtes-vous sûr de vouloir intégrer cette note de frais dans le compte courant? ndfToAccount=Note de frais - Intégration @@ -115,12 +115,12 @@ ConfirmAccountToNdf=Êtes-vous sûr de vouloir retirer cette note de frais du co AccountToNdf=Note de frais - Retrait LINE_NOT_ADDED=Ligne non ajoutée : -NO_PROJECT=Aucun projet sélectionné. -NO_DATE=Aucune date sélectionnée. -NO_PRICE=Aucun prix indiqué. +NO_PROJECT=Niciun proiect selectat +NO_DATE=Nicio data selectata +NO_PRICE=Nici unul pret indicat. -TripForValid=à Valider -TripForPaid=à Payer -TripPaid=Payée +TripForValid=De validat +TripForPaid=De platit +TripPaid=Platit NoTripsToExportCSV=No expense report to export for this period. diff --git a/htdocs/langs/ru_RU/bills.lang b/htdocs/langs/ru_RU/bills.lang index 35392a8c81e..a7eac867c68 100644 --- a/htdocs/langs/ru_RU/bills.lang +++ b/htdocs/langs/ru_RU/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Платежи уже сделаны PaymentsBackAlreadyDone=Payments back already done PaymentRule=Правила оплаты PaymentMode=Тип платежа -PaymentConditions=Условия платежа -PaymentConditionsShort=Условия платежа +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Сумма платежа ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Платеж больше, чем в напоминании об оплате diff --git a/htdocs/langs/ru_RU/incoterm.lang b/htdocs/langs/ru_RU/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/ru_RU/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/ru_RU/printing.lang b/htdocs/langs/ru_RU/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/ru_RU/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/ru_RU/projects.lang b/htdocs/langs/ru_RU/projects.lang index 91a4da8d284..6fcad543512 100644 --- a/htdocs/langs/ru_RU/projects.lang +++ b/htdocs/langs/ru_RU/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=доклад полной проекта модели (logo. ..) -PlannedWorkload = Запланированная нагрузка -WorkloadOccupation= Workload affectation +PlannedWorkload=Запланированная нагрузка +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/sk_SK/bills.lang b/htdocs/langs/sk_SK/bills.lang index cbd81b2852b..583a431a013 100644 --- a/htdocs/langs/sk_SK/bills.lang +++ b/htdocs/langs/sk_SK/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Platby neurobili PaymentsBackAlreadyDone=Platby späť neurobili PaymentRule=Platba pravidlo PaymentMode=Typ platby -PaymentConditions=Termín vyplatenia -PaymentConditionsShort=Termín vyplatenia +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Suma platby ValidatePayment=Overenie platby PaymentHigherThanReminderToPay=Platobné vyššia než upomienke na zaplatenie diff --git a/htdocs/langs/sk_SK/incoterm.lang b/htdocs/langs/sk_SK/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/sk_SK/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/sk_SK/printing.lang b/htdocs/langs/sk_SK/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/sk_SK/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/sk_SK/projects.lang b/htdocs/langs/sk_SK/projects.lang index 8963a13c602..d1405991f2f 100644 --- a/htdocs/langs/sk_SK/projects.lang +++ b/htdocs/langs/sk_SK/projects.lang @@ -130,13 +130,15 @@ AddElement=Odkaz na elementu UnlinkElement=Unlink element # Documents models DocumentModelBaleine=Kompletné projektu model zostavy (logo. ..) -PlannedWorkload = Plánované zaťaženie -WorkloadOccupation= Pracovná záťaž pretvárka +PlannedWorkload=Plánované zaťaženie +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Odkazujúce objekty SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/sl_SI/bills.lang b/htdocs/langs/sl_SI/bills.lang index 7f5af4fc0d5..7f5c104ae7a 100644 --- a/htdocs/langs/sl_SI/bills.lang +++ b/htdocs/langs/sl_SI/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Izvršena plačila PaymentsBackAlreadyDone=Vrnitev plačila že izvršena PaymentRule=Pravilo plačila PaymentMode=Način plačila -PaymentConditions=Rok plačila -PaymentConditionsShort=Rok plačila +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Znesek plačila ValidatePayment=Potrdi plačilo PaymentHigherThanReminderToPay=Plačilo višje od opomina diff --git a/htdocs/langs/sl_SI/incoterm.lang b/htdocs/langs/sl_SI/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/sl_SI/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/sl_SI/install.lang b/htdocs/langs/sl_SI/install.lang index 05e51e48ef4..824579c3114 100644 --- a/htdocs/langs/sl_SI/install.lang +++ b/htdocs/langs/sl_SI/install.lang @@ -156,7 +156,7 @@ LastStepDesc=Zadnji korak: Tukaj določite uporabniško ime in ActivateModule=Vključite modul %s ShowEditTechnicalParameters=Kliknite tukaj za prikaz/popravek naprednih parametrov (expertni način) WarningUpgrade=Pozor:\nAli ste najprej naredili varnostno kopijo baze podatkov ?\nTo je zelo priporočeno: na primer zaradi nekaterih hroščev v sistemu baze podatkov (na primer mysql verzija 5.5.40), lahko med tem postopkom izgubite nekatere podatke ali tabele, zato je priporočeno imeti celotno kopijo vaše baze podatkov pred začetkom migracije.\n\nKliknite OK za začetek procesa migracije... -ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s) +ErrorDatabaseVersionForbiddenForMigration=Verzija vaše baze podatkov je %s. Vsebuje kritičnega hrošča, ki povzroči izgubo podatkov, če naredite strukturno spremembo baze, kot jo zahteva postopek migracije. Zato migracija ne bo dovoljena, dokler ne posodobite baze na višjo stabilno verzijo (seznam znanih hroščastih verzij: %s) ######### # upgrade diff --git a/htdocs/langs/sl_SI/main.lang b/htdocs/langs/sl_SI/main.lang index a41f62aba48..0b0e4a38d9a 100644 --- a/htdocs/langs/sl_SI/main.lang +++ b/htdocs/langs/sl_SI/main.lang @@ -141,7 +141,7 @@ Cancel=Razveljavi Modify=Spremeni Edit=Uredi Validate=Potrdi -ValidateAndApprove=Validate and Approve +ValidateAndApprove=Potrdi in odobri ToValidate=Za potrditev Save=Shrani SaveAs=Shrani kot @@ -159,7 +159,7 @@ Search=Išči SearchOf=Iskanje Valid=Veljaven Approve=Potrdi -Disapprove=Disapprove +Disapprove=Prekliči odobritev ReOpen=Ponovno odpri Upload=Dodaj datoteko ToLink=Povezava @@ -221,7 +221,7 @@ Cards=Kartice Card=Kartica Now=Zdaj Date=Datum -DateAndHour=Date and hour +DateAndHour=Datum in ura DateStart=Začetni datum DateEnd=Končni datum DateCreation=Datum kreiranja @@ -298,7 +298,7 @@ UnitPriceHT=Cena enote (neto) UnitPriceTTC=Cena enote PriceU=C.E. PriceUHT=C.E. (neto) -AskPriceSupplierUHT=P.U. HT Requested +AskPriceSupplierUHT=Zahtevan P.U. HT PriceUTTC=C.E. Amount=Znesek AmountInvoice=Znesek računa @@ -525,7 +525,7 @@ DateFromTo=Od %s do %s DateFrom=Od %s DateUntil=Do %s Check=Preveri -Uncheck=Uncheck +Uncheck=Odznači Internal=Interno External=Eksterno Internals=Interni @@ -693,7 +693,7 @@ PublicUrl=Javni URL AddBox=Dodaj okvir SelectElementAndClickRefresh=Izberi element in klikni osveži PrintFile=Natisni datoteko %s -ShowTransaction=Show transaction +ShowTransaction=Prikaži transakcijo # Week day Monday=Ponedeljek Tuesday=Torek diff --git a/htdocs/langs/sl_SI/printing.lang b/htdocs/langs/sl_SI/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/sl_SI/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/sl_SI/projects.lang b/htdocs/langs/sl_SI/projects.lang index 86aa5c2da19..ece1a228e71 100644 --- a/htdocs/langs/sl_SI/projects.lang +++ b/htdocs/langs/sl_SI/projects.lang @@ -130,13 +130,15 @@ AddElement=Povezava do elementa UnlinkElement=Nepovezan element # Documents models DocumentModelBaleine=Model poročila za celoten projekt (logo...) -PlannedWorkload = Planirana delovna obremenitev -WorkloadOccupation= Pretvarjanje delovne obremenitve +PlannedWorkload=Planirana delovna obremenitev +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Referenčni objekti SearchAProject=Iskanje projekta ProjectMustBeValidatedFirst=Projekt mora biti najprej potrjen ProjectDraft=Osnutek projekta FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/sq_AL/bills.lang b/htdocs/langs/sq_AL/bills.lang index 7232f00e91c..69e1510ca44 100644 --- a/htdocs/langs/sq_AL/bills.lang +++ b/htdocs/langs/sq_AL/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule PaymentMode=Payment type -PaymentConditions=Payment term -PaymentConditionsShort=Payment term +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Payment amount ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Payment higher than reminder to pay diff --git a/htdocs/langs/sq_AL/incoterm.lang b/htdocs/langs/sq_AL/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/sq_AL/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/sq_AL/printing.lang b/htdocs/langs/sq_AL/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/sq_AL/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/sq_AL/projects.lang b/htdocs/langs/sq_AL/projects.lang index 0a12f4c64b7..44d0d89687a 100644 --- a/htdocs/langs/sq_AL/projects.lang +++ b/htdocs/langs/sq_AL/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/sv_SE/bills.lang b/htdocs/langs/sv_SE/bills.lang index 2228c0a85ef..549fcce7940 100644 --- a/htdocs/langs/sv_SE/bills.lang +++ b/htdocs/langs/sv_SE/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Betalningar redan gjort PaymentsBackAlreadyDone=Återbetalningar är utförda tidigare PaymentRule=Betalningsregel PaymentMode=Betalningssätt -PaymentConditions=Betalningsvillkor -PaymentConditionsShort=Betalningsvillkor +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Betalningsbelopp ValidatePayment=Bekräfta betalning PaymentHigherThanReminderToPay=Betalning högre än påminnelse att betala diff --git a/htdocs/langs/sv_SE/incoterm.lang b/htdocs/langs/sv_SE/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/sv_SE/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/sv_SE/printing.lang b/htdocs/langs/sv_SE/printing.lang new file mode 100644 index 00000000000..22d1d42401b --- /dev/null +++ b/htdocs/langs/sv_SE/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direkt utskrift +Module112000Desc=Aktivera System för Direkt Utskrift +PrintingSetup=Inställningar av System för Direkt Utskrift +PrintingDesc=Denna modul lägger till en Utskrift-knapp i diverse moduler för att skicka dokument direkt till en skrivare (utan att öppna dokumentet i någon tillämpning). +ModuleDriverSetup=Inställningar för Modul drivrutiner +PrintingDriverDesc=Konfigurationsvariabler för skrivardrivrutin. +ListDrivers=Lista över drivrutiner +PrintTestDesc=Lista över skrivare +FileWasSentToPrinter=Fil %s skickades till utskrift +NoActivePrintingModuleFound=Ingen aktiv modul för utskrift av dokumentet +PleaseSelectaDriverfromList=Var god välj en drivrutin från listan. +SetupDriver=Inställningar av drivrutin +TestDriver=Test +TargetedPrinter=Målskrivare +UserConf=Inställningar per användare +PRINTGCP=Google Cloud Print +PrintGCPDesc=Denna drivrutin skickar dokument direkt till en skrivare med Google Cloud Print. +PrintingDriverDescprintgcp=Konfigurationsvariabler för skrivardrivrutin Google Cloud Print. +PrintTestDescprintgcp=Lista över skrivare för Google Cloud Print. +PRINTGCP_LOGIN=Google konto login +PRINTGCP_PASSWORD=Google konto lösenord +STATE_ONLINE=Online +STATE_UNKNOWN=Okänd +STATE_OFFLINE=Offline +STATE_DORMANT=Offline rätt länge +TYPE_GOOGLE=Google +TYPE_HP=HP-skrivare +TYPE_DOCS=DOCS +TYPE_DRIVE=Google drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Namn +GCP_displayName=Visningsnamn +GCP_Id=Skrivar id +GCP_OwnerName=Ägar namn +GCP_State=Skrivaretillstånd +GCP_connectionStatus=Ansluten +GCP_Type=Skrivar typ +PRINTIPP=PrintIPP-drivrutin +PrintIPPSetup=Inställningar Direct Print Module +PrintIPPDesc=Denna drivrutin skickar dokument direkt till en skrivare. Den kräver ett Linux-system med CUPS. +PrintingDriverDescprintipp=Konfigurationsvariabler för skrivardrivrutin PrintIPP +PrintTestDescprintipp=Lista över skrivare för drivrutin PrintIPP. +PRINTIPP_ENABLED=Visa ikonför "Direktutskrift" i dokumentlista +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Inlogg +PRINTIPP_PASSWORD=Lösenord +NoPrinterFound=Ingen skrivare funnen (kontrollera CUPS-inställningar) +FileWasSentToPrinter=Fil %s skickades till utskrift +NoDefaultPrinterDefined=Ingen standarskrivare är definerad +DefaultPrinter=Standard skrivare +Printer=Skrivare +CupsServer=CUPS server +IPP_Uri=Printer Uri +IPP_Name=Skrivarnamn +IPP_State=Skrivartillstånd +IPP_State_reason=Ange orsak +IPP_State_reason1=Ange orsak1 +IPP_BW=Svartvit +IPP_Color=Färg +IPP_Device=Enhet +IPP_Media=Utskriftmedia +IPP_Supported=Papperstyp +STATE_IPP_idle=Vilande +STATE_IPP_stopped=Stannad +STATE_IPP_paused=Pausad +STATE_IPP_toner-low-report=Toner låg nivå +STATE_IPP_none=Ingen +MEDIA_IPP_stationery=Papperstyp +MEDIA_IPP_thermal=Termisk +IPP_COLOR_print-black=BW-skrivare diff --git a/htdocs/langs/sv_SE/projects.lang b/htdocs/langs/sv_SE/projects.lang index cdec5ad6557..af391db2150 100644 --- a/htdocs/langs/sv_SE/projects.lang +++ b/htdocs/langs/sv_SE/projects.lang @@ -130,13 +130,15 @@ AddElement=Länk till inslag UnlinkElement=Ta bort länk elementet # Documents models DocumentModelBaleine=En fullständig projektets rapport modellen (logo. ..) -PlannedWorkload = Planerad arbetsbelastning -WorkloadOccupation= Arbetsbelastning affektation +PlannedWorkload=Planerad arbetsbelastning +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Med hänvisning objekt SearchAProject=Sök ett projekt ProjectMustBeValidatedFirst=Projekt måste valideras först ProjectDraft=Utkast projekt FirstAddRessourceToAllocateTime=Associera en resurse att avsätta tid -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/sw_SW/bills.lang b/htdocs/langs/sw_SW/bills.lang index 7232f00e91c..69e1510ca44 100644 --- a/htdocs/langs/sw_SW/bills.lang +++ b/htdocs/langs/sw_SW/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule PaymentMode=Payment type -PaymentConditions=Payment term -PaymentConditionsShort=Payment term +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Payment amount ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Payment higher than reminder to pay diff --git a/htdocs/langs/sw_SW/projects.lang b/htdocs/langs/sw_SW/projects.lang index 0a12f4c64b7..44d0d89687a 100644 --- a/htdocs/langs/sw_SW/projects.lang +++ b/htdocs/langs/sw_SW/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/th_TH/bills.lang b/htdocs/langs/th_TH/bills.lang index 7232f00e91c..69e1510ca44 100644 --- a/htdocs/langs/th_TH/bills.lang +++ b/htdocs/langs/th_TH/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule PaymentMode=Payment type -PaymentConditions=Payment term -PaymentConditionsShort=Payment term +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Payment amount ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Payment higher than reminder to pay diff --git a/htdocs/langs/th_TH/incoterm.lang b/htdocs/langs/th_TH/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/th_TH/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/th_TH/printing.lang b/htdocs/langs/th_TH/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/th_TH/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/th_TH/projects.lang b/htdocs/langs/th_TH/projects.lang index 0a12f4c64b7..44d0d89687a 100644 --- a/htdocs/langs/th_TH/projects.lang +++ b/htdocs/langs/th_TH/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/tr_TR/agenda.lang b/htdocs/langs/tr_TR/agenda.lang index 0520ecb6de7..d3398bfc410 100644 --- a/htdocs/langs/tr_TR/agenda.lang +++ b/htdocs/langs/tr_TR/agenda.lang @@ -25,7 +25,7 @@ MenuToDoMyActions=Sonlanmayan etkinliklerim MenuDoneMyActions=Sonlanan etkinliklerim ListOfEvents=Etkinlik listesi (iç takvim) ActionsAskedBy=Etkinliği bildiren -ActionsToDoBy=Etkinlikten etkilenen +ActionsToDoBy=Etkinlik için görevlendirilen ActionsDoneBy=Etkinliği yapan ActionsForUser=Kullanıcı etkinlikleri ActionsForUsersGroup=Grupun tüm üyelerine ait etkinlikler diff --git a/htdocs/langs/tr_TR/bills.lang b/htdocs/langs/tr_TR/bills.lang index 75337d23cc2..b4dfe964b99 100644 --- a/htdocs/langs/tr_TR/bills.lang +++ b/htdocs/langs/tr_TR/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Halihazırda yapılmış ödemeler PaymentsBackAlreadyDone=Zaten yapılmış geri ödemeler PaymentRule=Ödeme kuralı PaymentMode=Ödeme türü -PaymentConditions=Ödeme şartı -PaymentConditionsShort=Ödeme şartı +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Ödeme tutarı ValidatePayment=Ödeme doğrula PaymentHigherThanReminderToPay=Ödeme hatırlatmasından daha yüksek ödeme diff --git a/htdocs/langs/tr_TR/incoterm.lang b/htdocs/langs/tr_TR/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/tr_TR/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/tr_TR/printing.lang b/htdocs/langs/tr_TR/printing.lang new file mode 100644 index 00000000000..087b9d2a8a4 --- /dev/null +++ b/htdocs/langs/tr_TR/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Doğrudan yazdırma +Module112000Desc=Doğrudan Yazdırma Sistemini Engelle +PrintingSetup=Doğrudan Yazdırma Sistemi Ayarları +PrintingDesc=Bu modül, çeşitli modüllerde belgeleri doğrudan yazıcıya göndermek için bir Yazdırma tuşu ekler (belge uygulamada açılmadan) +ModuleDriverSetup=Modül Sürücüsü Ayarları +PrintingDriverDesc=Yazıcı sürücüsü değişkenlerinin ayarları +ListDrivers=Sürücü listesi +PrintTestDesc=Yazıcı Listesi +FileWasSentToPrinter=%s Dosyası yazıcıya gönderilmiştir +NoActivePrintingModuleFound=Belge yazdıracak etkin modül yok +PleaseSelectaDriverfromList=Lütfen listeden bir sürücü seçin. +SetupDriver=Sürücü kurulumu +TestDriver=Test +TargetedPrinter=Hedeflenen yazıcı +UserConf=Kişi başına ayarlar +PRINTGCP=Google Bulut Yazdırma +PrintGCPDesc=Bu sürücü belgelerin Google Bulut Yazdırma ile doğrudan bir yazıcıya gönderilmesini sağlar. +PrintingDriverDescprintgcp=Google Bulut Yazdırmanın yazıcı sürücüsü yapılandırma değişkenleri. +PrintTestDescprintgcp=Google Bulut Yazdırma için Yazıcı Listesi. +PRINTGCP_LOGIN=Google Hesabı Oturum Açma +PRINTGCP_PASSWORD=Google Hesabı Parolası +STATE_ONLINE=Çevrimiçi +STATE_UNKNOWN=Bilinmeyen +STATE_OFFLINE=Çevrimdışı +STATE_DORMANT=Uzunca bir süre Çevrimdışı +TYPE_GOOGLE=Google +TYPE_HP=HP Yazıcı +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Adı +GCP_displayName=Adı göster +GCP_Id=Yazıcı ID +GCP_OwnerName=Sahip Adı +GCP_State=Yazıcı Durumu +GCP_connectionStatus=Çevrimiçi Durumu +GCP_Type=Yazıcı Türü +PRINTIPP=PrintIPP Sürücüsü +PrintIPPSetup=Doğrudan Yazdırma modülü kurulumu +PrintIPPDesc=Bu sürücü belgelerin doğrudan yazıcıya gönderilmesini sağlar. Bu işlem CUPS kurulu bir Linux sistemi gerektirir. +PrintingDriverDescprintipp=Yazdırma sürücüsü PrintIPP için yapılandırma değişkenleri. +PrintTestDescprintipp=PrintIPP sürücüsü için Yazıcı Listesi. +PRINTIPP_ENABLED=Belgele listelerinde "Doğrudan yazdır" simgesini göster +PRINTIPP_HOST=Yazma sunucusu +PRINTIPP_PORT=Port +PRINTIPP_USER=Oturum açma +PRINTIPP_PASSWORD=Parola +NoPrinterFound=Yazıcı bulunamadı (CUPS ayarlarınızı denetleyin) +FileWasSentToPrinter=%s Dosyası yazıcıya gönderilmiştir +NoDefaultPrinterDefined=Tanımlı varsayılan yazıcı yok +DefaultPrinter=Varsayılan yazıcı +Printer=Yazıcı +CupsServer=CUPS sunucusu +IPP_Uri=Uri Yazıcısı +IPP_Name=Yazıcı Adı +IPP_State=Yazıcı Durumu +IPP_State_reason=Durum nedeni +IPP_State_reason1=Durum nedeni1 +IPP_BW=SB +IPP_Color=Renkli +IPP_Device=Aygıt +IPP_Media=Yazıcı ortamı +IPP_Supported=Ortam türü +STATE_IPP_idle=Boşta +STATE_IPP_stopped=Durduruldu +STATE_IPP_paused=Bekletildi +STATE_IPP_toner-low-report=Toner Azaldı +STATE_IPP_none=Hiçbiri +MEDIA_IPP_stationery=Antetli kağıt +MEDIA_IPP_thermal=Termal +IPP_COLOR_print-black=SB Yazıcı diff --git a/htdocs/langs/tr_TR/projects.lang b/htdocs/langs/tr_TR/projects.lang index b9531646c0b..aa33b4ca11a 100644 --- a/htdocs/langs/tr_TR/projects.lang +++ b/htdocs/langs/tr_TR/projects.lang @@ -31,8 +31,8 @@ NoProject=Tanımlı ya da sahip olunan hiçbir proje yok NbOpenTasks=Açık görev sayısı NbOfProjects=Proje sayısı TimeSpent=Harcanan süre -TimeSpentByYou=Time spent by you -TimeSpentByUser=Time spent by user +TimeSpentByYou=Tarafınızdan harcanan süre +TimeSpentByUser=Kullanıcı tarafından harcanan süre TimesSpent=Harcanan süre RefTask=Görev ref. LabelTask=Görev etiketi @@ -130,13 +130,15 @@ AddElement=Öğeye bağlan UnlinkElement=Öğenin bağlantısını kaldır # Documents models DocumentModelBaleine=Eksiksiz bir proje rapor modeli (logo. ..) -PlannedWorkload = Planlı işyükü -WorkloadOccupation= İş yükü benzetmesi +PlannedWorkload=Planlı işyükü +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Yönlendirme nesneleri SearchAProject=Bir proje ara ProjectMustBeValidatedFirst=Projeler önce doğrulanmalıdır ProjectDraft=Taslak projeler FirstAddRessourceToAllocateTime=Zaman ayırmak için bir kaynak ilişkilendirin -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/uk_UA/bills.lang b/htdocs/langs/uk_UA/bills.lang index 7232f00e91c..69e1510ca44 100644 --- a/htdocs/langs/uk_UA/bills.lang +++ b/htdocs/langs/uk_UA/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule PaymentMode=Payment type -PaymentConditions=Payment term -PaymentConditionsShort=Payment term +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Payment amount ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Payment higher than reminder to pay diff --git a/htdocs/langs/uk_UA/incoterm.lang b/htdocs/langs/uk_UA/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/uk_UA/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/uk_UA/printing.lang b/htdocs/langs/uk_UA/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/uk_UA/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/uk_UA/projects.lang b/htdocs/langs/uk_UA/projects.lang index 0a12f4c64b7..44d0d89687a 100644 --- a/htdocs/langs/uk_UA/projects.lang +++ b/htdocs/langs/uk_UA/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/uz_UZ/bills.lang b/htdocs/langs/uz_UZ/bills.lang index 7232f00e91c..69e1510ca44 100644 --- a/htdocs/langs/uz_UZ/bills.lang +++ b/htdocs/langs/uz_UZ/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule PaymentMode=Payment type -PaymentConditions=Payment term -PaymentConditionsShort=Payment term +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Payment amount ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Payment higher than reminder to pay diff --git a/htdocs/langs/uz_UZ/projects.lang b/htdocs/langs/uz_UZ/projects.lang index 0a12f4c64b7..44d0d89687a 100644 --- a/htdocs/langs/uz_UZ/projects.lang +++ b/htdocs/langs/uz_UZ/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=A complete project's report model (logo...) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/vi_VN/bills.lang b/htdocs/langs/vi_VN/bills.lang index d30df986f9f..88ea5adf51f 100644 --- a/htdocs/langs/vi_VN/bills.lang +++ b/htdocs/langs/vi_VN/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=Thanh toán đã được thực hiện PaymentsBackAlreadyDone=Thanh toán đã được thực hiện trở lại PaymentRule=Quy tắc thanh toán PaymentMode=Phương thức thanh toán -PaymentConditions=Thời hạn thanh toán -PaymentConditionsShort=Thời hạn thanh toán +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=Số tiền thanh toán ValidatePayment=Xác nhận thanh toán PaymentHigherThanReminderToPay=Thanh toán cao hơn so với lời nhắc nhở phải trả diff --git a/htdocs/langs/vi_VN/incoterm.lang b/htdocs/langs/vi_VN/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/vi_VN/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/vi_VN/printing.lang b/htdocs/langs/vi_VN/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/vi_VN/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/vi_VN/projects.lang b/htdocs/langs/vi_VN/projects.lang index 13576931acd..f818741658b 100644 --- a/htdocs/langs/vi_VN/projects.lang +++ b/htdocs/langs/vi_VN/projects.lang @@ -130,13 +130,15 @@ AddElement=Liên kết đến yếu tố UnlinkElement=Yếu tố Bỏ liên kết # Documents models DocumentModelBaleine=Mô hình báo cáo hoàn chỉnh của dự án (lôgô...) -PlannedWorkload = Tải tiến trình công việc đã dự định -WorkloadOccupation= Sử dụng tiến trình công việc +PlannedWorkload=Tải tiến trình công việc đã dự định +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Các đối tượng tham chiếu SearchAProject=Tìm kiếm một dự án ProjectMustBeValidatedFirst=Dự án phải được xác nhận đầu tiên ProjectDraft=Dự thảo dự án FirstAddRessourceToAllocateTime=Kết hợp một ressource để phân bổ thời gian -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/zh_CN/bills.lang b/htdocs/langs/zh_CN/bills.lang index 873e55377a3..3f1380ab37d 100644 --- a/htdocs/langs/zh_CN/bills.lang +++ b/htdocs/langs/zh_CN/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=付款已完成 PaymentsBackAlreadyDone=返回已经完成付款 PaymentRule=付款规则 PaymentMode=付款方式 -PaymentConditions=付款方式 -PaymentConditionsShort=付款方式 +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=付款金额 ValidatePayment=验证付款 PaymentHigherThanReminderToPay=付款支付更高的比提醒 diff --git a/htdocs/langs/zh_CN/incoterm.lang b/htdocs/langs/zh_CN/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/zh_CN/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/zh_CN/printing.lang b/htdocs/langs/zh_CN/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/zh_CN/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/zh_CN/projects.lang b/htdocs/langs/zh_CN/projects.lang index b8326f1613d..ac970564116 100644 --- a/htdocs/langs/zh_CN/projects.lang +++ b/htdocs/langs/zh_CN/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=一个完整的项目报告模型(logo. ..) -PlannedWorkload = 计划的工作量 -WorkloadOccupation= 工作量的分配 +PlannedWorkload=计划的工作量 +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=参考对象 SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/langs/zh_TW/bills.lang b/htdocs/langs/zh_TW/bills.lang index 2bf9461e0e1..85f3950552a 100644 --- a/htdocs/langs/zh_TW/bills.lang +++ b/htdocs/langs/zh_TW/bills.lang @@ -74,8 +74,9 @@ PaymentsAlreadyDone=付款已完成 PaymentsBackAlreadyDone=Payments back already done PaymentRule=付款規則 PaymentMode=付款方式 -PaymentConditions=付款條件 -PaymentConditionsShort=付款天數 +PaymentTerm=Payment term +PaymentConditions=Payment terms +PaymentConditionsShort=Payment terms PaymentAmount=付款金額 ValidatePayment=Validate payment PaymentHigherThanReminderToPay=付款支付更高的比提醒 diff --git a/htdocs/langs/zh_TW/incoterm.lang b/htdocs/langs/zh_TW/incoterm.lang new file mode 100644 index 00000000000..2396d2acb0e --- /dev/null +++ b/htdocs/langs/zh_TW/incoterm.lang @@ -0,0 +1,7 @@ +Module210009Name=Incoterm +Module210009Desc=Add features to manage Incoterm +IncotermLabel=Incoterms +IncotermSetupTitle1=Feature +IncotermSetupTitle2=Status +IncotermSetup=Setup of module Incoterm +IncotermFunctionDesc=Activate Incoterm feature (Thirdparty, Proposal, Customer Order, Customer Invoice, Shipment, Supplier order) diff --git a/htdocs/langs/zh_TW/printing.lang b/htdocs/langs/zh_TW/printing.lang new file mode 100644 index 00000000000..f0cd2a40292 --- /dev/null +++ b/htdocs/langs/zh_TW/printing.lang @@ -0,0 +1,74 @@ +# Dolibarr language file - Source file is en_US - printing +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. +ModuleDriverSetup=Setup Module Driver +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +NoActivePrintingModuleFound=No active module to print document +PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP=Google Cloud Print +PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PRINTGCP_LOGIN=Google Account Login +PRINTGCP_PASSWORD=Google Account Password +STATE_ONLINE=Online +STATE_UNKNOWN=Unknown +STATE_OFFLINE=Offline +STATE_DORMANT=Offline for quite a while +TYPE_GOOGLE=Google +TYPE_HP=HP Printer +TYPE_DOCS=DOCS +TYPE_DRIVE=Google Drive +TYPE_FEDEX=Fedex +TYPE_ANDROID_CHROME_SNAPSHOT=Android +TYPE_IOS_CHROME_SNAPSHOT=IOS +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PRINTIPP=PrintIPP Driver +PrintIPPSetup=Setup of Direct Print module +PrintIPPDesc=This driver allow to send documents directly to a printer. It requires a Linux system with CUPS installed. +PrintingDriverDescprintipp=Configuration variables for printing driver PrintIPP. +PrintTestDescprintipp=List of Printers for driver PrintIPP. +PRINTIPP_ENABLED=Show "Direct print" icon in document lists +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoPrinterFound=No printers found (check your CUPS setup) +FileWasSentToPrinter=File %s was sent to printer +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +CupsServer=CUPS Server +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +STATE_IPP_idle=Idle +STATE_IPP_stopped=Stopped +STATE_IPP_paused=Paused +STATE_IPP_toner-low-report=Low Toner +STATE_IPP_none=None +MEDIA_IPP_stationery=Stationery +MEDIA_IPP_thermal=Thermal +IPP_COLOR_print-black=BW Printer diff --git a/htdocs/langs/zh_TW/projects.lang b/htdocs/langs/zh_TW/projects.lang index 4c29cb68aad..d39fc8620ef 100644 --- a/htdocs/langs/zh_TW/projects.lang +++ b/htdocs/langs/zh_TW/projects.lang @@ -130,13 +130,15 @@ AddElement=Link to element UnlinkElement=Unlink element # Documents models DocumentModelBaleine=一個完整的項目報告模型(logo. ..) -PlannedWorkload = Planned workload -WorkloadOccupation= Workload affectation +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +WorkloadOccupation=Workload assignation ProjectReferers=Refering objects SearchAProject=Search a project ProjectMustBeValidatedFirst=Project must be validated first ProjectDraft=Draft projects FirstAddRessourceToAllocateTime=Associate a ressource to allocate time -InputPerTime=Input per time InputPerDay=Input per day +InputPerWeek=Input per week +InputPerAction=Input per action TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s diff --git a/htdocs/projet/activity/perweek.php b/htdocs/projet/activity/perweek.php index 548210abf7f..b7ab0a8bd71 100644 --- a/htdocs/projet/activity/perweek.php +++ b/htdocs/projet/activity/perweek.php @@ -54,6 +54,29 @@ $year=GETPOST("year","int")?GETPOST("year","int"):date("Y"); $month=GETPOST("month","int")?GETPOST("month","int"):date("m"); $week=GETPOST("week","int")?GETPOST("week","int"):date("W"); $day=GETPOST("day","int")?GETPOST("day","int"):date("d"); +$day = (int) $day; + +$startdayarray=dol_get_first_day_week($day, $month, $year); + +$prev = $startdayarray; +$prev_year = $prev['prev_year']; +$prev_month = $prev['prev_month']; +$prev_day = $prev['prev_day']; +$first_day = $prev['first_day']; +$first_month= $prev['first_month']; +$first_year = $prev['first_year']; +$week = $prev['week']; + +$next = dol_get_next_week($first_day, $week, $first_month, $first_year); +$next_year = $next['year']; +$next_month = $next['month']; +$next_day = $next['day']; + +// Define firstdaytoshow and lastdaytoshow (warning: lastdaytoshow is last second to show + 1) +$firstdaytoshow=dol_mktime(0,0,0,$first_month,$first_day,$first_year); +$lastdaytoshow=dol_time_plus_duree($firstdaytoshow, 7, 'd'); + +$usertoprocess=$user; /* @@ -64,8 +87,55 @@ if ($action == 'addtime' && $user->rights->projet->creer) { $task = new Task($db); + $timetoadd=$_POST['task']; + if (empty($timetoadd)) + { + setEventMessage($langs->trans("ErrorTimeSpentIsEmpty"), 'errors'); + } + else + { + foreach($timetoadd as $taskid => $value) + { + foreach($value as $key => $val) + { + $amountoadd=$timetoadd[$taskid][$key]; + if (! empty($amountoadd)) + { + $tmpduration=explode(':',$amountoadd); + $newduration=0; + if (! empty($tmpduration[0])) $newduration+=($tmpduration[0] * 3600); + if (! empty($tmpduration[1])) $newduration+=($tmpduration[1] * 60); + if (! empty($tmpduration[2])) $newduration+=($tmpduration[2]); + if ($newduration > 0) + { + $task->fetch($taskid); + $task->progress = GETPOST($taskid . 'progress', 'int'); + $task->timespent_duration = $newduration; + $task->timespent_fk_user = $usertoprocess->id; + $task->timespent_date = dol_time_plus_duree($firstdaytoshow, $key, 'd'); + $result=$task->addTimeSpent($user); + if ($result < 0) + { + setEventMessages($task->error, $task->errors, 'errors'); + $error++; + break; + } + } + } + } + } + + if (! $error) + { + setEventMessage($langs->trans("RecordSaved")); + + // Redirect to avoid submit twice on back + header('Location: '.$_SERVER["PHP_SELF"].($projectid?'?id='.$projectid:'?').($mode?'&mode='.$mode:'')); + exit; + } + } } @@ -83,8 +153,6 @@ $taskstatic = new Task($db); $title=$langs->trans("TimeSpent"); if ($mine) $title=$langs->trans("MyTimeSpent"); -$usertoprocess=$user; - //$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1); $projectsListId = $projectstatic->getProjectsAuthorizedForUser($usertoprocess,0,1); // Return all project i have permission on. I want my tasks and some of my task may be on a public projet that is not my project @@ -108,27 +176,6 @@ llxHeader("",$title,"",'','','',array('/core/js/timesheet.js')); print_barre_liste($title, $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, "", $num); -$startdayarray=dol_get_first_day_week($day, $month, $year); - -$prev = $startdayarray; -$prev_year = $prev['prev_year']; -$prev_month = $prev['prev_month']; -$prev_day = $prev['prev_day']; -$first_day = $prev['first_day']; -$first_month= $prev['first_month']; -$first_year = $prev['first_year']; -$week = $prev['week']; - -$day = (int) $day; -$next = dol_get_next_week($first_day, $week, $first_month, $first_year); -$next_year = $next['year']; -$next_month = $next['month']; -$next_day = $next['day']; - -// Define firstdaytoshow and lastdaytoshow (warning: lastdaytoshow is last second to show + 1) -$firstdaytoshow=dol_mktime(0,0,0,$first_month,$first_day,$first_year); -$lastdaytoshow=dol_time_plus_duree($firstdaytoshow, 7, 'd'); - $tmpday = $first_day; // Show navigation bar From 058042d09df972d3e215236f401c6c9aaa66af58 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Wed, 18 Mar 2015 17:52:17 +0100 Subject: [PATCH 323/429] NEW : update skeleton and class builder --- dev/skeletons/build_class_from_table.php | 41 ++++++++++++-- dev/skeletons/skeleton_class.class.php | 72 ++++++++++++++++++++++++ 2 files changed, 109 insertions(+), 4 deletions(-) diff --git a/dev/skeletons/build_class_from_table.php b/dev/skeletons/build_class_from_table.php index 0b2e96daaac..ca10cf49ef0 100755 --- a/dev/skeletons/build_class_from_table.php +++ b/dev/skeletons/build_class_from_table.php @@ -174,7 +174,7 @@ $targetcontent=$sourcecontent; // Substitute class name $targetcontent=preg_replace('/skeleton_class\.class\.php/', $classmin.'.class.php', $targetcontent); $targetcontent=preg_replace('/\$element=\'skeleton\'/', '\$element=\''.$classmin.'\'', $targetcontent); -$targetcontent=preg_replace('/\$table_element=\'skeleton\'/', '\$table_element=\''.$classmin.'\'', $targetcontent); +$targetcontent=preg_replace('/\$table_element=\'skeleton\'/', '\$table_element=\''.$tablenoprefix.'\'', $targetcontent); $targetcontent=preg_replace('/Skeleton_Class/', $classname, $targetcontent); // Substitute comments @@ -252,7 +252,13 @@ foreach($property as $key => $prop) if ($addfield) { $varprop.="\t\t\$sql.= \" "; - if ($prop['istime']) + if ($prop['field']=='datec') + { + $varprop.='"."\'".$this->db->idate(dol_now())."\'"."'; + if ($i < count($property)) $varprop.=","; + $varprop.='";'; + } + elseif ($prop['istime']) { $varprop.='".(! isset($this->'.$prop['field'].') || dol_strlen($this->'.$prop['field'].')==0?\'NULL\':"\'".$this->db->idate('; $varprop.="\$this->".$prop['field'].""; @@ -268,6 +274,12 @@ foreach($property as $key => $prop) if ($i < count($property)) $varprop.=","; $varprop.='";'; } + elseif ($prop['field']=='fk_user_mod' || $prop['field']=='fk_user_author') + { + $varprop.='".$user->id."'; + if ($i < count($property)) $varprop.=","; + $varprop.='";'; + } else { $varprop.='".(! isset($this->'.$prop['field'].')?\'NULL\':"\'".'; @@ -289,11 +301,17 @@ $i=0; foreach($property as $key => $prop) { $i++; - if ($prop['field'] != 'rowid' && $prop['field'] != 'id') + if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && $prop['field'] != 'datec' && $prop['field'] != 'fk_user_author') { $varprop.="\t\t\$sql.= \" "; $varprop.=$prop['field'].'='; - if ($prop['istime']) + if ($prop['field']=='tms') { + $varprop.='".(dol_strlen($this->'.$prop['field'].')!=0 ? "\'".$this->db->idate('; + $varprop.='$this->'.$prop['field']; + $varprop.=')."\'" : "\'".$this->db->idate(dol_now())."\'").'; + $varprop.='"'; + } + elseif ($prop['istime']) { // (dol_strlen($this->datep)!=0 ? "'".$this->db->idate($this->datep)."'" : 'null') $varprop.='".(dol_strlen($this->'.$prop['field'].')!=0 ? "\'".$this->db->idate('; @@ -301,6 +319,9 @@ foreach($property as $key => $prop) $varprop.=')."\'" : \'null\').'; $varprop.='"'; } + elseif ($prop['field']=='fk_user_mod') { + $varprop.='".$user->id."'; + } else { $varprop.="\"."; @@ -325,6 +346,7 @@ $targetcontent=preg_replace('/\$sql\.= " t\.field2";/', '', $targetcontent); // Substitute select set parameters $varprop="\n"; +$varpropline="\n"; $cleanparam=''; $i=0; foreach($property as $key => $prop) @@ -338,11 +360,22 @@ foreach($property as $key => $prop) if ($prop['istime']) $varprop.=')'; $varprop.=";"; $varprop.="\n"; + + $varpropline.="\t\t\t\t\$line->".$prop['field']." = "; + if ($prop['istime']) $varpropline.='$this->db->jdate('; + $varpropline.='$obj->'.$prop['field']; + if ($prop['istime']) $varpropline.=')'; + $varpropline.=";"; + $varpropline.="\n"; } } $targetcontent=preg_replace('/\$this->prop1 = \$obj->field1;/', $varprop, $targetcontent); $targetcontent=preg_replace('/\$this->prop2 = \$obj->field2;/', '', $targetcontent); +//Substirute fetchAll +$targetcontent=preg_replace('/\$line->prop1 = \$obj->field1;/', $varpropline, $targetcontent); +$targetcontent=preg_replace('/\$line->prop2 = \$obj->field2;/', '', $targetcontent); + // Substitute initasspecimen parameters $varprop="\n"; diff --git a/dev/skeletons/skeleton_class.class.php b/dev/skeletons/skeleton_class.class.php index c1710165066..c9e20317695 100644 --- a/dev/skeletons/skeleton_class.class.php +++ b/dev/skeletons/skeleton_class.class.php @@ -1,6 +1,7 @@ * Copyright (C) 2014 Juanjo Menent + * Copyright (C) 2015 Florian Henry * Copyright (C) ---Put here your own copyright and developer email--- * * This program is free software; you can redistribute it and/or modify @@ -41,6 +42,8 @@ class Skeleton_Class extends CommonObject var $element='skeleton'; //!< Id that identify managed objects var $table_element='skeleton'; //!< Name of table without prefix where object is stored + var $lines=array(); + var $id; var $prop1; var $prop2; @@ -175,6 +178,69 @@ class Skeleton_Class extends CommonObject } } + /** + * Load object in memory from the database + * + * @param string $sortorder Sort Order + * @param string $sortfield Sort field + * @param int $limit offset limit + * @param int $offset offset limit + * @param array $filter filter array + * @return int <0 if KO, >0 if OK + */ + function fetchAll($sortorder, $sortfield, $limit, $offset, $filter = array()) + { + global $langs; + $sql = "SELECT"; + $sql.= " t.rowid,"; + $sql.= " t.field1,"; + $sql.= " t.field2"; + //... + $sql.= " FROM ".MAIN_DB_PREFIX."mytable as t"; + + // Manage filter + $sqlwhere=array(); + if (count($filter)>0) { + foreach ( $filter as $key => $value ) { + //$sqlwhere []= ' AND '. $key . ' LIKE \'%' . $this->db->escape($value) . '%\''; + } + } + if (count($sqlwhere)>0) { + $sql.= ' WHERE '.implode(' AND ', $sqlwhere); + } + $sql .= " ORDER BY " . $sortfield . " " . $sortorder . " " . $this->db->plimit($limit + 1, $offset); + + $this->lines = array (); + + dol_syslog(get_class($this)."::fetchAll", LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + $num = $this->db->num_rows($resql); + + while ($obj = $this->db->fetch_object($resql)) + { + $line=new Skeleton_ClassLine(); + + $line->id = $obj->rowid; + $line->prop1 = $obj->field1; + $line->prop2 = $obj->field2; + + $this->line[]=$line; + //... + } + $this->db->free($resql); + + return $num; + } + else + { + $this->error="Error ".$this->db->lasterror(); + dol_syslog(get_class($this)."::fetchAll ".$this->error, LOG_ERR); + return -1; + } + } + /** * Update object into database @@ -368,3 +434,9 @@ class Skeleton_Class extends CommonObject } } + +class Skeleton_ClassLine { + var $id; + var $prop1; + var $prop2; +} From a2676e57684fdea66934291b698199a91204072b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 Mar 2015 21:06:55 +0100 Subject: [PATCH 324/429] Fix: the type of notification sent was not filled --- htdocs/core/class/notify.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/notify.class.php b/htdocs/core/class/notify.class.php index db88671f7ff..ac63b3e48c5 100644 --- a/htdocs/core/class/notify.class.php +++ b/htdocs/core/class/notify.class.php @@ -423,7 +423,7 @@ class Notify if ($mailfile->sendfile()) { $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_soc, fk_contact, type, objet_type, objet_id, email)"; - $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$actiondefid.", ".$object->socid.", null, '".$obj->type."', '".$object_type."', ".$object->id.", '".$this->db->escape($conf->global->$param)."')"; + $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$actiondefid.", ".$object->socid.", null, 'email', '".$object_type."', ".$object->id.", '".$this->db->escape($conf->global->$param)."')"; if (! $this->db->query($sql)) { dol_print_error($this->db); From 6ceda02eaae3a8972a9fc6cda57ad18bc4104a53 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 18 Mar 2015 21:44:57 +0100 Subject: [PATCH 325/429] NEW: Enhancement of module 'Notification by Email'. Show nb of notifications set. Can set several emails. Can set a threshold on amount for notifications. Add notification on supplier order validation. --- htdocs/admin/commande.php | 22 +- htdocs/admin/facture.php | 29 +- htdocs/admin/notification.php | 143 +++++++- htdocs/admin/propal.php | 23 +- htdocs/admin/supplier_invoice.php | 38 ++- htdocs/admin/supplier_order.php | 39 ++- htdocs/comm/askpricesupplier/card.php | 2 +- htdocs/comm/propal.php | 2 +- htdocs/commande/card.php | 14 +- htdocs/compta/facture.php | 2 +- htdocs/core/class/html.form.class.php | 26 +- htdocs/core/class/notify.class.php | 315 ++++++++++-------- htdocs/core/lib/admin.lib.php | 8 +- ..._50_modNotification_Notification.class.php | 10 +- htdocs/expedition/card.php | 8 +- htdocs/fourn/commande/card.php | 2 +- htdocs/fourn/facture/card.php | 2 +- .../install/mysql/migration/3.7.0-3.8.0.sql | 42 +++ .../mysql/tables/llx_c_action_trigger.sql | 2 +- htdocs/langs/en_US/admin.lang | 7 +- htdocs/langs/en_US/other.lang | 2 + htdocs/societe/notify/card.php | 30 +- htdocs/theme/eldy/style.css.php | 6 +- 23 files changed, 541 insertions(+), 233 deletions(-) diff --git a/htdocs/admin/commande.php b/htdocs/admin/commande.php index 7c0d7fdbf9c..2484df559e2 100644 --- a/htdocs/admin/commande.php +++ b/htdocs/admin/commande.php @@ -622,9 +622,29 @@ else } print '
'; - print '
'; + +/* + * Notifications + */ + +print_titre($langs->trans("Notifications")); +print ''; +print ''; +print ''; +print ''; +print ''; +print "\n"; + +print '\n"; + +print '
'.$langs->trans("Parameter").' 
'; +print $langs->trans("YouMayFindNotificationsFeaturesIntoModuleNotification").'
'; +print '
'; +print "
'; + + llxFooter(); $db->close(); diff --git a/htdocs/admin/facture.php b/htdocs/admin/facture.php index 298c0beddf5..51c627c277b 100644 --- a/htdocs/admin/facture.php +++ b/htdocs/admin/facture.php @@ -171,7 +171,7 @@ else if ($action == 'setdoc') // on passe donc par une variable pour avoir un affichage coherent $conf->global->FACTURE_ADDON_PDF = $value; } - + // On active le modele $ret = delDocumentModel($value, $type); if ($ret > 0) @@ -341,7 +341,7 @@ foreach ($dirmodels as $reldir) // Check if there is a filter on country preg_match('/\-(.*)_(.*)$/',$classname,$reg); if (! empty($reg[2]) && $reg[2] != strtoupper($mysoc->country_code)) continue; - + $classname = preg_replace('/\-.*$/','',$classname); if (! class_exists($classname) && is_readable($dir.$filebis) && (preg_match('/mod_/',$filebis) || preg_match('/mod_/',$classname)) && substr($filebis, dol_strlen($filebis)-3, 3) == 'php') { @@ -416,7 +416,7 @@ foreach ($dirmodels as $reldir) $htmltooltip.=$langs->trans($module->error).'
'; } } - + // Example for credit invoice $facture->type=2; $nextval=$module->getNextValue($mysoc,$facture); @@ -630,7 +630,6 @@ print '
'; /* * Modes de reglement - * */ print '
'; print_titre($langs->trans("SuggestedPaymentModesIfNotDefinedInInvoice")); @@ -811,7 +810,27 @@ print ''."\n"; print "\n"; -//dol_fiche_end(); +/* + * Notifications + */ +print '
'; +print_titre($langs->trans("Notifications")); +print ''; +print ''; +print ''; +print ''; +print ''; +print "\n"; + +print '\n"; + +print '
'.$langs->trans("Parameter").' 
'; +print $langs->trans("YouMayFindNotificationsFeaturesIntoModuleNotification").'
'; +print '
'; +print "
'; + +dol_fiche_end(); + llxFooter(); diff --git a/htdocs/admin/notification.php b/htdocs/admin/notification.php index 03832cdb861..58fd2442357 100644 --- a/htdocs/admin/notification.php +++ b/htdocs/admin/notification.php @@ -24,6 +24,7 @@ */ require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/notify.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/triggers/interface_50_modNotification_Notification.class.php'; @@ -48,25 +49,56 @@ $action = GETPOST("action"); if ($action == 'setvalue' && $user->admin) { + $db->begin(); + $result=dolibarr_set_const($db, "NOTIFICATION_EMAIL_FROM", $_POST["email_from"], 'chaine', 0, '', $conf->entity); if ($result < 0) $error++; if (! $error) { + //var_dump($_POST); foreach($_POST as $key => $val) { - if (! preg_match('/^NOTIFICATION_FIXEDEMAIL_/',$key)) continue; - //print $key.' - '.$val.'
'; - $result=dolibarr_set_const($db, $key, $val, 'chaine', 0, '', $conf->entity); + if (! preg_match('/^NOTIF_(.*)_key$/', $key, $reg)) continue; + + $newval=''; + $newkey=''; + + $shortkey=preg_replace('/_key$/','',$key); + //print $shortkey.'
'; + + if (preg_match('/^NOTIF_(.*)_old_(.*)_key/',$key,$reg)) + { + dolibarr_del_const($db, 'NOTIFICATION_FIXEDEMAIL_'.$reg[1].'_THRESHOLD_HIGHER_'.$reg[2], $conf->entity); + + $newkey='NOTIFICATION_FIXEDEMAIL_'.$reg[1].'_THRESHOLD_HIGHER_'.((int) GETPOST($shortkey.'_amount')); + $newval=GETPOST($shortkey.'_key'); + //print $newkey.' - '.$newval.'
'; + } + else if (preg_match('/^NOTIF_(.*)_new_key/',$key,$reg)) + { + // Add a new entry + $newkey='NOTIFICATION_FIXEDEMAIL_'.$reg[1].'_THRESHOLD_HIGHER_'.((int) GETPOST($shortkey.'_amount')); + $newval=GETPOST($shortkey.'_key'); + } + + if ($newkey && $newval) + { + $result=dolibarr_set_const($db, $newkey, $newval, 'chaine', 0, '', $conf->entity); + } } } if (! $error) { + $db->commit(); + setEventMessage($langs->trans("SetupSaved")); } else { + $db->rollback(); + setEventMessage($langs->trans("Error"),'errors'); } } @@ -78,6 +110,7 @@ if ($action == 'setvalue' && $user->admin) */ $form=new Form($db); +$notify = new Notify($db); llxHeader('',$langs->trans("NotificationSetup")); @@ -107,7 +140,53 @@ print ''; print '
'; -print_fiche_titre($langs->trans("ListOfAvailableNotifications"),'',''); + +if ($conf->societe->enabled) +{ + print_fiche_titre($langs->trans("ListOfNotificationsPerContact"),'',''); + + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + + // Load array of available notifications + $notificationtrigger=new InterfaceNotification($db); + $listofnotifiedevents=$notificationtrigger->getListOfManagedEvents(); + + $var=true; + foreach($listofnotifiedevents as $notifiedevent) + { + $var=!$var; + $label=$langs->trans("Notify_".$notifiedevent['code']); //!=$langs->trans("Notify_".$notifiedevent['code'])?$langs->trans("Notify_".$notifiedevent['code']):$notifiedevent['label']; + + if ($notifiedevent['elementtype'] == 'order_supplier') $elementLabel = $langs->trans('SupplierOrder'); + elseif ($notifiedevent['elementtype'] == 'propal') $elementLabel = $langs->trans('Proposal'); + elseif ($notifiedevent['elementtype'] == 'facture') $elementLabel = $langs->trans('Bill'); + elseif ($notifiedevent['elementtype'] == 'commande') $elementLabel = $langs->trans('Order'); + + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + } + + print '
'.$langs->trans("Module").''.$langs->trans("Code").''.$langs->trans("Label").''.$langs->trans("NbOfTargetedContacts").''.'
'.$elementLabel.''.$notifiedevent['code'].''.$label.''; + $nb = $notify->countDefinedNotifications($notifiedevent['code'], 0); + print $nb; + print '
'; + print '* '.$langs->trans("GoOntoContactCardToAddMore").'
'; + print '
'; +} + + +print_fiche_titre($langs->trans("ListOfFixedNotifications"),'',''); print ''; print ''; @@ -115,12 +194,15 @@ print ''; print ''; print ''; print ''; +print ''; +print ''; print "\n"; // Load array of available notifications $notificationtrigger=new InterfaceNotification($db); $listofnotifiedevents=$notificationtrigger->getListOfManagedEvents(); +$var=true; foreach($listofnotifiedevents as $notifiedevent) { $var=!$var; @@ -136,18 +218,47 @@ foreach($listofnotifiedevents as $notifiedevent) print ''; print ''; print ''; + + print ''; + + print ''; print ''; } diff --git a/htdocs/admin/propal.php b/htdocs/admin/propal.php index 30ae7e71ab3..55a6ec749b6 100644 --- a/htdocs/admin/propal.php +++ b/htdocs/admin/propal.php @@ -643,6 +643,27 @@ print "\n"; print "\n \n \n\n"; print "
'.$langs->trans("Module").''.$langs->trans("Code").''.$langs->trans("Label").''.$langs->trans("FixedEmailTarget").''.$langs->trans("Threshold").''.'
'.$notifiedevent['code'].''.$label.''; - $param='NOTIFICATION_FIXEDEMAIL_'.$notifiedevent['code']; - $value=GETPOST($param)?GETPOST($param,'alpha'):$conf->global->$param; - $s=''; // Do not use type="email" here, we must be able to enter a list of email with , separator. - $arrayemail=explode(',',$value); - $showwarning=0; - foreach($arrayemail as $key=>$valuedet) - { - $valuedet=trim($valuedet); - if (! empty($valuedet) && ! isValidEmail($valuedet)) $showwarning++; - } - if ((! empty($conf->global->$param)) && $showwarning) $s.=' '.img_warning($langs->trans("ErrorBadEMail")); - print $form->textwithpicto($s,$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients")); + // Notification with threshold + foreach($conf->global as $key => $val) + { + if ($val == '' || ! preg_match('/^NOTIFICATION_FIXEDEMAIL_'.$notifiedevent['code'].'_THRESHOLD_HIGHER_(.*)/', $key, $reg)) continue; + + $param='NOTIFICATION_FIXEDEMAIL_'.$notifiedevent['code'].'_THRESHOLD_HIGHER_'.$reg[1]; + $value=GETPOST('NOTIF_'.$notifiedevent['code'].'_old_'.$reg[1].'_key')?GETPOST('NOTIF_'.$notifiedevent['code'].'_old_'.$reg[1].'_key','alpha'):$conf->global->$param; + + $s=''; // Do not use type="email" here, we must be able to enter a list of email with , separator. + $arrayemail=explode(',',$value); + $showwarning=0; + foreach($arrayemail as $key=>$valuedet) + { + $valuedet=trim($valuedet); + if (! empty($valuedet) && ! isValidEmail($valuedet)) $showwarning++; + } + if ((! empty($conf->global->$param)) && $showwarning) $s.=' '.img_warning($langs->trans("ErrorBadEMail")); + print $form->textwithpicto($s,$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients"),1,'help','',0,2); + print '
'; + } + // New entry input fields + $s=''; // Do not use type="email" here, we must be able to enter a list of email with , separator. + print $form->textwithpicto($s,$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients"),1,'help','',0,2); + print '
'; + // Notification with threshold + foreach($conf->global as $key => $val) + { + if ($val == '' || ! preg_match('/^NOTIFICATION_FIXEDEMAIL_'.$notifiedevent['code'].'_THRESHOLD_HIGHER_(.*)/', $key, $reg)) continue; + + print $langs->trans("AmountHT").' >= '; + print '
'; + } + // New entry input fields + print $langs->trans("AmountHT").' >= '; + print '
'; + // TODO Add link to show message content + print '
".$langs->trans("PathDirectory")."".$conf->propal->dir_output."
\n
"; -$db->close(); + +/* + * Notifications + */ + +print_titre($langs->trans("Notifications")); +print ''; +print ''; +print ''; +print ''; +print ''; +print "\n"; + +print '\n"; + +print '
'.$langs->trans("Parameter").' 
'; +print $langs->trans("YouMayFindNotificationsFeaturesIntoModuleNotification").'
'; +print '
'; +print "
'; + llxFooter(); + +$db->close(); diff --git a/htdocs/admin/supplier_invoice.php b/htdocs/admin/supplier_invoice.php index 19b5e89b0dd..6fe32cf4485 100644 --- a/htdocs/admin/supplier_invoice.php +++ b/htdocs/admin/supplier_invoice.php @@ -443,14 +443,16 @@ foreach ($dirmodels as $reldir) } } -print '
'; -print '
'; +print '
'; /* * Other options - * */ +print '
'; +print ''; +print ''; + print_titre($langs->trans("OtherOptions")); print ''; print ''; @@ -459,16 +461,38 @@ print ''; print ''; print "\n"; -print ''; -print ''; -print ''; print '\n"; + +print '
'.$langs->trans("Value").' 
'; print $langs->trans("FreeLegalTextOnInvoices").' ('.$langs->trans("AddCRIfTooLong").')
'; print ''; print '
'; print ''; print "

'; + print '
'; -$db->close(); + +/* + * Notifications + */ + +print_titre($langs->trans("Notifications")); +print ''; +print ''; +print ''; +print ''; +print ''; +print "\n"; + +print '\n"; + +print '
'.$langs->trans("Parameter").' 
'; +print $langs->trans("YouMayFindNotificationsFeaturesIntoModuleNotification").'
'; +print '
'; +print "
'; + + llxFooter(); + +$db->close(); diff --git a/htdocs/admin/supplier_order.php b/htdocs/admin/supplier_order.php index 24e1682eb18..5be30f08ee3 100644 --- a/htdocs/admin/supplier_order.php +++ b/htdocs/admin/supplier_order.php @@ -439,14 +439,16 @@ foreach ($dirmodels as $reldir) } } -print '
'; -print '
'; +print '
'; /* * Other options - * */ +print '
'; +print ''; +print ''; + print_titre($langs->trans("OtherOptions")); print ''; print ''; @@ -455,16 +457,39 @@ print ''; print ''; print "\n"; -print ''; -print ''; -print ''; print '\n"; + +print '
'.$langs->trans("Value").' 
'; print $langs->trans("FreeLegalTextOnOrders").' ('.$langs->trans("AddCRIfTooLong").')
'; print ''; print '
'; print ''; print "

'; + print '
'; -$db->close(); + + +/* + * Notifications + */ + +print_titre($langs->trans("Notifications")); +print ''; +print ''; +print ''; +print ''; +print ''; +print "\n"; + +print '\n"; + +print '
'.$langs->trans("Parameter").' 
'; +print $langs->trans("YouMayFindNotificationsFeaturesIntoModuleNotification").'
'; +print '
'; +print "
'; + + llxFooter(); + +$db->close(); diff --git a/htdocs/comm/askpricesupplier/card.php b/htdocs/comm/askpricesupplier/card.php index cbd0436e2ef..3a3b283f8e9 100644 --- a/htdocs/comm/askpricesupplier/card.php +++ b/htdocs/comm/askpricesupplier/card.php @@ -1337,7 +1337,7 @@ if ($action == 'create') require_once DOL_DOCUMENT_ROOT . '/core/class/notify.class.php'; $notify = new Notify($db); $text .= '
'; - $text .= $notify->confirmMessage('ASKPRICESUPPLIER_VALIDATE', $object->socid); + $text .= $notify->confirmMessage('ASKPRICESUPPLIER_VALIDATE', $object->socid, $object); } if (! $error) diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index c9d5170f7e6..be60d721d6a 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -1671,7 +1671,7 @@ if ($action == 'create') require_once DOL_DOCUMENT_ROOT . '/core/class/notify.class.php'; $notify = new Notify($db); $text .= '
'; - $text .= $notify->confirmMessage('PROPAL_VALIDATE', $object->socid); + $text .= $notify->confirmMessage('PROPAL_VALIDATE', $object->socid, $object); } if (! $error) diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index aa72ec9bf68..c091817d606 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -1600,7 +1600,7 @@ if ($action == 'create' && $user->rights->commande->creer) require_once DOL_DOCUMENT_ROOT . '/core/class/notify.class.php'; $notify = new Notify($db); $text .= '
'; - $text .= $notify->confirmMessage('ORDER_VALIDATE', $object->socid); + $text .= $notify->confirmMessage('ORDER_VALIDATE', $object->socid, $object); } $qualified_for_stock_change=0; @@ -2045,7 +2045,7 @@ if ($action == 'create' && $user->rights->commande->creer) // Total HT print '' . $langs->trans('AmountHT') . ''; - print '' . price($object->total_ht, 1, '', 1, - 1, - 1, $conf->currency) . ''; + print '' . price($object->total_ht, 1, '', 1, - 1, - 1, $conf->currency) . ''; // Margin Infos if (! empty($conf->margin->enabled)) { @@ -2057,23 +2057,23 @@ if ($action == 'create' && $user->rights->commande->creer) print ''; - // Total TVA - print '' . $langs->trans('AmountVAT') . '' . price($object->total_tva, 1, '', 1, - 1, - 1, $conf->currency) . ''; + // Total VAT + print '' . $langs->trans('AmountVAT') . '' . price($object->total_tva, 1, '', 1, - 1, - 1, $conf->currency) . ''; // Amount Local Taxes if ($mysoc->localtax1_assuj == "1" || $object->total_localtax1 != 0) // Localtax1 { print '' . $langs->transcountry("AmountLT1", $mysoc->country_code) . ''; - print '' . price($object->total_localtax1, 1, '', 1, - 1, - 1, $conf->currency) . ''; + print '' . price($object->total_localtax1, 1, '', 1, - 1, - 1, $conf->currency) . ''; } if ($mysoc->localtax2_assuj == "1" || $object->total_localtax2 != 0) // Localtax2 IRPF { print '' . $langs->transcountry("AmountLT2", $mysoc->country_code) . ''; - print '' . price($object->total_localtax2, 1, '', 1, - 1, - 1, $conf->currency) . ''; + print '' . price($object->total_localtax2, 1, '', 1, - 1, - 1, $conf->currency) . ''; } // Total TTC - print '' . $langs->trans('AmountTTC') . '' . price($object->total_ttc, 1, '', 1, - 1, - 1, $conf->currency) . ''; + print '' . $langs->trans('AmountTTC') . '' . price($object->total_ttc, 1, '', 1, - 1, - 1, $conf->currency) . ''; // Statut print '' . $langs->trans('Status') . '' . $object->getLibStatut(4) . ''; diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index f87f797509b..e8f3bde2fd9 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -2587,7 +2587,7 @@ if ($action == 'create') require_once DOL_DOCUMENT_ROOT . '/core/class/notify.class.php'; $notify = new Notify($db); $text .= '
'; - $text .= $notify->confirmMessage('BILL_VALIDATE', $object->socid); + $text .= $notify->confirmMessage('BILL_VALIDATE', $object->socid, $object); } $formquestion = array(); diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 6dd908812b7..55bd1f37093 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -395,12 +395,13 @@ class Form $htmltext=str_replace("\n","",$htmltext); $htmltext=str_replace('"',""",$htmltext); - if ($tooltipon == 2 || $tooltipon == 3) $paramfortooltipimg=' class="classfortooltip'.($extracss?' '.$extracss:'').'" title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on td img tag to store tooltip + if ($tooltipon == 2 || $tooltipon == 3) $paramfortooltipimg=' class="classfortooltip inline-block'.($extracss?' '.$extracss:'').'" title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on td img tag to store tooltip else $paramfortooltipimg =($extracss?' class="'.$extracss.'"':''); // Attribut to put on td text tag - if ($tooltipon == 1 || $tooltipon == 3) $paramfortooltiptd=' class="classfortooltip'.($extracss?' '.$extracss:'').'" title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on td tag to store tooltip + if ($tooltipon == 1 || $tooltipon == 3) $paramfortooltiptd=' class="classfortooltip inline-block'.($extracss?' '.$extracss:'').'" title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on td tag to store tooltip else $paramfortooltiptd =($extracss?' class="'.$extracss.'"':''); // Attribut to put on td text tag $s=""; if (empty($notabs)) $s.=''; + elseif ($notabs == 2) $s.='
'; if ($direction < 0) { $s.='<'.$tag.$paramfortooltipimg; if ($tag == 'td') { @@ -411,8 +412,8 @@ class Form // Use another method to help avoid having a space in value in order to use this value with jquery // TODO add this in css //if ($text != '') $s.='<'.$tag.$paramfortooltiptd.'>'.(($direction < 0)?' ':'').$text.(($direction > 0)?' ':'').''; - $paramfortooltiptd.= (($direction < 0)?' style="padding-left: 3px !important;"':''); - $paramfortooltiptd.= (($direction > 0)?' style="padding-right: 3px !important;"':''); + $paramfortooltiptd.= (($direction < 0)?' class="inline-block" style="padding-left: 3px !important;"':''); + $paramfortooltiptd.= (($direction > 0)?' class="inline-block" style="padding-right: 3px !important;"':''); if ((string) $text != '') $s.='<'.$tag.$paramfortooltiptd.'>'.$text.''; if ($direction > 0) { $s.='<'.$tag.$paramfortooltipimg; @@ -422,6 +423,7 @@ class Form $s.= '>'.$img.''; } if (empty($notabs)) $s.='
'; + elseif ($notabs == 2) $s.=''; return $s; } @@ -583,7 +585,7 @@ class Form $sql.= " FROM ".MAIN_DB_PREFIX."c_incoterms"; $sql.= " WHERE active = 1"; $sql.= " ORDER BY code ASC"; - + dol_syslog(get_class($this)."::select_incoterm", LOG_DEBUG); $resql=$this->db->query($sql); if ($resql) @@ -593,14 +595,14 @@ class Form include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; $out .= ajax_combobox($htmlname, $events); } - + if (!empty($page)) { $out .= '
'; $out .= ''; $out .= ''; } - + $out.= ''; - + $out .= ''; - - if (!empty($page)) + + if (!empty($page)) { $out .= '
'; } diff --git a/htdocs/core/class/notify.class.php b/htdocs/core/class/notify.class.php index db88671f7ff..1a024c61552 100644 --- a/htdocs/core/class/notify.class.php +++ b/htdocs/core/class/notify.class.php @@ -61,14 +61,15 @@ class Notify * * @param string $action Id of action in llx_c_action_trigger * @param int $socid Id of third party + * @param Object $object Object the notification is about * @return string Message */ - function confirmMessage($action,$socid) + function confirmMessage($action,$socid,$object) { global $langs; $langs->load("mails"); - $nb=$this->countDefinedNotifications($action,$socid); + $nb=$this->countDefinedNotifications($action,$socid,$object); if ($nb <= 0) $texte=img_object($langs->trans("Notifications"),'email').' '.$langs->trans("NoNotificationsWillBeSent"); if ($nb == 1) $texte=img_object($langs->trans("Notifications"),'email').' '.$langs->trans("ANotificationsWillBeSent"); if ($nb >= 2) $texte=img_object($langs->trans("Notifications"),'email').' '.$langs->trans("SomeNotificationsWillBeSent",$nb); @@ -76,22 +77,25 @@ class Notify } /** - * Return number of notifications activated for action code and third party + * Return number of notifications activated for action code (and third party) * - * @param string $action Code of action in llx_c_action_trigger (new usage) or Id of action in llx_c_action_trigger (old usage) - * @param int $socid Id of third party - * @return int <0 if KO, nb of notifications sent if OK + * @param string $notifcode Code of action in llx_c_action_trigger (new usage) or Id of action in llx_c_action_trigger (old usage) + * @param int $socid Id of third party or 0 for all thirdparties + * @param Object $object Object the notification is about + * @return int <0 if KO, nb of notifications sent if OK */ - function countDefinedNotifications($action,$socid) + function countDefinedNotifications($notifcode,$socid,$object=null) { global $conf; $error=0; $num=0; + $valueforthreshold = $object->total_ht; + if (! $error) { - $sql = "SELECT n.rowid"; + $sql = "SELECT COUNT(n.rowid) as nb"; $sql.= " FROM ".MAIN_DB_PREFIX."notify_def as n,"; $sql.= " ".MAIN_DB_PREFIX."socpeople as c,"; $sql.= " ".MAIN_DB_PREFIX."c_action_trigger as a,"; @@ -99,22 +103,23 @@ class Notify $sql.= " WHERE n.fk_contact = c.rowid"; $sql.= " AND a.rowid = n.fk_action"; $sql.= " AND n.fk_soc = s.rowid"; - if (is_numeric($action)) $sql.= " AND n.fk_action = ".$action; // Old usage - else $sql.= " AND a.code = '".$action."'"; // New usage + if (is_numeric($notifcode)) $sql.= " AND n.fk_action = ".$notifcode; // Old usage + else $sql.= " AND a.code = '".$notifcode."'"; // New usage $sql.= " AND s.entity IN (".getEntity('societe', 1).")"; - $sql.= " AND s.rowid = ".$socid; + if ($socid > 0) $sql.= " AND s.rowid = ".$socid; - dol_syslog(get_class($this)."::countDefinedNotifications ".$action.", ".$socid."", LOG_DEBUG); + dol_syslog(get_class($this)."::countDefinedNotifications ".$notifcode.", ".$socid."", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { - $num = $this->db->num_rows($resql); + $obj = $this->db->fetch_object($resql); + if ($obj) $num = $obj->nb; } else { $error++; - $this->error=$this->db->error.' sql='.$sql; + $this->error=$this->db->lasterror(); } } @@ -123,12 +128,19 @@ class Notify // List of notifications enabled for fixed email foreach($conf->global as $key => $val) { - if (! preg_match('/^NOTIFICATION_FIXEDEMAIL_'.$action.'/', $key, $reg)) continue; - $num++; + if ($val == '' || ! preg_match('/^NOTIFICATION_FIXEDEMAIL_'.$notifcode.'_THRESHOLD_HIGHER_(.*)$/', $key, $reg)) continue; + + $threshold = (float) $reg[1]; + if ($valueforthreshold <= $threshold) + { + continue; + } + + $tmpemail=explode(',',$val); + $num+=count($tmpemail); } } - // TODO return array with list of email instead of number, + type of notification (contacts or fixed email) if ($error) return -1; return $num; } @@ -137,17 +149,17 @@ class Notify * Check if notification are active for couple action/company. * If yes, send mail and save trace into llx_notify. * - * @param string $action Code of action in llx_c_action_trigger (new usage) or Id of action in llx_c_action_trigger (old usage) - * @param Object $object Object the notification deals on - * @return int <0 if KO, or number of changes if OK + * @param string $notifcode Code of action in llx_c_action_trigger (new usage) or Id of action in llx_c_action_trigger (old usage) + * @param Object $object Object the notification deals on + * @return int <0 if KO, or number of changes if OK */ - function send($action, $object) + function send($notifcode, $object) { global $conf,$langs,$mysoc,$dolibarr_main_url_root; include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - dol_syslog(get_class($this)."::send action=".$action.", object=".$object->id); + dol_syslog(get_class($this)."::send notifcode=".$notifcode.", object=".$object->id); $langs->load("other"); @@ -166,7 +178,20 @@ class Notify $link = ''; $num = 0; - if (! in_array($action, array('BILL_VALIDATE', 'ORDER_VALIDATE', 'PROPAL_VALIDATE', 'FICHINTER_VALIDATE', 'ORDER_SUPPLIER_APPROVE', 'ORDER_SUPPLIER_REFUSE', 'SHIPPING_VALIDATE'))) + if (! in_array( + $notifcode, + array( + 'BILL_VALIDATE', + 'ORDER_VALIDATE', + 'PROPAL_VALIDATE', + 'FICHINTER_VALIDATE', + 'ORDER_SUPPLIER_VALIDATE', + 'ORDER_SUPPLIER_APPROVE', + 'ORDER_SUPPLIER_REFUSE', + 'SHIPPING_VALIDATE' + ) + ) + ) { return 0; } @@ -181,8 +206,8 @@ class Notify $sql.= " ".MAIN_DB_PREFIX."societe as s"; $sql.= " WHERE n.fk_contact = c.rowid AND a.rowid = n.fk_action"; $sql.= " AND n.fk_soc = s.rowid"; - if (is_numeric($action)) $sql.= " AND n.fk_action = ".$action; // Old usage - else $sql.= " AND a.code = '".$action."'"; // New usage + if (is_numeric($notifcode)) $sql.= " AND n.fk_action = ".$notifcode; // Old usage + else $sql.= " AND a.code = '".$notifcode."'"; // New usage $sql .= " AND s.rowid = ".$object->socid; $result = $this->db->query($sql); @@ -197,8 +222,8 @@ class Notify { $obj = $this->db->fetch_object($result); - $sendto = $obj->firstname . " " . $obj->lastname . " <".$obj->email.">"; - $actiondefid = $obj->adid; + $sendto = dolGetFirstLastname($obj->firstname,$obj->lastname) . " <".$obj->email.">"; + $notifcodedefid = $obj->adid; if (dol_strlen($obj->email)) { @@ -210,7 +235,7 @@ class Notify $outputlangs->setDefaultLang($obj->default_lang); } - switch ($action) { + switch ($notifcode) { case 'BILL_VALIDATE': $link='/compta/facture.php?facid='.$object->id; $dir_output = $conf->facture->dir_output; @@ -235,6 +260,14 @@ class Notify $object_type = 'ficheinter'; $mesg = $langs->transnoentitiesnoconv("EMailTextInterventionValidated",$object->ref); break; + case 'ORDER_SUPPLIER_VALIDATE': + $link='/fourn/commande/card.php?id='.$object->id; + $dir_output = $conf->fournisseur->dir_output.'/commande/'; + $object_type = 'order_supplier'; + $mesg = $langs->transnoentitiesnoconv("Hello").",\n\n"; + $mesg.= $langs->transnoentitiesnoconv("EMailTextOrderValidatedBy",$object->ref,$user->getFullName($langs)); + $mesg.= "\n\n".$langs->transnoentitiesnoconv("Sincerely").".\n\n"; + break; case 'ORDER_SUPPLIER_APPROVE': $link='/fourn/commande/card.php?id='.$object->id; $dir_output = $conf->fournisseur->dir_output.'/commande/'; @@ -294,7 +327,7 @@ class Notify if ($mailfile->sendfile()) { $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_soc, fk_contact, type, objet_type, objet_id, email)"; - $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$actiondefid.", ".$object->socid.", ".$obj->cid.", '".$obj->type."', '".$object_type."', ".$object->id.", '".$this->db->escape($obj->email)."')"; + $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$notifcodedefid.", ".$object->socid.", ".$obj->cid.", '".$obj->type."', '".$object_type."', ".$object->id.", '".$this->db->escape($obj->email)."')"; if (! $this->db->query($sql)) { dol_print_error($this->db); @@ -328,113 +361,133 @@ class Notify // Check notification using fixed email if (! $error) { - $param='NOTIFICATION_FIXEDEMAIL_'.$action; - if (! empty($conf->global->$param)) - { - $sendto = $conf->global->$param; - $actiondefid = dol_getIdFromCode($this->db, $action, 'c_action_trigger', 'code', 'rowid'); - if ($actiondefid <= 0) dol_print_error($this->db, 'Failed to get id from code'); + foreach($conf->global as $key => $val) + { + if ($val == '' || ! preg_match('/^NOTIFICATION_FIXEDEMAIL_'.$notifcode.'_THRESHOLD_HIGHER_(.*)$/', $key, $reg)) continue; - $object_type = ''; - $link = ''; - $num++; + $threshold = (float) $reg[1]; + if ($object->total_ht <= $threshold) + { + dol_syslog("A notification is requested for notifcode = ".$notifcode." but amount = ".$object->total_ht." so lower than threshold = ".$threshold.". We discard this notification"); + continue; + } - switch ($action) { - case 'BILL_VALIDATE': - $link='/compta/facture.php?facid='.$object->id; - $dir_output = $conf->facture->dir_output; - $object_type = 'facture'; - $mesg = $langs->transnoentitiesnoconv("EMailTextInvoiceValidated",$object->ref); - break; - case 'ORDER_VALIDATE': - $link='/commande/card.php?id='.$object->id; - $dir_output = $conf->commande->dir_output; - $object_type = 'order'; - $mesg = $langs->transnoentitiesnoconv("EMailTextOrderValidated",$object->ref); - break; - case 'PROPAL_VALIDATE': - $link='/comm/propal.php?id='.$object->id; - $dir_output = $conf->propal->dir_output; - $object_type = 'propal'; - $mesg = $langs->transnoentitiesnoconv("EMailTextProposalValidated",$object->ref); - break; - case 'FICHINTER_VALIDATE': - $link='/fichinter/card.php?id='.$object->id; - $dir_output = $conf->facture->dir_output; - $object_type = 'ficheinter'; - $mesg = $langs->transnoentitiesnoconv("EMailTextInterventionValidated",$object->ref); - break; - case 'ORDER_SUPPLIER_APPROVE': - $link='/fourn/commande/card.php?id='.$object->id; - $dir_output = $conf->fournisseur->dir_output.'/commande/'; - $object_type = 'order_supplier'; - $mesg = $langs->transnoentitiesnoconv("Hello").",\n\n"; - $mesg.= $langs->transnoentitiesnoconv("EMailTextOrderApprovedBy",$object->ref,$user->getFullName($langs)); - $mesg.= "\n\n".$langs->transnoentitiesnoconv("Sincerely").".\n\n"; - break; - case 'ORDER_SUPPLIER_REFUSE': - $link='/fourn/commande/card.php?id='.$object->id; - $dir_output = $conf->fournisseur->dir_output.'/commande/'; - $object_type = 'order_supplier'; - $mesg = $langs->transnoentitiesnoconv("Hello").",\n\n"; - $mesg.= $langs->transnoentitiesnoconv("EMailTextOrderRefusedBy",$object->ref,$user->getFullName($langs)); - $mesg.= "\n\n".$langs->transnoentitiesnoconv("Sincerely").".\n\n"; - break; - case 'SHIPPING_VALIDATE': - $dir_output = $conf->expedition->dir_output.'/sending/'; - $object_type = 'order_supplier'; - $mesg = $langs->transnoentitiesnoconv("EMailTextExpeditionValidated",$object->ref); - break; - } - $ref = dol_sanitizeFileName($object->ref); - $pdf_path = $dir_output."/".$ref."/".$ref.".pdf"; - if (! dol_is_file($pdf_path)) - { - // We can't add PDF as it is not generated yet. - $filepdf = ''; - } - else - { - $filepdf = $pdf_path; - } + $param='NOTIFICATION_FIXEDEMAIL_'.$notifcode.'_THRESHOLD_HIGHER_'.$reg[1]; + //if (! empty($conf->global->$param)) + //{ + $sendto = $conf->global->$param; + $notifcodedefid = dol_getIdFromCode($this->db, $notifcode, 'c_action_trigger', 'code', 'rowid'); + if ($notifcodedefid <= 0) dol_print_error($this->db, 'Failed to get id from code'); - $subject = '['.$application.'] '.$langs->transnoentitiesnoconv("DolibarrNotification"); + $object_type = ''; + $link = ''; + $num++; - $message = $langs->transnoentities("YouReceiveMailBecauseOfNotification",$application,$mysoc->name)."\n"; - $message.= $langs->transnoentities("YouReceiveMailBecauseOfNotification2",$application,$mysoc->name)."\n"; - $message.= "\n"; - $message.= $mesg; - if ($link) $message=dol_concatdesc($message,$urlwithroot.$link); - - $mailfile = new CMailFile( - $subject, - $sendto, - $replyto, - $message, - array($file), - array($mimefile), - array($filename[count($filename)-1]), - '', - '', - 0, - -1 - ); - - if ($mailfile->sendfile()) - { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_soc, fk_contact, type, objet_type, objet_id, email)"; - $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$actiondefid.", ".$object->socid.", null, '".$obj->type."', '".$object_type."', ".$object->id.", '".$this->db->escape($conf->global->$param)."')"; - if (! $this->db->query($sql)) - { - dol_print_error($this->db); + switch ($notifcode) { + case 'BILL_VALIDATE': + $link='/compta/facture.php?facid='.$object->id; + $dir_output = $conf->facture->dir_output; + $object_type = 'facture'; + $mesg = $langs->transnoentitiesnoconv("EMailTextInvoiceValidated",$object->ref); + break; + case 'ORDER_VALIDATE': + $link='/commande/card.php?id='.$object->id; + $dir_output = $conf->commande->dir_output; + $object_type = 'order'; + $mesg = $langs->transnoentitiesnoconv("EMailTextOrderValidated",$object->ref); + break; + case 'PROPAL_VALIDATE': + $link='/comm/propal.php?id='.$object->id; + $dir_output = $conf->propal->dir_output; + $object_type = 'propal'; + $mesg = $langs->transnoentitiesnoconv("EMailTextProposalValidated",$object->ref); + break; + case 'FICHINTER_VALIDATE': + $link='/fichinter/card.php?id='.$object->id; + $dir_output = $conf->facture->dir_output; + $object_type = 'ficheinter'; + $mesg = $langs->transnoentitiesnoconv("EMailTextInterventionValidated",$object->ref); + break; + case 'ORDER_SUPPLIER_VALIDATE': + $link='/fourn/commande/card.php?id='.$object->id; + $dir_output = $conf->fournisseur->dir_output.'/commande/'; + $object_type = 'order_supplier'; + $mesg = $langs->transnoentitiesnoconv("Hello").",\n\n"; + $mesg.= $langs->transnoentitiesnoconv("EMailTextOrderValidatedBy",$object->ref,$user->getFullName($langs)); + $mesg.= "\n\n".$langs->transnoentitiesnoconv("Sincerely").".\n\n"; + break; + case 'ORDER_SUPPLIER_APPROVE': + $link='/fourn/commande/card.php?id='.$object->id; + $dir_output = $conf->fournisseur->dir_output.'/commande/'; + $object_type = 'order_supplier'; + $mesg = $langs->transnoentitiesnoconv("Hello").",\n\n"; + $mesg.= $langs->transnoentitiesnoconv("EMailTextOrderApprovedBy",$object->ref,$user->getFullName($langs)); + $mesg.= "\n\n".$langs->transnoentitiesnoconv("Sincerely").".\n\n"; + break; + case 'ORDER_SUPPLIER_REFUSE': + $link='/fourn/commande/card.php?id='.$object->id; + $dir_output = $conf->fournisseur->dir_output.'/commande/'; + $object_type = 'order_supplier'; + $mesg = $langs->transnoentitiesnoconv("Hello").",\n\n"; + $mesg.= $langs->transnoentitiesnoconv("EMailTextOrderRefusedBy",$object->ref,$user->getFullName($langs)); + $mesg.= "\n\n".$langs->transnoentitiesnoconv("Sincerely").".\n\n"; + break; + case 'SHIPPING_VALIDATE': + $dir_output = $conf->expedition->dir_output.'/sending/'; + $object_type = 'order_supplier'; + $mesg = $langs->transnoentitiesnoconv("EMailTextExpeditionValidated",$object->ref); + break; } - } - else - { - $error++; - $this->errors[]=$mailfile->error; - } - } + $ref = dol_sanitizeFileName($object->ref); + $pdf_path = $dir_output."/".$ref."/".$ref.".pdf"; + if (! dol_is_file($pdf_path)) + { + // We can't add PDF as it is not generated yet. + $filepdf = ''; + } + else + { + $filepdf = $pdf_path; + } + + $subject = '['.$application.'] '.$langs->transnoentitiesnoconv("DolibarrNotification"); + + $message = $langs->transnoentities("YouReceiveMailBecauseOfNotification",$application,$mysoc->name)."\n"; + $message.= $langs->transnoentities("YouReceiveMailBecauseOfNotification2",$application,$mysoc->name)."\n"; + $message.= "\n"; + $message.= $mesg; + if ($link) $message=dol_concatdesc($message,$urlwithroot.$link); + + $mailfile = new CMailFile( + $subject, + $sendto, + $replyto, + $message, + array($file), + array($mimefile), + array($filename[count($filename)-1]), + '', + '', + 0, + -1 + ); + + if ($mailfile->sendfile()) + { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_soc, fk_contact, type, objet_type, objet_id, email)"; + $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$notifcodedefid.", ".$object->socid.", null, 'email', '".$object_type."', ".$object->id.", '".$this->db->escape($conf->global->$param)."')"; + if (! $this->db->query($sql)) + { + dol_print_error($this->db); + } + } + else + { + $error++; + $this->errors[]=$mailfile->error; + } + //} + } } if (! $error) return $num; diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index a54cb5fcc79..3901e3231df 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -386,6 +386,12 @@ function dolibarr_del_const($db, $name, $entity=1) { global $conf; + if (empty($name)) + { + dol_print_error('','Error call dolibar_del_const with parameter name empty'); + return -1; + } + $sql = "DELETE FROM ".MAIN_DB_PREFIX."const"; $sql.= " WHERE (".$db->decrypt('name')." = '".$db->escape($name)."'"; if (is_numeric($name)) $sql.= " OR rowid = '".$db->escape($name)."'"; @@ -438,7 +444,7 @@ function dolibarr_get_const($db, $name, $entity=1) /** - * Insert a parameter (key,value) into database. + * Insert a parameter (key,value) into database (delete old key then insert it again). * * @param DoliDB $db Database handler * @param string $name Name of constant diff --git a/htdocs/core/triggers/interface_50_modNotification_Notification.class.php b/htdocs/core/triggers/interface_50_modNotification_Notification.class.php index 940e3a1712d..160387f5fde 100644 --- a/htdocs/core/triggers/interface_50_modNotification_Notification.class.php +++ b/htdocs/core/triggers/interface_50_modNotification_Notification.class.php @@ -40,6 +40,7 @@ class InterfaceNotification extends DolibarrTriggers 'ORDER_VALIDATE', 'PROPAL_VALIDATE', 'FICHINTER_VALIDATE', + 'ORDER_SUPPLIER_VALIDATE', 'ORDER_SUPPLIER_APPROVE', 'ORDER_SUPPLIER_REFUSE', 'SHIPPING_VALIDATE' @@ -84,8 +85,8 @@ class InterfaceNotification extends DolibarrTriggers $sql = "SELECT rowid, code, label, description, elementtype"; $sql.= " FROM ".MAIN_DB_PREFIX."c_action_trigger"; - $sql.= $this->db->order("elementtype, code"); - dol_syslog("Get list of notifications", LOG_DEBUG); + $sql.= $this->db->order("rang, elementtype, code"); + dol_syslog("getListOfManagedEvents Get list of notifications", LOG_DEBUG); $resql=$this->db->query($sql); if ($resql) { @@ -103,13 +104,14 @@ class InterfaceNotification extends DolibarrTriggers { //print 'xx'.$obj->code; $element=$obj->elementtype; + + // Exclude events if related module is disabled if ($element == 'order_supplier' && empty($conf->fournisseur->enabled)) $qualified=0; elseif ($element == 'invoice_supplier' && empty($conf->fournisseur->enabled)) $qualified=0; elseif ($element == 'withdraw' && empty($conf->prelevement->enabled)) $qualified=0; elseif ($element == 'shipping' && empty($conf->expedition->enabled)) $qualified=0; elseif ($element == 'member' && empty($conf->adherent->enabled)) $qualified=0; - elseif (! in_array($element,array('order_supplier','invoice_supplier','withdraw','shipping','member')) - && empty($conf->$element->enabled)) $qualified=0; + elseif (! in_array($element,array('order_supplier','invoice_supplier','withdraw','shipping','member')) && empty($conf->$element->enabled)) $qualified=0; } if ($qualified) diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index e7f98d345f4..fa451f74f1c 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -602,7 +602,7 @@ if ($action == 'create') print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:'')); print ''; } - + // Other attributes $parameters=array('colspan' => ' colspan="3"'); $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$expe,$action); // Note that $action and $object may have been modified by hook @@ -934,7 +934,7 @@ else if ($id || $ref) require_once DOL_DOCUMENT_ROOT .'/core/class/notify.class.php'; $notify=new Notify($db); $text.='
'; - $text.=$notify->confirmMessage('SHIPPING_VALIDATE',$object->socid); + $text.=$notify->confirmMessage('SHIPPING_VALIDATE',$object->socid, $object); } print $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id,$langs->trans('ValidateSending'),$text,'confirm_valid','',0,1); @@ -1193,7 +1193,7 @@ else if ($id || $ref) // Incoterms if (!empty($conf->incoterm->enabled)) - { + { print ''; print ''; print ''; print '
'; print $langs->trans('IncotermLabel'); @@ -1207,7 +1207,7 @@ else if ($id || $ref) { print $form->textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1); } - else + else { print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:''), $_SERVER['PHP_SELF'].'?id='.$object->id); } diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 3f6877d8d14..a9a824a8b5d 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1657,7 +1657,7 @@ elseif (! empty($object->id)) require_once DOL_DOCUMENT_ROOT .'/core/class/notify.class.php'; $notify=new Notify($db); $text.='
'; - $text.=$notify->confirmMessage('ORDER_SUPPLIER_APPROVE', $object->socid); + $text.=$notify->confirmMessage('ORDER_SUPPLIER_APPROVE', $object->socid, $object); } $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ValidateOrder'), $text, 'confirm_valid', '', 0, 1); diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index cd6a9f64abd..a48534b4c24 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -1664,7 +1664,7 @@ else require_once DOL_DOCUMENT_ROOT .'/core/class/notify.class.php'; $notify=new Notify($db); $text.='
'; - $text.=$notify->confirmMessage('BILL_SUPPLIER_VALIDATE',$object->socid); + $text.=$notify->confirmMessage('BILL_SUPPLIER_VALIDATE',$object->socid, $object); }*/ $formquestion=array(); diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index d4e56a980a6..633b13f9ad2 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -373,3 +373,45 @@ INSERT INTO llx_c_incoterms (code, libelle, active) VALUES ('DDP', 'Delivered Du -- Extrafields fk_object must be unique (1-1 relation) ALTER TABLE llx_societe_extrafields DROP INDEX idx_societe_extrafields; ALTER TABLE llx_societe_extrafields ADD UNIQUE INDEX uk_societe_extrafields (fk_object); + + +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILL_VALIDATE','Customer invoice validated','Executed when a customer invoice is approved','facture',6); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('ORDER_SUPPLIER_APPROVE','Supplier order request approved','Executed when a supplier order is approved','order_supplier',12); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('ORDER_SUPPLIER_REFUSE','Supplier order request refused','Executed when a supplier order is refused','order_supplier',13); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('ORDER_VALIDATE','Customer order validate','Executed when a customer order is validated','commande',4); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_VALIDATE','Customer proposal validated','Executed when a commercial proposal is validated','propal',2); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('COMPANY_SENTBYMAIL','Mails sent from third party card','Executed when you send email from third party card','societe',1); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('COMPANY_CREATE','Third party created','Executed when a third party is created','societe',1); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('CONTRACT_VALIDATE','Contract validated','Executed when a contract is validated','contrat',18); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_SENTBYMAIL','Commercial proposal sent by mail','Executed when a commercial proposal is sent by mail','propal',3); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('ORDER_SENTBYMAIL','Customer order sent by mail','Executed when a customer order is sent by mail ','commande',5); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILL_PAYED','Customer invoice payed','Executed when a customer invoice is payed','facture',7); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILL_CANCEL','Customer invoice canceled','Executed when a customer invoice is conceled','facture',8); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILL_SENTBYMAIL','Customer invoice sent by mail','Executed when a customer invoice is sent by mail','facture',9); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('ORDER_SUPPLIER_VALIDATE','Supplier order validated','Executed when a supplier order is validated','order_supplier',11); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('ORDER_SUPPLIER_SENTBYMAIL','Supplier order sent by mail','Executed when a supplier order is sent by mail','order_supplier',14); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILL_SUPPLIER_VALIDATE','Supplier invoice validated','Executed when a supplier invoice is validated','invoice_supplier',15); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILL_SUPPLIER_PAYED','Supplier invoice payed','Executed when a supplier invoice is payed','invoice_supplier',16); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILL_SUPPLIER_SENTBYMAIL','Supplier invoice sent by mail','Executed when a supplier invoice is sent by mail','invoice_supplier',17); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILL_SUPPLIER_CANCELED','Supplier invoice cancelled','Executed when a supplier invoice is cancelled','invoice_supplier',17); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('SHIPPING_VALIDATE','Shipping validated','Executed when a shipping is validated','shipping',20); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('SHIPPING_SENTBYMAIL','Shipping sent by mail','Executed when a shipping is sent by mail','shipping',21); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MEMBER_VALIDATE','Member validated','Executed when a member is validated','member',22); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MEMBER_SUBSCRIPTION','Member subscribed','Executed when a member is subscribed','member',23); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MEMBER_RESILIATE','Member resiliated','Executed when a member is resiliated','member',24); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MEMBER_MODIFY','Member modified','Executed when a member is modified','member',24); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MEMBER_DELETE','Member deleted','Executed when a member is deleted','member',25); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILL_UNVALIDATE','Customer invoice unvalidated','Executed when a customer invoice status set back to draft','facture',10); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('FICHINTER_VALIDATE','Intervention validated','Executed when a intervention is validated','ficheinter',19); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('FICHINTER_CLASSIFY_BILLED','Intervention set billed','Executed when a intervention is set to billed (when option FICHINTER_CLASSIFY_BILLED is set)','ficheinter',19); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('FICHINTER_CLASSIFY_UNBILLED','Intervention set unbilled','Executed when a intervention is set to unbilled (when option FICHINTER_CLASSIFY_BILLED is set)','ficheinter',19); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('FICHINTER_REOPEN','Intervention opened','Executed when a intervention is re-opened','ficheinter',19); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('FICHINTER_SENTBYMAIL','Intervention sent by mail','Executed when a intervention is sent by mail','ficheinter',19); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROJECT_CREATE','Project creation','Executed when a project is created','project',30); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLOSE_SIGNED','Customer proposal closed signed','Executed when a customer proposal is closed signed','propal',2); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLOSE_REFUSED','Customer proposal closed refused','Executed when a customer proposal is closed refused','propal',2); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLASSIFY_BILLED','Customer proposal set billed','Executed when a customer proposal is set to billed','propal',2); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('TASK_CREATE','Task created','Executed when a project task is created','project',35); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('TASK_MODIFY','Task modified','Executed when a project task is modified','project',36); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('TASK_DELETE','Task deleted','Executed when a project task is deleted','project',37); + diff --git a/htdocs/install/mysql/tables/llx_c_action_trigger.sql b/htdocs/install/mysql/tables/llx_c_action_trigger.sql index fa8052d77f9..cbec0c81437 100644 --- a/htdocs/install/mysql/tables/llx_c_action_trigger.sql +++ b/htdocs/install/mysql/tables/llx_c_action_trigger.sql @@ -22,9 +22,9 @@ create table llx_c_action_trigger ( rowid integer AUTO_INCREMENT PRIMARY KEY, + elementtype varchar(16) NOT NULL, code varchar(32) NOT NULL, label varchar(128) NOT NULL, description varchar(255), - elementtype varchar(16) NOT NULL, rang integer DEFAULT 0 )ENGINE=innodb; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index b8590a1fc38..7bb08ba2c0f 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1107,7 +1107,7 @@ ModuleCompanyCodeAquarium=Return an accountancy code built by:
%s followed by ModuleCompanyCodePanicum=Return an empty accountancy code. ModuleCompanyCodeDigitaria=Accountancy code depends on third party code. The code is composed of the character "C" in the first position followed by the first 5 characters of the third party code. UseNotifications=Use notifications -NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined:
* per third parties contacts (customers or suppliers), one third party at time.
* or by setting a global target email address on module setup page. +NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined:
* per third parties contacts (customers or suppliers), one contact at time.
* or by setting a global target email address on module setup page. ModelModules=Documents templates DocumentModelOdt=Generate documents from OpenDocuments templates (.ODT or .ODS files for OpenOffice, KOffice, TextEdit,...) WatermarkOnDraft=Watermark on draft document @@ -1601,3 +1601,8 @@ ExpenseReportsSetup=Setup of module Expense Reports TemplatePDFExpenseReports=Document templates to generate expense report document NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. +YouMayFindNotificationsFeaturesIntoModuleNotification=You may find options for EMail notifications by enabling and configuring the module "Notification". +ListOfNotificationsPerContact=List of notifications per contact* +ListOfFixedNotifications=List of fixed notifications +GoOntoContactCardToAddMore=Go on the tab "Notifications" of a thirdparty contact to add or remove notifications for contact +Threshold=Threshold diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index e84c7653712..b1cf1d714af 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -12,6 +12,7 @@ Notify_FICHINTER_VALIDATE=Intervention validated Notify_FICHINTER_SENTBYMAIL=Intervention sent by mail Notify_BILL_VALIDATE=Customer invoice validated Notify_BILL_UNVALIDATE=Customer invoice unvalidated +Notify_ORDER_SUPPLIER_VALIDATE=Supplier order recorded Notify_ORDER_SUPPLIER_APPROVE=Supplier order approved Notify_ORDER_SUPPLIER_REFUSE=Supplier order refused Notify_ORDER_VALIDATE=Customer order validated @@ -170,6 +171,7 @@ EMailTextInvoiceValidated=The invoice %s has been validated. EMailTextProposalValidated=The proposal %s has been validated. EMailTextOrderValidated=The order %s has been validated. EMailTextOrderApproved=The order %s has been approved. +EMailTextOrderValidatedBy=The order %s has been recorded by %s. EMailTextOrderApprovedBy=The order %s has been approved by %s. EMailTextOrderRefused=The order %s has been refused. EMailTextOrderRefusedBy=The order %s has been refused by %s. diff --git a/htdocs/societe/notify/card.php b/htdocs/societe/notify/card.php index 0a2a4d35032..69920a7e5ce 100644 --- a/htdocs/societe/notify/card.php +++ b/htdocs/societe/notify/card.php @@ -24,6 +24,7 @@ */ require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/notify.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/triggers/interface_50_modNotification_Notification.class.php'; @@ -173,33 +174,8 @@ if ($result > 0) print '
'.$langs->trans("NbOfActiveNotifications").''; - $nb=0; - // List of per contact notifications - $sql = "SELECT COUNT(n.rowid) as nb"; - $sql.= " FROM ".MAIN_DB_PREFIX."notify_def as n"; - $sql.= " WHERE fk_soc = ".$object->id; - $resql=$db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - $i = 0; - while ($i < $num) - { - $obj = $db->fetch_object($resql); - $nb=$obj->nb; - $i++; - } - } - else { - dol_print_error($db); - } - // List of notifications enabled for fixed email - foreach($conf->global as $key => $val) - { - if (! preg_match('/^NOTIFICATION_FIXEDEMAIL_(.*)/', $key, $reg)) continue; - $listtmp=explode(',',$val); - $nb+=count($listtmp); - } + $notify=new Notify($db); + $nb = $notify->countDefinedNotifications('', $object->id); print $nb; print '
'; diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index e6dbf78d6a0..11c72f88586 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1394,9 +1394,9 @@ div.tabsElem { margin-top: 8px; } /* To avoid overlap of tabs when not browser div.tabBar { color: #; padding-top: 9px; - padding-left: px; - padding-right: px; - padding-bottom: 8px; + padding-left: px; + padding-right: px; + padding-bottom: 12px; margin: 0px 0px 14px 0px; -moz-border-radius:6px; -webkit-border-radius: 6px; From dbeccf765307252dfec7a8576e80ff158db9a9f8 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 18 Mar 2015 21:56:00 +0100 Subject: [PATCH 326/429] Update work --- htdocs/compta/dons/card.php | 97 ++++++++++++++++++++++++++++++++----- htdocs/projet/element.php | 23 ++++++--- 2 files changed, 103 insertions(+), 17 deletions(-) diff --git a/htdocs/compta/dons/card.php b/htdocs/compta/dons/card.php index d20af7f8ba6..88331bb5498 100644 --- a/htdocs/compta/dons/card.php +++ b/htdocs/compta/dons/card.php @@ -404,7 +404,7 @@ if (! empty($id) && $action == 'edit') print $formcompany->select_ziptown((isset($_POST["zipcode"])?$_POST["zipcode"]:$object->zip),'zipcode',array('town','selectcountry_id','state_id'),6); print ' '; print $formcompany->select_ziptown((isset($_POST["town"])?$_POST["town"]:$object->town),'town',array('zipcode','selectcountry_id','state_id')); - print ''; + print ''; // Country print ''.$langs->trans('Country').''; @@ -478,26 +478,101 @@ if (! empty($id) && $action != 'edit') print ''; // Date - print ''.$langs->trans("Date").''; + print ''.$langs->trans("Date").''; print dol_print_date($object->date,"day"); print ""; - print "".''.$langs->trans("Amount").''.price($object->amount,0,$langs,0,0,-1,$conf->currency).''; + print ''.$langs->trans("Amount").''; + print price($object->amount,0,$langs,0,0,-1,$conf->currency); + print ''; - print "".$langs->trans("PublicDonation").""; + print ''.$langs->trans("PublicDonation").''; print yn($object->public); - print "\n"; + print ''; - print "".''.$langs->trans("Company").''.$object->societe.''; - print "".''.$langs->trans("Lastname").''.$object->lastname.''; - print "".''.$langs->trans("Firstname").''.$object->firstname.''; - print "".''.$langs->trans("Address").''.dol_nl2br($object->address).''; + print "".''.$langs->trans("Company").''.$object->societe.''; + print "".''.$langs->trans("Lastname").''.$object->lastname.''; + print "".''.$langs->trans("Firstname").''.$object->firstname.''; + print "".''.$langs->trans("Address").''.dol_nl2br($object->address).''; + + $rowspan=6; + if (! empty($conf->projet->enabled)) $rowspan++; + print ''; + + /* + * Payments + */ + $sql = "SELECT p.rowid, p.num_payment, datep as dp, p.amount,"; + $sql.= "c.code as type_code,c.libelle as paiement_type"; + $sql.= " FROM ".MAIN_DB_PREFIX."payment_donation as p"; + $sql.= ", ".MAIN_DB_PREFIX."c_paiement as c "; + $sql.= ", ".MAIN_DB_PREFIX."don as d"; + $sql.= " WHERE d.rowid = '".$rowid."'"; + $sql.= " AND p.fk_donation = d.rowid"; + $sql.= " AND d.entity = ".$conf->entity; + $sql.= " AND p.fk_typepayment = c.id"; + $sql.= " ORDER BY dp DESC"; + + //print $sql; + $resql = $db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + $i = 0; $total = 0; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + $var=True; + while ($i < $num) + { + $objp = $db->fetch_object($resql); + $var=!$var; + print "'; + print '\n"; + $labeltype=$langs->trans("PaymentType".$object->type_code)!=("PaymentType".$object->type_code)?$langs->trans("PaymentType".$object->type_code):$object->paiement_type; + print "\n"; + print '\n"; + print ""; + $totalpaid += $object->amount; + $i++; + } + + if ($object->paid == 0) + { + print "\n"; + print "\n"; + + $remaintopay = $object->amount - $totalpaid; + + print ""; + print "\n"; + } + print "
'.$langs->trans("RefPayment").''.$langs->trans("Date").''.$langs->trans("Type").''.$langs->trans("Amount").' 
"; + print ''.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.''.dol_print_date($db->jdate($objp->dp),'day')."".$labeltype.' '.$object->num_paiement."'.price($object->amount)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("AlreadyPaid")." :".price($totalpaye)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("AmountExpected")." :".price($object->amount)." ".$langs->trans("Currency".$conf->currency)."
".$langs->trans("RemainderToPay")." :".price($resteapayer)." ".$langs->trans("Currency".$conf->currency)."
"; + $db->free($resql); + } + else + { + dol_print_error($db); + } + print ""; + + print ""; // Zip / Town - print "".''.$langs->trans("Zip").' / '.$langs->trans("Town").''.$object->zip.($object->zip && $object->town?' / ':'').$object->town.''; + print ''.$langs->trans("Zip").' / '.$langs->trans("Town").''; + print $object->zip.($object->zip && $object->town?' / ':'').$object->town.''; + + // Country - print ''.$langs->trans('Country').''; + print ''.$langs->trans('Country').''; if (! empty($object->country_code)) { $img=picto_from_langcode($object->country_code); diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 3075d128066..a49914b538a 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -3,6 +3,7 @@ * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2012 Juanjo Menent + * Copyright (C) 2015 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -41,16 +42,18 @@ if (! empty($conf->ficheinter->enabled)) require_once DOL_DOCUMENT_ROOT.'/fichi if (! empty($conf->deplacement->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/deplacement/class/deplacement.class.php'; if (! empty($conf->expensereport->enabled)) require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php'; if (! empty($conf->agenda->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; +if (! empty($conf->don->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; $langs->load("projects"); $langs->load("companies"); $langs->load("suppliers"); -if (! empty($conf->facture->enabled)) $langs->load("bills"); -if (! empty($conf->commande->enabled)) $langs->load("orders"); -if (! empty($conf->propal->enabled)) $langs->load("propal"); -if (! empty($conf->ficheinter->enabled)) $langs->load("interventions"); -if (! empty($conf->deplacement->enabled)) $langs->load("trips"); +if (! empty($conf->facture->enabled)) $langs->load("bills"); +if (! empty($conf->commande->enabled)) $langs->load("orders"); +if (! empty($conf->propal->enabled)) $langs->load("propal"); +if (! empty($conf->ficheinter->enabled)) $langs->load("interventions"); +if (! empty($conf->deplacement->enabled)) $langs->load("trips"); if (! empty($conf->expensereport->enabled)) $langs->load("trips"); +if (! empty($conf->expensereport->enabled)) $langs->load("donations"); $id=GETPOST('id','int'); $ref=GETPOST('ref','alpha'); @@ -244,7 +247,15 @@ $listofreferent=array( 'table'=>'actioncomm', 'datefieldname'=>'datep', 'disableamount'=>1, - 'test'=>$conf->agenda->enabled && $user->rights->agenda->allactions->lire) + 'test'=>$conf->agenda->enabled && $user->rights->agenda->allactions->lire), +'donation'=>array( + 'name'=>"Donation", + 'title'=>"ListDonationsAssociatedProject", + 'class'=>'Don', + 'table'=>'don', + 'datefieldname'=>'date', + 'disableamount'=>1, + 'test'=>$conf->don->enabled && $user->rights->don->lire), ); if ($action=="addelement") From 4e68586389eb7cb28745c2b07052678b14fd7f55 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 19 Mar 2015 05:08:23 +0100 Subject: [PATCH 327/429] Move module Dons in htdocs>donations --- htdocs/{ => donations}/admin/dons.php | 0 .../dons/class => donations/admin}/index.html | 0 htdocs/donations/admin/index.php | 117 ++++++++++++++++++ htdocs/{compta/dons => donations}/card.php | 0 .../dons => donations}/class/don.class.php | 0 htdocs/donations/class/index.html | 0 .../class/paymentdonation.class.php | 0 .../{compta/dons => donations}/document.php | 0 htdocs/donations/index.html | 0 htdocs/{compta/dons => donations}/index.php | 0 htdocs/{compta/dons => donations}/info.php | 0 htdocs/{compta/dons => donations}/list.php | 0 htdocs/{compta/dons => donations}/payment.php | 0 htdocs/{compta/dons => donations}/stats.php | 0 14 files changed, 117 insertions(+) rename htdocs/{ => donations}/admin/dons.php (100%) rename htdocs/{compta/dons/class => donations/admin}/index.html (100%) create mode 100644 htdocs/donations/admin/index.php rename htdocs/{compta/dons => donations}/card.php (100%) rename htdocs/{compta/dons => donations}/class/don.class.php (100%) create mode 100644 htdocs/donations/class/index.html rename htdocs/{compta/dons => donations}/class/paymentdonation.class.php (100%) rename htdocs/{compta/dons => donations}/document.php (100%) create mode 100644 htdocs/donations/index.html rename htdocs/{compta/dons => donations}/index.php (100%) rename htdocs/{compta/dons => donations}/info.php (100%) rename htdocs/{compta/dons => donations}/list.php (100%) rename htdocs/{compta/dons => donations}/payment.php (100%) rename htdocs/{compta/dons => donations}/stats.php (100%) diff --git a/htdocs/admin/dons.php b/htdocs/donations/admin/dons.php similarity index 100% rename from htdocs/admin/dons.php rename to htdocs/donations/admin/dons.php diff --git a/htdocs/compta/dons/class/index.html b/htdocs/donations/admin/index.html similarity index 100% rename from htdocs/compta/dons/class/index.html rename to htdocs/donations/admin/index.html diff --git a/htdocs/donations/admin/index.php b/htdocs/donations/admin/index.php new file mode 100644 index 00000000000..78ff3b48f9a --- /dev/null +++ b/htdocs/donations/admin/index.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/admin/index.php + * \ingroup Donations + * \brief Setup page to configure donations module + */ + +require '../main.inc.php'; + +// Class +require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; + +$langs->load("admin"); +$langs->load("donations"); + +// Security check +if (!$user->admin) + accessforbidden(); + +$action = GETPOST('action', 'alpha'); + +// Other parameters DONATIONS_* +$list = array ( + 'DONATIONS_ACCOUNTING_ACCOUNT_PRODUCT' +); + +/* + * Actions + */ + +if ($action == 'update') +{ + $error = 0; + + foreach ($list as $constname) { + $constvalue = GETPOST($constname, 'alpha'); + + if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) { + $error++; + } + } + + if (! $error) + { + setEventMessage($langs->trans("SetupSaved")); + } + else + { + setEventMessage($langs->trans("Error"),'errors'); + } +} + +/* + * View + */ + +llxHeader('',$langs->trans('DonationsSetup')); + +$form = new Form($db); + +$linkback=''.$langs->trans("BackToModuleList").''; +print_fiche_titre($langs->trans('DonationsSetup'),$linkback,'setup'); + +print '
'; +print ''; +print ''; + +/* + * Params + */ +print ''; +print ''; +print ''; +print "\n"; + +foreach ($list as $key) +{ + $var=!$var; + + print ''; + + // Param + $label = $langs->trans($key); + print ''; + + // Value + print ''; +} + +print ''; + +print ''; +print "
' . $langs->trans('Options') . '
'; + print ''; + print '
\n"; + +print '
'; + +llxFooter(); +$db->close(); \ No newline at end of file diff --git a/htdocs/compta/dons/card.php b/htdocs/donations/card.php similarity index 100% rename from htdocs/compta/dons/card.php rename to htdocs/donations/card.php diff --git a/htdocs/compta/dons/class/don.class.php b/htdocs/donations/class/don.class.php similarity index 100% rename from htdocs/compta/dons/class/don.class.php rename to htdocs/donations/class/don.class.php diff --git a/htdocs/donations/class/index.html b/htdocs/donations/class/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/compta/dons/class/paymentdonation.class.php b/htdocs/donations/class/paymentdonation.class.php similarity index 100% rename from htdocs/compta/dons/class/paymentdonation.class.php rename to htdocs/donations/class/paymentdonation.class.php diff --git a/htdocs/compta/dons/document.php b/htdocs/donations/document.php similarity index 100% rename from htdocs/compta/dons/document.php rename to htdocs/donations/document.php diff --git a/htdocs/donations/index.html b/htdocs/donations/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/compta/dons/index.php b/htdocs/donations/index.php similarity index 100% rename from htdocs/compta/dons/index.php rename to htdocs/donations/index.php diff --git a/htdocs/compta/dons/info.php b/htdocs/donations/info.php similarity index 100% rename from htdocs/compta/dons/info.php rename to htdocs/donations/info.php diff --git a/htdocs/compta/dons/list.php b/htdocs/donations/list.php similarity index 100% rename from htdocs/compta/dons/list.php rename to htdocs/donations/list.php diff --git a/htdocs/compta/dons/payment.php b/htdocs/donations/payment.php similarity index 100% rename from htdocs/compta/dons/payment.php rename to htdocs/donations/payment.php diff --git a/htdocs/compta/dons/stats.php b/htdocs/donations/stats.php similarity index 100% rename from htdocs/compta/dons/stats.php rename to htdocs/donations/stats.php From 7b6cb59f4bc1994c54680e086563055dd630ecc9 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 19 Mar 2015 05:17:10 +0100 Subject: [PATCH 328/429] Move module Don in htdocs->donations --- htdocs/{ => donations}/core/lib/donation.lib.php | 0 .../core/modules/dons/html_cerfafr.html | 0 .../core/modules/dons/html_cerfafr.modules.php | 0 htdocs/{ => donations}/core/modules/dons/index.html | 0 .../{ => donations}/core/modules/dons/modules_don.php | 0 htdocs/{ => donations}/core/modules/modDon.class.php | 10 +++++----- 6 files changed, 5 insertions(+), 5 deletions(-) rename htdocs/{ => donations}/core/lib/donation.lib.php (100%) rename htdocs/{ => donations}/core/modules/dons/html_cerfafr.html (100%) rename htdocs/{ => donations}/core/modules/dons/html_cerfafr.modules.php (100%) rename htdocs/{ => donations}/core/modules/dons/index.html (100%) rename htdocs/{ => donations}/core/modules/dons/modules_don.php (100%) rename htdocs/{ => donations}/core/modules/modDon.class.php (95%) diff --git a/htdocs/core/lib/donation.lib.php b/htdocs/donations/core/lib/donation.lib.php similarity index 100% rename from htdocs/core/lib/donation.lib.php rename to htdocs/donations/core/lib/donation.lib.php diff --git a/htdocs/core/modules/dons/html_cerfafr.html b/htdocs/donations/core/modules/dons/html_cerfafr.html similarity index 100% rename from htdocs/core/modules/dons/html_cerfafr.html rename to htdocs/donations/core/modules/dons/html_cerfafr.html diff --git a/htdocs/core/modules/dons/html_cerfafr.modules.php b/htdocs/donations/core/modules/dons/html_cerfafr.modules.php similarity index 100% rename from htdocs/core/modules/dons/html_cerfafr.modules.php rename to htdocs/donations/core/modules/dons/html_cerfafr.modules.php diff --git a/htdocs/core/modules/dons/index.html b/htdocs/donations/core/modules/dons/index.html similarity index 100% rename from htdocs/core/modules/dons/index.html rename to htdocs/donations/core/modules/dons/index.html diff --git a/htdocs/core/modules/dons/modules_don.php b/htdocs/donations/core/modules/dons/modules_don.php similarity index 100% rename from htdocs/core/modules/dons/modules_don.php rename to htdocs/donations/core/modules/dons/modules_don.php diff --git a/htdocs/core/modules/modDon.class.php b/htdocs/donations/core/modules/modDon.class.php similarity index 95% rename from htdocs/core/modules/modDon.class.php rename to htdocs/donations/core/modules/modDon.class.php index b1b265146a4..bf5db49ec82 100644 --- a/htdocs/core/modules/modDon.class.php +++ b/htdocs/donations/core/modules/modDon.class.php @@ -2,7 +2,7 @@ /* Copyright (C) 2003-2005 Rodolphe Quiedeville * Copyright (C) 2004-2010 Laurent Destailleur * Copyright (C) 2005-2011 Regis Houssin - * Copyright (C) 2014 Alexandre Spangaro + * Copyright (C) 2015 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -64,7 +64,7 @@ class modDon extends DolibarrModules $this->requiredby = array(); // Config pages - $this->config_page_url = array("dons.php"); + $this->config_page_url = array("dons.php@donations"); // Constants $this->const = array (); @@ -146,8 +146,8 @@ class modDon extends DolibarrModules global $conf; $sql = array( - "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->const[0][2]."' AND entity = ".$conf->entity, - "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->const[0][2]."','donation',".$conf->entity.")", + "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->const[0][4]."' AND entity = ".$conf->entity, + "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->const[0][4]."','donation',".$conf->entity.")", ); return $this->_init($sql,$options); @@ -168,4 +168,4 @@ class modDon extends DolibarrModules return $this->_remove($sql,$options); } -} +} \ No newline at end of file From fa411323722b34adba3072f86f2e40abb75031b5 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 19 Mar 2015 05:22:42 +0100 Subject: [PATCH 329/429] Move module Don in htdocs->donations --- htdocs/compta/index.php | 4 ++-- htdocs/compta/resultat/clientfourn.php | 2 +- htdocs/core/menus/init_menu_auguria.sql | 8 ++++---- htdocs/core/menus/standard/eldy.lib.php | 8 ++++---- htdocs/donations/admin/dons.php | 2 +- htdocs/donations/card.php | 10 +++++----- htdocs/donations/class/don.class.php | 4 ++-- htdocs/donations/class/paymentdonation.class.php | 4 ++-- htdocs/donations/core/lib/donation.lib.php | 6 +++--- .../core/modules/dons/html_cerfafr.modules.php | 2 +- htdocs/donations/core/modules/dons/modules_don.php | 2 +- htdocs/donations/document.php | 6 +++--- htdocs/donations/index.php | 4 ++-- htdocs/donations/info.php | 4 ++-- htdocs/donations/list.php | 4 ++-- htdocs/donations/payment.php | 12 ++++++------ htdocs/donations/stats.php | 2 +- 17 files changed, 42 insertions(+), 42 deletions(-) diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php index b1d32083a8a..9af8296f84d 100644 --- a/htdocs/compta/index.php +++ b/htdocs/compta/index.php @@ -127,7 +127,7 @@ if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire) if (! empty($conf->don->enabled) && $user->rights->don->lire) { $langs->load("donations"); - print '
'; + print ''; print ''; print ''; print ''; @@ -497,7 +497,7 @@ if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture- // Last donations if (! empty($conf->don->enabled) && $user->rights->societe->lire) { - include_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; + include_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; $langs->load("boxes"); $donationstatic=new Don($db); diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index 09469329069..4f1ff225417 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -651,7 +651,7 @@ if ($conf->donation->enabled) $var = !$var; print ""; - print "\n"; + print "\n"; if ($modecompta == 'CREANCES-DETTES') print ''; print ''; diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index b2f81ed1769..87e8f6a9ec2 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -172,10 +172,10 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left -- Accountancy - Orders to bill insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->commande->enabled', __HANDLER__, 'left', 1900__+MAX_llx_menu__, 'accountancy', 'orders', 6__+MAX_llx_menu__, '/commande/list.php?leftmenu=orders&viewstatut=3', 'MenuOrdersToBill', 0, 'orders', '$user->rights->commande->lire', '', 0, 3, __ENTITY__); -- Donations -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled', __HANDLER__, 'left', 2000__+MAX_llx_menu__, 'accountancy', 'donations', 6__+MAX_llx_menu__, '/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy', 'Donations', 0, 'donations', '$user->rights->don->lire', '', 2, 4, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2001__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/compta/dons/card.php?leftmenu=donations&mainmenu=accountancy&action=create', 'NewDonation', 1, 'donations', '$user->rights->don->creer', '', 2, 0, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2002__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/compta/dons/list.php?leftmenu=donations&mainmenu=accountancy', 'List', 1, 'donations', '$user->rights->don->lire', '', 2, 1, __ENTITY__); ---insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2003__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/compta/dons/stats.php?leftmenu=donations&mainmenu=accountancy', 'Statistics', 1, 'donations', '$user->rights->don->lire', '', 2, 2, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled', __HANDLER__, 'left', 2000__+MAX_llx_menu__, 'accountancy', 'donations', 6__+MAX_llx_menu__, '/donations/index.php?leftmenu=donations&mainmenu=accountancy', 'Donations', 0, 'donations', '$user->rights->don->lire', '', 2, 4, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2001__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/donations/card.php?leftmenu=donations&mainmenu=accountancy&action=create', 'NewDonation', 1, 'donations', '$user->rights->don->creer', '', 2, 0, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2002__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/donations/list.php?leftmenu=donations&mainmenu=accountancy', 'List', 1, 'donations', '$user->rights->don->lire', '', 2, 1, __ENTITY__); +--insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2003__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/donations/stats.php?leftmenu=donations&mainmenu=accountancy', 'Statistics', 1, 'donations', '$user->rights->don->lire', '', 2, 2, __ENTITY__); -- Special expenses insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled || $conf->salaries->enabled', __HANDLER__, 'left', 2200__+MAX_llx_menu__, 'accountancy', 'tax', 6__+MAX_llx_menu__, '/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy', 'MenuSpecialExpenses', 0, 'compta', '(! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read)', '', 0, 6, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled', __HANDLER__, 'left', 2210__+MAX_llx_menu__, 'accountancy', 'tax_sal', 2200__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=accountancy', 'Salaries', 1, 'salaries', '$user->rights->salaries->read', '', 0, 1, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 24af20ea4af..95cbad199a7 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -788,10 +788,10 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (! empty($conf->don->enabled)) { $langs->load("donations"); - $newmenu->add("/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy",$langs->trans("Donations"), 0, $user->rights->don->lire, '', $mainmenu, 'donations'); - if (empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/compta/dons/card.php?action=create",$langs->trans("NewDonation"), 1, $user->rights->don->creer); - if (empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/compta/dons/list.php",$langs->trans("List"), 1, $user->rights->don->lire); - //if ($leftmenu=="donations") $newmenu->add("/compta/dons/stats.php",$langs->trans("Statistics"), 1, $user->rights->don->lire); + $newmenu->add("/donations/index.php?leftmenu=donations&mainmenu=accountancy",$langs->trans("Donations"), 0, $user->rights->don->lire, '', $mainmenu, 'donations'); + if (empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/donations/card.php?action=create",$langs->trans("NewDonation"), 1, $user->rights->don->creer); + if (empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/donations/list.php",$langs->trans("List"), 1, $user->rights->don->lire); + //if ($leftmenu=="donations") $newmenu->add("/donations/stats.php",$langs->trans("Statistics"), 1, $user->rights->don->lire); } // Taxes and social contributions diff --git a/htdocs/donations/admin/dons.php b/htdocs/donations/admin/dons.php index dcac1079422..f4afddc65d0 100644 --- a/htdocs/donations/admin/dons.php +++ b/htdocs/donations/admin/dons.php @@ -25,7 +25,7 @@ */ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; $langs->load("admin"); $langs->load("donations"); diff --git a/htdocs/donations/card.php b/htdocs/donations/card.php index 88331bb5498..79b97c2fde3 100644 --- a/htdocs/donations/card.php +++ b/htdocs/donations/card.php @@ -20,7 +20,7 @@ */ /** - * \file htdocs/compta/dons/card.php + * \file htdocs/donations/card.php * \ingroup don * \brief Page of donation card */ @@ -30,7 +30,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/modules/dons/modules_don.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; if (! empty($conf->projet->enabled)) { @@ -466,7 +466,7 @@ if (! empty($id) && $action != 'edit') print ''; print '
'.$langs->trans("SearchADonation").'
 ".$langs->trans("Donation")." name."&search_name=".$obj->firstname." ".$obj->lastname."\">".$obj->name. " ".$obj->firstname." ".$obj->lastname."".$langs->trans("Donation")." name."&search_name=".$obj->firstname." ".$obj->lastname."\">".$obj->name. " ".$obj->firstname." ".$obj->lastname."'.price($obj->amount).''.price($obj->amount).'
'; - $linkback = ''.$langs->trans("BackToList").''; + $linkback = ''.$langs->trans("BackToList").''; $nbrows=12; if (! empty($conf->projet->enabled)) $nbrows++; @@ -534,7 +534,7 @@ if (! empty($id) && $action != 'edit') $objp = $db->fetch_object($resql); $var=!$var; print "'; + print ''.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.''; print '\n"; $labeltype=$langs->trans("PaymentType".$object->type_code)!=("PaymentType".$object->type_code)?$langs->trans("PaymentType".$object->type_code):$object->paiement_type; print "\n"; @@ -641,7 +641,7 @@ if (! empty($id) && $action != 'edit') } else { - print ''; + print ''; } } diff --git a/htdocs/donations/class/don.class.php b/htdocs/donations/class/don.class.php index 273d54a6eef..51c3958f2e6 100644 --- a/htdocs/donations/class/don.class.php +++ b/htdocs/donations/class/don.class.php @@ -20,7 +20,7 @@ */ /** - * \file htdocs/compta/dons/class/don.class.php + * \file htdocs/donations/class/don.class.php * \ingroup Donation * \brief File of class to manage donations */ @@ -723,7 +723,7 @@ class Don extends CommonObject $result=''; $label=$langs->trans("ShowDonation").': '.$this->id; - $link = ''; + $link = ''; $linkend=''; $picto='generic'; diff --git a/htdocs/donations/class/paymentdonation.class.php b/htdocs/donations/class/paymentdonation.class.php index 907ea46bf72..72d1709b252 100644 --- a/htdocs/donations/class/paymentdonation.class.php +++ b/htdocs/donations/class/paymentdonation.class.php @@ -16,7 +16,7 @@ */ /** - * \file htdocs/compta/dons/class/paymentdonation.class.php + * \file htdocs/donations/class/paymentdonation.class.php * \ingroup Donation * \brief File of class to manage payment of donations */ @@ -510,7 +510,7 @@ class PaymentDonation extends CommonObject // Add link 'payment', 'payment_supplier', 'payment_sc' in bank_url between payment and bank transaction $url=''; - if ($mode == 'payment_donation') $url=DOL_URL_ROOT.'/compta/dons/card.php?rowid='; + if ($mode == 'payment_donation') $url=DOL_URL_ROOT.'/donations/card.php?rowid='; if ($url) { $result=$acc->add_url_line($bank_line_id, $this->id, $url, '(paiement)', $mode); diff --git a/htdocs/donations/core/lib/donation.lib.php b/htdocs/donations/core/lib/donation.lib.php index dcbe2d30e84..c274811bca1 100644 --- a/htdocs/donations/core/lib/donation.lib.php +++ b/htdocs/donations/core/lib/donation.lib.php @@ -34,7 +34,7 @@ function donation_prepare_head($object) $h = 0; $head = array (); - $head[$h][0] = DOL_URL_ROOT . '/compta/dons/card.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT . '/donations/card.php?id=' . $object->id; $head[$h][1] = $langs->trans("Card"); $head[$h][2] = 'card'; $h ++; @@ -45,12 +45,12 @@ function donation_prepare_head($object) // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf, $langs, $object, $head, $h, 'donation'); - $head[$h][0] = DOL_URL_ROOT . '/compta/dons/document.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT . '/donations/document.php?id='.$object->id; $head[$h][1] = $langs->trans("Documents"); $head[$h][2] = 'documents'; $h++; - $head[$h][0] = DOL_URL_ROOT . '/compta/dons/info.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT . '/donations/info.php?id=' . $object->id; $head[$h][1] = $langs->trans("Info"); $head[$h][2] = 'info'; $h++; diff --git a/htdocs/donations/core/modules/dons/html_cerfafr.modules.php b/htdocs/donations/core/modules/dons/html_cerfafr.modules.php index b4cc2795c1a..0efaf8c4524 100644 --- a/htdocs/donations/core/modules/dons/html_cerfafr.modules.php +++ b/htdocs/donations/core/modules/dons/html_cerfafr.modules.php @@ -25,7 +25,7 @@ * \brief Form of donation */ require_once DOL_DOCUMENT_ROOT.'/core/modules/dons/modules_don.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; diff --git a/htdocs/donations/core/modules/dons/modules_don.php b/htdocs/donations/core/modules/dons/modules_don.php index 8c894e7fa1f..69db5bec011 100644 --- a/htdocs/donations/core/modules/dons/modules_don.php +++ b/htdocs/donations/core/modules/dons/modules_don.php @@ -25,7 +25,7 @@ * \brief File of class to manage donation document generation */ require_once DOL_DOCUMENT_ROOT.'/core/class/commondocgenerator.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; diff --git a/htdocs/donations/document.php b/htdocs/donations/document.php index d4671097fad..16729a9bd81 100644 --- a/htdocs/donations/document.php +++ b/htdocs/donations/document.php @@ -16,13 +16,13 @@ */ /** - * \file htdocs/compta/dons/document.php + * \file htdocs/donations/document.php * \ingroup Donation * \brief Page of linked files into donations */ require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; @@ -96,7 +96,7 @@ if ($object->id) print '
"; - print ''.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.''.dol_print_date($db->jdate($objp->dp),'day')."".$labeltype.' '.$object->num_paiement."
'; - $linkback = ''.$langs->trans("BackToList").''; + $linkback = ''.$langs->trans("BackToList").''; // Ref print ''; - print ''; + print ''; print '\n"; print ''; diff --git a/htdocs/donations/stats.php b/htdocs/donations/stats.php index 1fbde7c0ce7..7552c29ebc0 100644 --- a/htdocs/donations/stats.php +++ b/htdocs/donations/stats.php @@ -17,7 +17,7 @@ */ /** - * \file htdocs/compta/dons/stats.php + * \file htdocs/donations/stats.php * \ingroup don * \brief Page des statistiques de dons */ From c9d31dab3a5fc4c3e3cfbfbb6c99497da1be80e5 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 19 Mar 2015 05:41:13 +0100 Subject: [PATCH 330/429] Move module Dons in htdocs->donations --- htdocs/projet/element.php | 2 +- htdocs/public/donations/donateurs_code.php | 2 +- htdocs/public/donations/therm.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index a49914b538a..69dc6a539c1 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -42,7 +42,7 @@ if (! empty($conf->ficheinter->enabled)) require_once DOL_DOCUMENT_ROOT.'/fichi if (! empty($conf->deplacement->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/deplacement/class/deplacement.class.php'; if (! empty($conf->expensereport->enabled)) require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php'; if (! empty($conf->agenda->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; -if (! empty($conf->don->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; +if (! empty($conf->don->enabled)) require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; $langs->load("projects"); $langs->load("companies"); diff --git a/htdocs/public/donations/donateurs_code.php b/htdocs/public/donations/donateurs_code.php index d2435f9f20f..ad42b7e0e7f 100644 --- a/htdocs/public/donations/donateurs_code.php +++ b/htdocs/public/donations/donateurs_code.php @@ -39,7 +39,7 @@ function llxHeaderVierge() { print 'Export agenda cal function llxFooterVierge() { print ''; } require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT .'/compta/dons/class/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT .'/donations/class/class/don.class.php'; // Security check if (empty($conf->don->enabled)) accessforbidden('',1,1,1); diff --git a/htdocs/public/donations/therm.php b/htdocs/public/donations/therm.php index 1e111567c17..36bdec4637f 100644 --- a/htdocs/public/donations/therm.php +++ b/htdocs/public/donations/therm.php @@ -27,7 +27,7 @@ define("NOCSRFCHECK",1); // We accept to go on this page from external web site. require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; // Security check if (empty($conf->don->enabled)) accessforbidden('',1,1,1); From f44d91e1533b7ec3a0455834e10b2886422cc158 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 19 Mar 2015 11:47:30 +0100 Subject: [PATCH 331/429] NEW: The notification module accept keyword __SUPERVISOR__ to send notification to supervisor of user. --- htdocs/admin/notification.php | 4 +- htdocs/core/class/CMailFile.class.php | 12 +- htdocs/core/class/notify.class.php | 235 ++++++++++++++------------ htdocs/core/lib/functions.lib.php | 12 +- htdocs/langs/en_US/admin.lang | 4 +- htdocs/langs/en_US/mails.lang | 2 + htdocs/langs/en_US/other.lang | 2 +- htdocs/societe/notify/card.php | 12 +- 8 files changed, 152 insertions(+), 131 deletions(-) diff --git a/htdocs/admin/notification.php b/htdocs/admin/notification.php index 58fd2442357..6de3cc09665 100644 --- a/htdocs/admin/notification.php +++ b/htdocs/admin/notification.php @@ -232,10 +232,10 @@ foreach($listofnotifiedevents as $notifiedevent) foreach($arrayemail as $key=>$valuedet) { $valuedet=trim($valuedet); - if (! empty($valuedet) && ! isValidEmail($valuedet)) $showwarning++; + if (! empty($valuedet) && ! isValidEmail($valuedet,1)) $showwarning++; } if ((! empty($conf->global->$param)) && $showwarning) $s.=' '.img_warning($langs->trans("ErrorBadEMail")); - print $form->textwithpicto($s,$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients"),1,'help','',0,2); + print $form->textwithpicto($s,$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients").'
'.$langs->trans("YouCanAlsoUseSupervisorKeyword"),1,'help','',0,2); print '
'; } // New entry input fields diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php index 573e768fb4b..61ea308df39 100644 --- a/htdocs/core/class/CMailFile.class.php +++ b/htdocs/core/class/CMailFile.class.php @@ -85,8 +85,8 @@ class CMailFile * CMailFile * * @param string $subject Topic/Subject of mail - * @param string $to Recipients emails (RFC 2822: "Nom firstname [, ...]" ou "email[, ...]" ou "[, ...]") - * @param string $from Sender email (RFC 2822: "Nom firstname [, ...]" ou "email[, ...]" ou "[, ...]") + * @param string $to Recipients emails (RFC 2822: "Name firstname [, ...]" or "email[, ...]" or "[, ...]"). Note: the keyword '__SUPERVISOREMAIL__' is not allowed here and must be replaced by caller. + * @param string $from Sender email (RFC 2822: "Name firstname [, ...]" or "email[, ...]" or "[, ...]") * @param string $msg Message * @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 @@ -98,9 +98,7 @@ class CMailFile * @param string $errors_to Email errors * @param string $css Css option */ - function __construct($subject,$to,$from,$msg, - $filename_list=array(),$mimetype_list=array(),$mimefilename_list=array(), - $addr_cc="",$addr_bcc="",$deliveryreceipt=0,$msgishtml=0,$errors_to='',$css='') + function __construct($subject,$to,$from,$msg,$filename_list=array(),$mimetype_list=array(),$mimefilename_list=array(),$addr_cc="",$addr_bcc="",$deliveryreceipt=0,$msgishtml=0,$errors_to='',$css='') { global $conf; @@ -1023,9 +1021,9 @@ class CMailFile } /** - * Return an address for SMTP protocol + * Return a formatted address string for SMTP protocol * - * @param string $address Example: 'John Doe ' or 'john@doe.com' + * @param string $address Example: 'John Doe , Alan Smith ' or 'john@doe.com, alan@smith.com' * @param int $format 0=auto, 1=emails with <>, 2=emails without <>, 3=auto + label between " * @param int $encode 1=Encode name to RFC2822 * @return string If format 0: '' or 'John Doe ' or '=?UTF-8?B?Sm9obiBEb2U=?= ' diff --git a/htdocs/core/class/notify.class.php b/htdocs/core/class/notify.class.php index 1a024c61552..aa92e6ee50f 100644 --- a/htdocs/core/class/notify.class.php +++ b/htdocs/core/class/notify.class.php @@ -155,7 +155,7 @@ class Notify */ function send($notifcode, $object) { - global $conf,$langs,$mysoc,$dolibarr_main_url_root; + global $user,$conf,$langs,$mysoc,$dolibarr_main_url_root; include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; @@ -373,120 +373,137 @@ class Notify } $param='NOTIFICATION_FIXEDEMAIL_'.$notifcode.'_THRESHOLD_HIGHER_'.$reg[1]; - //if (! empty($conf->global->$param)) - //{ - $sendto = $conf->global->$param; - $notifcodedefid = dol_getIdFromCode($this->db, $notifcode, 'c_action_trigger', 'code', 'rowid'); - if ($notifcodedefid <= 0) dol_print_error($this->db, 'Failed to get id from code'); - $object_type = ''; - $link = ''; - $num++; + $sendto = $conf->global->$param; + $notifcodedefid = dol_getIdFromCode($this->db, $notifcode, 'c_action_trigger', 'code', 'rowid'); + if ($notifcodedefid <= 0) dol_print_error($this->db, 'Failed to get id from code'); - switch ($notifcode) { - case 'BILL_VALIDATE': - $link='/compta/facture.php?facid='.$object->id; - $dir_output = $conf->facture->dir_output; - $object_type = 'facture'; - $mesg = $langs->transnoentitiesnoconv("EMailTextInvoiceValidated",$object->ref); - break; - case 'ORDER_VALIDATE': - $link='/commande/card.php?id='.$object->id; - $dir_output = $conf->commande->dir_output; - $object_type = 'order'; - $mesg = $langs->transnoentitiesnoconv("EMailTextOrderValidated",$object->ref); - break; - case 'PROPAL_VALIDATE': - $link='/comm/propal.php?id='.$object->id; - $dir_output = $conf->propal->dir_output; - $object_type = 'propal'; - $mesg = $langs->transnoentitiesnoconv("EMailTextProposalValidated",$object->ref); - break; - case 'FICHINTER_VALIDATE': - $link='/fichinter/card.php?id='.$object->id; - $dir_output = $conf->facture->dir_output; - $object_type = 'ficheinter'; - $mesg = $langs->transnoentitiesnoconv("EMailTextInterventionValidated",$object->ref); - break; - case 'ORDER_SUPPLIER_VALIDATE': - $link='/fourn/commande/card.php?id='.$object->id; - $dir_output = $conf->fournisseur->dir_output.'/commande/'; - $object_type = 'order_supplier'; - $mesg = $langs->transnoentitiesnoconv("Hello").",\n\n"; - $mesg.= $langs->transnoentitiesnoconv("EMailTextOrderValidatedBy",$object->ref,$user->getFullName($langs)); - $mesg.= "\n\n".$langs->transnoentitiesnoconv("Sincerely").".\n\n"; - break; - case 'ORDER_SUPPLIER_APPROVE': - $link='/fourn/commande/card.php?id='.$object->id; - $dir_output = $conf->fournisseur->dir_output.'/commande/'; - $object_type = 'order_supplier'; - $mesg = $langs->transnoentitiesnoconv("Hello").",\n\n"; - $mesg.= $langs->transnoentitiesnoconv("EMailTextOrderApprovedBy",$object->ref,$user->getFullName($langs)); - $mesg.= "\n\n".$langs->transnoentitiesnoconv("Sincerely").".\n\n"; - break; - case 'ORDER_SUPPLIER_REFUSE': - $link='/fourn/commande/card.php?id='.$object->id; - $dir_output = $conf->fournisseur->dir_output.'/commande/'; - $object_type = 'order_supplier'; - $mesg = $langs->transnoentitiesnoconv("Hello").",\n\n"; - $mesg.= $langs->transnoentitiesnoconv("EMailTextOrderRefusedBy",$object->ref,$user->getFullName($langs)); - $mesg.= "\n\n".$langs->transnoentitiesnoconv("Sincerely").".\n\n"; - break; - case 'SHIPPING_VALIDATE': - $dir_output = $conf->expedition->dir_output.'/sending/'; - $object_type = 'order_supplier'; - $mesg = $langs->transnoentitiesnoconv("EMailTextExpeditionValidated",$object->ref); - break; - } - $ref = dol_sanitizeFileName($object->ref); - $pdf_path = $dir_output."/".$ref."/".$ref.".pdf"; - if (! dol_is_file($pdf_path)) - { - // We can't add PDF as it is not generated yet. - $filepdf = ''; - } - else - { - $filepdf = $pdf_path; - } + $object_type = ''; + $link = ''; + $num++; - $subject = '['.$application.'] '.$langs->transnoentitiesnoconv("DolibarrNotification"); + switch ($notifcode) { + case 'BILL_VALIDATE': + $link='/compta/facture.php?facid='.$object->id; + $dir_output = $conf->facture->dir_output; + $object_type = 'facture'; + $mesg = $langs->transnoentitiesnoconv("EMailTextInvoiceValidated",$object->ref); + break; + case 'ORDER_VALIDATE': + $link='/commande/card.php?id='.$object->id; + $dir_output = $conf->commande->dir_output; + $object_type = 'order'; + $mesg = $langs->transnoentitiesnoconv("EMailTextOrderValidated",$object->ref); + break; + case 'PROPAL_VALIDATE': + $link='/comm/propal.php?id='.$object->id; + $dir_output = $conf->propal->dir_output; + $object_type = 'propal'; + $mesg = $langs->transnoentitiesnoconv("EMailTextProposalValidated",$object->ref); + break; + case 'FICHINTER_VALIDATE': + $link='/fichinter/card.php?id='.$object->id; + $dir_output = $conf->facture->dir_output; + $object_type = 'ficheinter'; + $mesg = $langs->transnoentitiesnoconv("EMailTextInterventionValidated",$object->ref); + break; + case 'ORDER_SUPPLIER_VALIDATE': + $link='/fourn/commande/card.php?id='.$object->id; + $dir_output = $conf->fournisseur->dir_output.'/commande/'; + $object_type = 'order_supplier'; + $mesg = $langs->transnoentitiesnoconv("Hello").",\n\n"; + $mesg.= $langs->transnoentitiesnoconv("EMailTextOrderValidatedBy",$object->ref,$user->getFullName($langs)); + $mesg.= "\n\n".$langs->transnoentitiesnoconv("Sincerely").".\n\n"; + break; + case 'ORDER_SUPPLIER_APPROVE': + $link='/fourn/commande/card.php?id='.$object->id; + $dir_output = $conf->fournisseur->dir_output.'/commande/'; + $object_type = 'order_supplier'; + $mesg = $langs->transnoentitiesnoconv("Hello").",\n\n"; + $mesg.= $langs->transnoentitiesnoconv("EMailTextOrderApprovedBy",$object->ref,$user->getFullName($langs)); + $mesg.= "\n\n".$langs->transnoentitiesnoconv("Sincerely").".\n\n"; + break; + case 'ORDER_SUPPLIER_REFUSE': + $link='/fourn/commande/card.php?id='.$object->id; + $dir_output = $conf->fournisseur->dir_output.'/commande/'; + $object_type = 'order_supplier'; + $mesg = $langs->transnoentitiesnoconv("Hello").",\n\n"; + $mesg.= $langs->transnoentitiesnoconv("EMailTextOrderRefusedBy",$object->ref,$user->getFullName($langs)); + $mesg.= "\n\n".$langs->transnoentitiesnoconv("Sincerely").".\n\n"; + break; + case 'SHIPPING_VALIDATE': + $dir_output = $conf->expedition->dir_output.'/sending/'; + $object_type = 'order_supplier'; + $mesg = $langs->transnoentitiesnoconv("EMailTextExpeditionValidated",$object->ref); + break; + } + $ref = dol_sanitizeFileName($object->ref); + $pdf_path = $dir_output."/".$ref."/".$ref.".pdf"; + if (! dol_is_file($pdf_path)) + { + // We can't add PDF as it is not generated yet. + $filepdf = ''; + } + else + { + $filepdf = $pdf_path; + } - $message = $langs->transnoentities("YouReceiveMailBecauseOfNotification",$application,$mysoc->name)."\n"; - $message.= $langs->transnoentities("YouReceiveMailBecauseOfNotification2",$application,$mysoc->name)."\n"; - $message.= "\n"; - $message.= $mesg; - if ($link) $message=dol_concatdesc($message,$urlwithroot.$link); + $subject = '['.$application.'] '.$langs->transnoentitiesnoconv("DolibarrNotification"); - $mailfile = new CMailFile( - $subject, - $sendto, - $replyto, - $message, - array($file), - array($mimefile), - array($filename[count($filename)-1]), - '', - '', - 0, - -1 - ); + $message = $langs->transnoentities("YouReceiveMailBecauseOfNotification",$application,$mysoc->name)."\n"; + $message.= $langs->transnoentities("YouReceiveMailBecauseOfNotification2",$application,$mysoc->name)."\n"; + $message.= "\n"; + $message.= $mesg; + if ($link) $message=dol_concatdesc($message,$urlwithroot.$link); - if ($mailfile->sendfile()) - { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_soc, fk_contact, type, objet_type, objet_id, email)"; - $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$notifcodedefid.", ".$object->socid.", null, 'email', '".$object_type."', ".$object->id.", '".$this->db->escape($conf->global->$param)."')"; - if (! $this->db->query($sql)) - { - dol_print_error($this->db); - } - } - else - { - $error++; - $this->errors[]=$mailfile->error; - } - //} + // Replace keyword __SUPERVISOREMAIL__ + if (preg_match('/__SUPERVISOREMAIL__/', $sendto)) + { + $newval=''; + if ($user->fk_user > 0) + { + $supervisoruser=new User($this->db); + $supervisoruser->fetch($user->fk_user); + if ($supervisoruser->email) $newval=trim(dolGetFirstLastname($supervisoruser->firstname, $supervisoruser->lastname).' <'.$supervisoruser->email.'>'); + } + dol_syslog("Replace the __SUPERVISOREMAIL__ key into recipient email string with ".$newval); + $sendto = preg_replace('/__SUPERVISOREMAIL__/', $newval, $sendto); + $sendto = preg_replace('/^[\s,]+/','',$sendto); // Clean start of string + $sendto = preg_replace('/[\s,]+$/','',$sendto); // Clean end of string + } + + if ($sendto) + { + $mailfile = new CMailFile( + $subject, + $sendto, + $replyto, + $message, + array($file), + array($mimefile), + array($filename[count($filename)-1]), + '', + '', + 0, + -1 + ); + + if ($mailfile->sendfile()) + { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_soc, fk_contact, type, objet_type, objet_id, email)"; + $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$notifcodedefid.", ".$object->socid.", null, 'email', '".$object_type."', ".$object->id.", '".$this->db->escape($conf->global->$param)."')"; + if (! $this->db->query($sql)) + { + dol_print_error($this->db); + } + } + else + { + $error++; + $this->errors[]=$mailfile->error; + } + } } } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index d2ec84de96a..6ac8e92b229 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1633,14 +1633,14 @@ function dol_print_address($address, $htmlid, $mode, $id) /** * Return true if email syntax is ok * - * @param string $address email (Ex: "toto@titi.com", "John Do ") - * @return boolean true if email syntax is OK, false if KO or empty string + * @param string $address email (Ex: "toto@titi.com", "John Do ") + * @param int $acceptsupervisorkey If 1, the special string '__SUPERVISOREMAIL__' is also accepted as valid + * @return boolean true if email syntax is OK, false if KO or empty string */ -function isValidEmail($address) +function isValidEmail($address, $acceptsupervisorkey=0) { - if (filter_var($address, FILTER_VALIDATE_EMAIL)) { - return true; - } + if ($acceptsupervisorkey && $address == '__SUPERVISOREMAIL__') return true; + if (filter_var($address, FILTER_VALIDATE_EMAIL)) return true; return false; } diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 7bb08ba2c0f..2439066ad9c 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1107,7 +1107,7 @@ ModuleCompanyCodeAquarium=Return an accountancy code built by:
%s followed by ModuleCompanyCodePanicum=Return an empty accountancy code. ModuleCompanyCodeDigitaria=Accountancy code depends on third party code. The code is composed of the character "C" in the first position followed by the first 5 characters of the third party code. UseNotifications=Use notifications -NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined:
* per third parties contacts (customers or suppliers), one contact at time.
* or by setting a global target email address on module setup page. +NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined:
* per third parties contacts (customers or suppliers), one contact at time.
* or by setting global target email addresses in module setup page. ModelModules=Documents templates DocumentModelOdt=Generate documents from OpenDocuments templates (.ODT or .ODS files for OpenOffice, KOffice, TextEdit,...) WatermarkOnDraft=Watermark on draft document @@ -1604,5 +1604,5 @@ NoModueToManageStockIncrease=No module able to manage automatic stock increase h YouMayFindNotificationsFeaturesIntoModuleNotification=You may find options for EMail notifications by enabling and configuring the module "Notification". ListOfNotificationsPerContact=List of notifications per contact* ListOfFixedNotifications=List of fixed notifications -GoOntoContactCardToAddMore=Go on the tab "Notifications" of a thirdparty contact to add or remove notifications for contact +GoOntoContactCardToAddMore=Go on the tab "Notifications" of a thirdparty contact to add or remove notifications for contacts/addresses Threshold=Threshold diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index 6fffc35bb08..37a50c14965 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -139,3 +139,5 @@ ListOfNotificationsDone=List all email notifications sent MailSendSetupIs=Configuration of email sending has been setup to '%s'. This mode can't be used to send mass emailing. MailSendSetupIs2=You must first go, with an admin account, into menu %sHome - Setup - EMails%s to change parameter '%s' to use mode '%s'. With this mode, you can enter setup of the SMTP server provided by your Internet Service Provider and use Mass emailing feature. MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s. +YouCanAlsoUseSupervisorKeyword=You can also add the keyword __SUPERVISOREMAIL__ to have email being sent to the supervisor of user (works only if an email is defined for this supervisor) +NbOfTargetedContacts=Current number of targeted contact emails \ No newline at end of file diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index b1cf1d714af..e3de07b3d5d 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -48,7 +48,7 @@ Notify_PROJECT_CREATE=Project creation Notify_TASK_CREATE=Task created Notify_TASK_MODIFY=Task modified Notify_TASK_DELETE=Task deleted -SeeModuleSetup=See module setup +SeeModuleSetup=See setup of module %s NbOfAttachedFiles=Number of attached files/documents TotalSizeOfAttachedFiles=Total size of attached files/documents MaxSize=Maximum size diff --git a/htdocs/societe/notify/card.php b/htdocs/societe/notify/card.php index 69920a7e5ce..f8594a545ea 100644 --- a/htdocs/societe/notify/card.php +++ b/htdocs/societe/notify/card.php @@ -264,18 +264,22 @@ if ($result > 0) if (! preg_match('/^NOTIFICATION_FIXEDEMAIL_(.*)/', $key, $reg)) continue; print '
'; @@ -286,7 +290,7 @@ if ($result > 0) print ''; - print ''; + print ''; print ''; } From d442ac328c0a2d4b8ac2bb6d14fb64da1e6b96d2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 19 Mar 2015 12:34:03 +0100 Subject: [PATCH 332/429] Fix: some replacement tags were missing --- htdocs/fourn/commande/card.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index eefd5c961e2..d42c649f044 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1966,8 +1966,13 @@ elseif (! empty($object->id)) $formmail->withbody=1; $formmail->withdeliveryreceipt=1; $formmail->withcancel=1; + + $object->fetch_projet(); // Tableau des substitutions $formmail->substit['__ORDERREF__']=$object->ref; + $formmail->substit['__ORDERSUPPLIERREF__']=$object->ref_supplier; + $formmail->substit['__THIRPARTY_NAME__'] = $object->thirdparty->name; + $formmail->substit['__PROJECT_REF__'] = (is_object($object->projet)?$object->projet->ref:''); $formmail->substit['__SIGNATURE__']=$user->signature; $formmail->substit['__PERSONALIZED__']=''; $formmail->substit['__CONTACTCIVNAME__']=''; From 3a9c195f1018845239095824a0c28054be90afb9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 20 Mar 2015 00:34:55 +0100 Subject: [PATCH 333/429] Fix hook management match spec --- htdocs/core/class/html.formfile.class.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 3be937babdf..fe0fae0ec4d 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -550,7 +550,11 @@ class FormFile // Execute hooks $parameters=array('socid'=>(isset($GLOBALS['socid'])?$GLOBALS['socid']:''),'id'=>(isset($GLOBALS['id'])?$GLOBALS['id']:''),'modulepart'=>$modulepart); - if (is_object($hookmanager)) $out.= $hookmanager->executeHooks('formBuilddocOptions',$parameters,$GLOBALS['object']); + if (is_object($hookmanager)) + { + $reshook = $hookmanager->executeHooks('formBuilddocOptions',$parameters,$GLOBALS['object']); + $out.= $hookmanager->resPrint; + } } // Get list of files From 0e01dbd44e845216a06b587f9124a211591106f5 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Fri, 20 Mar 2015 06:36:48 +0100 Subject: [PATCH 334/429] Update work --- htdocs/donations/admin/dons.php | 19 ++++++++++--------- htdocs/donations/card.php | 6 +++--- .../modules/dons/html_cerfafr.modules.php | 6 +++--- .../core/modules/dons/modules_don.php | 6 +++--- .../donations/core/modules/modDon.class.php | 6 +++--- htdocs/donations/document.php | 4 ++-- htdocs/donations/index.php | 2 +- htdocs/donations/info.php | 6 +++--- htdocs/donations/list.php | 6 +++--- htdocs/donations/payment.php | 4 ++-- htdocs/donations/stats.php | 2 +- htdocs/langs/en_US/donations.lang | 2 ++ 12 files changed, 36 insertions(+), 33 deletions(-) diff --git a/htdocs/donations/admin/dons.php b/htdocs/donations/admin/dons.php index f4afddc65d0..daf7b2f0e6d 100644 --- a/htdocs/donations/admin/dons.php +++ b/htdocs/donations/admin/dons.php @@ -2,7 +2,7 @@ /* Copyright (C) 2005-2010 Laurent Destailleur * Copyright (C) 2012-2013 Juanjo Menent * Copyright (C) 2013 Philippe Grand - * Copyright (C) 2014 Alexandre Spangaro + * Copyright (C) 2015 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,13 +19,14 @@ */ /** - * \file htdocs/admin/dons.php - * \ingroup dons - * \brief Page d'administration/configuration du module Dons + * \file htdocs/donations/admin/dons.php + * \ingroup donations + * \brief Page to setup the donation module */ -require '../main.inc.php'; +require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $langs->load("admin"); $langs->load("donations"); @@ -52,7 +53,7 @@ if ($action == 'specimen') $don->initAsSpecimen(); // Search template files - $dir = DOL_DOCUMENT_ROOT . "/core/modules/dons/"; + $dir = DOL_DOCUMENT_ROOT . "/donations/core/modules/dons/"; $file = $modele.".modules.php"; if (file_exists($dir.$file)) { @@ -173,7 +174,7 @@ else if ($action == 'setart885') { * View */ -$dir = "../core/modules/dons/"; +$dir = DOL_DOCUMENT_ROOT.'/donations/core/modules/dons/'; $form=new Form($db); llxHeader('',$langs->trans("DonationsSetup"),'DonConfiguration'); @@ -191,7 +192,7 @@ print ''; print ''; print '
'.$langs->trans("Ref").''; diff --git a/htdocs/donations/index.php b/htdocs/donations/index.php index 100380bc128..9a4f13e7e4a 100644 --- a/htdocs/donations/index.php +++ b/htdocs/donations/index.php @@ -18,13 +18,13 @@ */ /** - * \file htdocs/compta/dons/index.php + * \file htdocs/donations/index.php * \ingroup don * \brief Home page of donation module */ require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; $langs->load("donations"); diff --git a/htdocs/donations/info.php b/htdocs/donations/info.php index ca2c03878d6..2121e379a65 100644 --- a/htdocs/donations/info.php +++ b/htdocs/donations/info.php @@ -16,7 +16,7 @@ */ /** - * \file htdocs/compta/dons/info.php + * \file htdocs/donations/info.php * \ingroup Donation * \brief Page to show a donation information */ @@ -24,7 +24,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; $langs->load("donations"); diff --git a/htdocs/donations/list.php b/htdocs/donations/list.php index 95011ca0b74..5e0c1690413 100644 --- a/htdocs/donations/list.php +++ b/htdocs/donations/list.php @@ -19,13 +19,13 @@ */ /** - * \file htdocs/compta/dons/list.php + * \file htdocs/donations/list.php * \ingroup don * \brief Page de liste des dons */ require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; if (! empty($conf->projet->enabled)) require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; $langs->load("companies"); diff --git a/htdocs/donations/payment.php b/htdocs/donations/payment.php index 948cd221b0c..4df5b1c0e22 100644 --- a/htdocs/donations/payment.php +++ b/htdocs/donations/payment.php @@ -16,14 +16,14 @@ */ /** - * \file htdocs/compta/dons/payment.php + * \file htdocs/donations/payment.php * \ingroup Donation * \brief Page to add payment of a donation */ require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/don.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/dons/class/paymentdonation.class.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/class/paymentdonation.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $langs->load("bills"); @@ -50,7 +50,7 @@ if ($action == 'add_payment') if ($_POST["cancel"]) { - $loc = DOL_URL_ROOT.'/compta/dons/card.php?rowid='.$chid; + $loc = DOL_URL_ROOT.'/donations/card.php?rowid='.$chid; header("Location: ".$loc); exit; } @@ -129,7 +129,7 @@ if ($action == 'add_payment') if (! $error) { $db->commit(); - $loc = DOL_URL_ROOT.'/compta/dons/card.php?rowid='.$chid; + $loc = DOL_URL_ROOT.'/donations/card.php?rowid='.$chid; header('Location: '.$loc); exit; } @@ -180,7 +180,7 @@ if (GETPOST("action") == 'create') print '
'.$langs->trans("Donation").'
'.$langs->trans("Ref").''.$chid.'
'.$langs->trans("Ref").''.$chid.'
'.$langs->trans("Date")."".dol_print_date($don->date,'day')."
'.$langs->trans("Amount")."".price($don->amount,0,$outputlangs,1,-1,-1,$conf->currency).'
'; $listtmp=explode(',',$val); + $first=1; foreach($listtmp as $keyemail => $valemail) { + if (! $first) print ', '; + $first=0; $valemail=trim($valemail); //print $keyemail.' - '.$valemail.' - '.$reg[1].'
'; - if (isValidEmail($valemail)) + if (isValidEmail($valemail, 1)) { - print ' <'.$valemail.'>'; + if ($valemail == '__SUPERVISOREMAIL__') print $valemail; + else print ' <'.$valemail.'>'; } else { $langs->load("errors"); - print '   '.img_warning().' '.$langs->trans("ErrorBadEMail",$valemail); + print ' '.img_warning().' '.$langs->trans("ErrorBadEMail",$valemail); } } print '
'; print $langs->trans("Email"); print ''.$langs->trans("SeeModuleSetup").''.$langs->trans("SeeModuleSetup", $langs->transnoentitiesnoconv("Module600Name")).'
'; print ''; -print ''; +print ''; print ''; print "\n"; $var=true; @@ -210,7 +211,7 @@ print ''; /* * French params */ -if ($conf->global->MAIN_LANG_DEFAULT == "fr_FR") +if (preg_match('/fr/i',$outputlangs->defaultlang)) { print '
'; print_titre($langs->trans("FrenchOptions")); diff --git a/htdocs/donations/card.php b/htdocs/donations/card.php index 79b97c2fde3..0d1cea0d4f1 100644 --- a/htdocs/donations/card.php +++ b/htdocs/donations/card.php @@ -25,9 +25,9 @@ * \brief Page of donation card */ -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/core/modules/dons/modules_don.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/core/modules/dons/modules_don.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/core/lib/donation.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; diff --git a/htdocs/donations/core/modules/dons/html_cerfafr.modules.php b/htdocs/donations/core/modules/dons/html_cerfafr.modules.php index 0efaf8c4524..4f4c4b7be1a 100644 --- a/htdocs/donations/core/modules/dons/html_cerfafr.modules.php +++ b/htdocs/donations/core/modules/dons/html_cerfafr.modules.php @@ -20,11 +20,11 @@ */ /** - * \file htdocs/core/modules/dons/html_cerfafr.modules.php + * \file htdocs/donations/core/modules/dons/html_cerfafr.modules.php * \ingroup don * \brief Form of donation */ -require_once DOL_DOCUMENT_ROOT.'/core/modules/dons/modules_don.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/core/modules/dons/modules_don.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; @@ -132,7 +132,7 @@ class html_cerfafr extends ModeleDon else $paymentmode = ''; // Define contents - $donmodel=DOL_DOCUMENT_ROOT ."/core/modules/dons/html_cerfafr.html"; + $donmodel=DOL_DOCUMENT_ROOT ."/donations/core/modules/dons/html_cerfafr.html"; $form = implode('', file($donmodel)); $form = str_replace('__REF__',$don->id,$form); $form = str_replace('__DATE__',dol_print_date($don->date,'day',false,$outputlangs),$form); diff --git a/htdocs/donations/core/modules/dons/modules_don.php b/htdocs/donations/core/modules/dons/modules_don.php index 69db5bec011..f3a38bbfc0b 100644 --- a/htdocs/donations/core/modules/dons/modules_don.php +++ b/htdocs/donations/core/modules/dons/modules_don.php @@ -20,8 +20,8 @@ */ /** - * \file htdocs/core/modules/dons/modules_don.php - * \ingroup don + * \file htdocs/donations/core/modules/dons/modules_don.php + * \ingroup donations * \brief File of class to manage donation document generation */ require_once DOL_DOCUMENT_ROOT.'/core/class/commondocgenerator.class.php'; @@ -201,7 +201,7 @@ function don_create($db, $id, $message, $modele, $outputlangs, $hidedetails=0, $ $file = $prefix."_".preg_replace('/^html_/','',$modele).".modules.php"; // On verifie l'emplacement du modele - $file=dol_buildpath($reldir."core/modules/dons/".$file,0); + $file=dol_buildpath($reldir."donations/core/modules/dons/".$file,0); if (file_exists($file)) { $filefound=1; diff --git a/htdocs/donations/core/modules/modDon.class.php b/htdocs/donations/core/modules/modDon.class.php index bf5db49ec82..d602d867e1c 100644 --- a/htdocs/donations/core/modules/modDon.class.php +++ b/htdocs/donations/core/modules/modDon.class.php @@ -19,10 +19,10 @@ */ /** - * \defgroup don Module donation + * \defgroup don Module donations * \brief Module to manage the follow-up of the donations - * \file htdocs/core/modules/modDon.class.php - * \ingroup don + * \file htdocs/donations/core/modules/modDon.class.php + * \ingroup donations * \brief Description and activation file for module Donation */ diff --git a/htdocs/donations/document.php b/htdocs/donations/document.php index 16729a9bd81..19088425c8b 100644 --- a/htdocs/donations/document.php +++ b/htdocs/donations/document.php @@ -21,11 +21,11 @@ * \brief Page of linked files into donations */ -require '../../main.inc.php'; +require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/core/lib/donation.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; $langs->load("other"); diff --git a/htdocs/donations/index.php b/htdocs/donations/index.php index 9a4f13e7e4a..7ed677f6f58 100644 --- a/htdocs/donations/index.php +++ b/htdocs/donations/index.php @@ -23,7 +23,7 @@ * \brief Home page of donation module */ -require '../../main.inc.php'; +require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; $langs->load("donations"); diff --git a/htdocs/donations/info.php b/htdocs/donations/info.php index 2121e379a65..b3c60cf004e 100644 --- a/htdocs/donations/info.php +++ b/htdocs/donations/info.php @@ -17,12 +17,12 @@ /** * \file htdocs/donations/info.php - * \ingroup Donation + * \ingroup donations * \brief Page to show a donation information */ -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/donations/core/lib/donation.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; diff --git a/htdocs/donations/list.php b/htdocs/donations/list.php index 5e0c1690413..4f49c28fb59 100644 --- a/htdocs/donations/list.php +++ b/htdocs/donations/list.php @@ -20,11 +20,11 @@ /** * \file htdocs/donations/list.php - * \ingroup don - * \brief Page de liste des dons + * \ingroup donations + * \brief List of donations */ -require '../../main.inc.php'; +require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; if (! empty($conf->projet->enabled)) require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; diff --git a/htdocs/donations/payment.php b/htdocs/donations/payment.php index 4df5b1c0e22..b86678dcd39 100644 --- a/htdocs/donations/payment.php +++ b/htdocs/donations/payment.php @@ -17,11 +17,11 @@ /** * \file htdocs/donations/payment.php - * \ingroup Donation + * \ingroup donations * \brief Page to add payment of a donation */ -require '../../main.inc.php'; +require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/paymentdonation.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; diff --git a/htdocs/donations/stats.php b/htdocs/donations/stats.php index 7552c29ebc0..2dacd9e093f 100644 --- a/htdocs/donations/stats.php +++ b/htdocs/donations/stats.php @@ -22,7 +22,7 @@ * \brief Page des statistiques de dons */ -require '../../main.inc.php'; +require '../main.inc.php'; $langs->load("donations"); diff --git a/htdocs/langs/en_US/donations.lang b/htdocs/langs/en_US/donations.lang index 77d91ad801d..13634f98380 100644 --- a/htdocs/langs/en_US/donations.lang +++ b/htdocs/langs/en_US/donations.lang @@ -21,6 +21,8 @@ DonationStatusPaid=Donation received DonationStatusPromiseNotValidatedShort=Draft DonationStatusPromiseValidatedShort=Validated DonationStatusPaidShort=Received +DonationTitle=Donation receipt +DonationDatePayment=Payment date ValidPromess=Validate promise DonationReceipt=Donation receipt BuildDonationReceipt=Build receipt From 5e84ce69cae5d33ed1eaabeb51f51f93692bf35d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 20 Mar 2015 12:07:34 +0100 Subject: [PATCH 335/429] Fix code to avoid callback usage (this fails on some php) --- htdocs/index.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/htdocs/index.php b/htdocs/index.php index 15967013e8a..70950fb0b26 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -407,10 +407,11 @@ $var=true; //Remove any invalid response //load_board can return an integer if failed or WorkboardResponse if OK -$valid_dashboardlines = array_filter($dashboardlines, function ($board) { - return $board instanceof WorkboardResponse; -}); - +$valid_dashboardlines=array(); +foreach($dashboardlines as $tmp) +{ + if ($tmp instanceof WorkboardResponse) $valid_dashboardlines[] = $tmp; +} $rowspan = count($valid_dashboardlines); foreach($valid_dashboardlines as $board) From 70f6c3fdbb13134a3f2ead471a8b829e789d60fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Fri, 20 Mar 2015 12:59:37 +0100 Subject: [PATCH 336/429] NEW: List of recent modified supplier product prices in Supplier card --- htdocs/fourn/card.php | 46 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index b9957c12134..c88dae2e8f3 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -5,6 +5,7 @@ * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2010-2014 Juanjo Menent * Copyright (C) 2014 Jean Heimburger + * Copyright (C) 2015 Marcos García * * 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 @@ -313,9 +314,50 @@ if ($object->id > 0) $langs->load("products"); print '
'.$langs->trans("Parameter").''.$langs->trans("Parameters").' 
'; print ''; - print '
'.$langs->trans("ProductsAndServices").''; + print ''.$langs->trans("ProductsAndServices").''; print ''.$langs->trans("All").' '.$object->nbOfProductRefs().''; - print '
'; + print ''; + + //Query from product/liste.php + $sql = 'SELECT p.rowid, p.ref, p.label, pfp.tms,'; + $sql.= ' p.fk_product_type'; + $sql.= ' FROM '.MAIN_DB_PREFIX.'product_fournisseur_price as pfp'; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON p.rowid = pfp.fk_product"; + $sql.= ' WHERE p.entity IN ('.getEntity('product', 1).')'; + $sql.= ' AND pfp.fk_soc = '.$object->id; + $sql .= $db->order('pfp.tms', 'desc'); + $sql.= $db->plimit($MAXLIST); + + $query = $db->query($sql); + + $return = array(); + + if ($db->num_rows($query)) { + + $productstatic = new Product($db); + + while ($objp = $db->fetch_object($query)) { + + $var=!$var; + + $productstatic->id = $objp->rowid; + $productstatic->ref = $objp->ref; + $productstatic->label = $objp->label; + $productstatic->type = $objp->fk_product_type; + + print ""; + print ''; + print $productstatic->getNomUrl(1); + print ''; + print ''; + print dol_trunc(dol_htmlentities($objp->label), 30); + print ''; + print ''.dol_print_date($objp->tms).''; + print ''; + } + } + + print ''; } From 92af226fffdde4dca2cb0ef895eae46b180d6937 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 20 Mar 2015 15:19:42 +0100 Subject: [PATCH 337/429] Fix Not into official 3.7 but must be into migration for 3.7 when migration is done by 3.8 code --- htdocs/index.php | 9 +++++---- htdocs/install/mysql/migration/3.6.0-3.7.0.sql | 6 ++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/htdocs/index.php b/htdocs/index.php index 15967013e8a..70950fb0b26 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -407,10 +407,11 @@ $var=true; //Remove any invalid response //load_board can return an integer if failed or WorkboardResponse if OK -$valid_dashboardlines = array_filter($dashboardlines, function ($board) { - return $board instanceof WorkboardResponse; -}); - +$valid_dashboardlines=array(); +foreach($dashboardlines as $tmp) +{ + if ($tmp instanceof WorkboardResponse) $valid_dashboardlines[] = $tmp; +} $rowspan = count($valid_dashboardlines); foreach($valid_dashboardlines as $board) diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql index 7a432a1109e..73312c6c613 100755 --- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql +++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql @@ -1165,3 +1165,9 @@ UPDATE llx_bank_url set url = REPLACE( url, 'fiche.php', 'card.php'); -- Add id commandefourndet in llx_commande_fournisseur_dispatch to correct /fourn/commande/dispatch.php display when several times same product in supplier order ALTER TABLE llx_commande_fournisseur_dispatch ADD COLUMN fk_commandefourndet INTEGER NOT NULL DEFAULT 0 AFTER fk_product; + + +-- Not into official 3.7 but must be into migration for 3.7 when migration is done by 3.8 code +ALTER TABLE llx_extrafields ADD COLUMN perms varchar(255) after fieldrequired; +ALTER TABLE llx_extrafields ADD COLUMN list integer DEFAULT 0 after perms; + From b0e928c213ed9cd3715d5fa6d56c0d46b270b1e7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 20 Mar 2015 15:26:00 +0100 Subject: [PATCH 338/429] Disable migration with bugged versions --- htdocs/install/upgrade.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php index 22c18c15fee..1e1ba08b6f9 100644 --- a/htdocs/install/upgrade.php +++ b/htdocs/install/upgrade.php @@ -193,9 +193,9 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action'))) // Test database version is not forbidden for migration $dbversion_disallowed=array( array('type'=>'mysql','version'=>array(5,5,40)), - array('type'=>'mysqli','version'=>array(5,5,40)) - //,array('type'=>'mysql','version'=>array(5,5,41)), - //array('type'=>'mysqli','version'=>array(5,5,41)) + array('type'=>'mysqli','version'=>array(5,5,40)), + array('type'=>'mysql','version'=>array(5,5,41)), + array('type'=>'mysqli','version'=>array(5,5,41)) ); $listofforbiddenversion=''; foreach ($dbversion_disallowed as $dbversion_totest) From 0784e9638a7ab88df303b28d1c3d1b3941f5fff1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 20 Mar 2015 17:57:40 +0100 Subject: [PATCH 339/429] The test on db version must not lock the phpunit --- .travis.yml | 12 +++---- htdocs/install/upgrade.php | 64 +++++++++++++++++++++----------------- 2 files changed, 41 insertions(+), 35 deletions(-) diff --git a/.travis.yml b/.travis.yml index c97b547e499..6c5833ccfdb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -91,13 +91,13 @@ before_script: script: - cd htdocs/install - date -# - php upgrade.php 3.4.0 3.5.0 > upgrade.log -# - php upgrade2.php 3.4.0 3.5.0 > upgrade2.log - - php upgrade.php 3.5.0 3.6.0 >> upgrade.log - - php upgrade2.php 3.5.0 3.6.0 >> upgrade2.log - - php upgrade.php 3.6.0 3.7.0 >> upgrade.log +# - php upgrade.php 3.4.0 3.5.0 ignoredbversion > upgrade.log +# - php upgrade2.php 3.4.0 3.5.0 ignoredbversion > upgrade2.log + - php upgrade.php 3.5.0 3.6.0 ignoredbversion >> upgrade.log + - php upgrade2.php 3.5.0 3.6.0 ignoredbversion >> upgrade2.log + - php upgrade.php 3.6.0 3.7.0 ignoredbversion >> upgrade.log # - cat upgrade360370.log - - php upgrade2.php 3.6.0 3.7.0 >> upgrade2.log + - php upgrade2.php 3.6.0 3.7.0 ignoredbversion >> upgrade2.log # - cat upgrade2.log - cd ../.. - date diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php index 1e1ba08b6f9..126c0896c80 100644 --- a/htdocs/install/upgrade.php +++ b/htdocs/install/upgrade.php @@ -19,9 +19,11 @@ * Upgrade scripts can be ran from command line with syntax: * * cd htdocs/install - * php upgrade.php 3.4.0 3.5.0 + * php upgrade.php 3.4.0 3.5.0 [dirmodule|ignoredbversion] * php upgrade2.php 3.4.0 3.5.0 * + * Option 'dirmodule' allows to provide a path for an external module, so we migrate from command line a script from a module. + * Option 'ignoredbversion' allows to run migration even if database is a bugged database version. * Return code is 0 if OK, >0 if error */ @@ -55,7 +57,8 @@ $setuplang=GETPOST("selectlang",'',3)?GETPOST("selectlang",'',3):'auto'; $langs->setDefaultLang($setuplang); $versionfrom=GETPOST("versionfrom",'',3)?GETPOST("versionfrom",'',3):(empty($argv[1])?'':$argv[1]); $versionto=GETPOST("versionto",'',3)?GETPOST("versionto",'',3):(empty($argv[2])?'':$argv[2]); -$versionmodule=GETPOST("versionmodule",'',3)?GETPOST("versionmodule",'',3):(empty($argv[3])?'':$argv[3]); +$dirmodule=GETPOST("dirmodule",'',3)?GETPOST("dirmodule",'',3):(empty($argv[3])?'':$argv[3]); +$ignoredbversion=GETPOST('ignoredbversion','',3)?GETPOST('ignoredbversion','',3):(empty($argv[3])?'':$argv[3]); $langs->load("admin"); $langs->load("install"); @@ -191,31 +194,34 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action'))) } // Test database version is not forbidden for migration - $dbversion_disallowed=array( - array('type'=>'mysql','version'=>array(5,5,40)), - array('type'=>'mysqli','version'=>array(5,5,40)), - array('type'=>'mysql','version'=>array(5,5,41)), - array('type'=>'mysqli','version'=>array(5,5,41)) - ); - $listofforbiddenversion=''; - foreach ($dbversion_disallowed as $dbversion_totest) - { - if ($dbversion_totest['type'] == $db->type) $listofforbiddenversion.=($listofforbiddenversion?', ':'').join('.',$dbversion_totest['version']); - } - foreach ($dbversion_disallowed as $dbversion_totest) - { - //print $db->type.' - '.join('.',$versionarray).' - '.versioncompare($dbversion_totest['version'],$versionarray)."
\n"; - if ($dbversion_totest['type'] == $db->type - && (versioncompare($dbversion_totest['version'],$versionarray) == 0 || versioncompare($dbversion_totest['version'],$versionarray)<=-4 || versioncompare($dbversion_totest['version'],$versionarray)>=4) - ) - { - // Warning: database version too low. - print '
'.$langs->trans("ErrorDatabaseVersionForbiddenForMigration",join('.',$versionarray),$listofforbiddenversion)."
".$langs->trans("Error")."\n"; - dolibarr_install_syslog("upgrade: ".$langs->transnoentities("ErrorDatabaseVersionForbiddenForMigration",join('.',$versionarray),$listofforbiddenversion)); - $ok=0; - break; - } - } + if (empty($ignoredbversion)) + { + $dbversion_disallowed=array( + array('type'=>'mysql','version'=>array(5,5,40)), + array('type'=>'mysqli','version'=>array(5,5,40)), + array('type'=>'mysql','version'=>array(5,5,41)), + array('type'=>'mysqli','version'=>array(5,5,41)) + ); + $listofforbiddenversion=''; + foreach ($dbversion_disallowed as $dbversion_totest) + { + if ($dbversion_totest['type'] == $db->type) $listofforbiddenversion.=($listofforbiddenversion?', ':'').join('.',$dbversion_totest['version']); + } + foreach ($dbversion_disallowed as $dbversion_totest) + { + //print $db->type.' - '.join('.',$versionarray).' - '.versioncompare($dbversion_totest['version'],$versionarray)."
\n"; + if ($dbversion_totest['type'] == $db->type + && (versioncompare($dbversion_totest['version'],$versionarray) == 0 || versioncompare($dbversion_totest['version'],$versionarray)<=-4 || versioncompare($dbversion_totest['version'],$versionarray)>=4) + ) + { + // Warning: database version too low. + print '
'.$langs->trans("ErrorDatabaseVersionForbiddenForMigration",join('.',$versionarray),$listofforbiddenversion)."
".$langs->trans("Error")."\n"; + dolibarr_install_syslog("upgrade: ".$langs->transnoentities("ErrorDatabaseVersionForbiddenForMigration",join('.',$versionarray),$listofforbiddenversion)); + $ok=0; + break; + } + } + } } // Force l'affichage de la progression @@ -370,7 +376,7 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action'))) if ($ok) { $dir = "mysql/migration/"; // We use mysql migration scripts whatever is database driver - if (! empty($versionmodule)) $dir=dol_buildpath('/'.$versionmodule.'/sql/',0); + if (! empty($dirmodule)) $dir=dol_buildpath('/'.$dirmodule.'/sql/',0); // Clean last part to exclude minor version x.y.z -> x.y $newversionfrom=preg_replace('/(\.[0-9]+)$/i','.0',$versionfrom); @@ -475,7 +481,7 @@ $ret=0; if (! $ok && isset($argv[1])) $ret=1; dol_syslog("Exit ".$ret); -pFooter(((! $ok && empty($_GET["ignoreerrors"])) || $versionmodule),$setuplang); +pFooter(((! $ok && empty($_GET["ignoreerrors"])) || $dirmodule),$setuplang); if ($db->connected) $db->close(); From eeb09b83a10fd4dcb843b3afde336866258ff014 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 20 Mar 2015 20:50:46 +0100 Subject: [PATCH 340/429] The test on db version must not lock the phpunit --- htdocs/install/upgrade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php index 126c0896c80..359980763b0 100644 --- a/htdocs/install/upgrade.php +++ b/htdocs/install/upgrade.php @@ -57,8 +57,8 @@ $setuplang=GETPOST("selectlang",'',3)?GETPOST("selectlang",'',3):'auto'; $langs->setDefaultLang($setuplang); $versionfrom=GETPOST("versionfrom",'',3)?GETPOST("versionfrom",'',3):(empty($argv[1])?'':$argv[1]); $versionto=GETPOST("versionto",'',3)?GETPOST("versionto",'',3):(empty($argv[2])?'':$argv[2]); -$dirmodule=GETPOST("dirmodule",'',3)?GETPOST("dirmodule",'',3):(empty($argv[3])?'':$argv[3]); -$ignoredbversion=GETPOST('ignoredbversion','',3)?GETPOST('ignoredbversion','',3):(empty($argv[3])?'':$argv[3]); +$dirmodule=((GETPOST("dirmodule",'',3) && GETPOST("dirmodule",'',3) != 'ignoredbversion'))?GETPOST("dirmodule",'',3):((empty($argv[3]) || $argv[3] == 'ignoredbversion')?'':$argv[3]); +$ignoredbversion=(GETPOST('ignoredbversion','',3)=='ignoredbversion')?GETPOST('ignoredbversion','',3):((empty($argv[3]) || $argv[3] != 'ignoredbversion')?'':$argv[3]); $langs->load("admin"); $langs->load("install"); From b8ed5533658b83e327faa50b38b694bd7c76ed25 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 21 Mar 2015 01:08:29 +0100 Subject: [PATCH 341/429] We must keep the @, some tools use it to know it is login page. --- htdocs/core/tpl/login.tpl.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/core/tpl/login.tpl.php b/htdocs/core/tpl/login.tpl.php index 29eda49a9a9..f9e22ed3812 100644 --- a/htdocs/core/tpl/login.tpl.php +++ b/htdocs/core/tpl/login.tpl.php @@ -29,7 +29,7 @@ if (GETPOST('dol_use_jmobile')) $conf->dol_use_jmobile=1; if (! empty($conf->dol_use_jmobile)) $conf->use_javascript_ajax=1; $arrayofjs=array('/core/js/dst.js'.(empty($conf->dol_use_jmobile)?'':'?version='.urlencode(DOL_VERSION))); // Javascript code on logon page only to detect user tz, dst_observed, dst_first, dst_second -$titleofloginpage=$langs->trans('Login').' '.$title; // title is defined by dol_loginfunction in security2.lib.php +$titleofloginpage=$langs->trans('Login').' @ '.$title; // title is defined by dol_loginfunction in security2.lib.php. We must keep the @, some tools use it to know it is login page. print top_htmlhead('',$titleofloginpage,0,0,$arrayofjs); ?> @@ -49,7 +49,6 @@ $(document).ready(function () {
'; + + +/* + * Boutons Actions + */ +print '
'; + +/* +if (! empty($conf->global->BILL_ADD_PAYMENT_VALIDATION)) +{ + if ($user->societe_id == 0 && $payment->statut == 0 && $_GET['action'] == '') + { + if ($user->rights->facture->paiement) + { + print ''.$langs->trans('Valid').''; + } + } +} +*/ + +if ($_GET['action'] == '') +{ + if ($user->rights->don->supprimer) + { + if (! $disable_delete) + { + print ''.$langs->trans('Delete').''; + } + else + { + print ''.$langs->trans('Delete').''; + } + } +} + +print '
'; + + + +llxFooter(); + +$db->close(); diff --git a/htdocs/donations/payment/index.html b/htdocs/donations/payment/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/donations/payment.php b/htdocs/donations/payment/payment.php similarity index 99% rename from htdocs/donations/payment.php rename to htdocs/donations/payment/payment.php index b86678dcd39..871bbaa1056 100644 --- a/htdocs/donations/payment.php +++ b/htdocs/donations/payment/payment.php @@ -21,7 +21,7 @@ * \brief Page to add payment of a donation */ -require '../main.inc.php'; +require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/paymentdonation.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; From 9264482e25eb0bbfd323f14d1d2ffae8846ca6f6 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 22 Mar 2015 08:20:19 +0100 Subject: [PATCH 348/429] Update works --- htdocs/{donations => }/core/lib/donation.lib.php | 0 .../core/modules/dons/html_cerfafr.html | 0 .../core/modules/dons/html_cerfafr.modules.php | 2 +- htdocs/{donations => }/core/modules/dons/index.html | 0 .../{donations => }/core/modules/dons/modules_don.php | 4 ++-- htdocs/{donations => }/core/modules/modDon.class.php | 0 htdocs/donations/admin/donation.php | 5 +++-- htdocs/donations/card.php | 10 +++++----- htdocs/donations/document.php | 4 ++-- htdocs/donations/index.php | 6 +++--- htdocs/donations/info.php | 2 +- htdocs/donations/payment/card.php | 2 +- 12 files changed, 18 insertions(+), 17 deletions(-) rename htdocs/{donations => }/core/lib/donation.lib.php (100%) rename htdocs/{donations => }/core/modules/dons/html_cerfafr.html (100%) rename htdocs/{donations => }/core/modules/dons/html_cerfafr.modules.php (99%) rename htdocs/{donations => }/core/modules/dons/index.html (100%) rename htdocs/{donations => }/core/modules/dons/modules_don.php (97%) rename htdocs/{donations => }/core/modules/modDon.class.php (100%) diff --git a/htdocs/donations/core/lib/donation.lib.php b/htdocs/core/lib/donation.lib.php similarity index 100% rename from htdocs/donations/core/lib/donation.lib.php rename to htdocs/core/lib/donation.lib.php diff --git a/htdocs/donations/core/modules/dons/html_cerfafr.html b/htdocs/core/modules/dons/html_cerfafr.html similarity index 100% rename from htdocs/donations/core/modules/dons/html_cerfafr.html rename to htdocs/core/modules/dons/html_cerfafr.html diff --git a/htdocs/donations/core/modules/dons/html_cerfafr.modules.php b/htdocs/core/modules/dons/html_cerfafr.modules.php similarity index 99% rename from htdocs/donations/core/modules/dons/html_cerfafr.modules.php rename to htdocs/core/modules/dons/html_cerfafr.modules.php index 4f4c4b7be1a..69484033374 100644 --- a/htdocs/donations/core/modules/dons/html_cerfafr.modules.php +++ b/htdocs/core/modules/dons/html_cerfafr.modules.php @@ -24,7 +24,7 @@ * \ingroup don * \brief Form of donation */ -require_once DOL_DOCUMENT_ROOT.'/donations/core/modules/dons/modules_don.php'; +require_once DOL_DOCUMENT_ROOT.'/core/modules/dons/modules_don.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; diff --git a/htdocs/donations/core/modules/dons/index.html b/htdocs/core/modules/dons/index.html similarity index 100% rename from htdocs/donations/core/modules/dons/index.html rename to htdocs/core/modules/dons/index.html diff --git a/htdocs/donations/core/modules/dons/modules_don.php b/htdocs/core/modules/dons/modules_don.php similarity index 97% rename from htdocs/donations/core/modules/dons/modules_don.php rename to htdocs/core/modules/dons/modules_don.php index f3a38bbfc0b..abb7dd105ae 100644 --- a/htdocs/donations/core/modules/dons/modules_don.php +++ b/htdocs/core/modules/dons/modules_don.php @@ -20,7 +20,7 @@ */ /** - * \file htdocs/donations/core/modules/dons/modules_don.php + * \file htdocs/core/modules/dons/modules_don.php * \ingroup donations * \brief File of class to manage donation document generation */ @@ -201,7 +201,7 @@ function don_create($db, $id, $message, $modele, $outputlangs, $hidedetails=0, $ $file = $prefix."_".preg_replace('/^html_/','',$modele).".modules.php"; // On verifie l'emplacement du modele - $file=dol_buildpath($reldir."donations/core/modules/dons/".$file,0); + $file=dol_buildpath($reldir."core/modules/dons/".$file,0); if (file_exists($file)) { $filefound=1; diff --git a/htdocs/donations/core/modules/modDon.class.php b/htdocs/core/modules/modDon.class.php similarity index 100% rename from htdocs/donations/core/modules/modDon.class.php rename to htdocs/core/modules/modDon.class.php diff --git a/htdocs/donations/admin/donation.php b/htdocs/donations/admin/donation.php index ba0a72843fc..6c363c4bdc1 100644 --- a/htdocs/donations/admin/donation.php +++ b/htdocs/donations/admin/donation.php @@ -25,7 +25,7 @@ */ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/core/lib/donation.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; @@ -54,7 +54,8 @@ if ($action == 'specimen') $don->initAsSpecimen(); // Search template files - $dir = DOL_DOCUMENT_ROOT . "/donations/core/modules/dons/"; + $dir = DOL_DOCUMENT_ROOT . "/core/modules/dons/"; + $dir = DOL_DOCUMENT_ROOT . "/core/modules/dons/"; $file = $modele.".modules.php"; if (file_exists($dir.$file)) { diff --git a/htdocs/donations/card.php b/htdocs/donations/card.php index a8424da558e..6c2bd28a2d0 100644 --- a/htdocs/donations/card.php +++ b/htdocs/donations/card.php @@ -20,14 +20,14 @@ */ /** - * \file htdocs/donations/card.php - * \ingroup don - * \brief Page of donation card + * \file htdocs/donations/card.php + * \ingroup donations + * \brief Page of donation card */ require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/core/modules/dons/modules_don.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/core/lib/donation.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/modules/dons/modules_don.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; diff --git a/htdocs/donations/document.php b/htdocs/donations/document.php index 19088425c8b..0cfb0447630 100644 --- a/htdocs/donations/document.php +++ b/htdocs/donations/document.php @@ -17,7 +17,7 @@ /** * \file htdocs/donations/document.php - * \ingroup Donation + * \ingroup donations * \brief Page of linked files into donations */ @@ -25,7 +25,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/core/lib/donation.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; $langs->load("other"); diff --git a/htdocs/donations/index.php b/htdocs/donations/index.php index 7ed677f6f58..ac64d6b2dde 100644 --- a/htdocs/donations/index.php +++ b/htdocs/donations/index.php @@ -18,9 +18,9 @@ */ /** - * \file htdocs/donations/index.php - * \ingroup don - * \brief Home page of donation module + * \file htdocs/donations/index.php + * \ingroup donations + * \brief Home page of donation module */ require '../main.inc.php'; diff --git a/htdocs/donations/info.php b/htdocs/donations/info.php index b3c60cf004e..a85b734fcf6 100644 --- a/htdocs/donations/info.php +++ b/htdocs/donations/info.php @@ -22,7 +22,7 @@ */ require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/core/lib/donation.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; diff --git a/htdocs/donations/payment/card.php b/htdocs/donations/payment/card.php index 3e4d03d15d2..6b30fdcc89b 100644 --- a/htdocs/donations/payment/card.php +++ b/htdocs/donations/payment/card.php @@ -121,7 +121,7 @@ $form = new Form($db); $h=0; -$head[$h][0] = DOL_URL_ROOT.'/donations/payment/card.php?id='.$_GET["id"]; +$head[$h][0] = DOL_URL_ROOT.'/donations/payment/card.php?id='.$id; $head[$h][1] = $langs->trans("Card"); $hselected = $h; $h++; From dafc955848d95a6b74e7bea8182e2855002bfaf0 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 22 Mar 2015 08:25:45 +0100 Subject: [PATCH 349/429] Correct path --- htdocs/donations/admin/donation.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/donations/admin/donation.php b/htdocs/donations/admin/donation.php index 6c363c4bdc1..fa785763cc0 100644 --- a/htdocs/donations/admin/donation.php +++ b/htdocs/donations/admin/donation.php @@ -55,7 +55,6 @@ if ($action == 'specimen') // Search template files $dir = DOL_DOCUMENT_ROOT . "/core/modules/dons/"; - $dir = DOL_DOCUMENT_ROOT . "/core/modules/dons/"; $file = $modele.".modules.php"; if (file_exists($dir.$file)) { @@ -176,7 +175,7 @@ else if ($action == 'setart885') { * View */ -$dir = DOL_DOCUMENT_ROOT.'/donations/core/modules/dons/'; +$dir = "../../core/modules/dons/"; $form=new Form($db); llxHeader('',$langs->trans("DonationsSetup"),'DonConfiguration'); From 87da1d734e9b104d4e92c1407cea20c3a171a61e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Mar 2015 12:13:26 +0100 Subject: [PATCH 350/429] mysql 5.5.41 is still bugged returning "lost connexion" during migration but there is no more data loss so we can allow this version. A database upgrade to 5.6 will be required if this occurs. --- htdocs/install/upgrade.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php index 359980763b0..c001a771f06 100644 --- a/htdocs/install/upgrade.php +++ b/htdocs/install/upgrade.php @@ -198,9 +198,9 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action'))) { $dbversion_disallowed=array( array('type'=>'mysql','version'=>array(5,5,40)), - array('type'=>'mysqli','version'=>array(5,5,40)), - array('type'=>'mysql','version'=>array(5,5,41)), - array('type'=>'mysqli','version'=>array(5,5,41)) + array('type'=>'mysqli','version'=>array(5,5,40)) //, + //array('type'=>'mysql','version'=>array(5,5,41)), + //array('type'=>'mysqli','version'=>array(5,5,41)) ); $listofforbiddenversion=''; foreach ($dbversion_disallowed as $dbversion_totest) From 15ac0894c9c3adb47cdc93b8b30da74f80202db7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Mar 2015 12:22:11 +0100 Subject: [PATCH 351/429] Prepare 3.7 release --- ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index 2d8c32c7986..456f58e3d60 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,12 @@ English Dolibarr ChangeLog -------------------------------------------------------------- +WARNING: Do not try to make any Dolibarr upgrade if you are running Mysql version 5.5.40. +Mysql version 5.5.40 has a very critical bug making your data beeing definitely lost. +You may also experience troubles with Mysql 5.5.41 with error "Lost connection" during migration. +Upgrading to any other version or database system is abolutely required BEFORE trying to +make a migration. + ***** ChangeLog for 3.7 compared to 3.6.* ***** For users: From 2d90256640f987125704f5cdc07065f6fc43cc98 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Mar 2015 12:51:29 +0100 Subject: [PATCH 352/429] Revert "Refactor 1" --- htdocs/comm/propal/class/propal.class.php | 6 +- htdocs/commande/class/commande.class.php | 74 +++++----- htdocs/compta/facture/class/facture.class.php | 36 ++++- htdocs/core/class/commoninvoice.class.php | 95 ------------ htdocs/core/class/commonobject.class.php | 30 ++-- htdocs/core/class/commonobjectline.class.php | 13 -- htdocs/core/class/commonorder.class.php | 136 +----------------- htdocs/core/lib/functions.lib.php | 4 +- htdocs/core/tpl/objectline_create.tpl.php | 2 +- htdocs/core/tpl/objectline_edit.tpl.php | 4 +- htdocs/core/tpl/objectline_view.tpl.php | 16 +-- htdocs/fichinter/class/fichinter.class.php | 1 + htdocs/filefunc.inc.php | 1 + .../class/fournisseur.commande.class.php | 98 ++++++------- .../fourn/class/fournisseur.facture.class.php | 122 ++++++---------- htdocs/fourn/commande/card.php | 2 +- htdocs/fourn/facture/card.php | 2 +- htdocs/margin/admin/margin.php | 3 + htdocs/projet/admin/project.php | 7 +- htdocs/societe/admin/societe.php | 5 +- 20 files changed, 208 insertions(+), 449 deletions(-) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 533df89b773..8909441b9c1 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -107,9 +107,6 @@ class Propal extends CommonObject var $products=array(); var $extraparams=array(); - /** - * @var PropaleLigne[] - */ var $lines = array(); var $line; @@ -2804,6 +2801,9 @@ class Propal extends CommonObject */ class PropaleLigne extends CommonObject { + var $db; + var $error; + public $element='propaldet'; public $table_element='propaldet'; diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 2d377758aa5..1bcfa1ee7cb 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -104,10 +104,7 @@ class Commande extends CommonOrder var $user_author_id; - /** - * @var OrderLine[] - */ - var $lines = array(); + var $lines = array(); //Incorterms var $fk_incoterms; @@ -1638,12 +1635,12 @@ class Commande extends CommonOrder $line = new OrderLine($this->db); - $line->rowid = $objp->rowid; + $line->rowid = $objp->rowid; // \deprecated $line->id = $objp->rowid; $line->fk_commande = $objp->fk_commande; - $line->commande_id = $objp->fk_commande; + $line->commande_id = $objp->fk_commande; // \deprecated $line->label = $objp->custom_label; - $line->desc = $objp->description; + $line->desc = $objp->description; // Description ligne $line->product_type = $objp->product_type; $line->qty = $objp->qty; $line->tva_tx = $objp->tva_tx; @@ -1669,11 +1666,11 @@ class Commande extends CommonOrder $line->special_code = $objp->special_code; $line->fk_parent_line = $objp->fk_parent_line; - $line->ref = $objp->product_ref; + $line->ref = $objp->product_ref; // TODO deprecated $line->product_ref = $objp->product_ref; - $line->libelle = $objp->product_label; + $line->libelle = $objp->product_label; // TODO deprecated $line->product_label = $objp->product_label; - $line->product_desc = $objp->product_desc; + $line->product_desc = $objp->product_desc; // Description produit $line->fk_product_type = $objp->fk_product_type; // Produit ou service $line->date_start = $this->db->jdate($objp->date_start); @@ -3178,7 +3175,6 @@ class Commande extends CommonOrder $this->lines[$i] = new OrderLine($this->db); $this->lines[$i]->id = $obj->rowid; - $this->lines[$i]->rowid = $obj->rowid; $this->lines[$i]->label = $obj->custom_label; $this->lines[$i]->description = $obj->description; $this->lines[$i]->fk_product = $obj->fk_product; @@ -3265,44 +3261,56 @@ class Commande extends CommonOrder */ class OrderLine extends CommonOrderLine { + var $db; + var $error; + public $element='commandedet'; public $table_element='commandedet'; var $oldline; - /** - * Id of parent order - * @var int - */ - public $fk_commande; - - /** - * Id of parent order - * @var int - * @deprecated Use fk_commande - */ - public $commande_id; - // From llx_commandedet + var $rowid; var $fk_parent_line; var $fk_facture; var $label; + var $desc; // Description ligne + var $fk_product; // Id produit predefini + var $product_type = 0; // Type 0 = product, 1 = Service + + var $qty; // Quantity (example 2) + var $tva_tx; // VAT Rate for product/service (example 19.6) + var $localtax1_tx; // Local tax 1 + var $localtax2_tx; // Local tax 2 + var $localtax1_type; // Local tax 1 type + var $localtax2_type; // Local tax 2 type + var $subprice; // U.P. HT (example 100) + var $remise_percent; // % for line discount (example 20%) var $fk_remise_except; var $rang = 0; var $fk_fournprice; - - /** - * Buy price without taxes - * @var float - */ var $pa_ht; var $marge_tx; var $marque_tx; + var $info_bits = 0; // Bit 0: 0 si TVA normal - 1 si TVA NPR + // Bit 1: 0 ligne normale - 1 si ligne de remise fixe + var $special_code = 0; + var $total_ht; // Total HT de la ligne toute quantite et incluant la remise ligne + var $total_tva; // Total TVA de la ligne toute quantite et incluant la remise ligne + var $total_localtax1; // Total local tax 1 for the line + var $total_localtax2; // Total local tax 2 for the line + var $total_ttc; // Total TTC de la ligne toute quantite et incluant la remise ligne - /** - * @deprecated - */ - var $remise; + // Ne plus utiliser + var $remise; + var $price; + + // From llx_product + var $ref; // deprecated + var $libelle; // deprecated + var $product_ref; + var $product_label; // Label produit + var $product_desc; // Description produit // Added by Matelli (See http://matelli.fr/showcases/patchs-dolibarr/add-dates-in-order-lines.html) // Start and end date of the line diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 38fab4c217c..48955652ac5 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -3408,7 +3408,6 @@ class Facture extends CommonInvoice $this->lines[$i] = new FactureLigne($this->db); $this->lines[$i]->id = $obj->rowid; - $this->lines[$i]->rowid = $obj->rowid; $this->lines[$i]->label = $obj->custom_label; // deprecated $this->lines[$i]->description = $obj->description; $this->lines[$i]->fk_product = $obj->fk_product; @@ -3607,12 +3606,16 @@ class Facture extends CommonInvoice */ class FactureLigne extends CommonInvoiceLine { + var $db; + var $error; + public $element='facturedet'; public $table_element='facturedet'; var $oldline; //! From llx_facturedet + var $rowid; //! Id facture var $fk_facture; //! Id parent line @@ -3620,9 +3623,17 @@ class FactureLigne extends CommonInvoiceLine var $label; // deprecated //! Description ligne var $desc; + var $fk_product; // Id of predefined product + var $product_type = 0; // Type 0 = product, 1 = Service + var $qty; // Quantity (example 2) + var $tva_tx; // Taux tva produit/service (example 19.6) + var $localtax1_tx; // Local tax 1 + var $localtax2_tx; // Local tax 2 var $localtax1_type; // Local tax 1 type var $localtax2_type; // Local tax 2 type + var $subprice; // P.U. HT (example 100) + var $remise_percent; // % de la remise ligne (example 20%) var $fk_remise_except; // Link to line into llx_remise_except var $rang = 0; @@ -3631,6 +3642,10 @@ class FactureLigne extends CommonInvoiceLine var $marge_tx; var $marque_tx; + var $info_bits = 0; // Liste d'options cumulables: + // Bit 0: 0 si TVA normal - 1 si TVA NPR + // Bit 1: 0 si ligne normal - 1 si bit discount (link to line into llx_remise_except) + var $special_code; // Liste d'options non cumulabels: // 1: frais de port // 2: ecotaxe @@ -3639,6 +3654,15 @@ class FactureLigne extends CommonInvoiceLine var $origin; var $origin_id; + //! Total HT de la ligne toute quantite et incluant la remise ligne + var $total_ht; + //! Total TVA de la ligne toute quantite et incluant la remise ligne + var $total_tva; + var $total_localtax1; //Total Local tax 1 de la ligne + var $total_localtax2; //Total Local tax 2 de la ligne + //! Total TTC de la ligne toute quantite et incluant la remise ligne + var $total_ttc; + var $fk_code_ventilation = 0; var $date_start; @@ -3667,6 +3691,16 @@ class FactureLigne extends CommonInvoiceLine */ public $fk_prev_id; + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + function __construct($db) + { + $this->db = $db; + } + /** * Load invoice line from database * diff --git a/htdocs/core/class/commoninvoice.class.php b/htdocs/core/class/commoninvoice.class.php index 1a7ebfc34c8..6087a5a0adb 100644 --- a/htdocs/core/class/commoninvoice.class.php +++ b/htdocs/core/class/commoninvoice.class.php @@ -400,100 +400,5 @@ require_once DOL_DOCUMENT_ROOT .'/core/class/commonobjectline.class.php'; */ abstract class CommonInvoiceLine extends CommonObjectLine { - /** - * Quantity - * @var int - */ - public $qty; - - /** - * Unit price before taxes - * @var float - */ - public $subprice; - - /** - * Type of the product. 0 for product 1 for service - * @var int - */ - public $product_type = 0; - - /** - * Id of corresponding product - * @var int - */ - public $fk_product; - - /** - * VAT % - * @var float - */ - public $tva_tx; - - /** - * Local tax 1 % - * @var float - */ - public $localtax1_tx; - - /** - * Local tax 2 % - * @var float - */ - public $localtax2_tx; - - /** - * Percent of discount - * @var float - */ - public $remise_percent; - - /** - * Total amount before taxes - * @var float - */ - public $total_ht; - - /** - * Total VAT amount - * @var float - */ - public $total_tva; - - /** - * Total local tax 1 amount - * @var float - */ - public $total_localtax1; - - /** - * Total local tax 2 amount - * @var float - */ - public $total_localtax2; - - /** - * Total amount with taxes - * @var float - */ - public $total_ttc; - - /** - * Liste d'options cumulables: - * Bit 0: 0 si TVA normal - 1 si TVA NPR - * Bit 1: 0 si ligne normal - 1 si bit discount (link to line into llx_remise_except) - * @var int - */ - public $info_bits = 0; - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct(DoliDB $db) - { - $this->db = $db; - } } diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 5dc524d964c..97157c6d408 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2685,9 +2685,10 @@ abstract class CommonObject * @param string $buyer Object of buyer third party * @param string $selected Object line selected * @param int $dateSelector 1=Show also date range input fields + * @param int $permtoedit Permission to edit line * @return void */ - function printObjectLines($action, $seller, $buyer, $selected=0, $dateSelector=0) + function printObjectLines($action, $seller, $buyer, $selected=0, $dateSelector=0, $permtoedit=0) { global $conf, $hookmanager, $inputalsopricewithtax, $usemargins, $langs, $user; @@ -2780,7 +2781,7 @@ abstract class CommonObject } else { - $this->printObjectLine($action,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected,$extrafieldsline); + $this->printObjectLine($action,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected,$extrafieldsline,$permtoedit); } $i++; @@ -2792,7 +2793,7 @@ abstract class CommonObject * TODO Move this into an output class file (htmlline.class.php) * * @param string $action GET/POST action - * @param CommonObjectLine $line Selected object line to output + * @param array $line Selected object line to output * @param string $var Is it a an odd line (true) * @param int $num Number of line (0) * @param int $i I @@ -2801,14 +2802,13 @@ abstract class CommonObject * @param string $buyer Object of buyer third party * @param string $selected Object line selected * @param object $extrafieldsline Object of extrafield line attribute + * @param int $permtoedit Permission to edit * @return void */ - function printObjectLine($action,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected=0,$extrafieldsline=0) + function printObjectLine($action,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected=0,$extrafieldsline=0,$permtoedit=0) { global $conf,$langs,$user,$object,$hookmanager; - global $form,$bc,$bcdd, $object_rights; - - $object_rights = $this->getRights(); + global $form,$bc,$bcdd; $element=$this->element; @@ -2821,7 +2821,7 @@ abstract class CommonObject if (! empty($line->date_end)) $type=1; // deprecated // Ligne en mode visu - if ($action != 'editline' || $selected != $line->rowid) + if ($action != 'editline' || $selected != $line->id) { // Product if ($line->fk_product > 0) @@ -2879,7 +2879,7 @@ abstract class CommonObject } // Ligne en mode update - if ($this->statut == 0 && $action == 'editline' && $selected == $line->rowid) + if ($this->statut == 0 && $action == 'editline' && $selected == $line->id) { $label = (! empty($line->label) ? $line->label : (($line->fk_product > 0) ? $line->product_label : '')); if (! empty($conf->global->MAIN_HTML5_PLACEHOLDER)) $placeholder=' placeholder="'.$langs->trans("Label").'"'; @@ -3883,16 +3883,4 @@ abstract class CommonObject return $out; } - /** - * Returns the rights used for this class - * @return stdClass - */ - public function getRights() - { - global $user; - - return $user->rights->{$this->element}; - } - - } diff --git a/htdocs/core/class/commonobjectline.class.php b/htdocs/core/class/commonobjectline.class.php index b88dfabe83d..c3c8d823a34 100644 --- a/htdocs/core/class/commonobjectline.class.php +++ b/htdocs/core/class/commonobjectline.class.php @@ -28,19 +28,6 @@ */ abstract class CommonObjectLine extends CommonObject { - /** - * Id of the line - * @var int - * @deprecated Use $rowid - */ - public $id; - - /** - * Id of the line - * @var int - */ - public $rowid; - // TODO // Currently we need function at end of file CommonObject for all object lines. Should find a way to avoid duplicate code. diff --git a/htdocs/core/class/commonorder.class.php b/htdocs/core/class/commonorder.class.php index b4882af8a58..469e1676a53 100644 --- a/htdocs/core/class/commonorder.class.php +++ b/htdocs/core/class/commonorder.class.php @@ -22,7 +22,6 @@ */ require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php'; -require_once DOL_DOCUMENT_ROOT .'/core/class/commonobjectline.class.php'; /** * \class CommonOrder @@ -37,141 +36,8 @@ abstract class CommonOrder extends CommonObject * \class CommonOrderLine * \brief Superclass for orders classes */ -abstract class CommonOrderLine extends CommonObjectLine +abstract class CommonOrderLine extends CommonObject { - /** - * Product ref - * @var string - * @deprecated Use product_ref - */ - public $ref; - - /** - * Product ref - * @var string - */ - public $product_ref; - - /** - * Product label - * @var string - * @deprecated Use product_label - */ - public $libelle; - - /** - * Product label - * @var string - */ - public $product_label; - - /** - * Product description - * @var string - */ - public $product_desc; - - /** - * Quantity - * @var int - */ - public $qty; - - /** - * @deprecated - */ - var $price; - - /** - * Unit price before taxes - * @var float - */ - public $subprice; - - /** - * Type of the product. 0 for product 1 for service - * @var int - */ - public $product_type = 0; - - /** - * Description of the line - * @var string - */ - public $desc; - - /** - * Id of corresponding product - * @var int - */ - public $fk_product; - - /** - * Percent line discount - * @var float - */ - public $remise_percent; - - /** - * VAT % - * @var float - */ - public $tva_tx; - - /** - * Local tax 1 % - * @var float - */ - public $localtax1_tx; - - /** - * Local tax 2 % - * @var float - */ - public $localtax2_tx; - - public $localtax1_type; - public $localtax2_type; - - /** - * Total amount before taxes - * @var float - */ - public $total_ht; - - /** - * Total VAT amount - * @var float - */ - public $total_tva; - - /** - * Total local tax 1 amount - * @var float - */ - public $total_localtax1; - - /** - * Total local tax 2 amount - * @var float - */ - public $total_localtax2; - - /** - * Total amount with taxes - * @var float - */ - public $total_ttc; - - /** - * Liste d'options cumulables: - * Bit 0: 0 si TVA normal - 1 si TVA NPR - * Bit 1: 0 si ligne normal - 1 si bit discount (link to line into llx_remise_except) - * @var int - */ - public $info_bits = 0; - - public $special_code = 0; } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 73a1633e78c..d2ce8023a65 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3927,7 +3927,9 @@ function dol_htmlcleanlastbr($stringtodecode) */ function dol_html_entity_decode($a,$b,$c='UTF-8') { - return html_entity_decode($a,$b,$c); + // We use @ to avoid warning on PHP4 that does not support entity decoding to UTF8; + $ret=@html_entity_decode($a,$b,$c); + return $ret; } /** diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 84cc158515d..027e6b3d816 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -286,7 +286,7 @@ else { $newline = new CommandeFournisseurLigne($this->db); } elseif ($this->table_element_line=='facture_fourn_det') { - $newline = new SupplierInvoiceLine($this->db); + $newline = new FactureFournisseurLigne($this->db); } if (is_object($newline)) { print $newline->showOptionals($extrafieldsline, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay+8)); diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php index 6be8a82d69a..5b895a69da3 100644 --- a/htdocs/core/tpl/objectline_edit.tpl.php +++ b/htdocs/core/tpl/objectline_edit.tpl.php @@ -53,9 +53,9 @@ $coldisplay=-1; // We remove first td ?> > global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="2"' : ''); ?>>global->MAIN_VIEW_LINE_NUMBER))?2:1; ?> -
+
- + diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index da122306dbc..1fd86ed871d 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -48,11 +48,11 @@ if (empty($usemargins)) $usemargins=0; ?> -> +> global->MAIN_VIEW_LINE_NUMBER)) { ?> -
+
info_bits & 2) == 2) { ?> tva_tx,'%',$line->info_bits); ?> - pu_ht); ?> + pu_ht)?price($line->pu_ht):price($line->subprice)); ?> pu_ttc)?price($line->pu_ttc):price($line->subprice)); ?> @@ -179,11 +179,11 @@ if (empty($usemargins)) $usemargins=0; total_ht); ?> - statut == 0 && ($object_rights->creer)) { ?> + statut == 0 && ($user->rights->$element->creer || $permtoedit)) { ?> info_bits & 2) == 2) { ?> - rowid.'#line_'.$line->rowid; ?>"> + id.'#line_'.$line->id; ?>"> @@ -192,7 +192,7 @@ if (empty($usemargins)) $usemargins=0; situation_counter == 1 || !$this->situation_cycle_ref) { - print 'rowid . '">'; + print 'id . '">'; print img_delete(); print ''; } @@ -202,12 +202,12 @@ if (empty($usemargins)) $usemargins=0; 1 && empty($conf->browser->phone) && ($this->situation_counter == 1 || !$this->situation_cycle_ref)) { ?> 0) { ?> - rowid; ?>"> + id; ?>"> - rowid; ?>"> + id; ?>"> diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index baf2555a905..51d37dcc8ae 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -1022,6 +1022,7 @@ class FichinterLigne extends CommonObjectLine var $error; // From llx_fichinterdet + var $rowid; var $fk_fichinter; var $desc; // Description ligne var $datei; // Date intervention diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index 15bee891775..7343e65c854 100644 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -83,6 +83,7 @@ if (! empty($dolibarr_strict_mode)) } else { + if (! defined('E_DEPRECATED')) define('E_DEPRECATED',0); // For PHP < 5.3.0 compatibility error_reporting(E_ALL & ~(E_STRICT|E_NOTICE|E_DEPRECATED)); } diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index e52b98b7e53..8b7d81fdda0 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -93,16 +93,13 @@ class CommandeFournisseur extends CommonOrder var $extraparams=array(); - /** - * @var CommandeFournisseurLigne[] - */ - public $lines = array(); //Ajout pour askpricesupplier var $origin; var $origin_id; var $linked_objects=array(); + var $lines = array(); - /** + /** * Constructor * * @param DoliDB $db Database handler @@ -113,6 +110,7 @@ class CommandeFournisseur extends CommonOrder $this->db = $db; $this->products = array(); + $this->lines = array(); // List of language codes for status $this->statuts[0] = 'StatusOrderDraft'; @@ -260,15 +258,14 @@ class CommandeFournisseur extends CommonOrder $line = new CommandeFournisseurLigne($this->db); $line->id = $objp->rowid; - $line->rowid = $objp->rowid; - $line->desc = $objp->description; - $line->description = $objp->description; + $line->desc = $objp->description; // Description ligne + $line->description = $objp->description; // Description ligne $line->qty = $objp->qty; $line->tva_tx = $objp->tva_tx; $line->localtax1_tx = $objp->localtax1_tx; $line->localtax2_tx = $objp->localtax2_tx; - $line->subprice = $objp->subprice; - $line->pu_ht = $objp->subprice; + $line->subprice = $objp->subprice; // deprecated + $line->pu_ht = $objp->subprice; // Unit price HT $line->remise_percent = $objp->remise_percent; $line->total_ht = $objp->total_ht; $line->total_tva = $objp->total_tva; @@ -277,16 +274,16 @@ class CommandeFournisseur extends CommonOrder $line->total_ttc = $objp->total_ttc; $line->product_type = $objp->product_type; - $line->fk_product = $objp->fk_product; + $line->fk_product = $objp->fk_product; // Id du produit - $line->libelle = $objp->product_label; - $line->product_label = $objp->product_label; - $line->product_desc = $objp->product_desc; + $line->libelle = $objp->product_label; // TODO deprecated + $line->product_label = $objp->product_label; // Label produit + $line->product_desc = $objp->product_desc; // Description produit - $line->ref = $objp->product_ref; - $line->product_ref = $objp->product_ref; - $line->ref_fourn = $objp->ref_supplier; - $line->ref_supplier = $objp->ref_supplier; + $line->ref = $objp->product_ref; // TODO deprecated + $line->product_ref = $objp->product_ref; // Internal reference + $line->ref_fourn = $objp->ref_supplier; // TODO deprecated + $line->ref_supplier = $objp->ref_supplier; // Reference supplier $line->date_start = $this->db->jdate($objp->date_start); $line->date_end = $this->db->jdate($objp->date_end); @@ -1624,6 +1621,7 @@ class CommandeFournisseur extends CommonOrder } } + /** * Return array of dispathed lines waiting to be approved for this order * @@ -2328,18 +2326,6 @@ class CommandeFournisseur extends CommonOrder if ($nb === 0) return $langs->trans('Undefined'); else return $nb.' '.$langs->trans('Days'); } - - /** - * Returns the rights used for this class - * @return stdClass - */ - public function getRights() - { - global $user; - - return $user->rights->fournisseur->commande; - } - } @@ -2349,32 +2335,42 @@ class CommandeFournisseur extends CommonOrder */ class CommandeFournisseurLigne extends CommonOrderLine { + var $db; + var $error; + public $element='commande_fournisseurdet'; public $table_element='commande_fournisseurdet'; - - /** - * Unit price without taxes - * @var float - */ - public $pu_ht; - var $date_start; + var $oldline; + + // From llx_commandedet + var $qty; + var $tva_tx; + var $localtax1_tx; + var $localtax2_tx; + var $localtax1_type; + var $localtax2_type; + var $subprice; + var $remise_percent; + var $desc; // Description ligne + var $fk_product; // Id of predefined product + var $product_type = 0; // Type 0 = product, 1 = Service + var $total_ht; + var $total_tva; + var $total_localtax1; + var $total_localtax2; + var $total_ttc; + var $info_bits; + var $special_code; + var $date_start; var $date_end; + // From llx_product + var $libelle; // Label produit + var $product_desc; // Description produit + // From llx_product_fournisseur_price - - /** - * Supplier ref - * @var string - * @deprecated Use ref_supplier - */ - public $ref_fourn; - - /** - * Supplier reference - * @var string - */ - public $ref_supplier; + var $ref_fourn; // Ref supplier /** @@ -2434,7 +2430,7 @@ class CommandeFournisseurLigne extends CommonOrderLine $this->date_start = $this->db->jdate($objp->date_start); $this->date_end = $this->db->jdate($objp->date_end); - + $this->db->free($result); return 1; } diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 19cb26cf17b..9cc6b237c41 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -89,12 +89,9 @@ class FactureFournisseur extends CommonInvoice var $mode_reglement_id; var $mode_reglement_code; - /** - * Invoice lines - * @var SupplierInvoiceLine[] - */ - public $lines = array(); + var $lines; var $fournisseur; // deprecated + var $thirdparty; // To store thirdparty //Incorterms var $fk_incoterms; @@ -103,6 +100,31 @@ class FactureFournisseur extends CommonInvoice var $extraparams=array(); + /** + * Standard invoice + */ + const TYPE_STANDARD = 0; + + /** + * Replacement invoice + */ + const TYPE_REPLACEMENT = 1; + + /** + * Credit note invoice + */ + const TYPE_CREDIT_NOTE = 2; + + /** + * Deposit invoice + */ + const TYPE_DEPOSIT = 3; + + /** + * Proforma invoice + */ + const TYPE_PROFORMA = 4; + /** * Constructor * @@ -123,6 +145,7 @@ class FactureFournisseur extends CommonInvoice $this->propalid = 0; $this->products = array(); + $this->lines = array(); } /** @@ -473,7 +496,7 @@ class FactureFournisseur extends CommonInvoice */ function fetch_lines() { - $sql = 'SELECT f.rowid, f.ref as ref_supplier, f.description, f.pu_ht, f.pu_ttc, f.qty, f.remise_percent, f.tva_tx'; + $sql = 'SELECT f.rowid, f.ref as ref_supplier, f.description, f.pu_ht, f.pu_ttc, f.qty, f.remise_percent, f.tva_tx, f.tva'; $sql.= ', f.localtax1_tx, f.localtax2_tx, f.total_localtax1, f.total_localtax2 '; $sql.= ', f.total_ht, f.tva as total_tva, f.total_ttc, f.fk_product, f.product_type, f.info_bits, f.rang, f.special_code, f.fk_parent_line'; $sql.= ', p.rowid as product_id, p.ref as product_ref, p.label as label, p.description as product_desc'; @@ -494,7 +517,7 @@ class FactureFournisseur extends CommonInvoice { $obj = $this->db->fetch_object($resql_rows); - $this->lines[$i] = new SupplierInvoiceLine($this->db); + $this->lines[$i] = new FactureFournisseurLigne($this->db); $this->lines[$i]->id = $obj->rowid; $this->lines[$i]->rowid = $obj->rowid; @@ -504,7 +527,6 @@ class FactureFournisseur extends CommonInvoice $this->lines[$i]->ref_supplier = $obj->ref_supplier; // Reference product supplier TODO Rename field ref to ref_supplier into table llx_facture_fourn_det and llx_commande_fournisseurdet and update fields it into updateline $this->lines[$i]->libelle = $obj->label; // This field may contains label of product (when invoice create from order) $this->lines[$i]->product_desc = $obj->product_desc; // Description du produit - $this->lines[$i]->subprice = $obj->pu_ht; $this->lines[$i]->pu_ht = $obj->pu_ht; $this->lines[$i]->pu_ttc = $obj->pu_ttc; $this->lines[$i]->tva_tx = $obj->tva_tx; @@ -512,7 +534,7 @@ class FactureFournisseur extends CommonInvoice $this->lines[$i]->localtax2_tx = $obj->localtax2_tx; $this->lines[$i]->qty = $obj->qty; $this->lines[$i]->remise_percent = $obj->remise_percent; - $this->lines[$i]->tva = $obj->total_tva; + $this->lines[$i]->tva = $obj->tva; $this->lines[$i]->total_ht = $obj->total_ht; $this->lines[$i]->total_tva = $obj->total_tva; $this->lines[$i]->total_localtax1 = $obj->total_localtax1; @@ -1291,7 +1313,7 @@ class FactureFournisseur extends CommonInvoice if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used { - $linetmp = new SupplierInvoiceLine($this->db); + $linetmp = new FactureFournisseurLigne($this->db); $linetmp->id=$this->rowid; $linetmp->array_options = $array_options; $result=$linetmp->insertExtraFields(); @@ -1836,18 +1858,6 @@ class FactureFournisseur extends CommonInvoice return $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref); } - /** - * Returns the rights used for this class - * @return stdClass - */ - public function getRights() - { - global $user; - - return $user->rights->fournisseur->facture; - } - - } @@ -1855,70 +1865,20 @@ class FactureFournisseur extends CommonInvoice /** * Class to manage line invoices */ -class SupplierInvoiceLine extends CommonInvoice +class FactureFournisseurLigne extends CommonInvoice { + var $db; + var $error; + + var $pu_ht; + var $pu_ttc; + public $element='facture_fourn_det'; public $table_element='facture_fourn_det'; - var $oldline; + var $oldline; - public $ref; - public $product_ref; - public $ref_supplier; - public $libelle; - public $product_desc; - - /** - * Unit price before taxes - * @var float - * @deprecated Use $subprice - */ - public $pu_ht; - - /** - * Unit price included taxes - * @var float - */ - public $pu_ttc; - - /** - * Total VAT amount - * @var float - * @deprecated Use $total_tva instead - */ - public $tva; - - /** - * Id of the corresponding supplier invoice - * @var int - */ - var $fk_facture_fourn; - - /** - * Product label - * @var string - */ - var $label; // deprecated - - /** - * Description of the line - * @var string - */ - var $description; - - var $skip_update_total; // Skip update price total for special lines - - /** - * @var int Situation advance percentage - */ - public $situation_percent; - - /** - * @var int Previous situation line id reference - */ - public $fk_prev_id; - - /** + /** * Constructor * * @param DoliDB $db Database handler diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 3ca8aae79d5..26a0b5a5438 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -2015,7 +2015,7 @@ elseif (! empty($object->id)) // Show object lines $inputalsopricewithtax=0; if (! empty($object->lines)) - $ret = $object->printObjectLines($action, $soc, $mysoc, $lineid, 1); + $ret = $object->printObjectLines($action, $soc, $mysoc, $lineid, 1, $user->rights->fournisseur->commande->creer); $num = count($object->lines); diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index e93d06ad530..a48534b4c24 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -2092,7 +2092,7 @@ else // Show object lines if (! empty($object->lines)) - $ret = $object->printObjectLines($action, $soc, $mysoc, $lineid, 1); + $ret = $object->printObjectLines($action, $soc, $mysoc, $lineid, 1, $user->rights->fournisseur->facture->creer); $num=count($object->lines); diff --git a/htdocs/margin/admin/margin.php b/htdocs/margin/admin/margin.php index b031a190f44..f8beb7cd1ca 100644 --- a/htdocs/margin/admin/margin.php +++ b/htdocs/margin/admin/margin.php @@ -72,6 +72,7 @@ if ($action == 'remises') { if (dolibarr_set_const($db, 'MARGIN_METHODE_FOR_DISCOUNT', $_POST['MARGIN_METHODE_FOR_DISCOUNT'], 'chaine', 0, '', $conf->entity) > 0) { + $conf->global->MARGIN_METHODE_FOR_DISCOUNT = $_POST['MARGIN_METHODE_FOR_DISCOUNT']; setEventMessage($langs->trans("RecordModifiedSuccessfully")); } else @@ -84,6 +85,7 @@ if ($action == 'typemarges') { if (dolibarr_set_const($db, 'MARGIN_TYPE', $_POST['MARGIN_TYPE'], 'chaine', 0, '', $conf->entity) > 0) { + $conf->global->MARGIN_METHODE_FOR_DISCOUNT = $_POST['MARGIN_TYPE']; setEventMessage($langs->trans("RecordModifiedSuccessfully")); } else @@ -96,6 +98,7 @@ if ($action == 'contact') { if (dolibarr_set_const($db, 'AGENT_CONTACT_TYPE', $_POST['AGENT_CONTACT_TYPE'], 'chaine', 0, '', $conf->entity) > 0) { + $conf->global->AGENT_CONTACT_TYPE = $_POST['AGENT_CONTACT_TYPE']; setEventMessage($langs->trans("RecordModifiedSuccessfully")); } else diff --git a/htdocs/projet/admin/project.php b/htdocs/projet/admin/project.php index a29bb9a2d63..915d4ef69ef 100644 --- a/htdocs/projet/admin/project.php +++ b/htdocs/projet/admin/project.php @@ -237,7 +237,12 @@ if ($action == 'deltask') // Set default model else if ($action == 'setdoc') { - dolibarr_set_const($db, "PROJECT_ADDON_PDF",$value,'chaine',0,'',$conf->entity); + if (dolibarr_set_const($db, "PROJECT_ADDON_PDF",$value,'chaine',0,'',$conf->entity)) + { + // La constante qui a ete lue en avant du nouveau set + // on passe donc par une variable pour avoir un affichage coherent + $conf->global->PROJECT_ADDON_PDF = $value; + } // On active le modele $ret = delDocumentModel($value, $type); diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php index 881946cb1cd..8fec81c686c 100644 --- a/htdocs/societe/admin/societe.php +++ b/htdocs/societe/admin/societe.php @@ -165,7 +165,10 @@ if ($action == 'setdoc') $db->begin(); - dolibarr_set_const($db, "COMPANY_ADDON_PDF",$value,'chaine',0,'',$conf->entity); + if (dolibarr_set_const($db, "COMPANY_ADDON_PDF",$value,'chaine',0,'',$conf->entity)) + { + $conf->global->COMPANY_ADDON_PDF = $value; + } // On active le modele $type='company'; From aa5ffa0bf22cfc3543352bfa40e6fc53d23bb9dc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Mar 2015 14:23:49 +0100 Subject: [PATCH 353/429] phpcs --- dev/skeletons/skeleton_class.class.php | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/dev/skeletons/skeleton_class.class.php b/dev/skeletons/skeleton_class.class.php index c9e20317695..c59b3986a08 100644 --- a/dev/skeletons/skeleton_class.class.php +++ b/dev/skeletons/skeleton_class.class.php @@ -43,7 +43,7 @@ class Skeleton_Class extends CommonObject var $table_element='skeleton'; //!< Name of table without prefix where object is stored var $lines=array(); - + var $id; var $prop1; var $prop2; @@ -106,11 +106,11 @@ class Skeleton_Class extends CommonObject if (! $notrigger) { // Uncomment this and change MYOBJECT to your own tag if you - // want this action calls a trigger. + // want this action to call a trigger. //// Call triggers //$result=$this->call_trigger('MYOBJECT_CREATE',$user); - //if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail} + //if ($result < 0) $error++; //// End call triggers } } @@ -118,11 +118,6 @@ class Skeleton_Class extends CommonObject // Commit or rollback if ($error) { - foreach($this->errors as $errmsg) - { - dol_syslog(__METHOD__." ".$errmsg, LOG_ERR); - $this->error.=($this->error?', '.$errmsg:$errmsg); - } $this->db->rollback(); return -1*$error; } @@ -197,7 +192,7 @@ class Skeleton_Class extends CommonObject $sql.= " t.field2"; //... $sql.= " FROM ".MAIN_DB_PREFIX."mytable as t"; - + // Manage filter $sqlwhere=array(); if (count($filter)>0) { @@ -211,26 +206,26 @@ class Skeleton_Class extends CommonObject $sql .= " ORDER BY " . $sortfield . " " . $sortorder . " " . $this->db->plimit($limit + 1, $offset); $this->lines = array (); - + dol_syslog(get_class($this)."::fetchAll", LOG_DEBUG); $resql=$this->db->query($sql); if ($resql) { $num = $this->db->num_rows($resql); - + while ($obj = $this->db->fetch_object($resql)) { $line=new Skeleton_ClassLine(); - + $line->id = $obj->rowid; $line->prop1 = $obj->field1; $line->prop2 = $obj->field2; - + $this->line[]=$line; //... } $this->db->free($resql); - + return $num; } else @@ -435,7 +430,8 @@ class Skeleton_Class extends CommonObject } -class Skeleton_ClassLine { +class Skeleton_ClassLine +{ var $id; var $prop1; var $prop2; From 17dc76838e836d2ff13cdf532443c9cf9e21b004 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Mar 2015 15:25:57 +0100 Subject: [PATCH 354/429] Fix bad url --- htdocs/core/boxes/box_contacts.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/core/boxes/box_contacts.php b/htdocs/core/boxes/box_contacts.php index fdd5f725883..aaeabbb0572 100644 --- a/htdocs/core/boxes/box_contacts.php +++ b/htdocs/core/boxes/box_contacts.php @@ -62,7 +62,7 @@ class box_contacts extends ModeleBoxes if ($user->rights->societe->lire) { - $sql = "SELECT sp.rowid, sp.lastname, sp.firstname, sp.civility as civility_id, sp.datec, sp.tms, sp.fk_soc"; + $sql = "SELECT sp.rowid as id, sp.lastname, sp.firstname, sp.civility as civility_id, sp.datec, sp.tms, sp.fk_soc"; $sql.= ", s.nom as socname"; $sql.= ", s.code_client"; $sql.= " FROM ".MAIN_DB_PREFIX."socpeople as sp"; @@ -87,7 +87,8 @@ class box_contacts extends ModeleBoxes $datec=$db->jdate($objp->datec); $datem=$db->jdate($objp->tms); - $contactstatic->lastname=$objp->lastname; + $contactstatic->id=$objp->id; + $contactstatic->lastname=$objp->lastname; $contactstatic->firstname=$objp->firstname; $contactstatic->civility_id=$objp->civility_id; From feef043513d82f9df1c50c9e36983c37c7fb7249 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 22 Mar 2015 15:27:05 +0100 Subject: [PATCH 355/429] Correct --- htdocs/core/modules/dons/html_cerfafr.modules.php | 4 ++-- htdocs/core/modules/modDon.class.php | 2 +- htdocs/donations/admin/donation_extrafields.php | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/modules/dons/html_cerfafr.modules.php b/htdocs/core/modules/dons/html_cerfafr.modules.php index 69484033374..0efaf8c4524 100644 --- a/htdocs/core/modules/dons/html_cerfafr.modules.php +++ b/htdocs/core/modules/dons/html_cerfafr.modules.php @@ -20,7 +20,7 @@ */ /** - * \file htdocs/donations/core/modules/dons/html_cerfafr.modules.php + * \file htdocs/core/modules/dons/html_cerfafr.modules.php * \ingroup don * \brief Form of donation */ @@ -132,7 +132,7 @@ class html_cerfafr extends ModeleDon else $paymentmode = ''; // Define contents - $donmodel=DOL_DOCUMENT_ROOT ."/donations/core/modules/dons/html_cerfafr.html"; + $donmodel=DOL_DOCUMENT_ROOT ."/core/modules/dons/html_cerfafr.html"; $form = implode('', file($donmodel)); $form = str_replace('__REF__',$don->id,$form); $form = str_replace('__DATE__',dol_print_date($don->date,'day',false,$outputlangs),$form); diff --git a/htdocs/core/modules/modDon.class.php b/htdocs/core/modules/modDon.class.php index a4a825d8343..6d67b625f91 100644 --- a/htdocs/core/modules/modDon.class.php +++ b/htdocs/core/modules/modDon.class.php @@ -21,7 +21,7 @@ /** * \defgroup don Module donations * \brief Module to manage the follow-up of the donations - * \file htdocs/donations/core/modules/modDon.class.php + * \file htdocs/core/modules/modDon.class.php * \ingroup donations * \brief Description and activation file for module Donation */ diff --git a/htdocs/donations/admin/donation_extrafields.php b/htdocs/donations/admin/donation_extrafields.php index 3caa65bce98..f93b48bafca 100644 --- a/htdocs/donations/admin/donation_extrafields.php +++ b/htdocs/donations/admin/donation_extrafields.php @@ -22,7 +22,7 @@ */ require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/core/lib/donation.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; $langs->load("companies"); From b44f87f54807a9f7f82469bd88d45965abebb118 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Mar 2015 15:38:50 +0100 Subject: [PATCH 356/429] Clean css --- htdocs/theme/eldy/style.css.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 11c72f88586..42bf78a0745 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -840,9 +840,6 @@ foreach($mainmenuusedarray as $val) .bodylogin { background: #f0f0f0; - /* -moz-box-shadow: inset 0 0 10px #000000; - -webkit-box-shadow: inset 0 0 10px #000000; - box-shadow: inset 0 0 10px #000000; */ } .login_vertical_align { padding: 10px; From 809690fad7347e9f744135f395ad09b91ee75106 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Mar 2015 18:09:22 +0100 Subject: [PATCH 357/429] Saved logo in black int menu eldy. Start new dev theme based on material design. --- htdocs/theme/eldy/img/menus_black/agenda.png | Bin 0 -> 750 bytes .../eldy/img/menus_black/agenda_over.png | Bin 0 -> 580 bytes htdocs/theme/eldy/img/menus_black/bank.png | Bin 0 -> 892 bytes .../theme/eldy/img/menus_black/bank_over.png | Bin 0 -> 638 bytes .../theme/eldy/img/menus_black/commercial.png | Bin 0 -> 898 bytes .../eldy/img/menus_black/commercial_over.png | Bin 0 -> 650 bytes htdocs/theme/eldy/img/menus_black/company.png | Bin 0 -> 602 bytes .../eldy/img/menus_black/company_over.png | Bin 0 -> 426 bytes htdocs/theme/eldy/img/menus_black/ecm.png | Bin 0 -> 969 bytes .../theme/eldy/img/menus_black/ecm_over.png | Bin 0 -> 672 bytes .../eldy/img/menus_black/externalsite.png | Bin 0 -> 560 bytes .../img/menus_black/externalsite_over.png | Bin 0 -> 415 bytes htdocs/theme/eldy/img/menus_black/ftp.png | Bin 0 -> 844 bytes .../theme/eldy/img/menus_black/ftp_over.png | Bin 0 -> 612 bytes .../theme/eldy/img/menus_black/generic1.png | Bin 0 -> 611 bytes .../eldy/img/menus_black/generic1_over.png | Bin 0 -> 490 bytes .../theme/eldy/img/menus_black/generic2.png | Bin 0 -> 611 bytes .../eldy/img/menus_black/generic2_over.png | Bin 0 -> 490 bytes .../theme/eldy/img/menus_black/generic3.png | Bin 0 -> 611 bytes .../eldy/img/menus_black/generic3_over.png | Bin 0 -> 490 bytes .../theme/eldy/img/menus_black/generic4.png | Bin 0 -> 611 bytes .../eldy/img/menus_black/generic4_over.png | Bin 0 -> 490 bytes htdocs/theme/eldy/img/menus_black/globe.png | Bin 0 -> 1175 bytes .../theme/eldy/img/menus_black/globe_over.png | Bin 0 -> 847 bytes htdocs/theme/eldy/img/menus_black/home.png | Bin 0 -> 716 bytes .../theme/eldy/img/menus_black/home_over.png | Bin 0 -> 474 bytes htdocs/theme/eldy/img/menus_black/mail.png | Bin 0 -> 787 bytes .../theme/eldy/img/menus_black/mail_over.png | Bin 0 -> 533 bytes htdocs/theme/eldy/img/menus_black/members.png | Bin 0 -> 1134 bytes .../eldy/img/menus_black/members_over.png | Bin 0 -> 733 bytes htdocs/theme/eldy/img/menus_black/money.png | Bin 0 -> 1387 bytes .../theme/eldy/img/menus_black/money_over.png | Bin 0 -> 952 bytes .../eldy/img/menus_black/pointofsale.png | Bin 0 -> 573 bytes .../eldy/img/menus_black/pointofsale_over.png | Bin 0 -> 437 bytes .../theme/eldy/img/menus_black/products.png | Bin 0 -> 529 bytes .../eldy/img/menus_black/products_over.png | Bin 0 -> 374 bytes htdocs/theme/eldy/img/menus_black/project.png | Bin 0 -> 477 bytes .../eldy/img/menus_black/project_over.png | Bin 0 -> 380 bytes htdocs/theme/eldy/img/menus_black/shop.png | Bin 0 -> 715 bytes .../theme/eldy/img/menus_black/shop_over.png | Bin 0 -> 510 bytes htdocs/theme/eldy/img/menus_black/tools.png | Bin 0 -> 1148 bytes .../theme/eldy/img/menus_black/tools_over.png | Bin 0 -> 724 bytes htdocs/theme/md_dev/.gitignore | 1 + htdocs/theme/md_dev/AUTHOR | 1 + htdocs/theme/md_dev/ckeditor/config.js | 92 + htdocs/theme/md_dev/ckeditor/index.html | 0 htdocs/theme/md_dev/graph-color.php | 34 + htdocs/theme/md_dev/img/1downarrow.png | Bin 0 -> 225 bytes .../theme/md_dev/img/1downarrow_selected.png | Bin 0 -> 341 bytes htdocs/theme/md_dev/img/1leftarrow.png | Bin 0 -> 228 bytes .../theme/md_dev/img/1leftarrow_selected.png | Bin 0 -> 228 bytes htdocs/theme/md_dev/img/1rightarrow.png | Bin 0 -> 231 bytes .../theme/md_dev/img/1rightarrow_selected.png | Bin 0 -> 231 bytes htdocs/theme/md_dev/img/1uparrow.png | Bin 0 -> 232 bytes htdocs/theme/md_dev/img/1uparrow_selected.png | Bin 0 -> 355 bytes htdocs/theme/md_dev/img/1updownarrow.png | Bin 0 -> 278 bytes htdocs/theme/md_dev/img/addfile.png | Bin 0 -> 593 bytes htdocs/theme/md_dev/img/background.png | Bin 0 -> 25628 bytes htdocs/theme/md_dev/img/bg-bas-rubrique.png | Bin 0 -> 300 bytes htdocs/theme/md_dev/img/bg-rubrique.png | Bin 0 -> 89 bytes htdocs/theme/md_dev/img/bg-titre-rubrique.png | Bin 0 -> 374 bytes htdocs/theme/md_dev/img/button_bg.png | Bin 0 -> 199 bytes htdocs/theme/md_dev/img/button_edit.png | Bin 0 -> 961 bytes htdocs/theme/md_dev/img/calc.png | Bin 0 -> 734 bytes htdocs/theme/md_dev/img/calendar.png | Bin 0 -> 250 bytes htdocs/theme/md_dev/img/call.png | Bin 0 -> 286 bytes htdocs/theme/md_dev/img/call_out.png | Bin 0 -> 318 bytes htdocs/theme/md_dev/img/close.png | Bin 0 -> 301 bytes htdocs/theme/md_dev/img/close_title.png | Bin 0 -> 240 bytes htdocs/theme/md_dev/img/delete.png | Bin 0 -> 202 bytes htdocs/theme/md_dev/img/detail.png | Bin 0 -> 589 bytes htdocs/theme/md_dev/img/disable.png | Bin 0 -> 245 bytes htdocs/theme/md_dev/img/edit.png | Bin 0 -> 818 bytes htdocs/theme/md_dev/img/edit_add.png | Bin 0 -> 220 bytes htdocs/theme/md_dev/img/edit_remove.png | Bin 0 -> 122 bytes htdocs/theme/md_dev/img/editdelete.png | Bin 0 -> 245 bytes htdocs/theme/md_dev/img/error.png | Bin 0 -> 489 bytes htdocs/theme/md_dev/img/favicon.ico | Bin 0 -> 2238 bytes htdocs/theme/md_dev/img/file.png | Bin 0 -> 505 bytes htdocs/theme/md_dev/img/filenew.png | Bin 0 -> 397 bytes htdocs/theme/md_dev/img/filter.png | Bin 0 -> 206 bytes htdocs/theme/md_dev/img/folder-open.png | Bin 0 -> 801 bytes htdocs/theme/md_dev/img/folder.png | Bin 0 -> 935 bytes htdocs/theme/md_dev/img/gradient.gif | Bin 0 -> 1013 bytes htdocs/theme/md_dev/img/grip.png | Bin 0 -> 90 bytes htdocs/theme/md_dev/img/grip_title.png | Bin 0 -> 90 bytes htdocs/theme/md_dev/img/headbg.jpg | Bin 0 -> 12151 bytes htdocs/theme/md_dev/img/headbg2.jpg | Bin 0 -> 30553 bytes htdocs/theme/md_dev/img/help.png | Bin 0 -> 657 bytes htdocs/theme/md_dev/img/helpdoc.png | Bin 0 -> 693 bytes htdocs/theme/md_dev/img/high.png | Bin 0 -> 611 bytes htdocs/theme/md_dev/img/history.png | Bin 0 -> 1362 bytes htdocs/theme/md_dev/img/index.html | 0 htdocs/theme/md_dev/img/info.png | Bin 0 -> 657 bytes htdocs/theme/md_dev/img/liste_titre.png | Bin 0 -> 196 bytes htdocs/theme/md_dev/img/liste_titre2.png | Bin 0 -> 304 bytes htdocs/theme/md_dev/img/lock.png | Bin 0 -> 646 bytes htdocs/theme/md_dev/img/login_background.png | Bin 0 -> 79 bytes htdocs/theme/md_dev/img/logo_setup.svg | 475 +++ htdocs/theme/md_dev/img/logout.png | Bin 0 -> 608 bytes htdocs/theme/md_dev/img/menus/README.md | 12 + htdocs/theme/md_dev/img/menus/agenda.png | Bin 0 -> 700 bytes htdocs/theme/md_dev/img/menus/agenda_over.png | Bin 0 -> 541 bytes htdocs/theme/md_dev/img/menus/bank.png | Bin 0 -> 827 bytes htdocs/theme/md_dev/img/menus/bank_over.png | Bin 0 -> 620 bytes htdocs/theme/md_dev/img/menus/chart.png | Bin 0 -> 1321 bytes htdocs/theme/md_dev/img/menus/commercial.png | Bin 0 -> 845 bytes .../md_dev/img/menus/commercial_over.png | Bin 0 -> 638 bytes htdocs/theme/md_dev/img/menus/company.png | Bin 0 -> 572 bytes .../theme/md_dev/img/menus/company_over.png | Bin 0 -> 406 bytes htdocs/theme/md_dev/img/menus/ecm.png | Bin 0 -> 912 bytes htdocs/theme/md_dev/img/menus/ecm_over.png | Bin 0 -> 647 bytes .../theme/md_dev/img/menus/externalsite.png | Bin 0 -> 531 bytes .../md_dev/img/menus/externalsite_over.png | Bin 0 -> 404 bytes htdocs/theme/md_dev/img/menus/ftp.png | Bin 0 -> 788 bytes htdocs/theme/md_dev/img/menus/ftp_over.png | Bin 0 -> 563 bytes htdocs/theme/md_dev/img/menus/generic1.png | Bin 0 -> 570 bytes .../theme/md_dev/img/menus/generic1_over.png | Bin 0 -> 486 bytes htdocs/theme/md_dev/img/menus/generic2.png | Bin 0 -> 570 bytes .../theme/md_dev/img/menus/generic2_over.png | Bin 0 -> 548 bytes htdocs/theme/md_dev/img/menus/generic3.png | Bin 0 -> 570 bytes .../theme/md_dev/img/menus/generic3_over.png | Bin 0 -> 486 bytes htdocs/theme/md_dev/img/menus/generic4.png | Bin 0 -> 570 bytes .../theme/md_dev/img/menus/generic4_over.png | Bin 0 -> 486 bytes htdocs/theme/md_dev/img/menus/globe.png | Bin 0 -> 1175 bytes htdocs/theme/md_dev/img/menus/globe_over.png | Bin 0 -> 844 bytes htdocs/theme/md_dev/img/menus/holiday.png | Bin 0 -> 1086 bytes htdocs/theme/md_dev/img/menus/home.png | Bin 0 -> 679 bytes htdocs/theme/md_dev/img/menus/home_over.png | Bin 0 -> 484 bytes htdocs/theme/md_dev/img/menus/index.html | 0 htdocs/theme/md_dev/img/menus/mail.png | Bin 0 -> 718 bytes htdocs/theme/md_dev/img/menus/mail_over.png | Bin 0 -> 534 bytes htdocs/theme/md_dev/img/menus/members.png | Bin 0 -> 1044 bytes .../theme/md_dev/img/menus/members_over.png | Bin 0 -> 720 bytes htdocs/theme/md_dev/img/menus/money.png | Bin 0 -> 1259 bytes htdocs/theme/md_dev/img/menus/money_over.png | Bin 0 -> 940 bytes htdocs/theme/md_dev/img/menus/pointofsale.png | Bin 0 -> 542 bytes .../md_dev/img/menus/pointofsale_over.png | Bin 0 -> 424 bytes htdocs/theme/md_dev/img/menus/products.png | Bin 0 -> 510 bytes .../theme/md_dev/img/menus/products_over.png | Bin 0 -> 358 bytes htdocs/theme/md_dev/img/menus/project.png | Bin 0 -> 449 bytes .../theme/md_dev/img/menus/project_over.png | Bin 0 -> 360 bytes htdocs/theme/md_dev/img/menus/shop.png | Bin 0 -> 679 bytes htdocs/theme/md_dev/img/menus/shop_over.png | Bin 0 -> 502 bytes htdocs/theme/md_dev/img/menus/tools.png | Bin 0 -> 1052 bytes htdocs/theme/md_dev/img/menus/tools_over.png | Bin 0 -> 706 bytes htdocs/theme/md_dev/img/menutab-r.png | Bin 0 -> 198 bytes htdocs/theme/md_dev/img/nav-overlay.png | Bin 0 -> 109 bytes htdocs/theme/md_dev/img/nav-overlay3.png | Bin 0 -> 1780 bytes htdocs/theme/md_dev/img/next.png | Bin 0 -> 622 bytes htdocs/theme/md_dev/img/object_account.png | Bin 0 -> 453 bytes htdocs/theme/md_dev/img/object_accounting.png | Bin 0 -> 170 bytes htdocs/theme/md_dev/img/object_action.png | Bin 0 -> 528 bytes htdocs/theme/md_dev/img/object_action_rdv.png | Bin 0 -> 675 bytes htdocs/theme/md_dev/img/object_address.png | Bin 0 -> 358 bytes .../md_dev/img/object_askpricesupplier.png | Bin 0 -> 284 bytes htdocs/theme/md_dev/img/object_barcode.png | Bin 0 -> 219 bytes htdocs/theme/md_dev/img/object_bill.png | Bin 0 -> 394 bytes htdocs/theme/md_dev/img/object_billa.png | Bin 0 -> 395 bytes htdocs/theme/md_dev/img/object_billd.png | Bin 0 -> 341 bytes htdocs/theme/md_dev/img/object_billr.png | Bin 0 -> 399 bytes htdocs/theme/md_dev/img/object_book.png | Bin 0 -> 222 bytes htdocs/theme/md_dev/img/object_bookmark.png | Bin 0 -> 201 bytes htdocs/theme/md_dev/img/object_calendar.png | Bin 0 -> 199 bytes .../theme/md_dev/img/object_calendarday.png | Bin 0 -> 223 bytes .../md_dev/img/object_calendarperuser.png | Bin 0 -> 198 bytes .../theme/md_dev/img/object_calendarweek.png | Bin 0 -> 188 bytes .../md_dev/img/object_category-expanded.png | Bin 0 -> 295 bytes htdocs/theme/md_dev/img/object_category.png | Bin 0 -> 281 bytes htdocs/theme/md_dev/img/object_commercial.png | Bin 0 -> 304 bytes htdocs/theme/md_dev/img/object_company.png | Bin 0 -> 492 bytes htdocs/theme/md_dev/img/object_contact.png | Bin 0 -> 593 bytes .../theme/md_dev/img/object_contact_all.png | Bin 0 -> 810 bytes htdocs/theme/md_dev/img/object_contract.png | Bin 0 -> 359 bytes htdocs/theme/md_dev/img/object_cron.png | Bin 0 -> 433 bytes htdocs/theme/md_dev/img/object_dir.png | Bin 0 -> 301 bytes htdocs/theme/md_dev/img/object_email.png | Bin 0 -> 368 bytes htdocs/theme/md_dev/img/object_energie.png | Bin 0 -> 376 bytes htdocs/theme/md_dev/img/object_generic.png | Bin 0 -> 361 bytes htdocs/theme/md_dev/img/object_globe.png | Bin 0 -> 366 bytes htdocs/theme/md_dev/img/object_group.png | Bin 0 -> 912 bytes htdocs/theme/md_dev/img/object_holiday.png | Bin 0 -> 771 bytes .../theme/md_dev/img/object_intervention.png | Bin 0 -> 340 bytes htdocs/theme/md_dev/img/object_invoice.png | Bin 0 -> 394 bytes htdocs/theme/md_dev/img/object_label.png | Bin 0 -> 769 bytes htdocs/theme/md_dev/img/object_list.png | Bin 0 -> 179 bytes htdocs/theme/md_dev/img/object_margin.png | Bin 0 -> 571 bytes htdocs/theme/md_dev/img/object_opensurvey.png | Bin 0 -> 743 bytes htdocs/theme/md_dev/img/object_order.png | Bin 0 -> 357 bytes htdocs/theme/md_dev/img/object_payment.png | Bin 0 -> 339 bytes htdocs/theme/md_dev/img/object_phoning.png | Bin 0 -> 577 bytes .../theme/md_dev/img/object_phoning_fax.png | Bin 0 -> 633 bytes htdocs/theme/md_dev/img/object_product.png | Bin 0 -> 559 bytes htdocs/theme/md_dev/img/object_project.png | Bin 0 -> 926 bytes htdocs/theme/md_dev/img/object_projectpub.png | Bin 0 -> 929 bytes .../theme/md_dev/img/object_projecttask.png | Bin 0 -> 941 bytes htdocs/theme/md_dev/img/object_propal.png | Bin 0 -> 284 bytes htdocs/theme/md_dev/img/object_reduc.png | Bin 0 -> 361 bytes htdocs/theme/md_dev/img/object_resource.png | Bin 0 -> 199 bytes htdocs/theme/md_dev/img/object_rss.png | Bin 0 -> 362 bytes htdocs/theme/md_dev/img/object_sending.png | Bin 0 -> 273 bytes htdocs/theme/md_dev/img/object_service.png | Bin 0 -> 365 bytes htdocs/theme/md_dev/img/object_skype.png | Bin 0 -> 682 bytes htdocs/theme/md_dev/img/object_stock.png | Bin 0 -> 554 bytes htdocs/theme/md_dev/img/object_task.png | Bin 0 -> 176 bytes htdocs/theme/md_dev/img/object_task_time.png | Bin 0 -> 199 bytes htdocs/theme/md_dev/img/object_technic.png | Bin 0 -> 433 bytes htdocs/theme/md_dev/img/object_trip.png | Bin 0 -> 337 bytes htdocs/theme/md_dev/img/object_user.png | Bin 0 -> 607 bytes htdocs/theme/md_dev/img/off.png | Bin 0 -> 568 bytes htdocs/theme/md_dev/img/on.png | Bin 0 -> 603 bytes htdocs/theme/md_dev/img/pdf2.png | Bin 0 -> 636 bytes htdocs/theme/md_dev/img/pdf3.png | Bin 0 -> 566 bytes htdocs/theme/md_dev/img/play.png | Bin 0 -> 653 bytes htdocs/theme/md_dev/img/previous.png | Bin 0 -> 620 bytes htdocs/theme/md_dev/img/printer.png | Bin 0 -> 270 bytes htdocs/theme/md_dev/img/puce.png | Bin 0 -> 504 bytes htdocs/theme/md_dev/img/recent.png | Bin 0 -> 447 bytes htdocs/theme/md_dev/img/redstar.png | Bin 0 -> 533 bytes htdocs/theme/md_dev/img/refresh.png | Bin 0 -> 722 bytes htdocs/theme/md_dev/img/reload.png | Bin 0 -> 704 bytes htdocs/theme/md_dev/img/rightarrow.png | Bin 0 -> 156 bytes htdocs/theme/md_dev/img/search.png | Bin 0 -> 432 bytes htdocs/theme/md_dev/img/searchclear.png | Bin 0 -> 436 bytes htdocs/theme/md_dev/img/setup.png | Bin 0 -> 702 bytes htdocs/theme/md_dev/img/sort_asc.png | Bin 0 -> 176 bytes htdocs/theme/md_dev/img/sort_asc_disabled.png | Bin 0 -> 176 bytes htdocs/theme/md_dev/img/sort_desc.png | Bin 0 -> 176 bytes .../theme/md_dev/img/sort_desc_disabled.png | Bin 0 -> 168 bytes htdocs/theme/md_dev/img/split.png | Bin 0 -> 195 bytes htdocs/theme/md_dev/img/star.png | Bin 0 -> 381 bytes htdocs/theme/md_dev/img/stats.png | Bin 0 -> 640 bytes htdocs/theme/md_dev/img/statut0.png | Bin 0 -> 92 bytes htdocs/theme/md_dev/img/statut1.png | Bin 0 -> 190 bytes htdocs/theme/md_dev/img/statut3.png | Bin 0 -> 119 bytes htdocs/theme/md_dev/img/statut4.png | Bin 0 -> 190 bytes htdocs/theme/md_dev/img/statut5.png | Bin 0 -> 164 bytes htdocs/theme/md_dev/img/statut6.png | Bin 0 -> 212 bytes htdocs/theme/md_dev/img/statut7.png | Bin 0 -> 178 bytes htdocs/theme/md_dev/img/statut8.png | Bin 0 -> 78 bytes htdocs/theme/md_dev/img/statut9.png | Bin 0 -> 203 bytes htdocs/theme/md_dev/img/stcomm-1.png | Bin 0 -> 431 bytes htdocs/theme/md_dev/img/stcomm-1_grayed.png | Bin 0 -> 223 bytes htdocs/theme/md_dev/img/stcomm0.png | Bin 0 -> 782 bytes htdocs/theme/md_dev/img/stcomm0_grayed.png | Bin 0 -> 456 bytes htdocs/theme/md_dev/img/stcomm1.png | Bin 0 -> 874 bytes htdocs/theme/md_dev/img/stcomm1_grayed.png | Bin 0 -> 472 bytes htdocs/theme/md_dev/img/stcomm2.png | Bin 0 -> 870 bytes htdocs/theme/md_dev/img/stcomm2_grayed.png | Bin 0 -> 343 bytes htdocs/theme/md_dev/img/stcomm3.png | Bin 0 -> 832 bytes htdocs/theme/md_dev/img/stcomm3_grayed.png | Bin 0 -> 488 bytes htdocs/theme/md_dev/img/stcomm4.png | Bin 0 -> 922 bytes htdocs/theme/md_dev/img/stcomm4_grayed.png | Bin 0 -> 488 bytes htdocs/theme/md_dev/img/switch_off.png | Bin 0 -> 1252 bytes htdocs/theme/md_dev/img/switch_on.png | Bin 0 -> 1228 bytes htdocs/theme/md_dev/img/tab_background.png | Bin 0 -> 129 bytes htdocs/theme/md_dev/img/tick.png | Bin 0 -> 227 bytes htdocs/theme/md_dev/img/title.gif | Bin 0 -> 1275 bytes htdocs/theme/md_dev/img/title.png | Bin 0 -> 1607 bytes htdocs/theme/md_dev/img/tmenu.jpg | Bin 0 -> 540 bytes htdocs/theme/md_dev/img/tmenu2.jpg | Bin 0 -> 569 bytes htdocs/theme/md_dev/img/tmenu3.jpg | Bin 0 -> 571 bytes htdocs/theme/md_dev/img/tmenu_inverse.jpg | Bin 0 -> 535 bytes htdocs/theme/md_dev/img/unlock.png | Bin 0 -> 686 bytes htdocs/theme/md_dev/img/uparrow.png | Bin 0 -> 194 bytes htdocs/theme/md_dev/img/vcard.png | Bin 0 -> 566 bytes htdocs/theme/md_dev/img/view.png | Bin 0 -> 708 bytes htdocs/theme/md_dev/img/warning.png | Bin 0 -> 480 bytes htdocs/theme/md_dev/img/working.gif | Bin 0 -> 2483 bytes htdocs/theme/md_dev/img/working2.gif | Bin 0 -> 673 bytes htdocs/theme/md_dev/index.html | 0 htdocs/theme/md_dev/style.css.php | 3235 +++++++++++++++++ htdocs/theme/md_dev/thumb.png | Bin 0 -> 3839 bytes htdocs/theme/md_dev/tpl/README | 3 + htdocs/theme/md_dev/tpl/index.html | 0 275 files changed, 3853 insertions(+) create mode 100644 htdocs/theme/eldy/img/menus_black/agenda.png create mode 100644 htdocs/theme/eldy/img/menus_black/agenda_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/bank.png create mode 100644 htdocs/theme/eldy/img/menus_black/bank_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/commercial.png create mode 100644 htdocs/theme/eldy/img/menus_black/commercial_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/company.png create mode 100644 htdocs/theme/eldy/img/menus_black/company_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/ecm.png create mode 100644 htdocs/theme/eldy/img/menus_black/ecm_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/externalsite.png create mode 100644 htdocs/theme/eldy/img/menus_black/externalsite_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/ftp.png create mode 100644 htdocs/theme/eldy/img/menus_black/ftp_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/generic1.png create mode 100644 htdocs/theme/eldy/img/menus_black/generic1_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/generic2.png create mode 100644 htdocs/theme/eldy/img/menus_black/generic2_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/generic3.png create mode 100644 htdocs/theme/eldy/img/menus_black/generic3_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/generic4.png create mode 100644 htdocs/theme/eldy/img/menus_black/generic4_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/globe.png create mode 100644 htdocs/theme/eldy/img/menus_black/globe_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/home.png create mode 100644 htdocs/theme/eldy/img/menus_black/home_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/mail.png create mode 100644 htdocs/theme/eldy/img/menus_black/mail_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/members.png create mode 100644 htdocs/theme/eldy/img/menus_black/members_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/money.png create mode 100644 htdocs/theme/eldy/img/menus_black/money_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/pointofsale.png create mode 100644 htdocs/theme/eldy/img/menus_black/pointofsale_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/products.png create mode 100644 htdocs/theme/eldy/img/menus_black/products_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/project.png create mode 100644 htdocs/theme/eldy/img/menus_black/project_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/shop.png create mode 100644 htdocs/theme/eldy/img/menus_black/shop_over.png create mode 100644 htdocs/theme/eldy/img/menus_black/tools.png create mode 100644 htdocs/theme/eldy/img/menus_black/tools_over.png create mode 100644 htdocs/theme/md_dev/.gitignore create mode 100644 htdocs/theme/md_dev/AUTHOR create mode 100644 htdocs/theme/md_dev/ckeditor/config.js create mode 100644 htdocs/theme/md_dev/ckeditor/index.html create mode 100644 htdocs/theme/md_dev/graph-color.php create mode 100644 htdocs/theme/md_dev/img/1downarrow.png create mode 100644 htdocs/theme/md_dev/img/1downarrow_selected.png create mode 100644 htdocs/theme/md_dev/img/1leftarrow.png create mode 100644 htdocs/theme/md_dev/img/1leftarrow_selected.png create mode 100644 htdocs/theme/md_dev/img/1rightarrow.png create mode 100644 htdocs/theme/md_dev/img/1rightarrow_selected.png create mode 100644 htdocs/theme/md_dev/img/1uparrow.png create mode 100644 htdocs/theme/md_dev/img/1uparrow_selected.png create mode 100644 htdocs/theme/md_dev/img/1updownarrow.png create mode 100644 htdocs/theme/md_dev/img/addfile.png create mode 100644 htdocs/theme/md_dev/img/background.png create mode 100644 htdocs/theme/md_dev/img/bg-bas-rubrique.png create mode 100644 htdocs/theme/md_dev/img/bg-rubrique.png create mode 100644 htdocs/theme/md_dev/img/bg-titre-rubrique.png create mode 100644 htdocs/theme/md_dev/img/button_bg.png create mode 100644 htdocs/theme/md_dev/img/button_edit.png create mode 100644 htdocs/theme/md_dev/img/calc.png create mode 100644 htdocs/theme/md_dev/img/calendar.png create mode 100644 htdocs/theme/md_dev/img/call.png create mode 100644 htdocs/theme/md_dev/img/call_out.png create mode 100644 htdocs/theme/md_dev/img/close.png create mode 100644 htdocs/theme/md_dev/img/close_title.png create mode 100644 htdocs/theme/md_dev/img/delete.png create mode 100644 htdocs/theme/md_dev/img/detail.png create mode 100644 htdocs/theme/md_dev/img/disable.png create mode 100644 htdocs/theme/md_dev/img/edit.png create mode 100644 htdocs/theme/md_dev/img/edit_add.png create mode 100644 htdocs/theme/md_dev/img/edit_remove.png create mode 100644 htdocs/theme/md_dev/img/editdelete.png create mode 100644 htdocs/theme/md_dev/img/error.png create mode 100644 htdocs/theme/md_dev/img/favicon.ico create mode 100644 htdocs/theme/md_dev/img/file.png create mode 100644 htdocs/theme/md_dev/img/filenew.png create mode 100644 htdocs/theme/md_dev/img/filter.png create mode 100644 htdocs/theme/md_dev/img/folder-open.png create mode 100644 htdocs/theme/md_dev/img/folder.png create mode 100644 htdocs/theme/md_dev/img/gradient.gif create mode 100644 htdocs/theme/md_dev/img/grip.png create mode 100644 htdocs/theme/md_dev/img/grip_title.png create mode 100644 htdocs/theme/md_dev/img/headbg.jpg create mode 100644 htdocs/theme/md_dev/img/headbg2.jpg create mode 100644 htdocs/theme/md_dev/img/help.png create mode 100644 htdocs/theme/md_dev/img/helpdoc.png create mode 100644 htdocs/theme/md_dev/img/high.png create mode 100644 htdocs/theme/md_dev/img/history.png create mode 100644 htdocs/theme/md_dev/img/index.html create mode 100644 htdocs/theme/md_dev/img/info.png create mode 100644 htdocs/theme/md_dev/img/liste_titre.png create mode 100644 htdocs/theme/md_dev/img/liste_titre2.png create mode 100644 htdocs/theme/md_dev/img/lock.png create mode 100644 htdocs/theme/md_dev/img/login_background.png create mode 100644 htdocs/theme/md_dev/img/logo_setup.svg create mode 100644 htdocs/theme/md_dev/img/logout.png create mode 100644 htdocs/theme/md_dev/img/menus/README.md create mode 100644 htdocs/theme/md_dev/img/menus/agenda.png create mode 100644 htdocs/theme/md_dev/img/menus/agenda_over.png create mode 100644 htdocs/theme/md_dev/img/menus/bank.png create mode 100644 htdocs/theme/md_dev/img/menus/bank_over.png create mode 100644 htdocs/theme/md_dev/img/menus/chart.png create mode 100644 htdocs/theme/md_dev/img/menus/commercial.png create mode 100644 htdocs/theme/md_dev/img/menus/commercial_over.png create mode 100644 htdocs/theme/md_dev/img/menus/company.png create mode 100644 htdocs/theme/md_dev/img/menus/company_over.png create mode 100644 htdocs/theme/md_dev/img/menus/ecm.png create mode 100644 htdocs/theme/md_dev/img/menus/ecm_over.png create mode 100644 htdocs/theme/md_dev/img/menus/externalsite.png create mode 100644 htdocs/theme/md_dev/img/menus/externalsite_over.png create mode 100644 htdocs/theme/md_dev/img/menus/ftp.png create mode 100644 htdocs/theme/md_dev/img/menus/ftp_over.png create mode 100644 htdocs/theme/md_dev/img/menus/generic1.png create mode 100644 htdocs/theme/md_dev/img/menus/generic1_over.png create mode 100644 htdocs/theme/md_dev/img/menus/generic2.png create mode 100644 htdocs/theme/md_dev/img/menus/generic2_over.png create mode 100644 htdocs/theme/md_dev/img/menus/generic3.png create mode 100644 htdocs/theme/md_dev/img/menus/generic3_over.png create mode 100644 htdocs/theme/md_dev/img/menus/generic4.png create mode 100644 htdocs/theme/md_dev/img/menus/generic4_over.png create mode 100644 htdocs/theme/md_dev/img/menus/globe.png create mode 100644 htdocs/theme/md_dev/img/menus/globe_over.png create mode 100644 htdocs/theme/md_dev/img/menus/holiday.png create mode 100644 htdocs/theme/md_dev/img/menus/home.png create mode 100644 htdocs/theme/md_dev/img/menus/home_over.png create mode 100644 htdocs/theme/md_dev/img/menus/index.html create mode 100644 htdocs/theme/md_dev/img/menus/mail.png create mode 100644 htdocs/theme/md_dev/img/menus/mail_over.png create mode 100644 htdocs/theme/md_dev/img/menus/members.png create mode 100644 htdocs/theme/md_dev/img/menus/members_over.png create mode 100644 htdocs/theme/md_dev/img/menus/money.png create mode 100644 htdocs/theme/md_dev/img/menus/money_over.png create mode 100644 htdocs/theme/md_dev/img/menus/pointofsale.png create mode 100644 htdocs/theme/md_dev/img/menus/pointofsale_over.png create mode 100644 htdocs/theme/md_dev/img/menus/products.png create mode 100644 htdocs/theme/md_dev/img/menus/products_over.png create mode 100644 htdocs/theme/md_dev/img/menus/project.png create mode 100644 htdocs/theme/md_dev/img/menus/project_over.png create mode 100644 htdocs/theme/md_dev/img/menus/shop.png create mode 100644 htdocs/theme/md_dev/img/menus/shop_over.png create mode 100644 htdocs/theme/md_dev/img/menus/tools.png create mode 100644 htdocs/theme/md_dev/img/menus/tools_over.png create mode 100644 htdocs/theme/md_dev/img/menutab-r.png create mode 100644 htdocs/theme/md_dev/img/nav-overlay.png create mode 100644 htdocs/theme/md_dev/img/nav-overlay3.png create mode 100644 htdocs/theme/md_dev/img/next.png create mode 100644 htdocs/theme/md_dev/img/object_account.png create mode 100644 htdocs/theme/md_dev/img/object_accounting.png create mode 100644 htdocs/theme/md_dev/img/object_action.png create mode 100644 htdocs/theme/md_dev/img/object_action_rdv.png create mode 100644 htdocs/theme/md_dev/img/object_address.png create mode 100644 htdocs/theme/md_dev/img/object_askpricesupplier.png create mode 100644 htdocs/theme/md_dev/img/object_barcode.png create mode 100644 htdocs/theme/md_dev/img/object_bill.png create mode 100644 htdocs/theme/md_dev/img/object_billa.png create mode 100644 htdocs/theme/md_dev/img/object_billd.png create mode 100644 htdocs/theme/md_dev/img/object_billr.png create mode 100644 htdocs/theme/md_dev/img/object_book.png create mode 100644 htdocs/theme/md_dev/img/object_bookmark.png create mode 100644 htdocs/theme/md_dev/img/object_calendar.png create mode 100644 htdocs/theme/md_dev/img/object_calendarday.png create mode 100644 htdocs/theme/md_dev/img/object_calendarperuser.png create mode 100644 htdocs/theme/md_dev/img/object_calendarweek.png create mode 100644 htdocs/theme/md_dev/img/object_category-expanded.png create mode 100644 htdocs/theme/md_dev/img/object_category.png create mode 100644 htdocs/theme/md_dev/img/object_commercial.png create mode 100644 htdocs/theme/md_dev/img/object_company.png create mode 100644 htdocs/theme/md_dev/img/object_contact.png create mode 100644 htdocs/theme/md_dev/img/object_contact_all.png create mode 100644 htdocs/theme/md_dev/img/object_contract.png create mode 100644 htdocs/theme/md_dev/img/object_cron.png create mode 100644 htdocs/theme/md_dev/img/object_dir.png create mode 100644 htdocs/theme/md_dev/img/object_email.png create mode 100644 htdocs/theme/md_dev/img/object_energie.png create mode 100644 htdocs/theme/md_dev/img/object_generic.png create mode 100644 htdocs/theme/md_dev/img/object_globe.png create mode 100644 htdocs/theme/md_dev/img/object_group.png create mode 100644 htdocs/theme/md_dev/img/object_holiday.png create mode 100644 htdocs/theme/md_dev/img/object_intervention.png create mode 100644 htdocs/theme/md_dev/img/object_invoice.png create mode 100644 htdocs/theme/md_dev/img/object_label.png create mode 100644 htdocs/theme/md_dev/img/object_list.png create mode 100644 htdocs/theme/md_dev/img/object_margin.png create mode 100644 htdocs/theme/md_dev/img/object_opensurvey.png create mode 100644 htdocs/theme/md_dev/img/object_order.png create mode 100644 htdocs/theme/md_dev/img/object_payment.png create mode 100644 htdocs/theme/md_dev/img/object_phoning.png create mode 100644 htdocs/theme/md_dev/img/object_phoning_fax.png create mode 100644 htdocs/theme/md_dev/img/object_product.png create mode 100644 htdocs/theme/md_dev/img/object_project.png create mode 100644 htdocs/theme/md_dev/img/object_projectpub.png create mode 100644 htdocs/theme/md_dev/img/object_projecttask.png create mode 100644 htdocs/theme/md_dev/img/object_propal.png create mode 100644 htdocs/theme/md_dev/img/object_reduc.png create mode 100644 htdocs/theme/md_dev/img/object_resource.png create mode 100644 htdocs/theme/md_dev/img/object_rss.png create mode 100644 htdocs/theme/md_dev/img/object_sending.png create mode 100644 htdocs/theme/md_dev/img/object_service.png create mode 100644 htdocs/theme/md_dev/img/object_skype.png create mode 100644 htdocs/theme/md_dev/img/object_stock.png create mode 100644 htdocs/theme/md_dev/img/object_task.png create mode 100644 htdocs/theme/md_dev/img/object_task_time.png create mode 100644 htdocs/theme/md_dev/img/object_technic.png create mode 100644 htdocs/theme/md_dev/img/object_trip.png create mode 100644 htdocs/theme/md_dev/img/object_user.png create mode 100644 htdocs/theme/md_dev/img/off.png create mode 100644 htdocs/theme/md_dev/img/on.png create mode 100644 htdocs/theme/md_dev/img/pdf2.png create mode 100644 htdocs/theme/md_dev/img/pdf3.png create mode 100644 htdocs/theme/md_dev/img/play.png create mode 100644 htdocs/theme/md_dev/img/previous.png create mode 100644 htdocs/theme/md_dev/img/printer.png create mode 100644 htdocs/theme/md_dev/img/puce.png create mode 100644 htdocs/theme/md_dev/img/recent.png create mode 100644 htdocs/theme/md_dev/img/redstar.png create mode 100644 htdocs/theme/md_dev/img/refresh.png create mode 100644 htdocs/theme/md_dev/img/reload.png create mode 100644 htdocs/theme/md_dev/img/rightarrow.png create mode 100644 htdocs/theme/md_dev/img/search.png create mode 100644 htdocs/theme/md_dev/img/searchclear.png create mode 100644 htdocs/theme/md_dev/img/setup.png create mode 100644 htdocs/theme/md_dev/img/sort_asc.png create mode 100644 htdocs/theme/md_dev/img/sort_asc_disabled.png create mode 100644 htdocs/theme/md_dev/img/sort_desc.png create mode 100644 htdocs/theme/md_dev/img/sort_desc_disabled.png create mode 100644 htdocs/theme/md_dev/img/split.png create mode 100644 htdocs/theme/md_dev/img/star.png create mode 100644 htdocs/theme/md_dev/img/stats.png create mode 100644 htdocs/theme/md_dev/img/statut0.png create mode 100644 htdocs/theme/md_dev/img/statut1.png create mode 100644 htdocs/theme/md_dev/img/statut3.png create mode 100644 htdocs/theme/md_dev/img/statut4.png create mode 100644 htdocs/theme/md_dev/img/statut5.png create mode 100644 htdocs/theme/md_dev/img/statut6.png create mode 100644 htdocs/theme/md_dev/img/statut7.png create mode 100644 htdocs/theme/md_dev/img/statut8.png create mode 100644 htdocs/theme/md_dev/img/statut9.png create mode 100644 htdocs/theme/md_dev/img/stcomm-1.png create mode 100644 htdocs/theme/md_dev/img/stcomm-1_grayed.png create mode 100644 htdocs/theme/md_dev/img/stcomm0.png create mode 100644 htdocs/theme/md_dev/img/stcomm0_grayed.png create mode 100644 htdocs/theme/md_dev/img/stcomm1.png create mode 100644 htdocs/theme/md_dev/img/stcomm1_grayed.png create mode 100644 htdocs/theme/md_dev/img/stcomm2.png create mode 100644 htdocs/theme/md_dev/img/stcomm2_grayed.png create mode 100644 htdocs/theme/md_dev/img/stcomm3.png create mode 100644 htdocs/theme/md_dev/img/stcomm3_grayed.png create mode 100644 htdocs/theme/md_dev/img/stcomm4.png create mode 100644 htdocs/theme/md_dev/img/stcomm4_grayed.png create mode 100644 htdocs/theme/md_dev/img/switch_off.png create mode 100644 htdocs/theme/md_dev/img/switch_on.png create mode 100644 htdocs/theme/md_dev/img/tab_background.png create mode 100644 htdocs/theme/md_dev/img/tick.png create mode 100644 htdocs/theme/md_dev/img/title.gif create mode 100644 htdocs/theme/md_dev/img/title.png create mode 100644 htdocs/theme/md_dev/img/tmenu.jpg create mode 100644 htdocs/theme/md_dev/img/tmenu2.jpg create mode 100644 htdocs/theme/md_dev/img/tmenu3.jpg create mode 100644 htdocs/theme/md_dev/img/tmenu_inverse.jpg create mode 100644 htdocs/theme/md_dev/img/unlock.png create mode 100644 htdocs/theme/md_dev/img/uparrow.png create mode 100644 htdocs/theme/md_dev/img/vcard.png create mode 100644 htdocs/theme/md_dev/img/view.png create mode 100644 htdocs/theme/md_dev/img/warning.png create mode 100644 htdocs/theme/md_dev/img/working.gif create mode 100644 htdocs/theme/md_dev/img/working2.gif create mode 100644 htdocs/theme/md_dev/index.html create mode 100644 htdocs/theme/md_dev/style.css.php create mode 100644 htdocs/theme/md_dev/thumb.png create mode 100644 htdocs/theme/md_dev/tpl/README create mode 100644 htdocs/theme/md_dev/tpl/index.html diff --git a/htdocs/theme/eldy/img/menus_black/agenda.png b/htdocs/theme/eldy/img/menus_black/agenda.png new file mode 100644 index 0000000000000000000000000000000000000000..eb4c8d2bea24113f1edcecffeaeec78d3f0b8b87 GIT binary patch literal 750 zcmVPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KXg}q}Xi$00M4FL_t(o!|j>BYZO5g$3Nd-FgZ~$CP4{e5|AJYMhkxhB?tk|7$ z?wgsnb22l^YF(7rI`AF%qTwY?CR`gYi}EidElL`fG%0BnxYsWD18sw5h|vQ~1G&TRc#1Pt#A@RU ze!a}_-;00`JjEF-GyHCu(IU$CNp9Az`ki#ry3W{);=-NV6l7?qocf=v+A5U~csKhX2|`!PJ)lUv*ER zFC*3uukdD8mGlef{*Rh%)qS4INWrys)HX|dEO7xg%&ZQ-opLS{0yQ)H)0Pu6N!Ng5 zdw98+GqX+K<#(&K%{>2(Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KW#B8GT{^00G2FL_t(o!|j>TZNe}RhQGh+d)c7bfOLXpgE9i$fDK@Sc7vuHWQ25r zrW-IqnBe+iq$mPv2PZU=Pl|+MVt-uDzW)xH8FRHeW^4&Q!QUEQQgPy5J{QmLBsG$9 zNrj|6uo?^geuO!fz;}xIsXQ-f2V^IP3O9Di8lW|^I%v&U8CFt^i4H(vX3ZSK<^fpG zIp*^@!?y|kMwTUQli(Bl$na(+GZXLxyaHdN)0^377f?9eVgXm}JO5zMOUfkeB-N7k zl3Mq@RAn5=8AP5B^`BoIko2tS14R##}lZD6*|7~F?ugW zuV$UB0QZG2-KOr_HsH;*vEhAlMtNq>Y94lMq1TwYx)=$8|EubM z_Q(-Fy~};n4QpmqgcG9bBr2cp#cMiA+5m3@!GD}U<3jhW1u8S!hitMCZBqxzTXRtP zD3UvpFq<4a7{2o(b`I>KIs~#Yi=DxZR;PDXE^}tRQ>F54mR@5@|HCHuaQg+SkLCMB SJiG}20000Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KW_Tedxge00R6;L_t(o!|j<(NEJ~O$A5nVV40Og;^a`1K1j+aJh>rm#m^Af%&4KIPY!{^~I6 zmedODh>`qgp(1Z%I3JnJkESj-(b~E>IJ5)C-cZ z!N@KG4*7L4rqF^;mARlFXahQd&>25dZ0@kxzy6uai`6WLVu#J`yuhF@MbPn`T@$MiR;r0@qanR175 S%WJ;?0000Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KXAJaWQiM00I6!AMY|_yYV@l!P0AL_>qZ z0g#dt;G6(Mk7RC;Kt;7Q<7l;V91|yT41UrUYme=x-M4RM*J6yJs@S2zsL9vlYw{Js zZq`i^X#+ut{6b?)xDnaqXnqffL}UmwfnL?zrUjh+{O% z7ce>71PGkxLrw8XzpdBuzO$djZ9)vb3S8@g4sAyQB5jF7HLY4@ zv<EEoX&~e z2adI@NH8o@^KPwuw;)$1fZ#5n0JeS5fkhy66(*-7;P~&$P;L z8{dh)ToC`6@{LJZ3)Xk~_rO<1{E1VUdPR0)g~=ymtOWFsqWy2+NNXHBk)4;Fq>>VO zmVm71y*a)f<$U*AlhiC(xx~{7vz&=(WD*ylh literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/commercial.png b/htdocs/theme/eldy/img/menus_black/commercial.png new file mode 100644 index 0000000000000000000000000000000000000000..19abbd54356cf2e23b7dbf63cc82859549bbb0e1 GIT binary patch literal 898 zcmV-|1AY97P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KXQrz)j8o00RO^L_t(o!_}F|YZO5g#($p}w=6D91fwB}xSMDM6AUOWU=%MJ1aIm= z@F)rjg8zUgK|Be15j=VDAc6?u!5s7ylo)Tu%tRC71QQbzjru&Kgr@1~&eGF8^WZ^O zy{f6NYrc9*wakoil?9Zslr{K;#rRQ4=YfO3df*$-1$3F&<5(9mv)B~a4fFz5Kzo6c zv8@*)@N>ZL8S4Ew)>ItcMp6^-dY04fnAz2Nts4{gPM~oPl&wh>yrf3pWyG*fr>{JH zqd>ixJx$ZwR0F>X*t&sBKo&R-v;#Yxtp?a3sm08)X@TzphTThe<&l|Pk#rfj5MT$G z0*(UrQUPyfIZ69~R$#m9eh%a$Jps0PfCfob+Cl0puny>PTs{nR0Cgdt|I6mI!M_JC z0w)4!5hdMegZ~h6Xrm;XDtI&dEa?r_5r_bW-rX_BXGlKYnN1865t(>HXpz(o+0f4-ln5eINuf!s9GhB0$*M3 z6J&p2WK7%&v#>yM;OnrcGnW{Y=g?E+281vo+D3 zm(<`kpinN~?|J?bk@MHPYr({5voWGt8usM;pCpBi-Hzx;3Cm8U)scOj(%}Z7gEf2Lk$rBIf)l74SiB z_-DkNze)M|VWvM86bk!Ql3F}xqypF#QIO{otzji)n7-1>6d2M6ymk4{@&Nmkivc~e zO^stKz$MkVK$8h@hf_d>ubp@2V!+I%=Co!pzQa0-)HuM)J%C4miMbXZiGWW^%KAI( YKeiV)SXx#(xc~qF07*qoM6N<$f~d!j0{{R3 literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/commercial_over.png b/htdocs/theme/eldy/img/menus_black/commercial_over.png new file mode 100644 index 0000000000000000000000000000000000000000..6671810c5deaa7447b9e6fe41a32f6b57066791c GIT binary patch literal 650 zcmV;50(Jd~P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KXu?qO`OC00Ih0L_t(o!_`^Aje{@{oIT|qO5iHMCD6f90wquaC8UIuKnbCO^L60s zfK;&e*+?A1hQNXWX&(`Gc0Afyk1;Vb&iZ`d#Lub0U$*#DA}Rso08#)Q01Ln}bEBGw znbiV-0pI|zCmeu6EuSLrG5~rQ_rrh}#`(>-t<6gst&)f=fNVj@(yF{`!4r`I@I5iC z1@Mq~Jsp5_jfge6O%izbBU*3(3JKGjml4q?GrK6=rq>QfMG2txynjWtH1|cJ)jA?d zrLVtOZ2-8LT1aB=u$7cV*DH~^A~sPsDFMq1qh6XA@B*? zoF3&cl7>V%var>n)dXMr4jmIBPNE7{#8-JB^09*s$L-wJJZOm+-EOHqW z>ib2MvXNt8Hp8^F+U#qTO(^lR=Uqaj^R;Bt+8Vrl!}=Dxf+wOpAk-oFDbJtp&HNNw zuGbhIhhlyPTSK;g17oiu{_Vkwz_Pi_&n%sEFXks%8u^%H*Z${TmkX`(L48;7iN`9$ zzg!S-&D?XUjJKLLLBrSN^7YrdfC=E8j7ekqc_ZH4dH@c8H?lh?Q7;!fZPW0dCgj%@yM{6#xJL07*qoM6N<$f{ThDTmS$7 literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/company.png b/htdocs/theme/eldy/img/menus_black/company.png new file mode 100644 index 0000000000000000000000000000000000000000..d6381eab1e41f524107e303325e672a155ec7959 GIT binary patch literal 602 zcmV-g0;TPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KX)@&v2~(00G)bL_t(o!|j=|N-IGWhQFhNB8Uhg*mxs|peQJa+(K-^1>eIr5cDCe zZEXb~!a@Wq3q?!8Ab5))sAYCFzs(e3$&8!LCfVQ~*kEttF4P0Gw_z@H4EA3#OY`yjHwRktPW-E+tH9fNb$&_HpvA|)=MO%g&aZIf8y;cF2W%9T{IZ#y1$>r^ zN+G z(sn$=;v$iMl62jsOKuNC&3~ovFKo@H5nq!3wdCUt#m9kzS>MIK0J9y4Z?uSgYq?(s ornCIsBdH#8u=0P{Qhew34bOPk)`eDFO8@`>07*qoM6N<$f|_;*hyVZp literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/company_over.png b/htdocs/theme/eldy/img/menus_black/company_over.png new file mode 100644 index 0000000000000000000000000000000000000000..ca172c460ace873c61891c80fec10981c428c47f GIT binary patch literal 426 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?zuQ z<8E$q08guZc&)!#1Me)}Q);O#c@ugr2wHLFOvrICR}h}F??b@S2UBLN{W&r1PlL{E z<=1zT?`KbnSY^90f%^la-2wI=$8UVzTc40-IYE7i*(9m$-}bgonQ7`UZ9)}Wk>}ef zTTTjnHan0PbgQI{>E7HQ>>rG*&y`>ES|yXURdK4~)cv{XX;a1L8~@<_uq))&l}R}# z8m;)=Xz{I?In`liz-Nt@MGCoR*Ax_O^L(ND)oOwCo*(b6YU_M+vl2WW6+L*{Z~KeM zZf?cQEzGem{~YWTSGJ0;lzk&*vg`9gv*K8OFL%{r8b?%KJC+?zO)`D$SYUTR|EH0W zN$GcQhImh_FFHlP7x*^t1O35SGdJQhk4$~d{Gitr{w*IG)ZZ;QD|N7*xw`ppWW(Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4Kf54GD3I&00T)$L_t(o!|j>fYZPY`#($6GqM}u)NYQ8-KU#`VL6p{r5R0_ERYcTM zLam^dUK9kuOaB8~FA4>P-n6~awiHS~wchw`{Xnc5joPX)C77sD*sS{W<}8fEMt630 zHwomxVds5$X6DB;XU;n_E8C3L7{@4%G59g~G57|Dq*h5^NxGJKXWPS)z;fVEz=>?l za*S~ec6o}V55wgHKzmBEe8f2qv;sST{*=?{{65oh>kQov>;a02`~&Dn&6Tou*x`W> zfS-YZM1Bb@NN5Iz$OR3D2POj_180H0$m_s%prwqyFO_G3_fwi>z}LX`y1)aofL%Z* z&=YwQSO-i_=$3|VX^fxJrcBrr^Ciu;a_4T!(K*_HjljE!>4U&d+lLdnHKCgyQ{PIO z3G@QHZSM@-OkgYU9`Isl3-SA?979tT(5rz@f##Sh0{ei^ZQlsZBwz!uI;8`60^9@I zY~PdgPH5jsoTivM?UP*ak~)A-Qm$MCI&9w$O><~gCUz~PyL05KIOdEYbjir={HwqV zDOc{;zAtHU+^ma-a4s2}f!BeF6=-YYJa9DXkusO}iwfK;#Tyy4HFN%C8J8Yqa4%2f zbKZ8hq&{Fm8Ti3E!#}P?w>bf{l_{H%2`_00u*CLfz$swSh<9Gn+rV02T8zJmC46u+ zI6pO(>JnIs?Gus)M?=m31grqY$N06V`7_a{lhB1a!)I%iwjWB`8>Is>iL{R(^pw8Z#Qbfa23-w*7!eX0_1Mew$-O6mk&NnFlF zHFUlJ{9^k|mYuRZ9{d1ok<Q5iG2PE}B1O7qO^o@EgyG=Rw?=1uW5IAr9dcD6o=YqF=IRRe;uG+px rgQBTM$GHS_*)Gz+(Ab~I!xaAmR}QKNP1d=^00000NkvXXu0mjff}+Ox literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/ecm_over.png b/htdocs/theme/eldy/img/menus_black/ecm_over.png new file mode 100644 index 0000000000000000000000000000000000000000..a44830798aa930020e65ad3587bb58c0e201ec75 GIT binary patch literal 672 zcmV;R0$=@!P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KfHHgbq^x00JOML_t(o!|j>daic&GMNhl*Z!*}~2&@cD2+m-&87KstfkMC$tTHgp zfXx7Bz(&yf(^QSyVDpx!QdiA~q*2%5PS0=~L{-^p+_B-f!QbF-@GFOi1QE$aq#FEZ zRlUdnQlJ1d8evF|yOmW=MC4#9zXFeLN_ut50|Cf@+9~bFc~IUJN+WlG1#swquP+X7 zaK4^%U?0utQh&cXJdglKpo*2WatST-J#+;eT2}51WQ)LCJ?E~TD^ovdDWTNCe}L`~ zVP5!16<^P3O9_?HoYXG3j-fh4m>1q)s+M{VPQ9#UUIU*rs{%Z=?2mcjZ7IDfr7Mll za=LWEA3H9tH~enEEnyGbyYFgMtwkg?r5}6b$vSc^>TQZIetYc+j?KGY+n5!bb(N}G z0sppaiHl9ai^!9RagdsyXRv%8J+^MHY7{_)pe)3ViBdPYc0+ z>ZWFC0~_@t4?ZV+Jp_6Td~kkz4*2FoOU86_Lyg&s)nX0&op^#gTlbY&zQv7MW-HKa z+A;A0{G0+k3f|N&N8YU74EkVsrpLrb9(`)Q*ReNd>?T}v_041Hci^b1=WBgFUv@zM zR@Ja1IDpLYDpN$%9Oy|^v$YJ*Zl*lX241sb$n7Qah2lTjpB|6-OGY`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?zuQ z!`7SGQJ`(UAh&d&%LTViji%NKPS%14kKMXgKWTnyYN}#ahG4Y)2j)Lc9D+QZoK|MV ziLux3bcU9QwcVXt{d}+b>_%(9kg0XD%wIkhRJ4~Pq5pp+c+8bHiRHW&TdEMwdTOCt z=xU`PHn-{*>)up_FJ84JmJfSN=C-so{hM1~{z*4Mvg1#eO1)!edmtc*K$pfjMx&loAF!7 z*FcxBhMyMlS9}??uVwWgn7K->^TeLN8!}g0hh4qAAde$r`|I^Hx8GI&T+QYeTKZmi jb$v!DQaG0Xi0|jODAfA=f#ZD!D6TzS{an^LB{Ts58w>Le literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/externalsite_over.png b/htdocs/theme/eldy/img/menus_black/externalsite_over.png new file mode 100644 index 0000000000000000000000000000000000000000..2435f2fed0e677252c104136e7aadee5fd4aee0d GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?zo@L{uPIW=Y42Vw|U6v|Ksbn?~NT>^v*mx_*AIjMRtg3rw7XgpDVUG ze?u3q+S}2x^PeeO=vn8<)0qRF+cvB_u{E{#<*%8$)~zwToAW>F?19tyAfx`&A84Oh zapqA|oOj9DC3#8n;~yQitN$C8z3VamcbU7-^W*pJ42hY3>#zIWf~auy_}MOUGjrGk ze8hFGo#Kp~eed91Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4Kfnq=JzQ800PWOL_t(o!|j;AYg9oH$3G*{peQy`#6XNjL1NGpHZ~>@EJQ*70I?G6 zjG*`fL_#bSwFoH$jh&6+kHRK}5bXpTHEJv(@d!jwi4aJN%e~}lv&yo*yL&nB&OCSv z%dzurW^n_a+&FH34G>7kC$X-psxMHznP0;|^dD*cB{h zNYbTZ@T#)sH+c5OB;9uqah{Ldvwgr_U|r0Aj+@ygNhkh-m-N!xrfM{Q@-{OY2aXj9 zn+5lK6~X=lOh0_ha7gk(o6EO`dET=m$oF|8~cPjUQhp-EQ3e2l%-2 z6PIlcOZsAFdjt6+N%zd`BXGx)Z!8J#ZDX~I+W@5tTnwbs6WV_X7b_m!X$bT*w z-ptkl+Y>;~O8OLdaZFOLv-3R2BwK(z!0SM#2{;$Ci!aK-M=`QC;Ccf1QQ&OgEk8pI z13kdDU_Qm@ga>y*(r^;b_n29`Qy8k?5{reGG;3yOTxQwo&9_(v{xfi~Se_3(zuxsi zg*Wg8Pc|2%DVQ{=!lUvvTl1fF}tcrYnS>1KxY%?>#j1(qJmyq{?~T z%r*l@64;%R^z?tiM=^)95ooTkEU3HZo6YR9%L@HV$Trb(fX~-C+f)^PLej$;zG>Ao z<_k4`)2d&#ku(L|O2Zekg?f3g7Vyz>hc9)*t^rm`nn@je8d~;=JA=>QGx!X?Z2JYx W%a#Xk;+)0+0000Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4Kfvcf?|pQ00HDlL_t(o!|j;eaoaEugulz=J?g-81!f0kI#3C61#voHI#35u3GBdB z2UG=S333IS7chfCKnbEEMpCddH^X0WdDy)JX_B~AeBy?Y$!GGJ{0-r=zhh=4uuizI zlk}SU5Hl-)3RnU)Py)qpUQ#`Yy`g~YxS4Ebk&)T?<8#`?T=)8@WfN( z^fxnWqK5t3F=F;V4C|tH_w)$`V|j7IPSm(RTOYu8U>97vJZRWKgOh9UX?T>>JIVOi zNLoAnzj?=txjXC!umxh8Zz9A27G|~r!iKm%xm23jB2qzO*h}gnUAc1OG{CcW?#c54 zL56?EUUo{IFN5hD!`6`*!v-hxqz>mc1reN>P zo-~e){kL&VsyatDSC#ooeQC`ln?=xEuKEM~*{!v&@}J;c|N7WUGD(&*|1S;eI;Q2! y|L^1vb=U$}L_R96pL~{0CZEY?@|pZykpBf!nqHR8#s*IS0000Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4Kf*ZG%le400HAkL_t(o!|j=p1HSoQ?v4I zY$IvY%yPg=%HXvmefY{|N>a_trhp>w2AB*8y#s7Z+Pdj0B>X4fK+=B8xg3ylgIIK@ z7dkX`)Z(>U+I$Lpk+h7bBsx0q5hw$nfk~e_Nga3#Yy)NAI=%^e;i|t z4@qZTEOJ>O3(NzrfhX=#GibsBmu-zsJ1;sAfN$>F8Bl4fKMFi|Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?F=>bj2@^oHM`I`VgqEHMISytEq&FP=s@R^gFl=k*WVWw5 za|KQuoB#Il_OHsTP6eH2=GNo;AO7^Cl)mUh(SX~z>sS2^{WbIV!7dMG6Nl75W`9m! z{{svx3)m06Ik+;bNFpbDZuY?!4YC_fJvzyd&&^yf&Kw}#x;^ruwCjAX`K!zh$DZDu~+h=I(}(g$bZ1>own+vB|$FV)G`&T!e-lqEpuX6zkkoG%WU`DjU?56 zI|p3d6>*E9diFxI^faT?3hQ+lS+noRmNDnJJW27EZSV_imz;fPM-lG^zdH}QWccHB z?(wobkkAY^UnwsyuJz#Oy>n)T`}Y4_dFi3-JycY8^21%;nSCcsjn{OVK0UiEb4!ZF z(c-^TnV;so>)Xsd{Vn@R)q3W$)ho|j>v-Ec|5Qdd&z!&W3OwsN|DP)PQP1|D)mcmK U!7P?d+d#48>FVdQ&MBb@0BA+begFUf literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/generic2.png b/htdocs/theme/eldy/img/menus_black/generic2.png new file mode 100644 index 0000000000000000000000000000000000000000..39c3cb2a249f0e1e1b4e55d9da15753c2eaa5781 GIT binary patch literal 611 zcmV-p0-XJcP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4Kg2`SBsPY00HAkL_t(o!|j=p1HSoQ?v4I zY$IvY%yPg=%HXvmefY{|N>a_trhp>w2AB*8y#s7Z+Pdj0B>X4fK+=B8xg3ylgIIK@ z7dkX`)Z(>U+I$Lpk+h7bBsx0q5hw$nfk~e_Nga3#Yy)NAI=%^e;i|t z4@qZTEOJ>O3(NzrfhX=#GibsBmu-zsJ1;sAfN$>F8Bl4fKMFi|Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?HM`I`VgqEHMISytEq&FP=s@R^gFl=k*WVWw5 za|KQuoB#Il_OHsTP6eH2=GNo;AO7^Cl)mUh(SX~z>sS2^{WbIV!7dMG6Nl75W`9m! z{{svx3)m06Ik+;bNFpbDZuY?!4YC_fJvzyd&&^yf&Kw}#x;^ruwCjAX`K!zh$DZDu~+h=I(}(g$bZ1>own+vB|$FV)G`&T!e-lqEpuX6zkkoG%WU`DjU?56 zI|p3d6>*E9diFxI^faT?3hQ+lS+noRmNDnJJW27EZSV_imz;fPM-lG^zdH}QWccHB z?(wobkkAY^UnwsyuJz#Oy>n)T`}Y4_dFi3-JycY8^21%;nSCcsjn{OVK0UiEb4!ZF z(c-^TnV;so>)Xsd{Vn@R)q3W$)ho|j>v-Ec|5Qdd&z!&W3OwsN|DP)PQP1|D)mcmK U!7P?d+d#48>FVdQ&MBb@0KEy!wg3PC literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/generic3.png b/htdocs/theme/eldy/img/menus_black/generic3.png new file mode 100644 index 0000000000000000000000000000000000000000..9555adba72ce3dde032ccc06232cfb20bc73a86d GIT binary patch literal 611 zcmV-p0-XJcP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KgWH?H&yP00HAkL_t(o!|j=p1HSoQ?v4I zY$IvY%yPg=%HXvmefY{|N>a_trhp>w2AB*8y#s7Z+Pdj0B>X4fK+=B8xg3ylgIIK@ z7dkX`)Z(>U+I$Lpk+h7bBsx0q5hw$nfk~e_Nga3#Yy)NAI=%^e;i|t z4@qZTEOJ>O3(NzrfhX=#GibsBmu-zsJ1;sAfN$>F8Bl4fKMFi|Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?@^oHM`I`VgqEHMISytEq&FP=s@R^gFl=k*WVWw5 za|KQuoB#Il_OHsTP6eH2=GNo;AO7^Cl)mUh(SX~z>sS2^{WbIV!7dMG6Nl75W`9m! z{{svx3)m06Ik+;bNFpbDZuY?!4YC_fJvzyd&&^yf&Kw}#x;^ruwCjAX`K!zh$DZDu~+h=I(}(g$bZ1>own+vB|$FV)G`&T!e-lqEpuX6zkkoG%WU`DjU?56 zI|p3d6>*E9diFxI^faT?3hQ+lS+noRmNDnJJW27EZSV_imz;fPM-lG^zdH}QWccHB z?(wobkkAY^UnwsyuJz#Oy>n)T`}Y4_dFi3-JycY8^21%;nSCcsjn{OVK0UiEb4!ZF z(c-^TnV;so>)Xsd{Vn@R)q3W$)ho|j>v-Ec|5Qdd&z!&W3OwsN|DP)PQP1|D)mcmK U!7P?d+d#48>FVdQ&MBb@00#lg<^TWy literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/generic4.png b/htdocs/theme/eldy/img/menus_black/generic4.png new file mode 100644 index 0000000000000000000000000000000000000000..bd6c5196431499007559a2e0c094fc19d84312f1 GIT binary patch literal 611 zcmV-p0-XJcP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4Kgu6freWE00HAkL_t(o!|j=p1HSoQ?v4I zY$IvY%yPg=%HXvmefY{|N>a_trhp>w2AB*8y#s7Z+Pdj0B>X4fK+=B8xg3ylgIIK@ z7dkX`)Z(>U+I$Lpk+h7bBsx0q5hw$nfk~e_Nga3#Yy)NAI=%^e;i|t z4@qZTEOJ>O3(NzrfhX=#GibsBmu-zsJ1;sAfN$>F8Bl4fKMFi|Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?+Ys<>}%W5^?zL z%!|3r1_EvSSO2<~6JVwxJ%x7`?b;z2`xPjavaPSNN+g!Rk1x~Vc6Er$!uSB z<_erRHvjG8?O&BwoeDb5%&o`wKm6%ODSgq2q5-#a*RT2;`fKLzgIylXCJw2A%>JCd z{s$OX7O)?Bb8ux=kwi}R-0Xud8e}(|dUTQ@pPRW}oH;h; zcB|%2(zW#y&8}8#b^Ox0kpF<$J8jiTOM+a!sbwlwh0V4JTjs>De*d0Vm)Y*Q8%e7D zb`H3@E8-SI_3VXa>1jr(71rxAvS#0rEo07cd6MES+u#@4E;;+ojw0R-es>;p$?(VN z+~Z|=AfXv-zEWOZTPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z03|yOnhSma00b9FL_t(o!|j;yYnD|M$3LsKGI3kILmJ!LG-)f%wxU*A)T$p6L@+Rl zAQJ?CRj@yxs2}_#5Q>b*h>FOc5<<$Xbg-bdtmz!)RyGo9&D7~MeBXhmU%n3>@1Ez` zv-hRx;5~4;&pr2^bH2~_J@?-8yj5n#T$SsX!%_iX0bc>1EcL(^V8j1_Bl5j=MpkB) zrFEIvh+UR(Gux8Ub~?X{>G-N3KFxY}-@9~c1+B=}jR)*+u= zKpoHxJO+FSv;&XJUq?C2*Q+5WJ`h72)UpU-ayscZvlcVkZf36paT7770q--jVKZAF z%(X~g$j~seeHqq;aq7+NJ;=A3U#ctxo&}x;nw;;In%m{pey^8H1iuY< z#*HWR#&-c9rGWSa=oLdhIDM}`H92ycfKK4#4xI@F+=i|VK0WOspyj<|b1n|YAqjFA(Xa3z_?hW7=@UnJ(DYB^y z`_I+dfUQp754;_M|IJ+{K5Yhd?ay}FOsH=R?0=7Aegwz`yLuS-<0|F+A$RI{`=L1S zhk<2od?&C^zsNXn(=37?1SkIIx*pvu_~ zByCvqxwp!VSE$PDPS|uORi=)qC@bjM%U<9{pcYuD)|>+Tq_P0uq2O2RP6I!v`k_JN zC3^lx)ndCg%yIQu7#$1zM{)Rzo%TFm7NMjy3->;O33~Lmy2+Y?NomUD>C%Kq)XMn%; ztDMlO7L_COfu|hflltf(3wV?kmjw1t=kx+lt&5{NW7-sB*4?a>S*&WdPq~g_^eRQ8 zJiideuG$1m-z*&bdC4V>*5tWD_TYBCA&UKLq?Ma;o)Aso-mY`&{r* zy#V@1IF%M4##e)gr~`hMeOqvv^(juO%%m`DQ}EI7E51y5(0wUQ>X*pm|5~Xk^V$c; p^#aT#@Rk4PE8r{OE8wqT`470EiOhy-AhiGh002ovPDHLkV1i?dCo2E| literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/globe_over.png b/htdocs/theme/eldy/img/menus_black/globe_over.png new file mode 100644 index 0000000000000000000000000000000000000000..e3676a44faafe9dfb8452f634f0e359769c550be GIT binary patch literal 847 zcmV-V1F-ywP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4Kh2RRBuH900PfRL_t(o!|hqok(@9LeM$qNgHS=n9fbVngAPJEpafDuD1j141#t)Q zbwCMR1-c(Oqt)5qJvO&@GkC_cGk~RMS$dYV#LRfF;{)FDIKiLbPw<&RL=_SBMAY3H zgp%D}wUC*2Cx8aP0)S<%0Q!=(1#)YV7iD_@blUdqikeKFh&f%S{^xOZi#3V zcZ2)}@#)p9kM1}N_~=Ri@F?<@EZZa^p8<>s3$CJ|J;*lk^emHA38L_umM5YKz<0H` zN7;}A@MnW@A7pc@{6@ogBGRW(E7oxUK4#?oWafd0Jb*9i`B!H4&nz#ywSGCsySXGl z4+QM9c*xMSPX?^;uN6{>rTCS>v-mg?%=V8yb$Za4qx&sE)!Zp{iK)VDo;Ru7#)6E# z_e>!zDf|(m48m=fryrjZO3`MOE<36*tvba!R;>#O8A2v!rTM(_eLVW93 zJ1txVuPbGr!hl_D%S3dqGTqU>jW+@85~Z7$QySt_u@W}G_e$oZj8wg-^^stUVBJV& zSK8fDvSQO|*$B?|CLJ@Sc!*4Mw9RMa&gKM*<-dunQrM=JPQ_Zh?)*>c1b>1*!Jpvw Z#uL=(^0yEKr#b)t002ovPDHLkV1h#1f8ziE literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/home.png b/htdocs/theme/eldy/img/menus_black/home.png new file mode 100644 index 0000000000000000000000000000000000000000..c210b4f8dcdaf6964689b6fab0cb93729cd36cc7 GIT binary patch literal 716 zcmV;-0yF)IP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z04V`yBb~qi00K-&L_t(o!|j7sYD^R~wWd|SXpU|%}*8EDylUYg!^ z@BqevBs+3^TEOg5e(7ixVdx#J3;xywSO|PeM}Y^xwsfkW-+f7m?U|y&7lk*_&Vk+w z+yRcHQ|*A~PD`4#{USE}LLcajz-{1kj?(??p`;1h?_cuB{B z^T1fcI^YYo-{xhTDPYYqicKs_LQ>@yU}uA%KLIaozblh%_M|;ao%Y!FqbiD&2M|Jw zRaMwz0Psmw@LA>OfL{TA+kw&a`a{mWV?BqKN|n#T&-|-o_w1Fc-B!Z(t(<#z16S%$ zKD3AK6bQHM8qs1ti2z?}jsITxvha(`fUi{fPD%Jq0r<{J*yL=cW0L*^_-$_DhTT-4 zQZ{14wux)mHHNCUN$Scrv6QbR+r)yerAXBQUzzehhE{poZAo8&Ej4b~?;%b>pZg?@ yq=$u(QnKds|B^;~4kN#9&s7HBR2%C5VgCXID2)I`4Zm>!0000Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KoLpAR>bR00CM_L_t(o!|j>dZG$irhQCwwy^N3z!Ukc4jKBu%2+anJkWt76bOX8p z8=Srvi69aV#9XZUNWX+EUp~;e*jQARQ0SeAeKJOMS`t7Qk8OG+o z7jSeAobo9QcXKZV@A^K2e)$Ew!viT$8lk(&HiHKe z;5q}kRRg4}!@EFiUI1@Z0m<6%K2=(I_E@A&B2t80VLwIW>@Ckbm#J288*>0#pc7YB zbpzGU0vJPeY&HTP4d6%6hna= zJNRRCn+PA_Bm5%pRj}}?+8FlZzOD3`=g;n!NU{)Y4P4r1>phjkOXQ904^L8r#{ED; Q#Q*>R07*qoM6N<$f*aez@c;k- literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/mail.png b/htdocs/theme/eldy/img/menus_black/mail.png new file mode 100644 index 0000000000000000000000000000000000000000..ee3d9d81ddabad1dbad46eb31081aebdd88d432a GIT binary patch literal 787 zcmV+u1MK{XP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KoVpkzPIk00NUqL_t(o!|mA5i%nr1$MN@vX*MWjfksS}EXah-P&SO+SZVU3nKVgO z5`~QoO3h|U6voJpq}2QYGKvK$(PT;ES41+J{J8EN#>eKl^>n(I>&&^g=sa~go##2{ z`M%D%&-p&jxw6f_TBh+2mmHttb9|1^@qa8$wVWiW6=-d+ZN&EYl<`0haHPTbjli8O z@IQcJgYiEz88-g|zEq+9KG19XQyQJ5cAy_vkOn{PFYw=h_hDb&Rsy#rb)y;`ek`1;; zCG7`x0Gp$xRlp!HBZ2w~4A>s76033ea06c@HCLDmrdO$({7tN4)~RwbWPph(FXA4c z9T*NviIGGmDFN3)+f!hdr1e!|Wu9%mhumAL0Ph9X0Jm(Pv0boz9Jm;+`3M}fJ!HE8 z90Q&JJ(AW{h*fi*Z~Dt8|2+Zk237-iY+p$XrJIr-0R`LNqWXfQL0})SUDBlO`-vw{ z-BM+MZw1n{p+wS7za8fwWLXvsqm840xN*$!09yWnlK@q3jOvsH=;jHlEVG-5H^2Z^m{4eetpW}0Uj?eKqKF9w@_+OvDJ!5;? Rtakta002ovPDHLkV1hr~XY>F7 literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/mail_over.png b/htdocs/theme/eldy/img/menus_black/mail_over.png new file mode 100644 index 0000000000000000000000000000000000000000..61333228ef42d66e851db45c1ac6d585c7d1e5f3 GIT binary patch literal 533 zcmV+w0_y#VP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KoY@^7{(_00EUrL_t(o!|j;uO~Wt{hMyPlzwHEcgls^W05%{SkPRpk&<$E9pc~L` zkZw>m2osn;j$}p7S4mt2`6U0a&mYe@cV{~?#xPa6VZsvOBYcF9@DaXMZo71nv;>xc z*>Yn{(b&Tn(^`NvU;>v_8&~xCslp$Dg)v5#6yO2)4h8>Hsow)7C`IoSFf*n2WW4kQipq(I>rw|4q;&Ndgp zJMCEwOjhYvXY9FZY%qAMOYDwU!S)t9v5;Q9XTEUo&dzQ;fJIGP+OSsGL&_fGzF?ho zY`fkeC20pd10TS`W{#@7S=|ZPN=k>=wZHoO&gyoaU@qNcRdKO0M$)VKd>y!>U)BU= z;>1H59Nq!XyUfvGK;fp#(F0aeW_|nwtS)rd+!=e2l#Cv*HqhQn@YV;zhz9h9Pk`+Z z;B^KJ{tWcw=mU^R8uEI603OGLFXd%24{&=oIR<8HbxFlv+z~#)NB9UI;Uj#6|3~n@ XJYRA<%y~^*00000NkvXXu0mjfG``>a literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/members.png b/htdocs/theme/eldy/img/menus_black/members.png new file mode 100644 index 0000000000000000000000000000000000000000..1421309370058deffdf66e7c323035127988ffa0 GIT binary patch literal 1134 zcmV-!1d;oRP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4Kojz`>L@300ZtxL_t(o!|j<*h*eb_$3Nd3r<`VVMlHt#Ge(;lrzQ$h5}FYjYDQ>L z3$+Mz*Dlw!s717BQ>}|^5lEN_74F1|kVKNGR|svd#}ulJ5}!D4wfeQCiy1$|3D;dkTjHgqM1c2Fa#U`j=LTK z_U2h5u~sMWHZTj^PUvx9C~A!y8yx~}r06N2GY9bjU_4{J8^CL!bre&iBpn2H24EFn z)Xc6$tak!w zfx%R6A2ct*NUP5RUrHJV_GI8*4f2X? z58m_YnI?Y$9|HFRZv=2}x<7vsVYj!;tWu^u*bF=z2*?(oYGxNC4Q5o>AI0c%#=y}E(60+w%+)NN)};IyA! zmfR0q36htzCW6dazxJ2tDEqy*RVCHDtxl7USj)FY5W48s4JF7YUEw^?lY#vwmi%q^ zwKSPBvzwBZ1Iq%~Ea^<#S3Sq@VJWnT3?U}l$rOBqj8;|o0w zwxsm$HQ=zM_1>#AT4d6%T_vpEXwk;go&nAQ7tQQ??yl0zCV&Y^t-u;5+vP8j>V7z1 zlDs9z9`${%Mx9!jZ&H$$0#AEdEh3Y^DKq=C(Ef|@LCs&`^#I+#(ugTl;5RdyDz)!o ze+~5RaPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4Kot^{l;hj00Lb}L_t(o!|hqoZ5uHReJc7NZ%}oDYJ*%ha5uOS+6_E{N4RXDZgAP) zvcZj@PQd=qfMVFv<4J81G2J=D@ zp#{JIU;;3!L;#~jN2col-~=E6kW6L(1Es@YC|()KWdU$701p7xf<9qLVU5L#A=3tQ zt`IUbfd?>>hSJ5Du8FtYOHc7k>RejEv#fh{hZ3vv<#Y_B_!jVqVB9OCi-k?Su$x_n z0bf&oG5~pV8Fj^oaAv0+2x7ja=4>&sTx7ZUYgC0G{vs{6jx~8QdmjYj3&RgKnU` zw$b=qj0nV>>(E+@^HZ<#U?u<^2|!6V>Hk%EFp!1$&CDvQmPg}vS2G*yIK7=Uf@fo3*aY!uOc#v$a+2DGw}$C`bNFf>>*>m=U4zdsa?+hw=_u&JPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4Ko(}kOFZ400iqvL_t(o!|j<%Y?VbE#eaVlL0*+Yfl}TrQ3Rnjlsg~kLT zE=)+=7-Mwj!i9;(n22$q5?!DP3AiH0goxG_MF>*Rpn$dVXes4cEb=TS$IZFPm&@1Q z+xB`5rjz{Bd+#@M=FH50&YW)=lDJXJP29j`fcyaY0rCUn2gv`w$=}l31`$yW+zueA z{=Xz2J=ueZmWf@jilCyI17v@0QT0R>U>00 z0B-|b{fx7~$3-PCsSUUQJPYjWBk>>HenQc8J|gOYHIkYlq6SzF)Bxo@;Ispcz!#Dl zBVswQT+*6ilV1nSw$5*q)Sh@YF9oAX(gi;+2c8EW2R2Dso5zVgFAb}&_TY2iW?%)d zA|kc}dx7RO@QA36h$`S7V1a-B5vWTcIv#k;b?0_77=WMM=N3sPdNcDM0L_HVjPU&}?{MM)=fkzWZs<*&a2-vYl#I@Lqo4g=-`OMqGSIBO;C zj);$dvI6YSU6S6)mGcvTmx0y5UBCo55)z@Na-0+8R6PtLCdmI9Z7?ZDTP&Lq4~ zlE@`Vt$sEJc-V?_8}Nyw9TBkvSk+JBmx1>sHRU4zgpc>9O#+|;I0m$)08g?DElqUv zDKJ`6T|_Jenv6H255#}Bd{30LGgsO?0&K8i)H*7FJ00DX!$5;=MXmQs9k2{&k@T+5 zgIcFuX%AQ(PQ_i4nj@kXxEIJtzQt-Y6WA)L!7EY;49W5==N!i+U3Q)4EUOt;*#@kM zh(_QmNgEQYT$y5{|42L^6%o(ao_wEA&R4tgH2-wMvw8@)0<=rI;=0p3py{qZ-fi{* z`z0MP-onJQ1IBAlVi|9UJyf~zW+vJ+N;;Tp<{!1xjk7#W@e`$g9c3vmB4>f)z!A^zvVNOuPU9002ovPDHLkV1moEgP#BZ literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/money_over.png b/htdocs/theme/eldy/img/menus_black/money_over.png new file mode 100644 index 0000000000000000000000000000000000000000..fba1c91e05b51765ed8c8c0352840b3db978f614 GIT binary patch literal 952 zcmV;p14sOcP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4Ko>RFCX9l00THlL_t(o!|hqIj?+L8eS@fINJD*==)rsd($XS|P*Gfgkr3^rMil80 zlJ5`v3FZ%c5(OPbqCejs_zGx;=B;jSZ<5%-$>~rmjpW$722r z0R8~}0R8~}0RI05e}8NT5y=6}06|2RS3O8{T?3Z5hX2fzyeKexw@(h z_7{L3B613#RMo=JDmd+1RqZ3~M5F@n7QpF1#|~buZAbnXKx-urz=E?dbJ_>qx2Dzr zc)r5?mb|}iCL6ZP#_D{_wM(&u=6CFuS)J$aW@^V?#rf9oH|HqS1kf87ZFqf|)JY$~ z@6xe7@Sl?DD>hEw)l4*dCCYqt!T+Xc(nA?;O590Z=iYP8CDI$0D8aCCa3L zy=d7kC%@Y$l@m~A)X0A}Q(s!j5L_^kCq-Eru*baqVFKX2r(WJ?;BNr$czy!lTtqq% zsrgZ2!Oumc7Lkq%x)b($4d4;a9{_kp=bhHESJ0*)Z59J4W2s~NS=xkMIJO7=yWxGF zn9-cF7^AS}#q(I`OJ4hC^g444?pipeRcucIG(to1qRnGlk+& zqe<2|R*#nej*P>ua_m0IwJPT|#~#A@hHoFaTCI`HmiMDfdJa38V{Zaqn31WhTyB`^ zJejTFmG8*3 zE!=(44Wn6%*!HXWkfF=wA+lSn+d7n?|HGQy;f&EmX|tm|Vz)V%nX|In58Zv1!=K2v abo>SV&pCCPmUb@?P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4Ko{pA%4sN00F&8L_t(o!|j;8O2beb#eaXPpa_0Ibr7whi@1oR2);odKyVQUA3|{Q z0s0QUfZ#JYxTxUZCMYTt)J2yjsmCRS5~!HmYp#VH2=s&e^W)_7^xl{xhE*dBu`2iq zzJjmdEBFe&g0J8+s<{p@vuU6OEIW=mlhn#}h9sv0I0j-*$3~uO*F4<4E)aQ2!eptj z0TQ4CTu5pbjNUo04XErNY&V6E9cIMojIR*zkq7uF1bpJrd4+O5aWo(b6`PJ@<3vR= z@3U>{W_D0;M!iUEY95`R0rni`1abZfXaW<@_0f|)%@y8h3xc?6b#hs^iw9{6vZzbFB?0W4;mPk>0$ zY2nOE`g3?Q>jHD>+qE?BZiotu`&#$ZJ)tZ00000 LNkvXXu0mjfak}{9 literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/pointofsale_over.png b/htdocs/theme/eldy/img/menus_black/pointofsale_over.png new file mode 100644 index 0000000000000000000000000000000000000000..4549e2c4611487ebf624e1817b13fb589f07d3ce GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?lFzi8%ar z=EmH^1|lx^`Ar&bg?!|=r*KO}N^z#bDK@!-$`vfTJl^w6P-A8(nEU9`i3UZDHVv*t zEq|Ep7C5QMuTZXR@e#_tDyu#1u=O4os&RMCVowWWvQC(M<2wycz zd$aWBvNKPAE>@8aK5(&Iy1l%@ehFK4a@yG&+jc&bZ@9korW(U@&R;(#h@|zh3%j&t zy{T9ox1n}(xWB}fBrTWvmvTQQaNY}ky5DAr+T@wJw{J&=t9zc`E|%kWK3wPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KpD`EvJ3}00EInL_t(o!|j-{PQx$|hCic73~amtREUL{r4l>511!7%5(5jcF);8X zs7o1`c>-WSVyKwdkSGgn-Q-w2cu3XsoY1)PNs+9JeE#(3a=D8U5n{D9BDMsd;1hg; zPw;as3k_h5IRLJe+fPK~Lw&f21YJN6$d%Vs$k|y9Pj3U50O!Dq=f4H^=IqUvnl``` zu)wp3JbCH#<@~LOp8&-Sf2-lGgOnNmDAMNA7&G+zI~CHVXiM5`mE4OaZ8X-J7dBdW zo0N}C`K4Ez@0gXp2iBE)AA>sD^xvk9!-z3v7r0Qy?ukgx#pwd4$~ZS7@}|l8PQc5! z?XC9%;&cENeBsLAgNXFKCvpTFE>KBw7w1ky-n}?y4o+20vkCx{l9HBJP|}w4KSiBw zbCdAXlCQATIk2p}@)qd2iZKhWit-jXHpZ}EoM7d(Jx`;}Ta)m%>4BwcsSG_dZ=&;D zY2`x{n>IadRe>MZr2P25;YR_A{d(&mu&InQ(!vh{+U8Gh{R;dj;|$U;(l+}8*;yu6 TF*CVa00000NkvXXu0mjfiA?8m literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/products_over.png b/htdocs/theme/eldy/img/menus_black/products_over.png new file mode 100644 index 0000000000000000000000000000000000000000..100edf445f129bfc7d97186aea3337af6f07f4b2 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?zuQ z;~{U815aywFY^x0zJk0%Tz(8W2RM2Tu)SjId%%(R;m_ietw&<^$T6O&KFR8I>7Kjh z(xVd}}!@Z;ra>sqxe8_%!lYXGq?-l!hhBmKW ze6@b|(kU;lI(Np&I=uZLyzk>uC3%^`&fM2db(=0NQ_h^vy5Ka6rSG3RA literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/project.png b/htdocs/theme/eldy/img/menus_black/project.png new file mode 100644 index 0000000000000000000000000000000000000000..b015297bf0d7e546f4459f6387bea78bff605e41 GIT binary patch literal 477 zcmV<30V4j1P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KpXLP6A5+00CV|L_t(o!|j-{N&`U@MbFa&L5nESS}<4&f=$3CVCg4W+xr=Ub$Y?Z zQpCz&FQ|o0z|AJtW`#upd9!3=CeCYi2IkHl?%rkIu1O-+S|j30@CiP_C-}uwV_qAX z*%fd+Yn`Ot(!m2qz-g4u10&!oX80^QpWwqPiy1yong1`bv6#Q48nwA%)&aJPmf-PE zoj0?~z`YNE&0_o%B9wG7Z|4t->l<+ESicRd7vl%V`W~=XS8T3-;3eHTp40}gUpRT= zSpOOdzj`mMnRS7-Bb)t_rVVr*_k5N#DCy1}nh#0$-q@S~9ml5q(s&0rbDqS5(%hqY z0o?FaPRof?GyXOAXhtC~Y?a=8;?#_%oXm5F4|QHnO}+@{qm4~gBYYL-vk>?yy}4@4 ze4b*nOtG2T9++7RXgW^V_mZXwv>YHqNyCzE*WY`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?e`cFYZEQcYl=lAsy0H=syu!C z&4k(uXEt1kNIa-magaOi!~4#Zb*&y@44YQk7@ywHXV>uls#%lxo(HV@KW_3JQ~mF$ zs=u0RCgTkj?|}L(pHz}4+zSe9HoyCBa`Mtb$@{s+)e;O@3}&Wmv+gWr z4B#t~^R+#;QaJ1b$m)9Oe>1mRmZ@nft@HbSgXf*?tZ&cv^j5`zCDkAEl`{8Tc*?or RCNLZrJYD@<);T3K0RSj%n5_T+ literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/shop.png b/htdocs/theme/eldy/img/menus_black/shop.png new file mode 100644 index 0000000000000000000000000000000000000000..fd1fe4b5785494ee9735591d9e7ff79c2e46278e GIT binary patch literal 715 zcmV;+0yO=JP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KpoGo9k5o00K)%L_t(o!|j+oh!ar|$A6;+3&VMwm6&*fc=&-L9%7k7u23w_((0@% z#cR&OLTj5V?8L%eu(FF_qhRCtg^HYlVh}9EoLs=fn7_>g!eKVMdv8M`JMehyd$W_@ z{@=`GS(C)L+7`yxa`+rRhtJ`2_#8fm9~pQvyJ2RZ%uGJ&zBV~bcuVqP=5STuSRa>H zz?`J|D8fGhj`l45^m(FZ?KN;#(%Q(RjhQV0Ge8qq0nSJ&Nh$$HfJeSJ11t?CZzK&I zuIxLY1}sPTExS(*D94GtnGsj{IiLW11g=L2u?Rc|egWqrPI1D_PWd>Lweq)sH^6)h z-;?fpzt8?W@YH>}qY4~Ms(h@1HM3{Hx}-|X`gj2BmNdIzeHOUwm+Qb+uaWNcB}wmt z6|9*Ry%4Jj4)h_=G_w;M){g_b(&{L{cT&XdjEeHZfj6`1(4D5|oqx^SaAwMPGElzg^Opp@yaaqs z10P!Xw$H5uvD;~sFJz#6JH`J;D)`9^;CK4`1DJ|=&(<{X?F`_%R!C&bLy; xZl!@2@F$}_pCooC*ms-%;&WdPpTm!_{RLu!q1BeX(jWi;002ovPDHLkV1o5!MOFX+ literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/shop_over.png b/htdocs/theme/eldy/img/menus_black/shop_over.png new file mode 100644 index 0000000000000000000000000000000000000000..aad451b8f4ac46bc8ff815ac140ce4dcb77ed1b9 GIT binary patch literal 510 zcmVPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KpwvZG$inhTn_&zaD{15Rc#yx%m2 zk3c54{^(h%2!LmN1fX)}+~T?LA^0TzCjsPu_W_{s_H_Vm-u_E5@FEwN;cH~v z)eE321^z5Rc1aSRwEBf)7;*h*_(6cq31f|uRwNN&o!B)&q{1_RDWg8@ZzG!x%oY0> ztY-yqNa*RVcMlmIc#vaFu-yQ-1NdNO#mpMO5x^IKR{)n?`h3t`w))MR^KGG4%x2km zI^V-bSE!NmbxYkWM>c!j>Q8c&r-%Zq$VaD6`tr<25viXToCWaiYK56^#lQ>rXTmr) zhN8)s`(j2!dw)thiWI*ynhBNiJl`?%m?<;UUPh{cU%FgtWh2XbjhT1wIlBLUnpZW$ z>j#`mdw0=PQ>Dm8t$^39&zES_{suPq249c;0HMwm3RmphAOHXW07*qoM6N<$g7bOX AkN^Mx literal 0 HcmV?d00001 diff --git a/htdocs/theme/eldy/img/menus_black/tools.png b/htdocs/theme/eldy/img/menus_black/tools.png new file mode 100644 index 0000000000000000000000000000000000000000..fff7aa2baa82c551b08f5fb8548f52705ecc4a56 GIT binary patch literal 1148 zcmV-?1cUpDP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4Kp*hl-4!?00aC=fbi<*~$3Rdw!R8VQ~O??PRP-!X$Xo;_5wg*Z>Z#$O&>j9@^0BA|swE&L*A5^h7Fa~s|{iY)- zLJuT$0J~D^f6YK-dVQk5J!DlazZuPZBC~zKA1S#bhu_*NzQ=%_)18He8d<(5qiYJ7 zOv#lwlC;zz5zh>Y8;DDs7OQ|-J?gGAu&$Rv;U?L@h1!np|;9$ys5zr&)sxnID zx(K>cQfC0~j44h7AGZB&!K8gzCC(z?`659YGxW_75MaBc?eRQO#kRNLS#b`qA|uu% zlC}b$0l(P(xp1AAv>Di(6VDM~Kd{I4o*dwNfXj2n?g!qmy}t-l8NIDDH z0$d8T0v`cy1LMG3HIntT?e`LKHUb+{HYb5Cw!aITy&17KRc!KZ*vbt220WE9u%BY% zRcnt*I$`@0NjC!TN+z>FDpr6|AF8e0cSOV}1frnF> zPF9wKw!6dbe&E%5$NsD=8%Y-c4*`p7P=}Y}c^hzU@c5T(ADOea2a*;8_ePA#3>l28 zUng*8=o)}dNv(4NK7e;5*k_iU0#*X&rSt;sleBU!GJj88v?uDw_rPBneE@e$S}|)I zR?;m2e6o(|*S3EQ{yrX;jsJuLHb??E1njeYd`32`q#J-Ma+v;*yj@8;AGi}ZqmJJs z&|`bJ?3Yfhz^yqe{NGn-Xd$R{)d&+6q~cc`G;+f%qgFr%{H(9*7+N8%9Z14ZKv=6 O0000Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^-6 z4KWQw!>Jzt00LA=L_t(o!|hq&ah)&>{+!GIutC@$-k@&;M(_q@1V(rply1NX?gn%N zx&fU){SoDkI2KsO?j?8lPWKLDi%&-SB=igs;j4}ZeBp6{zrbJMFYuobyfLOV#yDe) z{S4quYLYU>+yQ*wO#KFMBck z#&BPb7)^O#jBx;d1k>-{0H1WXxo=sX_x4pi`OV43PP9wdcZ=*@0o-%n!rsGL1^7W> z{3y7REdm~ZW2H`*SD$>KXDMNTqa?Rl=30x-k%CPCL+0=&c&F&UM>8)hj<-@x(F z=7Jv-;1~AeE)o2!&^<9DslYeNhfpj=5`*e5VQ{!GJg5 zl5y^UiRNVHI$PNVAXknDHSnUf%?V=~0r*(@S&v1&XkN?Ufq}OGo`NMmiO3cIlq&2t zG4Y#qOHTFpKLa)vyv>FR*HQ+Y_3b0BAB0R@#DIrPA8)wwd`?(y0lWlrPXPScE<|qM z#zz22>!fksfDCsTHFZ9-&ze~N+G;+p06r-LJ1Z76z;B7b=U6vDFu-&D<2LuE8sLXq z;5!C1v5)(zY$J@nM@=Md_1*dMSFm=e$u|BB@Ce9n0n_yS`=<)qlxP@53O64lyP;Z! zW#9BHQ%oCm-KoUhWKzy8)KJpKU{$dvALyAYND0000 diff --git a/htdocs/theme/md_dev/ckeditor/config.js b/htdocs/theme/md_dev/ckeditor/config.js new file mode 100644 index 00000000000..cffaadfba6e --- /dev/null +++ b/htdocs/theme/md_dev/ckeditor/config.js @@ -0,0 +1,92 @@ +/* +Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +CKEDITOR.editorConfig = function( config ) +{ + // Define changes to default configuration here. + // http://docs.cksource.com/CKEditor_3.x/Developers_Guide + // http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html + config.enterMode = CKEDITOR.ENTER_BR; + config.resize_enabled = false; + //config.resize_maxHeight = 3000; + //config.resize_maxWidth = 3000; + //config.height = '300px'; + //config.resize_dir = 'vertical'; // horizontal, vertical, both + config.removePlugins = 'elementspath,save'; // config.removePlugins = 'elementspath,save,font'; + config.removeDialogTabs = 'flash:advanced'; // config.removeDialogTabs = 'flash:advanced;image:Link'; + config.protectedSource.push( /<\?[\s\S]*?\?>/g ); // Prevent PHP Code to be formatted + //config.menu_groups = 'clipboard,table,anchor,link,image'; // for context menu 'clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea' + //config.language = 'de'; + //config.defaultLanguage = 'en'; + //config.contentsLanguage = 'fr'; + config.fullPage = false; // Not a full html page string, just part of it + config.dialog_backgroundCoverColor = 'rgb(255, 254, 253)'; + //config.contentsCss = '/css/mysitestyles.css'; + config.image_previewText=' '; // Must no be empty + + config.toolbar_Full = + [ + ['Source','-','Save','NewPage','Preview','-','Templates'], + ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'], + ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'], + ['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField'], + '/', + ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'], + ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote','CreateDiv'], + ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], + ['BidiLtr', 'BidiRtl'], + ['Link','Unlink','Anchor'], + ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak','Iframe'], + '/', + ['Styles','Format','Font','FontSize'], + ['TextColor','BGColor'], + ['Maximize', 'ShowBlocks','-','About'] + ]; + + // Used for mailing fields + config.toolbar_dolibarr_mailings = + [ + ['Source','Maximize'], + ['Cut','Copy','Paste','-','SpellChecker'], + ['Undo','Redo','-','Find','Replace'], + ['Format','Font','FontSize'], + ['Bold','Italic','Underline','Strike','Subscript','Superscript','-','TextColor','RemoveFormat'], + ['NumberedList','BulletedList','Outdent','Indent','CreateDiv'], + ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], + ['Link','Unlink','Anchor','Image','Table','HorizontalRule','SpecialChar'] + ]; + + // Used for notes fields + config.toolbar_dolibarr_notes = + [ + ['Source','Maximize'], + ['Cut','Copy','Paste','-','SpellChecker'], + ['Undo','Redo','-','Find','Replace'], + ['Format','Font','FontSize'], + ['Bold','Italic','Underline','Strike','Subscript','Superscript','-','TextColor','RemoveFormat'], + ['NumberedList','BulletedList','Outdent','Indent'], + ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], + ['Link','Unlink','Image','Table','HorizontalRule','SpecialChar'] + ]; + + // Used for details lines + config.toolbar_dolibarr_details = + [ + ['Source','Maximize'], + ['Cut','Copy','Paste','-','SpellChecker'], + ['Format','Font','FontSize'], + ['Bold','Italic','Underline','Strike','Subscript','Superscript','-','TextColor','RemoveFormat'], + ['NumberedList','BulletedList','Outdent','Indent'], + ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], + ['Link','Unlink','SpecialChar'] + ]; + + // Used for mailing fields + config.toolbar_dolibarr_readonly = + [ + ['Source','Maximize'], + ['Find'] + ]; +}; diff --git a/htdocs/theme/md_dev/ckeditor/index.html b/htdocs/theme/md_dev/ckeditor/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/theme/md_dev/graph-color.php b/htdocs/theme/md_dev/graph-color.php new file mode 100644 index 00000000000..0c091a1ede3 --- /dev/null +++ b/htdocs/theme/md_dev/graph-color.php @@ -0,0 +1,34 @@ + + * Copyright (C) 2004-2012 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 . + */ + +/** + * \file htdocs/theme/eldy/graph-color.php + * \brief File to declare colors to use to build graphics with theme Eldy + * \ingroup core + * + * To include file, do this: + * $color_file = DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/graph-color.php'; + * if (is_readable($color_file)) include_once $color_file; + */ + +global $theme_bordercolor, $theme_datacolor, $theme_bgcolor, $theme_bgcoloronglet; +$theme_bordercolor = array(235,235,224); +$theme_datacolor = array(array(190,190,220), array(200,160,180), array(125,135,150), array(170,140,190), array(190,190,170), array(190,170,190), array(170,190,190), array(150,135,125), array(85,135,150), array(150,135,80), array(150,80,150)); +$theme_bgcolor = array(hexdec('F4'),hexdec('F4'),hexdec('F4')); +$theme_bgcoloronglet = array(hexdec('DE'),hexdec('E7'),hexdec('EC')); + diff --git a/htdocs/theme/md_dev/img/1downarrow.png b/htdocs/theme/md_dev/img/1downarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..1d134ab3e4e52167abaa33369164ffb8fd3bf060 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>3?#4ne^UZdQ2{<7uK)l4FP}KOX6~x=y0+-7 zg6f$|x;G!Jm@*%T5=*KYmu;H5?=+CCowEX{0H|`pj$`esw^vVH02Ha8w;Cu|JYi;R zPSJ)7x6j>wcI@uc9hdL*?>Ye#oWGCj9ncoWk|4ie28U-i(tsROPZ!4!j_Bl+21Yj) z@1~FT!pe`u<=osF@8|Rg95}$bY~Me|RmrRy_cfO?T>ablD)mo)5*I^qHHTgA{^DOi P0~kDA{an^LB{Ts5Q-5JO literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/1downarrow_selected.png b/htdocs/theme/md_dev/img/1downarrow_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..5caf8ead52d3673720fa0f03631ef47ea04bf86e GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>3?#4ne^UZddL^zACC){ui6xo&c?uz!xv31r ziMe_TMy3i`rI~pOMg|6^3Pwg&rsh^gh6>sSh6V=qS3gt$b+VUu`ns}T=jP^@XT2KK z%MCKQz$3Dlfr0A-2s1jZF_{4rWJ!1Qb!1@J*w6hZkrl{~4e$wZ{r~@e`NY{Zb62I; zwMAzYRL@+}z4>6pl=(oESW?xvY}3?zr-5YcoE1O?K$R1A9BW^_y?W{bph*3^)j+}G z2{U7JiZ)!heeV9VV|SnKxO}gF*9oBDvuDrJG~WsXEn+MQ@(X5gcy=QV$T9JBaSY+O zo}6%iNkv6<$&yr-loUyp9Zww`eC9MZavyn;&UkY3rjvyQPE(8wHymdKI;Vst04aZdD*ylh literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/1leftarrow.png b/htdocs/theme/md_dev/img/1leftarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..554cdc3d76c3543d9c08f56aa3dd64d06bbddbf1 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>3?#4ne^UZdQ2{<7uK)l4FP}KOX6~x=y0+-7 zg6f$|x;G!Jm@*%T5=*KYmu;H5?=+CCowEX{0H|`pj$`esw^vVH02Ha8w;Cu|JYi;R zPSJ)7x6j>wcI@uc9hdL*?>Ye#oWGCj9ncoWk|4ie28U-i(tsQbPZ!4!4q4WNhFpgj z7+g2*;kW8=c7I>*cJ!c=?}3kpKKy7cd|j6q#=BbU%_^?qu>79)%hlU9e_&S*;cz{6 SZ}vo>84RATelF{r5}E+X17s%v literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/1leftarrow_selected.png b/htdocs/theme/md_dev/img/1leftarrow_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..554cdc3d76c3543d9c08f56aa3dd64d06bbddbf1 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>3?#4ne^UZdQ2{<7uK)l4FP}KOX6~x=y0+-7 zg6f$|x;G!Jm@*%T5=*KYmu;H5?=+CCowEX{0H|`pj$`esw^vVH02Ha8w;Cu|JYi;R zPSJ)7x6j>wcI@uc9hdL*?>Ye#oWGCj9ncoWk|4ie28U-i(tsQbPZ!4!4q4WNhFpgj z7+g2*;kW8=c7I>*cJ!c=?}3kpKKy7cd|j6q#=BbU%_^?qu>79)%hlU9e_&S*;cz{6 SZ}vo>84RATelF{r5}E+X17s%v literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/1rightarrow.png b/htdocs/theme/md_dev/img/1rightarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..95fdc377ee90c3b9d7c8fade2197c941571f3142 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>3?#4ne^UZdQ2{<7uK)l4FP}KOX6~x=y0+-7 zg6f$|x;G!Jm@*%T5=*KYmu;H5?=+CCowEX{0H|`pj$`esw^vVH02Ha8w;Cu|JYi;R zPSJ)7x6j>wcI@uc9hdL*?>Ye#oWGCj9ncoWk|4ie28U-i(tsRmPZ!4!4q4WN7kQfk zL>xBG`+bG~5yPAP$`@BK-acAaefUCo^TVo=;|5m^LZ&WUbvo%3?#4ne^UZdQ2{<7uK)l4FP}KOX6~x=y0+-7 zg6f$|x;G!Jm@*%T5=*KYmu;H5?=+CCowEX{0H|`pj$`esw^vVH02Ha8w;Cu|JYi;R zPSJ)7x6j>wcI@uc9hdL*?>Ye#oWGCj9ncoWk|4ie28U-i(tsRmPZ!4!4q4WN7kQfk zL>xBG`+bG~5yPAP$`@BK-acAaefUCo^TVo=;|5m^LZ&WUbvo%4b%t} z1d0GPMrRcO6)!q|xnjzEAWAH$I(GMI|E?1|F5gQE-*g>lBV$RBUoeBivm0qZj)A9( zV+hCf3N6tbnWCl=>CEd~2k%3`jKlh(RRv8vm0(6Bs;Q{an^LB{Ts5sY-xS literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/1updownarrow.png b/htdocs/theme/md_dev/img/1updownarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..871ac1c1f290dd7098702eba8b5bf707b71b49e8 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!3-oB#YF9alw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlBJTj75ZC|z|3_yP#O4$wmQof*Bm1-ADs+LOfj@LpZL7_IdL)C)hWWt(>g;bM62D literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/addfile.png b/htdocs/theme/md_dev/img/addfile.png new file mode 100644 index 0000000000000000000000000000000000000000..1cb7af0ad8a4db9aa8a5b07dcbef05ccd55862f9 GIT binary patch literal 593 zcmV-X0#R7epa{~XD1zWB+?>;(Ar20V3)<9jiK0as zgboDAm{tWwYrC{p4-^^s2ob z_NMd``YHW{ewThiKh*)?L42cX4cp|3@;(3n0Kgc?!_+m^t*SaKevo!S%Vn`2n*aa+ zo#aXCmg)}bx)%+z@1?z|MhBFOI4>?>5dZ+js%|MWHF`<>VK#$b$SQR|HYFd4hwu(2 z0ML;iae%z6aL+RGv(}DE9;c3|+K{Y?Ej$1K9d%rMstsRBHdHYhqkbZXl+^fSas(m|Iu!$`Vhylf?$jq0|4MRa!6~}aY;8mW4e1()oDx1|C-Oo zlJ8Uv$QS?s@V8i#_O* literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/background.png b/htdocs/theme/md_dev/img/background.png new file mode 100644 index 0000000000000000000000000000000000000000..fb63f12299c1e94af1bdccaf930065b210b834dc GIT binary patch literal 25628 zcmWKXc{~&TAIG~(emW>B-LA@2Um_4%8+qP{omUnO2ZQHi}-*Nl4 zeLMdR@K>it|Hke6_a5C|US6J`pP!qXTUl9|ot<4>U7eYknVz0rTU(o&nwp%P6bJ+p z6BB$spUGq{EG+!_^Jj5!k;mh)*=#PCyR@{#;c#{Z1`hnY@c6UaPR||&`#gg^3H9D~ z!zZA8iLbYv_Y<$kr=8x$+qQW^EN|U-6tR8R#P%xhv8r929B3Vrmv#1W>f4aQ zt^3{rpxy#x-~_nRe!svpjFkwuC{}gS%#0scB;~IzIir(4s;ZJ$gJ0FW(w8KDj<0)Q zCm65#(hFV(q@&R>X=j~<_4DAb^(LdNhd#50Q@~Z`Y!sXFb{s#_B)n-W6?u??64#~@ zr>W_XYM9CG9G;da>kCFuqB);wZ9X{UZiijeb-tFiBhnU8#Hk%?h|GJ=bVFE}P5ONG>Dpz0R2RAA4Zjaw#4u07xOc_-&5>?64 zf=jS*ISaI-gINJ=OKe%<$3EJbk7rN8$NoB87QJR7i=}+dSsJ%ES6_N(zx1{x#$taa z^Tt~fR4~Kcrqt3lJhKwQwvQw{yQ8NYMk*@^`~(_678`f^zDlo5C>OVtL7E7&KONY| z;R^OC^8LGZXCJ639gHn14~E!@fJc=lsIxFt-LMm9mlJR$zC{#J*=fd?)1rd03tW%aN8AjLUB2OX0vm|8fBJ9Enel<)`p8=QZey& zxLMXqNAlU_rz$$B0aPCml?dAIkw|EIq&{`0cxKHwKdli(Hn^T=FbB$5_jZ-V#Kd{I9%%srQ}Sf; zH+28oLQ+GLGHmLk)@<0R!uLk_?TE4-x4J5mjLP1`NRjJzqx<-Cw3P8Ic`tUA#@_uf zH^p+|OPa94J}CMT6g22iIhiOzoULS9%lz$+pnS5D*Z=tF?CwmCO5wtoQ6MW?*iaSu zo1YePAS-vXL*CGRFh1Nc8_5nizrNs(BiGm0P|Gf;+lkkHHF$TD!ogs!2TgUqKm_9+ z)VyWa96bJc@0~9Ql0rF-b5TzpoEh{ctzJrB?FkL~*-qvtsrlkM(#&OvX8mWM({Wev zO!73zsJgF*tkWs^ul{b!2zg0x4oB_rkBrd#&+Dz$IHGw0p@Pkuio zvUL+^(t?5}wd8P@`KXARn=1ah9Yrx$Vt(ivwg&<^)fGS-7moo56KGng7%FBZSPo#yayFc_nP@&)9+27h0Fd7nL06!DfbdO?|$4$pkp20yEtx2w_CbLt*RU&CFKQbp#&8+#B0j_w^Rp|mH?Nj;q8`(VMyr|c`t;0(nKj`k#DUmD zHM%ku)&v_%^Mi`-*)Q(>#wb$;zy`hLfHC#;;~<3MsC~ce}9p8 zjG%F7!q4cL5}>cCal)3<+|K;s^{z)F)Hv?Jz-a7`0-Tm3ENRV3z(400lOyLjK5`Pj zqhS6mtV9i#eWdb=S$9P|ywT@HEvdX$WkSIK$>WL# zHeoEP18^x?^eg0Ry@NA4TRr7n)Y@BnUhQ)2`(i2*?+T3s`xyH0`{VnSj;Nocx=i~# zx6(DSQ<%Ctt^GS{rRv?q@O>qE4!>NFBG!N6((5b7kp5jc;01q#<2ROHshiGfl8Fy2 zcm;FXnLFqi*=c(PJ!&-cBS9Q4I@QU|-SxOqyNJpp6$Sa_0G`d9ggU~9MK>$HP)d%R zm0ho_F*!yP+OWO)M?a;1FC!L+?200}+}@(fj_wDO@B1vPKT(+?VW$w88VFj-&@`Y0 zwG03AzOpU4nP2ZsYw4*yyu=<+GK0FaKYOC!p|DKbzAMfsRMD^gbPxc*u%>)D3 zDcF|2S9(UhHOLjOo!3qGu8JE++X1C~2NzPHBkJL+_Bznqz`I>_bpVi3y=WX9cFT1m zA2uBF`mTUH{d7jFxnR9{CiSf*?B}mK7E2f`udzK>xorPOhMHP!O}x5^e$=bk(!Jbx zW7Zq>%;;|gIm{5x;3V)#c{*i*)Ft6z4fTG6n)k>lu=g}}ou*_((x*%Jau$X1S4+PV#53uo2`JjZm} zv=I{?wj$%mbw2^l><8*)-5KW*_09{+UhZB`qJ6A_gc?w49B6D zd=iVteCKcYC5SF-LDvnSo!a4C^%s*jGR7}jmNw#XCW=kBdZs6Vfpt%x&^^ulY(Ej>T)gf zp=D``kS6mjJ7S_^)@iftM>+^RNT_wPulsc@-~7}3Bjv7YM@T6|u8Sh!*qrO@{i;i5 z@yzJs^vo~LpjR=K*FI4Q6d><|H{h>?!U)|@1V{5kFv2lIwfEU0I@*Aol)@(9z##n@ zE1;#3&Coq(Jv!WH-aA+gMnViLYd$KZ4xBz3c&R0*GQa2UrTopb9Q4L-^&UKXQ-Zi> zYy0h;z`jp??9#c-*UXDUJ|Y7srOgP=To)pBmSkmq>9FrbD=rN~!d8!xJQ)gA3Jhz$ z{6K7*h2fz9z`@3~H@XpbE&!TVk7;&f-X5n+k6s((Pa0a@lQGGFSdOnS_}*#D0Z{3D3SGDCo_c(L6{OTI{feDvRvZtn|c7O1t2(>%&!U-CUB{9SnWeoo$U;t|tyd`X)5w)BMw%)vo z@=_3@SQ5$i$+)%Irdi>R)yx7x6~T{BL-XGB*Gm-LyhqAfKLAxBHH6_cIv?@0krm$bPYwq&4NU zg!K~n+gW&Z_@=le>Y+W2fJAV4!NXZ%Z!2+gdN}vd4I#<@n^h~eIi|9bNKn1;+*2|U zro*4*;uKmwhu{BC7vEpSk957ZXgfuowNQk^+a43$FJ^(NeH#k<>>bSA{Dkf8w?& z@Z17LTViRV2V&$RkLbRlP||di8}Xu~*gf+beZpk+YVE}LlKTi4CinJHXd(J0s3|8j zwS6btJyRq+3hLDZy7=S4+2Na&?^+di0A}8nY)~>wF2m8`8U-D05*|;w;O+^V>!5vG z!o4k69KRdUys1IZObq@RuB&F5wsfj%?ajw=H&^uqYhtdFN)~A3Wn&kz_|=nDDTUru z$x{lCH2&NP?h-JaJwUevMo>XeS=zdO>4N>)lssz}w8QF_cuD`j74vOgC_+B@OustB zbtN2?CQZ{DX8YB)X(SB?Z;im*siFXH^o2 z{kTbFJpQGTK|OS@bJQdGIeNR3QEm?sLU9PAZljPCzVB}M&e2X7gZyA_8sTIQB2>_r z!rFwH2)tl`iQNkPOvmruy%aa7c8+e+n}ov_+Z(+9JjnJ$GjCRr$)ZKDKW#Y;3WYhU z3~s>RqZ`P9vS9NXIOk~;bo%&`mXwt3Uz1P>mI8CZOy;dv1 zS+mF3l%wW{ZvRk)*1tGP$3@;`yOqp8BI8|p1FNoUa9AkKd(|Au@p~iqhYJjHV~npi z40z+KU4>XR+WoZ#1u!`g`n~Ph#oKb@%33sBCH?O;sKpo%aCPxU)|5EQ3Bl>+Uvisy z^Unh;u40hM8ht4^G{%FW zoe(?A(KfvQ+RI!cU(Sh8+u2qSkv?-5EK-VjPJJYQMMS-`h$RmG5x@cFA2l8Bz8(5v z!lop^UiocN_zqgz_y6^i1gDO#8n)I!QOtRn<|z+^OYN1?$~aFYS@L(SIWCQBg)ny1 zk0n&x>A-$Xa2bpRf6c#Tzm3>Zala15^dN)D=P+Ys%N>+Vu$&6r67XvEWIgQD9U~Us z;iksPPImSd?zw(66* zdM}Vy4lzmmddTCQ=!n_hG8+y#7krYMGg>kQlxqohJYhnNPM{^zx56>i7<@|DJ(nXyvv-`LKZ#OR-UPaO0Df80p5zIm+9?dZ>u zLvI1{u6cDjD{F5~K_O4+%;s+Rps{Q@ppf z3K?%Mtt80!9?*msrx>+zqj>H1dY_Wo)#qPwoZU)4WqCmBJMAJTg=ZVxmUL1EMt^PnE= z*yFDy{m+uY+g&+hL0dvfiEKxZ3Qi^UowZ!8nMvum?KRg?;bv9UA-(f`!Si@;GqRuV z;f@VUHzSJbV2FH&3_8|26ZiH|836a{I-FQ?)7DY*Qj9)?x8lOR)ER??$UW<++ZDTb zYAq;8_RI_s`p_6xRLP*Xb#+B0hfi0;RggADynaG zxyi|Lj#i@!=%=)aw~9QT-h=_Y^gCY#VJ?HIr zybzU0vXWM!iSY3^B!iDloVYEkX{zshcSbzp7L8ez zq0jdb2%n&KX9e7wO5yUsjl`)Fb%Y;mq_4G}v&KG5ct8b*!l_bB%CAURK+>O+sl#lR zp7@f_AmKD+PrtND5{x>dkbPRLTGK}(Ubi;%4Xu1}v-TN^PYNs)KJb&=!g*48Mxq7VM* z7%MxuK#HL-`sk%&vdB)j%p7;+8d76@5cvLV=6XTTqiGvg6B9;Zs)T$TQ)q9=L;{3DJ1jn{1yIKYVQ%gOn{lr^rW9!%@SdZBpeGW{P* zF6qn~2;PM>t8IB#s(_ls!1S#?-5RVvShagoX#a7B%LDIf z=n{1mLopqU~-})p3=v(FekxqYKYlQve_H?IJQ|Rux)ZJg`TXbQED5OXJJU`Nx`v|d$SA@B$ z;BjiQWBIZhGTN*8=YEs7fGLEwH~PjKG*g#?jOoZ>3ew)i?~Uitj?695*j2TeGW~3T z2dy^T<)fN=uvi4M{0)|{PH{#Nj_;))tkaQfx^lWQOC zq9FW|kR+?MdXpFRth@R0w}K-%t6dB7~0Wx8n}tLjQ+>)rziME;{_Vj`Fy4x)p*2 z`yQ*qo&m}(*h9=cK_Iicr+;OXS%p4K6KVO)iRmCdQMG1lb(W2EPZA4Lju~5RKJN;8 zbDf(p;%6k9^4VBGq1L0|%#5aaG! zwA{5Cq%dovp*avp`feJ3zX=}38!R#*w(6NxfwBmPxLND4tcyA5Xqf_CA@V2;T70-F z^WEV1RHQziCk!SPni#&aoF2da=!N15p8F@0sZbJq2v-pu25~a}U-a25uEsKHPt)M(sE{_(K;TlT;Sag*eRJmp4>F9OVXUS$@zH6;6ff}|_1*57Qg-nMk^wk}c7BgtOvC<$vbUinABQF@`nXDXR_ z8cBp9mvW^w-~=ahxcE%BQbY1m53r3J~4*?~#hnZ;8umQ*?Ff44vt z&+PQB3BSR_S5m74m+aC4dd+3zrBn5s8%%qUJTM;nSNi%w=&Nw5-bH+@nzbdQ@(OX8 zKq4b6h@jfavv}E9A8J2bVurf80XS!QA@Aw57SPC)*MLVYK6<-3^Hn2QI?P7z1-{f% z^jY_7G!>K(o`U&&j5{W5o5)m`rO(C85M(d18L>m2n2Z5Lh3^ZM$=@t$}LZZEFF z`nKW?4xiI%<<-I_@kn;=9U^gfPD#bYbDvVi41sV0 z;SojNn^~+Yg>{^nUP260+;;d57@@$QN8=d*GL6CdCV?}x{-K(~SzMfMKqnBYNfA|M zB6C$pz2m$N$%rtUF|5-Rmy0zI>GlY&PwU8krxQt{BK@1Rmh57RmMDj?<&9gK!%ZNK zuB0Ro`(&WOs&$NR52r;6P(Aje5d;W->EW7&d7Ki_a?p1ls0Nyp`^^1*Z3&}0+bsnt z@)K&;J_Hq%s|a;pENI=k-3MF{6TIShxEpnTS1z8RtKv* znvkfxcEpf_j~5U;s$ZN2L+tJJU+n9E#pgZA&1~>;4}gTYEDS*%)7Ekg0qpJj2dv@F zOY_vf)g}k5k8q>p=N@uSJ(>ORsG1Bb!J0gA1q=jQ2jLfjuBFl^9%OGQ`MG@TIl2Ic z5r>X9ql-*Rvy?0$apH&xv|Fv>eZAnMMQ3~N1utFnM$Uotu&-2$gU;dmh)>#9NzJQw zexI$@)!EWYn0tT9g4=^5>(a&-CmHnA+OfJKGM`N3EmGht}+^`bE*C$3`=JtxDVmgKm-P2Ar!ozMF4*IJoRUeqd`x zcFP^(L15sFoXt)&ExYw6ehF~VEv1Ki5pWef_=}>CdpcC%-e6_XNDR!&F_PRRfsC%w z0u9Hq$xYq)k0lxnW?iPGQ1yhxMc4A*Lv^g7oFFo&(pof*(zMP&HKypA;O%;g=Hh{U zJ?-*C(gpciPu%O2cW5MGiD-gi!BP@nJpDh`$F4DyJLCAIee04d9xR@zWl7(5mw7uD zOQsSYrkNT?p_Ip&ZN7mD3M*-kT~nAC9ZHgY<|^NPhRxiPAR{sTIXj;OS=EVf&A3}1 ze7hI&WFp!4?JXN$hM3(MdvFDoG0BW|tqnM_m#+W8IYHlt|Xilc%+-6@|j- zK9I+g$eim5fT3;vou-#CC;nCm{=9+gamH|o>s0%PG(vGmAr;634B+}bH2djf%Ti}O zMsa-mN!O62Q%4)Dx=z5Up70wsXmo{^Vpt^y=bzK1pmz}R{^9kREs6BePkU%f!C<-O zTN!I^SvHj>yKG2p&A)!4+eE%w3_^spE4fzHw^I@k4AUoCK@e?!IsV!Q@5wsoyMcGG zBANJ{9hyb+lzd`PZCVeOBN?dntGNDh8M)eNTGRaIdPnffqxaus)SEx(C;r+KSy_45 zRqkwAC{U6~=m*W2QjLtiC7AZUcMp$5i;4e)LNyvr!yA|LR2nNFyzjrl0w=%hHWii= zZ5C>@FH)IHT|uefy(bh$$vk(+nEZnsgyjy^xFp91Xlr)Dd19B=1k8TJGngyCy3}8C zt&qcr+~Pf>_~Vt@6n+A4vckt$0d zs@M!)E8jhma}zvruNzGRtK4wK?5gZlK{@=pAoq~1^in)RE+gCBHrux+OYlqoNLb0A zQwLz#s*29mF~P1BlDm~HjCfI%Ao$htF|S!kKM=D2Ay~1L!m*)pDaRZdYHlP1)@=Y2 zf03dPRKlL#?`b$PSyLH*+RZF+KVoe3KdW`3a*#%<@sYd6zinJACqyLpE55|BOi_I- zt*bCVk$FaKRQz;`531YbCQ%8WRm#2@TVII$uKTSI^N4qMmH_G;GpKZ?g0nJMRc?sC zBAwEgg)c%p3in_18^%Fi* zjJ%=ZOsdgZR%~=`$HRr6asOow*J_Y9B;(g!x&&+e2|eO!dqRX9Z)1*%qQXK->QNIG zGj9;>!_)PMQ$LIp^-gwH3Chv* zy?c4_n0)AG<18VoK+ti!drY!};Oopy%W)^sJ5$ln;0D&K5uQ z4ch=%RJDa|)v<3lPvmZN)mSD*MpIsHnO2r}SJLUn4z^=kN%fBm+vE4Vr4D<~tthAh z1gQpx>#kz{=(0B+?u?$@7UajXQJjB7^G|yNUEq~~X5O@Bekc7V#l>{;$jY0=7URGN z|Fvhi-_+q=+Enb;=4h8sJI!_#3i~UI-#j$p^q=cMLZWSl)8BWDxb2>wPI-~%@x?Ll zJm!AZpauSpTzaAnKL9X-5d^|+*BeCfF}td7cWaSgy#CAYmJ-eXn*hM;<)sLd;h_u# zB^3bZ&htK6hj>QawD;~3&^3SL*6&Sk_a`A3(Gp?l?fB9eXfL~NUqL*^Nk?vj%qu>& zSFe^>3Gr0vA0U|HPB2iCImKk4=cQi25AK$i4qH5Kd>=SP}zo7`$8{_IxhA zlIU1{Dy{o{Q{aF0*4Sw3&bqb+@|IWJ0ZXamh#;`hvD`z)&*>pSg%iZ?Bq`m5v2JoN zSq3qT3o9$_Fw1W5Vt7m0@8J0+TvN3V-*Clxnd|u;UXR5iiz&MifL^Lf&`)gtPU5)Pj!Gm1Uy?xgmom7pIz`Zh^Jt7H0FouEf zqWp)GEyWNT`fH@t@KUe(ixB-g(HFN&{a{KUm9717sS1PCcuitqi~j(@gQA)#g5BNW z`*WnCYg}1W?#0@AdBQL|;tzlAfcnz_ZM>jD(PkrK*rs;V_GGOkZ$|WU2#a;3XhR_B z8wdpK%nJQXrR|F0UO@gGJ(=?OA9iUA!|QWwE!w~YF;}qh*yJ0Gh!pM2bA99{dtCv?YAQi?X~&F0Y)$c%tb@SVvGwNc=Ff>WpKy#vanue2ZUg8t*Dnsj)KUriXRzIRw*^QE&RIRj2zQa zP=@D$J@Vu|h?bZAA?+0DF$-PtwC3q}kY(&Q-m-@T)+&+zxPr4c0nu0`s|$!RMjl}U zfmzd9F!PLpfS}TOHSMbb6DjOrD!9JXZo$vq%??ybQ)~-V}?UWQ{y)sdK~;0$2mbO|B(AqTOQ)My-}w?qNJc zw3BWFRmuwwuDDL1Z56l&xC9m{d*?>=a$JE>)aApgipAwnb#gHvx;Jyg1+{-nIHV#U(Nw@;*1;h$i5Ph zMEKLS*79_F&}D$-z;PqTCZyEU2=H=plJ%_n=ieQ?Y(wIRPw(wc<_!~_&EJJHx#64^ zipkB-@5J7td1#iYrC{aSh&osMb5qglAE-hc#t7Nd-5jKT$Zg=#Ec0~U$d4l|)_T2r zDBLB7o=GkXH3n?_9{TbHg9i${Zdq!u2s|UXRtjh*#0EB@0suj0@)Hl0^Bmoy-IuCT z8u2c0{O&qSsm3;}1uc$j3EaNSfn!-VA( zq3XUnG*QnFU~geS^N{SI!O}f8%;m52hJ&)Y*|}(nKo-G~j6)U7;I}rVt$g-zC3goF zc}F$w_?6ybMzuMoDU&MQ(Wx6O8nfS~GakZe=x%aH9mK#oMxL*BzAX5yIVq{9@s_1h zLe)I7M00gk{=+?$Zp$R2K;E?3TeEZ8aVnq~?QwaEZMcz>VyDOF;uRfo-t^*>(6D67 z=|F`RV=!ZSCAU}@hnkxp@`nT~9a;jkXD2F%dC=$H^)J(?!d@n9ANV2}CQ-KE=jqqq zGIKMXUj%hqCVX~J>DC|o^J+_kI%CPiDPP4;+5fFQ46vMidQOM?R%R z{=V_W-y98cddX}i;{k!JMWDzvXoc3(4P?4^^N40_SL6OF9)jLI7E^>|r&ENoN3oS_ zHYVq~2pbID5Qy#aFQh^jkI(jC$kbdMkE!7>L|3TMEomLYW#3X*hLiNrjy9(D!>h{2 zZvP51A2H~-Ci(++{*m3osG$+m$>08lZ@tXCc?~HJB=<`@Y>JM8_5~*I1?w_}ysEvA zSK*wDY=2w7Iip<=iTqA2?S9RppY|6MjGG1#HyTzCLQ#dVzK(o%AO8i+Ao2DyYYA?1Z24oH6&gJk(+rs9=3G=?UNiJ^5D6QCKbs0 zbYb0~{7+Vi1=i7FL}~edqUimDD2sTpUpAMS#9g_xwBpL%p{W?O$d{d%wff4O(~fH! zaNf_#i%dy8&{^`S2y;iDeo|X^fy0~_o5iQxqaEu1te0mg#}g%!+^@GvFp9TU=NS60 zauvc|18=jK8k48i{lANHPYBE-BPB-GK~VcvD_w*Gg9y^$7&+%Qq83C(&>|8wAf`XT8N-5*DWal@+m)>-Vb z2;cY8Y8;^A0Xx_M^ItsDahXFy|$a}V~{_pX%6^DSMYr8gR z>O%-L_?oHZm0(7<*QqlvjMpQD^-Cj|g*JMz=}1s5NORc`=T%Xx8?yr7?ILEK4uK93 zT0C%wSB-y{k{m%NgZZ*rW%pdUB&D2|pk&=6bpiGZ(w4nJ6VLMyrsE}AZI2LOMkd=q}DqVw~1*wOG_{Q>F z)W6wOD^6Q5Ymd>mSVu_p8GUzs_{G_d+^@TMCyi+@)Q03di^Qq7oqe4Qz28-FeR^ zKiMq3>TLSD9*F@S>ucrJqwjiPNBe@D?Grhy&4Wl*E)l`0e|wz?NwMKn_U-x>bi+JPK!s7l-=3pD1VV7i|1{?q=^ zj9e^bpkTzv$ed4VNq8QsKc+G-tf9Y_*Yx?U#(`bvmi`Ct7fEhofxkyL8@fD5RD(tM z$64-qV(3!%TG8Ee2}Fars$tbfQ!NCe23LOkQ}YSM;1e_1#}RQWhTn$x`pC zo5*!Nm7^j|;`yR0w^DdpH85+!f_B-RTV7E2gO8fiKHxxzYbAc;v%6`^ql4xj;mk}T zdNDuJHCpRUW59mS#Rf-8sY#697|Jy)+P zZr!~)ll2sWa?rE&7(`do$;;=G6CkgjKt98$gSD?Vu+-XAKy_9&Fjy>EkLD~3o-)mV zTrFo7O5Da;;oWp!yhAKWW4CdNi7TR?V7XW3+c8Of7w6m(Gx*s+3*zb zOgBHxV(rRn*0H2mh=oTDwe3p5@HIhI+kV}?(WRPZQM?Syv^IF+HJ{x*W3o=-nF@v< zhpIlz1Q%Sq-plH3?9G|Lf?AJtZ-ln*36Pg5a&(y+4}eTj9s`2vJD)-f%ug@)|GmM> zcCI?l79KX#|BVMBy7AX!K06}%u$a-wkuwThc5ZYMkl`L9M8dXuGzsoJqcL}7P0*Ll z)71-7arMKEHGbm-1UA-(#Z0{CzG-sRz>l|N{jc;>;6P`YnwIG+!`7Y5E&s;xBo2-N z;U!cB+h0j##KFJ!D>%(==DfU@dK-4Z24B@VhR}5m95%S4b5^w4Q;TZDseHI1?O&S3 zAe8%N;pU?vBL-=I^>7S~$U*AyoL77nPV-2}sG3Jm`OnX7Gf&q{ez}gFz@BOZ1ouQE zVY{cqF^l>z=Aj-?wFmMBPhb%oMPIQlLs^zW3B;y3m>ExRHrTa&IvKnJ1KXEzdcNjT zQhF&BpVw8z8F)h|`>5~U^h&KKZ{PB0SNX+}x+sgEXT%sn>V17dMI8P*?*J4Wvz9x< z-Js-mp2`PRw=sSQHbkzk_RLyYNFsV_G&@-+7Fk4)QALp}rcGTu1}4v~t=Xh1XX>Gn zdm@hRKc};I5_ld+xRO8JNY~eh>8M zuP_A@VyN$4NcH_z0Gv2CxHPeoY!vRVIdo;BXojIR2Q497xpZshtWpGu5%Oe8 zVEjuWc2;8#|Fs=JHsFZSbAS>j0{JT@RNPOEU>{eyX5+V6YbN@nE0l7mmpj zHgzEBeR)~rJMuj$YKuNUK#-11B({)Pmtx8(mu`AWJuBhRqMuKczYjUPMdYz1AkQh& zh;!Zsi;Q86GOV3c*bz|SY1g0)s8(KBUOG>+eERKs@vDsi)t<;*`$`uz2me$XPA7oP z6}ox$Z>*M1Xmn$Eb?~8OQt*zX8-6|s>5@r{ST-aJg0Ih^?tbMqY z7i*~6$&6i`)QL_cbv{LDl0-Yv#zW& zc(Bd}BCJn7#s5?d;{b+?t@3VKKhi6W;N`!u?tg0s^isNtG6QJ97*sjyk@z9so^^hA zm#XSpx@w$9@RU5DI=j6Fsv#q~0O5@bEsVBA5;&}su=noit&)Mn_q*BYpLJ8Ho&hr{ zK%-UufKha4+EDJFFX3>K3OGryNtB)IG572}z{YF0{p)<7ryP5fVv``sH7Q%jc2fPX zS(|8ee=OInei(PU*YbY?!2=8o#&c|#s?)!{GbV24J?c=d%)^wE|2ufurpjx*-A4jE zNVbW5CQ2>(GnctRfq6|Gni!{%y-A`welW~n6D0EKPoi9D3h&ZER|VckTB(?2mM(OC z*P-ftFSFq10J@;|XA)C#;tlb*B$@xR8uP->13Q#oE$g1f9%{^S)tZ=`(1IEqMnH)z zuB3x^SF($VPxn8UQD4a4EY|nr=9UbyIaRvslH1ZRC<~yq6^r7cS&JhmkW19yWfPd zbF72itW$A#l(DsK18#xK-*Mwis;g%;L%~VirT6)kl%0S4{eQmxO)-{=v?7M&0*p7T6$uJkwX4IEN?M!>ajI zS36?*4nM8Y=yTheu2{EUYp;={tW zaG%;iVGc&`xUuI(=tAE{EkWERaf)KMei*9tuR^2$4P-t}N5 zLUA_S*=Lb#04-$(wcdgW$IimSN~)F@!}f$|ui1CV z6avKKkJXRs3?L7q>x6`I;;v~XZx(11ugt<{7Y0!7{Z6Hw+pDq4M1?n4WH$Xw*Rl?RF~vC&KEnlG?0W2T}1+ab6p@d)x3Tq*}FV~ z@-f%&^*ye#kI<5rvn=coSA>lPzZo@-eo_JqcH5E(vA9Zu)TB``gHRSsVv+HTq=a!g z&uKgU#M+2jpz4nZfk7b*vORvMKqx$eSHH=-5U2+TWrc+*^fLM2uw373gSwf`GPk6b zGEbw`FH;W{(mrxXW?)fF5=3%SB50$~feK$8^sMi}&jmjWUL*;}B&h|Xu{iri&?9WE zA*i=tDEKt&GjXI#`y*gFdsF-+Wa0ftpdd1Bp~%sZD3Zt!?|k{91-hkd^Ex~%0`W%B zcm+9Zv<}hYj~;5@)OzH`I5LnMuFw;mQXL-WZ$p7idLyKxJ(xm< zg@11&IM|*0eJYq|F4CTqy4f}C<@z`~3;9PT5e29vR9dL4dgs_?T1ywWoig#GJ<|fA zDKsDh3y4Mq&Q0&xsg2}cBEIPe`n1*4HiG#yw(ZZrSx1AUOouea!wV-@z6}pZE;v_3 zZ`=G(x^|*9t>?%Urj%CDd6C#`i!)L$k{>TWjiv)$6hTq~x*}iQ#oOZMq^C?_tV}IZ z_U%jWcQ3%Hc8C{H;gvxhs{j|8Mu3yCG5mGu;4cI_uVOEOO#k9hDD&UU9z7U&W>0YL z*+f_@L-4+;K6YkGL>*H>e=YeulT0UfDkUsFFfz~Aicp0NFkN}!tIX;Mm~^Kp{4q=$ zpqmf+awUtAM7=s~6Z&(uxKC^%rC<4>fU04E9MW0;=`ze{Xs&?z)OpFlBf#GnYO(x1 za|d9Rgs7+~F74em&d+yUry>;*1@r`%x991nJDnznIWxLNN)hp;+b0{qGV;2R8Xxx) zvc6Tr4k!5Y%%iYnortzwQMy+C>jf5f~g~LcZf<# z(&bDLugazQV?(6BN3UDT&Axf;$=TvDNbwl%>~=VeJMxW^QpI&=~vNcr-Hi#4N z=8Yy>k4|6kCFA0K8_o-y?%sWqo2+-quK|A4rMiclQuimcUxz|WKZsnB@Uz;(X^YF@SN`pz z7+a$QB^423rsPW4 zT-&fKAvrc8#%5c&XSO-F*067X!~2K#`|*0cp078u#8qu&=jDb|j*%Ctr_no?(Eqiv zjDLPz?WLU}<5NBrS{L2!j~QS`%0*)Z-sLO86Ab8lo))(-R$b)w0!o!;th{m0ZH>tar!y)63)qEjB zjpZHW;#`jx4rA6{07Thpzxv*yt~~a5g<}ZQ@X(x*$Gw(38D<4CDRg{-X%vUUjlfy@ z1k|S@H+T^v#p@%C0FR02HqE0%{PKz@4|?IMy43$OVT?l)Owt`vy?NL7YN;EWYFLG=Aqzc z$t!R4zp{hptp(2mWA&Kh#-3g z=ob;M1RFi>s0bU~Qy$4kuI9^ zwkcT(!^C!M)migw55EMnl#=^-!MPq-vi_54LxaLPYOq;YXaSNvt+N3*$Y-UOdorn- zUs$0B$!=(DsjeGJub>B)O#11_0pO~E>+8$`-?13_k>6c-*PAMS9{Z;;H_Wjr{Xfng z`)l>Ksg2|p08heDFW!@>qTG%tBG*eFq5jR= zB@zw;JRxT}RyL>(Kqd$bU-JpEqywEF@xiRLcma&Pb0sv;Y^`j7sLMHk@<Y~eRk>NDuQFUXT!0h{;gTAKhj3-TVo1(G#x_d(NL+Te2md<}Ggzu>SN zE1B@^exxkOF_ihlue`TJu?y}QHI={*K*MB<{f@FZ5_%z-5~CZ?&irR|EAsRiKi zx(q|fecJT;n@AE;YhwSu8FYm@qAd6}@ofQ>`V-V^xjjVxkgr~!?~u{a_!-EYw}g68 zGpI=joG!x$4=g&WN(OVFuhhIm*WugFIf1E?!YvrDo#3$kNqDI)U3(9fXPz8KkMZlc z<&v?cTr?R}-|58qco8?&R13|>|C<2(J0d;!w>J17csdTg$|SkjUe-phu9;^YArb{E z7u+Li)~j`;mez&0ACGmyw@l}IOXUxZ_HH6)Z3=^TFhToNEonf9)vcZ15(Eedy4tmh z`kw{m3*-a$z+$emeM~$5BXb7wcQEo`<#x4CXo}>Qr`zL$Cps4qoK$UnXeYNb;PWL0%I(#O%dsLyg`fQ>$1(Z&{g&%#ytfK?S|%;-!v5mM4s93a<&>wX$Zx2y-b%ocnk*G)Joq38$4+ zxjT)2`56Vpy%p;{C&r|udxyb#`O%-u&WaurrVm}C8JaU{FODA`Js}bprQfZ9{bm6paU>IMmgh&^ym- zCCEp{95buNkEoc?+D9r?x1GN34?w_%Pws!>@fU&LJGi=LeJ?b7`cl~Rc#Es7TVnKZ zTGrwSuiu&W0QW7bmjh;7#R+BY5H1*2{bmxaSN)faq5OJNa0jwt?e{lJW+TNL!;D_bE2;;jIFQyoZ{T$jp>U>)JV z**AAUg-_uYaI?+h|Ka4i%YU&D%u~)`s$aeY+DDadB;X-SVosr-dZLt;-=Slh~b;eG@VZO^Q7zdJXQR0ql}k(V`gQ}&V9*R6h*EGmF6 zHB+xTh96&LwVld={tpy6AcN3%aYSifUh4g&2J!HCMbw@CJ+&4vL6JzzOUi$ruSzvZ z?9|dis{P^pW?;3C%#hOwWfi9d`h?THU ze4iHmQ6R*PZf`jR3@;umca{blmUORgkAyulPp2gt7A+8IuRawnpGsa$nEbp^l3bld zB_$QYEI4@yD?(i|mO_Pz@!C`Fb>J}4`8}hY2Ndb2RwE%t!9=>&Y2wJXGaI&!2N3kt zLLSHwZcRiVgZrOz973_=Q{O>;`Z8I3mh;{L)|JM*oU7)VQ71CFy~ItM_isW+%7@B0 z4Ps*cOdQv~gKgp~(#d7;!x7y#XV}#uuMp~bCDBLB+#Gii1d6_w)7<@|J6$hokWZ3- zb3Lfy_A3xxykCa%O*QK@Oqu)VWGA_qo^e<(9IhoEo(xZrmp;?J|LGkVNx_|WE4?x> zpvpuZMZi-2l8OZl`L_k$P=7-iO%9C>>V0r~bRV#0X#Q3#?ip2e*-Eyared92rrwUS zjMOTdzEgAV;@J$Cu2&;JB1xzdH5Q~B_IaN;G7(Et5n>e11!NU;d1q3avp9OwB#cNx^oi#`Vpug07P=UDsm!5-Wvj8dzod+5-!r-X?25XqT^ro8EXQJ z*A}>o*8c_T_v%BFe>pN=AlhAf|4ZB?)K}I5a?bu!h zz0QU1z^l`AAK8LT`K6hWrn_P}kSb7jrP!z62 z{(%FK#AImn1>UZGAoMufr1}N-ndNV0}u$B3#N~3@pZ31{&dFUvZ+N)-G zcH7aj$BN6^3$$HW*mTa#4O%={c4I?D(himAvUigo#2~y}jr=1TtS++T5U9Q^(w|67 z-qyX(A+qk5V?Yzm3PuL+BSzfXvkx*#K0{CKh|aqH;rLB8Mk2;yG`pI}0RuO-DKw~H zBl=dlTm}QO0JliS_Oq^4gdPP?B35h$aSpf~3k?T^?P+*uTu=C`?!!*wF-`s?< z%3PDm?60f>=TzDu{XkFk?H+cR9({LlyW$th=jE z@iRW9s^eC@Su6|5!@z>DN(SDVs(KxV!;Z%mkF*w{SO%|9g@`M&|1CP) zxau-_vNQ96U!|EV;$vVWw-cFivIV^qGTWaMcFe(ejb0+$oLyk7X` zYRJCd3gBI1x$HlLW+^yy#{ZtWfxx37W9QQNo-5xDg&FO4oC_lC$C_BDT|@{E=4*iH zdYm`>evS}u7A7#AbVUk7fYX#B&JhUNt0p3uhhmzUeq{gf; zw}=i=-oB+GnO{ldp?FwGY zF(iDunf$}Vn&83?j=$;6f!Xh4tH=1RC8xF2d6VWD)gtg24YJn^V^e?|$v43zVMM2B zLL&US9yT4@QGQ!!32_qJp>Ubb$sw#@*>60jCs*g@ytf=53_J3Z=OZDA#($*!K%T6% z&Z0Xh(L`zo+;xh09w8?v6Dm7i^bv2F!f3MWN_NBl5b){4;4R+a2tOSvvO9bEujB;i z&plG2=#>JON%Vjr<~RN;eByPR0GZogkKfj8;ZLghkK271V3OuUt+1G$srU|#**TW^ z!uG_ADE|$c=LT<8#&-kknQXXS_UZG|qHN#2=QQHT`p+Ff? zTT|C^Ub25H|A%5FN0*gwgs|X2$=Yo!+m_19O^&)3KflEHfinpAvG4d!p84k6=bu_V z*WkNmzxcNmA>rC#o#<dC|#*5w2=mDY0$n=3fQv?lV4xVm6`tRB-;|`aZJRN%I zsGfcFG;Z7U#^ui~@9_ugvqfAs)cV~ThbS6$w}Ijk*O>hZzv|AMA+n>?_cO5Pm?{fU57BL;LC=3Oc z{>UHeCyHduDn+x^3wKioUy*;Eqyxz2vCuhCJ*KWAr_@v1>3W0POuU(a%U@bgcJ!M{ zXT%z&O{RO3UJIEXpuPDTDOqW#YnkgMoqsl+B-GVTjbTjX`e`LPmLKY*5ZxN9VC0m^ z2szBSs5(miM^}~;r{V&xjfDuWT^`OjVkk@r9%yn^Le34TTJ#T8q`{Va(9F}|DGKqx zW4gTTv)KDrH{M1nxW<%j8|k=!+z1ZAOe7yt?vb^0Q(zwwiwZuVKqiWOb{=kE84`tI zhCQU zQe`?~Jjom+DYso^T9Sx(U!7*B;%b<#gpD?#zd1=h*`5~;M54P5+3eXgo9!Wb+NI(u z-!~EYNjTBknz%^rgvdQ#e1Ei$vp}lyK7&5(6rwy`7+cs7Oc5%7# zW5G?f10Ra-pUwzeqqye)WqbI;!HJt*I&c$%j@_!v>=#Q4K!Ynak8 zR#IidX)ZbpswvJnaQI%3h;*UDC!pmKUN@4FX#5^j-gZgo4xbOHI=3-IdoMNC70j)B2KuNDDMRzv zNk#PxD`qg_S>LL}dT>VzEj+lsqM#5CNMT$^)eoV`ZKbDjXtFtjncDWN^G(-6PjGNl)covv(i(@x50HaM!E{u9D%NO|Te>v56J zE_f}>Jm-Vh%lLnQ=0J-J*|$mw;{f;{@_u?rol(uW&1=scLRx7R#0S;6|WpNA)uFEj-0gce|{rYu!%R4Wzw|8RK6PY;vxL zrQfYBIezn8JnuMnSQR_k65VIGdNzIy^Di6~{vgI%BEKspTVwfO4lx1Z&dMx0iGYzne>@lJmfsp= z5`Lc|qoNt%F$Rq?wfIsnu>ZiBI$!2w`44=MnZ&jJHCu4F^PR5Amxn}m`$f6zU6bcd z!GVrkW2gIFrW$ZQRS_J0`-5$urtz&S1J}ME)=8<~cxA*7sftxTalO`OMktQjiY;e^ zFHGGRuIJiYA;d(UTbVsF>b%mgyMq(XPhcXG=6&6{xH zh!33RLmW++b@T}@f=yU2pU|f}L~*y*#r)2SH;r*1wVxxj}OKmsWEx^0=p;M`HS%-yjp}6@A zwO7O?{4WyN!zZbqE&+3&s*qw|n=EuOmsY}6Ot;@f7W~6dV<`8ozEsc-xnY|bszG3- z;6jG{B3VQPxcGWTtbzWVqDlFE_%o!@QuLtBSnXpMRhjtQfuN)gHqPryiG=+T$koiw z-Cwhpuap`+&K_Lyk9gGvX7A3_YEz>=8K7@Ty<{5ScF06^cz$ROV&)eU)GD1PC2qTm zc~1V|z(F+GQf=Vil{ZJj;yuDmN0ZGYlFDRbu1*(ZJ=?+SD@U@l>!b95bj$nW<=`+? z%hC|EqwINn(@B-@woyl$TCXGI&X?2j)l!yUZnI6IUNpLIiZ=BW&Ze0?ZI{gysr2}a z_`StNH{VdF$MqAUTUET4=0v?OlA8GSt+H0)=IMv4$V!i!enetdY=mBe(l_Y`jkg?N zy^)S5wx;cPpT@G@IzR05U<&etK|^B`UM9O-elPg+R0Uh$uV|c`ms!0mOz8FT0||dt z4O%K@^i0Kh+Qp+KOYa{;C}%GOKa`hl5je?LRc4+KBF&*4c%AAKNq+!tOUzj#9ix#+ zdgYn_W|J#?&--9~&pnXGUMUH*JWiJ(Vsj)Y8@Z!_RE!wfm{9Z4NGTFW-@#S)0c9qMDYpdB2mrXJ~fc zPv#5{{f#9*Ew!6UGo#qSJ)(`>-Pmrx&I6cR#EO{QD%g$+B~PvMlh-p3>2s6I@O4Qv zq}kFC$X57OocJ#q_R(rN&b`m{Er8z-CBI14RbIDfRu})GL#s#k^|mLxPtB>ZxbRBb z+kZhge3W5H_@T9o8p5&l&5(k>`#@@TW&`f|#O=B*E5nw_G#@RGN`qwnUM8_pgqvKr zgj`SjrxH&KD@2r&H%jdAph1jkeRJKY@^hjcA7?aFHpjj;4f>j`LNKk=5#NQ(_6lmB1JgIPuv%T&36nHCVp!(xz*Ow?G?w=)Ei=O{aQY3dg-yCT z#~swkm`QV`Er2=`V3k!UrW`|Ng6^z@@5eOUTP!Yv^{=fXX&V;G?mNtR2AQ1(h@2`$9_#R6u4OhlnxHGzxXg-?QYbp;k zTY(YTnw$aK-frB@g9vxj<=&qJgK99;ZAPOl%J-wklN8pX?$T?4k|%u-$Q0wTaz4q~W~Vd!M{K*e)bF;fSF`I?a{RdW$S zMTQTyEUO!QHxOplfK`{kroc}CFY7HvVWz#YOm9ihPK6g&qBZzF2GaZGf`@bKZ^h>u znU!GeW%7YYuLi~^gJ^Ji@jr+u;qhf`9p^11>-Kzd&W-Wk-*jnk?v8h;r=R_+U|Y2B z-+SfRBa$v~_Vzy!*i&tdSc>VyACt*S>USRk=W+%s+S?P$3+8Of(HTUsB2M~_os8=5zMxRP4Dr%@RHWdiG$G*p;XZ3lJo%Y> zQ^7dp*scf*AJe16&0J?e9#U#}+{;Um*2ykS`bi8!R73XmaA5nG;=bP^Sczm1^y@Vh zHuck?V1WLBr!bsV2nb9&F$$>mUd`2Rx=#l6PHmXF@=13>LNJzC`^VS*F(Idq#>9aC zw!i9jyncObYIbI-Io@DpD!{Vzhl6z|ynMy^6L4Va_T~ckB=!B!gMysWHL_)dGFJVy zFEMn(RV$ra3kTEb%S>V!AZMYJHge3<$LQwM4N{TZSC&Tt?}hpx+D-p1Zo()SEe0Hc z%vVjW&?n0{CYv#v!hVwmw7KUehbLMITUB>iEF7<-Du-ZAxz8~I-ixTVkZ z7kiM9vn*6K;P}L-0cp1;%ff%#g34DVxxSidv3^~YLKt~zHpNGD%;t!W`15rveGrdU zEr&7KFNsDs2H7(Ofcb69>#mEk#I;1Zd`rujjjgA5ZmKdT=jfW2u5;5BIStBg3WlY U`K5o~IsRvV)%gm>_U@Da1L(V|nAum2Gp^w9i{ReeLcU z>-NmvxPSh(qw}{PU$Fhy!X3vK?mW3@*Qq6Y&Met`=Kufyx~DsD1I=M93GxeOaCmkj z4a7Eu%N9}Ei0Pi8z?sb^u{aLk;+U7y1)S7-CRAJv{`lGSo=FD%KL s?qwVr8*kEU_eJ&Wx)1RgmQ(LBc5|wJmD6jV2eg#I)78&qol`;+0Ah%AF8}}l literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/bg-rubrique.png b/htdocs/theme/md_dev/img/bg-rubrique.png new file mode 100644 index 0000000000000000000000000000000000000000..0eb3cc2603cdde831a7384a8330ddedd9c76e105 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^TY#96gAGWQpKAF6q!c_|978mMlUK~!_2vKi`2B7l nHRMDjrpR$J%FD~M#Yixer>*YV*-#S;RLkJ$>gTe~DWM4f&A}Lq literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/bg-titre-rubrique.png b/htdocs/theme/md_dev/img/bg-titre-rubrique.png new file mode 100644 index 0000000000000000000000000000000000000000..17b35d88823569c82695eb73b99f620d98e2a667 GIT binary patch literal 374 zcmV-+0g3*JP)!KKRENmoaw2yyQ|a{V}+u^WohY&nwqKI7~hY@|0s zoh{b%R&s9m$+_hx=Z>G8dwy~r_{n+XC+CTuoM(P=Uiis*#S6pRcEOce~xtxPPej13gD4GawoY*_vY0d=yMc>21sU*(b)Fl77x zwQ?~~h_k>WvY3H^>jMZgI;}C80Tg6Ocl32+VA$Bt{U?zX$d~bSaSW-rmHgxE7kM7Z n8UGwV)@yWf{cn62&%wsv$S=;981ljhsE)zY)z4*}Q$iB}dh9hc literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/button_edit.png b/htdocs/theme/md_dev/img/button_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..894b4cfd78e0b5ad8a07621669fb204881b9c1e5 GIT binary patch literal 961 zcmV;y13vtTP)|u>foH*lbiu{b!+2f9$koMCAjr(w z$<5ly&f3b)+sx41&9Sh}&)Ch;-OpMZ&(PY>(b~_`-q6z9(bL@0Z9vkDY0}Tr($?V9 z)!oz8-qY6K)7IkD*51_DZ-R9hK zD%{`c-gqnC(bV4B-`?Qp--#jLnPA`I>)_(*;N$DyG9~UIOyu}>bQ~W?epvH^zHBV?(p~UvQF^v`0(=h@xzYs z)VuNX`0{29^08m@_4)P6iS^N}_4oSr`1<#?9{0Bh_r`$t>D>4D`}leq_`(7B#sK)q ziTKNL_|~=f`TP07Ir-9{`TG3&&H(%T{rvXs{oY0W;xGOF{{D0h{(u$!hz0(QFaD4S z{*xsBlP~_B0REl<{+|{8p$h(@0RE*m{-s6!rvm<`1^%lF{;(weu@U~V3;wkj{ef9%LD$)PX5bb{?9M|(NX@?TK?4#{?<|c*h&7| z0RG%1{@(!p;imrL2ma!B{^uJ0=RyAG$^P$R|NsA9tKL8W000kkQchC<0|f{R5EB*` z89-ohHWEP%k;24I6Mw=_ z@++*3C5fRlYDIF5ogp?t0T>bC4t8&5$M?c|0vCDcx5DQ#1H!X+Fg@zKz1JI8KYTm~ z32^;ybN}gnT@OG6o-d7?d#Cwww*V2K%`fI**jol7z~y8X^8T-W0wN$?yqtydX=SB? z2qSb7LKaN-ChjodN631NI`WM5|=KSD9g(k7YSq@=m{&Uuc42B5$rv3hH zwWJUml)g*g*zWtgK*+h0z?ZM1H5u*l!2%Mfajjr{=SB%2(evnGF`VCydFX+}E#5e- jWl~D05lExA008hGX5N1JoV$=|00000NkvXXu0mjfh{hve literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/calc.png b/htdocs/theme/md_dev/img/calc.png new file mode 100644 index 0000000000000000000000000000000000000000..5e6471408d875064b8a38104922f6b70e67287f7 GIT binary patch literal 734 zcmV<40wMj0P)XxSK zX6?K&e2+J6Q<7zm)GeFm?gca z0F0)v*5Mp9>IN?kh^R%Dbo@K-ExuvjZt=8ed((>YbMse?6Q@e?q^V$&gea&n><>5| z8|ITa<7a!ELB2#*suQ3|zvbl4e$E%+q;RSg9z!`0_ zih+nTrFDphH+R;#d?hAO!n?OFaW+0e)izip9xsA6+EoBis23uhJQLD+iFHjzN2fge z@erZGv)}e8t-=`N75M5G#2Ks*1cuRz1@>^p#v48IWJFkt*ywhdOkpk#rM3Le4M*T+iOJ2hJ(LOxY)bEZvTksSskw%Xsx_b%2f@l1cFn}c?Jg)RIq}$I!_)AXm>gc z5BexKW2-sOt!5o-(Fkm+zrC;4{K%S-1!Fl15X1~N$F|M QEC2ui07*qoM6N<$f(RT|lK=n! literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/calendar.png b/htdocs/theme/md_dev/img/calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..bbe6c27f041005fec8f47099cdfc7ebb1053af89 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF-L1;Fyx1l&avFo0y&&l$w}QS$Hzl2B=6bz$e6Yj$!i5ng7$$&KMidOiN1x z3eTK5^URqu|Ns97vEQ<#04c7LAirRs2m~-}I-_$QDC*m6etrEsGhoSd$f&1eESHS~9)aVU~6?Hw(kkO9vFD hCT3}{7@TQgVz@7DWWGTr!y0HVgQu&X%Q~loCIG~bR}%mL literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/call.png b/htdocs/theme/md_dev/img/call.png new file mode 100644 index 0000000000000000000000000000000000000000..ddfc1b7bd905e5d43d62734cff1a7d2138687db4 GIT binary patch literal 286 zcmV+(0pb3MP)i0000OP)t-s|Ns9f zmllk?gk-K)K%X$9#hu5}#sB~RO`4n(00001bW%=J06^y0W&i*Hv`IukR0!8S%rQ@c zP#8wxBPDd@1Dd-QD{;jTy(=}bti{H3zIEtYdI|5}cTvy&99A&iShpmID_Ol|?QUc( z`0~g}J^O3UDgy8KT}!I!ZQ^ShG?Rvn8pygWkaS1LhD(4{=5l;2eS@34BCeJqgLyTi zd#4cg>h<&G10Wm}%^pig3N2>l=bi_z(azFRFrF9NNK!}e(FRFNK~l_S&(hq( krG6@ literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/call_out.png b/htdocs/theme/md_dev/img/call_out.png new file mode 100644 index 0000000000000000000000000000000000000000..b5a22eb827b46edf53625bcd7a82a1db04ae3485 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAd3?%E9GuQzs&H|6fVg?3oArNM~bhqvgP>{XE z)7O>#3JV9HqIkjF<1>Il5&=FTu0T3HJ-w`~tgo+c`SRu4wrx9m_U!-v|6Oaki-2;B zB|(0{3=Yq3q=7g|-tI2!Vu>BEft>lCE{-7_*M0lXayK~$99fHYO(b_NO)}1*%+uX%v?^aRWD!1p=`}nu`X2-{UR^DKJ;z&%^gUks{ zH$}~ZHde6pS>KZQVr+eebL||HJ6%6!%nB>g4Pg5+hh@uwnP->Z+L`HiX5HEDuL?}; zqWx#Ka@1(n78o2hebvo<=Gg?s?ue*K6T4RB-}|p$SHM%&9FuVNq2sSKX3elF{r G5}E)rk9xHL literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/close.png b/htdocs/theme/md_dev/img/close.png new file mode 100644 index 0000000000000000000000000000000000000000..ec4338e8bca2ad6905cee379100a8b0becfa5c9d GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~jKx9jP7LeL$-D$|I14-?iy0WW zg+Z8+Vb&Z8pdfpRr>`sf9cDpZZRUqP%yB>=-2k5u*9j9Q{Qv(SND>1Q&YblEYUC>k z@(Tu9%EZjV%ErOT#UmnV`TC3^P=+zd+ueonKa=h~ASd3_#W95Ada^(Q1EU+;vEbEW zPu2+~y+{)g5t%aU&;f2PY<8T@`xzsDz6okAy^sBxB$|;k(yA$2|pF#o+1c=d#Wzp$Pzd CFk~nI literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/close_title.png b/htdocs/theme/md_dev/img/close_title.png new file mode 100644 index 0000000000000000000000000000000000000000..bebb74d98611e818118d81d55d5dfc5eb62f15cb GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zCj01c^TqjJJ@c;jRAW0AabpX`> z6*G2wc!SI;3GxeOU|?ioW?^OH;N;>Fk+gh$MiD3z=jq}Y!f`#e&ynwt0}pe$*KS?5 zDS!TNmDwgLTHN*Kh+&cQhq)>}{*MlQJT%!Rd;#~tb(QArnoPG+r_VB8xBE%a!qqIy zPqzONpL%f8?Zu3i>!dbp=9>A2@6H3p1DhU-hp908`MOQ81=_^m>FVdQ&MBb@0C+cC ALjV8( literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/delete.png b/htdocs/theme/md_dev/img/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..8ad73597be74e4690e6a5b354ceb560c5542ab0b GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^d?3sLBp9rei+F()Q%R6tFvI`oiAr06yk<`q#}E!# z)`N;s%!VRt2X58~MvBW+v*_@tY%141&JfP&u95fn-uqK$zMc4W(rWVb(+k!cR|mxJ z^m$tzFB)-O`mf#b8~&o4w%=oy2BluOzi)Zy>p#)*>$g1q`B&nYoy=r2mSb}+tZ)&! zpu&2Rw^#Ima4(nE#@t;xldeSO+&+AnL+J;5+70jW&LcYOL5}ov^>bP0l+XkKHit`# literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/detail.png b/htdocs/theme/md_dev/img/detail.png new file mode 100644 index 0000000000000000000000000000000000000000..05562bef842a0baafa8813f528fe2c5012d6fd94 GIT binary patch literal 589 zcmV-T0wRYO-ohip7(X ze=8`hu5U?zBmvU!)LO(Wl_^}9aQtAcuZSru{-Def(a4sqU`Mi#Eag){GC46aviG2<0j)vW{ z%E57lhF3%X!h!KQ1)yLQae7yRg9BE+E<%wOw`?WnSwJoxE*d(t1Qiuo5gW_qMLk!sLB9=US b1W11Xqa0`;be&vu00000NkvXXu0mjfwBr_V literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/disable.png b/htdocs/theme/md_dev/img/disable.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c84994d473348e27391c7095c451fdfac9e0fb GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zCTmyVUT>t<7A5^?{&enU+-+#Y$ z@BKL-y7vCqwfB3^J#S%Pc>n(U`|9j-PKK62#rK|n|9|Y5SN2k`mdKI;Vst0EA$6kN^Mx literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/edit.png b/htdocs/theme/md_dev/img/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..4e916fe1fb095017458fcdd1093c1efb8cc8afca GIT binary patch literal 818 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC*h@TpUD>a4GV=%;&YExV7AVA7 z;1OBOz`*qZgc+UIn9KkQvZOouIx;Y9?C1WI$jZRL*c{*!;ws9^Atk^mDJ~)_Dj+7O zsU|CJpr@&B=3yC7=3!@E7o;EN?HCdoUJ~VA9PN{kkdU69?w#D@m%A{yctuXz#;opx z4Z-@2AqEX0#?xwY*OY~Bu5{R3<+Q8LxvQyiPpk9ZR+qgkZu?uj_ILQ~@AX;Kl)Jb& zXH{$Z>b8tEz2)0m^0xHVZt1T-(CK@i%fG#?rMYiGOaH?5iHlk%E$g1Tq;LAtsSCEu zS+a52%Jti}ZJ)L2_L2=pSM9yKW8cZ`hp+89a&gCzn>$ZE+kN`k-qTO^oq4|R?DK<5 zr(9mz^XT;2C&#uvKC|KR*$t1+1JS1I7p@#U|Ki|<7e_C>I(GT>u`91nUVC%;`kS*i zUY)u5_WZ4P=WoBebm#r0yYH{ueSh!X(;E-o-+uV!)}!~=AAGp+@Z;^rpYA>V{N~2V zw|CAwzkBV)qlXV)e0lux%i~vHp1k_{?Df}YZ@#{K`|ahsZ?E2cfA#+R>kmKPe*E$7 z)6Xw&AAfoG@WbbyAHV$i{PowDZ@<6&`2F+epP#?}{QCX(|NsB|svmCvqo=VX$S)Yk z9ZBM7ypktPLx;Tb#Tu;u(*wDoEkgYVIO=0`KT}tXUM^3q&brwIfcGZbq4#B{$ zSA!XfwY9mD4w=+W6-{xtbL&*sAq#VTS5`?wf$hsSEz($gCf0LSx8RYrdS}mTeZMkk zQbHa>p||&@KU;p@sE}znc&Dq0#nO+lI^A87!~FE5lh@AOIx~a$jBe-k?FOcXMkWmf z-IIkDJ2x}O%vGrRJV|J=Q}dr#nS(KjEEx<8C2Opk4=Sa713H+&)78&qol`;+02Orb Ay#N3J literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/edit_add.png b/htdocs/theme/md_dev/img/edit_add.png new file mode 100644 index 0000000000000000000000000000000000000000..ae205e9d77050e9de7990790a6328bb58b008ad7 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=%3?!FCJ6-`&>?NMQuIyKMSVXkt-|s8^4;11o z@Q5sCVBq=y!i-L9OlANDS<)SS9T^xl_H+M9WCik70(?STfiwdL2nYyB0D&b4I9WP@ zffoq;|Np;V+Ho~d8Ba-&Uoemh0}Mj<&z%E`D|@;)hHzX@zOlEu{M);`JPxa*#kcC} k)>cMI#i=^1l5%2XWMJB4D7$wV=Qfaap00i_>zopr0O{62WB>pF literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/edit_remove.png b/htdocs/theme/md_dev/img/edit_remove.png new file mode 100644 index 0000000000000000000000000000000000000000..bc4bdb360faaf5046d321966748582f0d44e9551 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=%3?!FCJ6-`&`~f~8u9hI+Wa$I~|NsAwewbtg zlwvIj@(TuX|1yM~K^3K%?H L{an^LB{Ts5Ee|4s literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/editdelete.png b/htdocs/theme/md_dev/img/editdelete.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c84994d473348e27391c7095c451fdfac9e0fb GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zCTmyVUT>t<7A5^?{&enU+-+#Y$ z@BKL-y7vCqwfB3^J#S%Pc>n(U`|9j-PKK62#rK|n|9|Y5SN2k`mdKI;Vst0EA$6kN^Mx literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/error.png b/htdocs/theme/md_dev/img/error.png new file mode 100644 index 0000000000000000000000000000000000000000..f41dd8a3bc02959bdf97c4334d9df8eb5b3209d7 GIT binary patch literal 489 zcmVPx#?NCfqMdcnttpFfd_QR%cjO@G~>&H8$!tHtRMv={Ps- zKR)V0K<-RU?M_H?Z*A{SP4!Pt^H5OlS5Wd+Qtnty@mNyvTu_31dhlRZ!)B^sueV!oK>pvHQ5P`N6;N z&C2l3%Kg{W@88?@-rMis-0$Px@8sb6GbaG_3rHY^z#IstXTj600DGTPE!Ct z=GbNc0004EOGiWihy@);00009a7bBm000W`000W`0Ya=am;e9(2XskIMF-am0uKZV zBlF0b0001JNklDR+_rF92*d*T)HS;g%%s|0EQvrejC=G$_Mopky_Bj+lv(H6rYcazSbIY&K$) zuN9+GCPKMPj0%}6)N&W7O=|jiJmYdc|nupi<)FlR403*E=7Xc6fe}Jdcv6Mjha*+7}LB^o92r>X+Ee= zXE}Wi4C?|>pTW9}xoBAL2jhky?Az$a#vl7L1K0$@oIMW>SyHzB(UctsQ%(??bLK1`vvA0ejU!bV=-!=&W5!$@HRj{!UIluZigDajiWBBi95 z<7A5ppSM=vivyK7)mDkqZEBo8sKyyKU$$#;rd@}#9a^00)S=g^!+EP7UmY^w>#izX z?5;&`cRjxO)P%mCR$MuG5Z6w1;M%z(=s*7n2CtmO;MHCXes=*w{TFbf|00Hd_!dJy z_TiVG`Y=p$3B%Vf;n(YzF*?BZz-5fE86LQb(ZTO=YvgC#8ohx#H%D;y_D$UT{Wk91 zy~E}=Jh=Y{9{hP9e?5GNv9U3XkB>j;wfw*TkNg8qIpAprJmY|89q=6Cy><;_*{qbb zqz|1Y@Q$C)6Pbby<0@KvGA8oYb~+OqNN88nvIzTDyvTcJ=Sjpy61oUlf?yGnU*clY z6e5fJs7Ib%kaIERO(L6wUS{`##Waxoy<%kms-OsuTOq?PC38P z^a2?dViR>$Z`i_XW&FbXWZa3(R8>!-5XgNx1qqQyRn6NJUTvn7Pr-{Q;9f-Gtwu^) zDfkeD)YOW3q9ClN;7e?ws?N<8-YMZehRi%-8&x&4-}UtH-^sPvm5d*;ox1(13Uvdw zg0O2YnfXMKy|r(PS;~!+P}uuN+ajcLAzermKkhBUx&>S;3?Y<{``yutcpnn7nAq_T rUtby*#9Q0Bl!#1BAmU@g1A>?Ej-SgN5bA)H4*0+UVGj7WKQn&=2N5!r literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/file.png b/htdocs/theme/md_dev/img/file.png new file mode 100644 index 0000000000000000000000000000000000000000..73c66e9b2b33cb54953d608d06896218ebe6dc44 GIT binary patch literal 505 zcmVcs?$o~S)xOTo&eh4l*U!n`-rn%p z#qit5@!H4n+sE?V%i`eP=iu4$;Lq~l(DUKZ^yAg^gxCF;rHy~`0V2N?c@3G=K1gE`tj=e@$35X?E3TU`t$Aj_3!re_51em`}Xqt z_w)St_5Atu{rma;{QLa;{Qmv?{{8*_{{H{|{{R2~F46lN00003bW%=J|Nj8j$_+sP z004bSL_t&t*JEH}QUn4ne-0)PU;uLc{ryc@Abcp-i&f5_g8|O`1p5#;CPhHx3+fQbnJkq;FBHu+v{00000NkvXXu0mjf4ImsM literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/filenew.png b/htdocs/theme/md_dev/img/filenew.png new file mode 100644 index 0000000000000000000000000000000000000000..8680cce82bff07a3c3aa496e6280d871bcc50e27 GIT binary patch literal 397 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJdx@v7EBh4=Q9dL23ay-Kpb%$) zM`SSr1J?%-W^`I(G6N{clJ4m1$iT3%pZiZDE0CWY;1lA?Az>(B7$jgAWm)~bx@FGV zt>@P6J+~Ezj$PY(?Aoz&Ky>fiH6VI^4T$bNzXwFmf$05nAbJl(-`~Ig4hH}KPht3f zjN$)(iU0qj{{Qd!|9|WM|L6Yy|DTex{x8rv#gZVuU?3MSV3>dKf+A3HgQtsQh{Wa4 zbGP|g6nIzydX|0fpc76wmOKbLh*2~7Yy7Qm|j literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/filter.png b/htdocs/theme/md_dev/img/filter.png new file mode 100644 index 0000000000000000000000000000000000000000..917715107bde9b14abbe77024e805b1a03d40153 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CH!VDx|PJVD7NNEN5gt!7}Mn*;v5fO25aambe zAQu7}8X6WXSaA68;iE^79y@mI&Ye5$jrD9mIrfquzhJN$Udfh)Hdld6A5Ry@5RU7m zM-2rV3vq+CoUK~H7~vtEB6V#~9mon#S3j3^P6uLOet000SaNLh0L01EH`01EH{Laa2H00004XF*Lt006O%3;baP00088NklN@N0II}yuGrygg4pDTd@9A^-+&*7||4r~iYQN=fiiP9h zpsQa_esycI_F-xA@;hDmw8n!IP#$O|l1maSBS)FZOv;ObD{(H|-5oz2s0|&_4StVR zlJe=5`8HTH59!Wfip` zkqE#GeCMv3-5t^L<9;8h63RqUfap)Afkhc)bqi250>gCRScH-?w~x?J)PdK{5xdx4 z?cu#3AhrXT41^L8wFnd$;8*~d4O2G&Dv93eP(pO?3GkGu0#7-Ix{NOL$4o0;y2QTL96dP9BifKH`K-62F{z)~8>Xh2?ZVCQYr`wW~p zl*2%;hBBJR?95D(%4vnQbR67W8K~N2*c{!`fwe54sDNMr`|3&<=q@_(P|lj3{l4+= z@$2E~sWf3z81qawKetWi?PW^j~?8boqBss zSLf%bZJCy)Wb>hDS7Li07`MT34SwM8PM|edu*WCnR`1?_{^Z${p(`tk@1I*Nl>%&= z0)XX^f+a*qsJ5ZCv$10Pz6gj51@rpt(ec5XLsut0yc|+9^Roae{x0&D$c)mKYAAd~ zw7Ml)laQ0^>Ww=i!-H2YTwMP4@s&}KHvr4}J7w~RIEe;geO>KcJ*TwIrMaoG(UF`o fvkbug*9U$A&+a%yVRe1!00000NkvXXu0mjf8@zTZ literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/folder.png b/htdocs/theme/md_dev/img/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..04a24af2e22a3ef25a986218506e1cbf0147db71 GIT binary patch literal 935 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC*h@TpUD!lvNA9*UJvjIaRrKVaq%&5NOSWD^YV-F z2}lSCii?WLGH@s|bE`3MX)$tZG4g6N^J=m1YAGt~DXSWY>iVf^Ir#)vv#NG*YjtvJ z_3&tS^6GT)>2&k!^$6(q3hMU>8uW=jr7}^)jD2ht6{eo$DCAH7>b5K4(f``Zni`i(%zQBC8Jg z*E}k2SY6q+vASiKXUo;F?yHd#Z%0qQ6*J|Id&_(O{*M7&ALA!H$((gJd*-{G1^2TS zf6ra=BX|AZx|I(r*M4g1+uk*GU)$VsJ(CYim~n9OtfSNBo|rcObj!k9?JMt3S#W&r zigOdz-JQ4WLgSi;Eh`_itbNqK_EF3FuPqy1we9-Tx${fMou)UCaAn2jtGjofU9$VphTV_a5B!~R@aL>Ezjq(Fz3&%;7XWs6(_-^CH54*2@*!uYI?kE5DKmBv$=+$%Q?;Jbz=)jpb z=dQjwd-KzU%P(%+cyjB`+cR%|-F*7<>X-jFfBb*)||Nq}mvhV;#?c97?Y5;TL;@{F-lWpgI zHMu%9w6SaNZ>iJVkM8RDY~AW`XGY{@^>1Zco~F9BN-*tA+?;-Xo@J_2xOZ_M=Y;He qbLY+#6@2$RJ2jKFcKtUp{~N z`t|GgAK!od`uXS2?|*;)|NH-!VHAvpz#t9*9gy2Vd4YlB76T&(i$FudK?V+Ctr!W1 zhQsXw%3KN`3L1`fi*fQ?@K~_;ct5LC7f)uw6GmqCpjAGd3znXqZXkSOj%RSA535D7 zR>X$M&zt5uG;^_@N?>eW>@Ka4x?qYXGe^K;s{)3Djx8Jk>$CQ1Ij(M5pK!QquEVx9 zkzB$W3qntCTN}+KsuME9d%NCUZm~~M2MQMIv++nWaf_{4xZ&a9HuH=d2X<_Hd|XD! zd!EnE=G4>jdgVV3?A-kP`~v50Ip1AdUS3`iygKgeuC1@HZ%95p&v*B>x3_l`zrJ^N M_xAkrjEoG{0QtGQ+5i9m literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/grip.png b/htdocs/theme/md_dev/img/grip.png new file mode 100644 index 0000000000000000000000000000000000000000..8053007e9ddc69c0e5adb53ad1cc5fe511ab7a43 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh0wlLOK8*rWik>cxArhC9|D11-HZTm(u>AP{ n$o~~8j&pndx6j^~;=#l)kz2v^P&CIwpkfA3S3j3^P6cxArhC9f1GcSHVV-BS%0YB nL`cz+QK!L&FF4tAItxSR?As|PT~pTp6*G9c`njxgN@xNAn@ku= literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/headbg.jpg b/htdocs/theme/md_dev/img/headbg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..160821354cc45e249353e69ab85ed7ca7423c8ef GIT binary patch literal 12151 zcmd6NXIK+m*Y3~*1PQ%K2^}c{0Yo~XNRuYgRFKe{fKo&{1Pr~3ROwg%se*#^j&!7{ zG(ka%^iGm*c%JwD&UOBuA7@XlnaS)uYpuQZTKB$Z&){e9ivUbVQ(F@tARqwhzzx8E z2h;!}Lc+@*Sct(N350}%n3#lujEoclrGP>yDJUtauF%4$uFzbeq=YfTXz1t}7#N_` zOw5e*%(V0j^!N^d5(4}ndqF@z1K_&=)=T-91^C}WKzJz_{|$irbCm#ljkQ6Y)`jJz z4I`rbfi27C{4@LVWtQgE?AV2R&04Xz$34x`R2QhTH3I| z>$*9q2pb1)`w>6X+aB#?Ip{+vX;}Xm3z!LACV=7h-j3{L@|2%l=b&%Y0 zr#|q>#J3S;g^hs53Of}Rf|9W`2eJ2|BKEM@bj!xZz9{bsbHXGNawB(J-WM??!?nLw zrppQkVg-?5O_0Lx+UY2(muU`egsuq(?-kB>_Objo6y~#kjZ_xzdwFj(0!{!ll}EQA z?Tci}I-JW(15V0rL>Mwf-u`e0V z7a@{+pd05Q;eXnkVmbWj>Cm|o0FatVzsPDZ4f8?dc$ECgc|atGC`$;~3n;Tv%Gx~- z@DI!lQY5l)6(tgNv>0U>B`oZO7o?enUXzTFf#*IjglC)Ss1&okOtpCNdk;&+JLR*w z&))nvG!3W{QPK2avK)0;zBzq=zZ1EP{5WitYxZ(tWxAogb7H}v1{BH#5UBumQ^r}< znNm`Ooq{|(qU)hZQI~uZ_x|#MU4JY`SJBYwL~A|(5H9-`q!6+^`1{Vm<9?|(qSU9i zLBw~`bNlDP!i&u#U_y|OBuvxWRZv(XEV&@LB$FUt1e!m10HS z^Fv3~uS`SAgP@fSuzvW#SI zd$GFt_fu`PS5Jek%r1An@_)29lraDI^Q!0uyaWJvzozLJB9V?dvlNgQ-YjFOnrfP; z2n*KgBm$u6^EZX7iY+-Q`@5NkM}#RIp;u&hk-QEF%O+QS1+4ti?}OzizVru{HCT=x zwef$%5D380SK7zN(vA;)twfD?u(9#&HMFB{J~Yct%7Ia+JRX|WM_f@g_Inq5?TXSp zj`t<$g0Vt^4BWbDyq{{24ugZ|yT95Qt`Sa;&);0tTmO&?O=3~Cbhji(qO#++6@Bo) zj(|T4V409}RO7LbB6tYRYT)Wk{Q=!wx-(fd<^4rvxMoz^2%g4re^x{r@xI0F$B!`) z*p0ta_xDSv3<-5!q>+rTnM;l$%A+%e8@x$=Lcss+N<@j1eZ(f%ezEY}XyO||$ghEOpGXzJ7YZAEdGCikF(c`R-UR+L zXB8NKmLzKd^7lZfRG6Xp{iM59gzb;q0FtnWQ>N0n(0SpR!OSVY5=Y}GZz4H>)O)yw zK$RlyLn9ZVc8(p@ZD$n~dUDNt=NDlQS)o~^PW^7?tdgSu;HdINh45h$zvi3&Ou7U* z)kX-KhlGWZ0I?HXJ96{!+_->xMI>0O%Sb|35AN-yJ|o za190!5`gpqAOwlVzr28kfDlGY#3e342Up=XBvzGtNRRML`VU1QAR&wivLzKq3EMe1 z$gb$E^=&_|&c*zlAe58m)<3SEm4q{xB=o1`-YhST^Ozrw;un_J8}~<1i{ARhPs$G# zZpO(^+nZfThNN;d9D;1pGzJB+Ptevf4i-$5^u zu?r6Aj(IrzhR1L~AdH>GD+I;<;%&B{Q-iN9%d8&vyXfRJr|3s(sM@;qJ7np%OkN>~ zXeggV2u8>m@N#G=JWtx=Q0sGWaImvelD31pnId6mI2DT?OJ-O6wv#P0?#7Of-`>Wp zUmOX2k!-1T->d0weT}rY|6uWeX3Y`B_|^MH_YB$>UQ{E~k9a0@?Ja{gPJ`8D&~5GS zpq^>2<-@&6egv;GGo`Jj7g-9m(8{}8hNXJyVE;fp%ot>C#??#~7HFUr5>{UTb~-~+ zl5KH)u&*zqG9WmF=$u4#TI%2$tmxWBGnX-iM? zt%eW%gj^)O4N*-kEIRG(`{29Dg&Gi@(=HBkg;bt5dR<+b+@QjLwElP3Be8XFH1ZR~ z6lv<9)#njikO|$iraUcmtHi!gi)TLmROW3~gE=b|MjQNKxEa#)N6EiB=EuY*MY z=23v+toG$Tu5Yk!fY-JL7HKCOzm%r%z`Ei#-a4?j*gzl*V?uJP@j7NeLeQ}O^o2Msm!LvT@Bd!q)-8!iSgY^ zY5KLnWOa?wH{q2lER#kNJbGQa>quCfo}PN5t)!%6O%20~tlHX{V_*0qaKy_8;}TBp zW-<339oIJJQpZ&K+AIC$SueG>=XU_D3hPcni^kcqCq??kMbZlUdMjetXB9DPdG_LF zf`y5^C3f7+c1A_g1{#)|@hs(~Xm7I$n101wX1(O%$TM#^rL82#SK(%i+6m1JS{NZw zy;CM7kx9M%{;r&Ku+9M1>a9F1M(N{5WTtjzX4)08dU%Dkc}sX4Z@XgXD!GBDZaS)B4LpZ zc5xXeFJ=axAG-S7dY3(ieR24VXCtA7)WN}?(bTrCt%89nrqA~;c6)tc&N^p;VvA1N z^|n+uP1*Y)<>g!kJRrt(aj4@>Gu?rcQLd%&_`4nH35F2!VASc%@X1`M_Ckena*0^; z;8!_@H}TsMEn1aRYOw`@(7`V*429;I5)zILO>JY+G<;T=C=CHeHRRqE!RU7twgx&< zL$_VLf4Y9fslL8==DZldp79qAr+oa&bbZivY5VcYM&zF88d8oWX$HsCE)c-5{?e!b zcW>k6jiSnTJmXC)$;nBZkzg`xiF?Z%6eO(ASrnq|x+w;I*DUB{GlmObMP{dboV{74 zLNOr^=8}>|dk`%Q)%OZ2qbs8!$XZEB+Y`B&-j+`$-;v6qgMZgvPfxSEo0>UjI;hP= zexTTlDM#Po?Sv&n#SQjs)(=8`*ScTarB|!GKQZ>&Ah(EzhX>xb@;KmX!Y!WU{+xd@ zSkZ0U162d-L9|YTrZZ&p;HZ^W683o zUBa>vvO*~y;_3+##yr}y&4aez{_jk!W$x+ioj(wkz@@fET0r#Fn1^wS9zK?dCR_GF zR(W%&1F#B7W;q%BoK=52B5yT{PqTOAAq&=4QBpkg# zp^poXd7_^tpH)={&EhElJ)%Vp5J+TCT$V3`@-9PWZsu36K9XcpJk=jf+1^0-NjeWCAD z9^vV4mbdznPQ4X_errXWn1e`ryMGan8Dr{T>`x76$W+Y|Fv-=H+8CJB!s3Cx3;`>< ztkOs2kq+`@>Tf3|?Pj6(SP=?Q4#slNO=U)~jVQg~fZ|G&UC`R)RN;2H z1ChHN?L6`K)8T(Q24Xi1tzH;Y6aD#&B{`|bP9iRZu!aT$4sGH(QUV5MYF5*a=N~Aa zg}5x~Hy>^$eu(P}82v|5$`#2s57qCP7PpGzicQ;ker_=7m`|AyXEdWdez>UN<1*npoTawRJrcVH)yy%odMvQZ{zZEK zJ7g4N+TuJvXdWbE{x#M?9=u-5+}qcx*NY3oR__#MV8>yRZoOc8vwwXfAs5Y03@?J` zUSN<+=V^yd+jfUFJjZ=V*h+xmKT^tjZl{91rNjf|xs^vc|2P(cWTItQX!|(YQYU67 zTITW-31%O~8WKe60=N4R)BBVz^Pj+8fj7OvU#^u1!NA25Qc^+!lK=88H~u^ zA)tZ5xg=DL#BIF7RFVq}AGVJrRWJRQ$tlCtojJ|Vl3FkmquEGrp&f(5$ZJ6gNLzC> z*B5(+9p*jGEXF&Owxt5$YqoOcHj9nXBM^_i-MApQa8Y3*7NW|XkJW+vv90#tI-`*B zF4#i#DC#L$sYoR?5mbT3NOm3% z*x$f~tB>~V6309rZ57cvqZjnM zI29{DzmSeoxaV$C9*oZ)l9x;ySPen430g_27Q!+!XLXP6sPhXQofJTjsA>x>h^_-tT#(&$%z5w(4?q>h3KM)<2IZ$^aWG{?*^R@)v|DEh|PS|ZO`nNIw(ddHC1`fm6& z`e^$~2W4?PEUe!{plV>arS-T9VyIICU&7V5vBn)>lr7hwp z+f#*$J)~g~9XnD;Dk?UpmVlM|E6ta;NWWYsia4b6g(<*Ep1(%3vPba_z@1-_%nPBs zbl%c;Og{*qD|hqss}G_Q8|ny=XR7+}9dj#Ear2mxTr;ZohwYAAkovv8AKV|YEVN0g z#Lu`A)nTf{o?E*YP|0dz5o=@6y;cbWM0J%anibj=jF_-zKwnpBHWognXg7QIHR8Ot!5?*77p7xdrz&-(Ac<7zt9`RU0yZHe3-es9aG zZjdqW2@im+cdo5T%uIZCoIBt(Nj~$qJ6c?Z+M+enJrk|yM7EB_yL30xuy4Q`jj&$I zE`mDf7UJb6O3{a%{yBO5FCF9GFMofG(C0wdKW!() zAZ-h3lB_=)QwV+zL352s$mTy4T&Nj4R>yQLLG)xmZ^N82B87A_kSJ7IA*zE-0b|Q3 zf~e!9%dakoo}f7p zE;L*TqYBZqp}H`mgP{dxEp#-wGDgcwy1U>td*MtN0}RQz2p=ri%MLDC{vnQLn~si6 z@S{Fux%czYs-3D`v+ClW3R(C8*O1Qe5;!#{WzoViz%&4nC}W{o?oagRXoa*hsgW_R z@FG3kHBV_$IG5{*l;r1|P_+rhXVh+ZAckh7OXtA1Ps*~NU9maYnL!s1(6r>8^fEou z@}guA_CailO_)-g3TPAd@;s;POoR>GASlZN|UlLbd$g>*5R64_!x7N(Z; z6Tc)9VG+Nf#&iWiT6^;QJ012iR??5%O1kJdo*1*N?4vCeZJNk3B%sO`a?(bWOxK0m z11ogU;a;!DB&9p3=xF1?X}XU8i2p&fc~iCtI>7dHN-1U@Wa^B-WicZm4k(p zkPNOdSE1ud-131lb)&*ek#4XBYQDExka2n@<$=(!tg2U~hQq*7aN^jRvN}kuj*tj& z{u!>7h?^$nH?L7-sxy#_5(Ry8Q6lYd(bn+k_H2#J8SMv@-d&w1KD&7P?iDzTM_ zIZ(zp;j+cRSVGb*QXstqwf8$wX?m6kH9aDRj`KJ2s99__Po!)|dRKE+$1*UOstB6s zI!n58+G^ozcKlEzike8Xo11eqmz~7WbIrvoUx?sebRuDCDHRL#R`m@Ms7iZYD zTlWq29%x=L?z)O&Fqv@X!%dI{o2O~1?WvEHQWMKCxYILLn`@0_tut^pN6R!vyQ8et zZH`B8dlk*3|Du~JsHFSS9%7HEKYfE)t+~n zM-8RD3Gu4cjE-j$g^d5IjM^&^tR|1S?~#4tngC9TUaEUQj4SyL9F7U{R9ovU;QA;5 zy>VqEAsR>2vQ226d}D+5I$83XKHurJVD)M8VLC|PFnYdgqc4~Kf?TIL%hqpnxVxyq z=FOxPIci!LT3s^M%!~)3+4Qsj9Q0~Mu>|Okt!s4ilRbZ`9MvDVBPL|<=WIv_D`S=m zB0(R4<4THbhYiRdO7}@^s&aS?rxaj0{K_R=a9Jx@)R(?lL@-2k2T7M~bt9#7o0{^o zcac$2=*McP$Ca8wPC0|{iw8^vSds^cA$B*&Hf9a^U#Ul4M_F?_CiCp^9+`}lOG0&( zAV_#cQU=dAjBFjExTvJ8$WyK0jMJGzjl}%hlY)kt0FtuVz<8sw2T9Ek-L}ze!bRqp zbJoQLdbor{AuOD;2H`LubRy*CuZq!!8^`vj2lVcsW!#Jz;4J)}jebIa z`zH+TkOvI?{7HxIT9(z*8&7*3R~=1V6VYF_qXZQty>aEeA9{H;hUxmDW<(pVG|<5+CnGMJ7PhG~-#NTv_4d(HJD+X(^_Q=SFPrncgr@ zU!{G~9-m!+6r6$~$!XS$lwTN1UySlX3kwwnUWtzRlJ=!PfQda7jSBS4Kw6HtJ$Fly z3@P`!wZP9Y5>eUJ+VS;5u!f$mdK%b8Xn8lXsZurI0m5d+*4veQe6EFNcmMu-5eXkqt3#8{H`V9F7Iq1ZHH*ZHKldIp^H=3x=^ zrgzRvg-Z2V<$JJsZo!X*W{Kgi2}^$I_(dT-1$xj5JUui&gXq!~mfMp0ly0PrFPdlM zFfj~K%9+>7lJ!%!lgqzMOgH!>-5p^z<{Ur75VB?*l$3^^(5;?2?+t{DCnN<>L=`|( z`7xuJW`$4_=3ns~Pl96CV*Ic7rKlG#pZ35mIKvffm|z#XCmwzJ<}HOrLOPcQ3$VmE zjY(W|!O7Z$=o1@3xX&p4xQ3Rwqxl7cq(k3G{PP*t-E6Opj+{OXYC$}mw_9>5PLPkxo5#AUyx+EL`-wm?k!EugsD_U-eF7}$l|ntRIQ zh*t%BO&zd9$^~vOtTu0+-8s*!ZagbUaA~rYpYMzjuaek1uG~5>ekqQFoI>(xB&?t<>BC2f^C3=R6DSC>WZjcORC~;b3AKOkte%*@kK#-Nn_#wc{p$JXU9e z%|0RTV7o4>7Knn^EWd~4z-2oE5s}y1Tl(9VvTNultDofk^5)0Vf`Z_ZIDqTxt$AuY zb@UE`Of62%u8#MSlibM|`h;lQBm-XdbB=t3~)H+q)JmpPv zJk9~v2E4%$8|o1JTyS#`JcEnR7{oXsz0jvNEy^8izY6K%;5EMk%VKF~2Zv`7j;FP- zoHw6CWcx`pG&HP+0;D&mYpq6q!W8;Rj!3o(-d272Ma*>)_FI#hm~pC)YJzU>m5lR& zata`0bRu<&W7cscPo4EReh1_*;6sR7pp5Y@`o=J*7v#irtK=Q9%#6>gvihDmHcF1q zyCVg)c6NHlAgXvEhhN}C{IVG=N2$=AGh9ofT{#U9riXHT*5AE7YPAAB3j8Am7B%qY zz$t-)O<2gNG72>RrtuznS@yD$Dy@v}XO5}k$W4RrKyLv#G+YAdm3Pnw)-93uzD&~E zhp2KwN~_8_+k;qYuuT8zL&M4AS1ch2M>^a_AzG0tf;kh zg(y@k)MOCphhdLG9Yh)*wvn};geY$}I>G5OXLr7=aX8Ms{JeN)CvaSaRR6)wH4XxA z%Aq^#ZR~i!FTK51kq{3&&3Mxg8j_q6$`5tfl_Cla$~fvkhhy-7%6@0vgU{2>jZ*FlImQFW zrK)6MCo1MN)_7pv;Xc}Wdm*d^NEy&B_BeCI0}bcrby4AAr=e2D3wYr78Fu7S>$%pG zZbrJSg|F0jAYt|#4>*TKL~JMRTUX53?p}5RCkv>zD!=mkbH;q)e{q5{BzjK$o!}9( zLAjEiQb@>mwpjG=p0BjOdwdzq41|FrEgD&XF3pvQ3g|#*FlI$)5g6f>1 z3;wMt01&W1H2xI0Xjl*=JLyp(ln@7~w_`h$@c`(AiGLKF*kI2oWeMKYseV=<`h2O9 zWuXo103N_@gF|@=w*7b8RPJrxJ@8r-+yc!by1bSP)?u-r@9@A_N8-P&rY{dC=zuM^ zyc1clD&*qy@6y8YOFXdMT*obqCME=kTNgb8+k~)ri<}FmEx0ShiY?;c8{#%VVi8Of zfEWx3(rN3~{S$z>jR4IBRq`5Cb%LlQbShB4mB{;7&E@_GR3G$z{{DY_)&&S(zI7!e zApyWwu0;QSjs>pOg>gw3*?7UlRa6ZhChrt@R_`W_{qJHO>|4!2$O`8v67*fNvcc%V z#=$e`Gqy|(s5F*cPnI>ny}}R=5LcdV2Hq9eu=Y7_ZEf5Q3G#RlbA05*Cck(x;^D`u z9+10z#B`^wp|%m5^D+LhK9KeJRpF<9$LS8^=v3TTR9aB*hpI-E#bhIOl!_Z z&%fLKtH2p$rD1vrfAtPC7JDx!`{%dp?N;kkEY>=)X`A`@wKcqdc5AyL_vL2WRQjnY zq;3l9d;DShn0|J}@9ggpXH{)y>w+Aoa_6hEL;A&E5mz3BlCcuoX+P#+;}}ZHyFQ5^ zo=!emG5+0o`sUWURq*j4=i&7BhX6d_)5-{@{#M0@9kHYN`eQ`~4m{BO<ijW@*Rlko!t&d21{Pb=iI0^YeQF zU|3oo&WP2vZD7sjz|gs!>d0o<#NY4i>=E#N2%KXST0eHUi|#$`G+Q`1J5$bUIQhOk z{6vXPxveEYZ}bh%2gMXAkw0RE3<8>57S+u56`-~y87C>x`fsDFDAA&_rTiaCIOF3tp==rKnTOJ2Oe0i z%&x(SaqqDrk_S@T=rK(|7b(mnN)BVM$TG?LqG2g}qh#s9sev^JAO9djD|RHW^;z!m zj>mUOd0njjkDvz==ZPt=TMJsYC*6HJhL4X?*jLos--AOE52L=2mfxCM<9@g`S}r{VD#HMANH;X<(ccwpgt7n?_UUK@c2p6vYH zK57bPZD}RA`{=l(xs^QN{JeEOP;oYJ16N|=2~T?4lfYZ7mHZ|q>=^-7asM+~Xa_(F z{h2u}J&B{vaN)Eq4M{w1vBvI%jI=g{oQL3A@PLP3!}6$N z-=8jU!_REmdEp+ek^_vYzl(D_$Ci~?FE3xJ`RjLD=JtXX9&P&%Vw26jw+erMd<@PV zMAtJLE1nmBliMmxmmZ?o94$!BsV0`o(HEfQrN7@kj%no5l}nYQ4|j&YRbRv^7tZLID{rEH|32&4Z6h^3Nel=0OMH53F z=yZ*er)0ghI|M{{ho%*e1M+GE4>jxRq4UZGJdo*knh&jat@5+^)!jXL9Bg*k2PT`Q z^#Fq7ZJ*Qo^VZ!VXL1F{Y7#{(2tNB_DP^CZ*G+=gu;aY?-t`Gh+N$Z|Dg@7HlOBZw zGdyk!zc~*UjQV<$ifxmn{8@5oEg*ITUz7A=%Q!|aa`u1aDR^}4w)QQ6!~Eg>7E`e3 zvH$kT`O9Zk%KVS;z^*&zfzv3a4IrAmg1(Voh8U{`uId#_1rJ9=_tZppC9JC44Wo66 zL`FHUxU||KkTGA@Z!mO_jla>9rY8hACwbUzTAsd3z8x~#UFq1}YCHQ^VgB#pQLyR4 z`u@t?J_xCsi)X7Ra#-CkJYWt)8Zy3dA~PT>7urWht54-mcy8?NdH>nG+M+ zJoF2GbT)Uqi6a5AqCwPS3riaD^ygz}zFsE6IFn2TI_mgNO*{-HM8tiwnuSUi0x@}M zJRm!i^AH&2aw4aqAcy%xr8x5a+0w^870=f6ygQhd=KEcm!DkLkz!RgLrt^S?fXU{> zKAA_Yt4DZX!|#NqrbBR3Jw3rLnzn>4yoBB5sR>a$!8kOM3k?ZJlX}7pJ^A$-!=D0A z3LR9{%FH=-c}fiQfB&5`#VO$d&+JwF~ST2Zw$Q8!V|1aB*zT+E$pei*~(2u$STPymt?aRUBbS$&-;YWL^JiKxMC69Q76k;riuPu4e zlLve+-?w5AZWp$;^JL_^pk3u%jTV;Zd#uej1CUM6{ zOLt4Uz2Igg^tqk@PjXvS+{)vdsH>99Gx6-+5$|Y#19p08p+Sc?B3v}w>d`dg&pQid zt?eWV-DIq-flbCF?qP3Jb7){HomE2A%E9rga{js#zzVdwr&FG8_B_$;!gu8>Yud2%3 zZ_)J+?~MS~z%4K~@WAXniQwVCvPH{X(X_IGuAF75yPSalp#fZ;`9y=W8%KK~V6KA$c&X^}pcu}ph0_7~q&@hL6Bp8spZy=6Ltcmg literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/headbg2.jpg b/htdocs/theme/md_dev/img/headbg2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0bc44f0ea99e8f70fba0c19ea6015d1a7693821a GIT binary patch literal 30553 zcmbSyby!qg+wTSj7!YNMp}R{O=@`1ZB?Kf@q(M3c3F#2&kQh=Clu{6+I|UIXr4f*j z=Ir5l-uL^?U+22cp3R;eYu)S4-+iyOnd_PB1pub5tfmZLU|<3?;0L(=4k&PvbWRCPd=f|*LO+$ml`X&SVNozEedvM7QS0fbJ^QKi zTG?UquH*NF6CYQ%;*I#N2AYG9I(~5hNB+(^p6}DjbPU(?jPFw`S&P1G&DUPYf9`Sa zd6F-*ag}_xzeHBuijOe!@RLjy>T!uwwyBYNB}3smmQ3Cz_PgqNSrg7I2ajSyb1|Fv zb=g?lXHa@Is|JBTpX{9MCR_jTmK+I451h}|*a#ZW>`0Z^5D|)G|8_{@IS`Rx)?w-Y zq}85sHNUj3c)y9O&zdlMV?1niUt`1MAeesg()kqiCUXPqy?SOfujMTK@uzeDBS~HS zzQ$^g_XYTDDXyF{2I>JiO3sEK5LyKoa<6n%qSoOM&wxN0%ZaqA!M4rG=|G>#^k#Qdu4q>G}nbR9E*t;kqEM3DeB15@!ibT}^Cu zd9PROYM)5i*V65|1{Q)-o`}z#$};WN?b7bgld{VZOpK{`t$iB$9k`#okU<%utxW5f z^|JWDjd(vGh!F$Lo##G$HRJoT~BI(k839 zFw}~(BQo@KxYft&9D36YjZ-n?A8?QqxfobE-}8JuprYbY)ruSTbksjB-<33%|63Z? z#I#u6@fPRLzctLsi@5<3d;2N*Wrzg6gCLPv$D#e8r>TEJTn_vl_ho*_K-v&H`JJb4 zp0-SAQC2+xfMjv}mbWka)ys7;?&i^WP77s&BbU1U_%Z$7f4BV4a;s5UpnK;@zE$4E+(6fQwZp>=KAp_XzKh6U z_H7@l{N$xe_SIi!Iy!wPsb{hp6IIl57;K|>V`}BXDRZ+%W@>kbO5{kh)P6sn8m%Tw+gUNCVT5)%-NjDu3jvw8?tt{LyLKK@scMFOP9|Use_UDIMW$-5-eXiFe@nT2sgHOOc`&|PsPKJ!7mr5vMtcJVHrwIFepkd4a?ELKcqfx zv%WlFlFw<~@vOCN<6hA4yNe6hC2ninC}jb`Y~WQ{h3}8%o%SBdFR9Vq^KT|xFRpZ~ zU#~oqChP8Qb@q4U({kGP4`!dgXdAkG?}=b@su87f7=MiOmir#7L}j|ZjRa&5#ahb6 zs>`m%Cgv$r<81B(=x|8?bUtHWEgjewJi7);gkqnCh>}~Q8UiGMAsi=zz8Rf_XJwY- zxyNpcIr}406Vp3Of!1sNtSvBge@rGMo_&&ic^+c*_^X@4(tVat>hz-eM^rCO zJk89A^TyNlZSSj%vYL&O40V*FFj)T5=m!o-m~d+mjAeBh9%yGD$ljHmyp)=(Ts)CF zn%_j#Q_DsU^(3?;Xda%resgWv%~=h6c$HY$#$$J2Z(X9zI#Rly^U-SZLiS0K z{#G8+5Wq|26yd1Iav0zeg*5h$SFqusNbKeB#}{`Sam7%xl?^?_AAdKiS^THS^H5gw z^zTlU%^w-FkkKcAuf!l`cu2zG^w^_`*3Tr!aXQZ+BrsOQ1RY!JhQSDOaEkQ-lzFN!D zb72{3L2WTla@w!oHyW(+ntum*Y?Yq|wh~TXat7`uFDFJ!O+S~+J`6F~{iE|`qiS!~ zUQQHeb?KS2U6rF*y+GYiKFgXCU5Y)<%A9XHN*fuQich@ES@nd?-dT8XZdB7Q;BcZR zU6%DgR^xb8JCA5*kilS*`TMD4l+p)Tod?e$Tx^pID(s>^IG<|Kk zRdTuc@Ap>8%d)Y(o}rBo4yPsJnvft%k7{o9F~f*hp@_V9= zp*nC)do`_3`$OJpwR&vh=9pe18YAg4^lP$DEaqf<+qW`){Cxyc=5oZ>`K0|^q{eU9 zZ$wK9*^=ag%nrEC|V&6Cx^UDYzDe}?|H`n(=VY6Y{bLxmm&F5dLvK|C$k(^%@6t8E6=Camf zA7#r>(k}E#)kRe z#Fp=fc}xoq^WBlU1S9nh?cP(2^~>ArAmEBTloqMMFE=-Y#1D18XI1CYWy5Au6ErZG zk^@LNvb^xpav@!8x&XGmzTMCUVLv@169ifanlxvB`4Z+VIx(~!H z_QVSLzxNtuZ{40|0C`EdQOab+5}HfkfG{0n*a@qBP=SyLbHbgFL5R@8#vc zS=H6VpMdmFb6d<|G-_hIBknCKc8;^Fe@`m@%t6fx*@_wc#>uY>kZS!2`kA+?)2T7B z16F<1*`XK`nwSquMtqL^#nirthBXcid|wUR6~2_2tqdh0s2NQ%&W^;gR~zGpKX`<* z_>S#~=cg~GqL`_30M3FdzE)%LI(wUlPLZ}}y5FJRtk?3}TmV!@E=locVTwmc|2L%x zzR!WxXKM$l_`gsEc%e0-coXif@-YoqZupRXO#iJ`zx;q~?Z!-b7XW~)hEsVBl30q>Fg(Sy8DteUd4g=d$v6rXQ~m)N3Npbqtpqn&;Fhz-gl(6m_1MNR6JLx)iYpN+4XQM;n{A9 zpri`rw57wUqs9Kb*pQ?6!@su&w`wwFn&*Dycz^Z&*t{#A=NtO7;iY$7{Xxe4uWOX^ zyv@IwGP_6@Wy*V~M*@28PkRnI82fp*G)2U3FM5-wefuM~Us!T;wW1e|$r!vG8jCb(l_fzu2uG$jm7 zB4R8UBZP#3iC;hvflVsMtji)F`tM8x0~^!z-t_yp9brxT2TC4z>Ah@zk~=(IENPYq zs-sDmTvhD=q@TUvbJ01OETbv=hrBU!_KGXjo?AP`XL>rt@QxPM0RnpxHuKmIbO-d> z7h8!~?(Abs=PtM7o#yz4iJ5zWuEXMON#a#2>FiaVJvT2YL(+9fHN4v-`z839(~?eTqI!7 zfo-Sb5Pj~4%8Cz`uP;BvAEPz8NDhzYJoo!c%=v;S^{!^(ue<4PUPBJ)qh`ahB!8rJ zO_~(#W80a}s(8pN1`pmRZw{xU*l-Hs!bn_>>n#SIK51ZYMs9kFwc2z2rEQ?C`@oD( z%As2*A9?4Se58);h;v|+w_^X8V10{*+OZpAxHy*!?rfX}Pk#E%VvU? zUL;N9hM)?EN@uBONS3*mWFa6lCnIq%&vKUhJ5mgwI@D~{rm1sF(;8$SQL8s@2?z)r z_K9PYXq3o0I2z@B37-6%r?=1sIpL(%sqy7NVAdB@GZ@Ympp2EAVa#*k4hX#(a;ieA z%ezVs5K$w!*sH2v}?YiMqN z?$Wcw{bqpVV-n~P4w&uin-;zXRvanE;y!lwElaZ0dSZ*BGj z+9UiT7U$F1*f>w5y#bq#t!A#>&+_q4TZttu(C)&M7wOTmHII}wg}^NQE+$mdhy)f_ zuADTnKUe=Ug*(Tr>mA)%)9-+!603l`wI=afjlY}joF{B)Z_$9Erd~2Hz^ZNw|^y<2&x%%en|`FpQ+T2I^lnhC{_CQ-2vJ zA-1zp)L^;obewO-n~N?v!Y};<((c3eF8NmS)t4pCH`@GKKfq`&ao z9m!bgU-Foy>7$C?8sm@Yh6^Wz2{OHiPavnN)8)2co*SQ7E&g`PjINjDTbwWE<^8zW z`#HfelSd-_4}5%I-;W`5jP4b*cfhemZD!En)Y7NFN@cgWD3yudHGW`63=1~q@4JZ5 zwYXH);}`!T;S&>sVx}6Ga&%LPk|oE*Hs?0iE2=GXE_2#}d#d$X_Ocl?Pc%-1S2Gl< zF_dqc4Y9mTF$Il1%-&74XsRy)A*$E_@zmhkEpbTya`U+PB9z$;fvp2V2pT{lK;%eW zgV3a?v81@87_>Ob?e&63t!;c-Q3)=l1GYmy77JNEG|;TDQa`62igV3^@Z|C&TTO8wmeiE0oPRlHF-!PmYJ;B+XX6tG`zNn zXr(B2Qg5c~F};FCHPQN_d8~A7m(0=RGdjg*0kOR`k0^Jh9@sr@B|L~;wN0&L{86>31H4ozz@h~aochN=_O{l-Q_k{h zK*8WEL%0YyA_N}^Q*I*qjSv#k?DeH61J}SHZV6&~LrU;sxw%;88!xxVqk?cG$5sCimutlFp!Y@>@wf#wSf3Dgz^BQ<*XCzxU#VZq8 zO++;=L$Q~l#;e9s&INj*nnY@fA?S`TUq0<(IZ;n>L(mbcNkn`Y2d%ALoX%SFqabxE zu%Pf3iotTST)(KkE=i>c(r;EHb49`IR3n+dt6}-8k7X0$Mc>fq2WG0vXz!YwDD}UR zg1@n0Cba7LF$U|Of5No1r@rSyWciXaKN&D9dXgULtHuFG zmQU|1pVoL?nRZ##mxm9wO_LK!XsS#p)DmI9drVPKvL7Y^SnQO_IV zE%Qvoixs|0gn(Cu>g} zt5prscoylFn->LRz$99sm}KJKh~~tQ$Oz(JRBCHpB(6>Bsia;Zn^=2Q>8dxIXVh%1 z2MIFT?%fvL5hwolp!1< zF9PxNTAA6W@_VI zeQ$QE74Q-PfhlhqmRp+jqO*Ms(a`C_u`^3_k!+;bjuMGku7&?PRXN%vfGN7s%;^nHjxac}$a8{Iv9vb&n zEmP-2WO`M=Wr?f}TE~PA9Hlg%U-JtMbe?i7jaP7uk-#(9j33yxly7B}uJ0XgG|io8 z7pLqv|8Sw5XfE^a`a|Ap%_x3rg)gaY06gqU{cikS{)0C%OD77K`a;K6jkRX3oP9+> zNj_3TOeKT0Mr`g;ez=H?5K87fRWfNl%YJSos3A3RJBS(36 zT9~2^lmQ7B564eXa{65<$nD=nQSI*u<$h@4pd&xzwmsW2 zVtMPGaQEt}UF~EQp?%5}(dKC2_YM^2aWS z8?zo&#SLBUMHR86ui_U}N6cu}C~6n>9H&Dz&Dnf7f4EeSzT=3^4i}CZtthIB?Soh6 z<>Lz^MRU(Q*DjBzo%-|XzL8~aY{r*|o4OXqD&m%JzSes4b~H+K|1zl$+gYSxnlTZ+ zNHpXL5UWJm$b(pSvr#Re6FHPo=ZV^;QFA!y@#LxUvNsqA={zNKQC^zW`a{wd2yBaS z!7@r}Ck7XqPpb`!lH{XvDj$L==q;*>3&m{@uY^uCFbS%2(e;}3 z#()ObEjwm#^(p_+U9|d0@A7`h4~5Z<17D?u{u7=LIxB(#wA1!(7l|HK<@oZkk@zvJ zNViHB)%aifIL!$gXZ8N#!qu!DBFzz#ChyCF%8u`xy-5FcKsLBM7l#z90IT6^Kz>9r zGvT+5;K$t+67hNGdFLOGke+JJpwluWLia!|v}1#@3r?7lnq$&b>W|zp>yKHEtSK0b z)7`nWONLmE^rggPj<)X)PqCbHjYIEJUDUs1?^lyKEQT4kB*sI?RfCZdmtKRVLdU_$ z*n$!i0Z;MWPj*D85+VCK!X#iSQ3A{Fba)9q2odGjurgu&XfUcGiCuVE^kZYI3>u(u zb+yZ{JzBBT^>Ze{c&@{2NOLNOfXf6Z`GQ#W+g^NH$$|oA_$cY9I*q0-t1{i~P<9#Pgc2XtxOC$3f_wbfRp$~{NDcX%< z=sX)K-LPp?Ov>fcpU$NbnVgicksSBmAf zV?U@TSp*Fy0nX&OZJ~28WpHNv%tL#*Lj+S)!0RV>nj3n2*i=<1km%9tXp^SkH;YgS+ z>ZLOmC<#kG1;g4fbP@(ak8!$m7C4c%=NW&8=#vD+S;-e;SnGy?W;t4f_#x={Rld*> z>wNAG=n3CY`SVu!RZdw>NaeZ;M}h*{y3pDBa)>LG!KC)imi97EQi3WRiT@4$*6(Bq1j-kYx&w@BXAs1in1!HWtmZoB1D=TvomEvgUW2?wWrBC5{cCGAO% zP8!h~xRij_5|{xR8)K(oDse=A+DFo8PW_Wq;$Wbn zf9b%9cJc@M)c+V7P(Ql{9=bsPyvxx4HIO0StD)w6m-P;~VIyf?!lNFS!`M{nH6xyJ zGrdJ?xLh9!N9R#)Fi_Ar6~|UdT7-ZrJ-Vm_zXYW@m=S*Azv6D1zDpo2iA65}>60F_ ztF+y+&PR;=NhF8wkN z57RW(J5pj|JZeIX3_D3T0>HU^hQC3c-JGK-BIt~`5RgD`?qzGL3nT7jQ2zMIaymE{ zNKAQa&#P>FMA0vW%YLC>EvJVNT?1v1kay67_?{~%7b&}y zL{J;@qL_tf4#7TQs{iPkx#LFT;3^avp8jWes(88Z8_uZF%Db6jflr-bhX0xfeHXoh z({vEI(*9RZh%*Q;%-!HaDP~=8EU+)rKac(XhdhJ`h3>o%1`8JjIf4+OD|?QAw1oZw z9nkPU+SmUFxBs;TSo5W!YrY$GqQ8<5`jKeW{(CFD7<86@!VP^J4PO5~LSX-=S=!A= zs$5`0eE5GJ|A)Z;B8~2ft)BLOwIJm(49EX3O|Vn(zZB2`{$Hm4ZIFBo{6?>Q%fkQw z3mY4P4aLL4{$~XpQvd@-%p^#}z{oF$h0xW9$m_W$lRU7o4J&LPV>WQ}2(Nutw@50K zq7a%?H2&{`IF2kPPl^0*Qu5FGBN%FdxF(;OrEqpJG_ZO0D1_~v2H@aKc3P71rfD+L zln}Q~wcOn}PR6?h`}{U0J|(jr*;gi5rfG%CcS~p>&F+!LoJ9%6No|orL*q=G&tuWz zI=p^c|Hl-fTu%tZlV!gW(O*Csevwd)$HYU=+8G&0D3%^)MamZ%Y(Qc9oI&Pixf&G{ zQ^8M|HkdfA^jESiw}%levnx*J-w!FAZ22Qc(-fWKgY^b~>lrE&lM%(lJvyK;+)&?) zRBqCKB44J@>21O_Wwc7rg(I%P&*`TiS??l1{9$?r8e=}U7`YuzUv66*u7yqn1xy7I;DO)N=0`t<& zUsjTbLq0sInoOd{ovhr29GRmjcF=_R&l~a3sMi_$(FuYH}^J9i1phK0mKG^oShlnrH848+^g!sOW-F*W*XlH#5J|IJ{598A1`= zjZ_#LIO)7^r)Z;5%AZtwM^9L%j4fH~Xlx=^H+u-$h;SES4Q9&VKyhQfWtjIo9qbG= zl{Cx0y`D={4tu#mE&gFHV!$g^(G?*a$q?~6qyN=2?IgRPc1|Vva%3d3h?(NTqpE(S ze1bfhq66z;wv~0WMI=7FS0H%txl4dbkJ@ImhUZyu{K;_#SNya%vO7CT(eId=PNxc% zR!l@8uNEh+sO2pY>+S6pTceS0j4D~f=8uZVXl%x&5VjSdO}O7^x&5?hZ_U3Lb`6vw zG?w_I9C^RwZ$Vf&uJT`#_wTele&(9;l)L`2R=9*A!q%G0hG?1dnW8drM(9L=MaiOY zY@`Jlor+e{{bZMcN22f(r%Bsi_|rZXwevJhNEWXm*Ty4jBINk?HQ?rv7JfUfMW(5< zB)i6)D4ri#6=lmLBCr1?S7Q^7A1Pls<>c&b;aVu*M;W*5=5aYbr(4sb{F?06ljZ@- zQ&H|TdDa$KO#L4T=7G8u*r@K4L}k9TS;D&$x5-hAoHnCIIfbs{oc^l@1r-;wtV?YC zG2QnN?|=PvPn(4~$Zgseg--P?=~H)Xh$8uN zMqfZ3a&x{%Ci9zjpIdVvN05=x9WqHyag4l5q7}E&wV!CK7?R)h3wLX@(AD4b(3<4i zfZzFwBx}G3Ef4cjhxh*SDssGUS3NiHS;Bo~^C35`UfGl4>UqHrPG6i4qhBc-skVpH znhcw(Vk1plCfHmyOa^Zu;+E+uv3XI3q=sDlC=NZnNcpmYvWSVKCXEc;%<+A}XoN=Kv__SqyQkjw zyuunp^piLr!uM@Ulp6&0FL7#P$rTeKTOt#pHCZ`OM*i7pu}Y#FpA0r8*(|!I-w+{7 zuovkD%1hr5HB_uFKN(rP$|&WN%h-AF?puvITa(5lN9Da_ZCi=T4OF%QXWhnPvWHu` zleOENXkFvo+*8g1r`n=vwp5_|`wL#pQ%!N?cTsg4T|Lfx)siXvIs@L^VAcbM?#1sH zDo*o7U9HR^wGn>vI}c)B`qqAZxclh^rp25nguux`>=^2P933Ar1xr5?r!_jW)U_7o zT!iflKbRx=DT;hD^}yIK@-O&#a7x&hA$pFp`Zw;$gCD3@z7mCa$fm=UaiXc9+>59| z_6QFW6^?8*omsv=0`vrL7U#cQDfm2*eH1$o`?==y8t4*il8-qU|a+E_%aaqAoL4| zL|!QBloKN`rELH7#_6xc58pRIK-TGm;S6F$uO4 zYTr@xmuDpEO;GgLqlsR2FN`cCArKiIcm6^TZIrFZ>Q($5(zEM%)$Fe&_R&6SBJqz8 zeVd<@-qkT}PF|_MJTs+p-SRaMOuzSPQZW$ldfF@#=}10#>m@?z6F;;<0{6LSNL#a` zai{Cg5x)6s1GCklE21<$cep>1+fIZj`{)Z@OWtFCj$$S%)q&be7N!YWEw&tbq75`l z9?TO&y@@~ZF{N$`FT&zlWGN@u%5;)PMt*Nw7f&qy*rvtG%WtM{cDe?n%-{Uv`<>>3 zeInfEs!Z`17&ViBt|%wpUvx1}KxGiAAN-Kb^4T~b@wGCvPgMff6yqeQ)T;-3M03WC1uX-9 ziO9Kry3>Ps@k#Myx1znKV=R&L#0&7o*XR|M&Y)yU9~tJ!Ct^*@G9%Dd zwrk)jzu%!dX?ZV2n$%r{gVWD5Vmr#$Zgl3bk?h zfq%ov#9vNP@1$x_>M<2o1Cu(oc!$sq=#-4)kfSe%*Az9-UZlC#bY~#OUt$-cbb(B0 zE|}Dawm`Q?rpNRip1fk76rMmTsFi)X`e;3|aCKSdDC-x}9P;C_@_`#XsP@*IanW@L zC}%aK!&@-TAJ@9jKQ<_Cf`RWdH-)2Z&}ifEuR#Rs!)Fm$tGRW>NA1pA z%gk)10$DumUsvu)*eA=p!M$M0tD@7^&877GHL%sSJ15T`an-tZpcB<9T2_04 zcD-c!u7rh;&OOXhR#$F`=dwYUuL6_lho@HU|G4E{3=%+S2H7iZI3 zB3XMP$5M;rErVO_Z(n@72I5+>JJ{{wTIdckZ@?gsjq>-NZwISDhVOLkl@HI;znUjl ze3{Kke3M61?C&IG-492S^+T*+AH#wr)k3|*=>76Uo{=|wazjqs64cT&u-4qRH?m#SAt?NaWLc>*x&JtD~~(R z|5p*GxQh9^6eB++ilm?JHk|KE8?|=FGB{rYvjT6jSYI!o2;YkS&NanI(_J5%g;Unb zF_HE9%N^||85*TS6K8C+h_3AVpIzj;ETO*AzYvM%{=xtw%^@U1#^kI?szm7x` zec747`;qLU_}51w)5jrrpv>JtQC74;`O!yXbVwC2sy~Lvfs+TciLuuj>u2#q-*nsW%1k}*f)JP>fJ>~9=W|8*1f*67r6i2O zbz~pDP{GQJm?@>nfu93+^qCjxRhVS>P_VG{oj>MzNDpPm1q-8!Aw+n;>( zZ2pp2mU&w65?` zPwQT+enE*+@3~E8ww!+Ri3%qM)<~_~Oo=0NEVrokqCSJ-W2eN~zZ+c#V_L(1=TwSS zn56ks+`4*xL>&1Fx5aJ5ee4*Scr%0!?~#b@(5$t65X6IqSjy#@qgic@#s{g6=(V_+ zNeOJHdm$1wN)8Oj3ElDxd?&*|O(H0MY(Z1R{+?;|A8OQSk0z(ukzJ6u58G&`3my16 z)F{ZI&aCR|qte#DXNM=2`!qK;Id_?f3tl#RQ#bb41gSm0pON48>nMc!T+x;)b$alk zwwl&v6JM83>e(>~g_}9UYDYe434euxQx9WPt*#b{58jsgQt)@5TR}!d6lcoxa?zKh zcPO^tce$AYEh`3Cn=83S>2cqSH@){44DRA*`TNZJCv!3lsQTi0yko)hZ{JVd(~Y@Q zb{`aypHj8tCmzscZ-aKLW*~n6@AnqtkdLl?&MQeKR#lXNo&sXVcTDm&|wVR(DT6>OP z8_{L$(?#Embq&=13b_CcO+?=@L7$usRs8MU!3k~Taa>xv26WO7yb=#ie7~#vFkk92 z1?%E-%aoa$@$nV9WbE_>&w&RNsH~cP!Pvt3;KSGf6&ik%1uxxmyf_CTT^Hg47Ye7b z*UB%NP3RqYt)6QvWEU;E5a?xuT>~eHW^=zoK-rp^7eot*YlLw%FN6)jA48!JM2%xQhReLIR=zG(UBXE2=q2Uoy&mZl5; zMVCXzJlS!Vhv~MCj^m|eV%(nd_EkRCHSnfqWM}(+e5>Q1w$y{GY~|CC3vc1^Sc9T> zNR4cyPA`#8GF>iweb9vuC8$4j7rl3ZN51bVQw4GYzw~~XRrqZ!e|dTh{Gf!zsu-x1 z=K9H&z5DsM-jyxBWA1j(xkkc!>agb>Kf691FFm#SgxdJ=C7Vk0R>&*RM)A~PuU%C1 z$X-kosQp#ovueZ%qDvij5~jk*#nO(DtH`%8*o%f+C+p12M_=7*y9PFDa;ztQh>`^Q z#1k>GrE_aIMJN+pO1+X@iJoaTwqEJ<2dkr-So&W&xI`r=x|1-BvVX(9GCdw+Dq4A? zTx4`FKwAFIub=bll(YBZsf5ukgZ`S+1M6?)_#KeWV)TivtP7ZU2~=ROl}9c~t3jfj zoVlcE)te?-zD%aC1 z&NZp%{-f}1;c%F)B5}I3lWtUjVxhVrgEt2$gYzW6b?72Y(Z)>ajq>eta@-HkDdY-q z^mN_w-HX0T`E9O~Wh*`CXL?S-e9IeOm%)*m0zXR6seZQ*|57F4Ga;Rn+x}9OH%FH4 zT?kL18#nZoq)hoon@?U6fdt`4M5Z$SR@NGvPW5A??7CmlDiU2NT~JHN&8^UPdbQLX zX+$`;&)_;rPR$wmvqU&V{1AL9_Bpvmx>@1~X1yzvIR_=okO;>H2QI-;LjlK3Q?8he zHY`-6dM^1wskPJbj>dZLVsftlvGX8^D8F6U$8(mbr{4|KI_-;bTkmGs{|^xy;;Skit$A-}mGPIVm7j zmh2R*KAe>Zuse9V(*&QF{O9x%Y?Jcuf%iN31brF#_j}6if9aw}@R^G{2cNz8z?;85 z@~MgPFE|8x;I12X&Tn{vp{wlFf7nCwacigHUr`)?q5%tMWdkimYshPvW4;-1YIJ$S zdJ4K*8(LWO03g?B;n8feqRHOy3O>1Ea0lr)d?Ojy9Bhd$>nZ=D)D-@!=n~KuJJ`t)GB4M3Vq}-H@~dSx>e+KyxShJER272FTX`@OEP= z^6eXgS<8;!sC_5WcX%%PCr!q-+Ko2Q+=4n^u?_@!v< zzZ)>9(O!k=UKWc)eg-6a^#I5cmo|SWMExfd$N?bsm@m;($Bd{)7@z>KW;_5~Ij007 z0Mls!YXt+qwCR>=$M7QN4h1^FHT4-+0Iz_U4y0kI&<%FhrIJVRmwzw|1*gJW4**KB zN5JjR+gMNth2qLO695D5Y{cTwHiX{B+Qyi~C|v9YZin*YN#K(vVF01Tc@)@@y5DVK zq8~6`*(?EAVNf~xP+dTV02~Qmz~BL>dsPc;l{&2wFw{FCm_Q>S1n9~;6au3F00p*` zL}Bz6VuZ(`)R4t!00{pa`dF9)iV=_guXhhXFiYa)y$z-3Dxrk8i$*a*Z-)am?d=eo z_OQ^i>D3s_Wfgs=|*A9n;J?}Ba-KaIuzXp2w z5&%*@GF{LTm{5>m$gKkK1;ya;%bBy0?p*g1HxC$)0D2chx=nEVvE;8TF{8ptLTm~{ChR|Uc9jliUv1Aqt&WDf4gmM0)BW=C$Tcv!34DpbAzEgDssb=M zxjUqbXzBoc9RFwbGr|RoQPB4QEJ4$oy8zZ(^fwH^0j8d{wc}m`3u53kKN)}>ihdw- zTN9KHmk47OAd;Z4O19%t+#1az}5J+P5eT9*H%Ao8Qg_+1-EM}uGc^>n$(n3e< z)fskCs2-R7r*|2)%MB z^5~F_$|e3|WR^GsKlgdmp5LkkftG+@j_9Mj9U2VY(lY`Ghio^lgz{hdhl_y``~z$U z*d*lnb`kC|I)hRY6Dfo=1EKqajpRCcR}4iy)xBbTf*-pD55w0OU$wlNl;)v-H$US} zuJEz@;bLpYNyXJ;*6+3Ky8vo3{Ix!r%AV2F0vnGhWp3L|j7XO5Tkn2ZvF%0k-;2nc@h^4UF5s*(m+~DgBlHBV~V4*6Mb~Y z;KxpiTsE-sn7>;Ck<2R+6G>azx4y*C)6s~NGcISk$t3J1I}|Qu?vb(|CDfA9wN);; z1vi|2E5sGzuak$6!QD$d6mjIM23FPyw>0M#f^3BiBv8Yi z9mK(>==HmBc0rFgiJ%wEr;B>!eq0TsE`I|O8#2ADFxvxTSNJWD{X+4YYCN4rMLsip zaV>}_4`{tzD$d@wDUvu`GT7;08Q2XLRyf7 z!$z<0RxH`C`D`!@z;-u$kqMiQE~=gqzF+tf$-Fi=p~b&8^QCMCj8i}G4_g^2K&v(V zgmPeNS&((-V}yWI&@;c%z+1w6WG;dnUIGrU!$u+ycdu~B{VuG;Gw3B-emUgBm61H7 zT*3?sU)yY+aXi?Q>=})z#f3gwtUc*ky?=IVu;GwA^Xa-)gRRLF-?~{09m_+u0*g;k zB(_v0MQjUW5BB_KaP4VGFa?h2OFloKPW?(A)vi~LEwR^LoGNT(*%+|KYpnC zVC(222=${TprM_^bz1uSg6>1_{$e&hnJ+tjH}C;^EX_ceL)gx(6dLN7`a3i)lB?^s zRXzOqFt=*mhNKgPvOC_>lQ(q43kgQIy9RxBz56)LRhlQwGJ|VBOfMgGyH7Rjoy#j9 zidNCLul%KL?=q|5&hV(2F+6Yfpb4_3JGNq7Y1l2vic7q<6DP>+Y>OYvdtIb+7g}o11>>lr}{hd zT{nO+#QP)0XPb#sHZuMM#GRls{CL%WU|qmLDTUkG6F(lxCCnEWt$Wd^FB2%{!K+d< z!mY=UVc~ZOr^-mz>oe7U2i5T*TZ|6o8I8=Me<93wqy0R7Y-LT$#nl`FyJ#=jkra?` zDNkP6@YnL_Z%~W_PoOr;t_)#UCVy{jTMHFc>rW(_htMrQr;kD*uY$iIrS@jfID-xP z5R`w4Y%RKuSW30m;jwvQ*LrT~+&AIq;~rar`>ar3+4ksGN-FmGH)Jjp>lV*ppD49d zrWV5>B>ud&ZPB;^dQ1I{ST_jvycMRk-Y61_7yf;|@zt+$6NynQs7uFOI*%M7D@Z z+Ug6_mr41tFRu$VY#vsO-*N1ikr{EVc8g5EBtUxGOF+rYqv2;{!e)e{ogyuBMo5 ztQE}iNnR{%`-2>($`7)r;MMAJ6e6xjaS9A1rQ;4GZ)TTBk z4fM>O?epQ!9|8*6yr!>B5UT&))a#=7S4OLX!}JN${@3xBPEj{J{+%H8PaQLqLR=1f zP|)PQoxziwF*9^#9z~w;L$2v4-@5A(I$nU?{`RJK@XE%j-`AC_Ms1|} z0A1C3c(!v1QZVrrMrw=!%KWJGDGC?@`yyre#ZM3`rZ7$n58guVEje!2&HzNot8_l& zwwA52n<)okZZIi_*NG;cRt9^oGp&EA7X2$KXs?E6i=}Dvrg^IDgt158%Ga7-rcd;E z5O4V+VGXOj;zkPDmHi5iis1`jbQs2uFR^guw>=~VLB2o_`MI4Xkw;D9Rg4;k~t?7zkyT$g{r@E{0n>QCi>3OyCaxJ&7FjXu2wmMk{gAVJCb0Zau278 zJ||N4R#PVb5s@#2Q4-r^HJm6}1C$#l*4bxxJ4;9=9<>ubJGAe;4=<1)Zc7tSGkQVY z2JQ9%6JOCjTh|_#Txok#r48#aIEyp-s zulfQ7vsbl-b-lZWMxzdhXZ87{jaV-~B-f<+5{@^QS4NvYwV#7z%AP0r0A`@LfE?N( zV@1P+t7m-8Y98z_3KQhqt|CZ{((?z8r$r!qZ?5)w1_&2^S#a#wYw31m5EpUdk-S6= zLBnc0dQ%NF3+X&Ak?~pWi-5F5-YbulsLQzfZ7 zC(ix&*&VCJhB$LyU#!$o1{wD8W~7KnVXsH*lNWQ+r-t&a%8u5zNqn4KJHUI7lo3+) zjFK6%P4{zhJwPxr_?6i2A9|1jrX8oezl2MQ8qWVV@@6=n-DX*3-l5ebi$mToau&jl zxnk)D9(@o`Q;1tra3_{q>&rHmUNca&-sCzaq_;=pU51(eTG9D@JP6cW6TSP2i4*drJwXUD1GlPzt}&ncV+G_t8((4aO)3#kX;=>KaKh0 zHrLQxHGq%o?CBYVl;krCD%Xm?)8sz(b4E{nT(ljPo;5kuA7cEP8Iuj zTBz;USP1sXsng{$H`S>d?k*=IdkwTw&Cq}Osa+xl-<^aKVvO5wO+l+6w2i%JlXGhu zAr({+5ZID+A8!5H!TctWJ%0T@6TE%zDHf!ryT&-pCzHK=sFsjagW5w&gQeA4#1MvhKjd|e?1k7uV@+m(?%4FyzR9HBzXfyoeyH~-b6uhR-8B5i( z`&4q)Ud}0#+xC(ao`xjsZ^Y!Mhm?H`7YZ#bLBQKBfB~9ftgdd8NObBcwH$ms;-r>$ z=q}0$f2RXc__^~$X%pUTnbX0^aWb*&aX*hH<^-U45CUL@B0YKm?t_9;g+?576arsn zO05aP5~Aznky}m=EEmR@^y2G0>2Nit+o2YyQK?KDhDJzD5@@%e7)rwM?LWS1EjQ7L zwAJ@ht$ZmNgEsSuQxCGepcV(TEQ34jOkg;#$OFHd3xs_Z*4%+|+|T-(gow1|$z;E| z4fimgKm3Aq?ix_{|0)LvO;i_BEZh=MM*LX#eSDMPz(%1o5?q=9?M`1k7VsKS!v)(w zx7UE*Lf;&H&=@gw;I3likiAq94qAZyzjvlQ}ay6YfRFAO|&K%OLKaZJ{T6(iDad@#YphP$O{*B4>-0*^B5wF z;@D)9@9F#LP&Na_Gsw73W-Jv%h99H`cZOZtJDk4obps46Bu9par9y{zd8iP)h-Bc_ zM72*$I@j<{47__bWVLc+YtnIVp@Vz%Gd7v?Vq=VJtA=&G{VERW+z$V-nD!M*Q>@>q z`Nq+07_C#Usmf)=2pBV13;kFF#fJqosu(%0#_b4;Ql#gT(VDg0f-0B=X8S50&IqNh+uVRpodJzJcg(u%qBmjcjM7wV%sTT58B@|!<>H^1b!WLI z>ntB@PViq6?Elh-)hnxR5V9usd5#rlD##uxl1c2g8ME0*S1v}>9sZBSdg1i*(^*q@ zb9YQWpj=6k1iMG=*s}I63cqH3_(+y z%;#TU9+J*64A5i8V&0^cU#78%KadU`EU>?6d=`Yw_+qhmzl?g?w9efhlKq}Z7O7uj zx4q>$?>n2HAqK6Zz6ERz1U}Y2z)==Ig{^npQ3Ev1giHIokh-G-!7Zrb2SrYXd55Xz z!DcrIr9b?!n0p8ok`CbBX?SH zub?(DjZo1;FM=Vdv_Btqd~Wp+z;sUAtkfz<7%jg*r#>b`0I_fU7{p#XC9H@gN9p}K zlV}dQrd;Q>GowL*;qr&4*4qn^PoitpUIUU2N#p}>!+(k_WL3$nba%m|HU_{53N-cl zBB8Uu$B^4A7WxkJ7ZiOpFhYQNX?l#rOFr`TeNAnp@i+nE?Bi}RTKg{$`d&Z`@$Mns zNl%+=)bh9?nI?H>^bD8)?JIgDn(OeRrnS=RJ7Q~X+Xa+Ilb|!d?={U)G?X2Y-u(c_ zt0I}52<^#CUfzT)v#rg#BN(PM?lI%r&ShidMJsLps*(S&NKnhk*wX%!bOUzatiW(< zvo(fA_?vvQk$H7}z8+2mmpCDUiA;03s0<-hVc=ckLc^KXrbXuio7S_2$ zzbGi@$z2g7>7Qo*X5T{ZfX<4J2UL)7po7&~!H}3QhBadW&FAx_iQKag@egheD4OXk z`#xWKH1=i{qI;G6@D=jsC@34Wg+^0@sx{~&mh7Q~Hdhge;JWibJ4(}BYLgADiSsuj zGFr#+J{Hn7txmUwqGtZRmY# zN{WupQAWUnYU`EI1_hI(($U+iF@gEF=^$12>hRYsgIp95t%%nnIrgNhV&*+xO!2xh zXq9OYr-H*~Ne{(0b>yGJV~^>Kum4j_EUIT`C*EUIu9pnMC~e#_t1*Dsn!jte(wL)6 z%w#%+y9R&{xA+REU2thlgRDcq(%Bj={#JQh2}V#%N7G%4|G5X{1W&p^(p)_dV`#n_ ziJ-YrzGTiHpWj&mCWkDDj9!m)t1@y1rz42>hEG=_(1#wN!e>v%0O+v4n-n}lnN@88 z+zhrAJL5q22jl~j`XSScnH^A_L*CbUO+72>W{&aH0Qd&Y_RO}ZolkkTuC{{7y9fn( zZlquMw?&x=%)Xzy#uS9#8R=IAdFdfj7q`$66GDyBYl+J-BW;!&lHuzgNN;#_aezqI-GkW^lb zP}o+_U_BB9GBcGr8Xa$zY{B#4(}!My92F+Sk#roCjcBPgaT$~jGv_Tty1m{FOWj!P z7IEl7T6q&!&xsB#`Y5+@JZL>%-5>Z#p5NNL4)dKKC)bP}DsP4#PDJJbzy@*s2EzNT z%WFLZWCd14#n1BZHYYt5KbmB|y`rcPRJ7rW+;H!VSDkC*(FVYbR5gs=LX-Uzr-S&hL#t*^SK3Ur}$*rx_k+i&b%yq};MC zgzr0e)!7}X{&YDyOMR0+_uk4T87Ca7SO3w?rwdD3cI+zq)% zROd-GNv5Tv$Q}STInRTZ83}f6HpY;flrnCP);^M_(yUCguTOhWJ(k z56Cx*=j8~j+HuQ+3Y9Me*W3ti+FPbvA_)~AXBO(u7HB15+$xA0lgB~WfOJ+f&}I_6 z_N9)sTRxnz3m$;UpqGFihpq|0H|`c7S@Dt-Is2kFjZ8DfB#pu25LW`AUG$$=072XU zH#+-l_{0tkCUFQnWb7KUslbcRWnWuLdmHnMtm$t_n}(r)ZB;rO5=`Aw+6A3J;?1IlGu>| z>UUm*!e2M`fs^SD(nIxf7SdCPzu3%*wV9?7gHA}YJ=x4oGmd(-iIS-4`$MU%o?}1%?5teNe}b<#tiOq{cww;ADA=tI@@uc-=bL3+ECuiciOMeX-=6@s<;u zp!;qnrTc&V(Hrt*AQ>3uAm@SN;ox)xbhRqXL%KCwx-Y5EIVeoDHts^$EBuOzJ%g!x zfP_l(oV0Y`Jfg3fM8t31kHjjn)U;rorpB>XMj*eg_z7uc%=NykfiH5h1_>k;M~=wSE>eS31@EThPQ7g(+YTkc2gp6u z`=3^f3W0c-kFfP+kQRVi%9-swP-p-jL{5F=tpVoRX+~l*Lb5v4#LFxyjWGn<|C0keWTxdqC zh|BYxDa9MJ6<^C^=@l8Vq>aJ^ESwB`gQUw$3Hj4Q5!NdNwc!9{p3*v{pYb2dKWx<7 zPf0{+H!+C;2F8>n&WV} z#au)zQLJEEiPfAee>Yt*?CBRaP9NXYj0opQi%vL4)X=ArWvj?fxSKGl0K+81l&@w1 z@Ap2v&q5&hNR;j?y{5Ou($zp-7PNee0oFUhvpHh(WtSO!#pkLb>=-V z>%e|*X$sd;Vb&D4ga$ZaXCOyHBPvJYkE{X1yQ{T;B0jkTi7|pE-vo%Wk~?i?78pJ5 zP}zcU2kNIB%p7wocoQ2HqRiN*@lj~WtV8v~9p=nr6VrUs1XTNJt2_}MFyR7HZ8w|Z zY2k_e0PVAx2oG9s;MWK<-FUJkklxvezjnCv2cLqxizi!x3Lh!lg6g~hEMf*v=P @@ -111,7 +113,7 @@ This page is a sample of page using tables. It is designed to make test with
-


Example 1 : Table using tags: div.tagtable+div.tagtr+div or div.tagtable+div.tagtr+div.tagtd => Use this for tables that are edited forms

+


Example 1 : Table using tags: div.tagtable+div.tagtr+div or div.tagtable+div.tagtr+div.tagtd => Use this for tables that are edited forms (drag and drop of lines does not work for this case, also height of title can't be forced to a minimum)

- + snake trans('zzz'),1,$_SERVER["PHP_SELF"],'','','','align="center" class="tagtd"',$sortfield,$sortorder); ?> @@ -248,62 +250,62 @@ $('xxxth').replaceWith( line1 dfsdf - xxx + xxx line2 dfsdf - xxx + xxx line3 dfsdf - xxx + xxx line4 dfsdf - xxx + xxx line5 dfsdf - xxx + xxx line6 dfsdf - xxx + xxx line7 dfsdf - xxx + xxx line8 dfsdf - xxx + xxx line9 dfsdf - xxx + xxx line10 dfsdf - xxx + xxx line11 dfsdf - xxx + xxx line12 dfsdf - xxx + xxx @@ -313,14 +315,20 @@ $('xxxth').replaceWith(


Example 3 : Standard table => Use this if you need the drag and drop for lines
use_javascript_ajax)) include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php'; +$sortfield='aaa'; +$sortorder='ASC'; +$tasksarray=array(1,2,3); // To force having several lines +$tagidfortablednd='tablelines3'; +if (! empty($conf->use_javascript_ajax)) include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php'; ?> - - - - +
title1title2
a1b1
a2b2
+ +trans('title1'),0,$_SERVER["PHP_SELF"],'aaa','','','align="left"',$sortfield,$sortorder); ?> +trans('title2'),0,$_SERVER["PHP_SELF"],'bbb','','','align="right"',$sortfield,$sortorder); ?> +trans('title3'),0,$_SERVER["PHP_SELF"],'ccc','','','align="center"',$sortfield,$sortorder); ?> + + +
a1b1c1
a2b2c2

diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 42bf78a0745..4744f7b630c 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -443,11 +443,13 @@ textarea.centpercent { .movable { cursor: move; } - .borderrightlight { border-right: 1px solid #DDD; } +#formuserfile_link { + margin-left: 1px; +} /* ============================================================================== */ /* Styles to hide objects */ @@ -1906,7 +1908,12 @@ table.liste td { color: #202020; } - +div.liste_titre .tagtd { + vertical-align: middle; +} +div.liste_titre { + min-height: 26px !important; /* We cant use height because it's a div and it should be higher if content is more. but min-height doe not work either for div */ +} tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.liste_titre_sel, table.dataTable.tr { height: 26px !important; @@ -2921,7 +2928,10 @@ div.dolEventError h1, div.dolEventError h2 { { text-decoration: underline !important; } - +.paginate_button +{ + font-weight: normal !important; +} /* For jquery plugin combobox */ /* Disable this. It breaks wrapping of boxes .ui-corner-all { white-space: nowrap; } */ diff --git a/htdocs/theme/md_dev/style.css.php b/htdocs/theme/md_dev/style.css.php index 4d3e0937e4d..7d171d25c3a 100644 --- a/htdocs/theme/md_dev/style.css.php +++ b/htdocs/theme/md_dev/style.css.php @@ -455,6 +455,10 @@ textarea.centpercent { { border-right: 1px solid #DDD; } +#formuserfile_link { + margin-left: 1px; +} + /* ============================================================================== */ /* Styles to hide objects */ @@ -1990,6 +1994,12 @@ table.liste td { } +div.liste_titre .tagtd { + vertical-align: middle; +} +div.liste_titre { + min-height: 26px !important; +} tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.liste_titre_sel, table.dataTable.tr { height: 26px !important; @@ -3019,6 +3029,10 @@ div.dolEventError h1, div.dolEventError h2 { { text-decoration: underline !important; } +.paginate_button +{ + font-weight: normal !important; +} /* For jquery plugin combobox */ /* Disable this. It breaks wrapping of boxes From 2632b8e25bb7a2b2e31ebe43927974a88f7450e7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Mar 2015 21:26:13 +0100 Subject: [PATCH 365/429] Update test page to prepare datatables architecture. --- htdocs/public/test/test_arrays.php | 110 +++++++++++++++-------------- 1 file changed, 57 insertions(+), 53 deletions(-) diff --git a/htdocs/public/test/test_arrays.php b/htdocs/public/test/test_arrays.php index ea0791dc984..7cbd9898204 100644 --- a/htdocs/public/test/test_arrays.php +++ b/htdocs/public/test/test_arrays.php @@ -113,47 +113,27 @@ This page is a sample of page using tables. It is designed to make test with
-


Example 1 : Table using tags: div.tagtable+div.tagtr+div or div.tagtable+div.tagtr+div.tagtd => Use this for tables that are edited forms (drag and drop of lines does not work for this case, also height of title can't be forced to a minimum)

+


Example 1 : Standard table => Use this if you need the drag and drop for lines
+ use_javascript_ajax)) include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php'; +$sortfield='aaa'; +$sortorder='ASC'; +$tasksarray=array(1,2,3); // To force having several lines +$tagidfortablednd='tablelines3'; +if (! empty($conf->use_javascript_ajax)) include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php'; ?> -
-
-
line3
-
dfsdf
-
ffdsfsd
-
aaaa
-
-
-
line4
-
dfsdf
-
-
bbbb
-
-
-
line5
-
dfsdf
-
-
bbbb
-
- - -
+ + +trans('title1'),0,$_SERVER["PHP_SELF"],'aaa','','','align="left"',$sortfield,$sortorder); ?> +trans('title2'),0,$_SERVER["PHP_SELF"],'bbb','','','align="right"',$sortfield,$sortorder); ?> +trans('title3'),0,$_SERVER["PHP_SELF"],'ccc','','','align="center"',$sortfield,$sortorder); ?> + + + +
a1b1c1
a2b2c2
+
@@ -312,25 +292,49 @@ $('xxxth').replaceWith(
-


Example 3 : Standard table => Use this if you need the drag and drop for lines
+


Example 3 : Table using tags: div.tagtable+div.tagtr+div or div.tagtable+div.tagtr+div.tagtd => Use this, but AVOID IT if possible, for tables that need to have a different form for each line (drag and drop of lines does not work for this case, also height of title can't be forced to a minimum)

+ use_javascript_ajax)) include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php'; + $tasksarray=array(1,2,3); // To force having several lines + $tagidfortablednd='tablelines'; + if (! empty($conf->use_javascript_ajax)) include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php'; ?> - - -trans('title1'),0,$_SERVER["PHP_SELF"],'aaa','','','align="left"',$sortfield,$sortorder); ?> -trans('title2'),0,$_SERVER["PHP_SELF"],'bbb','','','align="right"',$sortfield,$sortorder); ?> -trans('title3'),0,$_SERVER["PHP_SELF"],'ccc','','','align="center"',$sortfield,$sortorder); ?> - - - -
a1b1c1
a2b2c2
-
+
+
+
line3
+
dfsdf
+
ffdsfsd
+
aaaa
+
+
+
line4
+
dfsdf
+
+
bbbb
+
+
+
line5
+
dfsdf
+
+
bbbb
+
+ + +
+ + Date: Sun, 22 Mar 2015 22:25:26 +0100 Subject: [PATCH 366/429] css fix --- htdocs/theme/eldy/style.css.php | 2 +- htdocs/theme/md_dev/style.css.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 4744f7b630c..a6de7baa28d 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -682,7 +682,7 @@ div.tmenuleft dol_optimize_smallscreen)) { ?> width: 5px; height: px; - background: url() 0 0 no-repeat; + background: url() 0 -6px no-repeat; } div.tmenucenter diff --git a/htdocs/theme/md_dev/style.css.php b/htdocs/theme/md_dev/style.css.php index 7d171d25c3a..927a0c35266 100644 --- a/htdocs/theme/md_dev/style.css.php +++ b/htdocs/theme/md_dev/style.css.php @@ -1998,7 +1998,7 @@ div.liste_titre .tagtd { vertical-align: middle; } div.liste_titre { - min-height: 26px !important; + min-height: 26px !important; /* We cant use height because it's a div and it should be higher if content is more. but min-height doe not work either for div */ } tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.liste_titre_sel, table.dataTable.tr { From 5c36bb94f269deda3edbfe2ed7fd16172480d2a9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Mar 2015 22:29:52 +0100 Subject: [PATCH 367/429] Work on theme material design --- htdocs/core/lib/usergroups.lib.php | 5 +++-- htdocs/theme/md_dev/thumb.png | Bin 3839 -> 0 bytes htdocs/theme/{md_dev => md_exp}/.gitignore | 0 htdocs/theme/{md_dev => md_exp}/AUTHOR | 0 .../theme/{md_dev => md_exp}/ckeditor/config.js | 0 .../theme/{md_dev => md_exp}/ckeditor/index.html | 0 htdocs/theme/{md_dev => md_exp}/graph-color.php | 0 .../theme/{md_dev => md_exp}/img/1downarrow.png | Bin .../img/1downarrow_selected.png | Bin .../theme/{md_dev => md_exp}/img/1leftarrow.png | Bin .../img/1leftarrow_selected.png | Bin .../theme/{md_dev => md_exp}/img/1rightarrow.png | Bin .../img/1rightarrow_selected.png | Bin htdocs/theme/{md_dev => md_exp}/img/1uparrow.png | Bin .../{md_dev => md_exp}/img/1uparrow_selected.png | Bin .../{md_dev => md_exp}/img/1updownarrow.png | Bin htdocs/theme/{md_dev => md_exp}/img/addfile.png | Bin .../theme/{md_dev => md_exp}/img/background.png | Bin .../{md_dev => md_exp}/img/bg-bas-rubrique.png | Bin .../theme/{md_dev => md_exp}/img/bg-rubrique.png | Bin .../{md_dev => md_exp}/img/bg-titre-rubrique.png | Bin .../theme/{md_dev => md_exp}/img/button_bg.png | Bin .../theme/{md_dev => md_exp}/img/button_edit.png | Bin htdocs/theme/{md_dev => md_exp}/img/calc.png | Bin htdocs/theme/{md_dev => md_exp}/img/calendar.png | Bin htdocs/theme/{md_dev => md_exp}/img/call.png | Bin htdocs/theme/{md_dev => md_exp}/img/call_out.png | Bin htdocs/theme/{md_dev => md_exp}/img/close.png | Bin .../theme/{md_dev => md_exp}/img/close_title.png | Bin htdocs/theme/{md_dev => md_exp}/img/delete.png | Bin htdocs/theme/{md_dev => md_exp}/img/detail.png | Bin htdocs/theme/{md_dev => md_exp}/img/disable.png | Bin htdocs/theme/{md_dev => md_exp}/img/edit.png | Bin htdocs/theme/{md_dev => md_exp}/img/edit_add.png | Bin .../theme/{md_dev => md_exp}/img/edit_remove.png | Bin .../theme/{md_dev => md_exp}/img/editdelete.png | Bin htdocs/theme/{md_dev => md_exp}/img/error.png | Bin htdocs/theme/{md_dev => md_exp}/img/favicon.ico | Bin htdocs/theme/{md_dev => md_exp}/img/file.png | Bin htdocs/theme/{md_dev => md_exp}/img/filenew.png | Bin htdocs/theme/{md_dev => md_exp}/img/filter.png | Bin .../theme/{md_dev => md_exp}/img/folder-open.png | Bin htdocs/theme/{md_dev => md_exp}/img/folder.png | Bin htdocs/theme/{md_dev => md_exp}/img/gradient.gif | Bin htdocs/theme/{md_dev => md_exp}/img/grip.png | Bin .../theme/{md_dev => md_exp}/img/grip_title.png | Bin htdocs/theme/{md_dev => md_exp}/img/headbg.jpg | Bin htdocs/theme/{md_dev => md_exp}/img/headbg2.jpg | Bin htdocs/theme/{md_dev => md_exp}/img/help.png | Bin htdocs/theme/{md_dev => md_exp}/img/helpdoc.png | Bin htdocs/theme/{md_dev => md_exp}/img/high.png | Bin htdocs/theme/{md_dev => md_exp}/img/history.png | Bin htdocs/theme/{md_dev => md_exp}/img/index.html | 0 htdocs/theme/{md_dev => md_exp}/img/info.png | Bin .../theme/{md_dev => md_exp}/img/liste_titre.png | Bin .../{md_dev => md_exp}/img/liste_titre2.png | Bin htdocs/theme/{md_dev => md_exp}/img/lock.png | Bin .../{md_dev => md_exp}/img/login_background.png | Bin .../theme/{md_dev => md_exp}/img/logo_setup.svg | 0 htdocs/theme/{md_dev => md_exp}/img/logout.png | Bin .../theme/{md_dev => md_exp}/img/menus/README.md | 0 .../{md_dev => md_exp}/img/menus/agenda.png | Bin .../{md_dev => md_exp}/img/menus/agenda_over.png | Bin .../theme/{md_dev => md_exp}/img/menus/bank.png | Bin .../{md_dev => md_exp}/img/menus/bank_over.png | Bin .../theme/{md_dev => md_exp}/img/menus/chart.png | Bin .../{md_dev => md_exp}/img/menus/commercial.png | Bin .../img/menus/commercial_over.png | Bin .../{md_dev => md_exp}/img/menus/company.png | Bin .../img/menus/company_over.png | Bin .../theme/{md_dev => md_exp}/img/menus/ecm.png | Bin .../{md_dev => md_exp}/img/menus/ecm_over.png | Bin .../img/menus/externalsite.png | Bin .../img/menus/externalsite_over.png | Bin .../theme/{md_dev => md_exp}/img/menus/ftp.png | Bin .../{md_dev => md_exp}/img/menus/ftp_over.png | Bin .../{md_dev => md_exp}/img/menus/generic1.png | Bin .../img/menus/generic1_over.png | Bin .../{md_dev => md_exp}/img/menus/generic2.png | Bin .../img/menus/generic2_over.png | Bin .../{md_dev => md_exp}/img/menus/generic3.png | Bin .../img/menus/generic3_over.png | Bin .../{md_dev => md_exp}/img/menus/generic4.png | Bin .../img/menus/generic4_over.png | Bin .../theme/{md_dev => md_exp}/img/menus/globe.png | Bin .../{md_dev => md_exp}/img/menus/globe_over.png | Bin .../{md_dev => md_exp}/img/menus/holiday.png | Bin .../theme/{md_dev => md_exp}/img/menus/home.png | Bin .../{md_dev => md_exp}/img/menus/home_over.png | Bin .../{md_dev => md_exp}/img/menus/index.html | 0 .../theme/{md_dev => md_exp}/img/menus/mail.png | Bin .../{md_dev => md_exp}/img/menus/mail_over.png | Bin .../{md_dev => md_exp}/img/menus/members.png | Bin .../img/menus/members_over.png | Bin .../theme/{md_dev => md_exp}/img/menus/money.png | Bin .../{md_dev => md_exp}/img/menus/money_over.png | Bin .../{md_dev => md_exp}/img/menus/pointofsale.png | Bin .../img/menus/pointofsale_over.png | Bin .../{md_dev => md_exp}/img/menus/products.png | Bin .../img/menus/products_over.png | Bin .../{md_dev => md_exp}/img/menus/project.png | Bin .../img/menus/project_over.png | Bin .../theme/{md_dev => md_exp}/img/menus/shop.png | Bin .../{md_dev => md_exp}/img/menus/shop_over.png | Bin .../theme/{md_dev => md_exp}/img/menus/tools.png | Bin .../{md_dev => md_exp}/img/menus/tools_over.png | Bin .../theme/{md_dev => md_exp}/img/menutab-r.png | Bin .../theme/{md_dev => md_exp}/img/nav-overlay.png | Bin .../{md_dev => md_exp}/img/nav-overlay3.png | Bin htdocs/theme/{md_dev => md_exp}/img/next.png | Bin .../{md_dev => md_exp}/img/object_account.png | Bin .../{md_dev => md_exp}/img/object_accounting.png | Bin .../{md_dev => md_exp}/img/object_action.png | Bin .../{md_dev => md_exp}/img/object_action_rdv.png | Bin .../{md_dev => md_exp}/img/object_address.png | Bin .../img/object_askpricesupplier.png | Bin .../{md_dev => md_exp}/img/object_barcode.png | Bin .../theme/{md_dev => md_exp}/img/object_bill.png | Bin .../{md_dev => md_exp}/img/object_billa.png | Bin .../{md_dev => md_exp}/img/object_billd.png | Bin .../{md_dev => md_exp}/img/object_billr.png | Bin .../theme/{md_dev => md_exp}/img/object_book.png | Bin .../{md_dev => md_exp}/img/object_bookmark.png | Bin .../{md_dev => md_exp}/img/object_calendar.png | Bin .../img/object_calendarday.png | Bin .../img/object_calendarperuser.png | Bin .../img/object_calendarweek.png | Bin .../img/object_category-expanded.png | Bin .../{md_dev => md_exp}/img/object_category.png | Bin .../{md_dev => md_exp}/img/object_commercial.png | Bin .../{md_dev => md_exp}/img/object_company.png | Bin .../{md_dev => md_exp}/img/object_contact.png | Bin .../img/object_contact_all.png | Bin .../{md_dev => md_exp}/img/object_contract.png | Bin .../theme/{md_dev => md_exp}/img/object_cron.png | Bin .../theme/{md_dev => md_exp}/img/object_dir.png | Bin .../{md_dev => md_exp}/img/object_email.png | Bin .../{md_dev => md_exp}/img/object_energie.png | Bin .../{md_dev => md_exp}/img/object_generic.png | Bin .../{md_dev => md_exp}/img/object_globe.png | Bin .../{md_dev => md_exp}/img/object_group.png | Bin .../{md_dev => md_exp}/img/object_holiday.png | Bin .../img/object_intervention.png | Bin .../{md_dev => md_exp}/img/object_invoice.png | Bin .../{md_dev => md_exp}/img/object_label.png | Bin .../theme/{md_dev => md_exp}/img/object_list.png | Bin .../{md_dev => md_exp}/img/object_margin.png | Bin .../{md_dev => md_exp}/img/object_opensurvey.png | Bin .../{md_dev => md_exp}/img/object_order.png | Bin .../{md_dev => md_exp}/img/object_payment.png | Bin .../{md_dev => md_exp}/img/object_phoning.png | Bin .../img/object_phoning_fax.png | Bin .../{md_dev => md_exp}/img/object_product.png | Bin .../{md_dev => md_exp}/img/object_project.png | Bin .../{md_dev => md_exp}/img/object_projectpub.png | Bin .../img/object_projecttask.png | Bin .../{md_dev => md_exp}/img/object_propal.png | Bin .../{md_dev => md_exp}/img/object_reduc.png | Bin .../{md_dev => md_exp}/img/object_resource.png | Bin .../theme/{md_dev => md_exp}/img/object_rss.png | Bin .../{md_dev => md_exp}/img/object_sending.png | Bin .../{md_dev => md_exp}/img/object_service.png | Bin .../{md_dev => md_exp}/img/object_skype.png | Bin .../{md_dev => md_exp}/img/object_stock.png | Bin .../theme/{md_dev => md_exp}/img/object_task.png | Bin .../{md_dev => md_exp}/img/object_task_time.png | Bin .../{md_dev => md_exp}/img/object_technic.png | Bin .../theme/{md_dev => md_exp}/img/object_trip.png | Bin .../theme/{md_dev => md_exp}/img/object_user.png | Bin htdocs/theme/{md_dev => md_exp}/img/off.png | Bin htdocs/theme/{md_dev => md_exp}/img/on.png | Bin htdocs/theme/{md_dev => md_exp}/img/pdf2.png | Bin htdocs/theme/{md_dev => md_exp}/img/pdf3.png | Bin htdocs/theme/{md_dev => md_exp}/img/play.png | Bin htdocs/theme/{md_dev => md_exp}/img/previous.png | Bin htdocs/theme/{md_dev => md_exp}/img/printer.png | Bin htdocs/theme/{md_dev => md_exp}/img/puce.png | Bin htdocs/theme/{md_dev => md_exp}/img/recent.png | Bin htdocs/theme/{md_dev => md_exp}/img/redstar.png | Bin htdocs/theme/{md_dev => md_exp}/img/refresh.png | Bin htdocs/theme/{md_dev => md_exp}/img/reload.png | Bin .../theme/{md_dev => md_exp}/img/rightarrow.png | Bin htdocs/theme/{md_dev => md_exp}/img/search.png | Bin .../theme/{md_dev => md_exp}/img/searchclear.png | Bin htdocs/theme/{md_dev => md_exp}/img/setup.png | Bin htdocs/theme/{md_dev => md_exp}/img/sort_asc.png | Bin .../{md_dev => md_exp}/img/sort_asc_disabled.png | Bin .../theme/{md_dev => md_exp}/img/sort_desc.png | Bin .../img/sort_desc_disabled.png | Bin htdocs/theme/{md_dev => md_exp}/img/split.png | Bin htdocs/theme/{md_dev => md_exp}/img/star.png | Bin htdocs/theme/{md_dev => md_exp}/img/stats.png | Bin htdocs/theme/{md_dev => md_exp}/img/statut0.png | Bin htdocs/theme/{md_dev => md_exp}/img/statut1.png | Bin htdocs/theme/{md_dev => md_exp}/img/statut3.png | Bin htdocs/theme/{md_dev => md_exp}/img/statut4.png | Bin htdocs/theme/{md_dev => md_exp}/img/statut5.png | Bin htdocs/theme/{md_dev => md_exp}/img/statut6.png | Bin htdocs/theme/{md_dev => md_exp}/img/statut7.png | Bin htdocs/theme/{md_dev => md_exp}/img/statut8.png | Bin htdocs/theme/{md_dev => md_exp}/img/statut9.png | Bin htdocs/theme/{md_dev => md_exp}/img/stcomm-1.png | Bin .../{md_dev => md_exp}/img/stcomm-1_grayed.png | Bin htdocs/theme/{md_dev => md_exp}/img/stcomm0.png | Bin .../{md_dev => md_exp}/img/stcomm0_grayed.png | Bin htdocs/theme/{md_dev => md_exp}/img/stcomm1.png | Bin .../{md_dev => md_exp}/img/stcomm1_grayed.png | Bin htdocs/theme/{md_dev => md_exp}/img/stcomm2.png | Bin .../{md_dev => md_exp}/img/stcomm2_grayed.png | Bin htdocs/theme/{md_dev => md_exp}/img/stcomm3.png | Bin .../{md_dev => md_exp}/img/stcomm3_grayed.png | Bin htdocs/theme/{md_dev => md_exp}/img/stcomm4.png | Bin .../{md_dev => md_exp}/img/stcomm4_grayed.png | Bin .../theme/{md_dev => md_exp}/img/switch_off.png | Bin .../theme/{md_dev => md_exp}/img/switch_on.png | Bin .../{md_dev => md_exp}/img/tab_background.png | Bin htdocs/theme/{md_dev => md_exp}/img/tick.png | Bin htdocs/theme/{md_dev => md_exp}/img/title.gif | Bin htdocs/theme/{md_dev => md_exp}/img/title.png | Bin htdocs/theme/{md_dev => md_exp}/img/tmenu.jpg | Bin htdocs/theme/{md_dev => md_exp}/img/tmenu2.jpg | Bin htdocs/theme/{md_dev => md_exp}/img/tmenu3.jpg | Bin .../{md_dev => md_exp}/img/tmenu_inverse.jpg | Bin htdocs/theme/{md_dev => md_exp}/img/unlock.png | Bin htdocs/theme/{md_dev => md_exp}/img/uparrow.png | Bin htdocs/theme/{md_dev => md_exp}/img/vcard.png | Bin htdocs/theme/{md_dev => md_exp}/img/view.png | Bin htdocs/theme/{md_dev => md_exp}/img/warning.png | Bin htdocs/theme/{md_dev => md_exp}/img/working.gif | Bin htdocs/theme/{md_dev => md_exp}/img/working2.gif | Bin htdocs/theme/{md_dev => md_exp}/index.html | 0 htdocs/theme/{md_dev => md_exp}/style.css.php | 0 htdocs/theme/{md_dev => md_exp}/tpl/README | 0 htdocs/theme/{md_dev => md_exp}/tpl/index.html | 0 234 files changed, 3 insertions(+), 2 deletions(-) delete mode 100644 htdocs/theme/md_dev/thumb.png rename htdocs/theme/{md_dev => md_exp}/.gitignore (100%) rename htdocs/theme/{md_dev => md_exp}/AUTHOR (100%) rename htdocs/theme/{md_dev => md_exp}/ckeditor/config.js (100%) rename htdocs/theme/{md_dev => md_exp}/ckeditor/index.html (100%) rename htdocs/theme/{md_dev => md_exp}/graph-color.php (100%) rename htdocs/theme/{md_dev => md_exp}/img/1downarrow.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/1downarrow_selected.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/1leftarrow.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/1leftarrow_selected.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/1rightarrow.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/1rightarrow_selected.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/1uparrow.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/1uparrow_selected.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/1updownarrow.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/addfile.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/background.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/bg-bas-rubrique.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/bg-rubrique.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/bg-titre-rubrique.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/button_bg.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/button_edit.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/calc.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/calendar.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/call.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/call_out.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/close.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/close_title.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/delete.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/detail.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/disable.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/edit.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/edit_add.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/edit_remove.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/editdelete.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/error.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/favicon.ico (100%) rename htdocs/theme/{md_dev => md_exp}/img/file.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/filenew.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/filter.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/folder-open.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/folder.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/gradient.gif (100%) rename htdocs/theme/{md_dev => md_exp}/img/grip.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/grip_title.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/headbg.jpg (100%) rename htdocs/theme/{md_dev => md_exp}/img/headbg2.jpg (100%) rename htdocs/theme/{md_dev => md_exp}/img/help.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/helpdoc.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/high.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/history.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/index.html (100%) rename htdocs/theme/{md_dev => md_exp}/img/info.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/liste_titre.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/liste_titre2.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/lock.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/login_background.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/logo_setup.svg (100%) rename htdocs/theme/{md_dev => md_exp}/img/logout.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/README.md (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/agenda.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/agenda_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/bank.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/bank_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/chart.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/commercial.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/commercial_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/company.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/company_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/ecm.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/ecm_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/externalsite.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/externalsite_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/ftp.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/ftp_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/generic1.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/generic1_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/generic2.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/generic2_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/generic3.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/generic3_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/generic4.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/generic4_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/globe.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/globe_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/holiday.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/home.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/home_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/index.html (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/mail.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/mail_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/members.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/members_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/money.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/money_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/pointofsale.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/pointofsale_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/products.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/products_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/project.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/project_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/shop.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/shop_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/tools.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menus/tools_over.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/menutab-r.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/nav-overlay.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/nav-overlay3.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/next.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_account.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_accounting.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_action.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_action_rdv.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_address.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_askpricesupplier.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_barcode.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_bill.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_billa.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_billd.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_billr.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_book.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_bookmark.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_calendar.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_calendarday.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_calendarperuser.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_calendarweek.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_category-expanded.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_category.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_commercial.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_company.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_contact.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_contact_all.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_contract.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_cron.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_dir.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_email.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_energie.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_generic.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_globe.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_group.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_holiday.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_intervention.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_invoice.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_label.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_list.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_margin.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_opensurvey.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_order.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_payment.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_phoning.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_phoning_fax.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_product.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_project.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_projectpub.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_projecttask.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_propal.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_reduc.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_resource.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_rss.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_sending.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_service.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_skype.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_stock.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_task.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_task_time.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_technic.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_trip.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/object_user.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/off.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/on.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/pdf2.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/pdf3.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/play.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/previous.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/printer.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/puce.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/recent.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/redstar.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/refresh.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/reload.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/rightarrow.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/search.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/searchclear.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/setup.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/sort_asc.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/sort_asc_disabled.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/sort_desc.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/sort_desc_disabled.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/split.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/star.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/stats.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/statut0.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/statut1.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/statut3.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/statut4.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/statut5.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/statut6.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/statut7.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/statut8.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/statut9.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/stcomm-1.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/stcomm-1_grayed.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/stcomm0.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/stcomm0_grayed.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/stcomm1.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/stcomm1_grayed.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/stcomm2.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/stcomm2_grayed.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/stcomm3.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/stcomm3_grayed.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/stcomm4.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/stcomm4_grayed.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/switch_off.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/switch_on.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/tab_background.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/tick.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/title.gif (100%) rename htdocs/theme/{md_dev => md_exp}/img/title.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/tmenu.jpg (100%) rename htdocs/theme/{md_dev => md_exp}/img/tmenu2.jpg (100%) rename htdocs/theme/{md_dev => md_exp}/img/tmenu3.jpg (100%) rename htdocs/theme/{md_dev => md_exp}/img/tmenu_inverse.jpg (100%) rename htdocs/theme/{md_dev => md_exp}/img/unlock.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/uparrow.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/vcard.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/view.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/warning.png (100%) rename htdocs/theme/{md_dev => md_exp}/img/working.gif (100%) rename htdocs/theme/{md_dev => md_exp}/img/working2.gif (100%) rename htdocs/theme/{md_dev => md_exp}/index.html (100%) rename htdocs/theme/{md_dev => md_exp}/style.css.php (100%) rename htdocs/theme/{md_dev => md_exp}/tpl/README (100%) rename htdocs/theme/{md_dev => md_exp}/tpl/index.html (100%) diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 41b7996cbfd..b70c1e2517a 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -339,8 +339,9 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) if (is_dir($dirtheme."/".$subdir) && substr($subdir, 0, 1) <> '.' && substr($subdir, 0, 3) <> 'CVS' && ! preg_match('/common|phones/i',$subdir)) { - // Disable not stable themes - //if ($conf->global->MAIN_FEATURES_LEVEL < 1 && preg_match('/bureau2crea/i',$subdir)) continue; + // Disable not stable themes (dir ends with _exp or _dev) + if ($conf->global->MAIN_FEATURES_LEVEL < 2 && preg_match('/_dev$/i',$subdir)) continue; + if ($conf->global->MAIN_FEATURES_LEVEL < 1 && preg_match('/_exp$/i',$subdir)) continue; print '
'; $file=$dirtheme."/".$subdir."/thumb.png"; diff --git a/htdocs/theme/md_dev/thumb.png b/htdocs/theme/md_dev/thumb.png deleted file mode 100644 index 6b4c467bead7e991a22ad47a394bd135b8837094..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3839 zcmV|4I3mR z)+{ZAg@q6j28>GX0oqN2+g(*zSvkI!Z@%*sd=Zg(JF{|nm6@ixQC*d?-f&;U`Of&A z6PNtyU;bdN&YnEpwN}>Fms*-uS~SZFt{<%%p@8T)Z3{?7Fp<<9KkcPI$;I8X$&hp2Y%k(3B^o|tgc~GF3XKy>{FrO)y3?xLy`di^c@~GY(I>Ih z;>~qJnRas*=bCHjzxnHL*p>kl{%pG6J0O4fXMg=0Z@=NX&fov@e=N0YfD^}~I2kva zcL{!i9}!xwJDzKgCw?5KP(qj%NgUKYk5QVJ1uZj1O^#nOA?`tMr&e#;jwiM(OF}8< zWfUG{Mc8b78J`t-v9`Ln+HF1B+#65BGK&Wv{uAr0x4(3s>H3WV=AL7G=bK-1Y?DhU zoaf~GfAkl?0Igf5VH;Ev@@a;y7iE#>h0bVE^1LW)3kD}il9s%5Y#54WsW3YT@C)gbQVRaMl@*0V0xBkc&%aYW4B=;h=V)D=bYc5g=?<)+u!=S z>zHcQvPj4u|M_3lJQv&gK@3r9uFG_qBrqBQ;G!&Ru7l5kj%Y;J+06ILl6#(;WqBAy zt_!cxDb)t!spHtTX)#9fqQruL0gv!p2fCw_VnOU$6h)k5wr#=9!Z3={464-e8v@Pd zz8_&njoc96l6P8--~YYu0$`;_GPg!?8_~Xi7gP+4q)JFxmg%~VG&P%rmZgu!Guwux znDB?1o97uq_v5DlGxV;dw z_-&e|Wm$;NG+y^?I5UxU#@k9~Up&CDa9Nf?5Fn^b)4*$h@jTD6EGVLPF#Pxzo4vsV zP=PVYOQaa>IniRxwWan~@7?<7=Nsc$2*ojqoQ6L_l|>1RzLO$o*AXHw%q%hc}JShoDlkmY$-<$bSqgh8*UA}$iwO8&|;=;nvNUyg)91ILYUs+jg zwL6-sDf}5Z$kx`=qR4|NxwX35Y&QAv+e9hi2eb5(otYjFTXq5S;%3iv(=7A6dbiuv zWm%fnGl>=_F|^-oHh@XchbRn#E!T5wXVv$^$z&3zsi~Xm>+7=MWl{)TSQvqNUg1V0 z8wP{s@n7{JT!0>3&-g7?!`|vE+=kb-ZCAQWl30~T1PkIwxe}2VetUYsOTz@0e#BL< z8nO)pCd^2a1fQraz#Z_V_V`Z-*wLLoAZZ-_?GJwhFI`(~!Z`JM{k7NcFD-V|Dv0m| zzeuq{a!MDvX`07VS1D?20--AmLR*YgE&%_+J@^%6x*|TXs8CHQSPmAnY@5!V9ZDI; z)%qf&lQAWwZnpAVY{ca~5IzVaQugTVZ)$7bmoY3i&gGU|2qiA=M9f=t7LIFkIFcNV&>R%?E=lAnpoaU4}<(=<=QN0!Mg@9yr-K^TR|6d*!t zYirZ#bmj-h#f_#%vNYb<+=iDM$eF@}8Dc>r%ysO=#YO08w?BOUzaIAc1CS+v7IeRO z-XtwD)2-#scfR>mgOLPOJc%hPyUwySg}4raxK^k1`4-LLeiHDZGp1P*4=md>%r=Uv z@6WI)+y`E!oKATGK{2YNm&uh&-xGh8&3gx)vU?Awnr6wVo=m=q9m{H|kD&{+fl}Xtd z{5dbQjqToO8VJTHdkooTXi_{LP6tk{O|Lq9JL*C>NXYB2-1^1FZk*-300uD$6Gc$& zh?|HkW~Ceqik3j5{E(q@)#A@Xzo{y=%CPUf_wIN!&~@kbowc+eZ{B}hapwL0;K5Hn z7!C)NF-|~Lb2Ma0nt(TyyxiKKXv|cA$w?%KHSXy3c``u;uo2fbfA_oJ`teU53?~8J z!cC#ww9ptYyqX<_sb%YFR)XTXUM-FzKjBHn=L`<%?Znc>m{9;eGp>$P0<<+3xEfsJ z!}s5f%VIW*Y;+pXiWpH5$EhW0T!{IuVO#cFZ@sCMd#3JD{Lp4ReE28~#{Hqc*y+6b z>b)C@c8K@iAAPj5zk_O`!&A-^;&@ampFcs2Dc#xL4x)&u{ziJa$Q)99r7YC|sV`wJ z{8L>!I!8fTj|!o>Pz68|13#$Mz42%QstJbM>2$6S7&7#GJy0%5q~-v8UQNP6v)OEE zX=$FG&i9k;t@jD9N%o^cwAUt8rFZ=6RMouC4lNd#T5uivWXGZ#hNe|``I5n2?H`K|_7A%x~C3!e#C z5Yhm~D;qTy&Vt5bCz5pSJixy1i=n^4{G<>GD$5oZ7GUUWdiCz^F4R zx7(cqaIvu9Dm#VpIukHlT5?ZYRHCEJ)GXnIh4Uf~lV+!06<+1r7gPcDty<@bfbkju z3@9rrE0+Pr0!63eRDes{5~O;o)F_wtj7Gb$$ygz({rQ-e-0}lj1n;5B}j_gD@?NTyQ=ym7>yY z6gD2*4@F+=EmY3=IWk~|g0T>omju*-6w1rjDilbSY z6;YJnhhTw07>TK}JYl|C^Q)Ela6Cg^DDvENT%z-<0|pM{pJfU7MzSyE^xp1Xv)L%6`@tE-69$s%BfOt?rdgd4XSt-toa?5!HNJ*RCrRx4VL0>8jWZ2>XAzaSzfAuwOu!p!mIZ^bDNI#~E}c4wmJ>gbAW9M_&Rw1$<3D8GsJcI6ZKO7-$v7 zqXR6s+aHF$|MoZDX7t)~g(BPB?UOQtV>K3*MrrSIz)6-5M&SIZtcr&tcz*1_RK31V zC&$H+CtY4>4tm@0z=;?(kT?v#^2UAi64$XOI_LepeH22%%f`ZTFWtTbFr09AzyITZ ze|L9pfUPZqg-I?RPcaQtR|?uwkcLZVQ9kf5sQu>_6E2TnOr1Ek`Of#gty8$h;c=80 zAtIEn?ZZqwK%yG^f^a%lKa8Ayu?6wvY&K2O9GL~qtRDZ#axSJ8No>2dR-;~?uMjZ+ zh!fj!Zg!@5_FnVEFq#-7m5b*Oh}&vTz}4Zpd`=5nFhe&kLjtWXEG$UM@j?NM$I#+* zyEmEz2_>KL(xV_2C!lJSLC6&g$KlkP(Yv>oY|FUuIqvfTMhx%u`v3Oe{hhr5quexT z6lXA*DL84NQ>0xp4r8z8=4rAw$MkSuUj56aS%2{{oTSCUG_eiZs_AM92NES7ULv|M93@XTc5dBX zMXpkhv#6Q&#YdZ`8uVg1-SNDxX*!<+z*#x=(>NGsu@9J*Y2}61^7@^{uTWhWB=E;s zu7RAC^4JlDbY*$zMA}Q!UcV1u^4L*Vq^e#&H0F3bGEJ*2Bg1gP)n0VcBHAR(KH3;& zvxAPES+mHMG;RWfNWD zlgFD&D_wE)&X{_T59!+VyeiqElaJy=vN53m^{`9zSdc7un(uFW-m+=BFCK7~ Date: Mon, 23 Mar 2015 01:39:12 +0100 Subject: [PATCH 368/429] Revert "Revert "Refactor 1"" --- htdocs/comm/propal/class/propal.class.php | 6 +- htdocs/commande/class/commande.class.php | 74 +++++----- htdocs/compta/facture/class/facture.class.php | 36 +---- htdocs/core/class/commoninvoice.class.php | 95 ++++++++++++ htdocs/core/class/commonobject.class.php | 30 ++-- htdocs/core/class/commonobjectline.class.php | 13 ++ htdocs/core/class/commonorder.class.php | 136 +++++++++++++++++- htdocs/core/lib/functions.lib.php | 4 +- htdocs/core/tpl/objectline_create.tpl.php | 2 +- htdocs/core/tpl/objectline_edit.tpl.php | 4 +- htdocs/core/tpl/objectline_view.tpl.php | 16 +-- htdocs/fichinter/class/fichinter.class.php | 1 - htdocs/filefunc.inc.php | 1 - .../class/fournisseur.commande.class.php | 98 +++++++------ .../fourn/class/fournisseur.facture.class.php | 122 ++++++++++------ htdocs/fourn/commande/card.php | 2 +- htdocs/fourn/facture/card.php | 2 +- htdocs/margin/admin/margin.php | 3 - htdocs/projet/admin/project.php | 7 +- htdocs/societe/admin/societe.php | 5 +- 20 files changed, 449 insertions(+), 208 deletions(-) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 8909441b9c1..533df89b773 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -107,6 +107,9 @@ class Propal extends CommonObject var $products=array(); var $extraparams=array(); + /** + * @var PropaleLigne[] + */ var $lines = array(); var $line; @@ -2801,9 +2804,6 @@ class Propal extends CommonObject */ class PropaleLigne extends CommonObject { - var $db; - var $error; - public $element='propaldet'; public $table_element='propaldet'; diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 1bcfa1ee7cb..2d377758aa5 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -104,7 +104,10 @@ class Commande extends CommonOrder var $user_author_id; - var $lines = array(); + /** + * @var OrderLine[] + */ + var $lines = array(); //Incorterms var $fk_incoterms; @@ -1635,12 +1638,12 @@ class Commande extends CommonOrder $line = new OrderLine($this->db); - $line->rowid = $objp->rowid; // \deprecated + $line->rowid = $objp->rowid; $line->id = $objp->rowid; $line->fk_commande = $objp->fk_commande; - $line->commande_id = $objp->fk_commande; // \deprecated + $line->commande_id = $objp->fk_commande; $line->label = $objp->custom_label; - $line->desc = $objp->description; // Description ligne + $line->desc = $objp->description; $line->product_type = $objp->product_type; $line->qty = $objp->qty; $line->tva_tx = $objp->tva_tx; @@ -1666,11 +1669,11 @@ class Commande extends CommonOrder $line->special_code = $objp->special_code; $line->fk_parent_line = $objp->fk_parent_line; - $line->ref = $objp->product_ref; // TODO deprecated + $line->ref = $objp->product_ref; $line->product_ref = $objp->product_ref; - $line->libelle = $objp->product_label; // TODO deprecated + $line->libelle = $objp->product_label; $line->product_label = $objp->product_label; - $line->product_desc = $objp->product_desc; // Description produit + $line->product_desc = $objp->product_desc; $line->fk_product_type = $objp->fk_product_type; // Produit ou service $line->date_start = $this->db->jdate($objp->date_start); @@ -3175,6 +3178,7 @@ class Commande extends CommonOrder $this->lines[$i] = new OrderLine($this->db); $this->lines[$i]->id = $obj->rowid; + $this->lines[$i]->rowid = $obj->rowid; $this->lines[$i]->label = $obj->custom_label; $this->lines[$i]->description = $obj->description; $this->lines[$i]->fk_product = $obj->fk_product; @@ -3261,56 +3265,44 @@ class Commande extends CommonOrder */ class OrderLine extends CommonOrderLine { - var $db; - var $error; - public $element='commandedet'; public $table_element='commandedet'; var $oldline; + /** + * Id of parent order + * @var int + */ + public $fk_commande; + + /** + * Id of parent order + * @var int + * @deprecated Use fk_commande + */ + public $commande_id; + // From llx_commandedet - var $rowid; var $fk_parent_line; var $fk_facture; var $label; - var $desc; // Description ligne - var $fk_product; // Id produit predefini - var $product_type = 0; // Type 0 = product, 1 = Service - - var $qty; // Quantity (example 2) - var $tva_tx; // VAT Rate for product/service (example 19.6) - var $localtax1_tx; // Local tax 1 - var $localtax2_tx; // Local tax 2 - var $localtax1_type; // Local tax 1 type - var $localtax2_type; // Local tax 2 type - var $subprice; // U.P. HT (example 100) - var $remise_percent; // % for line discount (example 20%) var $fk_remise_except; var $rang = 0; var $fk_fournprice; + + /** + * Buy price without taxes + * @var float + */ var $pa_ht; var $marge_tx; var $marque_tx; - var $info_bits = 0; // Bit 0: 0 si TVA normal - 1 si TVA NPR - // Bit 1: 0 ligne normale - 1 si ligne de remise fixe - var $special_code = 0; - var $total_ht; // Total HT de la ligne toute quantite et incluant la remise ligne - var $total_tva; // Total TVA de la ligne toute quantite et incluant la remise ligne - var $total_localtax1; // Total local tax 1 for the line - var $total_localtax2; // Total local tax 2 for the line - var $total_ttc; // Total TTC de la ligne toute quantite et incluant la remise ligne - // Ne plus utiliser - var $remise; - var $price; - - // From llx_product - var $ref; // deprecated - var $libelle; // deprecated - var $product_ref; - var $product_label; // Label produit - var $product_desc; // Description produit + /** + * @deprecated + */ + var $remise; // Added by Matelli (See http://matelli.fr/showcases/patchs-dolibarr/add-dates-in-order-lines.html) // Start and end date of the line diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 48955652ac5..38fab4c217c 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -3408,6 +3408,7 @@ class Facture extends CommonInvoice $this->lines[$i] = new FactureLigne($this->db); $this->lines[$i]->id = $obj->rowid; + $this->lines[$i]->rowid = $obj->rowid; $this->lines[$i]->label = $obj->custom_label; // deprecated $this->lines[$i]->description = $obj->description; $this->lines[$i]->fk_product = $obj->fk_product; @@ -3606,16 +3607,12 @@ class Facture extends CommonInvoice */ class FactureLigne extends CommonInvoiceLine { - var $db; - var $error; - public $element='facturedet'; public $table_element='facturedet'; var $oldline; //! From llx_facturedet - var $rowid; //! Id facture var $fk_facture; //! Id parent line @@ -3623,17 +3620,9 @@ class FactureLigne extends CommonInvoiceLine var $label; // deprecated //! Description ligne var $desc; - var $fk_product; // Id of predefined product - var $product_type = 0; // Type 0 = product, 1 = Service - var $qty; // Quantity (example 2) - var $tva_tx; // Taux tva produit/service (example 19.6) - var $localtax1_tx; // Local tax 1 - var $localtax2_tx; // Local tax 2 var $localtax1_type; // Local tax 1 type var $localtax2_type; // Local tax 2 type - var $subprice; // P.U. HT (example 100) - var $remise_percent; // % de la remise ligne (example 20%) var $fk_remise_except; // Link to line into llx_remise_except var $rang = 0; @@ -3642,10 +3631,6 @@ class FactureLigne extends CommonInvoiceLine var $marge_tx; var $marque_tx; - var $info_bits = 0; // Liste d'options cumulables: - // Bit 0: 0 si TVA normal - 1 si TVA NPR - // Bit 1: 0 si ligne normal - 1 si bit discount (link to line into llx_remise_except) - var $special_code; // Liste d'options non cumulabels: // 1: frais de port // 2: ecotaxe @@ -3654,15 +3639,6 @@ class FactureLigne extends CommonInvoiceLine var $origin; var $origin_id; - //! Total HT de la ligne toute quantite et incluant la remise ligne - var $total_ht; - //! Total TVA de la ligne toute quantite et incluant la remise ligne - var $total_tva; - var $total_localtax1; //Total Local tax 1 de la ligne - var $total_localtax2; //Total Local tax 2 de la ligne - //! Total TTC de la ligne toute quantite et incluant la remise ligne - var $total_ttc; - var $fk_code_ventilation = 0; var $date_start; @@ -3691,16 +3667,6 @@ class FactureLigne extends CommonInvoiceLine */ public $fk_prev_id; - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - function __construct($db) - { - $this->db = $db; - } - /** * Load invoice line from database * diff --git a/htdocs/core/class/commoninvoice.class.php b/htdocs/core/class/commoninvoice.class.php index 6087a5a0adb..1a7ebfc34c8 100644 --- a/htdocs/core/class/commoninvoice.class.php +++ b/htdocs/core/class/commoninvoice.class.php @@ -400,5 +400,100 @@ require_once DOL_DOCUMENT_ROOT .'/core/class/commonobjectline.class.php'; */ abstract class CommonInvoiceLine extends CommonObjectLine { + /** + * Quantity + * @var int + */ + public $qty; + + /** + * Unit price before taxes + * @var float + */ + public $subprice; + + /** + * Type of the product. 0 for product 1 for service + * @var int + */ + public $product_type = 0; + + /** + * Id of corresponding product + * @var int + */ + public $fk_product; + + /** + * VAT % + * @var float + */ + public $tva_tx; + + /** + * Local tax 1 % + * @var float + */ + public $localtax1_tx; + + /** + * Local tax 2 % + * @var float + */ + public $localtax2_tx; + + /** + * Percent of discount + * @var float + */ + public $remise_percent; + + /** + * Total amount before taxes + * @var float + */ + public $total_ht; + + /** + * Total VAT amount + * @var float + */ + public $total_tva; + + /** + * Total local tax 1 amount + * @var float + */ + public $total_localtax1; + + /** + * Total local tax 2 amount + * @var float + */ + public $total_localtax2; + + /** + * Total amount with taxes + * @var float + */ + public $total_ttc; + + /** + * Liste d'options cumulables: + * Bit 0: 0 si TVA normal - 1 si TVA NPR + * Bit 1: 0 si ligne normal - 1 si bit discount (link to line into llx_remise_except) + * @var int + */ + public $info_bits = 0; + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + public function __construct(DoliDB $db) + { + $this->db = $db; + } } diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 97157c6d408..5dc524d964c 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2685,10 +2685,9 @@ abstract class CommonObject * @param string $buyer Object of buyer third party * @param string $selected Object line selected * @param int $dateSelector 1=Show also date range input fields - * @param int $permtoedit Permission to edit line * @return void */ - function printObjectLines($action, $seller, $buyer, $selected=0, $dateSelector=0, $permtoedit=0) + function printObjectLines($action, $seller, $buyer, $selected=0, $dateSelector=0) { global $conf, $hookmanager, $inputalsopricewithtax, $usemargins, $langs, $user; @@ -2781,7 +2780,7 @@ abstract class CommonObject } else { - $this->printObjectLine($action,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected,$extrafieldsline,$permtoedit); + $this->printObjectLine($action,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected,$extrafieldsline); } $i++; @@ -2793,7 +2792,7 @@ abstract class CommonObject * TODO Move this into an output class file (htmlline.class.php) * * @param string $action GET/POST action - * @param array $line Selected object line to output + * @param CommonObjectLine $line Selected object line to output * @param string $var Is it a an odd line (true) * @param int $num Number of line (0) * @param int $i I @@ -2802,13 +2801,14 @@ abstract class CommonObject * @param string $buyer Object of buyer third party * @param string $selected Object line selected * @param object $extrafieldsline Object of extrafield line attribute - * @param int $permtoedit Permission to edit * @return void */ - function printObjectLine($action,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected=0,$extrafieldsline=0,$permtoedit=0) + function printObjectLine($action,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected=0,$extrafieldsline=0) { global $conf,$langs,$user,$object,$hookmanager; - global $form,$bc,$bcdd; + global $form,$bc,$bcdd, $object_rights; + + $object_rights = $this->getRights(); $element=$this->element; @@ -2821,7 +2821,7 @@ abstract class CommonObject if (! empty($line->date_end)) $type=1; // deprecated // Ligne en mode visu - if ($action != 'editline' || $selected != $line->id) + if ($action != 'editline' || $selected != $line->rowid) { // Product if ($line->fk_product > 0) @@ -2879,7 +2879,7 @@ abstract class CommonObject } // Ligne en mode update - if ($this->statut == 0 && $action == 'editline' && $selected == $line->id) + if ($this->statut == 0 && $action == 'editline' && $selected == $line->rowid) { $label = (! empty($line->label) ? $line->label : (($line->fk_product > 0) ? $line->product_label : '')); if (! empty($conf->global->MAIN_HTML5_PLACEHOLDER)) $placeholder=' placeholder="'.$langs->trans("Label").'"'; @@ -3883,4 +3883,16 @@ abstract class CommonObject return $out; } + /** + * Returns the rights used for this class + * @return stdClass + */ + public function getRights() + { + global $user; + + return $user->rights->{$this->element}; + } + + } diff --git a/htdocs/core/class/commonobjectline.class.php b/htdocs/core/class/commonobjectline.class.php index c3c8d823a34..b88dfabe83d 100644 --- a/htdocs/core/class/commonobjectline.class.php +++ b/htdocs/core/class/commonobjectline.class.php @@ -28,6 +28,19 @@ */ abstract class CommonObjectLine extends CommonObject { + /** + * Id of the line + * @var int + * @deprecated Use $rowid + */ + public $id; + + /** + * Id of the line + * @var int + */ + public $rowid; + // TODO // Currently we need function at end of file CommonObject for all object lines. Should find a way to avoid duplicate code. diff --git a/htdocs/core/class/commonorder.class.php b/htdocs/core/class/commonorder.class.php index 469e1676a53..b4882af8a58 100644 --- a/htdocs/core/class/commonorder.class.php +++ b/htdocs/core/class/commonorder.class.php @@ -22,6 +22,7 @@ */ require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php'; +require_once DOL_DOCUMENT_ROOT .'/core/class/commonobjectline.class.php'; /** * \class CommonOrder @@ -36,8 +37,141 @@ abstract class CommonOrder extends CommonObject * \class CommonOrderLine * \brief Superclass for orders classes */ -abstract class CommonOrderLine extends CommonObject +abstract class CommonOrderLine extends CommonObjectLine { + /** + * Product ref + * @var string + * @deprecated Use product_ref + */ + public $ref; + + /** + * Product ref + * @var string + */ + public $product_ref; + + /** + * Product label + * @var string + * @deprecated Use product_label + */ + public $libelle; + + /** + * Product label + * @var string + */ + public $product_label; + + /** + * Product description + * @var string + */ + public $product_desc; + + /** + * Quantity + * @var int + */ + public $qty; + + /** + * @deprecated + */ + var $price; + + /** + * Unit price before taxes + * @var float + */ + public $subprice; + + /** + * Type of the product. 0 for product 1 for service + * @var int + */ + public $product_type = 0; + + /** + * Description of the line + * @var string + */ + public $desc; + + /** + * Id of corresponding product + * @var int + */ + public $fk_product; + + /** + * Percent line discount + * @var float + */ + public $remise_percent; + + /** + * VAT % + * @var float + */ + public $tva_tx; + + /** + * Local tax 1 % + * @var float + */ + public $localtax1_tx; + + /** + * Local tax 2 % + * @var float + */ + public $localtax2_tx; + + public $localtax1_type; + public $localtax2_type; + + /** + * Total amount before taxes + * @var float + */ + public $total_ht; + + /** + * Total VAT amount + * @var float + */ + public $total_tva; + + /** + * Total local tax 1 amount + * @var float + */ + public $total_localtax1; + + /** + * Total local tax 2 amount + * @var float + */ + public $total_localtax2; + + /** + * Total amount with taxes + * @var float + */ + public $total_ttc; + + /** + * Liste d'options cumulables: + * Bit 0: 0 si TVA normal - 1 si TVA NPR + * Bit 1: 0 si ligne normal - 1 si bit discount (link to line into llx_remise_except) + * @var int + */ + public $info_bits = 0; + + public $special_code = 0; } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index cb3752f817c..c75387210aa 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3929,9 +3929,7 @@ function dol_htmlcleanlastbr($stringtodecode) */ function dol_html_entity_decode($a,$b,$c='UTF-8') { - // We use @ to avoid warning on PHP4 that does not support entity decoding to UTF8; - $ret=@html_entity_decode($a,$b,$c); - return $ret; + return html_entity_decode($a,$b,$c); } /** diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 027e6b3d816..84cc158515d 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -286,7 +286,7 @@ else { $newline = new CommandeFournisseurLigne($this->db); } elseif ($this->table_element_line=='facture_fourn_det') { - $newline = new FactureFournisseurLigne($this->db); + $newline = new SupplierInvoiceLine($this->db); } if (is_object($newline)) { print $newline->showOptionals($extrafieldsline, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay+8)); diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php index 5b895a69da3..6be8a82d69a 100644 --- a/htdocs/core/tpl/objectline_edit.tpl.php +++ b/htdocs/core/tpl/objectline_edit.tpl.php @@ -53,9 +53,9 @@ $coldisplay=-1; // We remove first td ?> > global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="2"' : ''); ?>>global->MAIN_VIEW_LINE_NUMBER))?2:1; ?> -
+
- + diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index 8da915ddd9a..c283f846d0f 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -48,11 +48,11 @@ if (empty($usemargins)) $usemargins=0; ?> -> +> global->MAIN_VIEW_LINE_NUMBER)) { ?> -
+
info_bits & 2) == 2) { ?> tva_tx,'%',$line->info_bits); ?> - pu_ht)?price($line->pu_ht):price($line->subprice)); ?> + pu_ht); ?> pu_ttc)?price($line->pu_ttc):price($line->subprice)); ?> @@ -179,11 +179,11 @@ if (empty($usemargins)) $usemargins=0; total_ht); ?> - statut == 0 && ($user->rights->$element->creer || $permtoedit)) { ?> + statut == 0 && ($object_rights->creer)) { ?> info_bits & 2) == 2) { ?> - id.'#line_'.$line->id; ?>"> + rowid.'#line_'.$line->rowid; ?>"> @@ -192,7 +192,7 @@ if (empty($usemargins)) $usemargins=0; situation_counter == 1 || !$this->situation_cycle_ref) { - print 'id . '">'; + print 'rowid . '">'; print img_delete(); print ''; } @@ -202,12 +202,12 @@ if (empty($usemargins)) $usemargins=0; 1 && empty($conf->browser->phone) && ($this->situation_counter == 1 || !$this->situation_cycle_ref)) { ?> 0) { ?> - id; ?>"> + rowid; ?>"> - id; ?>"> + rowid; ?>"> diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index 51d37dcc8ae..baf2555a905 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -1022,7 +1022,6 @@ class FichinterLigne extends CommonObjectLine var $error; // From llx_fichinterdet - var $rowid; var $fk_fichinter; var $desc; // Description ligne var $datei; // Date intervention diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index 7343e65c854..15bee891775 100644 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -83,7 +83,6 @@ if (! empty($dolibarr_strict_mode)) } else { - if (! defined('E_DEPRECATED')) define('E_DEPRECATED',0); // For PHP < 5.3.0 compatibility error_reporting(E_ALL & ~(E_STRICT|E_NOTICE|E_DEPRECATED)); } diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 8b7d81fdda0..e52b98b7e53 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -93,13 +93,16 @@ class CommandeFournisseur extends CommonOrder var $extraparams=array(); + /** + * @var CommandeFournisseurLigne[] + */ + public $lines = array(); //Ajout pour askpricesupplier var $origin; var $origin_id; var $linked_objects=array(); - var $lines = array(); - /** + /** * Constructor * * @param DoliDB $db Database handler @@ -110,7 +113,6 @@ class CommandeFournisseur extends CommonOrder $this->db = $db; $this->products = array(); - $this->lines = array(); // List of language codes for status $this->statuts[0] = 'StatusOrderDraft'; @@ -258,14 +260,15 @@ class CommandeFournisseur extends CommonOrder $line = new CommandeFournisseurLigne($this->db); $line->id = $objp->rowid; - $line->desc = $objp->description; // Description ligne - $line->description = $objp->description; // Description ligne + $line->rowid = $objp->rowid; + $line->desc = $objp->description; + $line->description = $objp->description; $line->qty = $objp->qty; $line->tva_tx = $objp->tva_tx; $line->localtax1_tx = $objp->localtax1_tx; $line->localtax2_tx = $objp->localtax2_tx; - $line->subprice = $objp->subprice; // deprecated - $line->pu_ht = $objp->subprice; // Unit price HT + $line->subprice = $objp->subprice; + $line->pu_ht = $objp->subprice; $line->remise_percent = $objp->remise_percent; $line->total_ht = $objp->total_ht; $line->total_tva = $objp->total_tva; @@ -274,16 +277,16 @@ class CommandeFournisseur extends CommonOrder $line->total_ttc = $objp->total_ttc; $line->product_type = $objp->product_type; - $line->fk_product = $objp->fk_product; // Id du produit + $line->fk_product = $objp->fk_product; - $line->libelle = $objp->product_label; // TODO deprecated - $line->product_label = $objp->product_label; // Label produit - $line->product_desc = $objp->product_desc; // Description produit + $line->libelle = $objp->product_label; + $line->product_label = $objp->product_label; + $line->product_desc = $objp->product_desc; - $line->ref = $objp->product_ref; // TODO deprecated - $line->product_ref = $objp->product_ref; // Internal reference - $line->ref_fourn = $objp->ref_supplier; // TODO deprecated - $line->ref_supplier = $objp->ref_supplier; // Reference supplier + $line->ref = $objp->product_ref; + $line->product_ref = $objp->product_ref; + $line->ref_fourn = $objp->ref_supplier; + $line->ref_supplier = $objp->ref_supplier; $line->date_start = $this->db->jdate($objp->date_start); $line->date_end = $this->db->jdate($objp->date_end); @@ -1621,7 +1624,6 @@ class CommandeFournisseur extends CommonOrder } } - /** * Return array of dispathed lines waiting to be approved for this order * @@ -2326,6 +2328,18 @@ class CommandeFournisseur extends CommonOrder if ($nb === 0) return $langs->trans('Undefined'); else return $nb.' '.$langs->trans('Days'); } + + /** + * Returns the rights used for this class + * @return stdClass + */ + public function getRights() + { + global $user; + + return $user->rights->fournisseur->commande; + } + } @@ -2335,42 +2349,32 @@ class CommandeFournisseur extends CommonOrder */ class CommandeFournisseurLigne extends CommonOrderLine { - var $db; - var $error; - public $element='commande_fournisseurdet'; public $table_element='commande_fournisseurdet'; + + /** + * Unit price without taxes + * @var float + */ + public $pu_ht; - var $oldline; - - // From llx_commandedet - var $qty; - var $tva_tx; - var $localtax1_tx; - var $localtax2_tx; - var $localtax1_type; - var $localtax2_type; - var $subprice; - var $remise_percent; - var $desc; // Description ligne - var $fk_product; // Id of predefined product - var $product_type = 0; // Type 0 = product, 1 = Service - var $total_ht; - var $total_tva; - var $total_localtax1; - var $total_localtax2; - var $total_ttc; - var $info_bits; - var $special_code; - var $date_start; + var $date_start; var $date_end; - // From llx_product - var $libelle; // Label produit - var $product_desc; // Description produit - // From llx_product_fournisseur_price - var $ref_fourn; // Ref supplier + + /** + * Supplier ref + * @var string + * @deprecated Use ref_supplier + */ + public $ref_fourn; + + /** + * Supplier reference + * @var string + */ + public $ref_supplier; /** @@ -2430,7 +2434,7 @@ class CommandeFournisseurLigne extends CommonOrderLine $this->date_start = $this->db->jdate($objp->date_start); $this->date_end = $this->db->jdate($objp->date_end); - + $this->db->free($result); return 1; } diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 9cc6b237c41..19cb26cf17b 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -89,9 +89,12 @@ class FactureFournisseur extends CommonInvoice var $mode_reglement_id; var $mode_reglement_code; - var $lines; + /** + * Invoice lines + * @var SupplierInvoiceLine[] + */ + public $lines = array(); var $fournisseur; // deprecated - var $thirdparty; // To store thirdparty //Incorterms var $fk_incoterms; @@ -100,31 +103,6 @@ class FactureFournisseur extends CommonInvoice var $extraparams=array(); - /** - * Standard invoice - */ - const TYPE_STANDARD = 0; - - /** - * Replacement invoice - */ - const TYPE_REPLACEMENT = 1; - - /** - * Credit note invoice - */ - const TYPE_CREDIT_NOTE = 2; - - /** - * Deposit invoice - */ - const TYPE_DEPOSIT = 3; - - /** - * Proforma invoice - */ - const TYPE_PROFORMA = 4; - /** * Constructor * @@ -145,7 +123,6 @@ class FactureFournisseur extends CommonInvoice $this->propalid = 0; $this->products = array(); - $this->lines = array(); } /** @@ -496,7 +473,7 @@ class FactureFournisseur extends CommonInvoice */ function fetch_lines() { - $sql = 'SELECT f.rowid, f.ref as ref_supplier, f.description, f.pu_ht, f.pu_ttc, f.qty, f.remise_percent, f.tva_tx, f.tva'; + $sql = 'SELECT f.rowid, f.ref as ref_supplier, f.description, f.pu_ht, f.pu_ttc, f.qty, f.remise_percent, f.tva_tx'; $sql.= ', f.localtax1_tx, f.localtax2_tx, f.total_localtax1, f.total_localtax2 '; $sql.= ', f.total_ht, f.tva as total_tva, f.total_ttc, f.fk_product, f.product_type, f.info_bits, f.rang, f.special_code, f.fk_parent_line'; $sql.= ', p.rowid as product_id, p.ref as product_ref, p.label as label, p.description as product_desc'; @@ -517,7 +494,7 @@ class FactureFournisseur extends CommonInvoice { $obj = $this->db->fetch_object($resql_rows); - $this->lines[$i] = new FactureFournisseurLigne($this->db); + $this->lines[$i] = new SupplierInvoiceLine($this->db); $this->lines[$i]->id = $obj->rowid; $this->lines[$i]->rowid = $obj->rowid; @@ -527,6 +504,7 @@ class FactureFournisseur extends CommonInvoice $this->lines[$i]->ref_supplier = $obj->ref_supplier; // Reference product supplier TODO Rename field ref to ref_supplier into table llx_facture_fourn_det and llx_commande_fournisseurdet and update fields it into updateline $this->lines[$i]->libelle = $obj->label; // This field may contains label of product (when invoice create from order) $this->lines[$i]->product_desc = $obj->product_desc; // Description du produit + $this->lines[$i]->subprice = $obj->pu_ht; $this->lines[$i]->pu_ht = $obj->pu_ht; $this->lines[$i]->pu_ttc = $obj->pu_ttc; $this->lines[$i]->tva_tx = $obj->tva_tx; @@ -534,7 +512,7 @@ class FactureFournisseur extends CommonInvoice $this->lines[$i]->localtax2_tx = $obj->localtax2_tx; $this->lines[$i]->qty = $obj->qty; $this->lines[$i]->remise_percent = $obj->remise_percent; - $this->lines[$i]->tva = $obj->tva; + $this->lines[$i]->tva = $obj->total_tva; $this->lines[$i]->total_ht = $obj->total_ht; $this->lines[$i]->total_tva = $obj->total_tva; $this->lines[$i]->total_localtax1 = $obj->total_localtax1; @@ -1313,7 +1291,7 @@ class FactureFournisseur extends CommonInvoice if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used { - $linetmp = new FactureFournisseurLigne($this->db); + $linetmp = new SupplierInvoiceLine($this->db); $linetmp->id=$this->rowid; $linetmp->array_options = $array_options; $result=$linetmp->insertExtraFields(); @@ -1858,6 +1836,18 @@ class FactureFournisseur extends CommonInvoice return $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref); } + /** + * Returns the rights used for this class + * @return stdClass + */ + public function getRights() + { + global $user; + + return $user->rights->fournisseur->facture; + } + + } @@ -1865,20 +1855,70 @@ class FactureFournisseur extends CommonInvoice /** * Class to manage line invoices */ -class FactureFournisseurLigne extends CommonInvoice +class SupplierInvoiceLine extends CommonInvoice { - var $db; - var $error; - - var $pu_ht; - var $pu_ttc; - public $element='facture_fourn_det'; public $table_element='facture_fourn_det'; - var $oldline; + var $oldline; - /** + public $ref; + public $product_ref; + public $ref_supplier; + public $libelle; + public $product_desc; + + /** + * Unit price before taxes + * @var float + * @deprecated Use $subprice + */ + public $pu_ht; + + /** + * Unit price included taxes + * @var float + */ + public $pu_ttc; + + /** + * Total VAT amount + * @var float + * @deprecated Use $total_tva instead + */ + public $tva; + + /** + * Id of the corresponding supplier invoice + * @var int + */ + var $fk_facture_fourn; + + /** + * Product label + * @var string + */ + var $label; // deprecated + + /** + * Description of the line + * @var string + */ + var $description; + + var $skip_update_total; // Skip update price total for special lines + + /** + * @var int Situation advance percentage + */ + public $situation_percent; + + /** + * @var int Previous situation line id reference + */ + public $fk_prev_id; + + /** * Constructor * * @param DoliDB $db Database handler diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 26a0b5a5438..3ca8aae79d5 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -2015,7 +2015,7 @@ elseif (! empty($object->id)) // Show object lines $inputalsopricewithtax=0; if (! empty($object->lines)) - $ret = $object->printObjectLines($action, $soc, $mysoc, $lineid, 1, $user->rights->fournisseur->commande->creer); + $ret = $object->printObjectLines($action, $soc, $mysoc, $lineid, 1); $num = count($object->lines); diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index a48534b4c24..e93d06ad530 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -2092,7 +2092,7 @@ else // Show object lines if (! empty($object->lines)) - $ret = $object->printObjectLines($action, $soc, $mysoc, $lineid, 1, $user->rights->fournisseur->facture->creer); + $ret = $object->printObjectLines($action, $soc, $mysoc, $lineid, 1); $num=count($object->lines); diff --git a/htdocs/margin/admin/margin.php b/htdocs/margin/admin/margin.php index f8beb7cd1ca..b031a190f44 100644 --- a/htdocs/margin/admin/margin.php +++ b/htdocs/margin/admin/margin.php @@ -72,7 +72,6 @@ if ($action == 'remises') { if (dolibarr_set_const($db, 'MARGIN_METHODE_FOR_DISCOUNT', $_POST['MARGIN_METHODE_FOR_DISCOUNT'], 'chaine', 0, '', $conf->entity) > 0) { - $conf->global->MARGIN_METHODE_FOR_DISCOUNT = $_POST['MARGIN_METHODE_FOR_DISCOUNT']; setEventMessage($langs->trans("RecordModifiedSuccessfully")); } else @@ -85,7 +84,6 @@ if ($action == 'typemarges') { if (dolibarr_set_const($db, 'MARGIN_TYPE', $_POST['MARGIN_TYPE'], 'chaine', 0, '', $conf->entity) > 0) { - $conf->global->MARGIN_METHODE_FOR_DISCOUNT = $_POST['MARGIN_TYPE']; setEventMessage($langs->trans("RecordModifiedSuccessfully")); } else @@ -98,7 +96,6 @@ if ($action == 'contact') { if (dolibarr_set_const($db, 'AGENT_CONTACT_TYPE', $_POST['AGENT_CONTACT_TYPE'], 'chaine', 0, '', $conf->entity) > 0) { - $conf->global->AGENT_CONTACT_TYPE = $_POST['AGENT_CONTACT_TYPE']; setEventMessage($langs->trans("RecordModifiedSuccessfully")); } else diff --git a/htdocs/projet/admin/project.php b/htdocs/projet/admin/project.php index 915d4ef69ef..a29bb9a2d63 100644 --- a/htdocs/projet/admin/project.php +++ b/htdocs/projet/admin/project.php @@ -237,12 +237,7 @@ if ($action == 'deltask') // Set default model else if ($action == 'setdoc') { - if (dolibarr_set_const($db, "PROJECT_ADDON_PDF",$value,'chaine',0,'',$conf->entity)) - { - // La constante qui a ete lue en avant du nouveau set - // on passe donc par une variable pour avoir un affichage coherent - $conf->global->PROJECT_ADDON_PDF = $value; - } + dolibarr_set_const($db, "PROJECT_ADDON_PDF",$value,'chaine',0,'',$conf->entity); // On active le modele $ret = delDocumentModel($value, $type); diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php index 8fec81c686c..881946cb1cd 100644 --- a/htdocs/societe/admin/societe.php +++ b/htdocs/societe/admin/societe.php @@ -165,10 +165,7 @@ if ($action == 'setdoc') $db->begin(); - if (dolibarr_set_const($db, "COMPANY_ADDON_PDF",$value,'chaine',0,'',$conf->entity)) - { - $conf->global->COMPANY_ADDON_PDF = $value; - } + dolibarr_set_const($db, "COMPANY_ADDON_PDF",$value,'chaine',0,'',$conf->entity); // On active le modele $type='company'; From 3d50b41b8e4dd85e02d76c0cec0e149478a2f6ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Mon, 23 Mar 2015 01:17:43 +0100 Subject: [PATCH 369/429] Reverted $rowid instead of $id property --- htdocs/commande/class/commande.class.php | 1 - htdocs/compta/facture/class/facture.class.php | 1 - htdocs/core/class/commonobject.class.php | 4 ++-- htdocs/core/class/commonobjectline.class.php | 2 +- htdocs/core/tpl/objectline_edit.tpl.php | 4 ++-- htdocs/core/tpl/objectline_view.tpl.php | 12 ++++++------ htdocs/fourn/class/fournisseur.commande.class.php | 1 - 7 files changed, 11 insertions(+), 14 deletions(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 2d377758aa5..ac567742f0f 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -3178,7 +3178,6 @@ class Commande extends CommonOrder $this->lines[$i] = new OrderLine($this->db); $this->lines[$i]->id = $obj->rowid; - $this->lines[$i]->rowid = $obj->rowid; $this->lines[$i]->label = $obj->custom_label; $this->lines[$i]->description = $obj->description; $this->lines[$i]->fk_product = $obj->fk_product; diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 38fab4c217c..9cacb6389ac 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -3408,7 +3408,6 @@ class Facture extends CommonInvoice $this->lines[$i] = new FactureLigne($this->db); $this->lines[$i]->id = $obj->rowid; - $this->lines[$i]->rowid = $obj->rowid; $this->lines[$i]->label = $obj->custom_label; // deprecated $this->lines[$i]->description = $obj->description; $this->lines[$i]->fk_product = $obj->fk_product; diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 5dc524d964c..d240c13110b 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2821,7 +2821,7 @@ abstract class CommonObject if (! empty($line->date_end)) $type=1; // deprecated // Ligne en mode visu - if ($action != 'editline' || $selected != $line->rowid) + if ($action != 'editline' || $selected != $line->id) { // Product if ($line->fk_product > 0) @@ -2879,7 +2879,7 @@ abstract class CommonObject } // Ligne en mode update - if ($this->statut == 0 && $action == 'editline' && $selected == $line->rowid) + if ($this->statut == 0 && $action == 'editline' && $selected == $line->id) { $label = (! empty($line->label) ? $line->label : (($line->fk_product > 0) ? $line->product_label : '')); if (! empty($conf->global->MAIN_HTML5_PLACEHOLDER)) $placeholder=' placeholder="'.$langs->trans("Label").'"'; diff --git a/htdocs/core/class/commonobjectline.class.php b/htdocs/core/class/commonobjectline.class.php index b88dfabe83d..b252a690da6 100644 --- a/htdocs/core/class/commonobjectline.class.php +++ b/htdocs/core/class/commonobjectline.class.php @@ -31,13 +31,13 @@ abstract class CommonObjectLine extends CommonObject /** * Id of the line * @var int - * @deprecated Use $rowid */ public $id; /** * Id of the line * @var int + * @deprecated Try to use id property as possible */ public $rowid; diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php index 6be8a82d69a..5b895a69da3 100644 --- a/htdocs/core/tpl/objectline_edit.tpl.php +++ b/htdocs/core/tpl/objectline_edit.tpl.php @@ -53,9 +53,9 @@ $coldisplay=-1; // We remove first td ?> > global->MAIN_VIEW_LINE_NUMBER) ? ' colspan="2"' : ''); ?>>global->MAIN_VIEW_LINE_NUMBER))?2:1; ?> -
+
- + diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index c283f846d0f..7b4f27ae87e 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -48,11 +48,11 @@ if (empty($usemargins)) $usemargins=0; ?> -> +> global->MAIN_VIEW_LINE_NUMBER)) { ?> -
+
info_bits & 2) == 2) { ?> info_bits & 2) == 2) { ?> - rowid.'#line_'.$line->rowid; ?>"> + id.'#line_'.$line->id; ?>"> @@ -192,7 +192,7 @@ if (empty($usemargins)) $usemargins=0; situation_counter == 1 || !$this->situation_cycle_ref) { - print 'rowid . '">'; + print 'id . '">'; print img_delete(); print ''; } @@ -202,12 +202,12 @@ if (empty($usemargins)) $usemargins=0; 1 && empty($conf->browser->phone) && ($this->situation_counter == 1 || !$this->situation_cycle_ref)) { ?> 0) { ?> - rowid; ?>"> + id; ?>"> - rowid; ?>"> + id; ?>"> diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index e52b98b7e53..52c215de6a4 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -260,7 +260,6 @@ class CommandeFournisseur extends CommonOrder $line = new CommandeFournisseurLigne($this->db); $line->id = $objp->rowid; - $line->rowid = $objp->rowid; $line->desc = $objp->description; $line->description = $objp->description; $line->qty = $objp->qty; From f4b1d95b3ef460bd30be09d0b554014c81261f70 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2015 02:39:41 +0100 Subject: [PATCH 370/429] Some fix for multicompany module --- htdocs/conf/conf.php.example | 6 ++---- htdocs/user/card.php | 10 +++++----- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/htdocs/conf/conf.php.example b/htdocs/conf/conf.php.example index 67147a6d06b..9982e91095e 100644 --- a/htdocs/conf/conf.php.example +++ b/htdocs/conf/conf.php.example @@ -313,10 +313,8 @@ $dolibarr_main_db_prefix=''; // multicompany_transverse_mode // Prerequisite: Need external module "multicompany" -// Pyramidal (0): The rights and groups are managed in each entity, -// users belong to the entity for their rights. -// Transversal (1): The groups can belong only to the master entity -// and that the user belongs to a particular entity +// Pyramidal (0): The rights and groups are managed in each entity. Each user belongs to the entity he was created into. +// Transversal (1): The user is managed only into master entity and belongs to all entities or only one dedicated entity. // Default value: 0 (pyramidal) // Examples: // $multicompany_transverse_mode='1'; diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 0bcba1caca8..67fe45d4c5c 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -984,7 +984,7 @@ if (($action == 'create') || ($action == 'adduserldap')) print ''; print ''; print "\n"; - + // Accountancy code if ($conf->salaries->enabled) { @@ -1337,7 +1337,7 @@ else print ''.$langs->trans("AccountancyCode").''; print ''.$object->accountancy_code.''; } - + // Color user if (! empty($conf->agenda->enabled)) { @@ -1425,7 +1425,7 @@ else if (! empty($conf->multicompany->enabled) && empty($conf->multicompany->transverse_mode) && $conf->entity == 1 && $user->admin && ! $user->entity) { print ''.$langs->trans("Entity").''; - if ($object->admin && ! $object->entity) + if (empty($object->entity)) { print $langs->trans("AllEntities"); } @@ -2049,7 +2049,7 @@ else } print ''; print ""; - } + } // User color if (! empty($conf->agenda->enabled)) @@ -2119,7 +2119,7 @@ else if (empty($conf->multicompany->transverse_mode) && $conf->entity == 1 && $user->admin && ! $user->entity) { print "".''.$langs->trans("Entity").''; - print "".$mc->select_entities($object->entity); + print "".$mc->select_entities($object->entity, 'entity', '', 0, 1); // last parameter 1 means, show also a choice 0=>'all entities' print "\n"; } else From 042556a9cf84ca356020c41d0dbbdfb1a77613b2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2015 03:50:55 +0100 Subject: [PATCH 371/429] Better comments --- htdocs/conf/conf.php.example | 2 +- htdocs/core/login/functions_ldap.php | 6 +++++- htdocs/user/card.php | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/htdocs/conf/conf.php.example b/htdocs/conf/conf.php.example index 9982e91095e..e6d3ba0d73c 100644 --- a/htdocs/conf/conf.php.example +++ b/htdocs/conf/conf.php.example @@ -314,7 +314,7 @@ $dolibarr_main_db_prefix=''; // multicompany_transverse_mode // Prerequisite: Need external module "multicompany" // Pyramidal (0): The rights and groups are managed in each entity. Each user belongs to the entity he was created into. -// Transversal (1): The user is managed only into master entity and belongs to all entities or only one dedicated entity. +// Transversal (1): The user is created and managed only into master entity but can login to all entities. // Default value: 0 (pyramidal) // Examples: // $multicompany_transverse_mode='1'; diff --git a/htdocs/core/login/functions_ldap.php b/htdocs/core/login/functions_ldap.php index 88a5f55de19..993249f3126 100644 --- a/htdocs/core/login/functions_ldap.php +++ b/htdocs/core/login/functions_ldap.php @@ -173,7 +173,11 @@ function check_user_password_ldap($usertotest,$passwordtotest,$entitytotest) global $mc; $ret=$mc->checkRight($user->id, $entitytotest); - if ($ret < 0) $login=false; // provoque l'echec de l'identification + if ($ret < 0) + { + dol_syslog("Failed to checkRight by module multicompany for user id = ".$user->id." into entity ".$entitytotest); + $login=false; // force error of authentication + } } diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 67fe45d4c5c..b77022fed4e 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -213,7 +213,7 @@ if ($action == 'add' && $canadduser) $ret = $extrafields->setOptionalsFromPost($extralabels,$object); if ($ret < 0) $error++; - // If multicompany is off, admin users must all be on entity 0. + // Set entity property $entity=GETPOST('entity','int'); if (! empty($conf->multicompany->enabled)) { From e269aa83b5a84e8bc18d95208eeaef5849530c7c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2015 04:16:58 +0100 Subject: [PATCH 372/429] More comments --- htdocs/core/login/functions_dolibarr.php | 2 +- htdocs/core/login/functions_ldap.php | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/core/login/functions_dolibarr.php b/htdocs/core/login/functions_dolibarr.php index 8e5a8b13ea9..0a0ab1e8bfe 100644 --- a/htdocs/core/login/functions_dolibarr.php +++ b/htdocs/core/login/functions_dolibarr.php @@ -101,7 +101,7 @@ function check_user_password_dolibarr($usertotest,$passwordtotest,$entitytotest= if ($passok && ! empty($obj->entity) && (! empty($conf->multicompany->enabled) && ! empty($conf->multicompany->transverse_mode))) { - $ret=$mc->checkRight($obj->rowid, $entitytotest); + $ret=$mc->checkRight($obj->rowid, $entitytotest); // The module multicompany check here user belong to at least one group into company. This is a bugged behaviour, so you must hack module to make thing working. if ($ret < 0) $passok=false; } diff --git a/htdocs/core/login/functions_ldap.php b/htdocs/core/login/functions_ldap.php index 993249f3126..a67bc040e2f 100644 --- a/htdocs/core/login/functions_ldap.php +++ b/htdocs/core/login/functions_ldap.php @@ -169,10 +169,11 @@ function check_user_password_ldap($usertotest,$passwordtotest,$entitytotest) dol_syslog("functions_ldap::check_user_password_ldap Sync user found id=".$user->id); // On verifie si le login a change et on met a jour les attributs dolibarr - if ($conf->multicompany->enabled) { + if ($conf->multicompany->enabled) + { global $mc; - $ret=$mc->checkRight($user->id, $entitytotest); + $ret=$mc->checkRight($user->id, $entitytotest, $user); // The module multicompany check here user belong to at least one group into company. This is a bugged behaviour, so you must hack module to make thing working. if ($ret < 0) { dol_syslog("Failed to checkRight by module multicompany for user id = ".$user->id." into entity ".$entitytotest); From 7ad0a325599776231ca235afc65493ffba6e7e33 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2015 04:51:24 +0100 Subject: [PATCH 373/429] Fix for multicompany users. --- htdocs/user/home.php | 2 +- htdocs/user/index.php | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/user/home.php b/htdocs/user/home.php index c9b3693f1ac..ffc71ae8798 100644 --- a/htdocs/user/home.php +++ b/htdocs/user/home.php @@ -161,7 +161,7 @@ if ($resql) { if (! empty($conf->multicompany->enabled)) { - if ($obj->admin && ! $obj->entity) + if (empty($obj->entity)) { print ' ('.$langs->trans("AllEntities").')'; } diff --git a/htdocs/user/index.php b/htdocs/user/index.php index 5d0b0ac77e4..9e3e40b2e59 100644 --- a/htdocs/user/index.php +++ b/htdocs/user/index.php @@ -125,9 +125,11 @@ if ($result) print ' '; print "\n"; - //SearchBar + // SearchBar + $colspan=7; + if (! empty($conf->multicompany->enabled) && empty($conf->multicompany->transverse_mode)) $colspan++; print ''; - print ' '; + print ' '; // Status print ''; From 994606dbc9a21b538474111c3aaac5a581b7d296 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2015 05:09:55 +0100 Subject: [PATCH 374/429] More space for tables (=> to follow css bootsrap rules) --- htdocs/theme/eldy/style.css.php | 49 ++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index a6de7baa28d..40ca7d92699 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1741,24 +1741,24 @@ table.noborder, table.formdoc, div.noborder { border-collapse: separate !important; border-spacing: 0px; - +/* border-right-width: 1px; border-right-color: #BBBBBB; border-right-style: solid; - border-left-width: 1px; - border-left-color: #B0B0B0; - border-left-style: solid; - border-bottom-width: 1px; border-bottom-color: #BBBBBB; border-bottom-style: solid; +*/ + border-left-width: 1px; + border-left-color: #DDDDDD; + border-left-style: solid; margin: 0px 0px 2px 0px; - -moz-box-shadow: 2px 2px 4px #DDD; - -webkit-box-shadow: 2px 2px 4px #DDD; - box-shadow: 2px 2px 4px #DDD; + -moz-box-shadow: 3px 3px 4px #ddd; + -webkit-box-shadow: 3px 3px 4px #ddd; + box-shadow: 3px 3px 4px #ddd; -moz-border-radius: 0.2em; -webkit-border-radius: 0.2em; @@ -1775,7 +1775,7 @@ table.noborder tr, div.noborder form { border-left-width: 1px; border-left-color: #BBBBBB; border-left-style: solid; - height: 20px; + height: 26px; } table.noborder th, table.noborder td, div.noborder form, div.noborder form div { @@ -1799,9 +1799,10 @@ table.nobordernopadding td { table.liste { width: 100%; + border-collapse: collapse; border-top-color: #FEFEFE; - +/* border-right-width: 1px; border-right-color: #BBBBBB; border-right-style: solid; @@ -1809,7 +1810,7 @@ table.liste { border-left-width: 1px; border-left-color: #CCCCCC; border-left-style: solid; - +*/ border-bottom-width: 1px; border-bottom-color: #BBBBBB; border-bottom-style: solid; @@ -1817,9 +1818,9 @@ table.liste { margin-bottom: 2px; margin-top: 0px; - -moz-box-shadow: 3px 3px 4px #DDD; - -webkit-box-shadow: 3px 3px 4px #DDD; - box-shadow: 3px 3px 4px #DDD; + -moz-box-shadow: 0px 3px 4px #DDD; + -webkit-box-shadow: 0px 3px 4px #DDD; + box-shadow: 0px 3px 4px #DDD; } table.liste td { padding-right: 2px; @@ -1893,6 +1894,7 @@ table.liste td { } .pair, .nohover .pair:hover, tr.pair td.nohover { +/* background: linear-gradient(bottom, rgb() 85%, rgb() 100%); background: -o-linear-gradient(bottom, rgb() 85%, rgb() 100%); @@ -1902,12 +1904,18 @@ table.liste td { background: #ffffff; +*/ font-family: ; border: 0px; margin-bottom: 1px; color: #202020; -} + background-color: #f9f9f9; +} +tr.pair td, tr.impair td { + padding: 4px; + border-bottom: 1px solid #ddd; +} div.liste_titre .tagtd { vertical-align: middle; } @@ -2067,8 +2075,9 @@ tr.box_impair { font-family: ; } + tr.box_pair { - +/* background: -o-linear-gradient(bottom, rgb() 85%, rgb() 100%); background: -moz-linear-gradient(bottom, rgb() 85%, rgb() 100%); background: -webkit-linear-gradient(bottom, rgb() 85%, rgb() 100%); @@ -2077,7 +2086,15 @@ tr.box_pair { background: #ffffff; +*/ font-family: ; + + background-color: #f9f9f9; +} + +tr.box_pair td, tr.box_impair td { + padding: 4px; + border-bottom: 1px solid #ddd; } .formboxfilter { From f6d8d2eb23de0d54bf9199a80aa68e45864a9a32 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Mon, 23 Mar 2015 06:56:12 +0100 Subject: [PATCH 375/429] Correct stats --- .../donations/class/donationstats.class.php | 24 +++++++------------ htdocs/donations/stats/index.php | 4 ++-- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/htdocs/donations/class/donationstats.class.php b/htdocs/donations/class/donationstats.class.php index 74fd4d3d6f1..b26617d651b 100644 --- a/htdocs/donations/class/donationstats.class.php +++ b/htdocs/donations/class/donationstats.class.php @@ -63,19 +63,14 @@ class DonationStats extends Stats $this->cachefilesuffix = $mode; $object=new Don($this->db); - $this->from = MAIN_DB_PREFIX.$object->table_element." as c"; + $this->from = MAIN_DB_PREFIX.$object->table_element." as d"; //$this->from.= ", ".MAIN_DB_PREFIX."societe as s"; //$this->field='weight'; // Warning, unit of weight is NOT USED AND MUST BE - $this->where.= " c.fk_statut > 0"; // Not draft and not cancelled + $this->where.= " d.fk_statut > 0"; // Not draft and not cancelled //$this->where.= " AND c.fk_soc = s.rowid AND c.entity = ".$conf->entity; - $this->where.= " AND c.entity = ".$conf->entity; - if (!$user->rights->societe->client->voir && !$this->socid) $this->where .= " AND c.fk_soc = sc.fk_soc AND sc.fk_user = " .$user->id; - if ($this->socid) - { - $this->where.=" AND c.fk_soc = ".$this->socid; - } - if ($this->userid > 0) $this->where.=' AND c.fk_user_author = '.$this->userid; + $this->where.= " AND d.entity = ".$conf->entity; + if ($this->userid > 0) $this->where.=' WHERE c.fk_user_author = '.$this->userid; } /** @@ -88,10 +83,9 @@ class DonationStats extends Stats { global $user; - $sql = "SELECT date_format(c.date_valid,'%m') as dm, COUNT(*) as nb"; + $sql = "SELECT date_format(d.datedon,'%m') as dm, COUNT(*) as nb"; $sql.= " FROM ".$this->from; - if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE c.date_valid BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'"; + $sql.= " WHERE d.datedon BETWEEN '".$this->db->idate(dol_get_first_day($year))."' AND '".$this->db->idate(dol_get_last_day($year))."'"; $sql.= " AND ".$this->where; $sql.= " GROUP BY dm"; $sql.= $this->db->order('dm','DESC'); @@ -110,9 +104,8 @@ class DonationStats extends Stats { global $user; - $sql = "SELECT date_format(c.date_valid,'%Y') as dm, COUNT(*) as nb, SUM(c.".$this->field.")"; + $sql = "SELECT date_format(d.datedon,'%Y') as dm, COUNT(*) as nb, SUM(d.".$this->field.")"; $sql.= " FROM ".$this->from; - if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE ".$this->where; $sql.= " GROUP BY dm"; $sql.= $this->db->order('dm','DESC'); @@ -129,9 +122,8 @@ class DonationStats extends Stats { global $user; - $sql = "SELECT date_format(c.date_valid,'%Y') as year, COUNT(*) as nb, SUM(c.".$this->field.") as total, AVG(".$this->field.") as avg"; + $sql = "SELECT date_format(d.datedon,'%Y') as year, COUNT(*) as nb, SUM(d.".$this->field.") as total, AVG(".$this->field.") as avg"; $sql.= " FROM ".$this->from; - if (!$user->rights->societe->client->voir && !$this->socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE ".$this->where; $sql.= " GROUP BY year"; $sql.= $this->db->order('year','DESC'); diff --git a/htdocs/donations/stats/index.php b/htdocs/donations/stats/index.php index f6fc43ce90a..0a58751b8ed 100644 --- a/htdocs/donations/stats/index.php +++ b/htdocs/donations/stats/index.php @@ -213,12 +213,12 @@ if (! count($arrayyears)) $arrayyears[$nowyear]=$nowyear; $h=0; $head = array(); -$head[$h][0] = DOL_URL_ROOT . '/commande/stats/index.php?mode='.$mode; +$head[$h][0] = DOL_URL_ROOT . '/donations/stats/index.php?mode='.$mode; $head[$h][1] = $langs->trans("ByMonthYear"); $head[$h][2] = 'byyear'; $h++; -$type='shipment_stats'; +$type='donation_stats'; complete_head_from_modules($conf,$langs,null,$head,$h,$type); From 5617fb14b26e0ded136cf88eb2f3bf822fa71871 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Mon, 23 Mar 2015 09:52:05 +0100 Subject: [PATCH 376/429] fix skeletton --- dev/skeletons/skeleton_class.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/skeletons/skeleton_class.class.php b/dev/skeletons/skeleton_class.class.php index c59b3986a08..ff0c2f61200 100644 --- a/dev/skeletons/skeleton_class.class.php +++ b/dev/skeletons/skeleton_class.class.php @@ -221,7 +221,7 @@ class Skeleton_Class extends CommonObject $line->prop1 = $obj->field1; $line->prop2 = $obj->field2; - $this->line[]=$line; + $this->lines[]=$line; //... } $this->db->free($resql); From 5d2e09ec5146b366dc8fb99f6277887d065baad1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2015 12:31:32 +0100 Subject: [PATCH 377/429] Fix: navigation in page was wrong and typo errors. --- htdocs/product/popuprop.php | 74 ++++++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 29 deletions(-) diff --git a/htdocs/product/popuprop.php b/htdocs/product/popuprop.php index 92ad4cfbe1f..376647834b5 100644 --- a/htdocs/product/popuprop.php +++ b/htdocs/product/popuprop.php @@ -44,6 +44,8 @@ if ($page < 0) $page = 0; if (! $sortfield) $sortfield="c"; if (! $sortorder) $sortorder="DESC"; +$conf->liste_limit = 3; + if ($page == -1) $page = 0; $limit = $conf->liste_limit; $offset = $limit * $page ; @@ -57,36 +59,28 @@ $staticproduct=new Product($db); */ $helpurl=''; -if ($type == 0) +if ($type == '0') { $helpurl='EN:Module_Products|FR:Module_Produits|ES:Módulo_Productos'; + //$title=$langs->trans("StatisticsOfProducts"); + $title=$langs->trans("Statistics"); } -else if ($type == 1) +else if ($type == '1') { $helpurl='EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios'; + $title=$langs->trans("StatisticsOfServices"); + $title=$langs->trans("Statistics"); } llxHeader('','',$helpurl); -//On n'affiche le lien page suivante que s'il y a une page suivante ... -$sql = "SELECT count(*) as c"; -$sql.= " FROM ".MAIN_DB_PREFIX."product"; -$sql.= ' WHERE entity IN ('.getEntity('product', 1).')'; -if ($type !== '') { - $sql.= " AND fk_product_type = ".$type; -} +print_fiche_titre($title, $mesg); -$result=$db->query($sql); -if ($result) -{ - $obj = $db->fetch_object($result); - $num = $obj->c; -} $param = ''; $title = $langs->trans("ListProductServiceByPopularity"); -if ($type !== '') { - $param = '&type='.$type; +if ($type != '') { + $param = '&type='.$type; if ($type == 1) { $title = $langs->trans("ListServiceByPopularity"); @@ -95,17 +89,17 @@ if ($type !== '') { } } -print_barre_liste($title, $page, $_SERVER["PHP_SELF"],$param,"","","",$num); +$h=0; +$head = array(); +$head[$h][0] = $_SERVER['PHP_SELF']; +$head[$h][1] = $title; +$head[$h][2] = 'product'; +$h++; + +dol_fiche_head($head,'product',$langs->trans("Statistics")); -print ''; -print ""; -print_liste_field_titre($langs->trans('Ref'), $_SERVER["PHP_SELF"], 'p.ref', '', '', '', $sortfield, $sortorder); -print_liste_field_titre($langs->trans('Type'), $_SERVER["PHP_SELF"], 'p.type', '', '', '', $sortfield, $sortorder); -print_liste_field_titre($langs->trans('Label'), $_SERVER["PHP_SELF"], 'p.label', '', '', '', $sortfield, $sortorder); -print_liste_field_titre($langs->trans('NbOfProposals'), $_SERVER["PHP_SELF"], 'c', '', '', 'align="right"', $sortfield, $sortorder); -print "\n"; $sql = "SELECT p.rowid, p.label, p.ref, p.fk_product_type as type, count(*) as c"; $sql.= " FROM ".MAIN_DB_PREFIX."propaldet as pd"; @@ -116,8 +110,15 @@ if ($type !== '') { $sql.= " AND fk_product_type = ".$type; } $sql.= " GROUP BY (p.rowid)"; + +$result=$db->query($sql); +if ($result) +{ + $totalnboflines = $db->num_rows($result); +} + $sql.= $db->order($sortfield,$sortorder); -$sql.= $db->plimit($limit, $offset); +$sql.= $db->plimit($limit+1, $offset); $result=$db->query($sql); if ($result) @@ -125,6 +126,18 @@ if ($result) $num = $db->num_rows($result); $i = 0; + print_barre_liste($title, $page, $_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,"",$num, $totalnboflines, ''); + + print '
'; + + print ""; + print_liste_field_titre($langs->trans('Ref'), $_SERVER["PHP_SELF"], 'p.ref', '', '', '', $sortfield, $sortorder); + print_liste_field_titre($langs->trans('Type'), $_SERVER["PHP_SELF"], 'p.type', '', '', '', $sortfield, $sortorder); + print_liste_field_titre($langs->trans('Label'), $_SERVER["PHP_SELF"], 'p.label', '', '', '', $sortfield, $sortorder); + print_liste_field_titre($langs->trans('NbOfProposals'), $_SERVER["PHP_SELF"], 'c', '', '', 'align="right"', $sortfield, $sortorder); + print "\n"; + + $var=True; while ($i < $num) { @@ -155,8 +168,8 @@ if ($result) print " "; print $objp->ref.''; print ''; print ''; print ''; @@ -165,9 +178,12 @@ if ($result) } $db->free(); + + print "
'; - if ($objp->type==1) print $langs->trans("ShowService"); - else print $langs->trans("ShowProduct"); + if ($objp->type==1) print $langs->trans("Service"); + else print $langs->trans("Product"); print ''.$objp->label.''.$objp->c.'
"; } -print ""; + +dol_fiche_end(); llxFooter(); From cbadfa50751354327bbf9ecc449f95296e996131 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2015 12:44:41 +0100 Subject: [PATCH 378/429] NEW: Title of page project contains project ref and label --- htdocs/projet/card.php | 6 ++++-- htdocs/projet/contact.php | 4 +++- htdocs/projet/document.php | 6 +++++- htdocs/projet/element.php | 2 ++ htdocs/projet/ganttview.php | 4 +++- htdocs/projet/note.php | 4 +++- htdocs/projet/tasks.php | 4 +++- 7 files changed, 23 insertions(+), 7 deletions(-) diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 990640f0fee..a971f9b51dd 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -371,9 +371,11 @@ $form = new Form($db); $formfile = new FormFile($db); $userstatic = new User($db); - +$title=$langs->trans("Project").' - '.$object->ref.' '.$object->name; +if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/projectnameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->ref.' '.$object->name; $help_url="EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos"; -llxHeader("",$langs->trans("Projects"),$help_url); + +llxHeader("",$title,$help_url); if ($action == 'create' && $user->rights->projet->creer) diff --git a/htdocs/projet/contact.php b/htdocs/projet/contact.php index 594ed1feffe..9c3d5e61364 100644 --- a/htdocs/projet/contact.php +++ b/htdocs/projet/contact.php @@ -120,8 +120,10 @@ if (($action == 'deleteline' || $action == 'deletecontact') && $user->rights->pr * View */ +$title=$langs->trans("ProjectContact").' - '.$object->ref.' '.$object->name; +if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/projectnameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->ref.' '.$object->name.' - '.$langs->trans("ProjectContact"); $help_url="EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos"; -llxHeader('', $langs->trans("Project"), $help_url); +llxHeader('', $title, $help_url); $form = new Form($db); $formcompany= new FormCompany($db); diff --git a/htdocs/projet/document.php b/htdocs/projet/document.php index bb381ae8b38..b33a7e40287 100644 --- a/htdocs/projet/document.php +++ b/htdocs/projet/document.php @@ -77,7 +77,11 @@ include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php * View */ -llxHeader('',$langs->trans('Project'),'EN:Customers_Orders|FR:Commandes_Clients|ES:Pedidos de clientes'); +$title=$langs->trans("Project").' - '.$langs->trans("Document").' - '.$object->ref.' '.$object->name; +if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/projectnameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->ref.' '.$object->name.' - '.$langs->trans("Document"); +$help_url="EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos"; + +llxHeader('',$title,$help_url); $form = new Form($db); diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 3075d128066..b688f365e38 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -94,6 +94,8 @@ $result = restrictedArea($user, 'projet', $projectid); * View */ +$title=$langs->trans("ProjectReferers").' - '.$object->ref.' '.$object->name; +if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/projectnameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->ref.' '.$object->name.' - '.$langs->trans("ProjectReferers"); $help_url="EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos"; llxHeader("",$langs->trans("Referers"),$help_url); diff --git a/htdocs/projet/ganttview.php b/htdocs/projet/ganttview.php index 181aeca032a..5f1589d59dc 100644 --- a/htdocs/projet/ganttview.php +++ b/htdocs/projet/ganttview.php @@ -77,8 +77,10 @@ if (! empty($conf->use_javascript_ajax)) ); } +$title=$langs->trans("Project").' - '.$langs->trans("Gantt").' - '.$object->ref.' '.$object->name; +if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/projectnameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->ref.' '.$object->name.' - '.$langs->trans("Gantt"); $help_url="EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos"; -llxHeader("",$langs->trans("Tasks"),$help_url,'',0,0,$arrayofjs,$arrayofcss); +llxHeader("",$title,$help_url,'',0,0,$arrayofjs,$arrayofcss); if ($id > 0 || ! empty($ref)) { diff --git a/htdocs/projet/note.php b/htdocs/projet/note.php index 6e7b0e28595..583326b3e34 100644 --- a/htdocs/projet/note.php +++ b/htdocs/projet/note.php @@ -58,8 +58,10 @@ include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, * View */ +$title=$langs->trans("Project").' - '.$langs->trans("Note").' - '.$object->ref.' '.$object->name; +if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/projectnameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->ref.' '.$object->name.' - '.$langs->trans("Note"); $help_url="EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos"; -llxHeader("",$langs->trans("Project"),$help_url); +llxHeader("",$title,$help_url); $form = new Form($db); $userstatic=new User($db); diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php index 96618fc83d4..b3549d3a727 100644 --- a/htdocs/projet/tasks.php +++ b/htdocs/projet/tasks.php @@ -177,8 +177,10 @@ $formother=new FormOther($db); $taskstatic = new Task($db); $userstatic=new User($db); +$title=$langs->trans("Project").' - '.$langs->trans("Tasks").' - '.$object->ref.' '.$object->name; +if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/projectnameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->ref.' '.$object->name.' - '.$langs->trans("Tasks"); $help_url="EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos"; -llxHeader("",$langs->trans("Tasks"),$help_url); +llxHeader("",$title,$help_url); if ($id > 0 || ! empty($ref)) { From c6ad35e00185375d53d84c7e8b39d45f0af36513 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Mon, 23 Mar 2015 13:40:55 +0100 Subject: [PATCH 379/429] Implemented statuses submenu for List menu of supplier and customer invoices. Menu "Pending payment" has been moved to the "List" submenu. --- htdocs/core/menus/standard/eldy.lib.php | 18 ++++++++++++++++-- htdocs/fourn/facture/list.php | 7 +++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 7c6ef944f7c..cc97470a310 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -3,6 +3,7 @@ * Copyright (C) 2010 Regis Houssin * Copyright (C) 2012-2014 Juanjo Menent * Copyright (C) 2013 Cédric Salvador + * Copyright (C) 2015 Marcos García * * 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 @@ -738,8 +739,14 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills",$langs->trans("BillsCustomers"),0,$user->rights->facture->lire, '', $mainmenu, 'customers_bills'); $newmenu->add("/compta/facture.php?action=create&leftmenu=customers_bills",$langs->trans("NewBill"),1,$user->rights->facture->creer); $newmenu->add("/compta/facture/fiche-rec.php?leftmenu=customers_bills",$langs->trans("Repeatables"),1,$user->rights->facture->lire); + $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills",$langs->trans("List"),1,$user->rights->facture->lire); - $newmenu->add("/compta/facture/impayees.php?leftmenu=customers_bills",$langs->trans("Unpaid"),1,$user->rights->facture->lire); + if (empty($leftmenu) || ($leftmenu == 'customers_bills')) { + $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills&search_status=0",$langs->trans("BillShortStatusDraft"),2,$user->rights->facture->lire); + $newmenu->add("/compta/facture/impayees.php?leftmenu=customers_bills",$langs->trans("BillShortStatusNotPaid"),2,$user->rights->facture->lire); + $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills&search_status=2",$langs->trans("BillShortStatusPaid"),2,$user->rights->facture->lire); + $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills&search_status=3",$langs->trans("BillShortStatusCanceled"),2,$user->rights->facture->lire); + } $newmenu->add("/compta/paiement/list.php?leftmenu=customers_bills_payments",$langs->trans("Payments"),1,$user->rights->facture->lire); @@ -758,7 +765,14 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $langs->load("bills"); $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills", $langs->trans("BillsSuppliers"),0,$user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills'); $newmenu->add("/fourn/facture/card.php?action=create",$langs->trans("NewBill"),1,$user->rights->fournisseur->facture->creer); - $newmenu->add("/fourn/facture/impayees.php", $langs->trans("Unpaid"),1,$user->rights->fournisseur->facture->lire); + $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills", $langs->trans("List"),1,$user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills'); + + if (empty($leftmenu) || ($leftmenu == 'suppliers_bills')) { + $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills&search_status=0", $langs->trans("BillShortStatusDraft"),2,$user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills'); + $newmenu->add("/fourn/facture/impayees.php", $langs->trans("BillShortStatusNotPaid"),2,$user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills'); + $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills&search_status=2", $langs->trans("BillShortStatusPaid"),2,$user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills'); + } + $newmenu->add("/fourn/facture/paiement.php", $langs->trans("Payments"),1,$user->rights->fournisseur->facture->lire); $newmenu->add("/compta/facture/stats/index.php?leftmenu=suppliers_bills&mode=supplier", $langs->trans("Statistics"),1,$user->rights->fournisseur->facture->lire); diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index 66ad20e4c05..3c1b0f06cb6 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -5,6 +5,7 @@ * Copyright (C) 2013 Philippe Grand * Copyright (C) 2013 Florian Henry * Copyright (C) 2013 Cédric Salvador + * Copyright (C) 2015 Marcos García * * 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 @@ -70,6 +71,7 @@ $search_label = GETPOST("search_label","alpha"); $search_company = GETPOST("search_company","alpha"); $search_amount_no_tax = GETPOST("search_amount_no_tax","alpha"); $search_amount_all_tax = GETPOST("search_amount_all_tax","alpha"); +$search_status=GETPOST('search_status','alpha'); $month = GETPOST("month","int"); $year = GETPOST("year","int"); $filter = GETPOST("filtre"); @@ -188,6 +190,11 @@ if ($search_amount_all_tax != '') $sql .= natural_search('fac.total_ttc', $search_amount_all_tax, 1); } +if ($search_status != '') +{ + $sql.= " AND fac.fk_statut = '".$db->escape($search_status)."'"; +} + $nbtotalofrecords = 0; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { From b7a466c95fd0408abb64a082467e3992c631cacb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2015 13:50:14 +0100 Subject: [PATCH 380/429] Fix bad style for total --- htdocs/core/boxes/box_activity.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/core/boxes/box_activity.php b/htdocs/core/boxes/box_activity.php index d118bc8a4bc..5268cc0625e 100644 --- a/htdocs/core/boxes/box_activity.php +++ b/htdocs/core/boxes/box_activity.php @@ -282,11 +282,11 @@ class box_activity extends ModeleBoxes } // Add the sum in the bottom of the boxes - $this->info_box_contents[$i][1] = array('td' => 'align="left" ', 'text' => $langs->trans("Total")." ".$textHead); - $this->info_box_contents[$i][2] = array('td' => 'align="right" ', 'text' => $totalnb); - $this->info_box_contents[$i][3] = array('td' => 'align="right" ', 'text' => price($totalMnt,1,$langs,0,0,-1,$conf->currency)); - $this->info_box_contents[$i][4] = array('td' => 'align="right" ', 'text' => ""); - $this->info_box_contents[$i][5] = array('td' => 'align="right"', 'text' => ""); + $this->info_box_contents[$i][0] = array('tr' => 'class="liste_total"'); + $this->info_box_contents[$i][1] = array('td' => 'align="left" class="liste_total" ', 'text' => $langs->trans("Total")." ".$textHead); + $this->info_box_contents[$i][2] = array('td' => 'align="right" class="liste_total" ', 'text' => $totalnb); + $this->info_box_contents[$i][3] = array('td' => 'align="right" class="liste_total" ', 'text' => price($totalMnt,1,$langs,0,0,-1,$conf->currency)); + $this->info_box_contents[$i][4] = array('td' => 'align="right" class="liste_total" ', 'text' => ""); } /** From b9c3c074b105d089fb05fa59e33487033473f5cd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2015 14:43:19 +0100 Subject: [PATCH 381/429] Fix: a line was inserted when making update Fix: missing message into notification admin page --- htdocs/admin/notification.php | 2 +- htdocs/fourn/commande/card.php | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/htdocs/admin/notification.php b/htdocs/admin/notification.php index 6de3cc09665..b9c163972ce 100644 --- a/htdocs/admin/notification.php +++ b/htdocs/admin/notification.php @@ -240,7 +240,7 @@ foreach($listofnotifiedevents as $notifiedevent) } // New entry input fields $s=''; // Do not use type="email" here, we must be able to enter a list of email with , separator. - print $form->textwithpicto($s,$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients"),1,'help','',0,2); + print $form->textwithpicto($s,$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients").'
'.$langs->trans("YouCanAlsoUseSupervisorKeyword"),1,'help','',0,2); print ''; print ''; diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 26a0b5a5438..b593d6c6c19 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -448,14 +448,12 @@ if (empty($reshook)) { $price_base_type = 'HT'; $ht = price2num(GETPOST('price_ht')); - $result=$object->addline($desc, $ht, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, 0, 0, '', $remise_percent, $price_base_type, 0, $type,'','', $date_start, $date_end); } else { $ttc = price2num(GETPOST('price_ttc')); $ht = $ttc / (1 + ($tva_tx / 100)); $price_base_type = 'HT'; - $result=$object->addline($desc, $ht, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, 0, 0, '', $remise_percent, $price_base_type, $ttc, $type,'','', $date_start, $date_end); } if ($lineid) From dc0d3504dd48243856791c07297f81448bbe5e14 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2015 14:52:47 +0100 Subject: [PATCH 382/429] Fix: Bad notification key --- htdocs/fourn/commande/card.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index d42c649f044..a6ac9c42b56 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1393,7 +1393,7 @@ elseif (! empty($object->id)) require_once DOL_DOCUMENT_ROOT .'/core/class/notify.class.php'; $notify=new Notify($db); $text.='
'; - $text.=$notify->confirmMessage('ORDER_SUPPLIER_APPROVE', $object->socid); + $text.=$notify->confirmMessage('ORDER_SUPPLIER_VALIDATE', $object->socid); } print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ValidateOrder'), $text, 'confirm_valid', '', 0, 1); @@ -1428,8 +1428,16 @@ elseif (! empty($object->id)) array('type' => 'other', 'name' => 'idwarehouse', 'label' => $langs->trans("SelectWarehouseForStockIncrease"), 'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse'),'idwarehouse','',1)) ); } + $text=$langs->trans("ConfirmApproveThisOrder",$object->ref); + if (! empty($conf->notification->enabled)) + { + require_once DOL_DOCUMENT_ROOT .'/core/class/notify.class.php'; + $notify=new Notify($db); + $text.='
'; + $text.=$notify->confirmMessage('ORDER_SUPPLIER_APPROVE', $object->socid, $object); + } - print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id,$langs->trans("ApproveThisOrder"),$langs->trans("ConfirmApproveThisOrder",$object->ref),"confirm_approve", $formquestion, 1, 1, 240); + print $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id, $langs->trans("ApproveThisOrder"), $text, "confirm_approve", $formquestion, 1, 1, 240); } From 72ce60ff366a3a23e271473aa70e39d0dd22f6f8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2015 14:53:21 +0100 Subject: [PATCH 383/429] Enhance themes --- htdocs/theme/eldy/style.css.php | 36 +++++++++------- htdocs/theme/md_exp/style.css.php | 72 +++++++++++++++++++------------ 2 files changed, 64 insertions(+), 44 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 40ca7d92699..7a96d672024 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -319,6 +319,7 @@ fieldset { border: 1px solid #AAAAAA !important; box-shadow: 2px 2px 3px #DDD; } display: inline-block; padding: 4px 14px; margin-bottom: 0; + margin-top: 0; text-align: center; cursor: pointer; color: #333333; @@ -1741,24 +1742,25 @@ table.noborder, table.formdoc, div.noborder { border-collapse: separate !important; border-spacing: 0px; -/* + border-right-width: 1px; - border-right-color: #BBBBBB; + border-right-color: #CCC; border-right-style: solid; +/* border-bottom-width: 1px; border-bottom-color: #BBBBBB; border-bottom-style: solid; */ border-left-width: 1px; - border-left-color: #DDDDDD; + border-left-color: #CCC; border-left-style: solid; margin: 0px 0px 2px 0px; - -moz-box-shadow: 3px 3px 4px #ddd; - -webkit-box-shadow: 3px 3px 4px #ddd; - box-shadow: 3px 3px 4px #ddd; + -moz-box-shadow: 2px 2px 4px #CCC; + -webkit-box-shadow: 2px 2px 4px #CCC; + box-shadow: 2px 2px 4px #CCC; -moz-border-radius: 0.2em; -webkit-border-radius: 0.2em; @@ -1802,25 +1804,26 @@ table.liste { border-collapse: collapse; border-top-color: #FEFEFE; -/* + border-right-width: 1px; - border-right-color: #BBBBBB; + border-right-color: #CCC; border-right-style: solid; - border-left-width: 1px; - border-left-color: #CCCCCC; - border-left-style: solid; -*/ +/* border-bottom-width: 1px; border-bottom-color: #BBBBBB; border-bottom-style: solid; +*/ + border-left-width: 1px; + border-left-color: #CCC; + border-left-style: solid; margin-bottom: 2px; margin-top: 0px; - -moz-box-shadow: 0px 3px 4px #DDD; - -webkit-box-shadow: 0px 3px 4px #DDD; - box-shadow: 0px 3px 4px #DDD; + -moz-box-shadow: 0px 3px 4px #CCC; + -webkit-box-shadow: 0px 3px 4px #CC; + box-shadow: 0px 3px 4px #CCC; } table.liste td { padding-right: 2px; @@ -1982,6 +1985,7 @@ input.liste_titre { color: #332266; font-weight: normal; white-space: nowrap; + padding: 4px; } @@ -2039,7 +2043,7 @@ div.tabBar .noborder { } tr.box_titre { - height: 20px; + height: 26px; background: rgb(); background-repeat: repeat-x; diff --git a/htdocs/theme/md_exp/style.css.php b/htdocs/theme/md_exp/style.css.php index 927a0c35266..d7b3deb75fb 100644 --- a/htdocs/theme/md_exp/style.css.php +++ b/htdocs/theme/md_exp/style.css.php @@ -1516,13 +1516,6 @@ a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { text-decoration: none; white-space: nowrap; - /*border-bottom: none; - border-right: 1px solid #CCCCCC; - border-left: 1px solid #D0D0D0; - border-top: 1px solid #D8D8D8; - */ - - /* -moz-border-radius:6px 6px 0px 0px; -webkit-border-radius:6px 6px 0px 0px; border-radius:6px 6px 0px 0px; @@ -1531,6 +1524,13 @@ a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { -webkit-box-shadow: 0 -1px 4px rgba(0,0,0,.1); box-shadow: 0 -1px 4px rgba(0,0,0,.1); + /*border-bottom: none; + border-right: 1px solid #CCCCCC; + border-left: 1px solid #D0D0D0; + border-top: 1px solid #D8D8D8; + */ + + /* background: rgb(); /*background-image: -o-linear-gradient(bottom, rgb() 35%, rgb() 100%); @@ -1570,7 +1570,8 @@ a.tab:hover { /* background: rgba(, 0.5) url() 50% 0 repeat-x; - color: #;*/ + color: #; + */ text-decoration: underline; } a.tab:link, a.tab:visited @@ -1828,22 +1829,23 @@ table.noborder, table.formdoc, div.noborder { border-spacing: 0px; border-right-width: 1px; - border-right-color: #BBBBBB; + border-right-color: #CCC; border-right-style: solid; - border-left-width: 1px; - border-left-color: #B0B0B0; - border-left-style: solid; - +/* border-bottom-width: 1px; border-bottom-color: #BBBBBB; border-bottom-style: solid; +*/ + border-left-width: 1px; + border-left-color: #CCC; + border-left-style: solid; margin: 0px 0px 2px 0px; - -moz-box-shadow: 2px 2px 4px #DDD; - -webkit-box-shadow: 2px 2px 4px #DDD; - box-shadow: 2px 2px 4px #DDD; + -moz-box-shadow: 2px 2px 4px #CCC; + -webkit-box-shadow: 2px 2px 4px #CCC; + box-shadow: 2px 2px 4px #CCC; -moz-border-radius: 0.2em; -webkit-border-radius: 0.2em; @@ -1860,7 +1862,7 @@ table.noborder tr, div.noborder form { border-left-width: 1px; border-left-color: #BBBBBB; border-left-style: solid; - height: 20px; + height: 26px; } table.noborder th, table.noborder td, div.noborder form, div.noborder form div { @@ -1888,23 +1890,24 @@ table.liste { border-top-color: #FEFEFE; border-right-width: 1px; - border-right-color: #BBBBBB; + border-right-color: #CCC; border-right-style: solid; - border-left-width: 1px; - border-left-color: #CCCCCC; - border-left-style: solid; - +/* border-bottom-width: 1px; border-bottom-color: #BBBBBB; border-bottom-style: solid; - +*/ + border-left-width: 1px; + border-left-color: #CCC; + border-left-style: solid; + margin-bottom: 2px; margin-top: 0px; - -moz-box-shadow: 3px 3px 4px #DDD; - -webkit-box-shadow: 3px 3px 4px #DDD; - box-shadow: 3px 3px 4px #DDD; + -moz-box-shadow: 0px 3px 4px #CCC; + -webkit-box-shadow: 0px 3px 4px #CC; + box-shadow: 0px 3px 4px #CCC; } table.liste td { padding-right: 2px; @@ -1978,6 +1981,7 @@ table.liste td { } .pair, .nohover .pair:hover, tr.pair td.nohover { +/* background: linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; background: -o-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; @@ -1987,13 +1991,17 @@ table.liste td { background: #ffffff; +*/ font-family: ; border: 0px; margin-bottom: 1px; color: #202020; + background-color: #f9f9f9; +} +tr.pair td, tr.impair td { + padding: 4px; + border-bottom: 1px solid #ddd; } - - div.liste_titre .tagtd { vertical-align: middle; } @@ -2062,6 +2070,7 @@ input.liste_titre { color: #332266; font-weight: normal; white-space: nowrap; + padding: 4px; } @@ -2180,6 +2189,13 @@ tr.box_pair { background: #ffffff; font-family: ; + + background-color: #f9f9f9; +} + +tr.box_pair td, tr.box_impair td { + padding: 4px; + border-bottom: 1px solid #ddd; } .formboxfilter { From 1a59b7b4479a10b6c0b294e632584769a332dad6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2015 15:23:44 +0100 Subject: [PATCH 384/429] Add option SUPPLIER_ORDER_NO_DIRECT_APPROVE --- htdocs/fourn/commande/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index e83dec0330c..6b07f6bbe75 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -2567,7 +2567,7 @@ elseif (! empty($object->id)) || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->fournisseur->supplier_order_advance->validate))) { $tmpbuttonlabel=$langs->trans('Validate'); - if ($user->rights->fournisseur->commande->approuver) $tmpbuttonlabel = $langs->trans("ValidateAndApprove"); + if ($user->rights->fournisseur->commande->approuver && empty($conf->SUPPLIER_ORDER_NO_DIRECT_APPROVE)) $tmpbuttonlabel = $langs->trans("ValidateAndApprove"); print ''; print $tmpbuttonlabel; From 6f22243104f725bcffc6886fe6c5c291f63ebed0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2015 15:25:21 +0100 Subject: [PATCH 385/429] Add option SUPPLIER_ORDER_NO_DIRECT_APPROVE --- htdocs/fourn/commande/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 6b07f6bbe75..ff3d4b5d955 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -2567,7 +2567,7 @@ elseif (! empty($object->id)) || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->fournisseur->supplier_order_advance->validate))) { $tmpbuttonlabel=$langs->trans('Validate'); - if ($user->rights->fournisseur->commande->approuver && empty($conf->SUPPLIER_ORDER_NO_DIRECT_APPROVE)) $tmpbuttonlabel = $langs->trans("ValidateAndApprove"); + if ($user->rights->fournisseur->commande->approuver && empty($conf->global->SUPPLIER_ORDER_NO_DIRECT_APPROVE)) $tmpbuttonlabel = $langs->trans("ValidateAndApprove"); print ''; print $tmpbuttonlabel; From 1202d63f9896abda9cdd97cc5b331ff16b1f6608 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2015 23:25:07 +0100 Subject: [PATCH 386/429] Indent --- .../webservices/server_productorservice.php | 110 +++++++++--------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/htdocs/webservices/server_productorservice.php b/htdocs/webservices/server_productorservice.php index 08eb76b834b..474988fa6e8 100644 --- a/htdocs/webservices/server_productorservice.php +++ b/htdocs/webservices/server_productorservice.php @@ -379,43 +379,43 @@ function getProductOrService($authentication,$id='',$ref='',$ref_ext='',$lang='' if (! empty($product->multilangs[$langs->defaultlang]["description"])) $product->description = $product->multilangs[$langs->defaultlang]["description"]; if (! empty($product->multilangs[$langs->defaultlang]["note"])) $product->note = $product->multilangs[$langs->defaultlang]["note"]; - $productorservice_result_fields = array( - 'id' => $product->id, - 'ref' => $product->ref, - 'ref_ext' => $product->ref_ext, - 'label' => $product->label, - 'description' => $product->description, - 'date_creation' => dol_print_date($product->date_creation,'dayhourrfc'), - 'date_modification' => dol_print_date($product->date_modification,'dayhourrfc'), - 'note' => $product->note, - 'status_tosell' => $product->status, - 'status_tobuy' => $product->status_buy, - 'type' => $product->type, - 'barcode' => $product->barcode, - 'barcode_type' => $product->barcode_type, - 'country_id' => $product->country_id>0?$product->country_id:'', - 'country_code' => $product->country_code, - 'custom_code' => $product->customcode, + $productorservice_result_fields = array( + 'id' => $product->id, + 'ref' => $product->ref, + 'ref_ext' => $product->ref_ext, + 'label' => $product->label, + 'description' => $product->description, + 'date_creation' => dol_print_date($product->date_creation,'dayhourrfc'), + 'date_modification' => dol_print_date($product->date_modification,'dayhourrfc'), + 'note' => $product->note, + 'status_tosell' => $product->status, + 'status_tobuy' => $product->status_buy, + 'type' => $product->type, + 'barcode' => $product->barcode, + 'barcode_type' => $product->barcode_type, + 'country_id' => $product->country_id>0?$product->country_id:'', + 'country_code' => $product->country_code, + 'custom_code' => $product->customcode, - 'price_net' => $product->price, - 'price' => $product->price_ttc, - 'price_min_net' => $product->price_min, - 'price_min' => $product->price_min_ttc, - 'price_base_type' => $product->price_base_type, - 'vat_rate' => $product->tva_tx, - //! French VAT NPR - 'vat_npr' => $product->tva_npr, - //! Spanish local taxes - 'localtax1_tx' => $product->localtax1_tx, - 'localtax2_tx' => $product->localtax2_tx, + 'price_net' => $product->price, + 'price' => $product->price_ttc, + 'price_min_net' => $product->price_min, + 'price_min' => $product->price_min_ttc, + 'price_base_type' => $product->price_base_type, + 'vat_rate' => $product->tva_tx, + //! French VAT NPR + 'vat_npr' => $product->tva_npr, + //! Spanish local taxes + 'localtax1_tx' => $product->localtax1_tx, + 'localtax2_tx' => $product->localtax2_tx, - 'stock_real' => $product->stock_reel, - 'stock_alert' => $product->seuil_stock_alerte, - 'pmp' => $product->pmp, - 'import_key' => $product->import_key, - 'dir' => $pdir, - 'images' => $product->liste_photos($dir,$nbmax=10) - ); + 'stock_real' => $product->stock_reel, + 'stock_alert' => $product->seuil_stock_alerte, + 'pmp' => $product->pmp, + 'import_key' => $product->import_key, + 'dir' => $pdir, + 'images' => $product->liste_photos($dir,$nbmax=10) + ); //Retreive all extrafield for thirdsparty // fetch optionals attributes and labels @@ -515,11 +515,11 @@ function createProductOrService($authentication,$product) $newobject->price_base_type=$product['price_base_type']; $newobject->date_creation=$now; - if ($product['barcode']) - { - $newobject->barcode = $product['barcode']; - $newobject->barcode_type = $product['barcode_type']; - } + if ($product['barcode']) + { + $newobject->barcode = $product['barcode']; + $newobject->barcode_type = $product['barcode_type']; + } $newobject->stock_reel=$product['stock_real']; $newobject->pmp=$product['pmp']; @@ -547,12 +547,12 @@ function createProductOrService($authentication,$product) //var_dump($product['lines'][0]['type']); $extrafields=new ExtraFields($db); - $extralabels=$extrafields->fetch_name_optionals_label('product',true); - foreach($extrafields->attribute_label as $key=>$label) - { - $key='options_'.$key; - $newobject->array_options[$key]=$product[$key]; - } + $extralabels=$extrafields->fetch_name_optionals_label('product',true); + foreach($extrafields->attribute_label as $key=>$label) + { + $key='options_'.$key; + $newobject->array_options[$key]=$product[$key]; + } $db->begin(); @@ -622,7 +622,7 @@ function updateProductOrService($authentication,$product) { $errror++; $errorcode='KO' ; $errorlabel="You must set a barcode type when setting a barcode."; } - + if (! $error) { include_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; @@ -645,7 +645,7 @@ function updateProductOrService($authentication,$product) $newobject->price_base_type=$product['price_base_type']; $newobject->date_creation=$now; - if ($product['barcode']) + if ($product['barcode']) { $newobject->barcode = $product['barcode']; $newobject->barcode_type = $product['barcode_type']; @@ -676,13 +676,13 @@ function updateProductOrService($authentication,$product) //var_dump($product['ref_ext']); //var_dump($product['lines'][0]['type']); - $extrafields=new ExtraFields($db); - $extralabels=$extrafields->fetch_name_optionals_label('product',true); - foreach($extrafields->attribute_label as $key=>$label) - { - $key='options_'.$key; - $newobject->array_options[$key]=$product[$key]; - } + $extrafields=new ExtraFields($db); + $extralabels=$extrafields->fetch_name_optionals_label('product',true); + foreach($extrafields->attribute_label as $key=>$label) + { + $key='options_'.$key; + $newobject->array_options[$key]=$product[$key]; + } $db->begin(); From b884b28991da0b0f98d5087b34593a0ecc66a991 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Mar 2015 23:39:14 +0100 Subject: [PATCH 387/429] Include module loan --- 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 insertions(+) diff --git a/build/rpm/dolibarr_fedora.spec b/build/rpm/dolibarr_fedora.spec index 0682f400b98..1a6371b1bf8 100755 --- a/build/rpm/dolibarr_fedora.spec +++ b/build/rpm/dolibarr_fedora.spec @@ -186,6 +186,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/install %_datadir/dolibarr/htdocs/langs/HOWTO-Translation.txt %_datadir/dolibarr/htdocs/livraison +%_datadir/dolibarr/htdocs/loan %_datadir/dolibarr/htdocs/mailmanspip %_datadir/dolibarr/htdocs/margin %_datadir/dolibarr/htdocs/opensurvey diff --git a/build/rpm/dolibarr_generic.spec b/build/rpm/dolibarr_generic.spec index 884e883d86c..59569c2c9fd 100755 --- a/build/rpm/dolibarr_generic.spec +++ b/build/rpm/dolibarr_generic.spec @@ -266,6 +266,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/install %_datadir/dolibarr/htdocs/langs/HOWTO-Translation.txt %_datadir/dolibarr/htdocs/livraison +%_datadir/dolibarr/htdocs/loan %_datadir/dolibarr/htdocs/mailmanspip %_datadir/dolibarr/htdocs/margin %_datadir/dolibarr/htdocs/opensurvey diff --git a/build/rpm/dolibarr_mandriva.spec b/build/rpm/dolibarr_mandriva.spec index e2b5309b572..0c7050ef049 100755 --- a/build/rpm/dolibarr_mandriva.spec +++ b/build/rpm/dolibarr_mandriva.spec @@ -183,6 +183,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/install %_datadir/dolibarr/htdocs/langs/HOWTO-Translation.txt %_datadir/dolibarr/htdocs/livraison +%_datadir/dolibarr/htdocs/loan %_datadir/dolibarr/htdocs/mailmanspip %_datadir/dolibarr/htdocs/margin %_datadir/dolibarr/htdocs/opensurvey diff --git a/build/rpm/dolibarr_opensuse.spec b/build/rpm/dolibarr_opensuse.spec index 3cf98a83375..34833025e81 100755 --- a/build/rpm/dolibarr_opensuse.spec +++ b/build/rpm/dolibarr_opensuse.spec @@ -194,6 +194,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/install %_datadir/dolibarr/htdocs/langs/HOWTO-Translation.txt %_datadir/dolibarr/htdocs/livraison +%_datadir/dolibarr/htdocs/loan %_datadir/dolibarr/htdocs/mailmanspip %_datadir/dolibarr/htdocs/margin %_datadir/dolibarr/htdocs/opensurvey From f75c11514026e57b5436d711132e4cfb0374b20c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 24 Mar 2015 11:19:51 +0100 Subject: [PATCH 388/429] Fix translation Fix permission not managed into get_menudiv.php --- htdocs/core/get_menudiv.php | 2 +- htdocs/core/menus/standard/auguria_menu.php | 48 +++++++++++++----- htdocs/core/menus/standard/eldy_menu.php | 54 ++++++++++++++------- htdocs/cron/list.php | 6 +-- htdocs/langs/en_US/admin.lang | 10 ++-- htdocs/langs/en_US/cron.lang | 17 ++++--- 6 files changed, 91 insertions(+), 46 deletions(-) diff --git a/htdocs/core/get_menudiv.php b/htdocs/core/get_menudiv.php index b52c1f73c98..b8eae83d4eb 100644 --- a/htdocs/core/get_menudiv.php +++ b/htdocs/core/get_menudiv.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2005-2015 Laurent Destailleur * * This file is a modified version of datepicker.php from phpBSM to fix some * bugs, to add new features and to dramatically increase speed. diff --git a/htdocs/core/menus/standard/auguria_menu.php b/htdocs/core/menus/standard/auguria_menu.php index 88052f380c0..ec70253641f 100644 --- a/htdocs/core/menus/standard/auguria_menu.php +++ b/htdocs/core/menus/standard/auguria_menu.php @@ -218,18 +218,42 @@ class MenuManager } foreach($submenu->liste as $key2 => $val2) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu' { - $relurl2=dol_buildpath($val2['url'],1); - $relurl2=preg_replace('/__LOGIN__/',$user->login,$relurl2); - $relurl2=preg_replace('/__USERID__/',$user->id,$relurl2); - $canonurl2=preg_replace('/\?.*$/','',$val2['url']); - //var_dump($val2['url'].' - '.$canonurl2.' - '.$val2['level']); - if (in_array($canonurl2,array('/admin/index.php','/admin/tools/index.php','/core/tools.php'))) $relurl2=''; - if ($val2['level']==0) print str_pad('',$val2['level']+1).''; // ui-btn to highlight on clic - else print str_pad('',$val2['level']+1).'
  • '; // ui-btn to highlight on clic - if ($relurl2) print ''; - print $val2['titre']; - if ($relurl2) print ''; - print '
  • '."\n"; + $showmenu=true; + if (! empty($conf->global->MAIN_MENU_HIDE_UNAUTHORIZED) && empty($val2['enabled'])) $showmenu=false; + + if ($showmenu) // Visible (option to hide when not allowed is off or allowed) + { + $relurl2=dol_buildpath($val2['url'],1); + $relurl2=preg_replace('/__LOGIN__/',$user->login,$relurl2); + $relurl2=preg_replace('/__USERID__/',$user->id,$relurl2); + $canonurl2=preg_replace('/\?.*$/','',$val2['url']); + //var_dump($val2['url'].' - '.$canonurl2.' - '.$val2['level']); + if (in_array($canonurl2,array('/admin/index.php','/admin/tools/index.php','/core/tools.php'))) $relurl2=''; + if ($val2['level']==0) print str_pad('',$val2['level']+1).''; // ui-btn to highlight on clic + else print str_pad('',$val2['level']+1).'
  • '; // ui-btn to highlight on clic + if ($relurl2) + { + if ($val2['enabled']) // Allowed + { + print ''; + } + else // Not allowed but visible (greyed) + { + print ''; + } + } + print $val2['titre']; + if ($relurl2) + { + if ($val2['enabled']) // Allowed + print ''; + else + print ''; + } + print '
  • '."\n"; + } } //var_dump($submenu); print ''; diff --git a/htdocs/core/menus/standard/eldy_menu.php b/htdocs/core/menus/standard/eldy_menu.php index af85537d455..31e83c808a8 100644 --- a/htdocs/core/menus/standard/eldy_menu.php +++ b/htdocs/core/menus/standard/eldy_menu.php @@ -150,6 +150,7 @@ class MenuManager { print '
      '; print '
    • '; + if ($val['enabled'] == 1) { $relurl=dol_buildpath($val['url'],1); @@ -184,23 +185,42 @@ class MenuManager } foreach($submenu->liste as $key2 => $val2) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu'] { - $relurl2=dol_buildpath($val2['url'],1); - $relurl2=preg_replace('/__LOGIN__/',$user->login,$relurl2); - $relurl2=preg_replace('/__USERID__/',$user->id,$relurl2); - $canonurl2=preg_replace('/\?.*$/','',$val2['url']); - //var_dump($val2['url'].' - '.$canonurl2.' - '.$val2['level']); - if (in_array($canonurl2,array('/admin/index.php','/admin/tools/index.php','/core/tools.php'))) $relurl2=''; - if ($val2['level']==0) print str_pad('',$val2['level']+1).''; // ui-btn to highlight on clic - else print str_pad('',$val2['level']+1).'
    • '; // ui-btn to highlight on clic - if ($relurl2) - { - print ''; - } - print $val2['titre']; - if ($relurl2) print ''; - print '
    • '."\n"; + $showmenu=true; + if (! empty($conf->global->MAIN_MENU_HIDE_UNAUTHORIZED) && empty($val2['enabled'])) $showmenu=false; + + if ($showmenu) // Visible (option to hide when not allowed is off or allowed) + { + $relurl2=dol_buildpath($val2['url'],1); + $relurl2=preg_replace('/__LOGIN__/',$user->login,$relurl2); + $relurl2=preg_replace('/__USERID__/',$user->id,$relurl2); + $canonurl2=preg_replace('/\?.*$/','',$val2['url']); + //var_dump($val2['url'].' - '.$canonurl2.' - '.$val2['level']); + if (in_array($canonurl2,array('/admin/index.php','/admin/tools/index.php','/core/tools.php'))) $relurl2=''; + if ($val2['level']==0) print str_pad('',$val2['level']+1).''; // ui-btn to highlight on clic + else print str_pad('',$val2['level']+1).'
    • '; // ui-btn to highlight on clic + if ($relurl2) + { + if ($val2['enabled']) // Allowed + { + print ''; + } + else // Not allowed but visible (greyed) + { + print ''; + } + } + print $val2['titre']; + if ($relurl2) + { + if ($val2['enabled']) // Allowed + print ''; + else + print ''; + } + print '
    • '."\n"; + } } //var_dump($submenu); print '
    '; diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php index 3c2844f3fe4..e543c269fb4 100644 --- a/htdocs/cron/list.php +++ b/htdocs/cron/list.php @@ -100,7 +100,7 @@ if ($action == 'confirm_execute' && $confirm == "yes" && $user->rights->cron->ex if ($result < 0) { setEventMessage($object->error,'errors'); } - else + else { $res = $object->reprogram_jobs($user->login); if ($res > 0) @@ -314,11 +314,11 @@ print "\n
    \n"; if (! $user->rights->cron->create) { - print ''.$langs->trans("New").''; + print ''.$langs->trans("CronCreateJob").''; } else { - print ''.$langs->trans("New").''; + print ''.$langs->trans("CronCreateJob").''; } print '
    '; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index e39486e242a..b70f9fa8a84 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -497,7 +497,7 @@ Module1780Desc=Category management (products, suppliers and customers) Module2000Name=WYSIWYG editor Module2000Desc=Allow to edit some text area using an advanced editor Module2300Name=Cron -Module2300Desc=Scheduled task management +Module2300Desc=Scheduled job management Module2400Name=Agenda Module2400Desc=Events/tasks and agenda management Module2500Name=Electronic Content Management @@ -733,10 +733,10 @@ Permission1237=Export supplier orders and their details Permission1251=Run mass imports of external data into database (data load) Permission1321=Export customer invoices, attributes and payments Permission1421=Export customer orders and attributes -Permission23001 = Read Scheduled task -Permission23002 = Create/update Scheduled task -Permission23003 = Delete Scheduled task -Permission23004 = Execute Scheduled task +Permission23001=Read Scheduled job +Permission23002=Create/update Scheduled job +Permission23003=Delete Scheduled job +Permission23004=Execute Scheduled job Permission2401=Read actions (events or tasks) linked to his account Permission2402=Create/modify actions (events or tasks) linked to his account Permission2403=Delete actions (events or tasks) linked to his account diff --git a/htdocs/langs/en_US/cron.lang b/htdocs/langs/en_US/cron.lang index 31e701f1e2d..bba9584012a 100644 --- a/htdocs/langs/en_US/cron.lang +++ b/htdocs/langs/en_US/cron.lang @@ -26,15 +26,15 @@ CronLastOutput=Last run output CronLastResult=Last result code CronListOfCronJobs=List of scheduled jobs CronCommand=Command -CronList=Jobs list -CronDelete= Delete cron jobs -CronConfirmDelete= Are you sure you want to delete this cron job ? -CronExecute=Launch job -CronConfirmExecute= Are you sure to execute this job now -CronInfo= Jobs allow to execute task that have been planned -CronWaitingJobs=Wainting jobs +CronList=Scheduled job +CronDelete=Delete scheduled jobs +CronConfirmDelete=Are you sure you want to delete this scheduled jobs ? +CronExecute=Launch scheduled jobs +CronConfirmExecute=Are you sure to execute this scheduled jobs now ? +CronInfo=Scheduled job module allow to execute job that have been planned +CronWaitingJobs=Waiting jobs CronTask=Job -CronNone= None +CronNone=None CronDtStart=Start date CronDtEnd=End date CronDtNextLaunch=Next execution @@ -75,6 +75,7 @@ CronObjectHelp=The object name to load.
    For exemple to fetch method of Doli CronMethodHelp=The object method to launch.
    For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of method is is fecth CronArgsHelp=The method arguments.
    For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of paramters can be 0, ProductRef CronCommandHelp=The system command line to execute. +CronCreateJob=Create new Scheduled Job # Info CronInfoPage=Information # Common From a32fc9efcecbe646e2e44ea2ce5740fcbdee10b1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 24 Mar 2015 14:08:56 +0100 Subject: [PATCH 389/429] Hide logo when option MAIN_OPTIMIZEFORTEXTBROWSER is set. Avoid logo to overwrap box with css. Add help text. --- htdocs/core/class/conf.class.php | 17 ++++---------- htdocs/core/menus/standard/auguria.lib.php | 25 ++++++++++++-------- htdocs/core/menus/standard/eldy.lib.php | 27 +++++++++++++--------- htdocs/core/modules/modResource.class.php | 2 +- htdocs/langs/en_US/main.lang | 1 + htdocs/theme/eldy/style.css.php | 5 ++-- 6 files changed, 41 insertions(+), 36 deletions(-) diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index b6cc390ca33..6370062a6a9 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -379,16 +379,6 @@ class Conf $this->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER=1; } - if (! empty($conf->productbatch->enabled)) - { - $this->global->STOCK_CALCULATE_ON_BILL=0; - $this->global->STOCK_CALCULATE_ON_VALIDATE_ORDER=0; - $this->global->STOCK_CALCULATE_ON_SHIPMENT=1; - $this->global->STOCK_CALCULATE_ON_SUPPLIER_BILL=0; - $this->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER=0; - $this->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER=1; - } - // conf->currency if (empty($this->global->MAIN_MONNAIE)) $this->global->MAIN_MONNAIE='EUR'; $this->currency=$this->global->MAIN_MONNAIE; @@ -448,6 +438,9 @@ class Conf // Default pdf use dash between lines if (! isset($this->global->MAIN_PDF_DASH_BETWEEN_LINES)) $this->global->MAIN_PDF_DASH_BETWEEN_LINES=1; + // Set default value to MAIN_SHOW_LOGO + if (! isset($this->global->MAIN_SHOW_LOGO)) $this->global->MAIN_SHOW_LOGO=1; + // Default max file size for upload $this->maxfilesize = (empty($this->global->MAIN_UPLOAD_DOC) ? 0 : $this->global->MAIN_UPLOAD_DOC * 1024); @@ -455,8 +448,8 @@ class Conf if (! isset($this->global->MAIN_MODULES_FOR_EXTERNAL)) $this->global->MAIN_MODULES_FOR_EXTERNAL='user,askpricesupplier,facture,categorie,commande,fournisseur,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda,adherent'; // '' means 'all'. Note that contact is added here as it should be a module later. // Enable select2 - if (empty($conf->global->MAIN_USE_JQUERY_MULTISELECT)) $conf->global->MAIN_USE_JQUERY_MULTISELECT='select2'; - + if (empty($this->global->MAIN_USE_JQUERY_MULTISELECT)) $this->global->MAIN_USE_JQUERY_MULTISELECT='select2'; + // Timeouts if (empty($this->global->MAIN_USE_CONNECT_TIMEOUT)) $this->global->MAIN_USE_CONNECT_TIMEOUT=10; if (empty($this->global->MAIN_USE_RESPONSE_TIMEOUT)) $this->global->MAIN_USE_RESPONSE_TIMEOUT=30; diff --git a/htdocs/core/menus/standard/auguria.lib.php b/htdocs/core/menus/standard/auguria.lib.php index cbc73b2767d..59c0329b172 100644 --- a/htdocs/core/menus/standard/auguria.lib.php +++ b/htdocs/core/menus/standard/auguria.lib.php @@ -220,22 +220,27 @@ function print_left_auguria_menu($db,$menu_array_before,$menu_array_after,&$tabM $leftmenu=($forceleftmenu?'':(empty($_SESSION["leftmenu"])?'none':$_SESSION["leftmenu"])); // Show logo company - if (empty($noout) && ! empty($conf->global->MAIN_SHOW_LOGO)) + if (empty($noout) && ! empty($conf->global->MAIN_SHOW_LOGO) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { $mysoc->logo_mini=$conf->global->MAIN_INFO_SOCIETE_LOGO_MINI; if (! empty($mysoc->logo_mini) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_mini)) { $urllogo=DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=companylogo&file='.urlencode('thumbs/'.$mysoc->logo_mini); - print "\n".''."\n"; - print '
    '."\n"; - print ''; - print ''; - print ''; - print ''; - print '
    '."\n"; } + else + { + $urllogo=DOL_URL_ROOT.'/theme/dolibarr_logo.png'; + } + $title=$langs->trans("GoIntoSetupToChangeLogo"); + print "\n".''."\n"; + print '
    '."\n"; + print ''; + print ''; + print ''; + print ''; + print '
    '."\n"; } // We update newmenu with entries found into database diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 75edbfc1e10..32fc9a07aed 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -426,22 +426,27 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $leftmenu=($forceleftmenu?'':(empty($_SESSION["leftmenu"])?'none':$_SESSION["leftmenu"])); // Show logo company - if (empty($conf->global->MAIN_MENU_INVERT) && empty($noout) && ! empty($conf->global->MAIN_SHOW_LOGO)) + if (empty($conf->global->MAIN_MENU_INVERT) && empty($noout) && ! empty($conf->global->MAIN_SHOW_LOGO) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { $mysoc->logo_mini=$conf->global->MAIN_INFO_SOCIETE_LOGO_MINI; if (! empty($mysoc->logo_mini) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_mini)) { $urllogo=DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=companylogo&file='.urlencode('thumbs/'.$mysoc->logo_mini); - print "\n".''."\n"; - print '
    '."\n"; - print ''; - print ''; - print ''; - print ''; - print '
    '."\n"; } + else + { + $urllogo=DOL_URL_ROOT.'/theme/dolibarr_logo.png'; + } + $title=$langs->trans("GoIntoSetupToChangeLogo"); + print "\n".''."\n"; + print '
    '."\n"; + print ''; + print ''; + print ''; + print ''; + print '
    '."\n"; } /** @@ -824,7 +829,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/card.php?leftmenu=tax_salary&action=create",$langs->trans("NewPayment"),2,$user->rights->salaries->write); if (empty($leftmenu) || preg_match('/^tax_salary/i',$leftmenu)) $newmenu->add("/compta/salaries/index.php?leftmenu=tax_salary",$langs->trans("Payments"),2,$user->rights->salaries->read); } - + // Loan if (! empty($conf->loan->enabled)) { diff --git a/htdocs/core/modules/modResource.class.php b/htdocs/core/modules/modResource.class.php index 9acebd5d90d..e63f44c3945 100644 --- a/htdocs/core/modules/modResource.class.php +++ b/htdocs/core/modules/modResource.class.php @@ -59,7 +59,7 @@ class modResource extends DolibarrModules // Module description // used if translation string 'ModuleXXXDesc' not found // (where XXX is value of numeric property 'numero' of module) - $this->description = "Description of module Resource"; + $this->description = "Manage resources (printers, cars, room, ...) you can then share into events"; // Possible values for version are: 'development', 'experimental' or version $this->version = 'development'; // Key used in llx_const table to save module status enabled/disabled diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 551807aad59..b160c4303a0 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -694,6 +694,7 @@ AddBox=Add box SelectElementAndClickRefresh=Select an element and click Refresh PrintFile=Print File %s ShowTransaction=Show transaction +GoIntoSetupToChangeLogo=Go into Home - Setup - Company to change logo or go into Home - Setup - Display to hide. # Week day Monday=Monday Tuesday=Tuesday diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 7a96d672024..1d9905cd37a 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1006,6 +1006,7 @@ div.vmenu, td.vmenu { } .menu_contenu { padding-top: 1px; } +#menu_contenu_logo { padding-right: 4px; } a.vmenu:link, a.vmenu:visited, a.vmenu:hover, a.vmenu:active { font-size:px; font-family: ; text-align: ; font-weight: bold; } font.vmenudisabled { font-size:px; font-family: ; text-align: ; font-weight: bold; color: #93a5aa; } @@ -1393,10 +1394,10 @@ div.tabsElem { margin-top: 8px; } /* To avoid overlap of tabs when not browser div.tabBar { color: #; - padding-top: 9px; + padding-top: px; padding-left: px; padding-right: px; - padding-bottom: 12px; + padding-bottom: px; margin: 0px 0px 14px 0px; -moz-border-radius:6px; -webkit-border-radius: 6px; From f0fb6f1b2cf825f6eef5220815f2204b7cffbcf5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 24 Mar 2015 22:24:15 +0100 Subject: [PATCH 390/429] Work on md theme --- htdocs/main.inc.php | 5 ++- htdocs/theme/eldy/style.css.php | 8 +++++ htdocs/theme/md_exp/style.css.php | 55 ++++++++++++++++++++++--------- htdocs/user/class/user.class.php | 5 +-- 4 files changed, 55 insertions(+), 18 deletions(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index cf5df4eb21c..da0296e4b00 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1391,6 +1391,8 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a if (empty($conf->dol_hide_topmenu)) { + print '
    '; + // Show menu entries print '
    '."\n"; $menumanager->atarget=$target; @@ -1431,8 +1433,8 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a print '
    '; unset($form); } diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 1d9905cd37a..74d94d5b98c 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -2203,6 +2203,13 @@ div.dolgraph div.legend table tbody tr { height: auto; } margin-bottom: 2px; margin-top: 2px; } +.photointooltip { + -webkit-box-shadow: -1px -1px 5px #777; + -moz-box-shadow: -1px -1px 5px #777; + box-shadow: -1px -1px 5px #777; + margin-top: 6px; + float: left; +} .logo_setup { @@ -2323,6 +2330,7 @@ border-radius: 6px; #tiptip_content { background-color: rgb(252,248,246); background-color: rgba(252,248,246,0.95); + line-height: 1.4em; } /* ============================================================================== */ diff --git a/htdocs/theme/md_exp/style.css.php b/htdocs/theme/md_exp/style.css.php index d7b3deb75fb..4b8ebe8d178 100644 --- a/htdocs/theme/md_exp/style.css.php +++ b/htdocs/theme/md_exp/style.css.php @@ -114,14 +114,15 @@ $fontsizesmaller='11'; // Eldy colors if (empty($conf->global->THEME_ELDY_ENABLE_PERSONALIZED)) { + // 90A4AE, 607D8B, 455A64, 37474F //$conf->global->THEME_ELDY_TOPMENU_BACK1=join(',',colorStringToArray('#37474f')); // topmenu #607D8B - $conf->global->THEME_ELDY_TOPMENU_BACK1=join(',',colorStringToArray('#607D8B')); // topmenu #607D8B + $conf->global->THEME_ELDY_TOPMENU_BACK1=join(',',colorStringToArray('#37474F')); // topmenu #607D8B //$conf->global->THEME_ELDY_TOPMENU_BACK1=join(',',colorStringToArray('000')); // topmenu #607D8B $conf->global->THEME_ELDY_TOPMENU_BACK2='236,236,236'; $conf->global->THEME_ELDY_VERMENU_BACK1='255,255,255'; // vmenu $conf->global->THEME_ELDY_VERMENU_BACK1b='230,232,232'; // vmenu (not menu) $conf->global->THEME_ELDY_VERMENU_BACK2='240,240,240'; - $conf->global->THEME_ELDY_BACKTITLE1=join(',',colorStringToArray('607D8B')); // title of arrays + $conf->global->THEME_ELDY_BACKTITLE1=join(',',colorStringToArray('#607D8B')); // title of arrays $conf->global->THEME_ELDY_BACKTITLE2='230,230,230'; $conf->global->THEME_ELDY_BACKTABCARD2='255,255,255'; // card $conf->global->THEME_ELDY_BACKTABCARD1='234,234,234'; @@ -512,19 +513,25 @@ td.showDragHandle { table-layout: fixed; } #id-right, #id-left { - padding-top: 8px; display: table-cell; float: none; vertical-align: top; } +#id-top { +/* min-width: 100%; + position: relative; + heigth: 52px; + background: #f00;*/ +} #id-left { min-height: 100%; position: relative; - width: 184px; + width: 183px; } -#id-right { /* This must stay id-right ant not be replaced with echo $right */ +#id-right { /* This must stay id-right and not be replaced with echo $right */ width: 100%; padding-left: 184px; + padding-top: 12px; } .side-nav { @@ -537,7 +544,6 @@ td.showDragHandle { left: 0; position: fixed; top: 50px; - width: 192px; z-index: 4; -webkit-transform: translateZ(0); -moz-transform: translateZ(0); @@ -565,10 +571,13 @@ td.showDragHandle { overflow-x: hidden; overflow-y: auto; } +.side-nav-vert { + margin-left: 184px; +} div.fiche { - margin-: global->MAIN_MENU_USE_JQUERY_LAYOUT))?($dol_hide_leftmenu?'4':'20'):'24')); ?>px; + margin-: global->MAIN_MENU_USE_JQUERY_LAYOUT))?($dol_hide_leftmenu?'4':'12'):'24')); ?>px; margin-: dol_optimize_smallscreen)?'12':'4')); ?>px; dol_hide_leftmenu) && ! empty($conf->dol_hide_topmenu)) print 'margin-top: 4px;'; ?> } @@ -619,7 +628,7 @@ div#tmenu_tooltip { display:none; - padding-: 100px; + /* padding-: 100px; */ background: ; /*box-shadow: 0 0 6px rgba(0, 0, 0, .4) !important;*/ @@ -978,11 +987,19 @@ table.login_table_securitycode tr td { } div.login_block { + padding-top: 8px; position: absolute; - : 5px; - top: 3px; + : 5px; + left: 0; + top: 0px; + position: fixed; font-weight: bold; - max-width: 110px; + z-index: 10; + text-align: center; + vertical-align: middle; + background: #FFF; + width: 183px; + height: 42px; display: none; @@ -1049,7 +1066,7 @@ div.vmenu, td.vmenu { float: left; padding: 0px; padding-bottom: 0px; - padding-top: 1px; + padding-top: 0px; width: 174px; } @@ -1516,7 +1533,7 @@ a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { text-decoration: none; white-space: nowrap; - -moz-border-radius:6px 6px 0px 0px; + /*-moz-border-radius:6px 6px 0px 0px; -webkit-border-radius:6px 6px 0px 0px; border-radius:6px 6px 0px 0px; @@ -1524,7 +1541,7 @@ a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { -webkit-box-shadow: 0 -1px 4px rgba(0,0,0,.1); box-shadow: 0 -1px 4px rgba(0,0,0,.1); - /*border-bottom: none; + border-bottom: none; border-right: 1px solid #CCCCCC; border-left: 1px solid #D0D0D0; border-top: 1px solid #D8D8D8; @@ -1901,7 +1918,7 @@ table.liste { border-left-width: 1px; border-left-color: #CCC; border-left-style: solid; - + margin-bottom: 2px; margin-top: 0px; @@ -2299,6 +2316,13 @@ div.dolgraph div.legend table tbody tr { height: auto; } margin-bottom: 2px; margin-top: 2px; } +.photointooltip { + -webkit-box-shadow: 0px 0px 5px #777; + -moz-box-shadow: 0px 0px 5px #777; + box-shadow: 0px 0px 6px #777; + margin-top: 8px; + float: left; +} .logo_setup { @@ -2419,6 +2443,7 @@ border-radius: 6px; #tiptip_content { background-color: rgb(252,248,246); background-color: rgba(252,248,246,0.95); + line-height: 1.4em; } /* ============================================================================== */ diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 9ffa762afd1..d8d8a1f071c 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -1808,12 +1808,13 @@ class User extends CommonObject } $type=($this->societe_id?$langs->trans("External").$company:$langs->trans("Internal")); $label.= '
    ' . $langs->trans("Type") . ': ' . $type; + $label.='
    '; if (! empty($this->photo)) { - $label.= '
    '; + $label.= '
    '; $label.= Form::showphoto('userphoto', $this, 80); + $label.= '
    '; } - $label.= '
    '; // Info Login if ($infologin) From cc2d86bd58552df3c80fe4b0e87c5d6f34a1adb5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 25 Mar 2015 14:31:04 +0100 Subject: [PATCH 391/429] Status of project was not visible on thirdparty card --- htdocs/core/lib/company.lib.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index cfa5a945841..8abdf32c635 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -471,7 +471,7 @@ function show_projects($conf,$langs,$db,$object,$backtopage='') print_fiche_titre($langs->trans("ProjectsDedicatedToThisThirdParty"),$buttoncreate,''); print "\n".''; - $sql = "SELECT p.rowid,p.title,p.ref,p.public, p.dateo as do, p.datee as de"; + $sql = "SELECT p.rowid as id, p.title, p.ref, p.public, p.dateo as do, p.datee as de, p.fk_statut as status"; $sql .= " FROM ".MAIN_DB_PREFIX."projet as p"; $sql .= " WHERE p.fk_soc = ".$object->id; $sql .= " ORDER BY p.dateo DESC"; @@ -483,23 +483,24 @@ function show_projects($conf,$langs,$db,$object,$backtopage='') print ''; print ''; + print ''; print ''; if ($num > 0) { require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; - $projectstatic = new Project($db); + $projecttmp = new Project($db); $i=0; $var=false; while ($i < $num) { $obj = $db->fetch_object($result); - $projectstatic->fetch($obj->rowid); + $projecttmp->fetch($obj->id); // To verify role of users - $userAccess = $projectstatic->restrictedProjectArea($user); + $userAccess = $projecttmp->restrictedProjectArea($user); if ($user->rights->projet->lire && $userAccess > 0) { @@ -507,13 +508,15 @@ function show_projects($conf,$langs,$db,$object,$backtopage='') print ""; // Ref - print ''; + print ''; // Label print ''; // Date start print ''; // Date end print ''; + // Status + print ''; print ''; } From 21b1f7cc265ac0f7e5fe3be7ac36ca0ebc934ead Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 25 Mar 2015 14:51:12 +0100 Subject: [PATCH 392/429] Fix bad calculation of email for notifications --- htdocs/core/class/notify.class.php | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/htdocs/core/class/notify.class.php b/htdocs/core/class/notify.class.php index aa92e6ee50f..8d54d05a810 100644 --- a/htdocs/core/class/notify.class.php +++ b/htdocs/core/class/notify.class.php @@ -91,7 +91,8 @@ class Notify $error=0; $num=0; - $valueforthreshold = $object->total_ht; + $valueforthreshold = 0; + if (is_object($object)) $valueforthreshold = $object->total_ht; if (! $error) { @@ -103,8 +104,11 @@ class Notify $sql.= " WHERE n.fk_contact = c.rowid"; $sql.= " AND a.rowid = n.fk_action"; $sql.= " AND n.fk_soc = s.rowid"; - if (is_numeric($notifcode)) $sql.= " AND n.fk_action = ".$notifcode; // Old usage - else $sql.= " AND a.code = '".$notifcode."'"; // New usage + if ($notifcode) + { + if (is_numeric($notifcode)) $sql.= " AND n.fk_action = ".$notifcode; // Old usage + else $sql.= " AND a.code = '".$notifcode."'"; // New usage + } $sql.= " AND s.entity IN (".getEntity('societe', 1).")"; if ($socid > 0) $sql.= " AND s.rowid = ".$socid; @@ -125,16 +129,21 @@ class Notify if (! $error) { + // List of notifications enabled for fixed email foreach($conf->global as $key => $val) { - if ($val == '' || ! preg_match('/^NOTIFICATION_FIXEDEMAIL_'.$notifcode.'_THRESHOLD_HIGHER_(.*)$/', $key, $reg)) continue; + if ($notifcode) + { + if ($val == '' || ! preg_match('/^NOTIFICATION_FIXEDEMAIL_'.$notifcode.'_THRESHOLD_HIGHER_(.*)$/', $key, $reg)) continue; + } + else + { + if ($val == '' || ! preg_match('/^NOTIFICATION_FIXEDEMAIL_.*_THRESHOLD_HIGHER_(.*)$/', $key, $reg)) continue; + } $threshold = (float) $reg[1]; - if ($valueforthreshold <= $threshold) - { - continue; - } + if ($valueforthreshold < $threshold) continue; $tmpemail=explode(',',$val); $num+=count($tmpemail); From 19540b14b59bfc64d5db481a22e97dbdcb57864b Mon Sep 17 00:00:00 2001 From: frederic34 Date: Wed, 25 Mar 2015 16:38:18 +0100 Subject: [PATCH 393/429] Add last shipments to company card --- htdocs/comm/card.php | 70 ++++++++++++++++++++++++++++++++ htdocs/langs/en_US/sendings.lang | 1 + 2 files changed, 71 insertions(+) diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index 3ea63caf256..14bf6e42fe8 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -7,6 +7,7 @@ * Copyright (C) 2008 Raphael Bertrand (Resultic) * Copyright (C) 2010-2014 Juanjo Menent * Copyright (C) 2013 Alexandre Spangaro + * Copyright (C) 2015 Frederic 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 @@ -37,6 +38,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; if (! empty($conf->facture->enabled)) 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'; if (! empty($conf->commande->enabled)) require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; +if (! empty($conf->expedition->enabled)) require_once DOL_DOCUMENT_ROOT.'/expedition/class/expedition.class.php'; if (! empty($conf->contrat->enabled)) require_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php'; if (! empty($conf->adherent->enabled)) require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; if (! empty($conf->ficheinter->enabled)) require_once DOL_DOCUMENT_ROOT.'/fichinter/class/fichinter.class.php'; @@ -44,6 +46,7 @@ if (! empty($conf->ficheinter->enabled)) require_once DOL_DOCUMENT_ROOT.'/fichin $langs->load("companies"); if (! empty($conf->contrat->enabled)) $langs->load("contracts"); if (! empty($conf->commande->enabled)) $langs->load("orders"); +if (! empty($conf->expedition->enabled)) $langs->load("sendings"); if (! empty($conf->facture->enabled)) $langs->load("bills"); if (! empty($conf->projet->enabled)) $langs->load("projects"); if (! empty($conf->ficheinter->enabled)) $langs->load("interventions"); @@ -661,6 +664,73 @@ if ($id > 0) } } + /* + * Last sendings + */ + if (! empty($conf->expedition->enabled) && $user->rights->expedition->lire) { + $sendingstatic = new Expedition($db); + + $sql = 'SELECT e.rowid as id'; + $sql.= ', e.ref'; + $sql.= ', e.date_creation'; + $sql.= ', e.fk_statut as statut'; + $sql.= ', s.nom'; + $sql.= ', s.rowid as socid'; + $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."expedition as e"; + $sql.= " WHERE e.fk_soc = s.rowid AND s.rowid = ".$object->id; + $sql.= " AND e.entity = ".$conf->entity; + $sql.= ' GROUP BY e.rowid'; + $sql.= ', e.ref'; + $sql.= ', e.date_creation'; + $sql.= ', e.fk_statut'; + $sql.= ', s.nom'; + $sql.= ', s.rowid'; + $sql.= " ORDER BY e.date_creation DESC"; + + $resql = $db->query($sql); + if ($resql) { + $var = true; + $num = $db->num_rows($resql); + $i = 0; + if ($num > 0) { + print '
    '.$langs->trans("Ref").''.$langs->trans("Name").''.$langs->trans("DateStart").''.$langs->trans("DateEnd").''.$langs->trans("Status").'
    '.img_object($langs->trans("ShowProject"),($obj->public?'projectpub':'project'))." ".$obj->ref.''.img_object($langs->trans("ShowProject"),($obj->public?'projectpub':'project'))." ".$obj->ref.''.$obj->title.''.dol_print_date($db->jdate($obj->do),"day").''.dol_print_date($db->jdate($obj->de),"day").''.$projecttmp->getLibStatut(5).'
    '; + + $tableaushown=1; + print ''; + print ''; + print ''; + } + + while ($i < $num && $i < $MAXLIST) { + $objp = $db->fetch_object($resql); + $var = ! $var; + print ""; + print ''; + if ($objp->date_creation > 0) { + print ''; + } else { + print ''; + } + + print ''; + print "\n"; + $i++; + } + $db->free($resql); + + if ($num > 0) + print "
    '; + print ''; + print '
    '.$langs->trans("LastSendings",($num<=$MAXLIST?"":$MAXLIST)).''.$langs->trans("AllSendings").' '.$num.''.img_picto($langs->trans("Statistics"),'stats').'
    '; + $sendingstatic->id = $objp->id; + $sendingstatic->ref = $objp->ref; + print $sendingstatic->getNomUrl(1); + print ''.dol_print_date($db->jdate($objp->date_creation),'day').'!!!' . $sendingstatic->LibStatut($objp->statut, 5) . '
    "; + } else { + dol_print_error($db); + } + } + /* * Last linked contracts */ diff --git a/htdocs/langs/en_US/sendings.lang b/htdocs/langs/en_US/sendings.lang index b1ff55f71c1..84088c3e023 100644 --- a/htdocs/langs/en_US/sendings.lang +++ b/htdocs/langs/en_US/sendings.lang @@ -2,6 +2,7 @@ RefSending=Ref. shipment Sending=Shipment Sendings=Shipments +AllSendings=All Shipments Shipment=Shipment Shipments=Shipments ShowSending=Show Sending From 8be08c692fb6720f11580bffe55e25e6375734fc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 25 Mar 2015 18:10:45 +0100 Subject: [PATCH 394/429] Fix some secuity tests were not done. --- htdocs/core/login/functions_dolibarr.php | 26 ++++--- htdocs/core/login/functions_ldap.php | 92 +++++++++++++----------- 2 files changed, 66 insertions(+), 52 deletions(-) diff --git a/htdocs/core/login/functions_dolibarr.php b/htdocs/core/login/functions_dolibarr.php index 0a0ab1e8bfe..69aec814413 100644 --- a/htdocs/core/login/functions_dolibarr.php +++ b/htdocs/core/login/functions_dolibarr.php @@ -36,9 +36,6 @@ function check_user_password_dolibarr($usertotest,$passwordtotest,$entitytotest=1) { global $db,$conf,$langs; - global $mc; - - dol_syslog("functions_dolibarr::check_user_password_dolibarr usertotest=".$usertotest); // Force master entity in transversal mode $entity=$entitytotest; @@ -48,6 +45,8 @@ function check_user_password_dolibarr($usertotest,$passwordtotest,$entitytotest= if (! empty($usertotest)) { + dol_syslog("functions_dolibarr::check_user_password_dolibarr usertotest=".$usertotest." passwordtotest=".preg_replace('/./','*',$passwordtotest)." entitytotest=".$entitytotest); + // If test username/password asked, we define $test=false and $login var if ok, set $_SESSION["dol_loginmesg"] if ko $table = MAIN_DB_PREFIX."user"; $usernamecol1 = 'login'; @@ -60,7 +59,6 @@ function check_user_password_dolibarr($usertotest,$passwordtotest,$entitytotest= if (preg_match('/@/',$usertotest)) $sql.=' OR '.$usernamecol2." = '".$db->escape($usertotest)."'"; $sql.=') AND '.$entitycol." IN (0," . ($entity ? $entity : 1) . ")"; - dol_syslog("functions_dolibarr::check_user_password_dolibarr", LOG_DEBUG); $resql=$db->query($sql); if ($resql) { @@ -99,12 +97,6 @@ function check_user_password_dolibarr($usertotest,$passwordtotest,$entitytotest= } } - if ($passok && ! empty($obj->entity) && (! empty($conf->multicompany->enabled) && ! empty($conf->multicompany->transverse_mode))) - { - $ret=$mc->checkRight($obj->rowid, $entitytotest); // The module multicompany check here user belong to at least one group into company. This is a bugged behaviour, so you must hack module to make thing working. - if ($ret < 0) $passok=false; - } - // Password ok ? if ($passok) { @@ -112,12 +104,24 @@ function check_user_password_dolibarr($usertotest,$passwordtotest,$entitytotest= } else { - dol_syslog("functions_dolibarr::check_user_password_dolibarr Authentification ko bad password pour '".$usertotest."'"); + dol_syslog("functions_dolibarr::check_user_password_dolibarr Authentification ko bad password for '".$usertotest."'"); sleep(1); $langs->load('main'); $langs->load('errors'); $_SESSION["dol_loginmesg"]=$langs->trans("ErrorBadLoginPassword"); } + + if ($passok && ! empty($conf->multicompany->enabled)) // We must check entity + { + global $mc; + + $ret=$mc->checkRight($obj->rowid, $entitytotest); + if ($ret < 0) + { + dol_syslog("functions_dolibarr::check_user_password_dolibarr Authentification ko entity '".$entitytotest."' not allowed for user '".$obj->rowid."'"); + $login=''; // force authentication failure + } + } } else { diff --git a/htdocs/core/login/functions_ldap.php b/htdocs/core/login/functions_ldap.php index a67bc040e2f..208ccd0c37c 100644 --- a/htdocs/core/login/functions_ldap.php +++ b/htdocs/core/login/functions_ldap.php @@ -34,7 +34,8 @@ */ function check_user_password_ldap($usertotest,$passwordtotest,$entitytotest) { - global $_POST,$db,$conf,$langs; + global $db,$conf,$langs; + global $_POST; global $dolibarr_main_auth_ldap_host,$dolibarr_main_auth_ldap_port; global $dolibarr_main_auth_ldap_version,$dolibarr_main_auth_ldap_servertype; global $dolibarr_main_auth_ldap_login_attribute,$dolibarr_main_auth_ldap_dn; @@ -42,6 +43,13 @@ function check_user_password_ldap($usertotest,$passwordtotest,$entitytotest) global $dolibarr_main_auth_ldap_filter; global $dolibarr_main_auth_ldap_debug; + // Force master entity in transversal mode + $entity=$entitytotest; + if (! empty($conf->multicompany->enabled) && ! empty($conf->multicompany->transverse_mode)) $entity=1; + + $login=''; + $resultFetchUser=''; + if (! function_exists("ldap_connect")) { dol_syslog("functions_ldap::check_user_password_ldap Authentification ko failed to connect to LDAP. LDAP functions are disabled on this PHP"); @@ -52,11 +60,10 @@ function check_user_password_ldap($usertotest,$passwordtotest,$entitytotest) return; } - $login=''; - $resultFetchUser=''; - - if (!empty($_POST["username"]) || $usertotest) + if ($usertotest) { + dol_syslog("functions_ldap::check_user_password_ldap usertotest=".$usertotest." passwordtotest=".preg_replace('/./','*',$passwordtotest)." entitytotest=".$entitytotest); + // If test username/password asked, we define $test=false and $login var if ok, set $_SESSION["dol_loginmesg"] if ko $ldaphost=$dolibarr_main_auth_ldap_host; $ldapport=$dolibarr_main_auth_ldap_port; @@ -80,7 +87,6 @@ function check_user_password_ldap($usertotest,$passwordtotest,$entitytotest) $ldap->searchUser=$ldapadminlogin; $ldap->searchPassword=$ldapadminpass; - dol_syslog("functions_ldap::check_user_password_ldap usertotest=".$usertotest); if ($ldapdebug) { dol_syslog("functions_ldap::check_user_password_ldap Server:".join(',',$ldap->server).", Port:".$ldap->serverPort.", Protocol:".$ldap->ldapProtocolVersion.", Type:".$ldap->serverType); @@ -146,52 +152,56 @@ function check_user_password_ldap($usertotest,$passwordtotest,$entitytotest) $login=$usertotest; // ldap2dolibarr synchronisation - if ($login && ! empty($conf->ldap->enabled) && $conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr') + if ($login && ! empty($conf->ldap->enabled) && $conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr') // ldap2dolibarr synchronisation { - dol_syslog("functions_ldap::check_user_password_ldap Sync ldap2dolibarr"); + dol_syslog("functions_ldap::check_user_password_ldap Sync ldap2dolibarr"); - // On charge les attributs du user ldap - if ($ldapdebug) print "DEBUG: login ldap = ".$login."
    \n"; - $resultFetchLdapUser = $ldap->fetch($login,$userSearchFilter); + // On charge les attributs du user ldap + if ($ldapdebug) print "DEBUG: login ldap = ".$login."
    \n"; + $resultFetchLdapUser = $ldap->fetch($login,$userSearchFilter); - if ($ldapdebug) print "DEBUG: UACF = ".join(',',$ldap->uacf)."
    \n"; - if ($ldapdebug) print "DEBUG: pwdLastSet = ".dol_print_date($ldap->pwdlastset,'day')."
    \n"; - if ($ldapdebug) print "DEBUG: badPasswordTime = ".dol_print_date($ldap->badpwdtime,'day')."
    \n"; + if ($ldapdebug) print "DEBUG: UACF = ".join(',',$ldap->uacf)."
    \n"; + if ($ldapdebug) print "DEBUG: pwdLastSet = ".dol_print_date($ldap->pwdlastset,'day')."
    \n"; + if ($ldapdebug) print "DEBUG: badPasswordTime = ".dol_print_date($ldap->badpwdtime,'day')."
    \n"; - // On recherche le user dolibarr en fonction de son SID ldap - $sid = $ldap->getObjectSid($login); - if ($ldapdebug) print "DEBUG: sid = ".$sid."
    \n"; + // On recherche le user dolibarr en fonction de son SID ldap + $sid = $ldap->getObjectSid($login); + if ($ldapdebug) print "DEBUG: sid = ".$sid."
    \n"; - $user=new User($db); - $resultFetchUser=$user->fetch('',$login,$sid); - if ($resultFetchUser > 0) - { - dol_syslog("functions_ldap::check_user_password_ldap Sync user found id=".$user->id); - // On verifie si le login a change et on met a jour les attributs dolibarr - - if ($conf->multicompany->enabled) + $usertmp=new User($db); + $resultFetchUser=$usertmp->fetch('',$login,$sid); + if ($resultFetchUser > 0) { - global $mc; + dol_syslog("functions_ldap::check_user_password_ldap Sync user found user id=".$usertmp->id); + // On verifie si le login a change et on met a jour les attributs dolibarr - $ret=$mc->checkRight($user->id, $entitytotest, $user); // The module multicompany check here user belong to at least one group into company. This is a bugged behaviour, so you must hack module to make thing working. - if ($ret < 0) + if ($usertmp->login != $ldap->login && $ldap->login) { - dol_syslog("Failed to checkRight by module multicompany for user id = ".$user->id." into entity ".$entitytotest); - $login=false; // force error of authentication + $usertmp->login = $ldap->login; + $usertmp->update($usertmp); + // TODO Que faire si update echoue car on update avec un login deja existant. } + + //$resultUpdate = $usertmp->update_ldap2dolibarr($ldap); } - - - if ($user->login != $ldap->login && $ldap->login) - { - $user->login = $ldap->login; - $user->update($user); - // TODO Que faire si update echoue car on update avec un login deja existant. - } - - //$resultUpdate = $user->update_ldap2dolibarr($ldap); - } + unset($usertmp); } + + if (! empty($conf->multicompany->enabled)) // We must check entity (even if sync is not active) + { + global $mc; + + $usertmp=new User($db); + $usertmp->fetch('',$login); + $ret=$mc->checkRight($usertmp->id, $entitytotest); + if ($ret < 0) + { + dol_syslog("functions_ldap::check_user_password_ldap Authentification ko entity '".$entitytotest."' not allowed for user '".$usertmp->id."'"); + $login=''; // force authentication failure + } + unset($usertmp); + } + } if ($result == 1) { From f7b8a2b036473bc08ce42f8a9e3b78fa37dbd54b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 25 Mar 2015 18:13:53 +0100 Subject: [PATCH 395/429] Restore align=right --- htdocs/theme/eldy/style.css.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 74d94d5b98c..aa9cc9fe862 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -948,7 +948,7 @@ div.login a:hover { text-decoration:underline; } div.login_block_user, div.login_block_other { clear: both; } -div.login_block_other { padding-top: 3px; } +div.login_block_other { padding-top: 3px; text-align: right; } .login_block_elem { float: right; vertical-align: top; From f778f470492aa5ec84270c8e891b2dd5a9370cee Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 25 Mar 2015 21:46:08 +0100 Subject: [PATCH 396/429] Add dirs --- 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 insertions(+) diff --git a/build/rpm/dolibarr_fedora.spec b/build/rpm/dolibarr_fedora.spec index 1a6371b1bf8..463f3e94e86 100755 --- a/build/rpm/dolibarr_fedora.spec +++ b/build/rpm/dolibarr_fedora.spec @@ -172,6 +172,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/contrat %_datadir/dolibarr/htdocs/core %_datadir/dolibarr/htdocs/cron +%_datadir/dolibarr/htdocs/donations %_datadir/dolibarr/htdocs/ecm %_datadir/dolibarr/htdocs/expedition %_datadir/dolibarr/htdocs/expensereport diff --git a/build/rpm/dolibarr_generic.spec b/build/rpm/dolibarr_generic.spec index 59569c2c9fd..adc5abbfd58 100755 --- a/build/rpm/dolibarr_generic.spec +++ b/build/rpm/dolibarr_generic.spec @@ -252,6 +252,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/contrat %_datadir/dolibarr/htdocs/core %_datadir/dolibarr/htdocs/cron +%_datadir/dolibarr/htdocs/donations %_datadir/dolibarr/htdocs/ecm %_datadir/dolibarr/htdocs/expedition %_datadir/dolibarr/htdocs/expensereport diff --git a/build/rpm/dolibarr_mandriva.spec b/build/rpm/dolibarr_mandriva.spec index 0c7050ef049..ecc5fb76b0c 100755 --- a/build/rpm/dolibarr_mandriva.spec +++ b/build/rpm/dolibarr_mandriva.spec @@ -169,6 +169,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/contrat %_datadir/dolibarr/htdocs/core %_datadir/dolibarr/htdocs/cron +%_datadir/dolibarr/htdocs/donations %_datadir/dolibarr/htdocs/ecm %_datadir/dolibarr/htdocs/expedition %_datadir/dolibarr/htdocs/expensereport diff --git a/build/rpm/dolibarr_opensuse.spec b/build/rpm/dolibarr_opensuse.spec index 34833025e81..129f6dc8f0a 100755 --- a/build/rpm/dolibarr_opensuse.spec +++ b/build/rpm/dolibarr_opensuse.spec @@ -180,6 +180,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/contrat %_datadir/dolibarr/htdocs/core %_datadir/dolibarr/htdocs/cron +%_datadir/dolibarr/htdocs/donations %_datadir/dolibarr/htdocs/ecm %_datadir/dolibarr/htdocs/expedition %_datadir/dolibarr/htdocs/expensereport From 2b2b43afb6b670944cfa21fbc663957b814ea94a Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 25 Mar 2015 22:37:14 +0100 Subject: [PATCH 397/429] Dir "Don" --- build/rpm/dolibarr_fedora.spec | 2 +- build/rpm/dolibarr_generic.spec | 2 +- build/rpm/dolibarr_mandriva.spec | 2 +- build/rpm/dolibarr_opensuse.spec | 2 +- htdocs/compta/bank/account.php | 2 +- htdocs/compta/index.php | 4 +- htdocs/compta/resultat/clientfourn.php | 2 +- htdocs/core/lib/donation.lib.php | 10 +- htdocs/core/menus/init_menu_auguria.sql | 8 +- htdocs/core/menus/standard/eldy.lib.php | 8 +- .../modules/dons/html_cerfafr.modules.php | 2 +- htdocs/core/modules/dons/modules_don.php | 2 +- htdocs/{donations => don}/admin/donation.php | 4 +- .../admin/donation_extrafields.php | 2 +- htdocs/{donations => don/admin}/index.html | 0 htdocs/don/admin/index.php | 117 ++++++++++++++++++ htdocs/{donations => don}/card.php | 54 ++++---- htdocs/{donations => don}/class/don.class.php | 78 ++++++------ .../class/donationstats.class.php | 4 +- htdocs/don/class/index.html | 0 .../class/paymentdonation.class.php | 8 +- htdocs/{donations => don}/document.php | 6 +- htdocs/don/index.html | 0 htdocs/{donations => don}/index.php | 4 +- htdocs/{donations => don}/info.php | 4 +- htdocs/{donations => don}/list.php | 4 +- htdocs/{donations => don}/payment/card.php | 10 +- htdocs/don/payment/index.html | 0 htdocs/{donations => don}/payment/payment.php | 12 +- htdocs/{donations => don}/stats/index.php | 8 +- htdocs/install/filelist.xml | 2 +- htdocs/product/class/product.class.php | 2 +- 32 files changed, 239 insertions(+), 126 deletions(-) rename htdocs/{donations => don}/admin/donation.php (99%) rename htdocs/{donations => don}/admin/donation_extrafields.php (98%) rename htdocs/{donations => don/admin}/index.html (100%) create mode 100644 htdocs/don/admin/index.php rename htdocs/{donations => don}/card.php (93%) rename htdocs/{donations => don}/class/don.class.php (93%) rename htdocs/{donations => don}/class/donationstats.class.php (96%) create mode 100644 htdocs/don/class/index.html rename htdocs/{donations => don}/class/paymentdonation.class.php (97%) rename htdocs/{donations => don}/document.php (92%) create mode 100644 htdocs/don/index.html rename htdocs/{donations => don}/index.php (98%) rename htdocs/{donations => don}/info.php (93%) rename htdocs/{donations => don}/list.php (98%) rename htdocs/{donations => don}/payment/card.php (95%) create mode 100644 htdocs/don/payment/index.html rename htdocs/{donations => don}/payment/payment.php (95%) rename htdocs/{donations => don}/stats/index.php (97%) diff --git a/build/rpm/dolibarr_fedora.spec b/build/rpm/dolibarr_fedora.spec index 463f3e94e86..c34cd4e9d61 100755 --- a/build/rpm/dolibarr_fedora.spec +++ b/build/rpm/dolibarr_fedora.spec @@ -172,7 +172,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/contrat %_datadir/dolibarr/htdocs/core %_datadir/dolibarr/htdocs/cron -%_datadir/dolibarr/htdocs/donations +%_datadir/dolibarr/htdocs/don %_datadir/dolibarr/htdocs/ecm %_datadir/dolibarr/htdocs/expedition %_datadir/dolibarr/htdocs/expensereport diff --git a/build/rpm/dolibarr_generic.spec b/build/rpm/dolibarr_generic.spec index adc5abbfd58..c3c3b2a7939 100755 --- a/build/rpm/dolibarr_generic.spec +++ b/build/rpm/dolibarr_generic.spec @@ -252,7 +252,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/contrat %_datadir/dolibarr/htdocs/core %_datadir/dolibarr/htdocs/cron -%_datadir/dolibarr/htdocs/donations +%_datadir/dolibarr/htdocs/don %_datadir/dolibarr/htdocs/ecm %_datadir/dolibarr/htdocs/expedition %_datadir/dolibarr/htdocs/expensereport diff --git a/build/rpm/dolibarr_mandriva.spec b/build/rpm/dolibarr_mandriva.spec index ecc5fb76b0c..efe55e2aa7a 100755 --- a/build/rpm/dolibarr_mandriva.spec +++ b/build/rpm/dolibarr_mandriva.spec @@ -169,7 +169,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/contrat %_datadir/dolibarr/htdocs/core %_datadir/dolibarr/htdocs/cron -%_datadir/dolibarr/htdocs/donations +%_datadir/dolibarr/htdocs/don %_datadir/dolibarr/htdocs/ecm %_datadir/dolibarr/htdocs/expedition %_datadir/dolibarr/htdocs/expensereport diff --git a/build/rpm/dolibarr_opensuse.spec b/build/rpm/dolibarr_opensuse.spec index 129f6dc8f0a..6a86f9e3ffa 100755 --- a/build/rpm/dolibarr_opensuse.spec +++ b/build/rpm/dolibarr_opensuse.spec @@ -180,7 +180,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/contrat %_datadir/dolibarr/htdocs/core %_datadir/dolibarr/htdocs/cron -%_datadir/dolibarr/htdocs/donations +%_datadir/dolibarr/htdocs/don %_datadir/dolibarr/htdocs/ecm %_datadir/dolibarr/htdocs/expedition %_datadir/dolibarr/htdocs/expensereport diff --git a/htdocs/compta/bank/account.php b/htdocs/compta/bank/account.php index a4bfe4c0c37..3213709a54e 100644 --- a/htdocs/compta/bank/account.php +++ b/htdocs/compta/bank/account.php @@ -37,7 +37,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php' require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/salaries/class/paymentsalary.class.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/paiementfourn.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php index 9af8296f84d..698676829d1 100644 --- a/htdocs/compta/index.php +++ b/htdocs/compta/index.php @@ -127,7 +127,7 @@ if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire) if (! empty($conf->don->enabled) && $user->rights->don->lire) { $langs->load("donations"); - print ''; + print ''; print ''; print ''; print ''; @@ -497,7 +497,7 @@ if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture- // Last donations if (! empty($conf->don->enabled) && $user->rights->societe->lire) { - include_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; + include_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; $langs->load("boxes"); $donationstatic=new Don($db); diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index 4f1ff225417..a9e14030388 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -651,7 +651,7 @@ if ($conf->donation->enabled) $var = !$var; print ""; - print "\n"; + print "\n"; if ($modecompta == 'CREANCES-DETTES') print ''; print ''; diff --git a/htdocs/core/lib/donation.lib.php b/htdocs/core/lib/donation.lib.php index 93cbe889e4d..4155d5ce60e 100644 --- a/htdocs/core/lib/donation.lib.php +++ b/htdocs/core/lib/donation.lib.php @@ -34,7 +34,7 @@ function donation_admin_prepare_head() $h = 0; $head = array (); - $head[$h][0] = DOL_URL_ROOT . '/donations/admin/donation.php'; + $head[$h][0] = DOL_URL_ROOT . '/don/admin/donation.php'; $head[$h][1] = $langs->trans("Miscellaneous"); $head[$h][2] = 'general'; $h ++; @@ -45,7 +45,7 @@ function donation_admin_prepare_head() // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf, $langs, $object, $head, $h, 'donation_admin'); - $head[$h][0] = DOL_URL_ROOT . '/donations/admin/donation_extrafields.php'; + $head[$h][0] = DOL_URL_ROOT . '/don/admin/donation_extrafields.php'; $head[$h][1] = $langs->trans("ExtraFields"); $head[$h][2] = 'attributes'; $h++; @@ -68,7 +68,7 @@ function donation_prepare_head($object) $h = 0; $head = array (); - $head[$h][0] = DOL_URL_ROOT . '/donations/card.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT . '/don/card.php?id=' . $object->id; $head[$h][1] = $langs->trans("Card"); $head[$h][2] = 'card'; $h ++; @@ -79,12 +79,12 @@ function donation_prepare_head($object) // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf, $langs, $object, $head, $h, 'donation'); - $head[$h][0] = DOL_URL_ROOT . '/donations/document.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT . '/don/document.php?id='.$object->id; $head[$h][1] = $langs->trans("Documents"); $head[$h][2] = 'documents'; $h++; - $head[$h][0] = DOL_URL_ROOT . '/donations/info.php?id=' . $object->id; + $head[$h][0] = DOL_URL_ROOT . '/don/info.php?id=' . $object->id; $head[$h][1] = $langs->trans("Info"); $head[$h][2] = 'info'; $h++; diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 00579ab5f6d..3eab01619f1 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -172,10 +172,10 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left -- Accountancy - Orders to bill insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->commande->enabled', __HANDLER__, 'left', 1900__+MAX_llx_menu__, 'accountancy', 'orders', 6__+MAX_llx_menu__, '/commande/list.php?leftmenu=orders&viewstatut=3', 'MenuOrdersToBill', 0, 'orders', '$user->rights->commande->lire', '', 0, 3, __ENTITY__); -- Donations -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled', __HANDLER__, 'left', 2000__+MAX_llx_menu__, 'accountancy', 'donations', 6__+MAX_llx_menu__, '/donations/index.php?leftmenu=donations&mainmenu=accountancy', 'Donations', 0, 'donations', '$user->rights->don->lire', '', 2, 4, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2001__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/donations/card.php?leftmenu=donations&mainmenu=accountancy&action=create', 'NewDonation', 1, 'donations', '$user->rights->don->creer', '', 2, 0, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2002__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/donations/list.php?leftmenu=donations&mainmenu=accountancy', 'List', 1, 'donations', '$user->rights->don->lire', '', 2, 1, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2003__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/donations/stats/index.php?leftmenu=donations&mainmenu=accountancy', 'Statistics', 1, 'donations', '$user->rights->don->lire', '', 2, 2, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled', __HANDLER__, 'left', 2000__+MAX_llx_menu__, 'accountancy', 'donations', 6__+MAX_llx_menu__, '/don/index.php?leftmenu=donations&mainmenu=accountancy', 'Donations', 0, 'donations', '$user->rights->don->lire', '', 2, 4, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2001__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/don/card.php?leftmenu=donations&mainmenu=accountancy&action=create', 'NewDonation', 1, 'donations', '$user->rights->don->creer', '', 2, 0, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2002__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/don/list.php?leftmenu=donations&mainmenu=accountancy', 'List', 1, 'donations', '$user->rights->don->lire', '', 2, 1, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2003__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/don/stats/index.php?leftmenu=donations&mainmenu=accountancy', 'Statistics', 1, 'donations', '$user->rights->don->lire', '', 2, 2, __ENTITY__); -- Special expenses insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled || $conf->salaries->enabled', __HANDLER__, 'left', 2200__+MAX_llx_menu__, 'accountancy', 'tax', 6__+MAX_llx_menu__, '/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy', 'MenuSpecialExpenses', 0, 'compta', '(! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read)', '', 0, 6, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled', __HANDLER__, 'left', 2210__+MAX_llx_menu__, 'accountancy', 'tax_sal', 2200__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=accountancy', 'Salaries', 1, 'salaries', '$user->rights->salaries->read', '', 0, 1, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index b6122c095a2..1d35db720b7 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -807,10 +807,10 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (! empty($conf->don->enabled)) { $langs->load("donations"); - $newmenu->add("/donations/index.php?leftmenu=donations&mainmenu=accountancy",$langs->trans("Donations"), 0, $user->rights->don->lire, '', $mainmenu, 'donations'); - if (empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/donations/card.php?action=create",$langs->trans("NewDonation"), 1, $user->rights->don->creer); - if (empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/donations/list.php",$langs->trans("List"), 1, $user->rights->don->lire); - if ($leftmenu=="donations") $newmenu->add("/donations/stats/index.php",$langs->trans("Statistics"), 1, $user->rights->don->lire); + $newmenu->add("/don/index.php?leftmenu=donations&mainmenu=accountancy",$langs->trans("Donations"), 0, $user->rights->don->lire, '', $mainmenu, 'donations'); + if (empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/don/card.php?action=create",$langs->trans("NewDonation"), 1, $user->rights->don->creer); + if (empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/don/list.php",$langs->trans("List"), 1, $user->rights->don->lire); + if ($leftmenu=="donations") $newmenu->add("/don/stats/index.php",$langs->trans("Statistics"), 1, $user->rights->don->lire); } // Taxes and social contributions diff --git a/htdocs/core/modules/dons/html_cerfafr.modules.php b/htdocs/core/modules/dons/html_cerfafr.modules.php index 0efaf8c4524..8730b1041de 100644 --- a/htdocs/core/modules/dons/html_cerfafr.modules.php +++ b/htdocs/core/modules/dons/html_cerfafr.modules.php @@ -25,7 +25,7 @@ * \brief Form of donation */ require_once DOL_DOCUMENT_ROOT.'/core/modules/dons/modules_don.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; diff --git a/htdocs/core/modules/dons/modules_don.php b/htdocs/core/modules/dons/modules_don.php index abb7dd105ae..14045f20d11 100644 --- a/htdocs/core/modules/dons/modules_don.php +++ b/htdocs/core/modules/dons/modules_don.php @@ -25,7 +25,7 @@ * \brief File of class to manage donation document generation */ require_once DOL_DOCUMENT_ROOT.'/core/class/commondocgenerator.class.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; diff --git a/htdocs/donations/admin/donation.php b/htdocs/don/admin/donation.php similarity index 99% rename from htdocs/donations/admin/donation.php rename to htdocs/don/admin/donation.php index fa785763cc0..41ea0a3d542 100644 --- a/htdocs/donations/admin/donation.php +++ b/htdocs/don/admin/donation.php @@ -19,14 +19,14 @@ */ /** - * \file htdocs/donations/admin/dons.php + * \file htdocs/don/admin/dons.php * \ingroup donations * \brief Page to setup the donation module */ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $langs->load("admin"); diff --git a/htdocs/donations/admin/donation_extrafields.php b/htdocs/don/admin/donation_extrafields.php similarity index 98% rename from htdocs/donations/admin/donation_extrafields.php rename to htdocs/don/admin/donation_extrafields.php index f93b48bafca..6c964b46321 100644 --- a/htdocs/donations/admin/donation_extrafields.php +++ b/htdocs/don/admin/donation_extrafields.php @@ -16,7 +16,7 @@ */ /** - * \file htdocs/donations/admin/donation_extrafields.php + * \file htdocs/don/admin/donation_extrafields.php * \ingroup donations * \brief Page to setup extra fields of donations */ diff --git a/htdocs/donations/index.html b/htdocs/don/admin/index.html similarity index 100% rename from htdocs/donations/index.html rename to htdocs/don/admin/index.html diff --git a/htdocs/don/admin/index.php b/htdocs/don/admin/index.php new file mode 100644 index 00000000000..78ff3b48f9a --- /dev/null +++ b/htdocs/don/admin/index.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/admin/index.php + * \ingroup Donations + * \brief Setup page to configure donations module + */ + +require '../main.inc.php'; + +// Class +require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; + +$langs->load("admin"); +$langs->load("donations"); + +// Security check +if (!$user->admin) + accessforbidden(); + +$action = GETPOST('action', 'alpha'); + +// Other parameters DONATIONS_* +$list = array ( + 'DONATIONS_ACCOUNTING_ACCOUNT_PRODUCT' +); + +/* + * Actions + */ + +if ($action == 'update') +{ + $error = 0; + + foreach ($list as $constname) { + $constvalue = GETPOST($constname, 'alpha'); + + if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) { + $error++; + } + } + + if (! $error) + { + setEventMessage($langs->trans("SetupSaved")); + } + else + { + setEventMessage($langs->trans("Error"),'errors'); + } +} + +/* + * View + */ + +llxHeader('',$langs->trans('DonationsSetup')); + +$form = new Form($db); + +$linkback=''.$langs->trans("BackToModuleList").''; +print_fiche_titre($langs->trans('DonationsSetup'),$linkback,'setup'); + +print ''; +print ''; +print ''; + +/* + * Params + */ +print '
    '.$langs->trans("SearchADonation").'
     ".$langs->trans("Donation")." name."&search_name=".$obj->firstname." ".$obj->lastname."\">".$obj->name. " ".$obj->firstname." ".$obj->lastname."".$langs->trans("Donation")." name."&search_name=".$obj->firstname." ".$obj->lastname."\">".$obj->name. " ".$obj->firstname." ".$obj->lastname."'.price($obj->amount).''.price($obj->amount).'
    '; +print ''; +print ''; +print "\n"; + +foreach ($list as $key) +{ + $var=!$var; + + print ''; + + // Param + $label = $langs->trans($key); + print ''; + + // Value + print ''; +} + +print ''; + +print ''; +print "
    ' . $langs->trans('Options') . '
    '; + print ''; + print '
    \n"; + +print '
    '; + +llxFooter(); +$db->close(); \ No newline at end of file diff --git a/htdocs/donations/card.php b/htdocs/don/card.php similarity index 93% rename from htdocs/donations/card.php rename to htdocs/don/card.php index 6c2bd28a2d0..7e4039f760f 100644 --- a/htdocs/donations/card.php +++ b/htdocs/don/card.php @@ -20,7 +20,7 @@ */ /** - * \file htdocs/donations/card.php + * \file htdocs/don/card.php * \ingroup donations * \brief Page of donation card */ @@ -30,7 +30,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/modules/dons/modules_don.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; if (! empty($conf->projet->enabled)) @@ -111,7 +111,7 @@ if ($action == 'update') $object->note_public = GETPOST("note_public"); // Fill array 'array_options' with data from add form - $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + $ret = $extrafields->setOptionalsFromPost($extralabels,$object); if ($ret < 0) $error++; if ($object->update($user) > 0) @@ -164,7 +164,7 @@ if ($action == 'add') $object->fk_project = GETPOST("fk_project"); // Fill array 'array_options' with data from add form - $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + $ret = $extrafields->setOptionalsFromPost($extralabels,$object); if ($ret < 0) $error++; if ($object->create($user) > 0) @@ -355,13 +355,13 @@ if ($action == 'create') } // Other attributes - $parameters=array(); - $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook - if (empty($reshook) && ! empty($extrafields->attribute_label)) - { - print $object->showOptionals($extrafields,'edit'); - } - + $parameters=array('colspan' => 3); + $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + if (empty($reshook) && ! empty($extrafields->attribute_label)) + { + print $object->showOptionals($extrafields,'edit',$parameters); + } + print "\n"; print '
       
    '; print "\n"; @@ -461,13 +461,13 @@ if (! empty($id) && $action == 'edit') } // Other attributes - $parameters=array(); - $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook - if (empty($reshook) && ! empty($extrafields->attribute_label)) - { - print $object->showOptionals($extrafields,'edit'); - } - + $parameters=array('colspan' => ' colspan="2"'); + $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + if (empty($reshook) && ! empty($extrafields->attribute_label)) + { + print $object->showOptionals($extrafields,'edit'); + } + print "\n"; print '
       
    '; @@ -502,7 +502,7 @@ if (! empty($id) && $action != 'edit') print ''; print ''; - $linkback = ''.$langs->trans("BackToList").''; + $linkback = ''.$langs->trans("BackToList").''; $nbrows=12; if (! empty($conf->projet->enabled)) $nbrows++; @@ -570,7 +570,7 @@ if (! empty($id) && $action != 'edit') $objp = $db->fetch_object($resql); $var=!$var; print "'; + print ''.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.''; print '\n"; $labeltype=$langs->trans("PaymentType".$object->type_code)!=("PaymentType".$object->type_code)?$langs->trans("PaymentType".$object->type_code):$object->paiement_type; print "\n"; @@ -639,12 +639,12 @@ if (! empty($id) && $action != 'edit') } // Other attributes - $parameters=array(); - $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook - if (empty($reshook) && ! empty($extrafields->attribute_label)) - { - print $object->showOptionals($extrafields); - } + $parameters=array('colspan' => ' colspan="2"'); + $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + if (empty($reshook) && ! empty($extrafields->attribute_label)) + { + print $object->showOptionals($extrafields); + } print "
    "; - print ''.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.''.dol_print_date($db->jdate($objp->dp),'day')."".$labeltype.' '.$object->num_paiement."
    \n"; print "\n"; @@ -679,7 +679,7 @@ if (! empty($id) && $action != 'edit') } else { - print ''; + print ''; } } diff --git a/htdocs/donations/class/don.class.php b/htdocs/don/class/don.class.php similarity index 93% rename from htdocs/donations/class/don.class.php rename to htdocs/don/class/don.class.php index e02ecefccbc..c9f776e5ce6 100644 --- a/htdocs/donations/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -20,7 +20,7 @@ */ /** - * \file htdocs/donations/class/don.class.php + * \file htdocs/don/class/don.class.php * \ingroup Donation * \brief File of class to manage donations */ @@ -369,24 +369,22 @@ class Don extends CommonObject $result = $this->db->query($sql); if ($result) { - // Actions on extra fields (by external module) - /*$hookmanager->initHooks(array('dondao')); - $parameters=array('id'=>$this->id); - $action=''; - $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks - if (empty($reshook)) - { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used - { - $result=$this->insertExtraFields(); - if ($result < 0) - { - $error++; - } - } - } - else if ($reshook < 0) $error++; - */ + // Actions on extra fields (by external module or standard code) + $hookmanager->initHooks(array('donationdao')); + $parameters=array('id'=>$this->id); + $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + if (empty($reshook)) + { + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + { + $result=$this->insertExtraFields(); + if ($result < 0) + { + $error++; + } + } + } + else if ($reshook < 0) $error++; $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."don"); @@ -448,23 +446,22 @@ class Don extends CommonObject $result = $this->db->query($sql); if ($result) { - // Actions on extra fields (by external module) - $hookmanager->initHooks(array('dondao')); - $parameters=array('id'=>$this->id); - $action=''; - $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks - if (empty($reshook)) - { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used - { - $result=$this->insertExtraFields(); - if ($result < 0) - { - $error++; - } - } - } - else if ($reshook < 0) $error++; + // Actions on extra fields (by external module or standard code) + $hookmanager->initHooks(array('donationdao')); + $parameters=array('id'=>$this->id); + $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + if (empty($reshook)) + { + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + { + $result=$this->insertExtraFields(); + if ($result < 0) + { + $error++; + } + } + } + else if ($reshook < 0) $error++; // Call trigger $result=$this->call_trigger('DON_UPDATE',$user); @@ -500,15 +497,14 @@ class Don extends CommonObject { if ( $this->db->affected_rows($resql) ) { - // Removed extrafields - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + // Remove extrafields + if ((! $error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used { $result=$this->deleteExtraFields(); if ($result < 0) { $error++; - $errorflag=-4; - dol_syslog(get_class($this)."::delete error ".$errorflag." ".$this->error, LOG_ERR); + dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR); } } @@ -779,7 +775,7 @@ class Don extends CommonObject $result=''; $label=$langs->trans("ShowDonation").': '.$this->id; - $link = ''; + $link = ''; $linkend=''; $picto='generic'; diff --git a/htdocs/donations/class/donationstats.class.php b/htdocs/don/class/donationstats.class.php similarity index 96% rename from htdocs/donations/class/donationstats.class.php rename to htdocs/don/class/donationstats.class.php index b26617d651b..63105da07d2 100644 --- a/htdocs/donations/class/donationstats.class.php +++ b/htdocs/don/class/donationstats.class.php @@ -19,13 +19,13 @@ */ /** - * \file htdocs/donations/class/donationstats.class.php + * \file htdocs/don/class/dontats.class.php * \ingroup donations * \brief File of class to manage donations statistics */ include_once DOL_DOCUMENT_ROOT . '/core/class/stats.class.php'; -include_once DOL_DOCUMENT_ROOT . '/donations/class/don.class.php'; +include_once DOL_DOCUMENT_ROOT . '/don/class/don.class.php'; include_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php'; diff --git a/htdocs/don/class/index.html b/htdocs/don/class/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/donations/class/paymentdonation.class.php b/htdocs/don/class/paymentdonation.class.php similarity index 97% rename from htdocs/donations/class/paymentdonation.class.php rename to htdocs/don/class/paymentdonation.class.php index 9125ea68d57..4a42c677ec9 100644 --- a/htdocs/donations/class/paymentdonation.class.php +++ b/htdocs/don/class/paymentdonation.class.php @@ -16,7 +16,7 @@ */ /** - * \file htdocs/donations/class/paymentdonation.class.php + * \file htdocs/don/class/paymentdonation.class.php * \ingroup Donation * \brief File of class to manage payment of donations */ @@ -510,7 +510,7 @@ class PaymentDonation extends CommonObject // Add link 'payment', 'payment_supplier', 'payment_donation' in bank_url between payment and bank transaction $url=''; - if ($mode == 'payment_donation') $url=DOL_URL_ROOT.'/donations/payment/card.php?rowid='; + if ($mode == 'payment_donation') $url=DOL_URL_ROOT.'/don/payment/card.php?rowid='; if ($url) { $result=$acc->add_url_line($bank_line_id, $this->id, $url, '(paiement)', $mode); @@ -529,7 +529,7 @@ class PaymentDonation extends CommonObject { $don = new Don($this->db); $don->fetch($key); - $result=$acc->add_url_line($bank_line_id, $don->rowid, DOL_URL_ROOT.'/donations/card.php?rowid=', $don->type_libelle.(($don->lib && $don->lib!=$don->type_libelle)?' ('.$don->lib.')':''),'donation'); + $result=$acc->add_url_line($bank_line_id, $don->rowid, DOL_URL_ROOT.'/don/card.php?rowid=', $don->type_libelle.(($don->lib && $don->lib!=$don->type_libelle)?' ('.$don->lib.')':''),'donation'); if ($result <= 0) dol_print_error($this->db); } } @@ -593,7 +593,7 @@ class PaymentDonation extends CommonObject if (!empty($this->id)) { - $link = ''; + $link = ''; $linkend=''; if ($withpicto) $result.=($link.img_object($label, 'payment', 'class="classfortooltip"').$linkend.' '); diff --git a/htdocs/donations/document.php b/htdocs/don/document.php similarity index 92% rename from htdocs/donations/document.php rename to htdocs/don/document.php index 0cfb0447630..200e4180252 100644 --- a/htdocs/donations/document.php +++ b/htdocs/don/document.php @@ -16,13 +16,13 @@ */ /** - * \file htdocs/donations/document.php + * \file htdocs/don/document.php * \ingroup donations * \brief Page of linked files into donations */ require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; @@ -96,7 +96,7 @@ if ($object->id) print ''; - $linkback = ''.$langs->trans("BackToList").''; + $linkback = ''.$langs->trans("BackToList").''; // Ref print ''; - print ''; + print ''; print '\n"; print ''; diff --git a/htdocs/donations/stats/index.php b/htdocs/don/stats/index.php similarity index 97% rename from htdocs/donations/stats/index.php rename to htdocs/don/stats/index.php index 0a58751b8ed..798b1b5a392 100644 --- a/htdocs/donations/stats/index.php +++ b/htdocs/don/stats/index.php @@ -18,14 +18,14 @@ */ /** - * \file htdocs/donations/stats/index.php + * \file htdocs/don/stats/index.php * \ingroup donations * \brief Page with donations statistics */ require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/donationstats.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/dontats.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php'; $WIDTH=DolGraph::getDefaultGraphSizeForStats('width'); @@ -213,7 +213,7 @@ if (! count($arrayyears)) $arrayyears[$nowyear]=$nowyear; $h=0; $head = array(); -$head[$h][0] = DOL_URL_ROOT . '/donations/stats/index.php?mode='.$mode; +$head[$h][0] = DOL_URL_ROOT . '/don/stats/index.php?mode='.$mode; $head[$h][1] = $langs->trans("ByMonthYear"); $head[$h][2] = 'byyear'; $h++; diff --git a/htdocs/install/filelist.xml b/htdocs/install/filelist.xml index e9ae4ec5dd1..7b7ed9c36ef 100644 --- a/htdocs/install/filelist.xml +++ b/htdocs/install/filelist.xml @@ -5893,7 +5893,7 @@ d41d8cd98f00b204e9800998ecf8427e8ea20800d43bbdfdb20363355521c20c - + 9029f09e1592da49626e9fb5b6399e1e d71afb404b4f1946d241bc44ab27df8b 823e0c612e7de62db2d41adf37214bea diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index f66a007e93a..d08ed699b7f 100755 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -1563,7 +1563,7 @@ class Product extends CommonObject $this->db->free($resql); - // Retreive all extrafield for thirdparty + // Retrieve all extrafield for thirdparty // fetch optionals attributes and labels require_once(DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'); $extrafields=new ExtraFields($this->db); From 8d4ceadd7e19861b8998d7c865206a2c56cb8f0a Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 25 Mar 2015 22:38:44 +0100 Subject: [PATCH 398/429] Dir "Don" --- htdocs/donations/admin/index.html | 0 htdocs/donations/admin/index.php | 117 ---------------------------- htdocs/donations/class/index.html | 0 htdocs/donations/payment/index.html | 0 4 files changed, 117 deletions(-) delete mode 100644 htdocs/donations/admin/index.html delete mode 100644 htdocs/donations/admin/index.php delete mode 100644 htdocs/donations/class/index.html delete mode 100644 htdocs/donations/payment/index.html diff --git a/htdocs/donations/admin/index.html b/htdocs/donations/admin/index.html deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/htdocs/donations/admin/index.php b/htdocs/donations/admin/index.php deleted file mode 100644 index 78ff3b48f9a..00000000000 --- a/htdocs/donations/admin/index.php +++ /dev/null @@ -1,117 +0,0 @@ - - * - * 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/admin/index.php - * \ingroup Donations - * \brief Setup page to configure donations module - */ - -require '../main.inc.php'; - -// Class -require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; - -$langs->load("admin"); -$langs->load("donations"); - -// Security check -if (!$user->admin) - accessforbidden(); - -$action = GETPOST('action', 'alpha'); - -// Other parameters DONATIONS_* -$list = array ( - 'DONATIONS_ACCOUNTING_ACCOUNT_PRODUCT' -); - -/* - * Actions - */ - -if ($action == 'update') -{ - $error = 0; - - foreach ($list as $constname) { - $constvalue = GETPOST($constname, 'alpha'); - - if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) { - $error++; - } - } - - if (! $error) - { - setEventMessage($langs->trans("SetupSaved")); - } - else - { - setEventMessage($langs->trans("Error"),'errors'); - } -} - -/* - * View - */ - -llxHeader('',$langs->trans('DonationsSetup')); - -$form = new Form($db); - -$linkback=''.$langs->trans("BackToModuleList").''; -print_fiche_titre($langs->trans('DonationsSetup'),$linkback,'setup'); - -print '
    '; -print ''; -print ''; - -/* - * Params - */ -print '
    '.$langs->trans("Ref").''; diff --git a/htdocs/don/index.html b/htdocs/don/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/donations/index.php b/htdocs/don/index.php similarity index 98% rename from htdocs/donations/index.php rename to htdocs/don/index.php index ac64d6b2dde..b276e21dc50 100644 --- a/htdocs/donations/index.php +++ b/htdocs/don/index.php @@ -18,13 +18,13 @@ */ /** - * \file htdocs/donations/index.php + * \file htdocs/don/index.php * \ingroup donations * \brief Home page of donation module */ require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; $langs->load("donations"); diff --git a/htdocs/donations/info.php b/htdocs/don/info.php similarity index 93% rename from htdocs/donations/info.php rename to htdocs/don/info.php index a85b734fcf6..04cbae7a587 100644 --- a/htdocs/donations/info.php +++ b/htdocs/don/info.php @@ -16,7 +16,7 @@ */ /** - * \file htdocs/donations/info.php + * \file htdocs/don/info.php * \ingroup donations * \brief Page to show a donation information */ @@ -24,7 +24,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; $langs->load("donations"); diff --git a/htdocs/donations/list.php b/htdocs/don/list.php similarity index 98% rename from htdocs/donations/list.php rename to htdocs/don/list.php index f277dc0b671..ee7a6f5e6f9 100644 --- a/htdocs/donations/list.php +++ b/htdocs/don/list.php @@ -19,13 +19,13 @@ */ /** - * \file htdocs/donations/list.php + * \file htdocs/don/list.php * \ingroup donations * \brief List of donations */ require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; if (! empty($conf->projet->enabled)) require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; $langs->load("companies"); diff --git a/htdocs/donations/payment/card.php b/htdocs/don/payment/card.php similarity index 95% rename from htdocs/donations/payment/card.php rename to htdocs/don/payment/card.php index 6b30fdcc89b..5cdb7f20446 100644 --- a/htdocs/donations/payment/card.php +++ b/htdocs/don/payment/card.php @@ -16,14 +16,14 @@ */ /** - * \file htdocs/donations/payment/card.php + * \file htdocs/don/payment/card.php * \ingroup donations * \brief Tab payment of a donation */ require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/paymentdonation.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/paymentdonation.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/facture/modules_facture.php'; if (! empty($conf->banque->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; @@ -61,7 +61,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->don->supp if ($result > 0) { $db->commit(); - header("Location: ".DOL_URL_ROOT."/donations/index.php"); + header("Location: ".DOL_URL_ROOT."/don/index.php"); exit; } else @@ -121,7 +121,7 @@ $form = new Form($db); $h=0; -$head[$h][0] = DOL_URL_ROOT.'/donations/payment/card.php?id='.$id; +$head[$h][0] = DOL_URL_ROOT.'/don/payment/card.php?id='.$id; $head[$h][1] = $langs->trans("Card"); $hselected = $h; $h++; diff --git a/htdocs/don/payment/index.html b/htdocs/don/payment/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/donations/payment/payment.php b/htdocs/don/payment/payment.php similarity index 95% rename from htdocs/donations/payment/payment.php rename to htdocs/don/payment/payment.php index 871bbaa1056..52cf8f38a12 100644 --- a/htdocs/donations/payment/payment.php +++ b/htdocs/don/payment/payment.php @@ -16,14 +16,14 @@ */ /** - * \file htdocs/donations/payment.php + * \file htdocs/don/payment.php * \ingroup donations * \brief Page to add payment of a donation */ require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/paymentdonation.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/paymentdonation.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $langs->load("bills"); @@ -50,7 +50,7 @@ if ($action == 'add_payment') if ($_POST["cancel"]) { - $loc = DOL_URL_ROOT.'/donations/card.php?rowid='.$chid; + $loc = DOL_URL_ROOT.'/don/card.php?rowid='.$chid; header("Location: ".$loc); exit; } @@ -129,7 +129,7 @@ if ($action == 'add_payment') if (! $error) { $db->commit(); - $loc = DOL_URL_ROOT.'/donations/card.php?rowid='.$chid; + $loc = DOL_URL_ROOT.'/don/card.php?rowid='.$chid; header('Location: '.$loc); exit; } @@ -180,7 +180,7 @@ if (GETPOST("action") == 'create') print '
    '.$langs->trans("Donation").'
    '.$langs->trans("Ref").''.$chid.'
    '.$langs->trans("Ref").''.$chid.'
    '.$langs->trans("Date")."".dol_print_date($don->date,'day')."
    '.$langs->trans("Amount")."".price($don->amount,0,$outputlangs,1,-1,-1,$conf->currency).'
    '; -print ''; -print ''; -print "\n"; - -foreach ($list as $key) -{ - $var=!$var; - - print ''; - - // Param - $label = $langs->trans($key); - print ''; - - // Value - print ''; -} - -print ''; - -print ''; -print "
    ' . $langs->trans('Options') . '
    '; - print ''; - print '
    \n"; - -print '
    '; - -llxFooter(); -$db->close(); \ No newline at end of file diff --git a/htdocs/donations/class/index.html b/htdocs/donations/class/index.html deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/htdocs/donations/payment/index.html b/htdocs/donations/payment/index.html deleted file mode 100644 index e69de29bb2d..00000000000 From b60f1e33d6767e5bb94568cc7453b72d0f0d7c5a Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 26 Mar 2015 06:29:16 +0100 Subject: [PATCH 399/429] Debug --- htdocs/compta/bank/account.php | 1 + htdocs/core/modules/modDon.class.php | 2 +- htdocs/projet/element.php | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/bank/account.php b/htdocs/compta/bank/account.php index 3213709a54e..cd7478bf36c 100644 --- a/htdocs/compta/bank/account.php +++ b/htdocs/compta/bank/account.php @@ -730,6 +730,7 @@ if ($id > 0 || ! empty($ref)) } $donstatic->ref=$donstatic->lib; print $donstatic->getNomUrl(1,16); + } else if ($links[$key]['type']=='loan') { $loanstatic->id=$links[$key]['url_id']; diff --git a/htdocs/core/modules/modDon.class.php b/htdocs/core/modules/modDon.class.php index 6d67b625f91..8c7425ceed2 100644 --- a/htdocs/core/modules/modDon.class.php +++ b/htdocs/core/modules/modDon.class.php @@ -64,7 +64,7 @@ class modDon extends DolibarrModules $this->requiredby = array(); // Config pages - $this->config_page_url = array("donation.php@donations"); + $this->config_page_url = array("donation.php@don"); // Constants $this->const = array (); diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 000b759e091..23c3cc6f8b1 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -53,7 +53,7 @@ if (! empty($conf->propal->enabled)) $langs->load("propal"); if (! empty($conf->ficheinter->enabled)) $langs->load("interventions"); if (! empty($conf->deplacement->enabled)) $langs->load("trips"); if (! empty($conf->expensereport->enabled)) $langs->load("trips"); -if (! empty($conf->expensereport->enabled)) $langs->load("donations"); +if (! empty($conf->don->enabled)) $langs->load("donations"); $id=GETPOST('id','int'); $ref=GETPOST('ref','alpha'); From 50a3563f0320c9fcd46b4ea50cefb1646b71f897 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Thu, 26 Mar 2015 10:57:13 +0100 Subject: [PATCH 400/429] Minor correction to the product list of a supplier --- htdocs/fourn/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index 40d51c89b90..97004783ae6 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -351,7 +351,7 @@ if ($object->id > 0) print ''; print $productstatic->getNomUrl(1); print ''; - print ''; + print ''; print dol_trunc(dol_htmlentities($objp->label), 30); print ''; print ''.dol_print_date($objp->tms).''; From ce8bd7a5155aefae7d3ccfc1951c2168d62be0ae Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 26 Mar 2015 11:20:39 +0100 Subject: [PATCH 401/429] Fix pb during export of agenda events --- htdocs/core/modules/modAgenda.class.php | 12 ++++++------ htdocs/exports/export.php | 2 +- htdocs/langs/en_US/agenda.lang | 2 ++ htdocs/langs/en_US/main.lang | 1 + 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/htdocs/core/modules/modAgenda.class.php b/htdocs/core/modules/modAgenda.class.php index 165b547dff4..73a8390c9e6 100644 --- a/htdocs/core/modules/modAgenda.class.php +++ b/htdocs/core/modules/modAgenda.class.php @@ -367,24 +367,24 @@ class modAgenda extends DolibarrModules $this->export_code[$r]=$this->rights_class.'_'.$r; $this->export_label[$r]="ExportDataset_event1"; $this->export_permission[$r]=array(array("agenda","export")); - $this->export_fields_array[$r]=array('ac.id'=>"ActionId",'ac.ref_ext'=>"ExternalRef",'ac.datec'=>"ActionDateCreation",'ac.datep'=>"DateActionBegin", - 'ac.datep2'=>"DateActionEnd",'ac.label'=>"Title",'ac.note'=>"Note",'ac.percent'=>"Percent",'ac.durationp'=>"durationp", + $this->export_fields_array[$r]=array('ac.id'=>"IdAgenda",'ac.ref_ext'=>"ExternalRef",'ac.datec'=>"DateCreation",'ac.datep'=>"DateActionBegin", + 'ac.datep2'=>"DateActionEnd",'ac.label'=>"Title",'ac.note'=>"Note",'ac.percent'=>"Percent",'ac.durationp'=>"Duration", 'cac.libelle'=>"ActionType", 's.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town', - 'co.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4', + 'co.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6', 's.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode','s.tva_intra'=>'VATIntra'); $this->export_TypeFields_array[$r]=array('ac.ref_ext'=>"Text",'ac.datec'=>"Date",'ac.datep'=>"Date", 'ac.datep2'=>"Date",'ac.label'=>"Text",'ac.note'=>"Text",'ac.percent'=>"Number", 'ac.durationp'=>"Duree", - 'cac.libelle'=>"List:c_actioncomm:libelle:rowid", + 'cac.libelle'=>"List:c_actioncomm:libelle:id", 's.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text', - 'co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text', + 'co.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.idprof5'=>'Text','s.idprof6'=>'Text', 's.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text','s.tva_intra'=>'Text'); $this->export_entities_array[$r]=array('ac.id'=>"action",'ac.ref_ext'=>"action",'ac.datec'=>"action",'ac.datep'=>"action", 'ac.datep2'=>"action",'ac.label'=>"action",'ac.note'=>"action",'ac.percent'=>"action",'ac.durationp'=>"action", 'cac.libelle'=>"action", 's.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company', - 'co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company', + 'co.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company', 's.code_compta'=>'company','s.code_compta_fournisseur'=>'company','s.tva_intra'=>'company',); $this->export_sql_start[$r]='SELECT DISTINCT '; diff --git a/htdocs/exports/export.php b/htdocs/exports/export.php index ca997f0eb59..5c3400e5375 100644 --- a/htdocs/exports/export.php +++ b/htdocs/exports/export.php @@ -97,7 +97,7 @@ $entitytolang = array( 'project' => 'Projects', 'projecttask' => 'Tasks', 'task_time' => 'TaskTimeSpent', - 'action' => 'Action', + 'action' => 'Event', 'expensereport'=> 'ExpenseReport', 'expensereport_line'=> 'ExpenseReportLine', ); diff --git a/htdocs/langs/en_US/agenda.lang b/htdocs/langs/en_US/agenda.lang index 13de82c602f..48c284e2022 100644 --- a/htdocs/langs/en_US/agenda.lang +++ b/htdocs/langs/en_US/agenda.lang @@ -91,3 +91,5 @@ WorkingTimeRange=Working time range WorkingDaysRange=Working days range AddEvent=Create event MyAvailability=My availability +ActionType=Event type +DateActionBegin=Start event date \ No newline at end of file diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index b160c4303a0..36fbd6c659b 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -352,6 +352,7 @@ Status=Status Favorite=Favorite ShortInfo=Info. Ref=Ref. +ExternalRef=Ref. extern RefSupplier=Ref. supplier RefPayment=Ref. payment CommercialProposalsShort=Commercial proposals From 059bb403450eb0ce48d70ac7e4e3e37bf0b37c83 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 26 Mar 2015 20:43:34 +0100 Subject: [PATCH 402/429] Debug --- htdocs/don/card.php | 44 ++-- htdocs/don/class/don.class.php | 320 +++++++++++++----------- htdocs/install/mysql/tables/llx_don.sql | 6 +- htdocs/langs/en_US/donations.lang | 2 + htdocs/projet/class/project.class.php | 2 +- 5 files changed, 211 insertions(+), 163 deletions(-) diff --git a/htdocs/don/card.php b/htdocs/don/card.php index 7e4039f760f..8f33ee7fb1b 100644 --- a/htdocs/don/card.php +++ b/htdocs/don/card.php @@ -47,25 +47,25 @@ $id=GETPOST('rowid')?GETPOST('rowid','int'):GETPOST('id','int'); $action=GETPOST('action','alpha'); $cancel=GETPOST('cancel'); $amount=GETPOST('amount'); +$donation_date=dol_mktime(12, 0, 0, GETPOST('remonth'), GETPOST('reday'), GETPOST('reyear')); $object = new Don($db); $extrafields = new ExtraFields($db); -// fetch optionals attributes and labels -$extralabels=$extrafields->fetch_name_optionals_label($object->table_element); - -$donation_date=dol_mktime(12, 0, 0, GETPOST('remonth'), GETPOST('reday'), GETPOST('reyear')); - // Security check $result = restrictedArea($user, 'don', $id); +// fetch optionals attributes and labels +$extralabels=$extrafields->fetch_name_optionals_label($object->table_element); + // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('doncard','globalcard')); - /* * Actions */ +$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some +if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); if ($action == 'update') { @@ -174,17 +174,21 @@ if ($action == 'add') } } } - -if ($action == 'delete') +if ($action == 'confirm_delete' && GETPOST("confirm") == "yes" && $user->rights->don->supprimer) { - $object->delete($id); - header("Location: list.php"); - exit; -} -if ($action == 'commentaire') -{ - $object->fetch($id); - $object->update_note(GETPOST("commentaire")); + $object->fetch($id); + $result=$object->delete($user); + if ($result > 0) + { + header("Location: index.php"); + exit; + } + else + { + dol_syslog($object->error,LOG_DEBUG); + setEventMessage($object->error,'errors'); + setEventMessage($object->errors,'errors'); + } } if ($action == 'valid_promesse') { @@ -486,6 +490,13 @@ if (! empty($id) && $action == 'edit') /* ************************************************************ */ if (! empty($id) && $action != 'edit') { + // Confirmation delete + if ($action == 'delete') + { + $text=$langs->trans("ConfirmDeleteADonation"); + print $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$object->id,$langs->trans("DeleteADonation"),$text,"confirm_delete",'','',1); + } + $result=$object->fetch($id); if ($result < 0) { dol_print_error($db,$object->error); exit; @@ -689,6 +700,7 @@ if (! empty($id) && $action != 'edit') print '"; } + // Delete if ($user->rights->don->supprimer) { print '"; diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index c9f776e5ce6..bddd5c9e533 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -34,8 +34,10 @@ require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php'; */ class Don extends CommonObject { - public $element='don'; - public $table_element='don'; + public $element='don'; // Id that identify managed objects + public $table_element='don'; // Name of table without prefix where object is stored + public $fk_element = 'fk_don'; + protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe var $id; var $ref; @@ -299,14 +301,19 @@ class Don extends CommonObject /** * Create donation record into database * - * @param User $user Objet utilisateur qui cree le don - * @return int Id don cree si ok, <0 si ko + * @param User $user User who created the donation + * @param int $notrigger Disable triggers + * @return int <0 if KO, id of created donation if OK * TODO add numbering module for Ref */ function create($user) { - global $conf; - + global $conf, $langs; + + $error = 0; + $ret = 0; + $now=dol_now(); + // Clean parameters $this->address=($this->address>0?$this->address:$this->address); $this->zip=($this->zip>0?$this->zip:$this->zip); @@ -314,8 +321,6 @@ class Don extends CommonObject $this->country_id=($this->country_id>0?$this->country_id:$this->country_id); $this->country=($this->country?$this->country:$this->country); - $now=dol_now(); - $this->db->begin(); $sql = "INSERT INTO ".MAIN_DB_PREFIX."don ("; @@ -365,41 +370,54 @@ class Don extends CommonObject $sql.= ", '".$this->db->escape($this->phone_mobile)."'"; $sql.= ")"; - dol_syslog("Don::create", LOG_DEBUG); - $result = $this->db->query($sql); - if ($result) + dol_syslog(get_class($this)."::create", LOG_DEBUG); + $resql = $this->db->query($sql); + if ($resql) { - // Actions on extra fields (by external module or standard code) - $hookmanager->initHooks(array('donationdao')); - $parameters=array('id'=>$this->id); - $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks - if (empty($reshook)) - { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used - { - $result=$this->insertExtraFields(); - if ($result < 0) - { - $error++; - } - } - } - else if ($reshook < 0) $error++; - - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."don"); + $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."don"); + $ret = $this->id; - // Call trigger - $result=$this->call_trigger('DON_CREATE',$user); - if ($result < 0) { $error++; $this->db->rollback(); return -1; } - // End call triggers + if (!$notrigger) + { + // Call trigger + $result=$this->call_trigger('DON_CREATE',$user); + if ($result < 0) { $error++; } + // End call triggers + } + } + else + { + $this->error = $this->db->lasterror(); + $this->errno = $this->db->lasterrno(); + $error++; + } + + // Update extrafield + if (!$error) { + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + { + $result=$this->insertExtraFields(); + if ($result < 0) + { + $error++; + } + } + } + + if (!$error && !empty($conf->global->MAIN_DISABLEDRAFTSTATUS)) + { + $res = $this->setValid($user); + if ($res < 0) $error++; + } + if (!$error) + { $this->db->commit(); - return $this->id; + return $ret; } else { $this->db->rollback(); - dol_print_error($this->db); return -1; } } @@ -410,8 +428,12 @@ class Don extends CommonObject * @param User $user Objet utilisateur qui met a jour le don * @return int >0 if OK, <0 if KO */ - function update($user) + function update($user, $notrigger=0) { + global $langs, $conf; + + $error=0; + // Clean parameters $this->address=($this->address>0?$this->address:$this->address); $this->zip=($this->zip>0?$this->zip:$this->zip); @@ -440,91 +462,126 @@ class Don extends CommonObject $sql .= ",phone='".$this->phone."'"; $sql .= ",phone_mobile='".$this->phone_mobile."'"; $sql .= ",fk_statut=".$this->statut; - $sql .= " WHERE rowid = $this->id"; - - dol_syslog("Don::update", LOG_DEBUG); - $result = $this->db->query($sql); - if ($result) - { - // Actions on extra fields (by external module or standard code) - $hookmanager->initHooks(array('donationdao')); - $parameters=array('id'=>$this->id); - $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks - if (empty($reshook)) - { - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used - { - $result=$this->insertExtraFields(); - if ($result < 0) - { - $error++; - } - } - } - else if ($reshook < 0) $error++; - - // Call trigger - $result=$this->call_trigger('DON_UPDATE',$user); - if ($result < 0) { $error++; $this->db->rollback(); return -1; } - // End call triggers - - $this->db->commit(); - return 1; - } - else - { - $this->db->rollback(); - dol_print_error($this->db); - return -1; - } - } - - /** - * Delete a donation - * - * @param int $rowid Id of donation to delete - * @return int <0 if KO, >0 if OK - */ - function delete($rowid) - { - - $this->db->begin(); - - $sql = "DELETE FROM ".MAIN_DB_PREFIX."don WHERE rowid = $rowid AND fk_statut = 0;"; + $sql .= " WHERE rowid = '".$this->id."'"; + dol_syslog(get_class($this)."::Update", LOG_DEBUG); $resql=$this->db->query($sql); if ($resql) { - if ( $this->db->affected_rows($resql) ) + if (!$notrigger) { - // Remove extrafields - if ((! $error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used - { - $result=$this->deleteExtraFields(); - if ($result < 0) - { - $error++; - dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR); - } - } - - // Call trigger - $result=$this->call_trigger('DON_DELETE',$user); - if ($result < 0) { $error++; $this->db->rollback(); return -1; } + // Call trigger + $result=$this->call_trigger('DON_MODIFY',$user); + if ($result < 0) { $error++; } // End call triggers + } + // Update extrafield + if (!$error) + { + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + { + $result=$this->insertExtraFields(); + if ($result < 0) + { + $error++; + } + } + } + + if (! $error ) + { $this->db->commit(); - return 1; + $result = 1; } else { $this->db->rollback(); - return -1; + $result = -1; } } else + { + $this->error = $this->db->lasterror(); + $this->errors[] = $this->error; + $this->db->rollback(); + dol_syslog(get_class($this)."::Update error -2 " . $this->error, LOG_ERR); + $result = -2; + } + return $result; + } + + /** + * Delete a donation from database + * + * @param User $user User + * @param int $notrigger Disable triggers + * @return int <0 if KO, 0 if not possible, >0 if OK + */ + function delete($user, $notrigger=0) + { + global $conf, $langs; + require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; + + $error = 0; + + $this->db->begin(); + + // Delete donation + if (! $error) { - dol_print_error($this->db); + $sql = "DELETE FROM " . MAIN_DB_PREFIX . "don"; + $sql.= " WHERE rowid=" . $this->id; + + $resql = $this->db->query($sql); + if (!$resql) + { + $this->errors[] = $this->db->lasterror(); + $error++; + } + } + + if (! $error) + { + $sql = "DELETE FROM " . MAIN_DB_PREFIX . "don_extrafields"; + $sql.= " WHERE fk_object=" . $this->id; + + $resql = $this->db->query($sql); + if (! $resql) + { + $this->errors[] = $this->db->lasterror(); + $error++; + } + } + + if (! $error) + { + if (!$notrigger) + { + // Call trigger + $result=$this->call_trigger('DON_DELETE',$user); + + if ($result < 0) { + $error++; + } + // End call triggers + } + } + + if (! $error) + { + $this->db->commit(); + return 1; + } + else + { + foreach ( $this->errors as $errmsg ) + { + dol_syslog(get_class($this) . "::delete " . $errmsg, LOG_ERR); + $this->error .= ($this->error ? ', ' . $errmsg : $errmsg); + } + dol_syslog(get_class($this) . "::delete " . $this->error, LOG_ERR); + $this->db->rollback(); return -1; } } @@ -536,7 +593,7 @@ class Don extends CommonObject * @param string $ref Ref of donation to load * @return int <0 if KO, >0 if OK */ - function fetch($rowid,$ref='') + function fetch($id,$ref='') { global $conf; @@ -550,7 +607,15 @@ class Don extends CommonObject $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet as p ON p.rowid = d.fk_project"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as cp ON cp.id = d.fk_payment"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as c ON d.fk_country = c.rowid"; - $sql.= " WHERE d.rowid = ".$rowid." AND d.entity = ".$conf->entity; + if (! empty($id)) + { + $sql.= " WHERE d.rowid=".$id; + } + else if (! empty($ref)) + { + $sql.= " WHERE ref='".$this->db->escape($ref)."'"; + } + $sql.= " AND d.entity = ".$conf->entity; dol_syslog(get_class($this)."::fetch", LOG_DEBUG); $resql=$this->db->query($sql); @@ -615,10 +680,10 @@ class Don extends CommonObject * @param int $userid User who validate the promise * @return int <0 if KO, >0 if OK */ - function valid_promesse($rowid, $userid) + function valid_promesse($id, $userid) { - $sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = 1, fk_user_valid = $userid WHERE rowid = $rowid AND fk_statut = 0"; + $sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = 1, fk_user_valid = ".$userid." WHERE rowid = ".$id." AND fk_statut = 0"; $resql=$this->db->query($sql); if ($resql) @@ -646,7 +711,7 @@ class Don extends CommonObject * @param int $modepaiement mode de paiement * @return int <0 if KO, >0 if OK */ - function set_paye($rowid, $modepaiement='') + function set_paid($id, $modepaiement='') { $sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = 2"; if ($modepaiement) @@ -674,46 +739,15 @@ class Don extends CommonObject } } - - /** - * Classe le don comme encaisse - * - * @param int $rowid id du don a modifier - * @return int <0 if KO, >0 if OK - */ - function set_encaisse($rowid) - { - - $sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = 3 WHERE rowid = $rowid AND fk_statut = 2"; - - $resql=$this->db->query($sql); - if ($resql) - { - if ( $this->db->affected_rows($resql) ) - { - return 1; - } - else - { - return 0; - } - } - else - { - dol_print_error($this->db); - return -1; - } - } - /** * Set donation to status canceled * * @param int $rowid id of donation * @return int <0 if KO, >0 if OK */ - function set_cancel($rowid) + function set_cancel($id) { - $sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = -1 WHERE rowid = ".$rowid; + $sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = -1 WHERE rowid = ".$id; $resql=$this->db->query($sql); if ($resql) diff --git a/htdocs/install/mysql/tables/llx_don.sql b/htdocs/install/mysql/tables/llx_don.sql index a3882fc6f99..d33467f9a7b 100644 --- a/htdocs/install/mysql/tables/llx_don.sql +++ b/htdocs/install/mysql/tables/llx_don.sql @@ -26,7 +26,7 @@ create table llx_don ref varchar(30) DEFAULT NULL, -- Ref donation (TODO change to NOT NULL) entity integer DEFAULT 1 NOT NULL, -- multi company id tms timestamp, - fk_statut smallint NOT NULL DEFAULT 0, -- etat du don promesse/valid + fk_statut smallint NOT NULL DEFAULT 0, -- Status of donation promise or validate datec datetime, -- date de creation de l'enregistrement datedon datetime, -- date du don/promesse amount real DEFAULT 0, @@ -43,8 +43,8 @@ create table llx_don email varchar(255), phone varchar(24), phone_mobile varchar(24), - public smallint DEFAULT 1 NOT NULL, -- le don est-il public (0,1) - fk_project integer NULL, -- projet auquel est fait le don + public smallint DEFAULT 1 NOT NULL, -- Donation is public ? (0,1) + fk_project integer NULL, -- Donation is given for a project ? fk_user_author integer NOT NULL, fk_user_valid integer NULL, note_private text, diff --git a/htdocs/langs/en_US/donations.lang b/htdocs/langs/en_US/donations.lang index 13634f98380..627cc9a076c 100644 --- a/htdocs/langs/en_US/donations.lang +++ b/htdocs/langs/en_US/donations.lang @@ -6,6 +6,8 @@ Donor=Donor Donors=Donors AddDonation=Create a donation NewDonation=New donation +DeleteADonation=Delete a donation +ConfirmDeleteADonation=Are you sure you want to delete this donation ? ShowDonation=Show donation DonationPromise=Gift promise PromisesNotValid=Not validated promises diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 681abb411ce..e78e9de0c63 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -506,7 +506,7 @@ class Project extends CommonObject // Set fk_projet into elements to null $listoftables=array( 'facture'=>'fk_projet','propal'=>'fk_projet','commande'=>'fk_projet','facture_fourn'=>'fk_projet','commande_fournisseur'=>'fk_projet', - 'expensereport_det'=>'fk_projet','contrat'=>'fk_projet','fichinter'=>'fk_projet' + 'expensereport_det'=>'fk_projet','contrat'=>'fk_projet','fichinter'=>'fk_projet','don'=>'fk_project' ); foreach($listoftables as $key => $value) { From a39f81b1a627b779732b9e4f2a157c0e752cecff Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 26 Mar 2015 20:51:27 +0100 Subject: [PATCH 403/429] FIXED: Correct path of loan class --- htdocs/compta/bank/account.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/bank/account.php b/htdocs/compta/bank/account.php index 80fd211634e..c84909cb216 100644 --- a/htdocs/compta/bank/account.php +++ b/htdocs/compta/bank/account.php @@ -37,7 +37,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php' require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/salaries/class/paymentsalary.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; +require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/paiementfourn.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; @@ -611,7 +611,7 @@ if ($id > 0 || ! empty($ref)) } elseif ($links[$key]['type']=='payment_loan') { - print ''; + print ''; print ' '.img_object($langs->trans('ShowPayment'),'payment').' '; print ''; } From 6a0916b3faaf46f3ba48ff50d0c88df13a0f0a48 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 26 Mar 2015 21:03:56 +0100 Subject: [PATCH 404/429] Correct path --- htdocs/don/class/don.class.php | 2 +- htdocs/public/donations/donateurs_code.php | 2 +- htdocs/public/donations/therm.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index bddd5c9e533..c4f9d66a3ec 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -36,7 +36,7 @@ class Don extends CommonObject { public $element='don'; // Id that identify managed objects public $table_element='don'; // Name of table without prefix where object is stored - public $fk_element = 'fk_don'; + public $fk_element = 'fk_donation'; protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe var $id; diff --git a/htdocs/public/donations/donateurs_code.php b/htdocs/public/donations/donateurs_code.php index ad42b7e0e7f..0fef24df949 100644 --- a/htdocs/public/donations/donateurs_code.php +++ b/htdocs/public/donations/donateurs_code.php @@ -39,7 +39,7 @@ function llxHeaderVierge() { print 'Export agenda cal function llxFooterVierge() { print ''; } require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT .'/donations/class/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT .'/don/class/don.class.php'; // Security check if (empty($conf->don->enabled)) accessforbidden('',1,1,1); diff --git a/htdocs/public/donations/therm.php b/htdocs/public/donations/therm.php index 36bdec4637f..7c24253dd71 100644 --- a/htdocs/public/donations/therm.php +++ b/htdocs/public/donations/therm.php @@ -27,7 +27,7 @@ define("NOCSRFCHECK",1); // We accept to go on this page from external web site. require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/donations/class/don.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; // Security check if (empty($conf->don->enabled)) accessforbidden('',1,1,1); From f0823a215b98f95ce934d2e3aa9e36159a3fbd31 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 26 Mar 2015 21:16:52 +0100 Subject: [PATCH 405/429] Add language key --- htdocs/langs/en_US/projects.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index ef270909120..40b1c2e308d 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -72,6 +72,7 @@ ListSupplierInvoicesAssociatedProject=List of supplier's invoices associated wit ListContractAssociatedProject=List of contracts associated with the project ListFichinterAssociatedProject=List of interventions associated with the project ListExpenseReportsAssociatedProject=List of expense reports associated with the project +ListDonationsAssociatedProject=List of donations associated with the project ListActionsAssociatedProject=List of events associated with the project ActivityOnProjectThisWeek=Activity on project this week ActivityOnProjectThisMonth=Activity on project this month From cb16e069dfc37285890b4423013d35358a19021d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 27 Mar 2015 01:17:21 +0100 Subject: [PATCH 406/429] Better explanation --- htdocs/conf/conf.php.example | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/conf/conf.php.example b/htdocs/conf/conf.php.example index 414b5c84ab7..c1a374ceec2 100644 --- a/htdocs/conf/conf.php.example +++ b/htdocs/conf/conf.php.example @@ -315,8 +315,10 @@ $dolibarr_main_db_prefix=''; // multicompany_transverse_mode // Prerequisite: Need external module "multicompany" -// Pyramidal (0): The rights and groups are managed in each entity. Each user belongs to the entity he was created into. -// Transversal (1): The user is created and managed only into master entity but can login to all entities. +// Pyramidal (0): The rights and groups are managed in each entity. Each user belongs to the entity he was created into. +// Transversal (1): The user is created and managed only into master entity but can login to all entities if he is admmin +// of entity or belongs to at least one user group created into entity. + // Default value: 0 (pyramidal) // Examples: // $multicompany_transverse_mode='1'; From f6df1d6380b9052f2ed940bf622fcdff5e562e05 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 27 Mar 2015 02:26:12 +0100 Subject: [PATCH 407/429] Update to match new issue tracker --- CONTRIBUTING.md | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ef6dd3a834a..a872a4593ba 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -40,17 +40,30 @@ Please don't edit the ChangeLog file. A project manager will update it from your Use clear commit messages with the following structure:
    -KEYWORD Short description
    +KEYWORD Short description (may be the bug number #456)
     
     Long description (Can span accross multiple lines).
     
    Where KEYWORD is one of: -- "FIXED:" for bug fixes. In upper case to appear into ChangeLog. (May be followed by the bug number i.e: #456) -- "NEW:" for new features. In upper case to appear into ChangeLog. (May be followed by the task number i.e: #123) +- "Fixed" for bug fixes (May be followed by the bug number i.e: #456) +- "Closed" for a commit to close a feature request issue (May be followed by the bug number i.e: #456) - void, don't put a keyword if the commit is not introducing feature or closing a bug. +### Pull Requests +When submitting a pull request, use following syntax: + +
    +KEYWORD Short description (may be the bug number #456)
    +
    + +Where KEYWORD is one of: + +- "FIXED" or "Fixed" for bug fixes. In upper case to appear into ChangeLog. (May be followed by the bug number i.e: #456) +- "NEW" or "New" for new features. In upper case to appear into ChangeLog. (May be followed by the task number i.e: #123) + + ### Resources [Developer documentation](http://wiki.dolibarr.org/index.php/Developer_documentation) From 9d25a1c7edeec19b47a7667d61b98fbee2eeac99 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Fri, 27 Mar 2015 06:59:21 +0100 Subject: [PATCH 408/429] Fix: Missing language key --- htdocs/compta/paiement_charge.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/paiement_charge.php b/htdocs/compta/paiement_charge.php index 1c452bc0b02..420fbd7af69 100644 --- a/htdocs/compta/paiement_charge.php +++ b/htdocs/compta/paiement_charge.php @@ -178,7 +178,7 @@ if ($_GET["action"] == 'create') print ''; - print ""; + print ""; print ''; print '\n"; From 375e0b7e2a47d3cc4c9c922ab7614afca1efd801 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Fri, 27 Mar 2015 08:32:51 +0100 Subject: [PATCH 409/429] PhotoInTooltip for getNomUrl company --- htdocs/societe/class/societe.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 9af32e0756f..c3d86f4fae3 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1797,9 +1797,10 @@ class Societe extends CommonObject if (! empty($this->logo)) { - $label.= '
    '; - //if (! is_object($form)) $form = new Form($db); + $label.= '
    '; + //if (! is_object($form)) $form = new Form($db); $label.= Form::showphoto('societe', $this, 80); + $label.= '
    '; } $label.= '
    '; From 82b8fe6b7d2d16aa09804ccc41e2f6f54d756071 Mon Sep 17 00:00:00 2001 From: frederic34 Date: Fri, 27 Mar 2015 17:13:52 +0100 Subject: [PATCH 410/429] Note private and Note public for loan --- .../install/mysql/migration/3.7.0-3.8.0.sql | 6 ++- htdocs/install/mysql/tables/llx_loan.sql | 6 ++- .../install/mysql/tables/llx_payment_loan.sql | 4 +- htdocs/loan/card.php | 52 ++++++++++++------- htdocs/loan/class/loan.class.php | 23 ++++---- htdocs/loan/class/paymentloan.class.php | 29 ++++++----- htdocs/loan/payment/card.php | 7 ++- htdocs/loan/payment/payment.php | 18 ++++--- 8 files changed, 91 insertions(+), 54 deletions(-) diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index 34974d3ebd4..bf0fb5dcdbd 100644 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -32,7 +32,8 @@ create table llx_loan dateend date, nbterm real, rate double NOT NULL, - note text, + note_private text, + note_public text, capital_position real default 0, date_position date, paid smallint default 0 NOT NULL, @@ -56,7 +57,8 @@ create table llx_payment_loan amount_interest real DEFAULT 0, fk_typepayment integer NOT NULL, num_payment varchar(50), - note text, + note_private text, + note_public text, fk_bank integer NOT NULL, fk_user_creat integer, fk_user_modif integer diff --git a/htdocs/install/mysql/tables/llx_loan.sql b/htdocs/install/mysql/tables/llx_loan.sql index bc152099a04..21e9e09d8b7 100644 --- a/htdocs/install/mysql/tables/llx_loan.sql +++ b/htdocs/install/mysql/tables/llx_loan.sql @@ -1,5 +1,6 @@ -- ======================================================================== -- Copyright (C) 2014 Alexandre Spangaro +-- Copyright (C) 2015 Frederic 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 @@ -32,7 +33,8 @@ create table llx_loan nbterm real, rate double NOT NULL, - note text, + note_private text, + note_public text, capital_position real default 0, -- If not a new loan, just have the position of capital date_position date, @@ -46,4 +48,4 @@ create table llx_loan fk_user_author integer DEFAULT NULL, fk_user_modif integer DEFAULT NULL, active tinyint DEFAULT 1 NOT NULL -)ENGINE=innodb; \ No newline at end of file +)ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_payment_loan.sql b/htdocs/install/mysql/tables/llx_payment_loan.sql index 0fb6b566ca5..4a0ba519c78 100644 --- a/htdocs/install/mysql/tables/llx_payment_loan.sql +++ b/htdocs/install/mysql/tables/llx_payment_loan.sql @@ -1,5 +1,6 @@ -- =================================================================== -- Copyright (C) 2014 Alexandre Spangaro +-- Copyright (C) 2015 Frederic 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 @@ -28,7 +29,8 @@ create table llx_payment_loan amount_interest real DEFAULT 0, fk_typepayment integer NOT NULL, num_payment varchar(50), - note text, + note_private text, + note_public text, fk_bank integer NOT NULL, fk_user_creat integer, -- creation user fk_user_modif integer -- last modification user diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 6a62ffe09ea..89b8459ef7a 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -1,5 +1,6 @@ +/* Copyright (C) 2014 Alexandre Spangaro + * Copyright (C) 2015 Frederic 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 @@ -101,10 +102,12 @@ if ($action == 'add' && $user->rights->loan->write) $object->dateend = $dateend; $object->nbterm = $_POST["nbterm"]; $object->rate = $_POST["rate"]; - + $object->note_private = GETPOST('note_private'); + $object->note_public = GETPOST('note_public'); + $object->account_capital = $_POST["accountancy_account_capital"]; $object->account_insurance = $_POST["accountancy_account_insurance"]; - $object->account_interest = $_POST["accountancy_account_interest"]; + $object->account_interest = $_POST["accountancy_account_interest"]; $id=$object->create($user); if ($id <= 0) @@ -135,7 +138,7 @@ else if ($action == 'update' && $user->rights->loan->write) $object->nbterm = GETPOST("nbterm"); $object->rate = GETPOST("rate"); } - + $result = $object->update($user); if ($result > 0) @@ -180,7 +183,7 @@ if ($action == 'create') print ''; print '
    Charge
    ".$langs->trans("SocialContribution")."
    '.$langs->trans("Ref").''.$chid.'
    '.$langs->trans("Type")."".$charge->type_libelle."
    '; - + // Label print ''; @@ -197,7 +200,7 @@ if ($action == 'create') print $langs->trans("NoBankAccountDefined"); print ''; } - + // Capital print ''; @@ -206,35 +209,44 @@ if ($action == 'create') print ''; - + // Date End print ""; print ''; - + // Number of terms print ''; - + // Rate print ''; - // Note + // Note Private print ''; - print ''; + print ''; print ''; + + // Note Public + print ''; + print ''; + print ''; + print '
    '.$langs->trans("Label").'
    '.$langs->trans("Capital").'
    '.$langs->trans("DateStart").''; print $form->select_date($datestart?$datestart:-1,'start','','','','add',1,1); print '
    '.$langs->trans("DateEnd").''; print $form->select_date($dateend?$dateend:-1,'end','','','','add',1,1); print '
    '.$langs->trans("Nbterms").'
    '.$langs->trans("Rate").' %
    '.$langs->trans('Note').''.$langs->trans('NotePrivate').''; - $doleditor = new DolEditor('note', GETPOST('note', 'alpha'), '', 200, 'dolibarr_notes', 'In', false, true, true, ROWS_8, 100); + $doleditor = new DolEditor('note_private', GETPOST('note_private', 'alpha'), '', 200, 'dolibarr_notes', 'In', false, true, true, ROWS_8, 100); print $doleditor->Create(1); print '
    '.$langs->trans('NotePublic').''; + $doleditor = new DolEditor('note_public', GETPOST('note_public', 'alpha'), '', 200, 'dolibarr_notes', 'In', false, true, true, ROWS_8, 100); + print $doleditor->Create(1); + print '
    '; - + print '
    '; // Accountancy print ''; - + if ($conf->accounting->enabled) { print ''; @@ -265,7 +277,7 @@ if ($action == 'create') } print '
    '.$langs->trans("LoanAccountancyCapitalCode").'
    '; - + print '
        '; print '
    '; @@ -322,7 +334,7 @@ if ($id > 0) { print ''.$langs->trans("Label").''.$object->label.''; } - + // Capital print ''.$langs->trans("Capital").''.price($object->capital,0,$outputlangs,1,-1,-1,$conf->currency).''; @@ -351,10 +363,10 @@ if ($id > 0) print dol_print_date($object->dateend,"day"); } print ""; - + // Nbterms print ''.$langs->trans("Nbterms").''.$object->nbterm.''; - + // Rate print ''.$langs->trans("Rate").''.$object->rate.' %'; @@ -446,7 +458,7 @@ if ($id > 0) } print ""; print ""; - + /* * Buttons actions */ @@ -490,4 +502,4 @@ if ($id > 0) llxFooter(); -$db->close(); \ No newline at end of file +$db->close(); diff --git a/htdocs/loan/class/loan.class.php b/htdocs/loan/class/loan.class.php index 9ab8a690494..1cdc99633cd 100644 --- a/htdocs/loan/class/loan.class.php +++ b/htdocs/loan/class/loan.class.php @@ -1,5 +1,6 @@ + * Copyright (C) 2015 Frederic 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 @@ -41,7 +42,8 @@ class Loan extends CommonObject var $capital; var $nbterm; var $rate; - var $note; + var $note_private; + var $note_public; var $paid; var $account_capital; var $account_insurance; @@ -73,7 +75,7 @@ class Loan extends CommonObject */ function fetch($id) { - $sql = "SELECT l.rowid, l.label, l.capital, l.datestart, l.dateend, l.nbterm, l.rate, l.note,"; + $sql = "SELECT l.rowid, l.label, l.capital, l.datestart, l.dateend, l.nbterm, l.rate, l.note_private, l.note_public,"; $sql.= " l.paid"; $sql.= " FROM ".MAIN_DB_PREFIX."loan as l"; $sql.= " WHERE l.rowid = ".$id; @@ -93,9 +95,10 @@ class Loan extends CommonObject $this->label = $obj->label; $this->capital = $obj->capital; $this->nbterm = $obj->nbterm; - $this->rate = $obj->rate; - $this->note = $obj->note; - $this->paid = $obj->paid; + $this->rate = $obj->rate; + $this->note_private = $obj->note_private; + $this->note_public = $obj->note_public; + $this->paid = $obj->paid; return 1; } @@ -129,7 +132,8 @@ class Loan extends CommonObject // clean parameters $newcapital=price2num($this->capital,'MT'); - if (isset($this->note)) $this->note = trim($this->note); + if (isset($this->note_private)) $this->note_private = trim($this->note_private); + if (isset($this->note_public)) $this->note_public = trim($this->note_public); if (isset($this->account_capital)) $this->account_capital = trim($this->account_capital); if (isset($this->account_insurance)) $this->account_insurance = trim($this->account_insurance); if (isset($this->account_interest)) $this->account_interest = trim($this->account_interest); @@ -151,7 +155,7 @@ class Loan extends CommonObject $this->db->begin(); - $sql = "INSERT INTO ".MAIN_DB_PREFIX."loan (label, fk_bank, capital, datestart, dateend, nbterm, rate, note"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."loan (label, fk_bank, capital, datestart, dateend, nbterm, rate, note_private, note_public"; $sql.= " ,accountancy_account_capital, accountancy_account_insurance, accountancy_account_interest, entity"; $sql.= " ,datec, fk_user_author)"; $sql.= " VALUES ('".$this->db->escape($this->label)."',"; @@ -161,7 +165,8 @@ class Loan extends CommonObject $sql.= " '".$this->db->idate($this->dateend)."',"; $sql.= " '".$this->db->escape($this->nbterm)."',"; $sql.= " '".$this->db->escape($this->rate)."',"; - $sql.= " '".$this->db->escape($this->note)."',"; + $sql.= " '".$this->db->escape($this->note_private)."',"; + $sql.= " '".$this->db->escape($this->note_public)."',"; $sql.= " '".$this->db->escape($this->account_capital)."',"; $sql.= " '".$this->db->escape($this->account_insurance)."',"; $sql.= " '".$this->db->escape($this->account_interest)."',"; @@ -484,4 +489,4 @@ class Loan extends CommonObject return -1; } } -} \ No newline at end of file +} diff --git a/htdocs/loan/class/paymentloan.class.php b/htdocs/loan/class/paymentloan.class.php index bb94a86d945..65379f6011d 100644 --- a/htdocs/loan/class/paymentloan.class.php +++ b/htdocs/loan/class/paymentloan.class.php @@ -1,5 +1,6 @@ +/* Copyright (C) 2014 Alexandre Spangaro + * Copyright (C) 2015 Frederic 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 @@ -45,7 +46,8 @@ class PaymentLoan extends CommonObject var $amount_interest; var $fk_typepayment; var $num_payment; - var $note; + var $note_private; + var $note_public; var $fk_bank; var $fk_user_creat; var $fk_user_modif; @@ -89,7 +91,8 @@ class PaymentLoan extends CommonObject if (isset($this->amount_interest)) $this->amount_interest = trim($this->amount_interest); if (isset($this->fk_typepayment)) $this->fk_typepayment = trim($this->fk_typepayment); if (isset($this->num_payment)) $this->num_payment = trim($this->num_payment); - if (isset($this->note)) $this->note = trim($this->note); + if (isset($this->note_private)) $this->note = trim($this->note_private); + if (isset($this->note_public)) $this->note = trim($this->note_public); if (isset($this->fk_bank)) $this->fk_bank = trim($this->fk_bank); if (isset($this->fk_user_creat)) $this->fk_user_creat = trim($this->fk_user_creat); if (isset($this->fk_user_modif)) $this->fk_user_modif = trim($this->fk_user_modif); @@ -112,11 +115,11 @@ class PaymentLoan extends CommonObject if ($totalamount != 0) { $sql = "INSERT INTO ".MAIN_DB_PREFIX."payment_loan (fk_loan, datec, datep, amount_capital, amount_insurance, amount_interest,"; - $sql.= " fk_typepayment, num_payment, note, fk_user_creat, fk_bank)"; - $sql.= " VALUES ($this->chid, '".$this->db->idate($now)."',"; + $sql.= " fk_typepayment, num_payment, note_private, note_public, fk_user_creat, fk_bank)"; + $sql.= " VALUES (".$this->chid.", '".$this->db->idate($now)."',"; $sql.= " '".$this->db->idate($this->datepaid)."',"; $sql.= " ".$totalamount.","; - $sql.= " ".$this->paymenttype.", '".$this->db->escape($this->num_payment)."', '".$this->db->escape($this->note)."', ".$user->id.","; + $sql.= " ".$this->paymenttype.", '".$this->db->escape($this->num_payment)."', '".$this->db->escape($this->note_private)."', ".$this->db->escape($this->note_public)."', ".$user->id.","; $sql.= " 0)"; dol_syslog(get_class($this)."::create", LOG_DEBUG); @@ -167,7 +170,8 @@ class PaymentLoan extends CommonObject $sql.= " t.amount_interest,"; $sql.= " t.fk_typepayment,"; $sql.= " t.num_payment,"; - $sql.= " t.note,"; + $sql.= " t.note_private,"; + $sql.= " t.note_public,"; $sql.= " t.fk_bank,"; $sql.= " t.fk_user_creat,"; $sql.= " t.fk_user_modif,"; @@ -197,7 +201,8 @@ class PaymentLoan extends CommonObject $this->amount_interest = $obj->amount_interest; $this->fk_typepayment = $obj->fk_typepayment; $this->num_payment = $obj->num_payment; - $this->note = $obj->note; + $this->note_private = $obj->note_private; + $this->note_public = $obj->note_public; $this->fk_bank = $obj->fk_bank; $this->fk_user_creat = $obj->fk_user_creat; $this->fk_user_modif = $obj->fk_user_modif; @@ -239,7 +244,8 @@ class PaymentLoan extends CommonObject if (isset($this->amount_interest)) $this->amount_interest=trim($this->amount_interest); if (isset($this->fk_typepayment)) $this->fk_typepayment=trim($this->fk_typepayment); if (isset($this->num_payment)) $this->num_payment=trim($this->num_payment); - if (isset($this->note)) $this->note=trim($this->note); + if (isset($this->note_private)) $this->note=trim($this->note_private); + if (isset($this->note_public)) $this->note=trim($this->note_public); if (isset($this->fk_bank)) $this->fk_bank=trim($this->fk_bank); if (isset($this->fk_user_creat)) $this->fk_user_creat=trim($this->fk_user_creat); if (isset($this->fk_user_modif)) $this->fk_user_modif=trim($this->fk_user_modif); @@ -259,7 +265,8 @@ class PaymentLoan extends CommonObject $sql.= " amount_interest=".(isset($this->amount_interest)?$this->amount_interest:"null").","; $sql.= " fk_typepayment=".(isset($this->fk_typepayment)?$this->fk_typepayment:"null").","; $sql.= " num_payment=".(isset($this->num_payment)?"'".$this->db->escape($this->num_payment)."'":"null").","; - $sql.= " note=".(isset($this->note)?"'".$this->db->escape($this->note)."'":"null").","; + $sql.= " note_private=".(isset($this->note_private)?"'".$this->db->escape($this->note_private)."'":"null").","; + $sql.= " note_public=".(isset($this->note_public)?"'".$this->db->escape($this->note_public)."'":"null").","; $sql.= " fk_bank=".(isset($this->fk_bank)?$this->fk_bank:"null").","; $sql.= " fk_user_creat=".(isset($this->fk_user_creat)?$this->fk_user_creat:"null").","; $sql.= " fk_user_modif=".(isset($this->fk_user_modif)?$this->fk_user_modif:"null").""; @@ -522,5 +529,3 @@ class PaymentLoan extends CommonObject return $result; } } - - diff --git a/htdocs/loan/payment/card.php b/htdocs/loan/payment/card.php index f75a2244154..eb048ce15a6 100644 --- a/htdocs/loan/payment/card.php +++ b/htdocs/loan/payment/card.php @@ -167,8 +167,11 @@ print ''.$langs->trans('Capital').''.p print ''.$langs->trans('Insurance').''.price($payment->amount_insurance, 0, $outputlangs, 1, -1, -1, $conf->currency).''; print ''.$langs->trans('Interest').''.price($payment->amount_interest, 0, $outputlangs, 1, -1, -1, $conf->currency).''; -// Note -print ''.$langs->trans('Note').''.nl2br($payment->note).''; +// Note Private +print ''.$langs->trans('NotePrivate').''.nl2br($payment->note_private).''; + +// Note Public +print ''.$langs->trans('NotePublic').''.nl2br($payment->note_public).''; // Bank account if (! empty($conf->banque->enabled)) diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index 9a087d60633..c3dd2658051 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -1,5 +1,6 @@ +/* Copyright (C) 2014 Alexandre Spangaro + * Copyright (C) 2015 Frederic 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 @@ -107,7 +108,8 @@ if ($action == 'add_payment') $payment->amount_interest = $_POST["amount_interest"]; $payment->paymenttype = $_POST["paymenttype"]; $payment->num_payment = $_POST["num_payment"]; - $payment->note = $_POST["note"]; + $payment->note_private = GETPOST('note_private'); + $payment->note_public = GETPOST('public'); if (! $error) { @@ -236,10 +238,14 @@ if ($_GET["action"] == 'create') print ''."\n"; print ''; - print ''.$langs->trans("Comments").''; - print ''; + print ''.$langs->trans("NotePrivate").''; + print ''; print ''; + print ''; + print ''.$langs->trans("NotePublic").''; + print ''; + print ''; print ''; print '
    '; @@ -296,7 +302,7 @@ if ($_GET["action"] == 'create') { print '-'; } - print '
    '; + print '
    '; if ($sumpaid < $objp->capital) { $namea = "amount_insurance_".$objp->id; @@ -306,7 +312,7 @@ if ($_GET["action"] == 'create') { print '-'; } - print '
    '; + print '
    '; if ($sumpaid < $objp->capital) { $namei = "amount_interest_".$objp->id; From 631c3d72e35c374208cf57389853f5adff557edd Mon Sep 17 00:00:00 2001 From: frederic34 Date: Fri, 27 Mar 2015 17:23:27 +0100 Subject: [PATCH 411/429] Correction for notes --- htdocs/loan/card.php | 6 ++++++ htdocs/loan/payment/payment.php | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 89b8459ef7a..90b17d6e408 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -370,6 +370,12 @@ if ($id > 0) // Rate print ''.$langs->trans("Rate").''.$object->rate.' %'; + // Note Private + print ''.$langs->trans('NotePrivate').''.nl2br($object->note_private).''; + + // Note Public + print ''.$langs->trans('NotePublic').''.nl2br($object->note_public).''; + // Status print ''.$langs->trans("Status").''.$object->getLibStatut(4, $totalpaye).''; diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index c3dd2658051..e57ce652fa4 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -109,7 +109,7 @@ if ($action == 'add_payment') $payment->paymenttype = $_POST["paymenttype"]; $payment->num_payment = $_POST["num_payment"]; $payment->note_private = GETPOST('note_private'); - $payment->note_public = GETPOST('public'); + $payment->note_public = GETPOST('note_public'); if (! $error) { From a0c7cedaf1b11851d72bc3dc5142ce49ab84b8e2 Mon Sep 17 00:00:00 2001 From: frederic34 Date: Fri, 27 Mar 2015 18:09:00 +0100 Subject: [PATCH 412/429] Tooltip for loan --- htdocs/loan/class/loan.class.php | 14 ++++++++++---- htdocs/loan/index.php | 10 +++++++--- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/htdocs/loan/class/loan.class.php b/htdocs/loan/class/loan.class.php index 1cdc99633cd..cf58bb1d2c4 100644 --- a/htdocs/loan/class/loan.class.php +++ b/htdocs/loan/class/loan.class.php @@ -395,12 +395,18 @@ class Loan extends CommonObject $result=''; - $link = ''; - $linkend=''; + $tooltip = '' . $langs->trans("ShowLoan") . ''; + if (! empty($this->ref)) + $tooltip .= '
    ' . $langs->trans('Ref') . ': ' . $this->ref; + if (! empty($this->label)) + $tooltip .= '
    ' . $langs->trans('Label') . ': ' . $this->label; + $link = ''; + $linkend = ''; - if ($withpicto) $result.=($link.img_object($langs->trans("ShowLoan").': '.$this->label,'bill').$linkend.' '); + if ($withpicto) $result.=($link.$linkclose.img_object($langs->trans("ShowLoan").': '.$this->label,'bill', 'class="classfortooltip"').$linkend.' '); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$link.($maxlen?dol_trunc($this->label,$maxlen):$this->label).$linkend; + if ($withpicto != 2) $result.=$link.$linkclose.($maxlen?dol_trunc($this->label,$maxlen):$this->label).$linkend; return $result; } diff --git a/htdocs/loan/index.php b/htdocs/loan/index.php index 082e5d0d0c2..924fa698364 100644 --- a/htdocs/loan/index.php +++ b/htdocs/loan/index.php @@ -1,5 +1,6 @@ +/* Copyright (C) 2014 Alexandre Spangaro + * Copyright (C) 2015 Frederic 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 @@ -117,12 +118,15 @@ if ($resql) while ($i < min($num,$limit)) { $obj = $db->fetch_object($resql); + $loan_static->id = $obj->rowid; + $loan_static->ref = $obj->rowid; + $loan_static->label = $obj->label; $var = !$var; print ""; // Ref - print ''.img_object($langs->trans("ShowLoan"),"label").' '.$obj->rowid.''; + print ''.$loan_static->getLinkUrl(1, 42).''; // Label print ''.dol_trunc($obj->label,42).''; @@ -150,4 +154,4 @@ else } llxFooter(); -$db->close(); \ No newline at end of file +$db->close(); From 1791631976c9f5a89135b1dd25a27b15e2b4c494 Mon Sep 17 00:00:00 2001 From: Ion Agorria Date: Sat, 28 Mar 2015 03:44:16 +0100 Subject: [PATCH 413/429] check if $mc is a valid global --- htdocs/core/login/functions_dolibarr.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/htdocs/core/login/functions_dolibarr.php b/htdocs/core/login/functions_dolibarr.php index 69aec814413..8654c866969 100644 --- a/htdocs/core/login/functions_dolibarr.php +++ b/htdocs/core/login/functions_dolibarr.php @@ -111,15 +111,22 @@ function check_user_password_dolibarr($usertotest,$passwordtotest,$entitytotest= $_SESSION["dol_loginmesg"]=$langs->trans("ErrorBadLoginPassword"); } - if ($passok && ! empty($conf->multicompany->enabled)) // We must check entity + // We must check entity + if ($passok) { global $mc; - $ret=$mc->checkRight($obj->rowid, $entitytotest); - if ($ret < 0) - { - dol_syslog("functions_dolibarr::check_user_password_dolibarr Authentification ko entity '".$entitytotest."' not allowed for user '".$obj->rowid."'"); - $login=''; // force authentication failure + if (!isset($mc)) { + //Global not available, disable $conf->multicompany->enabled for safety + $conf->multicompany->enabled = false; + } + + if (! empty($conf->multicompany->enabled)) { + $ret = $mc->checkRight($obj->rowid, $entitytotest); + if ($ret < 0) { + dol_syslog("functions_dolibarr::check_user_password_dolibarr Authentification ko entity '" . $entitytotest . "' not allowed for user '" . $obj->rowid . "'"); + $login = ''; // force authentication failure + } } } } From 680317f250700548b4afa67b48723eb354946702 Mon Sep 17 00:00:00 2001 From: frederic34 Date: Sat, 28 Mar 2015 10:02:33 +0100 Subject: [PATCH 414/429] Trans in Loan Calculator --- htdocs/langs/en_US/loan.lang | 12 ++++++++ htdocs/loan/calc.php | 54 ++++++++++++++++++------------------ 2 files changed, 39 insertions(+), 27 deletions(-) diff --git a/htdocs/langs/en_US/loan.lang b/htdocs/langs/en_US/loan.lang index 4922c0fc0a1..056ce1d0b48 100644 --- a/htdocs/langs/en_US/loan.lang +++ b/htdocs/langs/en_US/loan.lang @@ -18,6 +18,18 @@ ErrorLoanCapital=Loan amount has to be numeric and greate ErrorLoanLength=Loan length has to be numeric and greater than zero. ErrorLoanInterest=Annual interest has to be numeric and greater than zero. # Calc +LoanCalc=Bank Loans Calculator +PurchaseFinanceInfo=Purchase & Financing Information +SalePriceOfAsset=Sale Price of Asset +PercentageDown=Percentage Down +LengthOfMortgage=Length of Mortgage +AnnualInterestRate=Annual Interest Rate +ExplainCalculations=Explain Calculations +ShowMeCalculationsAndAmortization=Show me the calculations and amortization +MortgagePaymentInformation=Mortgage Payment Information +DownPayment=Down Payment +AmountFinanced=Amount Financed +AmortizationMonthlyPaymentOverYears=Amortization For Monthly Payment: %s over %s years Totalsforyear=Totals for year MonthlyPayment=Monthly Payment LoanCalcDesc=This mortgage calculator can be used to figure out monthly payments of a home mortgage loan, based on the home's sale price, the term of the loan desired, buyer's down payment percentage, and the loan's interest rate.
    This calculator factors in PMI (Private Mortgage Insurance) for loans where less than 20% is put as a down payment. Also taken into consideration are the town property taxes, and their effect on the total monthly mortgage payment.
    diff --git a/htdocs/loan/calc.php b/htdocs/loan/calc.php index 0a5ee21923a..06b62231a67 100644 --- a/htdocs/loan/calc.php +++ b/htdocs/loan/calc.php @@ -56,13 +56,13 @@ if (isset($_REQUEST['form_complete'])) { $show_progress = (isset($_REQUEST['show_progress'])) ? $_REQUEST['show_progress'] : false; $form_complete = $_REQUEST['form_complete']; } - + // This function does the actual mortgage calculations // by plotting a PVIFA (Present Value Interest Factor of Annuity) // table... function get_interest_factor($year_term, $monthly_interest_rate) { global $base_rate; - + $factor = 0; $base_rate = 1 + $monthly_interest_rate; $denominator = $base_rate; @@ -71,7 +71,7 @@ function get_interest_factor($year_term, $monthly_interest_rate) { $denominator *= $base_rate; } return $factor; -} +} // If the form is complete, we'll start the math if ($form_complete) { @@ -109,18 +109,19 @@ if ($form_complete) { if (!$down_percent) { $down_percent = $default_down_percent; } if (!$show_progress) { $show_progress = $default_show_progress; } } - + if (! empty($errors)) { setEventMessages('', $errors, 'errors'); $form_complete = false; } - + /* * View */ llxHeader(); +print_fiche_titre($langs->trans("LoanCalc")); print $langs->trans('LoanCalcDesc'); print '
    '; @@ -131,33 +132,33 @@ print ''; //print ''; //print ''; print ''; -print ''; +print ''; print ''; print ''; -print ''; +print ''; print '';print ''; print ''; -print ''; +print ''; print ''; print ''; print ''; -print ''; +print ''; print ''; print ''; print ''; -print ''; +print ''; print ''; print ''; print ''; -print ''; +print ''; if (! empty($show_progress)) { - print ''; + print ''; } else { - print ''; + print ''; } print ''; @@ -173,18 +174,18 @@ if ($form_complete && $monthly_payment) print '
    '; print '
    Purchase & Financing Information'.$langs->trans('PurchaseFinanceInfo').'
    Sale Price of Home:'.$langs->trans('SalePriceOfAsset').': '.$langs->trans("Currency".$conf->currency).'
    Percentage Down:'.$langs->trans('PercentageDown').':%
    Length of Mortgage:'.$langs->trans('LengthOfMortgage').':years
    Annual Interest Rate:'.$langs->trans('AnnualInterestRate').':%
    Explain Calculations:'.$langs->trans('ExplainCalculations').':Show me the calculations and amortization'.$langs->trans('ShowMeCalculationsAndAmortization').'Show me the calculations and amortization'.$langs->trans('ShowMeCalculationsAndAmortization').'
    '; print ''; - print ''; + print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; @@ -203,7 +204,7 @@ if ($form_complete && $monthly_payment) print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; @@ -243,7 +244,7 @@ if ($form_complete && $monthly_payment) print '
    Mortgage Payment Information'.$langs->trans('MortgagePaymentInformation').'
    Down Payment:'.$langs->trans('DownPayment').':' . number_format($down_payment, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '
    Amount Financed:'.$langs->trans('AmountFinanced').':' . number_format($financing_price, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '
    Monthly Payment:'.$langs->trans('MonthlyPayment').':' . number_format($monthly_payment, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '
    (Principal & Interest ONLY)
    Monthly Payment:'.$langs->trans('MonthlyPayment').':' . number_format(($monthly_payment + $pmi_per_month), "2", ".", ",") . $langs->trans("Currency".$conf->currency) . '
    '; print '(Principal & Interest, and PMI)
    '; print '
    '; -// This prints the calculation progress and +// This prints the calculation progress and // the instructions of HOW everything is figured // out if ($form_complete && $show_progress) { @@ -256,7 +257,7 @@ if ($form_complete && $show_progress) { print ''; echo 'The down payment = The price of the home multiplied by the percentage down divided by 100 (for 5% down becomes 5/100 or 0.05)

    - ' . number_format($down_payment,"2",".",",") . ' ' . $langs->trans("Currency".$conf->currency) . ' = '.number_format($sale_price,"2",".",",") . ' ' . $langs->trans("Currency".$conf->currency) . ' X + ' . number_format($down_payment,"2",".",",") . ' ' . $langs->trans("Currency".$conf->currency) . ' = '.number_format($sale_price,"2",".",",") . ' ' . $langs->trans("Currency".$conf->currency) . ' X ('.$down_percent.' / 100)'; print ''; print ''; @@ -290,7 +291,6 @@ if ($form_complete && $show_progress) { print '' . $step++ . ''; print ''; print 'The montly payment is figured out using the following formula:
    '; - print 'Monthly Payment = ' . number_format($financing_price, "2", "", "") . ' * '; print $langs->trans('MonthlyPayment').' = ' . number_format($financing_price, "2", "", "") . ' * '; print '(1 - ((1 + ' . number_format($monthly_interest_rate, "4", "", "") . ')'; print '-(' . $month_term . '))))'; @@ -313,7 +313,7 @@ if ($form_complete && $show_progress) { $denom = pow((1 + $monthly_interest_rate), $power); $monthly_payment = $principal * ($monthly_interest_rate / (1 - $denom)); - print "

    Amortization For Monthly Payment: " . number_format($monthly_payment, "2", ".", ",") . " over " . $year_term . " years
    \n"; + print '

    '.$langs->trans('AmortizationMonthlyPaymentOverYears', number_format($monthly_payment, "2", ".", ","), $year_term)."
    \n"; print ''; @@ -327,17 +327,17 @@ if ($form_complete && $show_progress) { print $legend; - // Loop through and get the current month's payments for - // the length of the loan + // Loop through and get the current month's payments for + // the length of the loan while ($current_month <= $month_term) - { + { $interest_paid = $principal * $monthly_interest_rate; $principal_paid = $monthly_payment - $interest_paid; $remaining_balance = $principal - $principal_paid; - + $this_year_interest_paid = $this_year_interest_paid + $interest_paid; $this_year_principal_paid = $this_year_principal_paid + $principal_paid; - + $var = !$var; print ""; print ''; From 7282a6faf24d08762993af285b10b8217085b6c8 Mon Sep 17 00:00:00 2001 From: frederic34 Date: Sat, 28 Mar 2015 10:59:10 +0100 Subject: [PATCH 415/429] Trans in Loan Calculator --- htdocs/langs/en_US/loan.lang | 10 ++++++++++ htdocs/loan/calc.php | 28 +++++++++++++--------------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/htdocs/langs/en_US/loan.lang b/htdocs/langs/en_US/loan.lang index 056ce1d0b48..98a7fb4ed93 100644 --- a/htdocs/langs/en_US/loan.lang +++ b/htdocs/langs/en_US/loan.lang @@ -28,11 +28,21 @@ ExplainCalculations=Explain Calculations ShowMeCalculationsAndAmortization=Show me the calculations and amortization MortgagePaymentInformation=Mortgage Payment Information DownPayment=Down Payment +DownPaymentDesc=The down payment = The price of the home multiplied by the percentage down divided by 100 (for 5% down becomes 5/100 or 0.05) +InterestRateDesc=The interest rate = The annual interest percentage divided by 100 +MonthlyFactorDesc=The monthly factor = The result of the following formula +MonthlyInterestRateDesc=The monthly interest rate = The annual interest rate divided by 12 (for the 12 months in a year) +MonthTermDesc=The month term of the loan in months = The number of years you've taken the loan out for times 12 +MonthlyPaymentDesc=The montly payment is figured out using the following formula +AmortizationPaymentDesc=The amortization breaks down how much of your monthly payment goes towards the bank's interest, and how much goes into paying off the principal of your loan. AmountFinanced=Amount Financed AmortizationMonthlyPaymentOverYears=Amortization For Monthly Payment: %s over %s years Totalsforyear=Totals for year MonthlyPayment=Monthly Payment LoanCalcDesc=This mortgage calculator can be used to figure out monthly payments of a home mortgage loan, based on the home's sale price, the term of the loan desired, buyer's down payment percentage, and the loan's interest rate.
    This calculator factors in PMI (Private Mortgage Insurance) for loans where less than 20% is put as a down payment. Also taken into consideration are the town property taxes, and their effect on the total monthly mortgage payment.
    +GoToInterest=%s will go towards INTEREST +GoToPrincipal=%s will go towards PRINCIPAL +YouWillSpend=You will spend %s on your house in year %s # Admin ConfigLoan=Configuration of the module loan LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accountancy code capital by default diff --git a/htdocs/loan/calc.php b/htdocs/loan/calc.php index 06b62231a67..bb6fe9451b6 100644 --- a/htdocs/loan/calc.php +++ b/htdocs/loan/calc.php @@ -255,48 +255,46 @@ if ($form_complete && $show_progress) { print '
    '; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print '
    ' . $current_month . '
    '. $step++ .''; - echo 'The down payment - = The price of the home multiplied by the percentage down divided by 100 (for 5% down becomes 5/100 or 0.05)

    - ' . number_format($down_payment,"2",".",",") . ' ' . $langs->trans("Currency".$conf->currency) . ' = '.number_format($sale_price,"2",".",",") . ' ' . $langs->trans("Currency".$conf->currency) . ' X - ('.$down_percent.' / 100)'; + print $langs->trans('DownPaymentDesc').'

    '; + print number_format($down_payment,"2",".",",") . ' ' . $langs->trans("Currency".$conf->currency) . ' = '; + print number_format($sale_price,"2",".",",") . ' ' . $langs->trans("Currency".$conf->currency) . ' X (' . $down_percent . ' / 100)'; print '
    ' . $step++ . ''; - print 'The interest rate = The annual interest percentage divided by 100

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

    '; print $annual_interest_rate . ' = ' . $annual_interest_percent . '% / 100'; print '
    '; - print 'The monthly factor = The result of the following formula:'; + print $langs->trans('MonthlyFactorDesc') . ':'; print '
    ' . $step++ . ''; - print 'The monthly interest rate = The annual interest rate divided by 12 (for the 12 months in a year)

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

    '; print $monthly_interest_rate . ' = ' . $annual_interest_rate . ' / 12'; print '
    ' . $step++ . ''; - print 'The month term of the loan in months = The number of years you\'ve taken the loan out for times 12

    '; - print $month_term . ' Months = ' . $year_term . ' Years X 12'; + print $langs->trans('MonthTermDesc') . '

    '; + print $month_term . ' '. $langs->trans('Months') . ' = ' . $year_term . ' '. $langs->trans('Years') . ' X 12'; print '
    ' . $step++ . ''; - print 'The montly payment is figured out using the following formula:
    '; + print $langs->trans('MonthlyPaymentDesc') . ':
    '; print $langs->trans('MonthlyPayment').' = ' . number_format($financing_price, "2", "", "") . ' * '; print '(1 - ((1 + ' . number_format($monthly_interest_rate, "4", "", "") . ')'; print '-(' . $month_term . '))))'; print '

    '; - print 'The amortization breaks down how much of your monthly payment goes towards the bank\'s interest,'; - print 'and how much goes into paying off the principal of your loan.'; + print $langs->trans('AmortizationPaymentDesc'); print '
    '; @@ -357,9 +355,9 @@ if ($form_complete && $show_progress) { print ''; print ' '; print ''; - print 'You will spend ' . number_format($total_spent_this_year, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . ' on your house in year ' . $current_year . '
    '; - print number_format($this_year_interest_paid, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . ' will go towards INTEREST
    '; - print number_format($this_year_principal_paid, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . ' will go towards PRINCIPAL
    '; + print $langs->trans('YouWillSpend', number_format($total_spent_this_year, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency), $current_year) . '
    '; + print $langs->trans('GoToInterest', number_format($this_year_interest_paid, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency)) . '
    '; + print $langs->trans('GoToPrincipal', number_format($this_year_principal_paid, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency)) . '
    '; print ''; print ''; From 91632ea431b051cc4e1e81a51072a036cd98d644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= Date: Sat, 28 Mar 2015 16:01:33 +0100 Subject: [PATCH 416/429] Added GitHub for issue tracking to contribution guidelines --- CONTRIBUTING.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a872a4593ba..40da55e3f55 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,13 +3,15 @@ How to contribute to Dolibarr Bug reports and feature requests -------------------------------- -Issues are tracked at [Doliforge](https://doliforge.org/projects/dolibarr) +** NEW ** -*You need to create an account before being able to use the "Bugs & Tasks" feature.* +Issues are now managed on [GitHub](https://github.com/Dolibarr/dolibarr/Issues). -1. Use the search engine to check if nobody's already reported your problem. -2. Choose the right section. (Bugs or Task and Feature Request). -3. Report with as much detail as possible (Use screenshots or even screencasts whenever possible). +1. Please [use the search engine](https://help.github.com/articles/searching-issues/) to check if nobody's already reported your problem. +2. [Create an issue](https://help.github.com/articles/creating-an-issue). Choose an appropriate title. Prepend appropriately with Bug or Feature Request. +3. Report with as much detail as possible ([Use screenshots or even screencasts whenever possible](https://help.github.com/articles/issue-attachments)). + +We're still figuring out how to migrate old issues to GitHub. In the meantime, they are still available at [Doliforge](https://doliforge.org/projects/dolibarr). Code ---- From ad8214884d2b395adec2e4d9171f2f665ff0985f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= Date: Sat, 28 Mar 2015 16:10:29 +0100 Subject: [PATCH 417/429] Added documentation to contribution guidelines --- CONTRIBUTING.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 40da55e3f55..e3a97fe358e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,26 +7,26 @@ Bug reports and feature requests Issues are now managed on [GitHub](https://github.com/Dolibarr/dolibarr/Issues). -1. Please [use the search engine](https://help.github.com/articles/searching-issues/) to check if nobody's already reported your problem. +1. Please [use the search engine](https://help.github.com/articles/searching-issues) to check if nobody's already reported your problem. 2. [Create an issue](https://help.github.com/articles/creating-an-issue). Choose an appropriate title. Prepend appropriately with Bug or Feature Request. 3. Report with as much detail as possible ([Use screenshots or even screencasts whenever possible](https://help.github.com/articles/issue-attachments)). We're still figuring out how to migrate old issues to GitHub. In the meantime, they are still available at [Doliforge](https://doliforge.org/projects/dolibarr). -Code ----- +Code +--------------------- ### Basic workflow -1. Fork the [GitHub repository](https://github.com/Dolibarr/dolibarr). +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 section below). +3. Choose a branch(See the [Branches](#branches) section below). 4. Commit and push your changes. -5. Make a pull request. +5. [Make a pull request](https://help.github.com/articles/creating-a-pull-request). -### Branches +### Branches -Unless you're fixing a bug, all pull request should be made against the *develop* branch. +Unless you're fixing a bug, all pull requests should be made against the *develop* branch. If you're fixing a bug, it is preferred that you cook your fix and pull request it against the oldest version affected that's still supported. @@ -71,7 +71,7 @@ Where KEYWORD is one of: Translations ------------ -en_US and delta languages (i.e: fr_XX) are maintained in the repository. See Code section above. +The source language (en_US) is maintained in the repository. See the [Code](#code) section above. All other translations are managed online at [Transifex](https://www.transifex.com/projects/p/dolibarr). From af92174ae2b4f8e14a3b64dcacaf2d2442340ec0 Mon Sep 17 00:00:00 2001 From: frederic34 Date: Sat, 28 Mar 2015 15:31:09 +0100 Subject: [PATCH 418/429] Small correction but unable to make loan payment --- htdocs/langs/en_US/loan.lang | 7 ++++--- htdocs/loan/card.php | 11 ++++++----- htdocs/loan/class/paymentloan.class.php | 3 ++- htdocs/loan/index.php | 2 +- htdocs/loan/payment/payment.php | 26 ++++++++++++------------- 5 files changed, 26 insertions(+), 23 deletions(-) diff --git a/htdocs/langs/en_US/loan.lang b/htdocs/langs/en_US/loan.lang index 98a7fb4ed93..449afa5afbd 100644 --- a/htdocs/langs/en_US/loan.lang +++ b/htdocs/langs/en_US/loan.lang @@ -13,10 +13,11 @@ LoanAccountancyInsuranceCode=Accountancy code insurance LoanAccountancyInterestCode=Accountancy code interest LoanPayment=Loan payment ConfirmDeleteLoan=Confirm deleting this loan +LoanDeleted=Loan Deleted Successfully ConfirmPayLoan=Confirm classify paid this loan -ErrorLoanCapital=Loan amount has to be numeric and greater than zero. -ErrorLoanLength=Loan length has to be numeric and greater than zero. -ErrorLoanInterest=Annual interest has to be numeric and greater than zero. +ErrorLoanCapital=Loan amount has to be numeric and greater than zero. +ErrorLoanLength=Loan length has to be numeric and greater than zero. +ErrorLoanInterest=Annual interest has to be numeric and greater than zero. # Calc LoanCalc=Bank Loans Calculator PurchaseFinanceInfo=Purchase & Financing Information diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 90b17d6e408..cd222ea4365 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -61,6 +61,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes') $result=$object->delete($user); if ($result > 0) { + setEventMessage($langs->trans('LoanDeleted')); header("Location: index.php"); exit; } @@ -129,7 +130,7 @@ else if ($action == 'update' && $user->rights->loan->write) if (! $cancel) { $result = $object->fetch($id); - + if ($object->fetch($id)) { $object->label = GETPOST("label"); @@ -475,25 +476,25 @@ if ($id > 0) // Edit if ($user->rights->loan->write) { - print "id&action=edit\">".$langs->trans("Modify").""; + print ''.$langs->trans("Modify").''; } // Emit payment if ($object->paid == 0 && ((price2num($object->capital) > 0 && round($staytopay) < 0) || (price2num($object->capital) > 0 && round($staytopay) > 0)) && $user->rights->loan->write) { - print "id&action=create\">".$langs->trans("DoPayment").""; + print ''.$langs->trans("DoPayment").''; } // Classify 'paid' if ($object->paid == 0 && round($staytopay) <=0 && $user->rights->loan->write) { - print "id&action=paid\">".$langs->trans("ClassifyPaid").""; + print ''.$langs->trans("ClassifyPaid").''; } // Delete if ($user->rights->loan->delete) { - print "id&action=delete\">".$langs->trans("Delete").""; + print ''.$langs->trans("Delete").''; } print "
    "; diff --git a/htdocs/loan/class/paymentloan.class.php b/htdocs/loan/class/paymentloan.class.php index 65379f6011d..41b64bcd865 100644 --- a/htdocs/loan/class/paymentloan.class.php +++ b/htdocs/loan/class/paymentloan.class.php @@ -119,7 +119,7 @@ class PaymentLoan extends CommonObject $sql.= " VALUES (".$this->chid.", '".$this->db->idate($now)."',"; $sql.= " '".$this->db->idate($this->datepaid)."',"; $sql.= " ".$totalamount.","; - $sql.= " ".$this->paymenttype.", '".$this->db->escape($this->num_payment)."', '".$this->db->escape($this->note_private)."', ".$this->db->escape($this->note_public)."', ".$user->id.","; + $sql.= " ".$this->paymenttype.", '".$this->db->escape($this->num_payment)."', '".$this->db->escape($this->note_private)."', '".$this->db->escape($this->note_public)."', ".$user->id.","; $sql.= " 0)"; dol_syslog(get_class($this)."::create", LOG_DEBUG); @@ -130,6 +130,7 @@ class PaymentLoan extends CommonObject } else { + $this->error=$this->db->lasterror(); $error++; } diff --git a/htdocs/loan/index.php b/htdocs/loan/index.php index 924fa698364..557d1fa5e00 100644 --- a/htdocs/loan/index.php +++ b/htdocs/loan/index.php @@ -31,7 +31,7 @@ $langs->load("banks"); $langs->load("bills"); // Security check -$socid = isset($_GET["socid"])?$_GET["socid"]:''; +$socid = GETPOST('socid', int); if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'loan', '', '', ''); diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index e57ce652fa4..1d503649c60 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -56,21 +56,21 @@ if ($action == 'add_payment') exit; } - $datepaid = dol_mktime(12, 0, 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]); + $datepaid = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int')); if (! $_POST["paymenttype"] > 0) { - $mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("PaymentMode")); + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("PaymentMode")), 'errors'); $error++; } if ($datepaid == '') { - $mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("Date")); + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Date")), 'errors'); $error++; } if (! empty($conf->banque->enabled) && ! $_POST["accountid"] > 0) { - $mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("AccountToCredit")); + setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("AccountToCredit")), 'errors'); $error++; } @@ -90,8 +90,8 @@ if ($action == 'add_payment') if (count($amounts) <= 0) { + setEventMessage($langs->trans('ErrorNoPaymentDefined'), 'errors'); $error++; - $errmsg='ErrorNoPaymentDefined'; } if (! $error) @@ -103,11 +103,11 @@ if ($action == 'add_payment') $payment->chid = $chid; $payment->datepaid = $datepaid; $payment->amounts = $amounts; // Tableau de montant - $payment->amount_capital = $_POST["amount_capital"]; - $payment->amount_insurance = $_POST["amount_insurance"]; - $payment->amount_interest = $_POST["amount_interest"]; - $payment->paymenttype = $_POST["paymenttype"]; - $payment->num_payment = $_POST["num_payment"]; + $payment->amount_capital = GETPOST('amount_capital'); + $payment->amount_insurance = GETPOST('amount_insurance'); + $payment->amount_interest = GETPOST('amount_interest'); + $payment->paymenttype = GETPOST('paymenttype'); + $payment->num_payment = GETPOST('num_payment'); $payment->note_private = GETPOST('note_private'); $payment->note_public = GETPOST('note_public'); @@ -116,17 +116,17 @@ if ($action == 'add_payment') $paymentid = $payment->create($user); if ($paymentid < 0) { - $errmsg=$payment->error; + setEventMessage($payment->error, 'errors'); $error++; } } if (! $error) { - $result=$payment->addPaymentToBank($user,'payment_loan','(LoanPayment)',$_POST['accountid'],'',''); + $result=$payment->addPaymentToBank($user, 'payment_loan', '(LoanPayment)', GETPOST('accountid', 'int'), '', ''); if (! $result > 0) { - $errmsg=$payment->error; + setEventMessage($payment->error, 'errors'); $error++; } } From be1595a1876ec4293f3e90162351ca4da0fc10a2 Mon Sep 17 00:00:00 2001 From: frederic34 Date: Sat, 28 Mar 2015 17:42:33 +0100 Subject: [PATCH 419/429] Add tab for notes --- htdocs/core/lib/loan.lib.php | 43 ++++++++------ htdocs/langs/en_US/loan.lang | 3 +- htdocs/loan/card.php | 8 +++ htdocs/loan/note.php | 99 +++++++++++++++++++++++++++++++++ htdocs/loan/payment/payment.php | 5 -- 5 files changed, 136 insertions(+), 22 deletions(-) create mode 100644 htdocs/loan/note.php diff --git a/htdocs/core/lib/loan.lib.php b/htdocs/core/lib/loan.lib.php index 323516bbbd6..be04beb1d9a 100644 --- a/htdocs/core/lib/loan.lib.php +++ b/htdocs/core/lib/loan.lib.php @@ -1,5 +1,6 @@ + * Copyright (C) 2015 Frederic 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 @@ -32,35 +33,45 @@ function loan_prepare_head($object) { global $langs, $conf; - $h = 0; + $tab = 0; $head = array(); - $head[$h][0] = DOL_URL_ROOT.'/loan/card.php?id='.$object->id; - $head[$h][1] = $langs->trans('Card'); - $head[$h][2] = 'card'; - $h++; + $head[$tab][0] = DOL_URL_ROOT.'/loan/card.php?id='.$object->id; + $head[$tab][1] = $langs->trans('Card'); + $head[$tab][2] = 'card'; + $tab++; + + if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) + { + $nbNote = (empty($object->note_private)?0:1)+(empty($object->note_public)?0:1); + $head[$tab][0] = DOL_URL_ROOT."/loan/note.php?id=".$object->id; + $head[$tab][1] = $langs->trans("Notes"); + if($nbNote > 0) $head[$tab][1].= ' '.$nbNote.''; + $head[$tab][2] = 'note'; + $tab++; + } // Show more tabs from modules // Entries must be declared in modules descriptor with line // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab // $this->tabs = array('entity:-tabname); to remove a tab - complete_head_from_modules($conf,$langs,$object,$head,$h,'loan'); + complete_head_from_modules($conf, $langs, $object, $head, $tab,'loan'); require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $upload_dir = $conf->loan->dir_output . "/" . dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$')); - $head[$h][0] = DOL_URL_ROOT.'/loan/document.php?id='.$object->id; - $head[$h][1] = $langs->trans("Documents"); - if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')'; - $head[$h][2] = 'documents'; - $h++; + $head[$tab][0] = DOL_URL_ROOT.'/loan/document.php?id='.$object->id; + $head[$tab][1] = $langs->trans("Documents"); + if($nbFiles > 0) $head[$tab][1].= ' ('.$nbFiles.')'; + $head[$tab][2] = 'documents'; + $tab++; - $head[$h][0] = DOL_URL_ROOT.'/loan/info.php?id='.$object->id; - $head[$h][1] = $langs->trans("Info"); - $head[$h][2] = 'info'; - $h++; + $head[$tab][0] = DOL_URL_ROOT.'/loan/info.php?id='.$object->id; + $head[$tab][1] = $langs->trans("Info"); + $head[$tab][2] = 'info'; + $tab++; - complete_head_from_modules($conf,$langs,$object,$head,$h,'loan','remove'); + complete_head_from_modules($conf,$langs,$object,$head,$tab,'loan','remove'); return $head; } \ No newline at end of file diff --git a/htdocs/langs/en_US/loan.lang b/htdocs/langs/en_US/loan.lang index 449afa5afbd..4aba2de625c 100644 --- a/htdocs/langs/en_US/loan.lang +++ b/htdocs/langs/en_US/loan.lang @@ -14,7 +14,8 @@ LoanAccountancyInterestCode=Accountancy code interest LoanPayment=Loan payment ConfirmDeleteLoan=Confirm deleting this loan LoanDeleted=Loan Deleted Successfully -ConfirmPayLoan=Confirm classify paid this loan +ConfirmPayLoan=Confirm classify paid this loan +LoanPaid=Loan Paid ErrorLoanCapital=Loan amount has to be numeric and greater than zero. ErrorLoanLength=Loan length has to be numeric and greater than zero. ErrorLoanInterest=Annual interest has to be numeric and greater than zero. diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index cd222ea4365..8e280b2da75 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -52,6 +52,14 @@ if ($action == 'confirm_paid' && $confirm == 'yes') { $object->fetch($id); $result = $object->set_paid($user); + if ($result > 0) + { + setEventMessage($langs->trans('LoanPaid')); + } + else + { + setEventMessage($loan->error, 'errors'); + } } // Delete loan diff --git a/htdocs/loan/note.php b/htdocs/loan/note.php new file mode 100644 index 00000000000..a87cd3870d8 --- /dev/null +++ b/htdocs/loan/note.php @@ -0,0 +1,99 @@ + + * Copyright (C) 2004-2007 Laurent Destailleur + * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2013 Florian Henry + * Copyright (C) 2015 Frederic 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/loan/note.php + * \brief Tab for notes on loan + * \ingroup loan + */ + +require '../main.inc.php'; +require_once(DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'); +require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php'; + +$action = GETPOST('action'); + +$langs->load('loan'); + +// Security check +$id = GETPOST('id','int'); +$result = restrictedArea($user, 'loan', $id, '&loan'); + +$object = new Loan($db); +if ($id > 0) $object->fetch($id); + +$permissionnote=$user->rights->loan->read; // Used by the include of actions_setnotes.inc.php + + +/* + * Actions + */ + +include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not include_once + + +/* + * View + */ + +$form = new Form($db); + +llxHeader('',$langs->trans("LoanArea").' - '.$langs->trans("Notes"),''); + +if ($id > 0) +{ + /* + * Affichage onglets + */ + + $head = loan_prepare_head($object); + + dol_fiche_head($head, 'note', $langs->trans("Loan"),0,'loan'); + + + print '
    '; + print ''; + + print ''; + + // Ref + print ''; + print ''; + // Name + print ''; + print ''; + + print "
    '.$langs->trans('Ref').''; + print $form->showrefnav($object,'id','','','rowid','ref'); + print '
    '.$langs->trans("Name").''.$object->label.'
    "; + + print '
    '; + + $colwidth='25'; + include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php'; + + + dol_fiche_end(); +} + +llxFooter(); +$db->close(); + diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index 1d503649c60..52921bc6b18 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -170,11 +170,6 @@ if ($_GET["action"] == 'create') print_fiche_titre($langs->trans("DoPayment")); print "
    \n"; - if ($mesg) - { - print "
    $mesg
    "; - } - print ''; print ''; print ''; From ce6df7c022446ec68a803f7616faaa35bfc15aa6 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 29 Mar 2015 09:20:32 +0200 Subject: [PATCH 420/429] Debug --- htdocs/compta/bank/account.php | 22 +-- htdocs/core/lib/donation.lib.php | 5 - htdocs/core/menus/init_menu_auguria.sql | 2 +- htdocs/core/menus/standard/eldy.lib.php | 2 +- htdocs/don/card.php | 33 +++-- htdocs/don/class/don.class.php | 4 +- ...tionstats.class.php => donstats.class.php} | 0 htdocs/don/class/paymentdonation.class.php | 83 +++++------- htdocs/don/document.php | 125 ------------------ htdocs/don/payment/card.php | 21 +-- htdocs/don/stats/index.php | 3 +- htdocs/langs/en_US/donations.lang | 1 + 12 files changed, 71 insertions(+), 230 deletions(-) rename htdocs/don/class/{donationstats.class.php => donstats.class.php} (100%) delete mode 100644 htdocs/don/document.php diff --git a/htdocs/compta/bank/account.php b/htdocs/compta/bank/account.php index 329ba2149cf..20ef8bcc3cc 100644 --- a/htdocs/compta/bank/account.php +++ b/htdocs/compta/bank/account.php @@ -47,6 +47,7 @@ $langs->load("categories"); $langs->load("bills"); $langs->load("companies"); $langs->load("loan"); +$langs->load("donations"); $id = (GETPOST('id','int') ? GETPOST('id','int') : GETPOST('account','int')); $ref = GETPOST('ref','alpha'); @@ -617,6 +618,12 @@ if ($id > 0 || ! empty($ref)) print ' '.img_object($langs->trans('ShowPayment'),'payment').' '; print ''; } + elseif ($links[$key]['type']=='payment_donation') + { + print ''; + print ' '.img_object($langs->trans('ShowPayment'),'payment').' '; + print ''; + } 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. @@ -716,21 +723,6 @@ if ($id > 0 || ! empty($ref)) $chargestatic->ref=$chargestatic->lib; print $chargestatic->getNomUrl(1,16); } - else if ($links[$key]['type']=='donation') - { - $donstatic->id=$links[$key]['url_id']; - if (preg_match('/^\((.*)\)$/i',$links[$key]['label'],$reg)) - { - if ($reg[1]=='donation') $reg[1]='Donation'; - $donstatic->lib=$langs->trans($reg[1]); - } - else - { - $donstatic->lib=$links[$key]['label']; - } - $donstatic->ref=$donstatic->lib; - print $donstatic->getNomUrl(1,16); - } else if ($links[$key]['type']=='loan') { $loanstatic->id=$links[$key]['url_id']; diff --git a/htdocs/core/lib/donation.lib.php b/htdocs/core/lib/donation.lib.php index 4155d5ce60e..ed6407b1e84 100644 --- a/htdocs/core/lib/donation.lib.php +++ b/htdocs/core/lib/donation.lib.php @@ -78,11 +78,6 @@ function donation_prepare_head($object) // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf, $langs, $object, $head, $h, 'donation'); - - $head[$h][0] = DOL_URL_ROOT . '/don/document.php?id='.$object->id; - $head[$h][1] = $langs->trans("Documents"); - $head[$h][2] = 'documents'; - $h++; $head[$h][0] = DOL_URL_ROOT . '/don/info.php?id=' . $object->id; $head[$h][1] = $langs->trans("Info"); diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 3eab01619f1..ffb33138bcc 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -175,7 +175,7 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled', __HANDLER__, 'left', 2000__+MAX_llx_menu__, 'accountancy', 'donations', 6__+MAX_llx_menu__, '/don/index.php?leftmenu=donations&mainmenu=accountancy', 'Donations', 0, 'donations', '$user->rights->don->lire', '', 2, 4, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2001__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/don/card.php?leftmenu=donations&mainmenu=accountancy&action=create', 'NewDonation', 1, 'donations', '$user->rights->don->creer', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2002__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/don/list.php?leftmenu=donations&mainmenu=accountancy', 'List', 1, 'donations', '$user->rights->don->lire', '', 2, 1, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2003__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/don/stats/index.php?leftmenu=donations&mainmenu=accountancy', 'Statistics', 1, 'donations', '$user->rights->don->lire', '', 2, 2, __ENTITY__); +-- insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->don->enabled && $leftmenu=="donations"', __HANDLER__, 'left', 2003__+MAX_llx_menu__, 'accountancy', '', 2000__+MAX_llx_menu__, '/don/stats/index.php?leftmenu=donations&mainmenu=accountancy', 'Statistics', 1, 'donations', '$user->rights->don->lire', '', 2, 2, __ENTITY__); -- Special expenses insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled || $conf->salaries->enabled', __HANDLER__, 'left', 2200__+MAX_llx_menu__, 'accountancy', 'tax', 6__+MAX_llx_menu__, '/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy', 'MenuSpecialExpenses', 0, 'compta', '(! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read)', '', 0, 6, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled', __HANDLER__, 'left', 2210__+MAX_llx_menu__, 'accountancy', 'tax_sal', 2200__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=accountancy', 'Salaries', 1, 'salaries', '$user->rights->salaries->read', '', 0, 1, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 1d35db720b7..9eba6b79dd6 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -810,7 +810,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/don/index.php?leftmenu=donations&mainmenu=accountancy",$langs->trans("Donations"), 0, $user->rights->don->lire, '', $mainmenu, 'donations'); if (empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/don/card.php?action=create",$langs->trans("NewDonation"), 1, $user->rights->don->creer); if (empty($leftmenu) || $leftmenu=="donations") $newmenu->add("/don/list.php",$langs->trans("List"), 1, $user->rights->don->lire); - if ($leftmenu=="donations") $newmenu->add("/don/stats/index.php",$langs->trans("Statistics"), 1, $user->rights->don->lire); + // if ($leftmenu=="donations") $newmenu->add("/don/stats/index.php",$langs->trans("Statistics"), 1, $user->rights->don->lire); } // Taxes and social contributions diff --git a/htdocs/don/card.php b/htdocs/don/card.php index 8f33ee7fb1b..d3ce60a5381 100644 --- a/htdocs/don/card.php +++ b/htdocs/don/card.php @@ -214,7 +214,7 @@ if ($action == 'set_cancel') } if ($action == 'set_paid') { - if ($object->set_paye($id, $modepayment) >= 0) + if ($object->set_paid($id, $modepayment) >= 0) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); exit; @@ -223,17 +223,6 @@ if ($action == 'set_paid') setEventMessage($object->error, 'errors'); } } -if ($action == 'set_encaisse') -{ - if ($object->set_encaisse($id) >= 0) - { - header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); - exit; - } - else { - setEventMessage($object->error, 'errors'); - } -} /* * Build doc @@ -398,6 +387,7 @@ if (! empty($id) && $action == 'edit') print ''; print ''; + print ''; // Ref print "".''.$langs->trans("Ref").''; @@ -408,13 +398,22 @@ if (! empty($id) && $action == 'edit') $nbrows=12; if (! empty($conf->projet->enabled)) $nbrows++; - // Date + // Date print "".''.$langs->trans("Date").''; $form->select_date($object->date,'','','','',"update"); print ''; // Amount - print "".''.$langs->trans("Amount").' '.$langs->trans("Currency".$conf->currency).''; + if ($object->statut == 0) + { + print "".''.$langs->trans("Amount").' '.$langs->trans("Currency".$conf->currency).''; + } + else + { + print ''.$langs->trans("Amount").''; + print price($object->amount,0,$langs,0,0,-1,$conf->currency); + print ''; + } print ''.$langs->trans("PublicDonation").""; print $form->selectyesno("public",1,1); @@ -549,7 +548,7 @@ if (! empty($id) && $action != 'edit') /* * Payments */ - $sql = "SELECT p.rowid, p.num_payment, datep as dp, p.amount,"; + $sql = "SELECT p.rowid, p.num_payment, p.datep as dp, p.amount,"; $sql.= "c.code as type_code,c.libelle as paiement_type"; $sql.= " FROM ".MAIN_DB_PREFIX."payment_donation as p"; $sql.= ", ".MAIN_DB_PREFIX."c_paiement as c "; @@ -558,7 +557,7 @@ if (! empty($id) && $action != 'edit') $sql.= " AND p.fk_donation = d.rowid"; $sql.= " AND d.entity = ".$conf->entity; $sql.= " AND p.fk_typepayment = c.id"; - $sql.= " ORDER BY dp DESC"; + $sql.= " ORDER BY dp"; //print $sql; $resql = $db->query($sql); @@ -581,7 +580,7 @@ if (! empty($id) && $action != 'edit') $objp = $db->fetch_object($resql); $var=!$var; print ""; - print ''.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.''; + print ''.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.''; print ''.dol_print_date($db->jdate($objp->dp),'day')."\n"; $labeltype=$langs->trans("PaymentType".$object->type_code)!=("PaymentType".$object->type_code)?$langs->trans("PaymentType".$object->type_code):$object->paiement_type; print "".$labeltype.' '.$object->num_paiement."\n"; diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index c4f9d66a3ec..ce041351eed 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -718,7 +718,7 @@ class Don extends CommonObject { $sql .= ", fk_payment=$modepayment"; } - $sql .= " WHERE rowid = $rowid AND fk_statut = 1"; + $sql .= " WHERE rowid = $id AND fk_statut = 1"; $resql=$this->db->query($sql); if ($resql) @@ -809,7 +809,7 @@ class Don extends CommonObject $result=''; $label=$langs->trans("ShowDonation").': '.$this->id; - $link = ''; + $link = ''; $linkend=''; $picto='generic'; diff --git a/htdocs/don/class/donationstats.class.php b/htdocs/don/class/donstats.class.php similarity index 100% rename from htdocs/don/class/donationstats.class.php rename to htdocs/don/class/donstats.class.php diff --git a/htdocs/don/class/paymentdonation.class.php b/htdocs/don/class/paymentdonation.class.php index 4a42c677ec9..a6c56f9f235 100644 --- a/htdocs/don/class/paymentdonation.class.php +++ b/htdocs/don/class/paymentdonation.class.php @@ -82,14 +82,14 @@ class PaymentDonation extends CommonObject } // Clean parameters - if (isset($this->fk_donation)) $this->fk_donation=trim($this->fk_donation); - if (isset($this->amount)) $this->amount=trim($this->amount); - if (isset($this->fk_typepayment)) $this->fk_typepayment=trim($this->fk_typepayment); - if (isset($this->num_payment)) $this->num_payment=trim($this->num_payment); - if (isset($this->note)) $this->note=trim($this->note); - if (isset($this->fk_bank)) $this->fk_bank=trim($this->fk_bank); - if (isset($this->fk_user_creat)) $this->fk_user_creat=trim($this->fk_user_creat); - if (isset($this->fk_user_modif)) $this->fk_user_modif=trim($this->fk_user_modif); + if (isset($this->fk_donation)) $this->fk_donation=trim($this->fk_donation); + if (isset($this->amount)) $this->amount=trim($this->amount); + if (isset($this->fk_typepayment)) $this->fk_typepayment=trim($this->fk_typepayment); + if (isset($this->num_payment)) $this->num_payment=trim($this->num_payment); + if (isset($this->note)) $this->note=trim($this->note); + if (isset($this->fk_bank)) $this->fk_bank=trim($this->fk_bank); + if (isset($this->fk_user_creat)) $this->fk_user_creat=trim($this->fk_user_creat); + if (isset($this->fk_user_modif)) $this->fk_user_modif=trim($this->fk_user_modif); $totalamount = 0; foreach ($this->amounts as $key => $value) // How payment is dispatch @@ -183,23 +183,23 @@ class PaymentDonation extends CommonObject $this->id = $obj->rowid; $this->ref = $obj->rowid; - $this->fk_donation = $obj->fk_donation; - $this->datec = $this->db->jdate($obj->datec); - $this->tms = $this->db->jdate($obj->tms); - $this->datep = $this->db->jdate($obj->datep); - $this->amount = $obj->amount; - $this->fk_typepayment = $obj->fk_typepayment; - $this->num_payment = $obj->num_payment; - $this->note = $obj->note; - $this->fk_bank = $obj->fk_bank; - $this->fk_user_creat = $obj->fk_user_creat; - $this->fk_user_modif = $obj->fk_user_modif; + $this->fk_donation = $obj->fk_donation; + $this->datec = $this->db->jdate($obj->datec); + $this->tms = $this->db->jdate($obj->tms); + $this->datep = $this->db->jdate($obj->datep); + $this->amount = $obj->amount; + $this->fk_typepayment = $obj->fk_typepayment; + $this->num_payment = $obj->num_payment; + $this->note = $obj->note; + $this->fk_bank = $obj->fk_bank; + $this->fk_user_creat = $obj->fk_user_creat; + $this->fk_user_modif = $obj->fk_user_modif; - $this->type_code = $obj->type_code; - $this->type_libelle = $obj->type_libelle; + $this->type_code = $obj->type_code; + $this->type_libelle = $obj->type_libelle; - $this->bank_account = $obj->fk_account; - $this->bank_line = $obj->fk_bank; + $this->bank_account = $obj->fk_account; + $this->bank_line = $obj->fk_bank; } $this->db->free($resql); @@ -227,14 +227,14 @@ class PaymentDonation extends CommonObject // Clean parameters - if (isset($this->fk_donation)) $this->fk_donation=trim($this->fk_donation); - if (isset($this->amount)) $this->amount=trim($this->amount); - if (isset($this->fk_typepayment)) $this->fk_typepayment=trim($this->fk_typepayment); - if (isset($this->num_payment)) $this->num_payment=trim($this->num_payment); - if (isset($this->note)) $this->note=trim($this->note); - if (isset($this->fk_bank)) $this->fk_bank=trim($this->fk_bank); - if (isset($this->fk_user_creat)) $this->fk_user_creat=trim($this->fk_user_creat); - if (isset($this->fk_user_modif)) $this->fk_user_modif=trim($this->fk_user_modif); + if (isset($this->fk_donation)) $this->fk_donation=trim($this->fk_donation); + if (isset($this->amount)) $this->amount=trim($this->amount); + if (isset($this->fk_typepayment)) $this->fk_typepayment=trim($this->fk_typepayment); + if (isset($this->num_payment)) $this->num_payment=trim($this->num_payment); + if (isset($this->note)) $this->note=trim($this->note); + if (isset($this->fk_bank)) $this->fk_bank=trim($this->fk_bank); + if (isset($this->fk_user_creat)) $this->fk_user_creat=trim($this->fk_user_creat); + if (isset($this->fk_user_modif)) $this->fk_user_modif=trim($this->fk_user_modif); @@ -482,14 +482,14 @@ class PaymentDonation extends CommonObject $acc->fetch($accountid); $total=$this->total; - if ($mode == 'payment_donation') $total=-$total; + if ($mode == 'payment_donation') $amount=$total; // Insert payment into llx_bank $bank_line_id = $acc->addline( $this->datepaid, $this->paymenttype, // Payment mode id or code ("CHQ or VIR for example") $label, - $total, + $amount, $this->num_payment, '', $user, @@ -520,19 +520,6 @@ class PaymentDonation extends CommonObject dol_print_error($this->db); } } - - // Add link 'thirdparty' in bank_url between donation and bank transaction (for each donation concerned by payment) - $linkaddedforthirdparty=array(); - foreach ($this->amounts as $key => $value) - { - if ($mode == 'payment_donation') - { - $don = new Don($this->db); - $don->fetch($key); - $result=$acc->add_url_line($bank_line_id, $don->rowid, DOL_URL_ROOT.'/don/card.php?rowid=', $don->type_libelle.(($don->lib && $don->lib!=$don->type_libelle)?' ('.$don->lib.')':''),'donation'); - if ($result <= 0) dol_print_error($this->db); - } - } } else { @@ -553,7 +540,7 @@ class PaymentDonation extends CommonObject /** - * Mise a jour du lien entre le paiement de charge et la ligne dans llx_bank generee + * Update link between the donation payment and the generated line in llx_bank * * @param int $id_bank Id if bank * @return int >0 if OK, <=0 if KO @@ -593,7 +580,7 @@ class PaymentDonation extends CommonObject if (!empty($this->id)) { - $link = ''; + $link = ''; $linkend=''; if ($withpicto) $result.=($link.img_object($label, 'payment', 'class="classfortooltip"').$linkend.' '); diff --git a/htdocs/don/document.php b/htdocs/don/document.php deleted file mode 100644 index 200e4180252..00000000000 --- a/htdocs/don/document.php +++ /dev/null @@ -1,125 +0,0 @@ - - * - * 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/don/document.php - * \ingroup donations - * \brief Page of linked files into donations - */ - -require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; - -$langs->load("other"); -$langs->load("donations"); -$langs->load("companies"); -$langs->load("interventions"); - -$id = GETPOST('id','int'); -$ref = GETPOST('ref', 'alpha'); -$action = GETPOST('action','alpha'); -$confirm = GETPOST('confirm','alpha'); - -// Security check -if ($user->societe_id) $socid=$user->societe_id; -$result = restrictedArea($user, 'don', $id, ''); - -// Get parameters -$sortfield = GETPOST('sortfield','alpha'); -$sortorder = GETPOST('sortorder','alpha'); -$page = GETPOST('page','int'); -if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; -$pageprev = $page - 1; -$pagenext = $page + 1; -if (! $sortorder) $sortorder="ASC"; -if (! $sortfield) $sortfield="name"; - -$object = new Don($db); -$object->fetch($id, $ref); - -$upload_dir = $conf->dons->dir_output.'/'.dol_sanitizeFileName($object->ref); -$modulepart='don'; - - -/* - * Actions - */ - -include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php'; - - -/* - * View - */ - -$form = new Form($db); - -llxHeader("","",$langs->trans("Don")); - - -if ($object->id) -{ - $object->fetch_thirdparty(); - - $head=donation_prepare_head($object); - - dol_fiche_head($head, 'documents', $langs->trans("Don"), 0, 'bill'); - - - // Built files list - $filearray=dol_dir_list($upload_dir,"files",0,'','(\.meta|_preview\.png)$',$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); - $totalsize=0; - foreach($filearray as $key => $file) - { - $totalsize+=$file['size']; - } - - - print ''; - - $linkback = ''.$langs->trans("BackToList").''; - - // Ref - print ''; - - print ''; - print ''; - print '
    '.$langs->trans("Ref").''; - print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref', ''); - print '
    '.$langs->trans("NbOfAttachedFiles").''.count($filearray).'
    '.$langs->trans("TotalSizeOfAttachedFiles").''.$totalsize.' '.$langs->trans("bytes").'
    '; - - print ''; - - $modulepart = 'don'; - $permission = $user->rights->don->creer; - $param = '&id=' . $object->id; - include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php'; - -} -else -{ - print $langs->trans("ErrorUnknown"); -} - -llxFooter(); - -$db->close(); diff --git a/htdocs/don/payment/card.php b/htdocs/don/payment/card.php index 5cdb7f20446..4c59f566ba5 100644 --- a/htdocs/don/payment/card.php +++ b/htdocs/don/payment/card.php @@ -126,7 +126,7 @@ $head[$h][1] = $langs->trans("Card"); $hselected = $h; $h++; -dol_fiche_head($head, $hselected, $langs->trans("PaymentDonation"), 0, 'payment'); +dol_fiche_head($head, $hselected, $langs->trans("DonationPayment"), 0, 'payment'); /* * Confirmation de la suppression du paiement @@ -151,19 +151,19 @@ if ($action == 'valide') print ''; // Ref -print ''; +print ''; print ''; // Date -print ''; +print ''; // Mode print ''; // Number -print ''; +print ''; // Amount print ''; @@ -196,7 +196,7 @@ print '
    '.$langs->trans('Ref').'
    '.$langs->trans('Ref').''; print $form->showrefnav($payment,'id','',1,'rowid','id'); print '
    '.$langs->trans('Date').''.dol_print_date($payment->datep,'day').'
    '.$langs->trans('Date').''.dol_print_date($payment->datep,'day').'
    '.$langs->trans('Mode').''.$langs->trans("PaymentType".$payment->type_code).'
    '.$langs->trans('Number').''.$payment->num_paiement.'
    '.$langs->trans('Number').''.$payment->num_payment.'
    '.$langs->trans('Amount').''.price($payment->amount, 0, $outputlangs, 1, -1, -1, $conf->currency).'
    '; */ $disable_delete = 0; -$sql = 'SELECT d.rowid as did, d.libelle, d.paid, d.amount as d_amount, pd.amount, pd.libelle as d_type'; +$sql = 'SELECT d.rowid as did, d.paid, d.amount as d_amount, pd.amount'; $sql.= ' FROM '.MAIN_DB_PREFIX.'payment_donation as pd,'.MAIN_DB_PREFIX.'don as d'; $sql.= ' WHERE pd.fk_donation = d.rowid'; $sql.= ' AND d.entity = '.$conf->entity; @@ -213,9 +213,7 @@ if ($resql) print '
    '; print ''; print ''; - print ''; - print ''; - print ''; + print ''; print ''; print ''; print "\n"; @@ -235,13 +233,6 @@ if ($resql) $don->fetch($objp->did); print $don->getNomUrl(1); print "\n"; - // Type - print '\n"; - // Label - print ''; // Expected to pay print ''; // Status diff --git a/htdocs/don/stats/index.php b/htdocs/don/stats/index.php index 798b1b5a392..91f4465f376 100644 --- a/htdocs/don/stats/index.php +++ b/htdocs/don/stats/index.php @@ -2,6 +2,7 @@ /* Copyright (C) 2001-2003 Rodolphe Quiedeville * Copyright (C) 2004-2013 Laurent Destailleur * Copyright (C) 2005-2009 Regis Houssin + * Copyright (C) 2015 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,7 +26,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; -require_once DOL_DOCUMENT_ROOT.'/don/class/dontats.class.php'; +require_once DOL_DOCUMENT_ROOT.'/don/class/donstats.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php'; $WIDTH=DolGraph::getDefaultGraphSizeForStats('width'); diff --git a/htdocs/langs/en_US/donations.lang b/htdocs/langs/en_US/donations.lang index 627cc9a076c..8b4c2ca8756 100644 --- a/htdocs/langs/en_US/donations.lang +++ b/htdocs/langs/en_US/donations.lang @@ -40,3 +40,4 @@ FrenchOptions=Options for France DONATION_ART200=Show article 200 from CGI if you are concerned DONATION_ART238=Show article 238 from CGI if you are concerned DONATION_ART885=Show article 885 from CGI if you are concerned +DonationPayment=Donation payment From c733249c7583dfd3bbe0cfa241d9d86d181276a6 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 29 Mar 2015 09:23:39 +0200 Subject: [PATCH 421/429] Don Remove old file --- htdocs/don/admin/index.php | 117 ------------------------------------- 1 file changed, 117 deletions(-) delete mode 100644 htdocs/don/admin/index.php diff --git a/htdocs/don/admin/index.php b/htdocs/don/admin/index.php deleted file mode 100644 index 78ff3b48f9a..00000000000 --- a/htdocs/don/admin/index.php +++ /dev/null @@ -1,117 +0,0 @@ - - * - * 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/admin/index.php - * \ingroup Donations - * \brief Setup page to configure donations module - */ - -require '../main.inc.php'; - -// Class -require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; - -$langs->load("admin"); -$langs->load("donations"); - -// Security check -if (!$user->admin) - accessforbidden(); - -$action = GETPOST('action', 'alpha'); - -// Other parameters DONATIONS_* -$list = array ( - 'DONATIONS_ACCOUNTING_ACCOUNT_PRODUCT' -); - -/* - * Actions - */ - -if ($action == 'update') -{ - $error = 0; - - foreach ($list as $constname) { - $constvalue = GETPOST($constname, 'alpha'); - - if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) { - $error++; - } - } - - if (! $error) - { - setEventMessage($langs->trans("SetupSaved")); - } - else - { - setEventMessage($langs->trans("Error"),'errors'); - } -} - -/* - * View - */ - -llxHeader('',$langs->trans('DonationsSetup')); - -$form = new Form($db); - -$linkback=''.$langs->trans("BackToModuleList").''; -print_fiche_titre($langs->trans('DonationsSetup'),$linkback,'setup'); - -print ''; -print ''; -print ''; - -/* - * Params - */ -print '
    '.$langs->trans('Donation').''.$langs->trans('Type').''.$langs->trans('Label').''.$langs->trans('ExpectedToPay').''.$langs->trans('ExpectedToPay').''.$langs->trans('Status').''.$langs->trans('PayedByThisPayment').'
    '; - print $don->type_libelle; - /*print $don->type;*/ - print "'.$objp->libelle.''.price($objp->d_amount).'
    '; -print ''; -print ''; -print "\n"; - -foreach ($list as $key) -{ - $var=!$var; - - print ''; - - // Param - $label = $langs->trans($key); - print ''; - - // Value - print ''; -} - -print ''; - -print ''; -print "
    ' . $langs->trans('Options') . '
    '; - print ''; - print '
    \n"; - -print '
    '; - -llxFooter(); -$db->close(); \ No newline at end of file From bf3e78a63df84025b1bfda7ce16b254ebfc31312 Mon Sep 17 00:00:00 2001 From: frederic34 Date: Sun, 29 Mar 2015 11:39:55 +0200 Subject: [PATCH 422/429] Debug payment loan --- htdocs/loan/class/loan.class.php | 2 +- htdocs/loan/class/paymentloan.class.php | 30 ++--- htdocs/loan/note.php | 3 +- htdocs/loan/payment/payment.php | 163 +++++++++--------------- 4 files changed, 76 insertions(+), 122 deletions(-) diff --git a/htdocs/loan/class/loan.class.php b/htdocs/loan/class/loan.class.php index cf58bb1d2c4..c2c0bba6381 100644 --- a/htdocs/loan/class/loan.class.php +++ b/htdocs/loan/class/loan.class.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2014 Alexandre Spangaro * Copyright (C) 2015 Frederic France * * This program is free software; you can redistribute it and/or modify diff --git a/htdocs/loan/class/paymentloan.class.php b/htdocs/loan/class/paymentloan.class.php index 41b64bcd865..a4e5aa4ad61 100644 --- a/htdocs/loan/class/paymentloan.class.php +++ b/htdocs/loan/class/paymentloan.class.php @@ -86,24 +86,18 @@ class PaymentLoan extends CommonObject // Clean parameters if (isset($this->fk_loan)) $this->fk_loan = trim($this->fk_loan); - if (isset($this->amount_capital)) $this->amount_capital = trim($this->amount_capital); - if (isset($this->amount_insurance)) $this->amount_insurance = trim($this->amount_insurance); - if (isset($this->amount_interest)) $this->amount_interest = trim($this->amount_interest); + if (isset($this->amount_capital)) $this->amount_capital = trim($this->amount_capital?$this->amount_capital:0); + if (isset($this->amount_insurance)) $this->amount_insurance = trim($this->amount_insurance?$this->amount_insurance:0); + if (isset($this->amount_interest)) $this->amount_interest = trim($this->amount_interest?$this->amount_interest:0); if (isset($this->fk_typepayment)) $this->fk_typepayment = trim($this->fk_typepayment); if (isset($this->num_payment)) $this->num_payment = trim($this->num_payment); - if (isset($this->note_private)) $this->note = trim($this->note_private); - if (isset($this->note_public)) $this->note = trim($this->note_public); + if (isset($this->note_private)) $this->note_private = trim($this->note_private); + if (isset($this->note_public)) $this->note_public = trim($this->note_public); if (isset($this->fk_bank)) $this->fk_bank = trim($this->fk_bank); if (isset($this->fk_user_creat)) $this->fk_user_creat = trim($this->fk_user_creat); if (isset($this->fk_user_modif)) $this->fk_user_modif = trim($this->fk_user_modif); - $totalamount = 0; - foreach ($this->amounts as $key => $value) // How payment is dispatch - { - $newvalue = price2num($value,'MT'); - $this->amounts[$key] = $newvalue; - $totalamount += $newvalue; - } + $totalamount = $this->amount_capital + $this->amount_insurance + $this->amount_interest; $totalamount = price2num($totalamount); // Check parameters @@ -118,7 +112,9 @@ class PaymentLoan extends CommonObject $sql.= " fk_typepayment, num_payment, note_private, note_public, fk_user_creat, fk_bank)"; $sql.= " VALUES (".$this->chid.", '".$this->db->idate($now)."',"; $sql.= " '".$this->db->idate($this->datepaid)."',"; - $sql.= " ".$totalamount.","; + $sql.= " ".$this->amount_capital.","; + $sql.= " ".$this->amount_insurance.","; + $sql.= " ".$this->amount_interest.","; $sql.= " ".$this->paymenttype.", '".$this->db->escape($this->num_payment)."', '".$this->db->escape($this->note_private)."', '".$this->db->escape($this->note_public)."', ".$user->id.","; $sql.= " 0)"; @@ -145,7 +141,7 @@ class PaymentLoan extends CommonObject } else { - $this->error=$this->db->error(); + $this->error=$this->db->lasterror(); $this->db->rollback(); return -1; } @@ -190,8 +186,8 @@ class PaymentLoan extends CommonObject { $obj = $this->db->fetch_object($resql); - $this->id = $obj->rowid; - $this->ref = $obj->rowid; + $this->id = $obj->rowid; + $this->ref = $obj->rowid; $this->fk_loan = $obj->fk_loan; $this->datec = $this->db->jdate($obj->datec); @@ -509,7 +505,7 @@ class PaymentLoan extends CommonObject * @param int $maxlen Max length label * @return string Chaine with URL */ - function getNameUrl($withpicto=0,$maxlen=0) + function getNomUrl($withpicto=0,$maxlen=0) { global $langs; diff --git a/htdocs/loan/note.php b/htdocs/loan/note.php index a87cd3870d8..28f2a0f4918 100644 --- a/htdocs/loan/note.php +++ b/htdocs/loan/note.php @@ -40,7 +40,7 @@ $result = restrictedArea($user, 'loan', $id, '&loan'); $object = new Loan($db); if ($id > 0) $object->fetch($id); -$permissionnote=$user->rights->loan->read; // Used by the include of actions_setnotes.inc.php +$permissionnote=$user->rights->loan->write; // Used by the include of actions_setnotes.inc.php /* @@ -88,6 +88,7 @@ if ($id > 0) print '
    '; $colwidth='25'; + $permission = $user->rights->loan->write; // Used by the include of notes.tpl.php include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php'; diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index 52921bc6b18..ece4a5e0271 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -32,7 +32,6 @@ $langs->load("loan"); $chid=GETPOST('id','int'); $action=GETPOST('action'); -$amounts = array(); $cancel=GETPOST('cancel','alpha'); // Security check @@ -58,7 +57,7 @@ if ($action == 'add_payment') $datepaid = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int')); - if (! $_POST["paymenttype"] > 0) + if (! GETPOST('paymenttype', 'int') > 0) { setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("PaymentMode")), 'errors'); $error++; @@ -68,7 +67,7 @@ if ($action == 'add_payment') setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Date")), 'errors'); $error++; } - if (! empty($conf->banque->enabled) && ! $_POST["accountid"] > 0) + if (! empty($conf->banque->enabled) && ! GETPOST('accountid', 'int') > 0) { setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("AccountToCredit")), 'errors'); $error++; @@ -78,17 +77,8 @@ if ($action == 'add_payment') { $paymentid = 0; - // Read possible payments - foreach ($_POST as $key => $value) - { - if (substr($key,0,7) == 'amount_') - { - $other_chid = substr($key,7); - $amounts[$other_chid] = price2num($_POST[$key]); - } - } - - if (count($amounts) <= 0) + $amount = GETPOST('amount_capital') + GETPOST('amount_insurance') + GETPOST('amount_interest'); + if ($amount == 0) { setEventMessage($langs->trans('ErrorNoPaymentDefined'), 'errors'); $error++; @@ -102,7 +92,6 @@ if ($action == 'add_payment') $payment = new PaymentLoan($db); $payment->chid = $chid; $payment->datepaid = $datepaid; - $payment->amounts = $amounts; // Tableau de montant $payment->amount_capital = GETPOST('amount_capital'); $payment->amount_insurance = GETPOST('amount_insurance'); $payment->amount_interest = GETPOST('amount_interest'); @@ -123,7 +112,7 @@ if ($action == 'add_payment') if (! $error) { - $result=$payment->addPaymentToBank($user, 'payment_loan', '(LoanPayment)', GETPOST('accountid', 'int'), '', ''); + $result = $payment->addPaymentToBank($user, 'payment_loan', '(LoanPayment)', GETPOST('accountid', 'int'), '', ''); if (! $result > 0) { setEventMessage($payment->error, 'errors'); @@ -185,9 +174,9 @@ if ($_GET["action"] == 'create') print ''.$langs->trans("Label").''.$loan->label."\n"; print ''.$langs->trans("Amount").''.price($loan->capital,0,$outputlangs,1,-1,-1,$conf->currency).''; - $sql = "SELECT sum(p.amount) as total"; - $sql.= " FROM ".MAIN_DB_PREFIX."payment_loan as p"; - $sql.= " WHERE p.fk_loan = ".$chid; + $sql = "SELECT SUM(amount_capital + amount_insurance + amount_interest) as total"; + $sql.= " FROM ".MAIN_DB_PREFIX."payment_loan"; + $sql.= " WHERE fk_loan = ".$chid; $resql = $db->query($sql); if ($resql) { @@ -195,23 +184,23 @@ if ($_GET["action"] == 'create') $sumpaid = $obj->total; $db->free(); } - print ''.$langs->trans("AlreadyPaid").''.price($sumpaid,0,$outputlangs,1,-1,-1,$conf->currency).''; - print ''.$langs->trans("RemainderToPay").''.price($total-$sumpaid,0,$outputlangs,1,-1,-1,$conf->currency).''; + print ''.$langs->trans("AlreadyPaid").''.price($sumpaid, 0, $outputlangs, 1, -1, -1, $conf->currency).''; + print ''.$langs->trans("RemainderToPay").''.price($total-$sumpaid, 0, $outputlangs, 1, -1, -1, $conf->currency).''; print ''; print ''; - + print '
    '; - + print ''; print ''; print ''; print ''; print '"; print ''; @@ -227,7 +216,7 @@ if ($_GET["action"] == 'create') print ''; // Number - print ''; print ''."\n"; @@ -245,12 +234,6 @@ if ($_GET["action"] == 'create') print '
    '; - /* - * Other loan unpaid - */ - $num = 1; - $i = 0; - print '
    '.$langs->trans("Payment").'
    '.$langs->trans("Date").''; - $datepaid = dol_mktime(12, 0, 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]); + $datepaid = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int')); $datepayment = empty($conf->global->MAIN_AUTOFILL_DATE)?(empty($_POST["remonth"])?-1:$datepaye):0; - $form->select_date($datepayment,'','','','',"add_payment",1,1); + $form->select_date($datepayment, '', '', '', '', "add_payment", 1, 1); print "
    '.$langs->trans('Number'); + print '
    '.$langs->trans('Numero'); print ' ('.$langs->trans("ChequeOrTransferNumber").')'; print '
    '; print ''; print ''; @@ -261,83 +244,57 @@ if ($_GET["action"] == 'create') print "\n"; $var=True; - $total=0; - $totalrecu=0; - while ($i < $num) + + print ""; + + if ($loan->datestart > 0) { - $objp = $loan; - - $var=!$var; - - print ""; - - if ($objp->datestart > 0) - { - print ''; - } - else - { - print ''; - } - - print '"; - - print '"; - - print '"; - - print '"; - - print "\n"; - $total+=$objp->total; - $total_ttc+=$objp->total_ttc; - $totalrecu+=$objp->am; - $i++; + print ''; } - if ($i > 1) + else { - // Print total - print ""; - print ''; - print ''; - print ''; - print ''; - print ''; - print "\n"; + print ''; } - print "
    '.$langs->trans("DateDue").'
    '.dol_print_date($objp->datestart,'day').'!!!'.price($objp->capital)."'.price($sumpaid)."'.price($objp->capital - $sumpaid)."'; - if ($sumpaid < $objp->capital) - { - $namec = "amount_capital_".$objp->id; - print $langs->trans("Capital") .': '; - } - else - { - print '-'; - } - print '
    '; - if ($sumpaid < $objp->capital) - { - $namea = "amount_insurance_".$objp->id; - print $langs->trans("Insurance") .': '; - } - else - { - print '-'; - } - print '
    '; - if ($sumpaid < $objp->capital) - { - $namei = "amount_interest_".$objp->id; - print $langs->trans("Interest") .': '; - } - else - { - print '-'; - } - print "
    '.dol_print_date($loan->datestart,'day').'
    '.$langs->trans("Total").':"'.price($total_ttc).'""'.price($totalrecu).'""'.price($total_ttc - $totalrecu).'" 
    !!!
    "; + print ''.price($loan->capital).""; + + print ''.price($sumpaid).""; + + print ''.price($loan->capital - $sumpaid).""; + + print ''; + if ($sumpaid < $loan->capital) + { + print $langs->trans("Capital") .': '; + } + else + { + print '-'; + } + print '
    '; + if ($sumpaid < $loan->capital) + { + print $langs->trans("Insurance") .': '; + } + else + { + print '-'; + } + print '
    '; + if ($sumpaid < $loan->capital) + { + print $langs->trans("Interest") .': '; + } + else + { + print '-'; + } + print ""; + + print "\n"; + + print ''; print '
    '; From 7b9ba4bd26313a3010cb02552e9fa33ebf61e032 Mon Sep 17 00:00:00 2001 From: frederic34 Date: Sun, 29 Mar 2015 13:37:17 +0200 Subject: [PATCH 423/429] debug payment --- htdocs/loan/class/paymentloan.class.php | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/htdocs/loan/class/paymentloan.class.php b/htdocs/loan/class/paymentloan.class.php index a4e5aa4ad61..5c24621d802 100644 --- a/htdocs/loan/class/paymentloan.class.php +++ b/htdocs/loan/class/paymentloan.class.php @@ -445,16 +445,11 @@ class PaymentLoan extends CommonObject } // Add link 'company' in bank_url between invoice and bank transaction (for each invoice concerned by payment) - $linkaddedforthirdparty=array(); - foreach ($this->amounts as $key => $value) + //$linkaddedforthirdparty=array(); + if ($mode == 'payment_loan') { - if ($mode == 'payment_loan') - { - $loan = new Loan($this->db); - $loan->fetch($key); - $result=$acc->add_url_line($bank_line_id, $loan->id, DOL_URL_ROOT.'/loan/card.php?id=', $loan->type_libelle.(($loan->lib && $loan->lib!=$loan->type_libelle)?' ('.$loan->lib.')':''),'loan'); - if ($result <= 0) dol_print_error($this->db); - } + $result=$acc->add_url_line($bank_line_id, $this->id, DOL_URL_ROOT.'/loan/card.php?id=', $this->type_libelle.(($this->label && $this->label!=$this->type_libelle)?' ('.$this->label.')':''),'loan'); + if ($result <= 0) dol_print_error($this->db); } } else From ed493b651b8b6719064d1b6d929476dd75dde2a4 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 29 Mar 2015 14:29:53 +0200 Subject: [PATCH 424/429] Icons & fr_FR options not show --- htdocs/don/admin/donation.php | 5 +++-- htdocs/don/admin/donation_extrafields.php | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/don/admin/donation.php b/htdocs/don/admin/donation.php index 41ea0a3d542..b7fb9c2b74a 100644 --- a/htdocs/don/admin/donation.php +++ b/htdocs/don/admin/donation.php @@ -184,7 +184,7 @@ print_fiche_titre($langs->trans("DonationsSetup"),$linkback,'setup'); $head = donation_admin_prepare_head(); -dol_fiche_head($head, 'general', $langs->trans("Donations"), 0, 'donation'); +dol_fiche_head($head, 'general', $langs->trans("Donations"), 0, 'payment'); /* * Params @@ -215,7 +215,8 @@ print ''; /* * French params */ -if (preg_match('/fr/i',$outputlangs->defaultlang)) +print $outputlangs->defaultlang; +if (preg_match('/fr/i',$conf->global->MAIN_INFO_SOCIETE_COUNTRY)) { print '
    '; print_titre($langs->trans("FrenchOptions")); diff --git a/htdocs/don/admin/donation_extrafields.php b/htdocs/don/admin/donation_extrafields.php index 6c964b46321..2d08c36873f 100644 --- a/htdocs/don/admin/donation_extrafields.php +++ b/htdocs/don/admin/donation_extrafields.php @@ -66,7 +66,7 @@ print_fiche_titre($langs->trans("DonationsSetup"),$linkback,'setup'); $head = donation_admin_prepare_head(); -dol_fiche_head($head, 'attributes', $langs->trans("Donations"), 0, 'donation'); +dol_fiche_head($head, 'attributes', $langs->trans("Donations"), 0, 'payment'); require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_view.tpl.php'; From 96b7cac93fac2c2dc43862ecc8804cb220ad8bf8 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 29 Mar 2015 14:30:43 +0200 Subject: [PATCH 425/429] Delete useless line --- htdocs/don/admin/donation.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/don/admin/donation.php b/htdocs/don/admin/donation.php index b7fb9c2b74a..af00f2dbbcc 100644 --- a/htdocs/don/admin/donation.php +++ b/htdocs/don/admin/donation.php @@ -215,7 +215,6 @@ print ''; /* * French params */ -print $outputlangs->defaultlang; if (preg_match('/fr/i',$conf->global->MAIN_INFO_SOCIETE_COUNTRY)) { print '
    '; From a715ccfcb8a20b74ff44f9073da0d6f13f7a7f88 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 29 Mar 2015 15:11:41 +0200 Subject: [PATCH 426/429] Fixed: HRM menu is not activated when only Expense Report module is activated --- htdocs/core/menus/init_menu_auguria.sql | 2 +- htdocs/core/menus/standard/eldy.lib.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index c385eaab4bf..270774c6464 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -17,7 +17,7 @@ insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, left insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('projet', '$conf->projet->enabled', 7__+MAX_llx_menu__, __HANDLER__, 'top', 'project', '', 0, '/projet/index.php?mainmenu=project&leftmenu=', 'Projects', -1, 'projects', '$user->rights->projet->lire', '', 2, 70, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('mailing|export|import|opensurvey', '$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled || $conf->opensurvey->enabled', 8__+MAX_llx_menu__, __HANDLER__, 'top', 'tools', '', 0, '/core/tools.php?mainmenu=tools&leftmenu=', 'Tools', -1, 'other', '$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run || $user->rights->opensurvey->read', '', 2, 90, __ENTITY__); insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('adherent', '$conf->adherent->enabled', 13__+MAX_llx_menu__, __HANDLER__, 'top', 'members', '', 0, '/adherents/index.php?mainmenu=members&leftmenu=', 'Members', -1, 'members', '$user->rights->adherent->lire', '', 2, 110, __ENTITY__); -insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('hrm', '$conf->holiday->enabled || $conf->deplacement->enabled', 15__+MAX_llx_menu__, __HANDLER__, 'top', 'hrm', '', 0, '/compta/hrm.php?mainmenu=hrm&leftmenu=', 'HRM', -1, 'holiday', '$user->rights->holiday->write || $user->rights->deplacement->lire', '', 0, 80, __ENTITY__); +insert into llx_menu (module, enabled, rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('hrm', '$conf->holiday->enabled || $conf->deplacement->enabled || $conf->expensereport->enabled', 15__+MAX_llx_menu__, __HANDLER__, 'top', 'hrm', '', 0, '/compta/hrm.php?mainmenu=hrm&leftmenu=', 'HRM', -1, 'holiday', '$user->rights->holiday->write || $user->rights->deplacement->lire || $user->rights->expensereport->lire', '', 0, 80, __ENTITY__); -- Home - Setup insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$user->admin', __HANDLER__, 'left', 100__+MAX_llx_menu__, 'home', 'setup', 1__+MAX_llx_menu__, '/admin/index.php?leftmenu=setup', 'Setup', 0, 'admin', '', '', 2, 0, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 32fc9a07aed..6cf203bbc89 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -196,9 +196,9 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0) } // HRM - $tmpentry=array('enabled'=>(! empty($conf->holiday->enabled) || ! empty($conf->deplacement->enabled)), - 'perms'=>(! empty($user->rights->holiday->write) || ! empty($user->rights->deplacement->lire)), - 'module'=>'holiday|deplacement'); + $tmpentry=array('enabled'=>(! empty($conf->holiday->enabled) || ! empty($conf->deplacement->enabled) || ! empty($conf->expensereport->enabled)), + 'perms'=>(! empty($user->rights->holiday->write) || ! empty($user->rights->deplacement->lire) || ! empty($user->rights->expensereport->lire)), + 'module'=>'holiday|deplacement|expensereport'); $showmode=dol_eldy_showmenu($type_user, $tmpentry, $listofmodulesforexternal); if ($showmode) { From bcd7516e25dd6e5f2bf5f89759348942bfa506cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sun, 29 Mar 2015 18:22:45 +0200 Subject: [PATCH 427/429] Fix for donation.lib.php --- htdocs/core/lib/donation.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/donation.lib.php b/htdocs/core/lib/donation.lib.php index ed6407b1e84..1fdd2399610 100644 --- a/htdocs/core/lib/donation.lib.php +++ b/htdocs/core/lib/donation.lib.php @@ -27,7 +27,7 @@ * @param Donation $object Donation * @return array Array of tabs to show */ -function donation_admin_prepare_head() +function donation_admin_prepare_head($object) { global $langs, $conf; From 6c26063fc8d810f2781a3b7fc5c7da19c769c5ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sun, 29 Mar 2015 18:29:09 +0200 Subject: [PATCH 428/429] Travis Fix don.clss.php --- htdocs/don/class/don.class.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index ce041351eed..5e36037738f 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -306,7 +306,7 @@ class Don extends CommonObject * @return int <0 if KO, id of created donation if OK * TODO add numbering module for Ref */ - function create($user) + function create($user, $notrigger) { global $conf, $langs; @@ -426,6 +426,7 @@ class Don extends CommonObject * Update a donation record * * @param User $user Objet utilisateur qui met a jour le don + * @param int $notrigger Disable triggers * @return int >0 if OK, <0 if KO */ function update($user, $notrigger=0) @@ -589,11 +590,11 @@ class Don extends CommonObject /** * Load donation from database * - * @param int $rowid Id of donation to load + * @param int $id Id of donation to load * @param string $ref Ref of donation to load * @return int <0 if KO, >0 if OK */ - function fetch($id,$ref='') + function fetch($id, $ref='') { global $conf; @@ -676,7 +677,7 @@ class Don extends CommonObject /** * Validate a promise of donation * - * @param int $rowid id of donation + * @param int $id id of donation * @param int $userid User who validate the promise * @return int <0 if KO, >0 if OK */ @@ -707,7 +708,7 @@ class Don extends CommonObject /** * Classe le don comme paye, le don a ete recu * - * @param int $rowid id du don a modifier + * @param int $id id du don a modifier * @param int $modepaiement mode de paiement * @return int <0 if KO, >0 if OK */ @@ -742,7 +743,7 @@ class Don extends CommonObject /** * Set donation to status canceled * - * @param int $rowid id of donation + * @param int $id id of donation * @return int <0 if KO, >0 if OK */ function set_cancel($id) From c22a5634220f66122e2b7769090861edcddc9a9b Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 29 Mar 2015 21:04:20 +0200 Subject: [PATCH 429/429] New: Add management for accounting account in admin donation & correct bugs --- htdocs/compta/bank/ligne.php | 10 +++++- htdocs/compta/bank/search.php | 4 +-- htdocs/core/modules/modDon.class.php | 7 ++++ htdocs/don/admin/donation.php | 53 +++++++++++++++++++++++----- htdocs/don/payment/card.php | 10 +++--- 5 files changed, 68 insertions(+), 16 deletions(-) diff --git a/htdocs/compta/bank/ligne.php b/htdocs/compta/bank/ligne.php index ac9fa10ff12..69fa076c584 100644 --- a/htdocs/compta/bank/ligne.php +++ b/htdocs/compta/bank/ligne.php @@ -4,6 +4,7 @@ * Copyright (C) 2004-2014 Laurent Destailleur * Copyright (C) 2004 Christophe Combelles * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2015 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,7 +22,7 @@ /** * \file htdocs/compta/bank/ligne.php - * \ingroup compta + * \ingroup bank * \brief Page to edit a bank transaction record */ @@ -33,6 +34,7 @@ $langs->load("categories"); $langs->load("compta"); $langs->load("bills"); if (! empty($conf->adherent->enabled)) $langs->load("members"); +if (! empty($conf->don->enabled)) $langs->load("donations"); $id = (GETPOST('id','int') ? GETPOST('id','int') : GETPOST('account','int')); @@ -350,6 +352,12 @@ if ($result) print img_object($langs->trans('ShowMember'),'user').' '; print $links[$key]['label']; print ''; + } + else if ($links[$key]['type']=='payment_donation') { + print ''; + print img_object($langs->trans('ShowDonation'),'payment').' '; + print $langs->trans("DonationPayment"); + print ''; } else if ($links[$key]['type']=='banktransfert') { print ''; diff --git a/htdocs/compta/bank/search.php b/htdocs/compta/bank/search.php index 534a9bb0e95..a1e114430ce 100644 --- a/htdocs/compta/bank/search.php +++ b/htdocs/compta/bank/search.php @@ -30,7 +30,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php'; require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/bankcateg.class.php'; -require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; $langs->load("banks"); $langs->load("categories"); @@ -128,7 +128,7 @@ if (! empty($type)) { $sql.= " AND b.fk_type = '".$db->escape($type)."' "; } -//Search period criteria +// Search period criteria if (dol_strlen($search_dt_start)>0) { $sql .= " AND b.dateo >= '" . $db->idate($search_dt_start) . "'"; } diff --git a/htdocs/core/modules/modDon.class.php b/htdocs/core/modules/modDon.class.php index 8c7425ceed2..e25bd6d3bf9 100644 --- a/htdocs/core/modules/modDon.class.php +++ b/htdocs/core/modules/modDon.class.php @@ -104,6 +104,13 @@ class modDon extends DolibarrModules "Message affiché sur le récépissé de versements ou dons", "0" ); + $this->const[5] = array ( + "DONATION_ACCOUNTINGACCOUNT", + "chaine", + "7581", + "Compte comptable de remise des versements ou dons", + "0" + ); // Boxes $this->boxes = array(); diff --git a/htdocs/don/admin/donation.php b/htdocs/don/admin/donation.php index af00f2dbbcc..bd4683ec3c7 100644 --- a/htdocs/don/admin/donation.php +++ b/htdocs/don/admin/donation.php @@ -31,6 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $langs->load("admin"); $langs->load("donations"); +$langs->load("accountancy"); $langs->load('other'); if (!$user->admin) accessforbidden(); @@ -114,7 +115,25 @@ else if ($action == 'del') } } -// Option +// Options +if ($action == 'set_DONATION_ACCOUNTINGACCOUNT') +{ + $account = GETPOST('DONATION_ACCOUNTINGACCOUNT'); // No alpha here, we want exact string + + $res = dolibarr_set_const($db, "DONATION_ACCOUNTINGACCOUNT",$account,'chaine',0,'',$conf->entity); + + if (! $res > 0) $error++; + + if (! $error) + { + setEventMessage($langs->trans("SetupSaved")); + } + else + { + setEventMessage($langs->trans("Error"),'errors'); + } +} + if ($action == 'set_DONATION_MESSAGE') { $freemessage = GETPOST('DONATION_MESSAGE'); // No alpha here, we want exact string @@ -191,24 +210,42 @@ dol_fiche_head($head, 'general', $langs->trans("Donations"), 0, 'payment'); */ print_titre($langs->trans("Options")); -print '
    '; -print ''; -print ''; print ''; print ''; -print ''; -print ''; +print ''; +//print ''; print "\n"; $var=true; -$var=! $var; +print ''; +print ''; +print ''; -print ''; + +print ''; +print '\n"; +print ''; + +print ''; +print ''; +print ''; + +$var=! $var; +print '\n"; + print "
    '.$langs->trans("Parameters").' '.$langs->trans("Parameters").' 
    '; +$var=! $var; +print '
    '; +$label = $langs->trans(AccountAccounting); +print ''; +print ''; +print ''; +print ''; +print "
    '; print $langs->trans("FreeTextOnDonations").'
    '; print ''; print '
    '; print ''; print "
    \n"; print ''; diff --git a/htdocs/don/payment/card.php b/htdocs/don/payment/card.php index 4c59f566ba5..3abff69a624 100644 --- a/htdocs/don/payment/card.php +++ b/htdocs/don/payment/card.php @@ -33,7 +33,7 @@ $langs->load('banks'); $langs->load('companies'); // Security check -$id=GETPOST("id"); +$id=GETPOST('rowid')?GETPOST('rowid','int'):GETPOST('id','int'); $action=GETPOST("action"); $confirm=GETPOST('confirm'); if ($user->societe_id) $socid=$user->societe_id; @@ -129,7 +129,7 @@ $h++; dol_fiche_head($head, $hselected, $langs->trans("DonationPayment"), 0, 'payment'); /* - * Confirmation de la suppression du paiement + * Confirm deleting of the payment */ if ($action == 'delete') { @@ -138,7 +138,7 @@ if ($action == 'delete') } /* - * Confirmation de la validation du paiement + * Confirm validation of the payment */ if ($action == 'valide') { @@ -192,7 +192,7 @@ print ''; /* - * List of donations payed + * List of donations paid */ $disable_delete = 0; @@ -262,7 +262,7 @@ print ''; /* - * Boutons Actions + * Actions buttons */ print '
    ';

    Un!*U~a&?P!6baJd`D zdNaMjrSI)*i-3a10fb>a#<@1YbRj$p8LicmI~+?CltARnf0n`a$u1!6Cr^csa^+|v za@ay-!@avt>B{%#rq#Nw3rqDW3ZAmyh(XviJ5P!myY%B|BJnwVy@U*nQSfyw8Xl%8 zuNYdnb%P0*$q#llbt8c1WaIeEMX#O{eZYQajeo(bq9w{=_3N5uMT@mr0I>vYwEHig z6?sy7Ix#cQrX|C2-bYR(mZlH=$<=dW*N3dC;ydb2b^)$tVg_JTnWpjk06b>nHbBJ~ zFoVS;16YLBXz&>1oBOKXbs4Hz_|sj1P{Wo0NuQD(81Acf+yT)C#|5YrkbFPXqgyyB z&0SA~?>1l{o(9kqVPDdyzs>cjM;~UAML8WocgCFEk!E2Y2x3h0=@euYo!6!Rgfe0m zYp8-hlEwboWO{QJV1dF<01qRer3RBSvJVSmL3h3K;ZZX^#;3JDQV;$~S#6`uNhA#P z6aWu6Aek2Tvts*j0K{LAzJn%?0PjGvYLEs0vl}$DV0)C}KWAZR;ivqrPu5M)S#HJ! zb)61LYVJv58TL=Q+}D4dDcO@%&iNK*Jx68r^O18*d!n2Dc=+@lmT~eW_Ig3K79_i- zWR9)#-+D%>d91;M?$UI+O1RZP(!+ki=9VN{itVY%BNd&~ePYigvJ3>mlqlGfmnp?A zz8eL-OV3jU&blboMRW;-q4w3`KQMIpMwe2sT~wrF4+p#SMhMF6NKNaaR5fgHhvRbk z`iV{P36qSVl~V)JVh!J)&~CWX7Q6}mSNs&?1dV`%OU|b>h3^)=ry!P4g;^WBk9Wr&wOm6fLLE-yC6hp8tCfd56gC)piB;|E}u*opN@) zDlCPXhuGb~f|&h$zQbgNSod=TO<-6o+Yf%-{jk;ctB)xeG*C zD0#pFgx?k%SXu(+;Ff`P_9SL$1akd81KI#h8zlBNzt8r$`JO)i99n^LKbCn7UJ-2T zEzxgD-`Dx~$Gg1`pcbBoLnLB!k~}h-MjZ^F2OXWa&cExrpV#)%J7ptazfF9Z)E^0G zP7eF#pBhoit+k#6Y$KYh!rM+PrR)dWH#2>XPyZ7wC(Vj=n#3-Yda0@ zU^!q}?zy&K;>EU1h1+7Vrt2rs%}p^^rTlXQqM7BZn;!f7Q`Zfw zxHat9gbVZTi**J%?Ds{WY-w9OHJp^76NInv-6hgvaUUt6lBIX(hgyp9m(4ut7w2T9 z&Z76P$%OdLWimUgJZ>6@6tl+vl)EfshPD4C@{~9&8^UzPNqx>$r&WOE`Iw)KtWV%~ zgX`U0yZ6~e%soE$mr_Cg;Gan|EMn-I?_}1!kPfhT=>Y*u56k*N-YHlh1ZLN0IdLGw zfU20L4&ZRm%0cYF_ud~SYq^@~zQgp>7ZL^YR%X|`r89uflGx0#jC*u#E*eBLuMzsu`tu;tXX+OWNy8uehAuv?uWF4 zh8@9wjZ(sN-P>;NBY0lDG>pf-c#&ICjBlU)rP+~`BkW?pN_Fq~k~#fpSxC~KQkimb zGzzQww(kF2>dTH5OcG8Y9zGj^Z>}8#(*Bu;AJYQY)qWN&bm^bjLla5q*Xb>9%Em>& zDGICZ)G5Zzaf9P|qTXp2;{Efiu1$c%Ysd8d8@>I=(85AnO_IJEB{>w=?$EGSD5y=+N8$M0^1It&WjN_}F$t0#;7Went^ zIyNOlaxuEA2!h;T+d`)YM=9YR>ZssOMWy7QOPQ3?5+|6Ri0`+(nq}#C(`Egz=-@5s zTDxz=rgaM&W1M)S)p7U4V&baOxTGZe$AXN*$F*;XRMpLWA=b$n&PDX|n&ecE*5R`r z)dp83rv=T)N8i=j34!LBu}l=s7^N~z?%j}r5&_*ia2k3MNQ*`UMX@+aOT-~8~c#9YGY!gCit?avu4ude4>P4|=%>stOC zX&wQqQ11L3X#&+F1o2SKdi1>42Ke2IBWXz0(BGD9fwfK0`Xe zJ>tA$^M(r(-I(~b3v|p)W?FEvf~l5pq3U(MkpAPxP1rQOhe?WK+qvoFOyEZ<^@4RM z#QEC%hvQadej*>2c4@JtW^~f&ZelXW-s!zzT7;=vn9{^M!v~z;nOy+*llrg${p*W5?(!P+9cs~9ZG4qas@SYf zkjfLVH?(4dd}rs|snsf~H7;U=0L|MsQWvPsirR5y_+A7_r|i11#E%BIEa(j56?;O}` z<0SBtIYIhASK4WNZOk(YpMO-b6C;sCO#)0L+V`bxN+zHsxk-Dxx(@cmn)Gm!kdj=a z52Cdq_fx5xVf28Pdwv=Zb~8Dkf9lT%{Xd@>Y!Z)$Sn0Wms{Rs;RGJnanm+Pv^{Kp-72cz?w;{u{Npe^ z<9YB>V&xlPUO;h&Gf6cmG&y_3_Ro7O)T#*ZxJAoJcJnq`l@p9Fq-1%R=f*@W$j<+z zlTk?jkL4-2-a@M*&EL)A8dJqDP@Wm0YZ-Z3_mK%wrpTZWG{W5cwRa>>Y?@g_!@nS`jYvCWxokhfiR-!vErOT_R6)nm}V!?_bb$N;< z_{vf~`C4$;B>tiKngwtlpBpI?q+Cu#OB1HV-Zf*s%+WQY#a>bI)h)a+U?IWGxd4HHn^25~k>RRinPM-ZoHjpPOqQ%pwZ?BEzDuwa>?|YO2H^pOBgF;tRyL8UQ$|t=4 zo{4XK-kT~WAeD?Ayb<)!vqG+(@=Y1`A{%_;Xq5bZvt_hHmjr!ErrvqD#Zqa6G91$I zzMryu)HXJ$Gi{8&V!Z-`u10)Fg1PAA9IK&_ukM>!N3Mc1JJH`{LTd%Hmf5=m@=-kF zFSvEA1v*wE5j-%=8ZBBcHxGRCU=@72@RWG~lt926ND;}i`wSSnR&>zHx1%6{HHs;7pP9gSOKhDULzwr=uo-|@q;xd!tq3b zq9F24!Y{b1`Ynebq@JtUdAQ?I@ohv!r2#U%N%BZ$GCn(C@~ZAe#9&AkF^7*+N07&t zN=ND$$OWl<=hVaaqsLO&JZl9D-Q+jnW5t~4!{ z!8fp2Hv0*@MR)FsLek5zXE*VS3sg$eSQ9F?Q7~w6^1W3!xmE(>F(}ute(X8+P1VWC7uOriGyQ!| z@khwwSC!f@@QxSuhRZy;d4BIRF=gC7_+ihnFcONEx?ukNY#H3+E58f5N;O5#_j+QQ zto{goxmC|a(4x>qyei)L;uK6>*e`F5lUENp?wZAqaYOPbVbljhaE_QG2p++dKpS%P zQHzA{It{sls_dz+IwbV=8{R-0E^5ozOLV?MDjHkVHZIz$h=1bJ9kSS`>a=K_b#0wf zQWvY5uBtN;Wr3K!ktEt7M@C-@>5rD_4{$o0n63oxy!~X6-w0;tXN(j$Zhfjmg%hiP zXq$A6+$JY)Mt?yyLh;}@#EV~LYq{V}2&w{QW|UQle=UoRUS>MT_?bh(YEg(0_zR=lll^9{P)8S;?@Bdvd*y=Mm}{AcNlWC zrO>bHBJ(`kEGohXMT*Dwi4#KlISHIHl}?3lp61|pRF!86>EDONqm_cf+buXvRthq=Uar829OBf?i&*$(7!sV>M1$RAZYprWXSX#IOx z5oCs2+t#06b;2xUay^aR3Ap`BT6k+^c$flzrpvV(uUN0EyMHsMz6(VS z(+igI;}?gyN^2%272tA;7=hrr6r5tf>M;v(O`WtDP5zA9*lmspwR5aZ#ZBm<=bZAc zAwo4TQ=o?tDR#l5bWY=pni1p)CaVHjg|XWawP zuFw0VRL56X(flv?l}#xaMxr~Mka*par6?$}8iu_-SQH;PL#e$kBUjk^Sq9Cy_uxJh z>9CObAq9t>$yAxlmXwzPL2eH4cAkr@CEF770%Bj<;8+Ds$`JZ-EoW%jp-R)-UZk6` zQ-Rht%5w)1WPIaeRkV$wG1h`izVXya<)MqXKWoY05Yf&A=7PD>MnxRzaU7PYaTa&{ z${O`B1yl2af-S5pYSlo3{~}@nPr)vm6K+!rMm&de+E|6E?;#~Lkx#KlTx7&~2HW=v zm1;Ipy1u_dHe9K~v8r{nEg}iQ7I>JfnlZa7*)*3Ra&6^4KSt8i#5_PxL&3JXH_%9_ znF~|({XQIP?V0V4Bt&?C6XfXNL&Ury*iO0cy@Ega3wh+kg#5>Ms0wAHl*dV*Hbos& zl!XX^7)NoKz;ig(J^o8L_L!CxBVA5@I0V&{sgg1nP>EqJ7~)Bh$b2G(B+MU|MSMRl z%heQn(TmE}#XmiXXwx%zUz8W$Ah$ofPx9ic0%XU{6wD8wQWyR_$7t4qX)H|8Fa(ZG z;KgI`HHE@Q5I8?49W2XWK&~|namzYpXqHrm89=JBas}sv?L!|MN7UJUSmRbgXWof~ zI~+4da}r=j)~-=fZz9Dcvb35ok|_A~f6H5xO&SHJu4JNZTkn`(MPtfj47B_l|6_?r zm6>={Cu@@A&_6#wQIL4G$3g(}0_K7?O37S6)EW8zLgJFm%>Tw*X_3_vms>Sg5>#WE z#M<-oD!JFP=G^bou!Eub$@>Sp*7&cj;|<7x&f=&Vui+9Z@`4PCG{=vweW@E}fD$B) z-kgnF5J2U#=;7xPcNM)?H(|0Sc)M%j;THPAc?#w-tJQc~)|woIwP4ys zs;*RF5w)vCVL*&qR2c9w5Y#SIVXP%i1k*uL*yC0y?jL4|XVwN4`s`Qw2fruet4szv#Ko z!?y9*U`!BR%>|lc8w9~4W{(Xg!~1hx2c^AnDL#-potGt9m1H0(x}<=-tmb7cuY!W2 z6*MTTK-M@&QFTQFie{)fP<5yRr0GD@4GnOh##h7C0n!buBLWN)KnVE3qz1$WchiE% zga|`Kpot-0F@@NM#6ieJCPpSfm_re^5U~+;OiWB-VGgC3a(A%BVc2GbT7=rfvWVpn zixJx)JaibfY-%&=FpI;O?aJY0JIrRxam9E!jLWs^n@Au3qm#v4X2{L{gM=&dZ$*B` zvveXhEY>B_TPiP???gj0p4q9HW^L+dyxG+#f6umFSgKw-ayC@2@9V4{PksD$sJhhg zKDhR`w(-mF_4Q)ZdpXk5cX%=Ub+s{SY$=U)PmE6t?Yh`IG7^~VtS^6F%sjaJj@Ha< z==|#^w{P|BoPYeNeNLRMER5~gU9D6;eDY0Rzxh&q{xIAfsGaz+b>-@Sz7p+kDNSpM g1Dkpq*)x%ZNBGkg{q?jb>Emw}(#cF>A%1T9ALDq4X#fBK literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/helpdoc.png b/htdocs/theme/md_dev/img/helpdoc.png new file mode 100644 index 0000000000000000000000000000000000000000..8cd950e7be1aabd9b452c150ddd128e6223f72e1 GIT binary patch literal 693 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~i!3-n?Kj!QJQtTz3zOL*yIm8(h1*R4sQwIuh z7I;J!Gca%qfiUBxyLEqnf-LEdzK#qG8~eHcB(gFvFbW3vgt#WhMCT+Y<)x(*q^A{T zq!(wTmtW@nYe1b)pXa_PHJtQ(%w3?qit$u`?Ri(ncbbUdwb^e_0F5nw|MI0)pKU8nKygW z;ssllEZVwc(Y9racPwAJW5u$aE0^tBxqSD^<$G4G*t2@&-Zd-tty#5i?dtvO)*Rlr z{>Y~FN4IP|wr$Jt?ORXo*mi2yj?=q$p5C+T%--GS5AHvI=)i@;2QM5sboJ!%tEWy} zKXdBl`LlN}UATMs(u3>Q9^Sn1=+@20w{JbUd;96VyHD@md-3Sui^q>%J$dr_>C+Fd zUw?Z4?(>KDUp{{L{_W$>@85s_{8_O+r3V;T(Ir8C!T)In80P%iu?J|)0Z$jl5RU7< z{l|rx92lIhx4M>XOnBe4_xrj8ap`RvdH?)xf6>tQY|@$CDvY~U8m*eeI3ujYSz1p6?#fDol7fyyMQn;~@~bO(*jkIbo15g5+^oDJ*!SLv-94?NHTAgq&26>YkF*?h z-hD;pQ=P-MV|}4EcJ*1?o$qh^rx$wU$|uW5X7%wRialj+Rg5pQ^%CbiI4TMB3xlVt KpUXO@geCx!B8$ub literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/high.png b/htdocs/theme/md_dev/img/high.png new file mode 100644 index 0000000000000000000000000000000000000000..c0eaee6542fc0d716f1fd9ecaf7e30a7c96ecd36 GIT binary patch literal 611 zcmV-p0-XJcP)>3L-(7Q67r4%>d*izJF!^bsP-=|RSCh6Vd#qM%qnqj ziWEzVv}}wF4`Y0^1R04y%uMTASA1S0v@#G1sUbqZx;Urzds9P3Z}OHpH(x+`j0jc5 z!NEQp+kzX70)_$pbJzB3-&l^(H;?xAe$X}7wbYnTpirxU`9ApLCy)Th{sB}* zov6aEtafy~1(+4GH3dOIYy_bS1QG;Ff(nvVh%uWXdvb4Y>hv$@nK|d1@3-^3&s()EiD+%P#u5gD zS;vv^snB#ZU4$9*D#+I@V6dfvZHegwXf-#7Bdsj$tgY==*f`kRxvgL0x4|_4g$nm^ z4)<}1@bZZ8b&d3Mi}Z7k^moVjqp)7SShPD9?SVymZt?bu3iKv?g(ijvCtw4%ZpLoi zvMHGunU0Uij7I0C;diG+?@7m>+?`dnlXRvi=UidNrLzZboZsKpP}NaaIyBHfeE;%P zPYvs7?ex&&xv4?XbeBpvspj;k1vK^h5w&<$`;nzzlo%El3`(i-(>p*h2k14RbQ)Y_ zgDN4Y{RsUEqFA=f+y-f7i$p>oD{YYu4)%`rE1Voxt#fj8abDxL)*j;Wa9jT$n#*UF zsK6jxpjQlb6F$hB5E>dA9!3leg;+?~p!m%Ji5M(IlpG$O3_%e>Ag+|?s8m8kDiLo2 zj0?^pg=NLzv*Tj36GC(1V|S(CKJ(^hCX#cqN(*vN?A?Bfyb}U1FG#yscHruFg*U%1 zY`$=$rMjfGa$j4+IVgnA`ft0MYx-I$pFg}YK)D2EGTQMAz5OS8M-5}BZ|qU^_+wK< z%-(A(>aVY72JVE zUjHI*SUK0H6fjhL8e~KzWSXQvM&^gq!g0upTEf-v1~d}3Mj_S;X^qO%^ z8CNf)>&26LInU%yHuG7ZK`k|?KN)3HkVm6hVpJ=PI+anU1|%#%&NP`-3IUZE&`1HT z0?;l3S{39P&}#vM78H$v5;~|5n7k|Bg35pGYuY{{EAJTBcS)BO4Hp~)yG82c<{Pvn<{ z#Z^4tAct%OJOyzChDs{;p^NXItDh+nwWpL_|Y;xH$d6ON8^p8dGP!+DA_GQygz^}WO# zj(>55Qf1Xyzzf7KP|>5^JHF&6e@!lpow#8^ukczj`6#oJA2Z!AopqBS1qrv#G#>A{ z*mK(lYbLKBvq6|$P5_&zo(S9GKZI{Ws?~^B&i6(WUUf5%rLM9>{Z(2Ni>ix=7|Oew z1-IZmTiu-KmJ&6x=fje`m)TCO<67WonCH5@nO#q}X5_4HD&MhztS8Rb@>Af9y5QgP zxf52##+wH#6jxw&J@8vA8Qd^-qvo52x%P_lXUsK?MFK(j)D`*HmS;_d3cicyn&{Vlv3wW$%>pz1KHA zr5a1xW&C{1cGuxd^fPwrWqQkr+wS7z?ss?UHMB>?*egrHjn%P}{Q9DwC(=IbJ-z%Y z+5hpW>3JgE`|M%OUC!qFheGZYW_HaKtj(vmHUWW7#TTX3pcyMg%#_z9EtrZDM@Yg` IqVvxE0}@!kQUCw| literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/index.html b/htdocs/theme/md_dev/img/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/theme/md_dev/img/info.png b/htdocs/theme/md_dev/img/info.png new file mode 100644 index 0000000000000000000000000000000000000000..12e6cd655d6630345cd24c74b5e85bec38524c1a GIT binary patch literal 657 zcmcJL&ubGw6vsDhC7XnlC~AWkXchcH4@M|dv4V*SO^OXMt)RA|WyKx>)|woIwP4ys zs;*RF5w)vCVL*&qR2c9w5Y#SIVXP%i1k*uL*yC0y?jL4|XVwN4`s`Qw2fruet4szv#Ko z!?y9*U`!BR%>|lc8w9~4W{(Xg!~1hx2c^AnDL#-potGt9m1H0(x}<=-tmb7cuY!W2 z6*MTTK-M@&QFTQFie{)fP<5yRr0GD@4GnOh##h7C0n!buBLWN)KnVE3qz1$WchiE% zga|`Kpot-0F@@NM#6ieJCPpSfm_re^5U~+;OiWB-VGgC3a(A%BVc2GbT7=rfvWVpn zixJx)JaibfY-%&=FpI;O?aJY0JIrRxam9E!jLWs^n@Au3qm#v4X2{L{gM=&dZ$*B` zvveXhEY>B_TPiP???gj0p4q9HW^L+dyxG+#f6umFSgKw-ayC@2@9V4{PksD$sJhhg zKDhR`w(-mF_4Q)ZdpXk5cX%=Ub+s{SY$=U)PmE6t?Yh`IG7^~VtS^6F%sjaJj@Ha< z==|#^w{P|BoPYeNeNLRMER5~gU9D6;eDY0Rzxh&q{xIAfsGaz+b>-@Sz7p+kDNSpM g1Dkpq*)x%ZNBGkg{q?jb>Emw}(#cF>A%1T9ALDq4X#fBK literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/liste_titre.png b/htdocs/theme/md_dev/img/liste_titre.png new file mode 100644 index 0000000000000000000000000000000000000000..a58ee63e1b6af52557ef53ae424a77bf940d478a GIT binary patch literal 196 zcmV;#06YJQP)u#Oov6V41S-TI7Z{)gpr^t*fLpYo0HT^sS|G`Hc2A%6P%v_0000bnWCl=>CEd~2k%3`jKlh(RRv^F4)5S5Q;#O+^ML`xt4rk6A z_5R_9LO1m46iFSqD=lk(uZ2a~?ml-z#}+vy!O3@G7c9}VTE3T?e>uD1kN3OZ8-JXY z_o^=Ipzopr0AUSi-v9sr literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/lock.png b/htdocs/theme/md_dev/img/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..3d99cf1eaef689386c6bcae4b7e3f237d53bf43b GIT binary patch literal 646 zcmV;10(t$3P)e) z%S%*o7>1v7&TkwY@0X;A%0)zrqE#hD)*>uKv}hGrv?|*97qksTT2v5(DUq9&5rJZX zMlJ#oHT2j_UNUub9HzN>W;|!k?`x5X+6&+E;rU)(W@cxZw(Zc=^z@bSsj0VPlare> z;jn($+xz8wW8+N~2$Zs&zP>(01QEd$kpR%FlzNp;r`rby2RGjI_s6ZAClAJbGnmb}g^*zwdjF>?H*u%5P~Tb`@|H`^o$yY!oDN-RZU_`IF~^OrOoY52 zYr!h*S0!N&tcv{c=Z6j-Id$v0Vclpt+gX%OJ+z`RDf8E5Zs>8H5%rDB_4#|QHfMm* z9ndNcT&*||ETY&zXUZxKad0;rGVT^}-y?28NsT&Qn=%`LNgxZLw6Bpu6v_KYHh~vk zAr_6ZxbCr#fLI z>(?rYnH2M3pV>wDnS^8k@&YC1fAgcVnV>eD45TvTvp%^TxCPJ}EP@~07*qoM6N<$f*|29;{X5v literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/login_background.png b/htdocs/theme/md_dev/img/login_background.png new file mode 100644 index 0000000000000000000000000000000000000000..facc2c6f4423ed902fc2c478068417b0a08bd823 GIT binary patch literal 79 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i0VEib+*$VkDKSqM#}JO|$v@5?VQ3MU)R^(@ c!9~Va2KP>Z?f!}q6F@3GUHx3vIVCg!0He_qmjD0& literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/logo_setup.svg b/htdocs/theme/md_dev/img/logo_setup.svg new file mode 100644 index 00000000000..4db2a11dff1 --- /dev/null +++ b/htdocs/theme/md_dev/img/logo_setup.svg @@ -0,0 +1,475 @@ + + + + + + + Ruota dentata grigia 2 + + + + gears + machine + + + + + Open Clip Art Library + + + + + Architetto Francesco Rollandin + + + + + Architetto Francesco Rollandin + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/htdocs/theme/md_dev/img/logout.png b/htdocs/theme/md_dev/img/logout.png new file mode 100644 index 0000000000000000000000000000000000000000..26ae717bc1abfd13b94f215a02ca4c462dc614ca GIT binary patch literal 608 zcmW-dOK8+k6owOPoi?R*(E~z?kGl|pAOs&5M1pO(({^n7@LI*VkSnz|E;K?r?ZPfp zMp07KsX7L%WeSDaXuuK>A-h>9gJKlwWT8YX1f>_zg`l9|tv}y6|2hBaaBdC{_O>dj zB1uwfu8&aRo7bzUL3FM3aaCAmGB=RTtSH;tl$}#28sV8<4j5yi0U?Ho!8A>ZfMTFT zr36t*Eew_cmSr&nOao>BW6Z{28(>rH=-?1=Ox3Xs$8qu)@&?Kim=QR5rcfvlD3~DJ zCCH^v6xdLl(ThT!=TY!1@baqXx?Z_lwxCj}_)PWvzz>4JhM-ao{*R#pVID#shhbRF zqpAm0p<1n0)@qfa@W_S8N0F~Z0gBcY$1cQ0h&_k{6o({^ zP8|4g<$3d4ws1?y+*o_?@X^Bjm(j&tZ(2*Qb3+5l)VsNR^2Fa|`nh}FJVO>g%>H7% z?fZ|M%IWpJyWhV!K6H$Bs;|cMmHNs^>F%9RnPvIO`E3UewJiM_YP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0U#q{Lk(I000KNoL_t(o!|mC@)k^_kQ=x z%rkR6tE;QZYFm`py6|22O#nZZ^6XSu;2&cq0FPk~H}itunnTQ!c-_tU4l4f$2T`qi zJ{o+@>|TA1>oqxbMe2zT#zQ z@9+S3acMK8O+Rj6JjFK>+F4XEiBEVEphjcDw_DHm;eJqjInmzYPPnc;8^l9g2=7kf zMcsR8EjRdk0jgTpY6;cqeG{S1ho|_N(kCreRQPcWWT;hZ;J+38|1i~Q<+tNp3u@IG z_;=t;=rbKl`Bn$)Q23(NjOlHqNuMKlg@v%|+SaM5av);`txuaYJCL}q;83Tg%H0|8 zYiiHnLyG@=O8@1J?uA>0ueGTB`v(5gDPyfsyuY#GKPRTUG~0#i8NW<&EbMGDHu_@2 ze`%p$+LHlaN%U(L>w9eY3jUyX1GUgxxE{_(!TCIDo7r`ixWcMBmsqG~8;qL;EVUZ6 z-4nBm*t?F+#Z)*Ai)!uGHq&iF{>G0gi*aA0000Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0Uj0XJcGUf00EszL_t(o!|j;SZG$inhJUKQHye}TLe;1Qe& z>THk^$OPAyi)0~)ZLr-~^+~({#vk@?-+wNM2&u*$5{?X?;co!Gp14<~0^b2p3|s>^ z0cb+O-v{{S7Qj!|e8iFO0F*Q9pfj{p00sckrNhEwhV}8GGykkgQ8o_%+LSe4r3^o0 z_&M@(MuDY5oPk@fP7rHe8Z@`^8xGnunL1F~5V*6Orq+ zA)-$*ha#d%YuA%qNL!XA;Oa_;a^hL5wHH3&U1cM=QgVqe&1|)7d!uWn8Z zGhzZN$4P zS{E)O?|Nb;E#xt!_1f3=xW*DUj{ZCt_!9Vmr~lnz4IKF0AmB@6Gv2Ek9@%mvEfEsh f2Yfy~__y%C#jBVt_@Tw}00000NkvXXu0mjfo}S{j literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/bank.png b/htdocs/theme/md_dev/img/menus/bank.png new file mode 100644 index 0000000000000000000000000000000000000000..fbaee7cc6bd21fb4f562365a376918f52633026f GIT binary patch literal 827 zcmV-B1H}A^P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0UjF*gs!;&00O&7L_t(o!|juHgdX)@yEDi7t@D1>FBoln*mjVY;#P?LKYVapg1n-0aZv&+i z!HQiyFylX)-s1DpZw8Do2-uc^%gjst6xj(I=n1)lq)x&qJ%TnDCx%{G~U z%zL$8z(rsYa2m)O_kU3E76M0f?cF8a2}X#*zE^ysHErzdW;gIquQ7c%lt!^{YNd*>0{XDL`IKc z|0Yi6{TA#eSAV^LSGp$$yfylRz*k^#8maQAtAEGGey;Qd*LW$7KdINikAOe`{z~66 z#@d0IX)ymzrEysn0NXt5yQS|MW1FjGJ`*tJE49@w`=6>j$Fdy&o&b{#`}sh#hkrXP z^Onc_N~Ojj=|jpU_f^ZZ$?mhthP)B;LkbxyuFZ&FwrN%dxve9TtU{v*JT?|+(bxm; zlI;UvjgNmj&X@;S1{@Ugmw-NFZmaZF>G$%v1K1b9cOr$^6y^NB0I$8M3bZAOlGqAZ zRjvSbi`{P;GatMa*Z{0j--;XjcuHbafNfVed^Z+sURy`T=`Zn}l(}UrOG}l0B0F?S zLn1qLN<&8eTjra5K4nfM{=-y!3c0~*!Pm4jzDcDe{{W+U8l>_!?qmP}002ovPDHLk FV1m@oVeJ3_ literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/bank_over.png b/htdocs/theme/md_dev/img/menus/bank_over.png new file mode 100644 index 0000000000000000000000000000000000000000..d395710a8777d9c9612301f716557ccffc9188f6 GIT binary patch literal 620 zcmV-y0+aoTP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0UjR=>1v<=00HbtL_t(o!|ho?PJ>VoeKqdO4XP)Q6WAUB6J46(0n~Z|>&|7HxN&3Z z0Zi}&(i4d8P4EV7To_l+&5-;|3bch5(EpNIOc~%o9`ok^wn(C>*g=C~$y@T4e1ou? zb9@hgUm?FxVr}x*6~Ex{U&=;f3Lr4#)NTs-DS)1lPXN3&rQ3{D9?1jQR=H{NLjaDE z_W*R8qWJ@nN+1u>Z(6tM0J!|iYVtCl6W+@^b(;@ir_*i^^uA@(%zPDYb_HPL+&;DmAZX?Yo?M zPvtXdrCTv6jh6*Iewmk5%1&2N@{iK~5-hu9yiwTGH%sD?$29$=VPJ>y3zUbM@*uYA59NKm0^BP@=xx8W57==3}->Y=; z3EFCLzLCu-yTxtEuYp$1Uzv{a(N%$14Sp+;x3aP17vLAzGvAk&!lohs0000Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2j2k> z3ppAMu)+8M00gN?L_t(o!|j<%i(FL{g}-&G@=i=b5PSqdM2t?Hh(!DY4n#z7>crpR zpK&hEon+uZP!z#|5-<=9Y79mt4(ZhNYpq360gl^#A9zR7Mc`xGUrFjD)kh9|t@Vhcw}AJ67eL+N@0YTE(0y%e7{%1l;8o9UvImt@ot$u#x@o z{xa|ea1xkG`nA^j1#qU6a%Gj^`}Epwhe-OX*7_0fI&cU$XxoyWm-HI&o9%CbQYjIzvdq~ogz>AU&KQQ`1~eDEaHzQ&TPpY_(xi_jQrlL} zP@+#4_bwx~WjSuMg#8-*m5)FX{iZO28b4u!Q{1%KgZHK6vEQ&Fcd6Y8>CFuqoo1 z^OGoOU3R8{BQ3S7tYh|-=@64tA9Tppm)n~Tn8hag_?=QO#3GqqxG`%*YM#$GiX|F& zq@eZTKE0&2wlv`JUYF_f^8~Bl`tDfQCz`ZbH+P?tq>mb6&u-H%#chVZJsdy=4VOk5 zvmw2D+qWBSA_E$6xaC-74A!HxNuM|nU*(1;*d`)vhOM!_MNuQ*rzuKX3eOZlJ%_nBtoH8_hbR%_u)Tm+m67YniT|v!%B%K3( z0j^29wW=c3TxmU`UbDaxaK-m~ZGSH5Ebx@1KY**YZxkWrzVSlKQ3wi@aQA_Tgicn z?MZ5`ZU8qP+WEZg-N4c2+2Qx?5NQ*afyPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0UjeGh88CP00PZPL_t(o!|j>RYg0iG$3H3lwoO%1!D^@?{x;PLS}Z930Hb)3BJ`#n z1dpPiAove>62z0B7r~PU4n9_&F+VyX3JY+8-P1Z#izBhmHH2`rC&`x5)|HUS5Q zyxp07`+f7~&CX0>N-3I^T4-WwYVh;wbl)?;0bnig6?iTDAkAdvcpb#d3=Q^4~o9&QkLq0M~* zlE5RE(WVXf=C&W@S{Lc9zv)4z(wE!aMmCPC;>-++pfTm z0egX7V5`hMmHCIj77eJ0T3sJfr+_uUi1_j$pdaY8fUeL+*Wlj*=YZn|w+NzP*Wlk- zKH4D4x(5Fdcm?#-xNfS7FdIo$c}v`+7QP2ex;|kmbQHK;rS22pS|g>zkAcPV@!Du; zuE6V+&vzN3%rvl68z*Hv-AI+xN?^aoudf4FfC+7G0Wi>LW#CB<@EgE0;5~5FBTEAv zjRL*{=<@*Fq{-8UXw%;)KHq0JsCp$`_#)RP`CVYfrRA3Z2Yq7s6p**X`opf>rd!^k zANZ^V{BGB7v(J)*Wr2c4-X_)9kPFLq0txYF6OVh6Hxuu2W%(Y9Reu2AwW1~IqqhNA zB>ItBJ_VG0cudnPSoF%k=BO>-B?j=z<;S(_PXRf9Qd)wMfnOg`Efuxv4*|OCqPG01 z06?ETUCp_bvq|CM+P$b}2R8hB18s5Zei~jPc+(rdhJ!hE9 z2dw$sDBw+D_-DYHKT*Z`B9O7Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0Uju{RL`#f00I6JOUe(4N5oY2F(Z=AtTTY=md2) zpc~K$)IZ9d&llT#2pe?gABk=Bc#-5MrywF6)gEwQJ2d#mjh@>Ar~#A!MgWFKC+dZW zB!?!Vf&4ZQQ6uF~5_n6~?YbxMn&#VOt=~eZR2l%)f_=prrxM^bfbYnfF91D{n~j{% zUCwHw0&_oHc?JLt4{hzM06g=2mTFTH(HKa|vuFNh?@N74FhB6mUt6qp{QZ<%P`OXo zcMgfs3X!QvtaG2R2EYe^*M)ntGH+IfT~_b|m&3XCx29A|s><_%Jr~ZCT?n(J`bHW& zxNgU+m+-YkGon4Q?XFR49Z7>P@080oKEUi3I4#VPO=JG*ghv~Z&E;Og<{s;{a|%mT zs7;tZ2bzvh606+ID-W}<^iD_@Wlh+Ilh6m=L~a_gtICk>2{He~FP{axj!0i)wSuDT zOMq`9!fTwMJYSX^T3drRGo){m8hjl{R2RIN@T{cZV{F-M_j_c1PKWgySbLh=&#nQl zCN$W?%yzL%1%3)kbHVGBVH3OJlWf$Jf>$1?unX`8z-M5-0&sO+<|2B9A|Qop?ny(9 zwjv_qnICygnd^T3mTWDT&+3j$I60qtzO(6;hEuW8|FFtxvb7_Phc&lkDZnSOL;nx^ Y4;OV literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/company.png b/htdocs/theme/md_dev/img/menus/company.png new file mode 100644 index 0000000000000000000000000000000000000000..828bf8f2e709d32ecb911377c85b8538f558671d GIT binary patch literal 572 zcmV-C0>k}@P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0Uj=0H)@&y00F#7L_t(o!|j>BOT;h~$3Lfnhae(|aEm`c4ip6i5eIQO1pg2J13~`? zXIEFjKf*x-CkI7G!9&pDI8eu?ca2MiBQ&|T*K1SEgDiP3FW-Ke=A~^-N=a31f(n}# z@5OuZUVJe&Rlpo8s-?BIYDTLSP^8+xa)xog>Y{(j6fZ^?dj#B-xoiaR0-Rf7E`Y6= z{;2FVFMuv^Z;9y|?vN~7d-mN9$1kl`D4}6+8c1GiLV3OmNE6b$)9E(GJfyr*aB+)Kdcv@-u?jKF}KY$N0!k50000< KMNUMnLSTY?!u9k3 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/company_over.png b/htdocs/theme/md_dev/img/menus/company_over.png new file mode 100644 index 0000000000000000000000000000000000000000..bed6b8dcbfbb062a2ff1d6affd40c1b072b2c2dd GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?hRKk6QcL#T#LS5yxbDj z0E;X!#V4_weWx!>|NKnv|EtGu&89A{;LNF4DP%sUyZntkb7zOHi%VZ$jbfQduietc z{A%~FJy*Vxd(2Aijf~#I#{$hg?2+xMNk)$wv*J!3-_vs=?yfV>6YmEWY@b$Ds;+;c v?zE5V%};~X54cO)?NVPzt=JU!Nz8^(ebcG0kG<|@fPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0UkBiQloYN00R(7L_t(o!|j>LYZOrs#($9<6g3e=M59Su5y68*TtXlbQLl=K3ldyF z4ITtR@aTWw0(w&P5 z&DY&ue_gNY^-O`8k*hX_9JW09Jo!BN%v(8d4rudzq?wJD*O=Ko``60-oFmi9PXcyG z<-0(&=lhy$Oq+7xh)ACW$`at#XH(i#o7ovNi#mSW%xXQcn0Na*e?gkI2ixUUPOKg{ z2{dZnpWxU^2a_@7i_NUg%o@$CN8WB`hs~@s4!+0Zjb^sZgQ+sJdY$9HYlcC3mYJO} zvlcV!k~f&y7Tr(`S1DYj=3cBT!XCwAm_zZdT^JxWRsy?$wNC6la1?mx#5M`HNb?K8 zOrRS$Ej)@H1l9o)6^m#bibo(7@*9BzK#As2;1X~g=uoT(*eR@w0~iK+b@RQz8ex|^ z*NA$qIUJOHEwJCCN|WM!ij@fCmb{2}naMZk*cl0Mt_4@|IrJCIi#-6y7?`DpNWCJ=JP+71-+RU0NKn z>CXB0z-8b|s^p&lOMp4RY@iir2d1Y{`47NNjR`H;CUpbYrHTX4tZEdt@;`w)>L(*w zvgAK1UCNxtSrMZ05#YKiS<>cbdvFEVC-vJzIH>XwmEWhSlv_XKe*rJGXg_HY1yTMH z@H|M5@Vha404#HMnMEm(f2ShQ7j%L6CEo{h>GNlG-DJsk>IJ mo@TZ3C>gYZ{GZ69WPbsyx*6lY>ctfR0000Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0UkNtxZG$in#b2s?4;$2(pmc)J4YEP$28=*9$Oa`7G#i9& zKsO*8xD#BzoF#fP34e@-hU_n1%SHuKZ$6r zD4C>E$G6uv`%*Ze?{@MS0q_6Xq0pI^9)n*+Wcy4&PJ z_demj0lYSLyWa3cL+3_1KOUgpc)V)tLn`;A`zwGC9_RiTJuI>D+{S~O;sZ23w50@e zTEi;g$6dgiYAPC1&Gj{AC%&cHf$k5D^BnENnB_bmMm%j#0JdYGhr-tl=yJdgvTb;# z@iFqqql@NkCkjrk^@w@bcQSYdkO4S9>iK+iW3N_If&;+H(W^{i2YM8CV$xVU>gT}V h8XjY{yhNTU{s4BK^m~$Nny>%>002ovPDHLkV1nqy7Iy#u literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/externalsite.png b/htdocs/theme/md_dev/img/menus/externalsite.png new file mode 100644 index 0000000000000000000000000000000000000000..01e30553fc569e01123faefa7ef3c019cbb36b5d GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?kymxs9pc?p3FMN--{Y$aT(A&9uv>Kw{59X(ZGyAAIoZy6yR=qdsl%PB8wk zFeP(F5j-(yt?6IQgi%v`O*!-B5m_b(trNyYCrLB*7N-NHB3B3e#hF+ zf8rJ4pZJ&k|GOu<9V{=TDW}&3&iwhZVrZR561CN*1OzzA5xdfz;$Z(DcuC;w6&}z4dDsW5y4+fo*fMq{L5xBeb%ZM zx(}Fke0$|}VBVegm3vRe?dM;a`C|cV^~J0YZ21V3e4M`{qNQ%tnJccK==5~;b6Mw< G&;$T2cj_tt literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/externalsite_over.png b/htdocs/theme/md_dev/img/menus/externalsite_over.png new file mode 100644 index 0000000000000000000000000000000000000000..8e227ddc83f7c92994716cbe7c75cfdb4814feea GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?{il#0xY<#M8wwB;xSf z8G*Tn4FuZOUuIx&QebgX6gi|I0ws?fNDkmg`|$Ru(%m)Qua@es{_=m)(;qeE|B~F( zHQ5iuh30=dB(&!NtA52n?zj(4;(H#@_h zQ}Yc&jE$L-x@R?dCtIu8J^MTDzUs$~=l;y>XZ-aHWX6BtA0H1^_y)VLo3|s;IB)T} z?-?sUZzU=*VPjdU6YcJ2GTL*@hZDU$|yw~oWpW0>3HIb8k zZkqI7sxrEQ`JCbpHlK%D=ihkGz7r?=>&>^|iq4&k<_QdTjk}-k-=+IZd*46(Yt40A hxFF63``};ZUxs3rV>T01q(edB>FMg{vd$@?2>`CysPX^+ literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/ftp.png b/htdocs/theme/md_dev/img/menus/ftp.png new file mode 100644 index 0000000000000000000000000000000000000000..d9d96f0255b04e220db0fb0549d01c42bb2df960 GIT binary patch literal 788 zcmV+v1MB>WP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0Urkjp2N2Q00NXrL_t(o!|j;AYZO5g$3GD@D2h!KF`&^Xhz4U}W8(#ag(&DBAXWjp zC@4`uLWqSDEyP05*x4xlC~PbQwG(XAXkwuxK{!Q21mUi@+}=%^R}7E2-MP)~c?&!6 zSY~eCo6miB_RZVvFvgJ8wu%h596pE7;WN}$tNuaYwuj$G;CvJ7^Z*0EDPT<2>9Kwv zi$!mYv8`Z?2|Vnz@(VK^vmpNV7;#K1Z-6C_|6KLd<^b?m#Wdo-l=QZ#1C<2fF9Dq@ zW?lS!*4Zuw@Ix#VK1t>Gs(9ys&kp5(1Gj*i((eQA0Q*(EN#JTDc$2X5o2_^=z$43F zuM^1iFz^7_=$LZ`*a{4};NMxdDT!t;-V1yKPB(zB$@Mz0Hble%a1?lzcAl>|%--|1 z1wc2@WsNNYQ@Pr$Vm)IQT5bLYj7 zyKKk*1w8YuZ8Ur}<=Tgc__byVvncol;JF9HVodll@Wtx?37gyz^4;bbuty4{OuR`& zDZdRk=@GXGy!fB+f#c!ql=>r1S-S literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/ftp_over.png b/htdocs/theme/md_dev/img/menus/ftp_over.png new file mode 100644 index 0000000000000000000000000000000000000000..e3ea742e7c7edd0d0e970ae45c28e464d90fce7e GIT binary patch literal 563 zcmV-30?hr1P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0Uru@FTV-^00FZ}L_t(o!|j;iae_b)g+DX?j~z%VkPf_55KAx>Bv{*QfxRp|WRJ4x3mqg9R!j-VeMK!n`UL+Y!MHE(||E*eNr=C9oS&im5HFBB& z%Zi3r_>{^?MFpusQBhTLi{J*Bt9&>ms+Q4D&0<@Vk5%~UkU0`_EgqeDMDSF#oU&Pp zH&$1cP$7%kc@Q^EJM2_te_On2ovLvxW@?((!IDz0w;JOM!|y`caEF>(4N8+w{>6UY zg#+;2@HyXH$eO-qbmrV9kuaJ^@%*j+v^pU_QO%{-Kj3rO3HI_#@S%@BGHVYXJb%xG zP5TsuaNKtY`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?`XeJfkzEgKWroxlsyxRP*3bOO7PRLHVh5B4-HKdZBWO-EYDbZd43|BdSh)=a+78s?*nvSYh+ zU}C;r_LJ=m#t*JspB8eYAv1UOst3<6w%?Jr``y57dsb_9$Bcwvmpqr0XqTk6}LjodY}Ekti%cR>yn?%_pxT%nIX%f*6>cC^FE{avej=wKQ5T|;QOML@*NQhbFNQ4 z%Ovl}R%N=6&8<;SS2<+gW__moeV>+2J8AoU%F7emC4b5vbQIsgZ7L84igiy{KbLh* G2~7Z_uj}Ff literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/generic1_over.png b/htdocs/theme/md_dev/img/menus/generic1_over.png new file mode 100644 index 0000000000000000000000000000000000000000..adfa8c1599b9c2b74e15d0b86e5cba6dfbe8587a GIT binary patch literal 486 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?if!v#l>^8Umr0u{387!;VsMgq7~=$b(UP6Ti&X<-Ic9C+F;Y{zHhH(ZWm89 z3enS95<2PAi4Rh%W-jU7DjcHrP2JRVZR673pv%RM+l|9#&F@dre(}3~uc2+(y|q>o zSN=@hJ%Ks=`L^vZfBl~OUQ71gLp0RRbAQf+%&Ag!oIW1&b8c-9S29YA>}TFO(=_0c za_q<6wLg6p+6d2FexA>UH^(@QHU6@+edKJh%=KRtd(-Qty!`N==O6Q5>Ds50%W@q- OG34p$=d#Wzp$PyNUC@aD literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/generic2.png b/htdocs/theme/md_dev/img/menus/generic2.png new file mode 100644 index 0000000000000000000000000000000000000000..f4dfc5f360a87341fd9e6a59f10bc733c68028ee GIT binary patch literal 570 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?&`c`6eW&h%Oob=M$&=N7_nyQF`MYFDKH7{u|d1teJeDHOzV1N9zqM z4n`>NXMA%dQ{Ijt+067mm&j|Ef2Y5-*|JPJP<7%+vEws?slG9?#~Vd9FdWgDWXE>t zz{GsL>?hkBj2~RNJ}u-(LuT&mRS%wDY`-IK_q&1F_N>WTt$*DX8t25R&EpBcJeij|| z+0P6F^*;N7S&0+s*Cjuj?_K+O=Y2-;WvkzWeq1o^!S_WgPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0UbDk&Ws2E00E>)L_t(o!|j>dO~Wu0hQ9z(ctC0e0}#XjWCOYZY*5&s8_*398)SsC zLD?YPpnV2J5lH2JcsZ3Kgo>RwH|irDwY3`iv;F(G>jol1TVsP3hlj5#wo0nE3&i?< zs@W*`o@S&O1093sCcqpRYp2G!J0~JG*%OgOMCRf)QV|)5NY{oZu&~Mm=$9?%k4V-H`#&hw(Pdav@NjFJB>LX}>qKPkgMI`gT3 mU;4Tz(s%A_P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0UsIsk^a;G00Fv5L_t(o!|jQgSZP0byDzW z=znlk2M2#a9qg*8pt#sU1S<#%R*Q?Z9tY2GDPnWm+qP#`_J%zKlE8Y%#B)LBFqKVQ9mjzb zumHp?l0F8~z>#k*Yvi|pGvL(MmQ=)mX>FUT;OEhY+#f#sfCD|vDw~LyU{geHL}Xh; zVuoXaVnsyKI*-v9Q_X+thFwx*ffL{yxCIJTNM%GZ3CsgM+FrE1VM}FBhZHGa+ohHT z4bE@9z_8W_6y+B9Gz*&f|7_G(pQ+H-%CQ?H^PjEyS6Qm#N2(#RY3j^7**Mv>Q|4P* z^G-HSHcmD!^G@?lHcmESkbkaY=ATSE2DxY*1SWv)5Q*Ob7pAN1Rq>#f;P;}bABb2W zoY$4j0v|yJdNsZVMu9FZBUHY#F9L7A@}-u^J@=I9$hR5!AHhKvxC=E9UH||907*qo IM6N<$f;5xuNdN!< literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/generic3_over.png b/htdocs/theme/md_dev/img/menus/generic3_over.png new file mode 100644 index 0000000000000000000000000000000000000000..0672d20bce4bb1776f71dc8038e32a8382f5ae87 GIT binary patch literal 486 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?5iL3@)IZ1~;#a?Jzp;5@B{K!=^C8I!mt3EpOG_?#fmmZLn!}-?!H?w~Hql zh3M%l37z!m#0RNWGne#k6%JARrfzDwwsC21(B)#s?Z)A==JzLQzxdt0*U+}?-dd}P zD}Sc$p1>UbeB1VyzkbhsuO)l$AsTAuxj$z@=2WRVP9Kl?Ik&clD;cFl_A_stX&P`z zIrd}k+MhlPZG>koKhI~wn`4~D8h=^ZK618L=K8OSz3FvRUViw`^N;zjbnVm0Wx0-^ O81i)Wb6Mw<&;$S`U(e_O literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/generic4.png b/htdocs/theme/md_dev/img/menus/generic4.png new file mode 100644 index 0000000000000000000000000000000000000000..5f9240240da3f037ca1918367f6b6489b972c260 GIT binary patch literal 570 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?&`c`6eW&h%Oob=M$&=N7_nyQF`MYFDKH7{u|d1teJeDHOzV1N9zqM z4n`>NXMA%dQ{Ijt+067mm&j|Ef2Y5-*|JPJP<7%+vEws?slG9?#~Vd9FdWgDWXE>t zz{GsL>?hkBj2~RNJ}u-(LuT&mRS%wDY`-IK_q&1F_N>WTt$*DX8t25R&EpBcJeij|| z+0P6F^*;N7S&0+s*Cjuj?_K+O=Y2-;WvkzWeq1o^!S_WgY`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?5iL3@)IZ1~;#a?Jzp;5@B{K!=^C8I!mt3EpOG_?#fmmZLn!}-?!H?w~Hql zh3M%l37z!m#0RNWGne#k6%JARrfzDwwsC21(B)#s?Z)A==JzLQzxdt0*U+}?-dd}P zD}Sc$p1>UbeB1VyzkbhsuO)l$AsTAuxj$z@=2WRVP9Kl?Ik&clD;cFl_A_stX&P`z zIrd}k+MhlPZG>koKhI~wn`4~D8h=^ZK618L=K8OSz3FvRUViw`^N;zjbnVm0Wx0-^ O81i)Wb6Mw<&;$Tu*w1GG literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/globe.png b/htdocs/theme/md_dev/img/menus/globe.png new file mode 100644 index 0000000000000000000000000000000000000000..8c2380eda131f90b77a1f3792b2afbbcabb5b7b4 GIT binary patch literal 1175 zcmV;I1Zew-P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0Us!>PyX%z00b9FL_t(o!|j;yYnD|M$3LsKGI3kILmJ!LG-)f%wxU*A)T$p6L@+Rl zAQJ?CRj@yxs2}_#5Q>b*h>FOc5<<$Xbg-bdtmz!)RyGo9&D7~MeBXhmU%n3>@1Ez` zv-hRx;5~4;&pr2^bH2~_J@?-8yj5n#T$SsX!%_iX0bc>1EcL(^V8j1_Bl5j=MpkB) zrFEIvh+UR(Gux8Ub~?X{>G-N3KFxY}-@9~c1+B=}jR)*+u= zKpoHxJO+FSv;&XJUq?C2*Q+5WJ`h72)UpU-ayscZvlcVkZf36paT7770q--jVKZAF z%(X~g$j~seeHqq;aq7+NJ;=A3U#ctxo&}x;nw;;In%m{pey^8H1iuY< z#*HWR#&-c9rGWSa=oLdhIDM}`H92ycfKK4#4xI@F+=i|VK0WOspyj<|b1n|YAqjFA(Xa3z_?hW7=@UnJ(DYB^y z`_I+dfUQp754;_M|IJ+{K5Yhd?ay}FOsH=R?0=7Aegwz`yLuS-<0|F+A$RI{`=L1S zhk<2od?&C^zsNXn(=37?1SkIIx*pvu_~ zByCvqxwp!VSE$PDPS|uORi=)qC@bjM%U<9{pcYuD)|>+Tq_P0uq2O2RP6I!v`k_JN zC3^lx)ndCg%yIQu7#$1zM{)Rzo%TFm7NMjy3->;O33~Lmy2+Y?NomUD>C%Kq)XMn%; ztDMlO7L_COfu|hflltf(3wV?kmjw1t=kx+lt&5{NW7-sB*4?a>S*&WdPq~g_^eRQ8 zJiideuG$1m-z*&bdC4V>*5tWD_TYBCA&UKLq?Ma;o)Aso-mY`&{r* zy#V@1IF%M4##e)gr~`hMeOqvv^(juO%%m`DQ}EI7E51y5(0wUQ>X*pm|5~Xk^V$c; p^#aT#@Rk4PE8r{OE8wqT`470EiOhy-AhiGh002ovPDHLkV1kzDC9MDe literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/globe_over.png b/htdocs/theme/md_dev/img/menus/globe_over.png new file mode 100644 index 0000000000000000000000000000000000000000..fd1e54f4754189e57bbdb7ff41d7c8e7f2618ff4 GIT binary patch literal 844 zcmV-S1GD^zP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0Us+gMz2%=00PWOL_t(o!|hnnaoaEqea`jY+92u#(FBdUfj6kSfksd#s5hwE3DgOq zPEh*4cU3o#CqRE5TNp=DvSY_dPPoIJMVjCv2tasRi3nb*+~5Vv0)7F%fR9TCpaxJ~ z0Ef4|Ick-N%+XRr2Kg_eh}1LJPT9?A&r8p-$@On$oUa7%V8%KCzW|KX4uAtN0O%uj za%w@FC4e=69{}C~_y*t(z&-61kMVp)1wGNyLlt$7fS#NZCnC2ZvK5iW>>I_H0`3?p zm6^*;2%Q7G-6x~7B(VP^_|_Qj0{the zo^JtsP|tf+As!NWzvIn}rrPx8HvI3BHrEk*p8zymf3L>hAJ{iZVx{3+C#T8Wgbn2b zro6Ag*8w9LLrI<(yfCB?sBHhr=Z#4?E#Dai<&|2Ojd~#>gfj)cS5@O0QWzX|`~bX7 z9(QH%nJTZ7;Ge6Ev5D1dA>d-PR52$f>SNY7Di`&57XrVF9I(G~xD=6GJOJ+^CCOb0 zd^b@A55RYkI@_~NcuLu^3Cj%leG2>^^?b)ZWDFea(y~iX7qE-5k#ct|6>?t5%9`Tz|0VqdSndG>0$M^e#)x?8 zS}S8bSL|mzV@o`!P|0000P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0U7}1jiONi00X{BL_t(o!|j+$ZyZGwg}*xw;#Y72!E$(t@DPs(P%Hyd#0nPd$Oa@N z7D$LCEB*sN0g3+rDG>Vy6cTmrrW&I8{@#Kus3 zP13lek0o8w!R04OpGtZ|($p}(zbNT^4v@r}Ez8y?lDe6?i;~`zbYxH*m3`u0^K$=| z;pst-JpKwt)^Xm1C@|0Xzsy zmkK^2I>4$GNj0;~72s*$xQ&?xUI%^z{si8#u|2J4NaHflDtqShjJX9Y01Gzes15oM z_yJf1E&{VQt_E!R{e<;*pn1>if|AZjn(I@4zc;tu_p!1Ac2MABK-*d*iDLpulY5!@ zN{PV3Zqw?4E0E@Y&2=2uiHMz{`ur|Ccw#Mzmjt-EpU!Io%;0#cU6P_U0bQUI5k$(kZRM!ez@^QPx=G_864}1hXYu`;AfOTL6_zL)}pzr6L ze65!Oevp9u9{AOq-0`ee{G0*i`uO_{(C*__rO*5Y;41KPPFfp4RZ`U}GVK`HO1YQH zVuM}5M?@m&GO+9|Kh4kKKHhQJtXFE$dCW3!=dOXb{OlE&&j80qybs*hB+!&}0eA}d zrL17x3-}v8x@{J@j^7*3D9@Uu7J)HIofNeuUeN=)(?G{SN%O!t;K`h=Ju-QD%WPEh znYHV(HQ+Dc4^Kn`xDgTEQou`k#>;;icmg<*nf1K)qBCn^&cE&FE$fDjS&oR+1A#Yl zoHVbW@>RxEpA(WYbw%Ig7~A#UvF=-iHM?j7xE>MBfxtVFn)3CGzO_9Z_W2NC0`XBf+ zz@xT&t3-hP%2w@06W-0Y9TN?^R=bEQubLftXUptuSJlrljcNO=yOLtFPD)h-e#J~M zkvjEPQaMoXyW;v<%E;b#HDzQa^mN>&)+5V$nkd~Esj$|Yw8Og!rUk|JSbi{;{RR91007*qoM6N<$ Ef)z6M7XSbN literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/home.png b/htdocs/theme/md_dev/img/menus/home.png new file mode 100644 index 0000000000000000000000000000000000000000..2c174340c7696473d43c94ba34399b19fbd6fbac GIT binary patch literal 679 zcmV;Y0$BZtP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0Us_zEL+C^P<)SlA#NHW(?Tq}f1A!op@03ws+IrLZDduriUbQWEKT^Sd^`sn=`X{Qk`E{@(9tPThL<_s+TZ z`%dScbMEgAg%Av?tT4c`3|~;TVXTUURu5Q>cP z5JIxRSj=WJgfQE~E=j*vW)$^&g1qAl>sq`g| z#mMvXVH0!g!?jp3->#vMox%$|sVZ#t;|g}vREdA$G~O=-el4bOvJb7qR~%1&NMZO1 zT)>(>_Fu2kY?d2-Gp=H9LmJ4(xSj|82+m@(VIA-}yw1utQ&_cxViQY}JgM?Cwl@g+ z1D@kenQXHw?OE!Shj>s$kqUhXp}DFmY|;n#q$>Ds&ws+N9ClkVl74=dp*z}fX{prn z-S9JumFy0=+|f$h$k5%1OLcfYZ!^>`5N_RjM2q<(0(_}G{(H}tg`Zmje5IammxON@ zfNw8{O~zq5j6XT-Ha79VZYWSG8*yM;;!5`(1J&Ckb!D4ap06d_#DcG-NYw#fndiR` zvgcd)f=x9Z*l&4^^1kjHPA?0?CE>FA|B;T%$nW&RQyF|CWuX6u{Ri8ndcY`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?bhi@pN$vi8%ar z=KH`F1A(LWEo-Lp?crO{?9F+-u|z?2j;IHFP?Kzj=nB~*d@mCIKDc+bck*Q37Vk%I zW+(nIW~pmA`%E{dgJb6_Hc9V?wp&>P+IIvztgPc*P%LBKw2ikx%;D(o_?ny>u&iC-!-Gk(L|Q0q~l{C1+lD|Pk_ z2}T;7D;8U9s;O6(X4(AMqtNunq5PeJTCbLV(EPH^`;q+uMP(xP`NGM6SU$Yi za*jLa!z?QgosH8PH-?<)IT-ljbwBfe--P8rmD>;PDz^CiHMq6y;Uic3T8%x2wEx(j z{5;ovoPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0UtEEPNJaz00K@)L_t(o!|mA5i_K9O$MM%N*`SmSjSwXpjr>@kZ2Z`bmE=dHNt03% z3pO?=Wurv-ogYc5`2%E#g;GkBvN4T8CX&%aGjs2Zac!Pk-@eVApWl0H^nL1d`#$HK z=e+Ovp7VL0d+SQ2lIdzQOk>O8bNC!ShtJ{1wEA(5TNi;H$7i`U;yJcW0{kfMVSXZBGJdA; zMZCpc^u%)!vtsv7VeU9$HJ}wOi5Nw^L{s89Q}_Y~@j7<;arnw@C$3?|C~=zb083JH zFX14%6TYgz!*86x1^h@XxEQywD>Z)(&f{dHJ`Y{=T@l>0B_g zf^T?~wF+5FCBQ9#{K^*zCx03JyA`{OPgi<~hWnL4@i zs;xG=u^Jyn054ll3cPGzBC+*`_BYg0DmP*kx^QKZbxk)eN8DyCtOa}{w%`+PPO;kj z8nRi8BeQYKec=?6%1jZ#+d zy-`Hf(#AZJb@^Z1IeZSE!{_ihd=8((|3~ou0IMM4$}o!v+5i9m07*qoM6N<$g1l~1 AHvj+t literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/mail_over.png b/htdocs/theme/md_dev/img/menus/mail_over.png new file mode 100644 index 0000000000000000000000000000000000000000..f9de32d30029fe43864afaeb341ca2204ee30d83 GIT binary patch literal 534 zcmV+x0_pvUP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0UtLYNAnv100EXsL_t(o!|j;eQNlnJg+CnM!3v}Uw*x~3+JUhG=|HGJtw5|mtiVu# zp@Y~#sNnkG%}i#^l9(*vXZFnO19x}WFXW!H2?G(~Sarq`E5HZ%03YB3e67wKt{dy< zQz?-9fRBO4p5Z4z5_Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0UtVE_K&6j00WdsL_t(o!|j<%Yza`1nI6+8X-c2qR}AK>o!$Q>k(QUoBt$}=FXfmGi{`CzvRo@oAW>C z{LeSvYi3f$7zV2hVGv7}e3pEc{J)Xu!0Le}zZy6L+>~AccEuz-1~>?G0zy&-xM zc&Ds0(}L|4X0z5l4ScrXO_EgEB!3Um%ffB9;QYEtbGm`Y7VNVm0ec514Hw$2i!CxW*64qcjI zyc5_1wDd=N&19l!T+Y*pDKpJ?havoG+AF6}& z`kSSey;p^icX6AQ4nABj;^hk9AlxF~!A?7@TLp}ZOMa|+i=P&~DEwLntXH7gb!Z#D zIxhJY4%WE^d;&_;=GyQxd>!Q#2Yh8*pI_=we6H%cAwr?50iFXLz8s>K(- z08fRjj8I)YE$h>{hGB>5NiCAw^jKPDfQi7!7?vNYxoLHeODy>D>Y=RUCpeI4*0mx* zM_D2AY2C@Z5Nv^~<#Qbfz45&;ic8+_3a^w#gXFg>`9JctAo-*MGFq9YH^GZ1PtuAr zLO3~*?*=}o@MMw>U5j;yBr;ihy$yMyYRU9Cm=p3w;Ib?+D}zPabuCI@^}ZJEd$&I; zjlNMA8o9!@N^=#&Mba*xANC|9Z+v9y^t;VvVk+S`sbRn}rPVmn4%`F2#hIMyrw?j{ z$`liIAe*FtmkRvYk{W=ofhB6CN2m~a?<#+ZY)5}>l*)d}%##1l$o~Z`gD literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/members_over.png b/htdocs/theme/md_dev/img/menus/members_over.png new file mode 100644 index 0000000000000000000000000000000000000000..8c77498c304af9150165b348fc08498d7aa3f11c GIT binary patch literal 720 zcmV;>0x$iEP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0U!alBTT*k00K}+L_t(o!|hqoP3$lb91#DP4lotq4#=y3&_POo4z7eN!E|6MczGS< zRe#KznZREdU2# zkjDe)3jsF(jsPYAuK@l6h?19kkr*TMG%-dWmt&MMY(5)f3~@dBTpo5YAM>GkfiZH? zuH|85(*w9Cb!(G3enDQ1{EdlIt!!A%C=e=qlu6-ziFWe*c>j_9(VxH3;&zhc~P+Kleve5A~9`c z4=hp6EXn#@T61;YZDkJz0#HW)n&n`&um=qAmR!gZFY1+@+tq@1ibYxlo95j1K)Zlf zHYkReQz`hPf_0-Pl^XV^Qt&~+x+}B?%x-mB@J#9RNwd+0QJfQ}ZBiZ4Y+Q2r(8gop zZQe3tJ8hF16j}@g%!g$DNl}U^=I_WBZvk8vFn^s~8yzv;vaZr9{7GNoDCfB&;am+1 zzESx6ZX-K9XeXC`G5asB&lE}~y%Hi}e-rRQ0IuDhSb4GRuQC7p)wx&$Zvi|k`1El@ z@N2vK1mH%_M)*A7ia3;B&Oj?*?N^C5h!MaamHrjq7fZfjGB&}Ku3rm2wGvM8`NQWf z8q9NXhF=3)c}!B9N2yLjNl9FabAaD}*4e@TPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0U!j&Nw_fp00e7EL_t(o!|j<{OdVAehQF#6Ewu=g(gKB2FtyeeY?Z3D(Kd=kZS=v$ zq(*%(A@Ri+qi;U=V4_hIH9mNWK6r^q^~snfjUWZ@)?PHV7ZKZv(n2XHSZJXp`0`CM z8Rr~^!^x=_R`@-yUT$j^}ff0Mr;gE95M zrS{wY%jA~;cjM6wyqRnA-M}f} zeqdjQ#J_TU*||`gHlPXU0M-DTY!{`$IS%XwKDOPYH|3iA8^D#o2f$W|1-3c{qr|>ZQfg#hSv|y zxgF@4Oypk!9tW;BcS|SnCVPQ*o%~_oDX*8h>#oXBwO);TBXQ)n0w+wLeZW%STHCom zHINSs14jfs418m|5_rBI0=UfUCqobLtHm3@0$_e<{P)1yF4|pIqGMSgU!P>b zt^)oBUXav!U^!43D%NTvV>*F@z~@H&QComNfjL^ib4~;0~9Nl8=Z7> zCjp zbrSMjs?BmWw%zMBz(tXodbI%z#_R?TO%(ZC zmAX*&qA?Rya~zwrQ)>s5CuL!fpQsF5}Z)` z2bI=qLduY@+B5?%8*iB_l`Vq_KP)?CgSr{u@$P!DDY`C@~Nb<#YyATr90Fw0WJ*v9&?91q(Zca_pNy4 zk$d}M@S~XBF4j8n(xy#`^48{I(h?P>STBkB5b0NOjvC>{P)Sf?&A!cV<7F<$;xsi+ zu$X@mr!lU?h>Lu!>M&-W9Z+{CvLdy;HgxpS6T$1$1H8FPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0U!n`N7)?!00S&ZL_t(o!|hqUj?+L8{(`7zE)8`o(Zlip=#~~ygo@${jD#p5qC{7O z8X<)zz`TKZ0`^KOj6{EXZ{RDS9hz^Y(Q52CIVW%^Bdy}wpSj7*H}j1*6A{66l^eLm zaxng2{K5Ex@dxAoZ{u%namE3d@;Us=#uotQ91g%y$G$TFHAmc=^&(=8LPToWPAUCii>+;CxK|`}BNd$j6W``>yi^fVU&) zy#(-K-^ND(zX3c1@MBAzX8=5aJAb28wj$#A>{ng+B~+Vbz3>pD+bWxP{oww2b3f@S<^ z7QS*__*A5V`e%>07G)f%hx9fzfF+alSj}IkUZr90l9F_mmC9ED-Z0r^XN+xlF@4J^ zL%zxq*pi0(9HZ2zQrYgx^Oo`NRp?h4WE?S_hRc$2rHnn{{L2vxZ>{QOb(OyWJm>Rk zHfoV@nzJsaF;_1j=iCnfPXOHJ^DO}P38!%xy8|{QVY3(j84VqMPQ%9Ug0U@z{RZF@ zy}DF=x#zp9%X*=xn9(y5#{k|b#{LT6Gxe=w?2t8z-HhGAu)#>ixxuoY^LbKNoZpnO zryY!4i^$`lB;~TYJye292qVAC>m3x>7GKCQ;A;h9KiEC`>jBQ5pS{Pa8@hQQ{9DtA#qX4=E9J}Z-rDs87~ekfxX24g=R0-HooRSz^m*5~MY zycCfc&nJD(fMA>H>e3lRIK^LlZWS zLcKxbRBq5V4=KB4-__w{gWqA(?Qp>nv(mPySd87MQoZqw+2O~9eaRn}6|ZO5h}_r! O0000Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0U!yv_{59=00Ev!L_t(o!|j;8O2j}Eg};>uim)oI7NV3+Y6hmtbKuO7nLEIvP3IFJGz4F_9h(^F z0&U>ljg$9JKV$&6NoKPq8Cc8}o zIM%Gu(1}f8(D`}bP*BH-^LMJh&j{@9_8x?Lryie zls~|4Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?vyi!_&nvB;xSf znFn(Z8Hlv)S71A_wY{rn0x!p86XhwKk8%#M88}_#oaOxfB}44OpmQ>3j(RW(Y92f0 zcj~vQ_s$qYlySK3jEyXD4_IMn{gy8R%B*D$&m^87J|d~VcI)eaTl0%% zZ(W`?+hp2vX@#A|CPlY6_8jn@D7BU+fUkJ*q4f<}dE0(6S@9Rv`K)>HVWpyLdCe;&SZ<~pMT_vDM+%6B%1>dgyhd=SdN&*Z>O8S^*M?|;AGTF-Rz*_yQ< zO%Kf1t`W8Pyw*2;r^E}PU4BhU{zDOC{T9D#SI@HE%L`is3`Pb| LS3j3^P6Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0U!=1oKY_T00DkUL_t(o!|j-{PQx$|hQFdp3~amtREUL{r4l>511!7%5(5jcF);8X zs7o1`c>-WSVyKwdkSGgn+{7#%Jfy^&V`^7E$&z)E&tHFCE_dx{tx45ZNZ2xbhR^UB zKEpR!w}lvcz@_l)5%4CyS!?aP23qS@=J$7o9dUKmm`y zgXRA){^;Qgpqk^48eSPlJ;$F!+MEMp%fIE2HdQQXvr+RbnY58uG%swj@G2{xnDPs+ zHlHage+#S%&))l7+{ypjL^_OY182h61G517z_BpS74RZ~?|Hn8o7R5UBTi2WUzsv^ z2MjI$0kHpvN>Z9QH^8gqKQVBka@utOC~8Vt>7b;l>3^y=+vbq)vzo84ZgXH+dgYa= z7X4q~T$ES9VZ)CMqP(={3EI4cgjb;l7S~egdubV>^IU4>eH5F8p0-@zr!6Tz{cre* zhhpE>ehjP&<4mORBagQE-P%6`U&1(}JdDIY`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?> za)F6bQ&g$LQ6-y)ocxaQrmO#8P*E}ucIw4UL@ zw0maqz6|qTRXyZBeKjrG`I6T2Sr4MO@dCB~h=yuqZV&t}=Smy9M_Rmvw+Pkv51FTC%9@2h=n;r!=7PWbV^`MU(K vZP~rUZ*tatzL;p@Rw^gMFOccxby@n*`5Pxp#TQHj`k2Af)z4*}Q$iB}abJjV literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/project.png b/htdocs/theme/md_dev/img/menus/project.png new file mode 100644 index 0000000000000000000000000000000000000000..ae4d177c6cdb769943524b09e643971c1382a7e9 GIT binary patch literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?Ub7z-u>W_#-k-A;#-`jJ6&FK{%K3Q z#!ha}x2wOmPpB^Vf4u+kq;gN~7Kc?)iiwtc4qNXzeBS-7)c0L%eIk|V-5mFs{esv2 z5t*@sXMW{V*?Y@$Qh(g3{KwBT*LK@ z+Jzr@8rgOKY}})(^WpY^ou5?t9-7W;WZicv(=xcKD?ht8Ju7pz*5;o+FE#5dW@fi< z53|#-{b{2$Kj(G|@1gLOHEE6Ojb^vARoi{v7P(~G&s>`uELL5<_KS8X?=$Ls`s-5P orcaBP&dU9xzY*j~>zb8zjLrfDE33{4+y(`{r>mdKI;Vst06z-BXaE2J literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/project_over.png b/htdocs/theme/md_dev/img/menus/project_over.png new file mode 100644 index 0000000000000000000000000000000000000000..d6c28b6d7ee28267dd5792dd34045956a5d8e92b GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?hRC6YJJoDZ6 zhVSOhGu7u~wk91D+Vg-_|HpX^|A^I$Ue0k}yFaLI2*1q{_n}FA&x2si*`Iy2>XY9J z-DtT{D_!@>=MsZ!2fy%Mz0%t@!qyM+PTXgFEfCN9({)R5dCCwzW2Lx|7WwK^G>~3S#8&SM_{>M#6fPLP4Q-bZg5t2 xwW+MmJN9zp+uCTGyN}YOzk*y=ad7_?=9+hBE5&799f5vk@O1TaS?83{1OO9*jYR+e literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/shop.png b/htdocs/theme/md_dev/img/menus/shop.png new file mode 100644 index 0000000000000000000000000000000000000000..fab7db59040300ef6fbcbd91ced1831ac17c4df1 GIT binary patch literal 679 zcmV;Y0$BZtP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0U#NqPt@oD00JjTL_t(o!|j+qXcR#dhrg(YMUL~(O3WES4E{k8L$I_6DHMxXTE)sz zw9&#sYnv2yVqq^>*_~ixAdOKYDx!koAy|lsB;cLrJ)7Uc5xmXpFcUX84<2(f^V`RF zZ|A*TcF4@wthR+sYzaQWC-?-P;1hg;FBAMt;3Hu2C9Tyr5`L)Qi&-6L0>=jIF9K8g zGo^!{1CI91e`u`rt-S=!0Lx`MHdlc$pbablr-2dq5#X`*#-xpJX6E8GGkarZEi;?V z(alQJGP8zbY;SkX{1i|DJ^(jzbXS09z)#>@j;;orlpl(n`P*jp%FL!6v=h=k7_dKW zX7kcy-ZZm=MKkYOuup*%;FM!d9s;|8@ipt?z#aWw0luh4viU{eZODSHst}t6Zs;Rj zb7IZl^1}SKz-o_a9J_m15f^*x-DmKuL>`O zRW#lQRtIRV1NVT*5b)b|>qFQcjjK7DuX=toT!ZGpw*zKAvteK~XTPOdIIQ_=U-(}E zGoM)lxVDa_-KUxHh2IxA^Sg9xg2i0#*o3s5z`KHR59peI4&U>L+bc`vHw=C>LZ`{z z`Ips(qrvwgWWK8LbAety0(|m;51sk0#!i9QU7yTXB4obn@%-?DuSbC2q4B%gri*R$ zf$v6u&upnc?5Zz(=riB(h~4plH{f@qK3^nuFXVTdQd#=Yn&AI8_&;Knr+6#HVN?JB N002ovPDHLkV1jidGt>Y8 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/shop_over.png b/htdocs/theme/md_dev/img/menus/shop_over.png new file mode 100644 index 0000000000000000000000000000000000000000..bda5823f8c36729b82f6d310cb6c7e1991821c95 GIT binary patch literal 502 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?KUgF*5nBSUrfJ647TSD_CPA~Hl93@QO7rOaQWMF5NQi<;J zWB;!@zql;t9hcIf$hAj0eIJU(K~Zs2K0^h=k>m&2&pdu8Z89`wuwwXn=C40P-`taY z`{p;)e|-JaUPeRNc_|-*{Lk424C@%~{fs+%>u+y|%3*W=NXpY`l(g1;NlE@{uS%m58sx(w#iYncjbx5mfo8T o`CsRpzsU91Jm8_|Kbvp7A39FBd9tU?21W{lr>mdKI;Vst04SH#jQ{`u literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menus/tools.png b/htdocs/theme/md_dev/img/menus/tools.png new file mode 100644 index 0000000000000000000000000000000000000000..de7f2b7b22164a355844cc2f6c6b738d1e88e4ba GIT binary patch literal 1052 zcmV+%1mpXOP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0U#SnLAAsH00W#!L_t(o!|mBwXq{CM2k>8tu}R#bm1?B1iYq9R7eNXZL0bhE>YE!_ zX%$gis4t4z7eNK9_#i5%wD_hz6hssaic76l5EB$ptV`WWX;Pz6X>N?imkAuc-tCL` zW`PV0_xt9|%=bUb%$aj;M@q>;r6m?HErMSJzX*O2{QLxe3f5y_K7c>0gzl5LD|;Wt zMHp*fH-O%F9>Y+}(5IA|<#p*$8cHek7W8^kN_VG}-c8kMETy!qid|{$C|Mq?$JTT z$5~DKeg`jx|E9qog%@yU$x+>mSL?Jtgezx|6bH(z`EhKBEHF`pM{CIM#}#!twzi{m}w&F_XE@ zR=hcrY||{A8bR2T$$p5AEw9oBPem4~M$>uzCG2YS@s1YU+pLUW?7`o-H=Z|F0sbuB zYgI+u(S}Q>9y}f!T~0gj{9GMI>QR5>?`|xMSju9z#yWdXd>K<`WZ81?&j95xP# zxhNgPj=K~4+ZC`EpwFyn$UM>iv;cgYU!TP3Rqn(^YY1mW6%ZfxTJb zbwRZ4saFQiblEJgadgY+H@sD2NsUIQ)}k|HgPHCWR+S0jGT{Gd0Ddy6z{v))@_Ag9 z>@Re3yote?G5CErqYm&L4S?q$D>x?j_pCy#L~+-0@FP*~_E!PEGY%ik(B9Z(JFz;J zQ%~#}Q?cgTRvz?c9hk(|C4lGGAFHyppP#0N+6lf@)EU9qlg;etT-WonMhp6Ho&Nxd WZ(6pU8BH(%0000Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0U#baD?v*D00KfuL_t(o!|j>jQS2ZP$N%2=T{`eOcy!>Ea3!PzQ$k9xgNGfY1YQTR zgV;f=VEwY0VURso5m80H)pOiKw)l>8njdWTJ6~hI1@M@e*L3CAmRiws!Msyq?m|Q_wYzZ0Bxk9WB(Ud|ehvB_IFIHk z5fHrUcx5`Fzh>pbHVe66HP4Yg7=wrQ+}B@7K<$=~!n3A5;3cI<(H6SHrIkICf%vGg^*E z%?=C&>LQt~h1bemN7xa3@yQKG3-xwgW` z4lJAxHQ>#w$`UhNt2{*guUwU0e$O5h9_DK`s9n)bM_fL;PU_xKAAIqlAgkCb6rIf*SBsA^0TR2BaMD{MPM)&&C$;!v=840V5pln@eSE9|f04 z6JHwwz`tnh+){1)M(`N&DN>rAf4;X;8@I!Ki-|(VM+cFiWqHu?7y24`%czgLc1f&x oOP_;lMV|@HFLq7%|NGxMpPMEXG=2^^yZ`_I07*qoM6N<$g6e)Wq5uE@ literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/menutab-r.png b/htdocs/theme/md_dev/img/menutab-r.png new file mode 100644 index 0000000000000000000000000000000000000000..95c2324b6125c5da3759c9af2eeb4c5fb2dbabb6 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^tUzqZ!2%>h?rH7-QoWuojv*Sst^Ei24jXVBmAUoU zu0lROfqlUeuT@`DBI{Nh++V}sP|y-sAtJ@TX=`>u?Zd?7VM>BMf_2HM!YZ$1Y|_%t zvm|n`6)yg;O)`UR)0R(J!iiT{kAK+Em(V~Y zFW9$G#BJ{_AWy{8#W6(Vd~$*W>*9nN&Hw-ZH)mkrNnoy9d%$fWP@cil)z4*}Q$iB} DE>j%l literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/nav-overlay3.png b/htdocs/theme/md_dev/img/nav-overlay3.png new file mode 100644 index 0000000000000000000000000000000000000000..3d73145dab7eab4a524f451f15cb7a3ae66cc5cb GIT binary patch literal 1780 zcmV(^SUHijfy!O3FGgDPvGwS)`UA>)r=hL&*(~?{K ze|sG5c6;U3*n0k6tDg7lQCB_hU4Qoc??&7$jnhjxdnu2qJOiii#$M-LKl^81wO8>i zWE6j!{4+rQM7_>-blcG*zx?|3ch4_58ga1X<##<7jlM0iF0NUZ`g}zB=e6p2n|~PoR!9-IH0DWIBPir8;_>$6~;OEWPv%)LyFh0ZaT!KcR ztVrHx7|F=ws+oLe)|Vo_#V7j|d6hCLyYM>8B6bZjp^m^hpJDy5oy9l=d6@?^B3~ot zzhAoWdgX1;GQP`Kp&qTpKemvm7*ozd@^hpko;{QvGl?q>_sz{RW^GYG2W7A5TEolB zGX!I}&cHhhawnQIzK)FY7JpkawhD}DJn?1QvwJZUD`tz{3_H$kADxb6XCB4syv$3` z=mK~~+1w3juVkOpl-J@fBMfI|Cvh{Cb7fmqCdKSE&a5V}&gIoiZ2gMPy&OAX><9E~ z&?!+y7RS|TyBDuLXuiA8_fHalc{7!3lx-OWU0ksj{a!N<+uwJL;}(x?n@qA;j$>kd zP?iQ{N#BD?+zQ}1#c_4=p7|KSXoCZl&RhIJ1~a#J77L-0Qd|mM3)b_1jwRTZjx9eE zhhSfHF78Re+`QZit`2BKYDUw`OWuBvgI~A!XaHt@*%r@bPO*0uP86(+49mdw9ED?C zuGj56z8^jp&tuHw_y|cX(7pw5>|NTc;XV1f#Rn>Q>&}My6?8(dG_5gav0=O5^;}m05Y2-6FOU&{=cYiDmN^zYl`z(pZGzQCI9`++O37VNnT|n{D%M5z?_8X~&wy zcyuiyG3V!Hbq{yOLrxeunM*GvIk)%?MqOsHm-ncA_CpL=uwtp@-^{~pl2YCz77ldaqR-+UOo`UIAR4wynzMEqEMXbVRBM-?BjG4Gj2RUBU_4GQkK@&VWF zfw2q4N{m;{%kw?kzH`veZr$QX0kjNQ9p_=^utkRq zW{)+#v1`q|JYTRTf&BQ#oA~m&J+!+k$TeY|%cd^as_(W%W!n{~y><~gl8%CXlm|B# zJN8(sF!rBcrUHFWYTrNDuFJ|p`|e7_p?8-IyBoF`N|}$pm`5^;+3~L%NoO4LBd9Uv zryp# z9V~N2bVGbGbRXi)#CDaZMa|Fax;+2`@o&0rHDbaXlKld@T}&N=(PfRwzY>hUuHJ>u z!dH*@?%6iy@fRcDRWsFYSvjcNdpycxv0Pke7QWkY{^VQloNXPjU8kAq%5%QxuM-Aa zv-_lB6yLuoDhuBlslY$`1J2@BhwYV{sr-S~HDv{1+aZd-T~ILAD12+kJ_H=dWf+uf85Ct1 zlx-Q6ZJAu`6qM`)B$KP1vVo|@3y6w)ysD=JWfuok&k1S)qNP#U)lopQXKmD!t;s!0 zlc(%Wo&!Y3vRitxdzNM|JyzV(Q@r$Cbx%)q&z$NxTdUWetKNF8rKhK*XHLu7V=Y_H z^-P)5vvh0E-fL5~9-A{~>72D&=j=VVbnmsL$L_5?c5drl5IA=2-Z>z+cJ17~=jZOd zKll9owdc>TJ%4`>2%dw$dm#7@0sp`M2Z2*xR!RW9=2{Zu7Yr7lkYL#KZleXzz!{z{ zjv*YfvIn!dn+zlxE?)16xpwI4iNMX>Q?Bf~7&>7e%lZHReN&%v*w6nJ6xzxsu67ZL75RDl?r8`M+e9_S~n!jI;hOSU<@^F87_nmRX^O+GX3# aKd^58Ea#$BXqpCeBZH@_pUXO@geCy>!9cG7 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_account.png b/htdocs/theme/md_dev/img/object_account.png new file mode 100644 index 0000000000000000000000000000000000000000..46be8b6fe0f6c733bc1130255b140d9d0da85c9f GIT binary patch literal 453 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC^h#VKN}P*Q6H7Al^Atidb5j|L z6La+x3{4gClS}jzj0_A+6%5U+j0~(yOck^Z3=IsDBr}!)b+VUu`ns~;Nn{1`s{?#OT>t<7f9=|}y&!Px z+_`ht?%jL-{Q3L$@3(H*1p>+0*~Qh>Ej>L`jvYI;cI{eCO-(N^uQ_w(0ELQ+ zi-UrKs;jFN6%_>p1h#J7yL9Q&o}QkTmX_@7Yz_{NIdhgynKEa}lqq|U9b39|?Y(>V zzJLF2X=!O_XgG=U)C!<87)yfuf*Bm1-ADs++B{txLpZMIo;xXYNI`%lV8$YW4pr}z z$qlnOe*KTnm>}~uc>iG^Qzv%=JFbaB63r%mKDHcqHzjm=T{VNkl1rs8uWSptr7!lvI6;>1s;*b z3=DjSL74G){)!Z!ppU1EV~B-+@(+Kdgca-8w;OdbEAY;!dSiR;fM5s*+lJc?4$OOV zDzq0fxwDu!M5tsO$Zx*nCU4P{#qe6i^{~OlMh}Kd3}$mPKK!?5_?j)8|83)j^+0nO NJYD@<);T3K0RT{uGx`7k literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_action.png b/htdocs/theme/md_dev/img/object_action.png new file mode 100644 index 0000000000000000000000000000000000000000..0b02fada4147e31e71f53a800b91839be9b66f07 GIT binary patch literal 528 zcmV+r0`L8aP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0t*4d6%UR800EFmL_t(2&vlY9Ya2ljh2PtCV<`mOL`bA?qb?w6Riz&Upa;0sAe5=n*-UIT!&_E&ip6C6#a(+duV!yRMHcap6VkOY$35qu~$ z04Qm>Ua#M5kvy%6@E9gOwcIl@Et01OKpKIn=r0^y@r+3g$$e}NjYgw;053?^LI|%U zjbnm+vq?b`A%wSs!C*Vq_D^g{x+0l8v65u1&0~`w3D(-`{gnZbm2kz8)y9--g~^Ph zb4klM2H}4NKaOfC>D<=q_212A^9O+AQvAHb)%gNA@!ntC#bSZgYIW0Yw`TzMNWR?A zEXFT)l4aRNQ53MwIn3vC)M~YxMx*fwz^x<$U^kk5lk`E-nfLy>C<^p?J^TU2f!<4^ S*#w3F0000F|9LJxA`chUVP#pRLyAa``m$i}>$=qQ#-KjNs8q}Q3A)$sM8mYr5RL;R- zy2MbSbDfLy>@>%Lm0~E6$7=Xi%7*?xQ*@Y6aE`CH@cn&%pYQkj`#qf)A5FC%Z3h6P z%40>ucV}bZA@02|zy9Q_Nk^j+SR=>(a9)_WJXHb!0+0tl0zd~)0#F75mjMJ5LIVmi z6bvZJP()BvplHI3A_$@&n1Uz@q9KT;khO)JD&#aF?~0-+O0FnjQO239mB~37$<1&^ zUPj^aGpe7>=d-etMQ&E{vOH=*4&j_0zZL`7SSB6IaK3~M>LY?F4b|U<47loVG{#~h8GzmHf`5* zsmXyPmLFN%X=2-s?GhV%wjbC&v3V0R2U91YPMEkJb-mE#5Hak9IEXNfaG2nTd12y3 z%#RYEd(46;31UW~m_&?lNEnS18Z(-(FlJ%GA}+>a#umFTzG_@$4vkNOkzYHrjWBa* zvN(fjvpKxMs~6>BVG7pOY0%tV zsZ>h0T48N_@SyYG!`fu6Wq;1^_&b1B_1)_Hop@_`d2jE>@8YpsYwOj0=XSdH!QfJA z^V@9ge*Y?H9y(hexw4S1pYMNr=0kaB<6Zr;xl;JF{v}->M%Q*~RqCu1KCV~OLw%=C x_ib0J&sH9#CqzeojoGi`1S>%rfK)EztT$84s{0EqyHfsO? literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_address.png b/htdocs/theme/md_dev/img/object_address.png new file mode 100644 index 0000000000000000000000000000000000000000..201577281f048ad530a5ffc90ae5ddcde1ea09cb GIT binary patch literal 358 zcmV-s0h#`ZP)L0Z}plWdk}vvjJrS(g|RMG6Aqb7$A{1XxV@ckc4-Yja>Hv5+YJ0 z`@Zk)|9@v@%2$@0LdF-ORexYj_a=L>JU3B;5xtXV9(=v z7=~AQoFqwQjCqhVOm0FZM+J(aXn1%{@;#lN!cJf-ut%_WFfVNuGZ zE9D-K?ne(ih?E>DjohI=hq~2#Q6&T{Dmml)MoX617w|ux5f5W7c>n+a07*qoM6N<$ Ef*ux?eE>P;keeKdY=e91rcWmqP z=g+rpU3+Zr-ebp(tzEnJ{rmSzmoA+$WlB#^&)%(Di;Ihslar^^$XftyWGo5t3ubV5 zb|VeQN%3@X4B@!$d;Bz0lY#*2g^yX+9?VtodgJ=)|NoS3CY#;LN(>AhY@xlUXKjl* z%AR>${Qk<7y#4CsR|Vd0ee!14r2`)MOO@GwX_{Mn%G!SC;>FpqMRy&Ht^eQNc6Z_X f{^jwrot|)q-(z*oKW`Waw2#5l)z4*}Q$iB}Jj;&> literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_barcode.png b/htdocs/theme/md_dev/img/object_barcode.png new file mode 100644 index 0000000000000000000000000000000000000000..6f1931ab96cab03c827544dd17a96ad2e785d713 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uk%)r1Xs`&K^ki%Z$>FdgVm7SAOTFc1c&Rw7o zXMsm#F#`j)5C}6~x?A@LD9DoT=t3@7BG}t(3;SweQ}>&b6HH@9(9Yl-|z0&b6ig|Noqv zjMlxioRoz3_xI=L-qzO6jEsbgjEr-0b8BmBLPA2$&d!{ioZ6koWdHyG0d!JMQvg8b z*k%9#0CP!1K~xCWP0HI6f-nq4(NJtPHeM#9MnJ`Q2ekkHc|Jf3`)$oR0Dy=n5MT&Z z_1tNgP}`q|Y-H1R-;vMPTRw@#(xa3}q?=si9_dMZU0nw*nVD^Mn$jJMbmpC}_lLN8 oqSbn{?P*Ltv(C*IJ+lt3@7BG}t(3;SweQ}>&b6HH@9(9Yl-|z0&b6ig|Noqv zjMlxioRoz3_xI=L-qzO6jEsbgjEr-0b8BmBLPA2$&d!{ioZ6koWdHyG0d!JMQvg8b z*k%9#0CY)2K~xCWP0HI6f-nq4(NJwQHi(l^qg)N%LHYmB^8s4fZ)?s007OKA0j5w@ zt6qbVnYH`ski=ErUH|#>{&>nO(pb9X5{T4FE!RL#;+x_!al_1Pi*inPI>$5beRDX5 p)f1)LY&X)F#nL*rT8~U(06(yq36LU!1SJ3f002ovPDHLkV1l{)y3+sv literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_billd.png b/htdocs/theme/md_dev/img/object_billd.png new file mode 100644 index 0000000000000000000000000000000000000000..2080958f0fb04a7ddb9fe953bd9294e3666d43b8 GIT binary patch literal 341 zcmV-b0jmCqP)t3@7BG}t(3;SweQ}>&b6HH@9(9Yl-|z0&b6ig|NoqvjMlxi zoRoz3_xI=L-qzO6jEsbgjEr-0b8BmBLPA2$&d!{ioZ6koWdHyG0d!JMQvg8b*k%9# z0Cq`4K~xCWP0C#p!9Wa!;dI%p*r1a^*rMWFOaK4RbJ1qUd-u#a0DzcKpocM3)?=sU z#LTJvYG344-);9XCcQtN@-nLPbW37Hy2wec#z+#I`aE*Z%t3@7BG}t(3;SweQ}>&b6HH@9(9Yl-|z0&b6ig|Noqv zjMlxioRoz3_xI=L-qzO6jEsbgjEr-0b8BmBLPA2$&d!{ioZ6koWdHyG0d!JMQvg8b z*k%9#0C-76K~xCWP0HI6f-nq4(NJumHeMzpMnT1(sDSeSpC?Xf$Njc)0s!_Gj4(%~ z(0PzxA|dHNGA5of9lCyads-1`A5VToDvkG&11&au;ai|Xc6D`~xuhvwo&ISK$M{S; tR~P%RI>gm_v-MOeU1(#n+%t&*d;yfrGR$X3U-QIt~^=wzu Uc1-Wfiv>B{)78&qol`;+0L?R41ONa4 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_bookmark.png b/htdocs/theme/md_dev/img/object_bookmark.png new file mode 100644 index 0000000000000000000000000000000000000000..39109ef5ee61c102adfab2c4c7378fd83f76c040 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=%3?!FCJ6-`&Ea{HEjtmSN`?>!lvI6;90X`wF z|NsAAyLRo~y?c)xJ2qv?lzaE?egFRb`Sa)3u3g)@b?dov=ia}6zjW!+mX?;D>e*9) zx)@7>{DK)Ap4~_Ta%??a978y+Cnp?Ws{raQk(7{NW!*Z>z@XsGy?xc{%*@$QuQsVD wOqE*7y2wcF97|xPYpO$6;LRHmtjnYs7Mk%eyI5Cl1{%cR>FVdQ&MBb@0LwH@(f|Me literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_calendar.png b/htdocs/theme/md_dev/img/object_calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..8cda1f3f2202f020c2aa7f0438b72e06f559c83e GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN!VDyL#uerODaPU;cPEB*=VV?2IYI$GA+G=b z|6jIj*|b?Nu3o(gWX~_#;#?)61X7yh?e4vL>4nJaD4z_MyE9? lK9WujUNMOxAp(mS8H6JFu1;5C6$k2M@O1TaS?83{1OOqAH4Oj& literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_calendarday.png b/htdocs/theme/md_dev/img/object_calendarday.png new file mode 100644 index 0000000000000000000000000000000000000000..5678cdd2411bf87a5a55920770749aaab067ca5b GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN!VDyL#uerODe)55h!U67;^d;tf|AVqJci`N z9Im`{r!WPy)*8db&7Y i#!7AiYi@TiGBMOF<2MpC+~@;T%i!ti=d#Wzp$PyHSUGC| literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_calendarweek.png b/htdocs/theme/md_dev/img/object_calendarweek.png new file mode 100644 index 0000000000000000000000000000000000000000..4ea2c09ccc96b569c2ed0e2aac8f2fb0b987cdc2 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN!VDyL#uerODaPU;cPEB*=VV?2IYI$GA+G=b z|6jIj*|b?Nu3o(gWX~_#;#?)61X7yh?e4vL>4nJaD4z_MyE9p7fyGVSSrQE(s+bJOPaY+u~|Wa Zfx$9|&+>+|^+TX?22WQ%mvv4FO#u5)GkX94 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_category-expanded.png b/htdocs/theme/md_dev/img/object_category-expanded.png new file mode 100644 index 0000000000000000000000000000000000000000..8168f76fa26b3e8f5002b4e21966d23e5f026cdc GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zCbW2<#N}P*Q6H7Al^Atidb5j{| zQ;YNzOce6+%k&hC3=Aw43@xopEPzNs+rZGkpdseIDo`VPiKnkC`%P{ZVGhOxFQ07# z3UL;AL>4nJa0`Jj5jgR3=A9lx&I`x0{IdFJ|V9E|NoCj%6swp-I+@_ zfN1}*vp|_|-+#oeG_wG*7)yfuf*Bm1-ADs+d^}woLn>~?_Bsk3P~cz|?)dWGUXROa z8~1csXBGy(4G)t~md(;WZsinQ>G~^l-sxAFNA#jjO3Yc_T3v8=nrF}A%~>pk;n$Cg d|FEdrGlPvW{na)08JYD@<);T3K0RVHlW8we+ literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_category.png b/htdocs/theme/md_dev/img/object_category.png new file mode 100644 index 0000000000000000000000000000000000000000..aaea38dbef2c74ef5ec519976be9b70ecf4e94d2 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zCbW2<#N}P*Q6H7Al^Atidb5j{| zQ;YNzOce6+%k&hC3=Aw43@xopEUb)76|@Zu4Gh$uY)=AeWH0gbb!ETF%_7Xf?DxEV z7Ep+@z$3Dlfq`2Hgc&d0t@{HMWJ!1Qb!1@J*w6hZkrl|72=EDU{r~@eL{i?1*YD0; zx&cJZ RW(G8g!PC{xWt~$(699-`U&a6c literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_commercial.png b/htdocs/theme/md_dev/img/object_commercial.png new file mode 100644 index 0000000000000000000000000000000000000000..36cdcc8d4a2d0220e02cdddb5d62dea514d60a54 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~x+Sg=CC){ui6xo&c?uz!xv2~( znYnrjW(v89Ma2q61_q`I1_o9J=2iyA3fcyS1_sq-mEJ&&>?NMQuIyKtS;gh~&R(+K z1Qg;d@Q5sCVBq=y!i-L9OlANDS<)SS9T^xl_H+M9WCilo1AIbUfpm3sbx%*voH=ur zE?pWF6qKBtTwGk7ot-^p%9N<6C?_YUmX;Q|rF)xzN*POn{DK)Ap4~_Ta@;&!978y+ zCnq>C9Ck1`8az#rVNw6`R7nQSXPZ7rZ74X(*s;om*&uf^$Hml%Wei^C4VmBiSPaf; nFicDjF>A{Z5D`gBU|`rYle_!xQMrpi6B#^R{an^LB{Ts5*fLyA literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_company.png b/htdocs/theme/md_dev/img/object_company.png new file mode 100644 index 0000000000000000000000000000000000000000..2a582b8bd4c899f370f0e74a234005c1f00d6ac1 GIT binary patch literal 492 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zCSkfJR9T^xl_H+M9WCilq1^9%x zwoKXT6x8Ar)e;mnB`CQkDtk&Y5EW0!E}oNJJ*T*MX)%zjURvBTr=@3Y%apa2UM)R6 zTYILg?U}N*XU^6sQ?^b4l5_UX0ivZqbZqIIy-Sw@(Xpj#_by!vB+so~du%O`+q(_1xaA*Y@r`w-?AhcI_Al-8%`sfRYo}>T^8$<<0pVZ%ROBjLn>~W_TA=da^P`!&HG+qfwWoBY_?7OtFN+MKmG52 zKd0OCw<&&V%pbaM70Lf&@c(kO>UYCx?azxRpSzr7b&5g!$=rFq?`jTVlx-W=m~m>2Zaq~&?RU*>`)(a(<`U%L%-GJ~h9 KpUXO@geCwuwC|Vz literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_contact.png b/htdocs/theme/md_dev/img/object_contact.png new file mode 100644 index 0000000000000000000000000000000000000000..e98202b367d15cdb2509122e8d4f0e009396f2ba GIT binary patch literal 593 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC*h@TpUDNSs54@nF4%5TlQt)Tl}G6#jD1Z-zW8T z&YspcYu2oFE0^xrx@rI3JspcK^{>3yvF3Tl#!uawKD2K9(YO2mqKzk4?!3Qu@1bS8 zKP@}-ebbSbyH3A5b>_<5>lg0czIp5JqeEA}AHDnk?&Hr-9^d`><;DO1zyJULZ<^0> z92h!bB|(0{KrZzGgO_j4O`r`0o-U3d9M_XMSeX@FT@B7MJj^<|uxRUqok@OvR*MSO zE!wtr+gu^}DcUO*EnT^6p{5$g!&MnAQqtNjuRb^JRIu)mIdXt!#mQygqCC{3ttBk9 zm3FkT{WpHC?x?)M35G!;_ERwD+M@Xzh zRuPj3jx1;j=6*>>katcn`czhol(HE{(y0YqXsMq**B{Y~=ga$f|MKwgw7Hr6w)BE@ z48v?rs>*}<%6O(GqPnd#s|K}{W~Ylxd7HY%mX}CvgNp;v|DpEKd0e0w>~-1W6MVL(m+F28tmm z4@r9{1ns35AC2&G3{5kPmqEg>Fr4n8Ne{xWcsbe2DL$6>3A#@JEP|6*(eQJ;pO^gs z!!PQ75pbf;Nr00~PLA>%%gcb5O<9LO=?c64E-93@FQ@teUa`6kHi-AmQ|-j8r~Hw(JKI(mJAHYuJNZHW!Gg6L zGiOd!K0UGd+w?+l{yIGz`4wJn%=^8x^lGj%lbzM(hwhH^XFhi{T@9`b-oF2}v2SbZ z?n`3(Xz7L4^JP=-idxF69bz9g=IXD*U%GRO_ug!X1S^&{*bZ0sZm%oOaO~Jr=eQoM z?|N39JMcP3EPOcC7Ak6K9ZMGH%&FW}!}EXi#fW|VNM&c)%&uf~H0C6ksvd$3{so|5 B#G(KI literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_contract.png b/htdocs/theme/md_dev/img/object_contract.png new file mode 100644 index 0000000000000000000000000000000000000000..a75f954555ed53222249ca6921a7df634949d1ef GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC*h@TpUD>ZPvx-Yua!6$T019yy zctjR6FmQbUVMeDlCNqG7Ea{HEjtmSN`?>!lvI6;~0X`wFQBhGrK|%L`;M%!+=Z>A* zyY|}FIp>!4{Qv*|`}^nb?_E2#b!&2R^4_&`fc*E*pJ!)hAKSV%J30B>R-nlD;_U3_ z*N#0uxA)xErRR?Ay?1Qu-mOcYKYxB~@7`m_j;&q0wxy-z{rmSzmoA+$WlB#^&)%(D zi;IhE{|4&;9l%%;F3P?G@z6(VpPJ4GRVtiNc zl77MNTRtO${sTq9osUywy>}?9*XGNgOM3fxtE%ejYfId=x~_<|`a8qvY=C~v_pMng zj%9u`&AmRo=5uK1+EV3zXS;(qG@q`IWca{3|1;}*MxUe;Ksy;cUHx3vIVCg!0ND|w ABLDyZ literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_cron.png b/htdocs/theme/md_dev/img/object_cron.png new file mode 100644 index 0000000000000000000000000000000000000000..6186d18da70caa5acaa255752415d8136edcdc98 GIT binary patch literal 433 zcmV;i0Z#sjP)~|kR?MNMiPaA~<1&fT(45k-CkV*f&VThu-2XQXM(%4mWz@--t(5WD?%;ydD zp!s-7V_=jxE>)_y#2KYC<|Tb(O$8l`0uFU5KrdYwShSp`(&zS#gJigYMImSISvU4z zFrm>ydDaf-%lE6%AKH|7-_dV*tXgs{f?y_`pObaUn1lfb8_)qC6OB50%FCxBVM#yM z&`;Hy8ca_n{`e*PVV{U?yv>QrVfv61fdp;7D3RaNFJw&%ba$drB+fMO!8;*>vNS%G}%0G|-o|Ns9-MMW)Ls`&r^ zwg1P8*i j9hGeOUEbgI(M#rK!i*gTe~DWM4fD7IvR literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_email.png b/htdocs/theme/md_dev/img/object_email.png new file mode 100644 index 0000000000000000000000000000000000000000..d5cd141733d3b07e6d6348aaf0afecac51346718 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC*h@TpUDwQKjTT?3Nu?}5Pcd-vWye-1?7--Ez+F!&Dy z$?j5{fhJ3p1o;Jn_*emhh!VpspsIRL7sn8e>$d%oe9VR%&X;qRs5wbZ*mURrqNS5F z|2BR}>G8SIzawP+Lx=nW@~jelSAV zrHU)zs%iUU;}VNMzscPu^2exxFYuw%>Z}a=wE>#fgTLv`y!3t| Zf6-~4uQJ`9B|xVzc)I$ztaD0e0sslJwVVI| literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_energie.png b/htdocs/theme/md_dev/img/object_energie.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3966d2fa2e83c5810278c33a37ea5fc6718d90 GIT binary patch literal 376 zcmV-;0f+vHP)ZPvx+nEuHMcj0uX?%lfe*xtRzjvYIp03V8*}>pCo^YWg|_K525hyQyhXKy>}46&cI5UZq}pxYl&J)vnXCN( literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_globe.png b/htdocs/theme/md_dev/img/object_globe.png new file mode 100644 index 0000000000000000000000000000000000000000..aae8bf6eba03015d44032e7fafb2450c05a19dda GIT binary patch literal 366 zcmV-!0g?WRP)8K(as|6!e|CXMMYM0o63^NB9)?xg%PAt5GI7U3tF}EGqiHmrf=E*ogN`4 zX7O7%p7(l=b6&@V#ITAxG;n~4f9FCUvbewtTKGmAZ}6i6_f)~MU!#T`&hdzMRqqL0 z(7{a{BY^^zv8LaLc*b@&a2#c|S;Q{pRmuLFMPAj;)Y+s{?sZm@qynvrw36DaSMJa7`{-Aa4Q#1ZTh^^Q%HRkkrvoJozl1?8$PZ@u zO=L+2kiu&)r&_3K2D^quoMKKD^Qz|QdhE<__c|iElox)Q%osUN-A4QDpOEDSy(=5UMgi@ zKW<($b8A0OPft=&OI}??T~<TySn(b#`B6XJ%|{Y-n+BZ*XdAba8!pY;|>XaCvrrd~tbsd3$?%etv#p zSb%Y9h;(d=cyWz=dWU&)kb-e8iF-the@cmeRDpkRl!ZN(j8=hwaEXU@kB)zqkZ+-s zR;!&^s-JASt!=WXd%3Z7!nJb2w|0ewhK7cQhlhuWiG_%Wh>DAfh>nbnjg5_on~{-^ zm6eT{l8T+3kCv8}k(-&GnU$WNmzR^GpQ@*pw5*@8tfHN;qn@#(p1rTDo3gEiySbF2 zqN1dvq@|>%rlPN|uBEA|s;jTAuCA`Hudk({x}dzYtFp1IwX(Cat+TVUv$D0ewX?Og zxVpN!n!~u7#JHZoxYEjt(a4?H(wo`Sp4`@)$-||{$DqZ=vChn})Xt;U)1=tcq}gA~Eb3CfxA5q=@$9+s z?z;2uyY%e5#>LCZ%f`sa&dbWq&dkr%+Qi$|)#2sVvm6{&cG0#)X<$8zjgc09UFm?3@+J??UhctwbQad zyzGRk`j*x>ql~-|bs*O{xuChP$i_asx-J;#4Cj=>-ku!o#EuP{I!zcDtSqf<9V~*n mHgDUur41+z0>MEL5DWnIMoJ6<)(Eu#0000DR5Xdz%4GRi(@fCP3jdfvt%Mw!lFP?LTfa@`YvQIk^F^t+ z)VVn}ob%CdsbmVNKZl9g>sKi#mCn&y($k%Y5I*X_hkFk9e$V6HYi0EhYtN686w0;g z)(#x2)#B_D70$qM+tucuRxgs zSFf9(Co7Z?Fl`vTay{{A%nYN`^Uypx595=w@KnZu2CV_44?EYMf3!3T%e`=bjFDig zE;DouzX2837fLn#Agb15D5K;65l*9})4$r|2?MJxV zYl7#hJV<8RLs~&4@mE!Gm>nfZiZgVI5+bFtiO5&9LaojK9I+hE75721ZW@e3&!C*g zg2eb35QRFdo_#RWpW2+@P4XEwOLGMk=$Vp>PE}bUwlAdD13<-(02Vvi%!@qA$3h$$ z(UH9fJH(Eq1f8iqL(;G%_wGG*?AW<;=T4P7Jb(WD|NsAU^zA+Z^$L^(`2_>H z$bjL2a;zj!F3{7(F{I*F@(+GSo*fzD;^K?~Z#O^x^06xA*O|4C&%AH^a&!0FSB3v2 z_ng0TXIbP0l+XkKd0K;r literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_invoice.png b/htdocs/theme/md_dev/img/object_invoice.png new file mode 100644 index 0000000000000000000000000000000000000000..b4022e77740bb96770f8fee065c58284e3518c45 GIT binary patch literal 394 zcmV;50d@X~P)t3@7BG}t(3;SweQ}>&b6HH@9(9Yl-|z0&b6ig|Noqv zjMlxioRoz3_xI=L-qzO6jEsbgjEr-0b8BmBLPA2$&d!{ioZ6koWdHyG0d!JMQvg8b z*k%9#0CP!1K~xCWP0HI6f-nq4(NJtPHeM#9MnJ`Q2ekkHc|Jf3`)$oR0Dy=n5MT&Z z_1tNgP}`q|Y-H1R-;vMPTRw@#(xa3}q?=si9_dMZU0nw*nVD^Mn$jJMbmpC}_lLN8 oqSbn{?P*Ltv(C*IJ+l#A>U&k?6&ZNsAWdVon5Ltzs0Piw;syV8Fy85O9@m>k&T_3*t~Z*r+4u|L zQB!q_Tnv4pkeey)#0K#06Lm5r%T*~JLpTyayZs9)Rqv}RRn^G;xioUp>-G7Oo}V3I z#E)>L+w0#Cu1YPB7(g;3qo*naP@s?tT{lPrN>tDwho`6A1#!7Up=J(*ljWqg597(rBE<=vvib2y3!cgj}t786&lA=>27&< z-*ePHenYSG=0yO>vTTS@+uMIT>u|y2U#7%(D_1DaHx3V{=~v#cXnkbCem|E2_`Bc> zt@iQMLA~*ex;i7|Nr0WpDPncQIfa23quF1tOt<8S>O>_%)r3)0fZTy)|kuy3bL1Y`ns~; zU=|UPW9nwQy%Z><;OXKR!f`#BgO@jT#sB~8J*&gkGG4wKAa(3~)Yc|O4u%KcMf#)P Sh<^d9W$<+Mb6Mw<&;$UTzBQTv literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_margin.png b/htdocs/theme/md_dev/img/object_margin.png new file mode 100644 index 0000000000000000000000000000000000000000..cd0eb4109f7768afd725ee12fc5213b3d4c31adb GIT binary patch literal 571 zcmV-B0>u4^P)JmY-AwgLbNZ69N!67EK*kWT$3~kIB zC&X+CrS0+U*o{#YVKUOIu{{1Bd&Zx|ay7iW1&##&g5o1-NUmqKcqq>5if66P zAal!deP~4$qPX{D9;U!Xib9B?5Kgh! z&GX1s+9)-8`kK=JjV0d}ZqL}J1BoLai5EM98?pQvKKbpK`|t?mlQwM6oi_tUXmJzC zqwp9Is>iUs_&goh7n<1P>qr$_pt6Vfn#+zsxqX3$FPEkRn{*C&xeKn^L!mw(=|dpl z+9g5+{0=h2B|f` zJZU6TpnP(n7ifnVq*&yRJ35&8uIjT$8p;u%&4E&*4@PJpT{+hwV`il@Ec>DmY8|-a z>B+!qB#o^D0fJ0gw@!YetRh3&I8{=>hzdNBq<$~7FHQy)+|=yd2XAPS+Wk2PIc*Qt zLVMUqmAsg!O6h&K_Dy19g;Cjf*IRu4Oljw`wO{bPPfti9%ldm002ov JPDHLkV1lRN1oHp@ literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_opensurvey.png b/htdocs/theme/md_dev/img/object_opensurvey.png new file mode 100644 index 0000000000000000000000000000000000000000..b5de3223bd4944e9ba35075c3c6a0052731a12d2 GIT binary patch literal 743 zcmV?P)Qy!jUi)4FJ@#+a+0a zEYUWPlVLp$E-I_b#>`vIwAE&nz=fFC7w}Qrki+eijo3c3W%^nqyv)Ro$Eny!lu(}u zwXOz378AR`T4Yi0ze$`+_HMp!?L?~zarI}#q_!L}xg!@*9V7XHR~cez`*pN`(XK7n zwqOtEk&HTK*pvou(^h+i-x;EwD zm+AZCwMc9^Bj#wbLHA_iHlsx0z-8PSP{QD15REQYheOTh#qzOdm}kv2)w`8;rdZ z6?!Ee8m}PoGmP)QHc&V78U?*ssGgAHswN3eubqp5w|bADbv6%=A8`13mo0KSc~GmI8n_=(KxLDAGXB6HuD=4Xr!ndjK@8qBI0>(u7S;Er71xO zNbCVK`*d7^(tZN>OVKcuiAm0gd~FKZWFMIp4>hSh8B@T*&9W|XVX*@cf-ADG-qE%C zsa#^%C6@L}#mb=+sF^*u%j_0Q$Xgw$&AN?i9?mU;{lDu864ZPvx?~n$@y?q0EIXU zJR*x37`Q%wFr(8NlNmrkmUKs7M+SzC{oH>NS%Lhb0G|-oprD|rsHo)Rzr#q^4zg|$F|-BlGo1NyLa#TxxLS?9ee)#`TKj<-UG?^@4vr){{Q>?|KGp=|Nq~G zi(3_FJ5x!JU+{m1r`rv@fV>P(7sn8e>%PYW#hMfZ7#y};Te|6xNSr1s*PFlVXPjr6 zxnGc>j9Gf)w3&CGYVcRzoHR95+{SaG`Q7soQz!2Z?M;;PzPvee-TO-(QJ1yNS-;5F xJUKSAt#Q|#2c}8c|K=XMC$aR(`b7*sm=sQM=ghH>7X;eL;OXk;vd$@?2>{fEq*4F? literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_payment.png b/htdocs/theme/md_dev/img/object_payment.png new file mode 100644 index 0000000000000000000000000000000000000000..5691147d8ffc7e161001fe58d28bd306815f779a GIT binary patch literal 339 zcmWkoF-Sr|0R7UCDC*K6LEsV=H7FDjMPwn5isA?_2NTkrJzD#uj-0+W zrIq8+WXLp4!!RgiLI}nfCb->hb1n#B5CcRIfDk}{5G1l&4$rnjAD!+ z(6mfO%V~sA&bdxBp+kbPP6@?Gir@{-07VIg6FSWa9q3dwc&@>bAt)m%XDX+f!Lj=m z?8|$WgG6jing4uB$&d{P14--Sk+^hP0`Aaz&Q}|#ZbbC$H*1r;P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=G z5-v5)pJ!kSDS+&{-L5pA`*kxuOD?yNLEQI|7OBBX11Avs$lNe)VtwoIS{{YUpDbgGZvVk$i zJR`ZI93+dPC_aqG<4zO|fJXqp9Fhd!#&9_Fod6`g&u^`PQc91jstVrwP8+<<+$rf- zN@=&Msw3|`LI|AzzDW8;5&(W1W6rF#otgo_gb;oJcn3fvhbg6l)oR6ye)tz1lW+fA z(jsecI2a6G0yy`&Iv8WPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=G z5->DyhOY_$00H?)L_t(I%Z-vTYZXBhh0mGYkVLKWgrG&R5$xXVEU^)>u@L+RmNteo zvG6BY2sWmOM(oAPUm%KD%FNF82JDi6*a(`y&K!%(dn}J2o@Qs3z4xB;?M2(R0Dz`x zE;#2_0l->|{}lnCZQJXT_5mR0{3OQMS!+>M6#(eGI`942p=p{+BtMee1OQ1xO6f-5 z_XowDW`m06ckexnG3FV`O%;)>>$?81v9U3)DAP1@Gd~*uj{ty0k_6z|WHND!zPHVlHNHXXAxa+!b*6ZIg0N$4Dl=M62e5dQWUFRG^2q=&>el9lnBIz4R0Qh5! zIkMIwgn$B(Bg3KK&33E&+7k(}h5w@*(`2>>Z2c<*Nr$M7_EfSmJlNyml3&dSQl zO8|&50sx$I@ZK}$d~0cGiQaprln4NvWt~o^)4Hx>;UP({Pfkv@mzS3nV?@(5JI0t7 z0KN~yaJTRK18ePB9&0UPjBw6v0oWsHBtg=yF=j8Nbfv1Q&t*?2X~;R>j4^g|ATuY< zxh;~f=Aoq@09FB9B#BXzPm=DN*@vYVA%y*57_6kD0`_t#Ui^guz-s*F@bD1UTJ(K? zyuQBvhGYV8mE>9(j57Tz$%i3?W1hEN<0W#=tpT`A@`0p#0QMz4?Yiz)+qU=%*8vob TUmP9000000NkvXXu0mjfTM`(a literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_product.png b/htdocs/theme/md_dev/img/object_product.png new file mode 100644 index 0000000000000000000000000000000000000000..79910e5e214f7cda81bc1e7a1e9e2d45a05eb813 GIT binary patch literal 559 zcmV+~0?_@5P)CgPB(!7000SaNLh0L01EH`01EH{Laa2H00004XF*Lt006O%3;baP0003RP)t-s z000050|NyG0}BWR5ef$p4F?zz3K$d$9uo{IA`n3_8AvW1Pd_zRJ}p~GIay6ZVN5$- zP)2N4KzLv-b7ez*S1@;IPlRAHfn_~^Xh(W(T!Cvnjd4MVc2$XZRfl_Fhkap{Z8?d8 zca4B!l!98ClZL3Bkh6$IvW`yCzoEjjc*MAV%EFM($D6v6M!J-$+d6LyMoELZ_K-P&c1xmzk=J#pUl5@&cS@n z#eC4ng3`!{)y$3F)u!OstnKB`(943-%!t>~liSvx-r1(<a^L=e_Ca!|muEjw#tMKD*^GCDHc+T2h>T@=KXGqCXY zvo}+gotbxE>62#@vasdKodwY8^uvz@tzP|46?rz#b x5UcogLPJAzl(=CI;n($4xLr*6QTc z>fzDuk-iJ71Zw&H0Tqz>S8t6B4Dvq%x0^w-A)0U!;1dt#N54xQ%`I@d9JYg}@Be9n}>^li==7sJYrL{=T} zuX$A5u)4BsV|B|e&z7rU-B%+g-j1GpD`v_a_m=nm{T~CmKE_XYk~!;c_RM!V3+`tv z{+_$!NACK+bt@lMuKm>1x4moXzP7pNdL|#3Fyr9lSx2YMJuz+m>6V4J+E?D6vf%jK z73U_byE|{$g~l}xTUI`3S^KDe?W30UUt2c3YTNavbLW?iJ%6UGe>8dTiz)lw&)xQP z(TcOn*56pN;mV55S9k9|yJYvH4Z9z;ANV`t;LllSe(yeTd*7k^3y!{CeEj{Y15cM< z_`Uqb(Sb8> z&Ruw`bn`y7~0y)i3{V{`mjo$=fII|Gs$f_3gXw@7{fR_4enp z-~Zlx|Nr5`&+p%VfBgOb@85s_|NjR@tE;QBFk{R?AZu<(kY6xRaL@vV(|`8(03ABp z)5S4_<9hOpW+n-RkaPzDA#;PpTa6{oY%Scd`K$h`d4?-*NF6C%uX8eYzKyA^>J^?N zTm5@=RiO>SVrDJI!sIl@qt>@>Jv+;7$WnAT?fg93;!`c_rahApR=93sZEdZsbm#o_QGZ{Qx{an^LB{Ts5chDL% literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_projectpub.png b/htdocs/theme/md_dev/img/object_projectpub.png new file mode 100644 index 0000000000000000000000000000000000000000..1444573cf05c248eaad1c94fa6ad2cedcd7a78d8 GIT binary patch literal 929 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC*h@TpUD!lvNA9*UJvjIaRrKVaq%&5NOSWD^YV-F z2}lSCii?WLGH@s|bE`3MX)$tZG4g6N^J=m1YAGt~DXSWY>iVf^Ir#)vv#NG*YjtvJ z_3&tS^6GT)>2&k!^$6(q3hMU>8uW=jr7}^)jD2ht6{eo$DCAH7>b5K4(f``Zni`i(%zQBC8Jg z*E}k2SY6q+vASiKXUo;F?yHd#Z%0qQ6*J|Id&_(O{*M7&ALA!H$((gJd*-{G1^2TS zf6ra=BX|AZx|I(r*M4g1+uk*GU)$VsJ(CYim~n9OtfSNBo|rcObj!k9?JMt3S#W&r zigOdz-JQ4WLgSi;Eh`_itbNqK_EF3FuPqy1we9-Tx${fMou)UCaAn2jtGjofU9$VphTV_a5B!~R@aL>Ezjq(Fz3&%;7XWs6(_-^CH54*2@*!uYI?kE5DKmBv$=+$%Q?;Jbz=)jpb z=dQjwd-KzU%P(%+cyjB`+cR%|-F*7<>X-jFfBb*)||Nq}mvhV;#?c9NtJbnUI(BB3-Nx;Ub@h$4jtHFKoo!qF?Tn`IuBchXJ`FLS-@JLVrlY_< jUfa7^K%Dc;OlF418$!KbZvLABbT5OatDnm{r-UW|n4cfS literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_projecttask.png b/htdocs/theme/md_dev/img/object_projecttask.png new file mode 100644 index 0000000000000000000000000000000000000000..4a01b50435a54567ce0d53cad192e728aba5505a GIT binary patch literal 941 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC*h@TpUDNSs54@uLt;qxB|twxcC@2q`7&7dHKco z1SA9m#YM$r88{S~xz!lBv>3Uy7yai2v}?tv)L+aw^P98u%iEdBcBD*&PSzO zjw^VbRtmXl9C6$t>X>ozb%V6~dYMn1L+81K&UK958kgK2pED&eeVcQ}#jx@tkyQu$ zYaSIhtgdX^SlzPAv*l`7_tnUWx1%TDikWi9z2&`s|Hpu?kMR?pWX`&qJ@Z}8g8NyE zzvnLbk-PqH-O7iRYdfT_mX!}$);{WA`>198*Om>h+IIcv-1((r&z~vlA5Gr-V#>bvbGJQR zwBqct^*5GmxUypN)!n<#F4_HP!|q4z2ma1D_;c2o-@6ao-goH!f}^h&AAi5_{kGjDfXe7Eu9huzmcY<>K9_mhA7pZ+;=^y<0ucaEKUbl}XJ zb5~!Tz4__F?^7hI5zb{^Vef#eFyLVq+z5V&@ z_rEva|9|-K^ZWPTAAkS<`}g1f|Nn0&S$F`Wc5X?KUoen6XaU3NKYM(D4&C7C;uykl zJ$Xhmlf<(#hC)I{uXs3`3YK#i8*SoF*;2;Vywj{Pr^o4#aGH>P;keeKdY=e91rcWmqP z=g+rpU3+Zr-ebp(tzEnJ{rmSzmoA+$WlB#^&)%(Di;Ihslar^^$XftyWGo5t3ubV5 zb|VeQN%3@X4B@!$d;Bz0lY#*2g^yX+9?VtodgJ=)|NoS3CY#;LN(>AhY@xlUXKjl* z%AR>${Qk<7y#4CsR|Vd0ee!14r2`)MOO@GwX_{Mn%G!SC;>FpqMRy&Ht^eQNc6Z_X f{^jwrot|)q-(z*oKW`Waw2#5l)z4*}Q$iB}Jj;&> literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_reduc.png b/htdocs/theme/md_dev/img/object_reduc.png new file mode 100644 index 0000000000000000000000000000000000000000..ccfd2d2f5b2cc8a689ef175cbece501f8084084b GIT binary patch literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC*h@TpUD>ZPvx+nEuHMcj0uX?%lfe*xtRzjvYIp03V8*}>pCo^YWg|_K525hyQyhXKy>}46&cI5UZq}pxYl&J)vnXCN( literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_resource.png b/htdocs/theme/md_dev/img/object_resource.png new file mode 100644 index 0000000000000000000000000000000000000000..8cda1f3f2202f020c2aa7f0438b72e06f559c83e GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN!VDyL#uerODaPU;cPEB*=VV?2IYI$GA+G=b z|6jIj*|b?Nu3o(gWX~_#;#?)61X7yh?e4vL>4nJaD4z_MyE9? lK9WujUNMOxAp(mS8H6JFu1;5C6$k2M@O1TaS?83{1OOqAH4Oj& literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_rss.png b/htdocs/theme/md_dev/img/object_rss.png new file mode 100644 index 0000000000000000000000000000000000000000..37372031157d10aa794a333dcadd1f62ce4a7b13 GIT binary patch literal 362 zcmV-w0hRuVP)ErM1=kf39^zrTW^Y8Zc@%Q%g`S_|hV<31N%`K#VCuKQ+^*4FE#k-OWM^#|S`P zq21kQuHpv3bv&LmTOV6-L$3Yzs4LlphuY+laW^@1p0eS^iq=l6d;Z5xja9X3w?p6W zwV3$dg0G84jUEKz%L3%sXk?6JTyS1ScbkxXAk$=VOa#cx4}M5nFdczmfdBvi07*qo IM6N<$g3s;DegFUf literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_sending.png b/htdocs/theme/md_dev/img/object_sending.png new file mode 100644 index 0000000000000000000000000000000000000000..c798ced0b5c113d90d6987b597b477a0face49fa GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^d?3ui3?$#C89V|~jKx9jP7LeL$-D$|3<7*YT>t<7 z@9F88oSdAUon2g9TwNTre0uJbDN|OiT)B6O*SWPp=Z^L4+`04Ev18}XoqPWL`Fe*< zS3w4q1o;IsI6S+N2I3@nySp%Su*!M>Ih+L^k;M!QTpvJ~(P@pz44@!;iKnkC`)zJH zZejL@r#Xs1Azx1y#}JO|$q5P!F)=YBj$7{U-L5Y+;pKHp{T6$MmuIHRO8w*E*%xV? zp0VYH!H?9nvo8MsC*16I`_k)LHCG-zHC;75y*h_x8HpQrB^mNLrR`6Odba}&X7F_N Kb6Mw<&;$U{r(lu* literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_service.png b/htdocs/theme/md_dev/img/object_service.png new file mode 100644 index 0000000000000000000000000000000000000000..65e9041589f39e0c76746ea08669baa778442a61 GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zCrUm$fxB_V>LkTZU2`@{->>#J& zWFQJE&i1MfGOSM4tj>0-&W>tHHf+hZY^hG}DR$~94(h26>S;;tX(^tPZMk;Nl&w8Z zTYJ3rPI1~h$7}DLpks5QjxCKkwl?|L*6d?jtIzE%KDW2}+%X`Ua&2qNwY^KPool&v zZOXlKbM9ROqNVrlEq(rc@B8QH-oHQh{r$b~-=F{g|6ff$?lsV5j3q&S!3+-1ZlnP@ zt)4E9Aso@Br(a7oDeyEr6m?Cv7El!kKE2`$&%6K6CMDkQx7}0C#$dW?`AbLHdA+y) zY}`@5d-mbnpl=^@gB4~e7lxO=m0oK%|JlUq*7fXhCG*z5yde=Cxp=D5x`GpWouO;q z%x2smBK|JQhoR!kZ-E&S&WkwggqvC$dpz}*KG6C5R$Z5|PD7E$GEmGT2k0OMPgg&e IbxsLQ08x~q)&Kwi literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_skype.png b/htdocs/theme/md_dev/img/object_skype.png new file mode 100644 index 0000000000000000000000000000000000000000..b209cd8d16e340a330069c891053a431d7a9e01c GIT binary patch literal 682 zcmV;b0#*HqP)c!Hgig9>ZD%!3laEIQ9cMkPbIx%MD^fHBqT)jPy|sA5khJDAmwzX zwNgQ|SfMFGB!N-1+3x;%XA_;4>zI9DBDMeAsNXo5RI*Py}b~n6q;l`Js zHu;);3A$$vYWp&<_=RZ`g?dxYSH5a=mrnvgYtw3a~6dy9CGI z1#4ji(e0se)k0UXq-*rBy~v}9`aF1eB}L+)8hbGD7gA6naWl-!H{Zt$GYphtp)Px$ z9RSc32?yc=yPMI`DzfYD$Ik-VCnM2d`)X_3F3+B$zqVcwQs+c?^dbQEpUr6TKXu;| zqV1e7>H{D>6V{mSA$T`DEXN)4K zA*fnRWr7gQkj${cuxweTuxhnhHW4Q(#|e|F22rr?!BD|S#ky=V4QrCgiOCU$NkcTy zq}g;uY(q#d3o|j&B&0f%38$v)uhnXn$t;6f93rUbinC;h{gOeF1Y@Wrpsq74YMo$2 zDWNDykwTFKp-wTRSY?!Q9O8@-7!nf(Nf2G)j1Z&}r2QK{{!aX%WilQ+2D}?3=~d^dqE@^3q12HssHYr4Nm|7 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_task.png b/htdocs/theme/md_dev/img/object_task.png new file mode 100644 index 0000000000000000000000000000000000000000..14dc14a9602dbabc7b0702b0db699610bbd68313 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zCL<4+6T>t<7f9A{?AeokyHgo1o zV`F2WOl!f*CLqOF666=m;PC858j$1Z>Eal|aXqxpQHaG+fKgNR|NkeJx#jDl*%&=1 z9b2rt{Om){3*FqE{uN&GAqmB|#iD8sGyIljT5#O=baZb1y!c7~3-2X*Zd0jk(PvZ& TSaR_#&`<_XS3j3^P6vL>4nJaD4z_MyE9? lK9WujUNMOxAp(mS8H6JFu1;5C6$k2M@O1TaS?83{1OOqAH4Oj& literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_technic.png b/htdocs/theme/md_dev/img/object_technic.png new file mode 100644 index 0000000000000000000000000000000000000000..6186d18da70caa5acaa255752415d8136edcdc98 GIT binary patch literal 433 zcmV;i0Z#sjP)~|kR?MNMiPaA~<1&fT(45k-CkV*f&VThu-2XQXM(%4mWz@--t(5WD?%;ydD zp!s-7V_=jxE>)_y#2KYC<|Tb(O$8l`0uFU5KrdYwShSp`(&zS#gJigYMImSISvU4z zFrm>ydDaf-%lE6%AKH|7-_dV*tXgs{f?y_`pObaUn1lfb8_)qC6OB50%FCxBVM#yM z&`;Hy8ca_n{`e*PVV{U?yv>QrVfv61fdp;7D3RaNFJw&%ba$drB+fMO!8;*>vTn9*sC$qb+%OS+@4BLl<6e(pbstU$g&fKQ04t*vcTR8(?ua&~rh zadB~Vb@hY^6BaC3uy*a*ty{P5-MjbLv18}Xox67J+Vkhn|NsAQqoUma)GJUDF!$v^lRd3I!oi;FV~yxsi#%g3seUuRZ5KJ)%y$?mE<^=$8r zt+!`S$zb}K-gkX&^^pY^r|n&P%%t<+QIjKAjvj4)=$~=se}3YBMxG@u?CTpI*aA&v N@O1TaS?83{1OPx4herSa literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/object_user.png b/htdocs/theme/md_dev/img/object_user.png new file mode 100644 index 0000000000000000000000000000000000000000..d26d8899ee80f1e4976260b265a3e7d75ebab61d GIT binary patch literal 607 zcmb`C&ubGw6vwx=AvHCnNGddzqJm)cVo^$q7qcXqge1h6Rtz3m7V$@{s9Or@s-SGu z+713-5yjDiFhbKzAmD&0OfSMvQT8CXD&k&R9MjA6)Zh<@v;GZ!c<=jt?;RfR&8AaF z{l1`2k|cjD8qNssbhEux=$=R4R)l#cW66m3i??^{?tMO1d@DwqFGWwPlH^-=vqdf+ zd@P1-XF|!4BvtQq{2BL%el4BIMuz+2@<2u&$i;{Axww+cXo`~0E1Ih4YTi^;O;dGE zH4R-ibi>ers7%BB2Lgr$OdYsD2y_Sx2oQ7;iV-xCs}#9lgeZnU7{($5gg}E}NH8VD zBm@ycDAXx|lv2wAmSx#Cwr$(7f#YDuaTrpWLl}dMA;vIcqP7@goFUFI=a6%ugmcQd z%{gyy+~Bm)5YcEho5dixD85cjW>UvR`~Q&2$={aP{5%#8W!pa~>z+;ioep)mIc>bvd1gCc@!dZp*SqI`po8=}M{P)4sdN=qp%#lNC1GzKrRLGcRWLXo&kFcqXEv8cEa#hq9|L}Jo9og|GRPSSQF ziI_Ac={RQ0WFoyt*X8YZ4l`w}iwC~*o%cC6j^k%ro5Mov?R}VVyM3oKGm^ZppyvYt zU7DTEQ7=GqkL_8zupiy#T`-X?|0HJf7ECcnjqjR z7K0jzKs`L6qlD#+Sq`emtmAHV3fF_csa$A|O^CFox(i1+nDn3{qxJq^+2LZeiI91io0DYlsSnGNWHAdZaS`cgr0 zbrr`Q9eCH?jy&C~QNKcba*}6E@tlb-ts}4%1)mQZ1?#yS>RAa5O@p|&2*K&JAN4g8 z9}z!TBRM#Tx82=%L$4gA`^Lf{>Db~;I~-!` z=vbmN_$Yl`p2?h$#}ZvDlylqSjk}DsM(NaeqFa8iP9j$GVRiEzCsuof59$;ql1DVE z>H9~t$D2>y{eI}TUz?x#zh{AZe4F-Auf7Q`(NX^mPHgr{rgsb;G_QDb6+U9OAUFf8mvUP)7TD=r8oSP8a8QC-JK>;N@v z)Baa!TS(x+p%MtxV#n|9Kp+;Es pdZWnLLrf4+La8GVQ^Y=F?H>#$+i6j^&6EHD002ovPDHLkV1h@)5;Xt- literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/pdf2.png b/htdocs/theme/md_dev/img/pdf2.png new file mode 100644 index 0000000000000000000000000000000000000000..06634550daa62ede26dc024bb75b36a3d901ba16 GIT binary patch literal 636 zcmV-?0)zdDP)) zZQnnxK-W=5?~D^aeoFKCE{a=sV2t3Lp;B1@6zA+j7^XRwwy#-%slNtFok$Tt05FDS zY>A?Ta=C+Qb>X^;)@@onwa|g~50QPHLh?QWh!|9r?(RAxLwIq-^z>}%5FssgV46$Ag{fzw;ot~C5Tn}%(4!}jmrsbkeJ0s+0552+ zZVu!@FKH5uR{I8bdS}Kd3=Dxn7AWzt<3t&F^$=|}$#i+&Ou1jnbU0`w&1&D^OFJ+` zLBR$IHcPOLkhXe&m!%kMvDN^HL+C4sEL@xC!sMsL-KQSD?r+u>(bdQ2|ENM3#^E18 WVhhIx-L@?N0000P*+S=#a+vVHa=-k}t z-JYG^-s|At?BU_<U(PH z>htTZqU-DQ>`E}~?DXweK<$fs?tW_SytD4^_3yE!@9*#L@AmNU_wn)Z@$vTY@%Zxc z`SVgX^Yi)jI~(;zDD_7u^=()6_5Aic8}^=(_ubq0F%I}X9r%@o`1t<$`TqKHTKj)# z`hu~_M0rz!Rxvo`1!R<^Yybd&e`6d(my8fnj{pDw07*qoM6N<$ Ef||)YJpcdz literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/play.png b/htdocs/theme/md_dev/img/play.png new file mode 100644 index 0000000000000000000000000000000000000000..4922ea1ec12a8606851317be0927fa7c83132889 GIT binary patch literal 653 zcmV;80&@L{P)c8BOlfbI$K#7JzXv8rz9tLeSw=&&{vy+ zAX{t$K@Lf#{_!}zfVLSPBSp#ZPhZe{kj5nrPIvhn+m1mpDd=0ET!`0}hHN9-z3X#w z7G!;n*58dhLbt*&%D&>7_*|D2$6uwuApkw_teg^^HRmB%(3CZP*Z^3b=Z)x~N@?91mxwIso5d08ZM#q761; zv*L^F@xCPOAIsVVlI8K+a>K(x=32s_H=z>kh!NOF2>|&AZ#Eg}zwVfHZV-UjG5t*- z_-Vj!K7Gu;^<}aT`IdgnW%NZH$kh&j+YbPN?|i17hyxjci8FB4suneh?D7_ORLJz|u8)DF z5@@$wlblat=pcG+DQVX)_j5;q;(O4!4jEff`2h4cG|qFMDNn{1`&jeIMY#?g!0;1v`uj(m5*~LNCbAnocXlYb-brg{7SsOKFYjV%h zFH_dnbWfNSj*OP zJyYiNEZy3(_u7=L$L7pgI%n1dd(1cMb@yT|0O0`MG=V z&pm&C?fLU-&)?qzg6AOc9tgfe!2j?6LEzMvl@dU&xt0X^1%m}BBp5cm+h_qaaGIx! zV+e<=?7^FSO$H(k2fGDUdQZ(#?iCYXAJ0231{C5f z@Q5sCVBq=y!i-L9OlANDS<)SS9T^xl_H+M9WCik#1AIbUr%hY1diCnHYuBz{zkbJ# z9XogKJaFK^;lqcI9Xod7#EGq2x8A;e``NQ+FJHd={Q2|u@8AFb|6jagu02q@U`dc) zFp!G^7*yBJOae+edb&7N!CzK(sU}yE+O;_NzuvkmhQc_^w_<%$Iflt3j)Wk-8%;a*RGwr_x#+w_vfC! zzxMq3wde2e0l{++cn<{MA>jY_{~&Pc%Ss8L*IY}2{DQ#(6cP-Z-fgr18aUb0#W92< zn)P5bS5tsU+r{;d1NWpvIx2j55;5yPgOtNwk=CHDH~-&UyA{LuciPN7uNagJe3hSV zdREhvlTfwf*xkwJ&nI~|lxt}+UdUB3=+)6-NXTdEzHPPcnZ*)u!SJ*PlTOPjwQ@VG z+j2?ZMVZ>kNi!=qsyqFk%c#2fLU;;uWpvGwlr7Vf-C17!Dww`$**fnZ%ym*B!7NOT Rj6mlxc)I$ztaD0e0st>n9KQen literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/recent.png b/htdocs/theme/md_dev/img/recent.png new file mode 100644 index 0000000000000000000000000000000000000000..a49fc171c06d79261f00cc16118595d22077b29b GIT binary patch literal 447 zcmV;w0YLtVP)O?LSsr8V@e@oQZZv%N@H45gkvFuV=0VlF^qd-jC*U8glnywd##*=wQ~Tya{#@2 z0KIz%y?YS7rF*@lgvNUS#)JUIgb2=r0M3L6&Ws4olqt@XG1i0t){Fqwj0o10A>NDt z-joR5ln~yW0N$J--lam`ty1Td0Oy<#=bRYlr77pFLg%$w=f-pIoEYz=81JPa@2x5C zwLM){Otwl>gqG|K6ql-mU-VwQC`%hyVZp0d!JM zQvg8b*k%9#0HjGoK~xCWO^(S9fNs|f~on?Yq5#NdKxf=fV=Ek^wRkMaN#>sIgZ zssLsHkm$n90zxVPz5)Q#Dm|(9dxxFh0Epu&C8B*8G#yIjrAAuybX&mQwKm9jr^+?~ z%x_g$e8x1YifAR6!Mr}@^~{)7SrW$q0Knd6%gLfVJFNr$<3dFD#Nl>j6Iw*%L_rIr pw8dbkGjCk({;L20i$C!5;R}*T4|EuOrfvWL002ovPDHLkV1g_I%Z&g4 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/redstar.png b/htdocs/theme/md_dev/img/redstar.png new file mode 100644 index 0000000000000000000000000000000000000000..486fd6770a231ed55293df7f54edce03ee55c303 GIT binary patch literal 533 zcmV+w0_y#VP)^ps^(>@s;Ez_ng1qr&iKyKta64K}Qr=h;~c<_+oAK-cmRZ zknuJ1n|w|b12ljLG#VBJY!%2i&JJbmGyuR}UjqQ30hEG9V5!#)p%=E2=-fBHy=@e5 z2VBL)c9+lsfX0ASL23|`1e>boFvI>p$F_|_35I859$r&n0zklVH_Nzx&`gFU9Y_#Z zcRjo4%tPf9k0$4Cca_YdG3aPaT>mlGoNp`kOROgx*eZU%O`SpQ$bwD6zZTM6rw46$ zZcwjV;OVdC$7jD~H8P4m#AmSEEj~{u~q67 zSbC|*`C&fG1^`PNaxuqQ)(YuO0^z=DDTP&~xV zx99lL7b6RB6u8>XNO_9o=`@!C0MvWH0lp?VJX0n3T;&D8gobtty>W66EbhB1&jJ1e X&11fpJ&W{W00000NkvXXu0mjf%YH zKm%ON42;6;44maEEON_y_)3;}a?MFlVvu6M2S6HfG??{Q1@TrKZ_qjae0RaWBQ;JJ z3v{?_RJj@Wd6{r%^pjyw+!)2X_{kcRZ-39Z|NnbB?%&Jx$=}a5yPjL)FIN>K$D+u~ z!oY~3QJs&0x5JJ-`a-wjxgUqk|NPly@&Elw+y6h-2K|3JHSq1GaD{$%ekMs)kYXMd z2IfR%2I&N429-E@22od02JS9PR==~&ve(|O()+q2mS_8w3h67~X4(C}*I@N#vMG0z z01E>vgD5AX=+;D%AB z^#AV(5m+h8!63*W!ObXlp+fP?>+Pw(weOTlLQ|~a4||Th;uPWpUIVY_-S?E-#wW+^DRXfB>7kwm_^tb1O-?bz~N}X z!@#`EovY$ii^A8NSt4I0ftE3da4-n$4Ch|*ZNB~g>+ROJVzfEJYxNm)SNn@Bm|)Is zDb3EnVj;l5zQUEg@O-Aom4gvHr^LA!B^iW(9-VK@5`M2v>CKk~ZvRi0=$%^QFEahk zoRp8p>)g(^8gsh<1B@eHfk81@jlm{Sjlmcgpll2rK&M3TGe~U>;+p!RP2=O&S&sjo zOmzMEV^iM0uN%{TpQ>>@)?&>csLBiRI|=|sDpP_oqxu$qj?SxvlK0+q>;3*a-R$4L zX}bU4PImaUJzjCEuPlQO)>Oj>Oc5IV45G!lOfH9G_)dOoRrq^7TlnpcVD5#pj5xfV z*%|oprq@VW2JYo9EXy|du+8r_W3&MU9xxnO*wNGh0HJEuBo)&9!2kdN07*qoM6N<$ Eg5ua`M*si- literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/reload.png b/htdocs/theme/md_dev/img/reload.png new file mode 100644 index 0000000000000000000000000000000000000000..a4029f119def5d9ca4c5f7f1bc6a452176bf5b06 GIT binary patch literal 704 zcmb7??@Lor9LBF`=^U1X>V4y5N$e2{G6k^_+1%BMO-*2b|;o^^|?8?hdl^qD(~U7?6ySOppu+gG7)!Q4hvMSYQj|No=(Kykg?MTQ)Jvq%YX^x9` z<~II3e3`G%>{>ifvstipIJmpH^0&q~lxANZzwr5ye<^4kE@;2R-G0>>G;ihPIQy!4 zPOU`7?hhi(v26Y5#Cl)v*noY9_R!V0D-$zQvwQt=_^YF8PlvI>ZY}jIQu5~uf4Ht} zo_Tsr-L__EPhx)dj^+;R&tEea_v^b=+0TwYzo$4q)c;r;XZ_XkX7U7UEu8!?m_9wd z{6H*CU+OGAZO?SfKP}kkoJ<`2(q+{(&R|Clt_;1 zNltDlw&W=G(kw3SDPDT7c4>$Mgqj+X4~mbJ%P_P%d9 z_r2vB5dH6Q;^+x7?AiLfXYcc#Yu|hB{hxB|`IP7X=VV*XS-W@6-g|S--JA3L`<(ax zmma&e^!@*}*_vxxoYr2uw>4X0Ymd{`bN9A>|G)MB|Gnp~?fw3L@BjbDiY1Qy|9|fP z|7-vM-&-1V@BjbjYrURtje7q5|E#$=-+)eMED7=pW^j0RBMr#O_jGX#k+__kpupwP zeM&?5^Uk9wsi{u|Yw8SZm3c#XOLs6#Uo&yy#El!xVjLV|9Pghw6T`1}K%Grw!dk*Ar0Tg0#W>&W=bkYi;y X{D&*ed<(lF&}s%xS3j3^P6Tn9*sC$qb+%OS+@4BLl<6e(pbstU&(u0G|+7Anhf=5oBo@rOAHGg{vo+VYIIX>QZ)>*1)*h#==k9I&{(tNL|9j6}+xz|h-v9rP6-ylZ|Nq?o z|JVNizqd5#-v9s4*LpqQ8uk49|5-qMG()Oq)nSPeR5#)aq+tE;T+0!F8#rzsYXVVjIOnDb988Xc+Q;p`XK9%BO*)A zEXkQNp=atP^UYHpiMT~5FIu$rh#IT0nAb+FsF@rKcl3o{k7}27ZHYY16xzopr0Dc3&>Hq)$ literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/setup.png b/htdocs/theme/md_dev/img/setup.png new file mode 100644 index 0000000000000000000000000000000000000000..f997e53799b568372453abbdc854c78d5c628a40 GIT binary patch literal 702 zcmV;v0zv(WP)L`hzKc=0lo$X z24&~ZpT7un9)=-dVPUD)uV4REQ&Y7WsMZ*!IXpZ(2WWUQT%oqMcG>CEr!PiFN23@L z92}f?_3G9CAnfdH4|0Jq(6C8B?|kz1_Rd7H4P?lnLx(N`Z775KkI~oHxA4M+3;%&( z05+tuvT`%XJ3DslIBITg9)jU#O-;?RJ$v?Cw6(P@v$nPl^6>B|J%0T7e~=;9u3q_n z<;tZmt5>f+VPRoWBQ7p3hBewihAf=Ze|=i3!{x&}=Kj~!)otYDCmzP)P<`upF^OJO+AKB9J zZGOMwMj$RBXn>NEQn0^&;G~NeuY%&d$Ja%(u&3JM%#|ba{?G2V-!iMqt_-IE5)u+2 z{{Eq}u3fwH9~f{`_Soj^JZh>d_)6Nu%2SQv=;fLH*CC4pE4i1p%v k)TUHs8=eVtRRqTh02?mmtpET3 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/sort_asc.png b/htdocs/theme/md_dev/img/sort_asc.png new file mode 100644 index 0000000000000000000000000000000000000000..e327d952fa47a490b79b8b9c6d32854de82a0961 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*a!(h>5R22vKmPx>XWnYS9Lu{p zYsYEUBf|CvALDuk(>Hdx^1rZA7&l%q|(>BvdL zGlCuW7fOEP?8x;n;#tus-tm2*B+Fszh8c534huE@P#35_-sJdbBJ=!nZoJZ_IU6L| Z7%p5>T3>DUI|}Fo22WQ%mvv4FO#q#PKEeP1 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/sort_asc_disabled.png b/htdocs/theme/md_dev/img/sort_asc_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..e327d952fa47a490b79b8b9c6d32854de82a0961 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*a!(h>5R22vKmPx>XWnYS9Lu{p zYsYEUBf|CvALDuk(>Hdx^1rZA7&l%q|(>BvdL zGlCuW7fOEP?8x;n;#tus-tm2*B+Fszh8c534huE@P#35_-sJdbBJ=!nZoJZ_IU6L| Z7%p5>T3>DUI|}Fo22WQ%mvv4FO#q#PKEeP1 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/sort_desc.png b/htdocs/theme/md_dev/img/sort_desc.png new file mode 100644 index 0000000000000000000000000000000000000000..db99fd9ad478bf432bb8491ed7e0e38dcb856030 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*a!(h>5R22vKmPx>XWnXXctzsk zHeT+-tEAq!F@5w`_}9nUd_>sOut&C|oZ(}=PKCU{=Sfd|7qCey{A)?OV69N5VtJ-v zmPBKP(yYW{$44oy3;~Oc1n##7u;-UBK25>H=O_M04RBHX%xziK^zLYxI2 zk;M!QTpvJ~(P@pz44@!Ox}&cn1H;CC?mvmFAVmQ_A+BrJu6_Uh{r~^}ojRP>0tJ~% zg8YL2|7W;zopr06x4mw*UYD literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/star.png b/htdocs/theme/md_dev/img/star.png new file mode 100644 index 0000000000000000000000000000000000000000..4b6b458467588e6c444e1d4e23a00622db915374 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CN!3-p8*3HQUQjEnx?oJHr&dIz4a=HS1LR=Y? z7?u@#EvWEVR^_#yD@+t3}brZ;8Ngt{%0%GOUy+%!FG z)6B4q^V7F3j^4STa{H3Z{R^u1&F|T}aO$2_IR{siA6(J6e@)@xRnzxxs6M&2bI+EX zLu(i8-(0wVN8yRhv-a;PJhyGixgB$^9a(q#^v+wS58XX`{O!Y=AD-Xqm6((Ra$-r4 zUoeBivm0q3PLj8~3quF1tOt<8S>O>_%)r3)0fZTy)|kuy3bL1Y`ns~;U||zB(ovrE z!WAeK@9E+g!g1ZT`?-*VfdHHTdsUbI7rGVyuOF67u77*3oc+UwbswBB-{(KqfBt-y zghp7f(KY|z`7Z0&4a9YYQqFH{`Pdt~-(E^lWlH>gle;FesmCQmy*WZ(8Px1K$J@Yt XH;ZjqbP0l+XkK(n6rf literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/stats.png b/htdocs/theme/md_dev/img/stats.png new file mode 100644 index 0000000000000000000000000000000000000000..d883f7faea9eb6f03f125190ed895c8bb4323553 GIT binary patch literal 640 zcmV-`0)PF9P)`-a9Agawu=Aypjm);F>LC+L zZQ|Dlj9-{!c4eM)@0jdRQzQnHmXxL#HYQo>;`be9uFavE0YA2T?5yuFIy1(>hZx=0 z{nCJ?^8zfa18oI!9$Jx-5oZnxt~nP5Aii zGe=*0s6gSY$9qp0g_ykj4VI2fXG3%HqL8wxh_||k7fj#KnjWLdEy?$sa3UlxGO|i@ zY?EPQth*a;x8Gfff~c-g2!h0d!{NnY_bnwB<8`HdwlPo+VCDSE86!mh5<60uwNGn1 a0KWjAyEVyp&ENC@0000zopr0QP${ga7~l literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/statut3.png b/htdocs/theme/md_dev/img/statut3.png new file mode 100644 index 0000000000000000000000000000000000000000..e75157966839a5a704853b3a48cd290183dae710 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=(3?#Lsx0HZ50X`wFi#IITe17x$cZdG}|G#(* z=Mtc}nx~6n2uC#QK}W^|3Oo!OzqB#feGdM=$|K?5-$%#No}8F^^}<4K8zp^4HQ|c0 Qc|aWup00i_>zopr06!fm5C8xG literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/statut4.png b/htdocs/theme/md_dev/img/statut4.png new file mode 100644 index 0000000000000000000000000000000000000000..6ec1ba559613fc19c80ae08681f3b47459cfd0bd GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=(3?#Lsx0C=W&H|6fVxatW1_r((jEapZn}LGt zC7!;n?AMqD#5J|w&0O6K6p}4*jVN)>&&^HED`9XhN=+ZM*w9RJYD@<);T3K0RSW4G*JKm literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/statut5.png b/htdocs/theme/md_dev/img/statut5.png new file mode 100644 index 0000000000000000000000000000000000000000..53264a0515d664babba63581e6735b811532a01a GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=-3?y@QpIZW?I14-?i-GcMK$!78+c9^bAbW|Y zuPggCW&v?Eo-^D`>Odj30G|-ohK7d!|NlR~)(ce4z?kIi?!x$=N%tO*qvGk}7{YNq zIUylogZ%-4{SAutjSJr}I;%=BN;>ET2xuHVz`$@sfa~Xhjb;mg>KQy;{an^LB{Ts5 DpGYlI literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/statut6.png b/htdocs/theme/md_dev/img/statut6.png new file mode 100644 index 0000000000000000000000000000000000000000..b964afff603903135c2e897900f1dddf3ffaf779 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=(3?#Lsx0C=W&H|6fVxatW1_r((jEapZn}LGt zC7!;n?AMru1Vm-JCa$an3dxqZMwB?`=jNv7l`uFLr6!i7rYMwWmSiY|WTYy%d-?{v zPf^VS85rOb;+j4=ee?Ov|NsAABP*K>6l6^Dc6VV)< z>&kwOonJtJUuCsv3P@dmPl#(nL&N6toB#j+f2=ZI04T_qDmPbwu1ruY!d@`*#aku@+|TTShKOoF=Z-S^MzG>Z0ka~9lRL#9pRLD{&ET< PP%DF{tDnm{r-UW|UbZkg literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/statut8.png b/htdocs/theme/md_dev/img/statut8.png new file mode 100644 index 0000000000000000000000000000000000000000..c24d4a9dac21aa0a6e03b96185f94db180c2c128 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1SD^YpWXnZL_J*`LnOkJ6BLC09Pf4$4U89b aWMDYGDtYd|724)N1q`09elF{r5}E*La1$T^ literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/statut9.png b/htdocs/theme/md_dev/img/statut9.png new file mode 100644 index 0000000000000000000000000000000000000000..94b6dabf265571f7f830cc164413b84506526b67 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=(3?#Lsx0C=W#^NA%Cx&(BWL^R}oCO|{#X!Z^ z85sDEFe)~tYz7Llmw5WRvfpMF;bt>Fsd-fuC?s3r8d2h$pPQSSSHj?2l$uzQnxasi zS(2d;l98(5?&%xwK1DSTWMF_#i0kUrtDii1^8f$;IBQ2wpde$Cx4R2d8h1?!kR#;j p;uyklJvo7a>EZ=}MFs*44C`;P=ZZbw908PN@O1TaS?83{1OS%cI4b}E literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/stcomm-1.png b/htdocs/theme/md_dev/img/stcomm-1.png new file mode 100644 index 0000000000000000000000000000000000000000..df442fc1edaa803c7a3304408a2259aaa95ec7f4 GIT binary patch literal 431 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJdx@v7EBkdGCVoy%{*dRnKq1Zo zkH}&M2Cfev%;>bnWCl=>CEd~2k%3`jKlh(RRv>?JfKP}k0|$qqqN1jRgrTCMB@k(9 zdI6E4VGs~mT1Ej;R8)3yao)~-Fbb?Y@C+PnAKv19ju=-j#IKy>Ze^LzK+ z-@Ety{rm6VzyAlK|Nqktrau5WkEtZcFZe&h)9nUcK;A@87sn8Z%dzJZxehDvv^{*s zApK}tU&QJb32m{Xzvt(aokNuVR+u5%JHsu3`yv9D}E;pUXO@geCy6 CDYCo( literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/stcomm-1_grayed.png b/htdocs/theme/md_dev/img/stcomm-1_grayed.png new file mode 100644 index 0000000000000000000000000000000000000000..5942e6c72af8bf19fd85fcf34071f869638ba036 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAm`Z~Df*BafCZDwc@@9CtIEF}s z=bljHV^$Psedw#DJ@JH^>FQa9CA>ndD`yD%1U%;8>U_kdp|V_OgNg6tf6t!Q-u|Yp zCMUQ~-tuW&m%ru8B@#EP%Utv=9axvWklEYzKGITK3`mSt?j@iKcB8RalUSZvaTTffouetwJDeSqt(eFF=@BJ(= Up5mdKI;Vst0MM~f{Qv*} literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/stcomm0.png b/htdocs/theme/md_dev/img/stcomm0.png new file mode 100644 index 0000000000000000000000000000000000000000..cbe60a02d28bfe7c944b1bc0e2d778b89c23ff42 GIT binary patch literal 782 zcmV+p1M&QcP)x6?7L7fh1FJ)PW)s1W^$`8YtrMPBdFnrn7zIS95J;Vm6#Z zZCh?y&X0+To6|NG_vz-;rqfOL{dCS7jl#knIK1cL{Qu{Fe$VrgNEcL7lk8eUgY+Sj zIo^ZzE;@ZEx4QcMrHgc=)>cIlgYhY?yv`L7~Ae=>o? zQC;P7)sN6#GBmX8ve^#d^fUy1e+ZVAtia=`eC6e$JLkmR-Cu8ab$u!9@7K!IYE#JR z^g<*O16=s)cKblD-vNbU9V#oujJQxJoV_6s%#;ocER1Tk<|DiP5DB92t75Sj1OgGz z=^U`VeE=I9`%qIeprcaxDTIMQpm{tzyyA5_k79m*Fn;T=3WuX`auR~^@l|j*j=*gG z4!yn8zWjXN)0`Z30*-!HDqUH&T0Q8%A#85$gWc`{Y!;2i&^HWwdp;N&(*r((6R1>1 zC@vO^WM#G8B6W67UE%R2TT#3)j_&dJ!DQM6rP2UXQzk-WGPwzZt*w1nU*83-)&h-< z(u2&*mM6qBSS-Z@iDcRSd;CBkjHugy!%;#8JP6tWu_h*r2-FJDr|43zJ!pmsA zlFQd3BGF8wu5NIZLSdI?XSdxX{cjZ(c9E;9#5*M=ubGJQy^GHO0Ia+>n;mOIy#N3J M07*qoM6N<$g6xZQzW@LL literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/stcomm0_grayed.png b/htdocs/theme/md_dev/img/stcomm0_grayed.png new file mode 100644 index 0000000000000000000000000000000000000000..9016db48b027bb23d07b6217818abe89b3d982d1 GIT binary patch literal 456 zcmV;(0XP1MP)oFttJpC@u=iBrBKK+P-N+r)y7p$uum31kiU`9n@`DGes%iZWlD^%MG z*&n1Amqh3^`lE(N0bAVTD0L?&e{n^Ep}F>?-?NN;xcIHYf-WS@`e9YHsiXeX{Os^U z7Y?z5N!T!l)XQ)M3ryOkm*o#<0K2e~6i?;SQk%`Yk9EwT8-t8ySzyI9%*c5nJ)5YD8t=aib~t?rv>b4R@h~b8vde

    MMa)k3;hsbtW>BjQ)RB yTxi@{r?1ABel6;t*njA!W1wY}wmA5-(H$0000Hv7~}jkbV>q6+yQj6_Li!Od(S9)=Kk|p-GA+MUi0{Ewywuw=`>-mPv?A z=cT+&ZQdrj+*;<;nsYi^ThrVoHr-C&w@8QzpFhw0<2mO&oaZ?Nu}r0>^PSStst#vl z)EAQPsjF8jf|8P6u2>F7WMwrtFc`1Ba&j7rJc8f7Cu4LO^;Kz^Ox)v0)hnJO!_yU34 ztX6-=;-VE)QC*`kLMoj^L&G5A<4YM!z~bVr4P0(#OnG^4tw^MpQK_a$fCazHYPDj1 zei0JM1U`S(VR%@JdAp=jErcZQt3gFSu9qvFW~D}BkJm;pk^oq zEiFTcj^+n8)ax~liNUYxyD8?I;zFs;1`HQ zW4L|0O6TjF=}EXm5sp_Pc3n%SxfwF{J0SCb6YkUZf!|q%jvhH!tVZPKHjw6hKu^z@ z4cy(WKv7W#f`cEH5vTo#kO#Yo$r^Wi^rVJhyyhvI12^N5ryE|><%8V6O^H;hhD~T$b&&O0;^>a+SXTK(ws@-bZBlKB2DA{pwrpK z-rfwFm)G5uONVqm-cBs^b%G?&8M2$FV3<^3R@@9x*mm4Gu@z(%W+NjD1pxs$zNBQw z#U}^m4Vh$41Bk0+=y=e%TxUAG@=J9f~^0@eEGcvs`L_0uNL`?xiKnL;wH)07*qoM6N<$f>>Rj AIsgCw literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/stcomm1_grayed.png b/htdocs/theme/md_dev/img/stcomm1_grayed.png new file mode 100644 index 0000000000000000000000000000000000000000..367a55921e44767f726c115921a09a0df0be3cac GIT binary patch literal 472 zcmV;}0Vn>6P)NklHd z%}dh(0EhAK%%S^HkSSR-N|Tj{wFMy(OVp(zI-)e-`AR#XzQ7blxTFv>%2 zMlFBPq3GP7FbIT>(m}j*uo^*zK3ytm&-HVBq>@~FPMm33bZs~;AF-60S}RYVb7!x9 zn%oKCTDBYikf*GDcZb{a+P{$|M~-`R7Hb`Uxu>>!=+fKp);xJk@+>e#kb^NvlDDdF zT4VPGQX4k%_c8d;u;xd=`B{=Qki-hhYBe&B$y-1 zD{?$$m=tktvhR)dtE-|jnf#e&kto+0B}I&35=;}p`B@&xsJ?UPTOIW@5n_yX+6Xd1 zgmL<@zL3?|u-?TW_wmxq0F#U|#Umnw>8HG?szNsx2(e5OFZHCECCUSCb9T%4sF02l zCQ5>5m_%`qCeB^XZ`;>2ExV)!#+V__6IO_EoEdK5{9#*Chsq^M)rE@$2=bH+eh%aQ zy7#@MSBCzq+U09n_cK9;0LQj%tCkVf{J+q!`VJIMa*CSomIXOW5B~yH5bu#x@(m3D O0000zT|q{<*oW&l(yO+TPwVC!enXA$gvdSn2*x5Qo$5 zR#4Ekv9M5dl+<;#wX%uv@hQyB*Ue3YatC&7#T4`r?Y@2b2ywNFXG!bE1H{?pnGTq zZEZuie3{!26qK`-Dk|z&$7Z)@5qXQWbc@9XwfZYsTUF@jP`f~CwaG;=I%>w?;8#ec zW5~#;p9~Cqbb{J?iE_W1vM-g9wtY4;bv+)Xc_52<5d7{cbV<}GC}>4qo`9G)0EuMG z1@7t5pscJ5;ow>QV?_?Zji|c2qVOfz02fM5#1FrJ8UN zh(yDLpc`Rfc~&Yefs!?qtwrZ+52(6hVV}2P((o4Vs(0aTh7agHpp6?EGC?laLo6Nz zi}lWa{ygW?>C>6<)b)Fw7?32xq^*Nl--!7+Bbl9pylaqi*V{!v8`syTMMcF2M`Gd& zO+diI`+k0mUt^4Bc;d4>4c`qsm~}kNPLGh;FTp%s16H~>F>Vq<;Se#6w-6P@E)NJ` z`uY1mShKuHemC7@;#vh8`C{zj9Re1iUw9I%2iqLS;-Xcdp{&^8;G8Z0Kf4Q*`-b?n5oc1o wWQ=TIb%7 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/stcomm2_grayed.png b/htdocs/theme/md_dev/img/stcomm2_grayed.png new file mode 100644 index 0000000000000000000000000000000000000000..f667e3573d092f8114a72edaefe3dfd2bbb552c5 GIT binary patch literal 343 zcmV-d0jU0oP)^+<000SSjU=7xhF1sO@cu9Z zB!EUZ6}l_w&Dq#%fEJ*&VQguNzfS;2K!Xk2R*Fynkbn@f-r6Nq3xEV1`=TmB#bR>r z6F`Du?ylSD6jklwAxq(%M98Y}+uW{Xkgfgn!&U#ZgsPEDjD0sXQl0wdvWX-?14efA zPF$Eew(Xj+krt|oaHO^8#KMl5l@=*GQ}jAVvOR0JWYw0hsM4R8pH=;x2m33#&J|f0 pgqvmt4RHTa{dBOYl&cy%#002ovPDHLkV1fpsoX`LO literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/stcomm3.png b/htdocs/theme/md_dev/img/stcomm3.png new file mode 100644 index 0000000000000000000000000000000000000000..5a6c0aeface51c0bd908a4aeadfc2df1345bc274 GIT binary patch literal 832 zcmV-G1Hb%D0XBCc3%(d*4?aM1>DLoae*&|IYtB=R5>)MsT?u&Y78Q z_XUEkDym*fO>K!tPHsAPmX65J?{?(#Klv9G^}K6uS7^t_7p)x~3Q&;xq@?#w{}hSE z{dT3LeHY8hq&`&rp`~SNZE0x-2L~n?jV4S^Y9SK!84?oeZu}*#to(YVqTh%UFm8Mp*tsQZbNQUE^o5w%OWSZUOP@7iG%MI_@l^&OkqkX-ZI$oobh}og@yK@SX_(Cx?C+b<)%6W4 zE4$EWexka1&=4IhdKnfbw4<$iw6)2nwAyWI!w%-=HnF_C4H{;#SgF;FjST}jJC&gK z&<^_gREUd{w1^y)9I0W8}vV*8>dp~A(yXUaBv<%;b&7!jCeLENRU9d zUWcE2OK_83+yIs5!_`W#FFJ z2h=S5ijA$3hKCmgQfm80U=oTSXA;8wMl<-zl()8XO5_|VY8 zOaC9c$Apu^3x_DTH*Qm&Z$05%>5XfzZytC&dnERYeC2i4)cyuFEIHWKO>&_C0000< KMNUMnLSTXP)D+01e=_&kcHg@+e%)_h$S7Hn?zQyAa>3xuC%v!?_;1pP0?YW7r&_;gAl* z7It6L0BvSYisx?*rjz`lgbxkS86-NroudSj|1vRoF%n^wHIkU<=-3=%XzOR}cX-P8 z)lp5>DAUUb{UnHyrA?fk8(ac)@ba*gz(rvY#N{k8!bE6rImry7PL_X`8u$s&p@K&c zKYlv2NCl&_3@K-S=i}CK4<|S%{D9!`8x0#7C#{yc-S^)sCUL5O2Xy$s3Kk#strwI9 z{#yD-d}@LX_UKaM8*fqGKd=7Ged@LZz^Kb&R{ChuVUIG0E8){Z^mM4Q#ijrR8tt4p zst_vOPvzSBx4>Kz>l?!&lHjBU&{0Ac`+y#DE`-V`>nhq(TtI(t=tP zDK-Ysf&yL?S`~~%i?$$IAXF&ULMf%8m!ZAwUEY@9&rISvIobQ;thLwP=Ny9g4RUho z7G`BB<3yr{+id+x}a7Y{3L^6*e}r6 zXGM3n1scsaWM?Z!ckH;f#oxy198vr=`Tb$iKtg3u!E86PebemJ2T@Q+;$kj|yt`UR z9(JPo=@+!M8Btc&iln5Ql>~8|_>&`?QxRD5$0VJT3jh?Wd+*6=ihJ=gn*FFt(;3IYm@Q9_5#tGXmF}ING#_=ByUBS@HV4Fn3e59_(3(Zb5~J+e7q=)2oMEKrRY*%ow94XgX+Lb$4kU?#enyohj3XGqEAV%B;SQcU4Y2} zY_9+!3V;Qt`zMH?th8x?49*2^1((|2vmeTFB@+4)5T*>rCgEPszSPprkVEh6o5U2V zKLh8V15uZ32#irQ5ybh(>9>4{2noy#ybzinYL1o1VySo;wfgL4N5WyDh@JA<;MlUH wu&s|ju0N{suG-f~bJxk#bAm3do%sqs0T_i{@G(cP5C8xG07*qoM6N<$f~N4oEdT%j literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/stcomm4_grayed.png b/htdocs/theme/md_dev/img/stcomm4_grayed.png new file mode 100644 index 0000000000000000000000000000000000000000..4271aafb6ceaa0e364ba20610e20bfe1aeaf5699 GIT binary patch literal 488 zcmVP)NG$#F1DUfuco>qBT3k zeUR7Oy<6tZ!dNbqMF0^YO_CHyTsiQhvm{EV+?VCyLxzI@KoL-(7uZVHm(*uHT-9oU zw$38UwAmw|LxduvU|ARG76Y4Je(-d!F7T+ZLL8qKE+O!*yZJ%XRYG_Z(%K|LkqzE5 zgJKmQgV1b9$>Fuzar-|3DbCY{U>y&|Hboqw8=CX<*z{33#21zcahc;FimAsV>X~Cd2eu~91Z!F7k?;6nB=Ri e^niDa0PF)~9hO)a?_`+(0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipiA z5jqg5-Ax_<00d-7L_t(Y$F-JCY*bYg$A9PE``*lSI@phCr?iNC#nK9t1x5maQdb1y zPNNWGL|7T43wOo^LBq}%)-KqaxX>84D4M8P1tqo;k+cfb3PtS4y!&R}eb>cI%k%>R ziYIx=z4x7S?)jf{?m0*H?j1Z>EEZp@R;%42;%Ff6J@-QQ!sorgz@`G~gS)h5JNAX2&j%A2&Tc-N$zB-1(?;?vBPZo{PZzRzw>9d2X}K zFQj2FSZf&?8ltmQ+A=dejrSfAS#npS{GFX9BINUV6gp$Ny1J^xVmsDaKo*pGp8|r% z*G-YTD4z$gn8*9uphX~xEG|u%o14Qg_UgZid>qG!NN8GHTjNrxgtc~=LZuWYFoV;|?bK%DeOioR)dUZG3whj;&$1fLuWoqgsE=_PQW!dgmqMCyR)7IXWbgk~DTrN|8 zE||bzqghV9e~Pko^lskB58n-Q{g0a*K5~#xKKhtzlYi6Oy8&x0`Q`${U!7-ce3HK2 zjYM%wn90-C(^F4Nk5WSRRukp9GRBzu_WVi|7=wty#m`t zb8~*N{odEpM?E+Y^KU|H?O5S)ZQrqjGpE1ch@yzpIVzRvGQCPYxJU#hs8vv{b+S@@Xv!CO^^Mp0?DT1_ zT$^Cm;FApQ8$^q+duSh-LMw4JhfBbxFt~3IL2eb+TAZtOT%V@P^oj^!7%r@rw#UX6 zdDnCAF(#N#PqWZ?8d;OXk-XhnOBXr??M}qoDGB2l;BCf=d85{fU%^=9eK^WxlDgPIV zK$@hCjQ%X;$VyW-D{1O$lMNsZ1E6mh00n&;fuwbw+IVDbB^ntSJ@yZNhzfv5NXKCS O0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipiA z5j!x8s9cu-00c})L_t(Y$E}u2Y*j@V$A8~9bI!T1UP@bP3K$|u1I8#+gAWLMOmLwq z7sjm%Ltuk=MN#;NQ|M&RM$oTm9@SZ(;j-_dOPmD1a5jHXmaO&gaFBe8WoP7DAR{E!U zNn#BDf+yY0%irZSR?Tm@&4>gq?Y^t~ho5{=CMG6MjEs!D)ND2}Gd383IwBA5llK)q7RGBU}!5nj{!8u0=VN)6DszJr!)09$HCMD~s38SFRmTV{2=B9bT zKf`1DpGL*=&Gg4iwBBN{KFra9SGhQUhRg00JL_ZY8+w+r@dQ@5wRj=~0iPx2%?wq= zIrl#ZF(iWbj#8yU8q35UArg&xI>;{nC`U$*bH4E&tvJV#2cIXKgrD7M#zqe^I(vXO zubiiEsLsBTgPi@*C{--fz``Sx{6l`8eh5Eg~6TPNAO z{V2usB6-oGuU4b20cU>Ic|uerq)A7f_lk-8N8i4qgeVA#7e|sN_?WK4R19ZAL;m2d z)&b7ncpuXS_gBYQ8oW;K7s#~6Y;l#zeT+5@OgjNk)ti`|(lT@6nW5yp%XM{|u+fUlYm-6gTJ`g`~-B**>^3A&Umae>BR=>r1 z-9;75u$VOb)YR0whz<`843t9*VWSxl6%%tdId!2nQ~PyCy5Q41mx!3$vX`(fKf}5# qWexkD7wP%~BZA~hX+F@}G5$9kaK7(InJlgV0000mVOY89ijj9SOZ4hUlg}F+TAuy;ch=2$kA#1nm0Vr9%zks5-t<7fA{l!!<`NxM-vaf zKCZCYPIPVpMHPtzd2*+!!@S6 zU1LsU9)EM@^xN|d*84UC&15VI@(X5gcy=QV$no@aaSY+OUVH8$SAzmi>%+jG=YvGF zKK{MGMLJRV(B0ZM1r|!(uP2MFmp#vO@yZ8(*_0Ze_gie7VgxprH(&u6{1-oD!M=W5hb53#(jnf%LRYAImoVy$=K)qi~X=i zo_YW9`uuju?b_WIY&h%{yn-nRJ(AiZ!5*21`Vw*yIcm`!A)lFv688eu! zGo4?P8K!PAbc1Ia7JgR^(=^Og)3R!={_j8Z1*!zj`WFPpKfn?L1Citz(xqJ*JGmI|&8uyW&4;EVuRS;#_3Vs&9Zg=S*?Z1epWgh1uXT@m`|(FV zT*!U;rKh3ySh@6FtrV$vd(i*b*LHV9-Qa_3owu(Pl@7TN4i+u76pmG=pZ!(8{Kkog zHIZ9l|Ft}E1~S)U$#)Na|JzSTZ_fLJTXUn8;cu!AH}AMHHaB^D{H@%&2uMaV-LsV) zj$^*5uAi^$Z>?Jjggg5E-lnsmjUChu^7W6?3nwlXbgpEZPOtnrJn{L`9jD~7HB8yumCo2ia{c1AwI$8rbX)7j zcyGAy#b|e2+`A~uJpYQgQsJ%|DD$0etV^!7ZJ&(YTkj3mrV6Xyx#e+f@n(n47R+64 zE`9j)mm{bAi|LfjUi9O>m&JHf>io`>y+!o6Lm}72+WtHCH^E@1*bu9kUK9VbF6XNL zV`S?(TlqqG+&%L&R2-b04hiC;4evL7)LyejC~oha%M^S#l`0#3J+L$h4m9oy3Brzl E0f6{pyZ`_I literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/title.png b/htdocs/theme/md_dev/img/title.png new file mode 100644 index 0000000000000000000000000000000000000000..bb48d617379cfd5d92909464a4571e9b987649d7 GIT binary patch literal 1607 zcmV-N2Dtf&P)hVDXBA!i{oS8mx&%XU%*Iz0+4rm9B31k8YF-Uf`cKs~?;z1*m z$ERmZn)-5LVrs(E5duDeHyheJ-d?=nt7g5iDKkAOQ^+TXtgNi}ZvA}h(nAG+94>ch zc242D)6)|<7zQy800pLQpKpY(TOiV&*%DfpFQ^Ld4N-oBVF&-l< z3=#yv;}Haob1^OwbWoJtX13UE<0ic^>FU{oCm$GqgYz+QP(uN6h>Z#l z36jeg&oHFS0Py)do=7MZ@zH@Izyu$#g~K2?NSoDazFe)Te|Zo5fOtz)k@?Q<18!8I4O}xq!Ni(f?Vb~MbTjBjG_-bZS-fiSb?+kr>Wg&wph%szq4>=Md|*MUI8MLW-XmKE+I}NH(@Y;1UI`jiP~!=08M0E0(NeQjLI=!qhM zfWQeZ9vl?hFSuX-P^nZZcRpfhP~i5sThKcKzCgZxB+7-pRj1u|`1Ik;D?gY|Q+C=n z1+snvC(Ky1dQ^POFr*!db8+0`Ei(`+?iT8vX#UZFF1vS~jSMO#Q=7iJroL|3itNSO z%A=><0NCug@6Ud5LdHBzi{nW}&_KZBa#(tAkDy1`WrN+(@E7-nGFvIoVWEJb(*|1F zY;megdqw6R%(XDn0SnLk=9`+X3nY5GE!h*b<)}}j^cQ5W< z&j9e0O4ZD~q7&I@@(Hfg-UXB}1US&0H0{g~tLqZ>F!;2gr_s#_{o2kkn0mX>*nGI) z;CJn}E*x~vfsmB67qYU~ZhEz@t`;bBuGX80mq^%J+e33 z4S+HSMtqjNZtIw_sZU&~)&Mgv%=4@=k)T;+=qpC|6~uX8h=LE)aslY*?6Q5Izq_ex4>-6YpYQ>%i1e`c3gVoIVJaa|N(G=*Z?qI0*#6_u z1KV=ijjgB9C5`?|asQ;TX)8Zpvte3!RW0bi!#w%z3DVQdWo1al@l)wIpy5Qs2P=@S1QvQ-c<7pq2>$ zPT=6K_BT`UzKthN7Jj?SX0=>!2~+pmjCeA+Vp?uN$r`P$MPz^>K2h)vxpzeP1Q!Gd z3D98$;C92Ewx0?%A1gbtKZhboMwnT89S^b{2aZWjU9oJ%syC~DH9(S3A|=MlZg1Vf zB0d+OJp$-V6wqii`twCwj#ivKvlUK7nVCzJO;Rz=JQ~#V7DA9()9= zAil{uTdU9%3eLbDe!iXg#=W^Op!4O~5)c*C(%?Se6pRjnKpT0CF=3R%kyJVu93-4( z8K=y7S&#E#GGeY~)nqztnkFB&^VZI5+gLvYh<< zy+A3d2wN3|k{A6Hw0nm{BPh}YfUCvv=hKytBicbTL1RhLsJn-SXLyIUqN9W=+_sMu3t)Zyf?aKU>74o86?p2dpuAP5n^r52ZgZ+6QMLrCWUie^N^> literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/tmenu2.jpg b/htdocs/theme/md_dev/img/tmenu2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b8f434c6d1f1fcc6ef65415ad336b2efee8f786a GIT binary patch literal 569 zcmb7=zfJ-{5XNVA*}FAdxEVMPf^Y|fMhkdj`Frj=@^+ex~OBu(-V6szy~C2LDb#8L9^a<{-1 zwn1y`fMV2)?jEXwiU{+im7hN#=-+)nrQI_G(pIDi0LR0dhvVzv!C*HNM@)-J3@tHO z$w#A(PDK;(LgqxF5i?Bx5U81e7881t8D6Hs9GsTGiAPh8tbMm`9ZdHCEt}Klt8~Q4 zOHO3^cIJGv**_Ci%*$*3h;l~Sx)9A8fkHF?slX$o!R5z{gU08r-qp#*;hTH<0$aRR AT>t<8 literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/tmenu3.jpg b/htdocs/theme/md_dev/img/tmenu3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d42f804b026fdd4d6a1402c4be09b78232d06fe3 GIT binary patch literal 571 zcmaivy-Gtt5QWd|=7xwuX8eUHYJ3Dsn?(Wv#U=>$K7xO>q_WV)$~s6Mz`|M(3tJ1p z9|Rx3B8dGubMYGYB4oDM-Qk-v=ftP@4&H2Uv_a&spa=04E&Yuy=X6FfSJd$3OyrM3 zf))74JKjQSScLbq0w?5!;vHtq9Foe$v_D7iY2R0}YJ9*MfX*Kjs} ziOiHtDqhnrW$v=yP-;d>3|Ml;69qa^Vp>uWfO9}22MPvo8Cd?=QVnkDe<#xE7EVI* ztku8KUmgQq9do^IV^Ypbymy|DnK`~XRj47FCEZW5-t7%?&OGw|#hS^@GpJ(f!yltFvuTd2qPaKpRk~?ny9Fn zzp1XNKgr<#AqGJX1`P&gW=16jCP7AKLB{__7{q{1Wn@4BOe{cgaiAzOiZBBs6Z8LD z3_Q$?3`_#d0t^g{ceZX`Dx3gREFyqr1cL%lB?r(5Mph>VAeI1KVXvrUupj1lu)hROA0Xr~0YVM~D-Z?RiyBS>f-uk9 K3%JPtzX<^N4_tHr literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/unlock.png b/htdocs/theme/md_dev/img/unlock.png new file mode 100644 index 0000000000000000000000000000000000000000..afefaa94d47dbe2e173bbcb9d464e02dd2bfc771 GIT binary patch literal 686 zcmV;f0#W^mP)Olo!!}OW@h)zdp|!P)sG@X1m~PTGv-6!D^nC_25~G} zYw|4Hx_9^P?eAAselo^njYfl|r6n}VLn+X{f7UORJ~`}m&unjRr%(6y2cGBIh0B*O zy|ujj^Z{{(mfpf`S9M=7bE2&!|*vy}Cz`?wKDu%B!twi`e;xSRKb2c6VH6d4o|ge1u=>4) z_DNGe_xfw~!mT}M@4j43y^oe_7e71Sb(OSps^?B#Z#Eys8*9I8L{YQ@SO8srCHS_! zaB1<4^IAT>9^#Tjm81V~2cbN?e@nLx{FnZn5Xa%PZ;S~63!uG9>7Afnt5WrGlK@3d zG0F&woPn7U0kfL_e4y1lPyc);d@|ncK zIDz8~Dk=CzsnB@QPG+}&91sA#`bTo7@fY_M@`5-72O=N>2#A2i7E_@M3;_WC2fUM9 Unei{ZxBvhE07*qoM6N<$g5&^0kpKVy literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/uparrow.png b/htdocs/theme/md_dev/img/uparrow.png new file mode 100644 index 0000000000000000000000000000000000000000..5d54c6a4c91bb97934aa53b8116985016417559b GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4%JB>7u;-UBK25>H=O_G{d%e5PjlE8a~33UL;A zL>4nJaD4z_MyE95jgR3=A9lx&I`xf)oY#gt)Fa5vj}T*ADJ(?6DY)4 z;1OBOz`!j8!i<;h*8KqrvZOouIx;Y9?C1WI$O`0N3h)VW1=1WG90CFYii(<=nub7N zX=&-?N!BLbm^R>Tj#9ZJLg=` zoO4l2w;tOH0(-X}ySMdP_SSoI_5#7NV|$OC+k5QV-edRnp4+?k+LXQ5=IjOXfZ*J7 zpxCkJQ_h`xe(u__bJxzDyLRu~wdd#V9Xki4?>)ZgU?7)rz>qo3rEa-RUoUAnsv0J=i2VOQ{mj0bpH12u6UF!GDm<=FX%Kzx^dq8DplQ0Hm*nEL z>J1K4wPkX=boD2F**Lqj>UGe$?xV(Ea%*3-eg8G%{-Q0@ZJ?*AZsuVbQ08H0UKgYv=Is~~8eS6RUL5U{kdTm`p6;F8GqNhM_28=yJO$U?T4@JIdXBwk()bDJ==Zy+1}Gn_MLgY@9gt~ zOQ&33+Vkl2+9$`hK0dSI@!1WJ&jZn>>ldyZJpbb0g%?LJy*hUJ^|33jPhNX-`udx* zH(s5&`S$#+cjs@vyL9LMrMvI1+iO#Adu zxZ!*2_Q!kb=HLGLIcb5=MSbS2Ya@l({Fx#&epbijN4)rWW257Q!K2W6f%frX}wAomjn>{@%gqW*c zsd{P7AIX|Y{rvMUQz0@Zn(M7qqYbGMx3DV36tdJE2PRwJL8 zA@-04hBuko%=J;23&WDp!Wh9?sF6*ScDjgtg8@NXlN)udaF8`DG^d3UQbN)v)o1WE zx0Q4dikfY$Emjsn#IlbNFa=@gM8lFX7NdZ~Lj;Bt+x9%$t-FSE#6^MusZEV_CzmUh z9L6H1K-t%fC-6(Uv$vF=ZeNts@_41?%-F9w!``p#+vOhxym|7`-O9(S s3k!QU4j!%#7JHW~-~O4-;hz^7@q6dY@ekS8OX(w`w%VwU-RqD40~M+QAOHXW literal 0 HcmV?d00001 diff --git a/htdocs/theme/md_dev/img/working.gif b/htdocs/theme/md_dev/img/working.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e421c3113fbe4f3ddc96bb743cecc8530fd4c21 GIT binary patch literal 2483 zcmeH|@oyVv8ONXZeece1&S&?vbM3s$lyl~-*J8@i1mUio^x92YZ_6TgOKH&h!?{#d z3kbPTXg~tqa~zVewRml!B@m%YP}VMOB}dv1o4Oy)skT*xv4DgW2~`}UAec~b)d@1G zES%e4x@vy`+Iv5obUK|r&*%9*&+U0)cXoRz3Q_nEgSEA_8#iuTyLRo;rArG73)9on zV`F0{PMkP=`0&1c`+9nMy1KeLJ3C{s7{nkr!TYV-r{_}x{}%>QYvKOhfoFH+ioM&m zS_B0}r9PD85HQHJ3T%xD(B~n=ff)c2)iAr#G%!Ru5}H@G1zw|8%@lJUgfv=Qwi}g- zv}xn&OU8A9+IQfo?Y85L;I{X=YcTuv%x2R3=F$4W+yp2_LbT__sqNuRvAOMKabAir zus!eBFG2mc+IbELBTAP)T;$HH(#*Dt=eqtOoGw|BKF$}p!*?7~R8ROGqDX=SZ5UM< z$4usxeXK|yeP+v^~RH8i^RXX*4~kuK#NMP{9{ydi{>htmrz+k+KD^nl+9k zX8uTP9-HmMvZ)rIeD#qkBJf7li-B|Dxijj2pLnsvKMoRwNFeI_0Z4Mt1L4qA!h%!- zLntosq2&gQ5~aUd6#TMGSw7eVZQD>w3x&J`a%f8$ zP!3atnZb8+mq#NSFBCX{Ory!7y$BURYI-@#g-7C>-b$XkY3DF`R6XQ%H2}*>S~q!a zSWzX#KF0)1AcKO6X7^Pdnt$?#3+=|$g#=Sg3_*p><&eIXPdk&ZY-81Of7{ zj!5wf8hge-rz2n4x*9?a9L%GCd(XEUPfa4-oVvni`zP0*`QFY4*(WLZK}$ix2o&IO zo*9M^C=_|@z)DR(m8n~j+%ENugSjEgjr3cNytN}e#tu3TbZnHkC!AAE$?$U7Lz9Tz z{^RCmsw!zJ(7Go;j<95*2Kjg9NSj%No7eY3Sm#-<{c8~HFI%Jc;-Fx+v}D}rNWu^t zk#;phOJZphN!0p#)6EY{s!;{ub0jI9w#S{NQ^ATXE{ojo$#Ce+PcXRHnRg%&yG0#kpm>@AsY!hwkkN1Rc2xajfMeYw=)EF*Rt; zYdAE(Ei(M(2-0sqYYBJh6eetSRJ_MW@w&|5>vdNkBBgD}q02w9o{JWXqV(=4`LXgi z#2ruC8P+Y;;a41@C7FFDB}fP-t@l6p+b;b0)9PInZTI~M?krly-NrB`X)fw1iL6m5 zn{|*BO-g1ca7@E7y{}OFOD}zR@5|k;(b!W((vh8YJ6D-tk6zWYH~*T$+vN`1DD(c4 kB%|)E-2#k@pI5Dp7f_WB5Ce@CU|?W2 z=Gb-TpTQ~5Y~f@MD-Ovy?0z%SI9)dy9@-@`^WZkUgd>LvFX%=~Sl(U6ZYjaT?v?%A z1857TIVK=;{CX4>q+57)Z+O<_Qs@*Il3*yQkl^DQEw!RXW^3vFw}}$$4GPyK9<@13 zZcWjMbhu1r&HpL)deyixXx_eD|2jxHdEwV z@jr~shxv_Grbx}-&w|Y;px=^IwNDwfO?)#aEWWjS8E2~^4~wBod!mfsDz~N$7v-6g zf?_}0${SedNcEpsQe^3a)o(@|yNcAcy`HCte31C;)5xP%b~qs>DP&4(%TBqBNGHwn zryK;B^?n{z^AXEDCJRah`Jq2q4ioVzB|S{>bv z8i-6tn7xgWm*tRyz-+^YL)Xqt#BB^P=2xdWU74eKU5 + * Copyright (C) 2006 Rodolphe Quiedeville + * Copyright (C) 2007-2012 Regis Houssin + * Copyright (C) 2011 Philippe Grand + * Copyright (C) 2012 Juanjo Menent + * + * 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/theme/eldy/style.css.php + * \brief File for CSS style sheet Eldy + */ + +//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Not disabled because need to load personalized language +//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Not disabled to increase speed. Language code is found on url. +if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); +//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); // Not disabled because need to do translations +if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK',1); +if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL',1); +if (! defined('NOLOGIN')) define('NOLOGIN',1); // File must be accessed by logon page so without login +if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1); +if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1); +if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); + +session_cache_limiter(FALSE); + +require_once '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + +// Load user to have $user->conf loaded (not done into main because of NOLOGIN constant defined) +if (empty($user->id) && ! empty($_SESSION['dol_login'])) $user->fetch('',$_SESSION['dol_login']); + + +// Define css type +header('Content-type: text/css'); +// Important: Following code is to avoid page request by browser and PHP CPU at each Dolibarr page access. +if (empty($dolibarr_nocache)) header('Cache-Control: max-age=3600, public, must-revalidate'); +else header('Cache-Control: no-cache'); + +// On the fly GZIP compression for all pages (if browser support it). Must set the bit 3 of constant to 1. +if (isset($conf->global->MAIN_OPTIMIZE_SPEED) && ($conf->global->MAIN_OPTIMIZE_SPEED & 0x04)) { ob_start("ob_gzhandler"); } + +if (GETPOST('lang')) $langs->setDefaultLang(GETPOST('lang')); // If language was forced on URL +if (GETPOST('theme')) $conf->theme=GETPOST('theme'); // If theme was forced on URL +$langs->load("main",0,1); +$right=($langs->trans("DIRECTION")=='rtl'?'left':'right'); +$left=($langs->trans("DIRECTION")=='rtl'?'right':'left'); + +$path=''; // This value may be used in future for external module to overwrite theme +$theme='eldy'; // Value of theme +if (! empty($conf->global->MAIN_OVERWRITE_THEME_RES)) { $path='/'.$conf->global->MAIN_OVERWRITE_THEME_RES; $theme=$conf->global->MAIN_OVERWRITE_THEME_RES; } + +// Define image path files and other constants +$fontlist='arial,tahoma,verdana,helvetica'; //$fontlist='Verdana,Helvetica,Arial,sans-serif'; +$img_head=''; +$img_button=dol_buildpath($path.'/theme/'.$theme.'/img/button_bg.png',1); +$dol_hide_topmenu=$conf->dol_hide_topmenu; +$dol_hide_leftmenu=$conf->dol_hide_leftmenu; +$dol_optimize_smallscreen=$conf->dol_optimize_smallscreen; +$dol_no_mouse_hover=$conf->dol_no_mouse_hover; +$dol_use_jmobile=$conf->dol_use_jmobile; + + +// Define reference colors +// Example: Light grey: $colred=235;$colgreen=235;$colblue=235; +// Example: Pink: $colred=230;$colgreen=210;$colblue=230; +// Example: Green: $colred=210;$colgreen=230;$colblue=210; +// Example: Ocean: $colred=220;$colgreen=220;$colblue=240; +//$conf->global->THEME_ELDY_ENABLE_PERSONALIZED=0; +//$user->conf->THEME_ELDY_ENABLE_PERSONALIZED=0; +//var_dump($user->conf->THEME_ELDY_RGB); +$colred =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_RGB)?235:hexdec(substr($conf->global->THEME_ELDY_RGB,0,2))):(empty($user->conf->THEME_ELDY_RGB)?235:hexdec(substr($user->conf->THEME_ELDY_RGB,0,2))); +$colgreen=empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_RGB)?235:hexdec(substr($conf->global->THEME_ELDY_RGB,2,2))):(empty($user->conf->THEME_ELDY_RGB)?235:hexdec(substr($user->conf->THEME_ELDY_RGB,2,2))); +$colblue =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_RGB)?235:hexdec(substr($conf->global->THEME_ELDY_RGB,4,2))):(empty($user->conf->THEME_ELDY_RGB)?235:hexdec(substr($user->conf->THEME_ELDY_RGB,4,2))); + +// Colors +$isred=max(0,(2*$colred-$colgreen-$colblue)/2); // 0 - 255 +$isgreen=max(0,(2*$colgreen-$colred-$colblue)/2); // 0 - 255 +$isblue=max(0,(2*$colblue-$colred-$colgreen)/2); // 0 - 255 +$colorbackhmenu1=($colred-3).','.($colgreen-3).','.($colblue-3); // topmenu +$colorbackhmenu2=($colred+5).','.($colgreen+5).','.($colblue+5); +$colorbackvmenu1=($colred+15).','.($colgreen+16).','.($colblue+17); // vmenu +$colorbackvmenu1b=($colred+5).','.($colgreen+6).','.($colblue+7); // vmenu (not menu) +$colorbackvmenu2=($colred-15).','.($colgreen-15).','.($colblue-15); +$colorbacktitle1=($colred-5).','.($colgreen-5).','.($colblue-5); // title of array +$colorbacktitle2=($colred-15).','.($colgreen-15).','.($colblue-15); +$colorbacktabcard1=($colred+15).','.($colgreen+16).','.($colblue+17); // card +$colorbacktabcard2=($colred-15).','.($colgreen-15).','.($colblue-15); +$colorbacktabactive=($colred-15).','.($colgreen-15).','.($colblue-15); +$colorbacklineimpair1=(244+round($isred/3)).','.(244+round($isgreen/3)).','.(244+round($isblue/3)); // line impair +$colorbacklineimpair2=(250+round($isred/3)).','.(250+round($isgreen/3)).','.(250+round($isblue/3)); // line impair +$colorbacklineimpairhover=(230+round(($isred+$isgreen+$isblue)/9)).','.(230+round(($isred+$isgreen+$isblue)/9)).','.(230+round(($isred+$isgreen+$isblue)/9)); // line impair +$colorbacklinepair1='255,255,255'; // line pair +$colorbacklinepair2='255,255,255'; // line pair +$colorbacklinepairhover=(230+round(($isred+$isgreen+$isblue)/9)).','.(230+round(($isred+$isgreen+$isblue)/9)).','.(230+round(($isred+$isgreen+$isblue)/9)); // line pair +$colorbackbody='#f0f0f0'; +$colortext='40,40,40'; +$fontsize='12'; +$fontsizesmaller='11'; + +// Eldy colors +if (empty($conf->global->THEME_ELDY_ENABLE_PERSONALIZED)) +{ + //$conf->global->THEME_ELDY_TOPMENU_BACK1=join(',',colorStringToArray('#37474f')); // topmenu #607D8B + $conf->global->THEME_ELDY_TOPMENU_BACK1=join(',',colorStringToArray('#607D8B')); // topmenu #607D8B + //$conf->global->THEME_ELDY_TOPMENU_BACK1=join(',',colorStringToArray('000')); // topmenu #607D8B + $conf->global->THEME_ELDY_TOPMENU_BACK2='236,236,236'; + $conf->global->THEME_ELDY_VERMENU_BACK1='255,255,255'; // vmenu + $conf->global->THEME_ELDY_VERMENU_BACK1b='230,232,232'; // vmenu (not menu) + $conf->global->THEME_ELDY_VERMENU_BACK2='240,240,240'; + $conf->global->THEME_ELDY_BACKTITLE1=join(',',colorStringToArray('607D8B')); // title of arrays + $conf->global->THEME_ELDY_BACKTITLE2='230,230,230'; + $conf->global->THEME_ELDY_BACKTABCARD2='255,255,255'; // card + $conf->global->THEME_ELDY_BACKTABCARD1='234,234,234'; + $conf->global->THEME_ELDY_BACKTABACTIVE='234,234,234'; + $conf->global->THEME_ELDY_BACKBODY='#f0f0f0;'; + $conf->global->THEME_ELDY_LINEPAIR1='242,242,242'; + $conf->global->THEME_ELDY_LINEPAIR2='248,248,248'; + $conf->global->THEME_ELDY_LINEPAIRHOVER='238,246,252'; + $conf->global->THEME_ELDY_LINEIMPAIR1='255,255,255'; + $conf->global->THEME_ELDY_LINEIMPAIR2='255,255,255'; + $conf->global->THEME_ELDY_LINEIMPAIRHOVER='238,246,252'; + $conf->global->THEME_ELDY_TEXT='50,50,130'; + if ($dol_use_jmobile) + { + $conf->global->THEME_ELDY_BACKTABCARD1='245,245,245'; // topmenu + $conf->global->THEME_ELDY_BACKTABCARD2='245,245,245'; + $conf->global->THEME_ELDY_BACKTABACTIVE='245,245,245'; + } +} + +$colorbackhmenu1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TOPMENU_BACK1)?$colorbackhmenu1:$conf->global->THEME_ELDY_TOPMENU_BACK1) :(empty($user->conf->THEME_ELDY_TOPMENU_BACK1)?$colorbackhmenu1:$user->conf->THEME_ELDY_TOPMENU_BACK1); +$colorbackhmenu2 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TOPMENU_BACK2)?$colorbackhmenu2:$conf->global->THEME_ELDY_TOPMENU_BACK2) :(empty($user->conf->THEME_ELDY_TOPMENU_BACK2)?$colorbackhmenu2:$user->conf->THEME_ELDY_TOPMENU_BACK2); +$colorbackvmenu1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_VERMENU_BACK1)?$colorbackvmenu1:$conf->global->THEME_ELDY_VERMENU_BACK1) :(empty($user->conf->THEME_ELDY_VERMENU_BACK1)?$colorbackvmenu1:$user->conf->THEME_ELDY_VERMENU_BACK1); +$colorbackvmenu1b =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_VERMENU_BACK1b)?$colorbackvmenu1:$conf->global->THEME_ELDY_VERMENU_BACK1b) :(empty($user->conf->THEME_ELDY_VERMENU_BACK1b)?$colorbackvmenu1b:$user->conf->THEME_ELDY_VERMENU_BACK1b); +$colorbackvmenu2 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_VERMENU_BACK2)?$colorbackvmenu2:$conf->global->THEME_ELDY_VERMENU_BACK2) :(empty($user->conf->THEME_ELDY_VERMENU_BACK2)?$colorbackvmenu2:$user->conf->THEME_ELDY_VERMENU_BACK2); +$colorbacktitle1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_BACKTITLE1) ?$colorbacktitle1:$conf->global->THEME_ELDY_BACKTITLE1) :(empty($user->conf->THEME_ELDY_BACKTITLE1)?$colorbacktitle1:$user->conf->THEME_ELDY_BACKTITLE1); +$colorbacktitle2 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_BACKTITLE2) ?$colorbacktitle2:$conf->global->THEME_ELDY_BACKTITLE2) :(empty($user->conf->THEME_ELDY_BACKTITLE2)?$colorbacktitle2:$user->conf->THEME_ELDY_BACKTITLE2); +$colorbacktabcard1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_BACKTABCARD1) ?$colorbacktabcard1:$conf->global->THEME_ELDY_BACKTABCARD1) :(empty($user->conf->THEME_ELDY_BACKTABCARD1)?$colorbacktabcard1:$user->conf->THEME_ELDY_BACKTABCARD1); +$colorbacktabcard2 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_BACKTABCARD2) ?$colorbacktabcard2:$conf->global->THEME_ELDY_BACKTABCARD2) :(empty($user->conf->THEME_ELDY_BACKTABCARD2)?$colorbacktabcard2:$user->conf->THEME_ELDY_BACKTABCARD2); +$colorbacktabactive =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_BACKTABACTIVE)?$colorbacktabactive:$conf->global->THEME_ELDY_BACKTABACTIVE):(empty($user->conf->THEME_ELDY_BACKTABACTIVE)?$colorbacktabactive:$user->conf->THEME_ELDY_BACKTABACTIVE); +$colorbacklineimpair1=empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_LINEIMPAIR1) ?$colorbacklineimpair1:$conf->global->THEME_ELDY_LINEIMPAIR1):(empty($user->conf->THEME_ELDY_LINEIMPAIR1)?$colorbacklineimpair1:$user->conf->THEME_ELDY_LINEIMPAIR1); +$colorbacklineimpair2=empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_LINEIMPAIR2) ?$colorbacklineimpair2:$conf->global->THEME_ELDY_LINEIMPAIR2):(empty($user->conf->THEME_ELDY_LINEIMPAIR2)?$colorbacklineimpair2:$user->conf->THEME_ELDY_LINEIMPAIR2); +$colorbacklineimpairhover=empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_LINEIMPAIRHOVER) ?$colorbacklineimpairhover:$conf->global->THEME_ELDY_LINEIMPAIRHOVER):(empty($user->conf->THEME_ELDY_LINEIMPAIRHOVER)?$colorbacklineimpairhover:$user->conf->THEME_ELDY_LINEIMPAIRHOVER); +$colorbacklinepair1 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_LINEPAIR1) ?$colorbacklinepair1:$conf->global->THEME_ELDY_LINEPAIR1) :(empty($user->conf->THEME_ELDY_LINEPAIR1)?$colorbacklinepair1:$user->conf->THEME_ELDY_LINEPAIR1); +$colorbacklinepair2 =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_LINEPAIR2) ?$colorbacklinepair2:$conf->global->THEME_ELDY_LINEPAIR2) :(empty($user->conf->THEME_ELDY_LINEPAIR2)?$colorbacklinepair2:$user->conf->THEME_ELDY_LINEPAIR2); +$colorbacklinepairhover =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_LINEPAIRHOVER) ?$colorbacklinepairhover:$conf->global->THEME_ELDY_LINEPAIRHOVER) :(empty($user->conf->THEME_ELDY_LINEPAIRHOVER)?$colorbacklinepairhover:$user->conf->THEME_ELDY_LINEPAIRHOVER); +$colorbackbody =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_BACKBODY) ?$colorbackbody:$conf->global->THEME_ELDY_BACKBODY) :(empty($user->conf->THEME_ELDY_BACKBODY)?$colorbackbody:$user->conf->THEME_ELDY_BACKBODY); +$colortext =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TEXT) ?$colortext:$conf->global->THEME_ELDY_TEXT) :(empty($user->conf->THEME_ELDY_TEXT)?$colortext:$user->conf->THEME_ELDY_TEXT); +$fontsize =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_FONT_SIZE1) ?$fontsize:$conf->global->THEME_ELDY_FONT_SIZE1) :(empty($user->conf->THEME_ELDY_FONT_SIZE1)?$fontsize:$user->conf->THEME_ELDY_FONT_SIZE1); +$fontsizesmaller =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_FONT_SIZE2) ?$fontsize:$conf->global->THEME_ELDY_FONT_SIZE2) :(empty($user->conf->THEME_ELDY_FONT_SIZE2)?$fontsize:$user->conf->THEME_ELDY_FONT_SIZE2); +// No hover by default, we keep only if we set var THEME_ELDY_USE_HOVER +if ((! empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) && empty($user->conf->THEME_ELDY_USE_HOVER)) + || (empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) && empty($conf->global->THEME_ELDY_USE_HOVER))) +{ + $colorbacklineimpairhover=''; + $colorbacklinepairhover=''; +} + +// Format color value to match expected format (may be 'FFFFFF' or '255,255,255') +$colorbacktabcard1=join(',',colorStringToArray($colorbacktabcard1)); +$colorbacktabcard2=join(',',colorStringToArray($colorbacktabcard2)); + +// Format color value to match expected format (may be 'FFFFFF' or '255,255,255') +$colorbacktabcard1=join(',',colorStringToArray($colorbacktabcard1)); +$colorbacktabcard2=join(',',colorStringToArray($colorbacktabcard2)); + +// Set text color to black or white +$tmppart=explode(',',$colorbackhmenu1); +$tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : ''); +if ($tmpval <= 360) $colortextbackhmenu='FFF'; +else $colortextbackhmenu='111'; +$tmppart=explode(',',$colorbackvmenu1); +$tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : ''); +if ($tmpval <= 360) { $colortextbackvmenu='FFF'; } +else { $colortextbackvmenu='111'; } +$tmppart=explode(',',$colorbacktitle1); +$tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : ''); +if ($tmpval <= 360) { $colortexttitle='FFF'; $colorshadowtitle='888'; } +else { $colortexttitle='111'; $colorshadowtitle='FFF'; } +$tmppart=explode(',',$colorbacktabcard1); +$tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : ''); +if ($tmpval <= 340) { $colortextbacktab='FFF'; } +else { $colortextbacktab='111'; } + + +$usecss3=true; +if ($conf->browser->name == 'ie' && round($conf->browser->version,2) < 10) $usecss3=false; +elseif ($conf->browser->name == 'iceweasel') $usecss3=false; +elseif ($conf->browser->name == 'epiphany') $usecss3=false; + +print '/*'."\n"; +print 'colred='.$colred.' colgreen='.$colgreen.' colblue='.$colblue."\n"; +print 'isred='.$isred.' isgreen='.$isgreen.' isblue='.$isblue."\n"; +print 'colorbacklineimpair1='.$colorbacklineimpair1."\n"; +print 'colorbacklineimpair2='.$colorbacklineimpair2."\n"; +print 'colorbacklineimpairhover='.$colorbacklineimpairhover."\n"; +print 'colorbacklinepair1='.$colorbacklinepair1."\n"; +print 'colorbacklinepair2='.$colorbacklinepair2."\n"; +print 'colorbacklinepairhover='.$colorbacklinepairhover."\n"; +print 'usecss3='.$usecss3."\n"; +print 'dol_hide_topmenu='.$dol_hide_topmenu."\n"; +print 'dol_hide_leftmenu='.$dol_hide_leftmenu."\n"; +print 'dol_optimize_smallscreen='.$dol_optimize_smallscreen."\n"; +print 'dol_no_mouse_hover='.$dol_no_mouse_hover."\n"; +print 'dol_use_jmobile='.$dol_use_jmobile."\n"; +print 'dol_screenwidth='.$_SESSION['dol_screenwidth']."\n"; +print 'dol_screenheight='.$_SESSION['dol_screenheight']."\n"; +print '*/'."\n"; + +if (! empty($conf->dol_optimize_smallscreen)) $fontsize=11; +?> + +/* ============================================================================== */ +/* Default styles */ +/* ============================================================================== */ + + +body { + + background-color: #FFFFFF; + + background: ; + + color: #101010; + font-size: px; + font-family: ; + margin-top: 0; + margin-bottom: 0; + margin-right: 0; + margin-left: 0; + trans("DIRECTION").";\n"; ?> +} + +a:link, a:visited, a:hover, a:active { font-family: ; font-weight: bold; color: #4A4A4A; text-decoration: none; } + +a:hover { text-decoration: underline; color: #000000;} + + + +input:focus, textarea:focus, button:focus, select:focus { + box-shadow: 0 0 4px #8091BF; +} +textarea.cke_source:focus +{ + box-shadow: none; +} + +input, input.flat, textarea, textarea.flat, form.flat select, select.flat { + font-size: px; + font-family: ; + background: #FDFDFD; + border: 1px solid #C0C0C0; + /*padding: 1px 1px 1px 1px; */ + margin: 0px 0px 0px 0px; +} + +input, textarea, select { + border-radius:4px; + border:solid 1px rgba(0,0,0,.3); + border-top:solid 1px rgba(0,0,0,.3); + border-bottom:solid 1px rgba(0,0,0,.2); + /* box-shadow: 1px 1px 1px rgba(0,0,0,.2) inset;*/ + padding:4px; + margin-left:1px; + margin-bottom:1px; + margin-top:1px; + } + + +select.flat, form.flat select { + font-weight: normal; +} +input:disabled { + background:#ddd; +} + +input.liste_titre { + box-shadow: none !important; +} +input.removedfile { + padding: 0px !important; + border: 0px !important; +} +textarea:disabled { + background:#ddd; +} +input[type=checkbox] { background-color: transparent; border: none; box-shadow: none; } +input[type=radio] { background-color: transparent; border: none; box-shadow: none; } +input[type=image] { background-color: transparent; border: none; box-shadow: none; } +input[type=text] { min-width: 20px; } +input:-webkit-autofill { + background-color: !important; + background-image:none !important; + -webkit-box-shadow: 0 0 0 50px inset; +} +::-webkit-input-placeholder { color:#ccc; } +::-moz-placeholder { color:#ccc; } /* firefox 19+ */ +:-ms-input-placeholder { color:#ccc; } /* ie */ +input:-moz-placeholder { color:#ccc; } + + +legend { margin-bottom: 8px; } + +fieldset { border: 1px solid #AAAAAA !important; box-shadow: 2px 2px 3px #DDD; } + + +.button, sbmtConnexion { + font-family: ; + border-color: #c5c5c5; + border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); + display: inline-block; + padding: 4px 14px; + margin-bottom: 0; + margin-top: 0; + text-align: center; + cursor: pointer; + color: #333333; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + border: 1px solid #bbbbbb; + border-bottom-color: #a2a2a2; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} +.button:focus { + -moz-box-shadow: 0px 0px 6px 1px rgba(0, 0, 60, 0.2), 0px 0px 0px rgba(60,60,60,0.1); + -webkit-box-shadow: 0px 0px 6px 1px rgba(0, 0, 60, 0.2), 0px 0px 0px rgba(60,60,60,0.1); + box-shadow: 0px 0px 6px 1px rgba(0, 0, 60, 0.2), 0px 0px 0px rgba(60,60,60,0.1); +} +.button:hover { + -moz-box-shadow: 0px 0px 6px 1px rgba(0, 0, 0, 0.2), 0px 0px 0px rgba(60,60,60,0.1); + -webkit-box-shadow: 0px 0px 6px 1px rgba(0, 0, 0, 0.2), 0px 0px 0px rgba(60,60,60,0.1); + box-shadow: 0px 0px 6px 1px rgba(0, 0, 0, 0.2), 0px 0px 0px rgba(60,60,60,0.1); +} +.button:disabled { + opacity: 0.4; + filter: alpha(opacity=40); /* For IE8 and earlier */ + box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + cursor: auto; +} +.buttonRefused { + pointer-events: none; + cursor: default; + opacity: 0.4; + filter: alpha(opacity=40); /* For IE8 and earlier */ + box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; +} +form { + padding:0px; + margin:0px; +} +div.float +{ + float:; +} +div.floatright +{ + float:; +} +.inline-block +{ + display:inline-block; +} + +th .button { + -moz-box-shadow: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + -moz-border-radius:0px !important; + -webkit-border-radius:0px !important; + border-radius:0px !important; +} + +.valignmiddle { + vertical-align: middle; +} +.centpercent { + width: 100%; +} +textarea.centpercent { + width: 96%; +} +.center { + text-align: center; +} +.left { + text-align: ; +} +.right { + text-align: ; +} +.nowrap { + white-space: ; +} +.nobold { + font-weight: normal !important; +} +.nounderline { + text-decoration: none; +} +.cursorpointer { + cursor: pointer; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 2px 5px; + font-size: 10px; + font-weight: 700; + line-height: 0.9em; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #777; + border-radius: 10px; +} +.movable { + cursor: move; +} + +.borderrightlight +{ + border-right: 1px solid #DDD; +} + +/* ============================================================================== */ +/* Styles to hide objects */ +/* ============================================================================== */ + +.hideobject { display: none; } +.minwidth100 { min-width: 100px; } +.minwidth200 { min-width: 200px; } +.minwidth300 { min-width: 300px; } +.maxwidth100 { max-width: 100px; } +.maxwidth200 { max-width: 200px; } +.maxwidth300 { max-width: 300px; } + +.hideonsmartphone { display: none; } +.noenlargeonsmartphone { width : 50px !important; display: inline !important; } +.maxwidthonsmartphone { max-width: 100px; } +.maxwidth100onsmartphone { max-width: 100px; } +.maxwidth200onsmartphone { max-width: 200px; } +.maxwidth300onsmartphone { max-width: 300px; } + +.linkobject { cursor: pointer; } + +.hideonprint { display: none; } + + + +/* ============================================================================== */ +/* Styles for dragging lines */ +/* ============================================================================== */ + +.dragClass { + color: #002255; +} +td.showDragHandle { + cursor: move; +} +.tdlineupdown { + white-space: nowrap; + min-width: 10px; +} + + +/* ============================================================================== */ +/* Styles de positionnement des zones */ +/* ============================================================================== */ + +#id-container { + margin-top: 0px; + margin-bottom: 0px; + display: table; + table-layout: fixed; +} +#id-right, #id-left { + padding-top: 8px; + display: table-cell; + float: none; + vertical-align: top; +} +#id-left { + min-height: 100%; + position: relative; + width: 184px; +} +#id-right { /* This must stay id-right ant not be replaced with echo $right */ + width: 100%; + padding-left: 184px; +} + +.side-nav { + background: #FFF; + border-right: 1px solid rgba(0,0,0,0.14); + bottom: 0; + color: #333; + display: block; + font-family: "RobotoDraft","Roboto",sans-serif; + left: 0; + position: fixed; + top: 50px; + width: 192px; + z-index: 4; + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -ms-transform: translateZ(0); + -o-transform: translateZ(0); + transform: translateZ(0); + -webkit-transform-style: preserve-3d; + -moz-transform-style: preserve-3d; + -ms-transform-style: preserve-3d; + -o-transform-style: preserve-3d; + transform-style: preserve-3d; + -webkit-transition-delay: 0.1s; + -moz-transition-delay: 0.1s; + transition-delay: 0.1s; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-property: -webkit-transform; + -moz-transition-property: -moz-transform; + transition-property: transform; + -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + -moz-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + -webkit-overflow-scrolling: touch; + overflow-x: hidden; + overflow-y: auto; +} + + +div.fiche { + margin-: global->MAIN_MENU_USE_JQUERY_LAYOUT))?($dol_hide_leftmenu?'4':'20'):'24')); ?>px; + margin-: dol_optimize_smallscreen)?'12':'4')); ?>px; + dol_hide_leftmenu) && ! empty($conf->dol_hide_topmenu)) print 'margin-top: 4px;'; ?> +} + +div.fichecenter { + width: 100%; + clear: both; /* This is to have div fichecenter that are true rectangles */ +} +div.fichethirdleft { + browser->layout != 'phone') { print "float: ".$left.";\n"; } ?> + browser->layout != 'phone') { print "width: 35%;\n"; } ?> + browser->layout == 'phone') { print "padding-bottom: 6px;\n"; } ?> +} +div.fichetwothirdright { + browser->layout != 'phone') { print "float: ".$right.";\n"; } ?> + browser->layout != 'phone') { print "width: 65%;\n"; } ?> + browser->layout == 'phone') { print "padding-bottom: 6px\n"; } ?> +} +div.fichehalfleft { + browser->layout != 'phone') { print "float: ".$left.";\n"; } ?> + browser->layout != 'phone') { print "width: 50%;\n"; } ?> +} +div.fichehalfright { + browser->layout != 'phone') { print "float: ".$right.";\n"; } ?> + browser->layout != 'phone') { print "width: 50%;\n"; } ?> +} +div.ficheaddleft { + browser->layout != 'phone') { print "padding-".$left.": 16px;\n"; } + else print "margin-top: 10px;\n"; ?> +} +.containercenter { +display : table; +margin : 0px auto; +} + + +/* ============================================================================== */ +/* Menu top et 1ere ligne tableau */ +/* ============================================================================== */ + + + +div#tmenu_tooltip { + + display:none; + + padding-: 100px; + background: ; + /*box-shadow: 0 0 6px rgba(0, 0, 0, .4) !important;*/ + + background-image: linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(128,128,128,.3) 100%); + background-image: -o-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(128,128,128,.3) 100%); + background-image: -moz-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(128,128,128,.3) 100%); + background-image: -webkit-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(128,128,128,.3) 100%); + background-image: -ms-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(128,128,128,.3) 100%); + background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0, rgba(255,255,255,.3)), color-stop(1, rgba(128,128,128,.3)) ); + + background-image: rgb(); + border-bottom: 1px solid #CCC; + + +} + +div.tmenudiv { + + display:none; + + position: relative; + display: block; + white-space: nowrap; + border-top: 0px; + border-: 0px; + border-: 0px; + padding: 0px 0px 0px 0px; /* t r b l */ + margin: 0px 0px 0px 0px; /* t r b l */ + font-size: 13px; + font-weight: normal; + color: #000000; + text-decoration: none; + +} +div.tmenudisabled, a.tmenudisabled { + opacity: 0.6; +} +a.tmenudisabled:link, a.tmenudisabled:visited, a.tmenudisabled:hover, a.tmenudisabled:active { + font-weight: normal; + padding: 0px 5px 0px 5px; + white-space: nowrap; + color: #; + text-decoration: none; + cursor: not-allowed; +} + +a.tmenu:link, a.tmenu:visited, a.tmenu:hover, a.tmenu:active { + font-weight: normal; + padding: 0px 5px 0px 5px; + white-space: nowrap; + /* text-shadow: 1px 1px 1px #000000; */ + color: #; + text-decoration: none; +} +a.tmenusel:link, a.tmenusel:visited, a.tmenusel:hover, a.tmenusel:active { + font-weight: normal; + padding: 0px 5px 0px 5px; + margin: 0px 0px 0px 0px; + white-space: nowrap; + color: #; + text-decoration: none !important; +} + + +ul.tmenu { /* t r b l */ + padding: 0px 0px 0px 0px; + margin: 0px 0px 0px 0px; + list-style: none; + /* box-shadow: 0 0 6px rgba(0, 0, 0, .4) !important; */ +} +ul.tmenu li { + background: rgb(); + + + /* + background-image: linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); + background-image: -o-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); + background-image: -moz-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); + background-image: -webkit-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); + background-image: -ms-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); + background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0, rgba(255,255,255,.3)), color-stop(1, rgba(0,0,0,.3)) ); + */ + + background-image: rgb(); + border-bottom: 1px solid #CCC; + +} +li.tmenu, li.tmenusel { + + text-align: center; + vertical-align: bottom; + global->MAIN_MENU_INVERT)) { ?> + float: ; + height: px; + + position:relative; + display: block; + padding: 0px 0px 2px 0px; + margin: 0px 0px 0px 0px; + font-weight: normal; +} +li.tmenusel, li.tmenu:hover { + background-image: -o-linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.3) 100%) !important; + background-image: -moz-linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.3) 100%) !important; + background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0) 100%) !important; + background-image: -ms-linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.3) 100%) !important; + background-image: linear-gradient(bottom, rgba(250,250,250,0.3) 0%, rgba(0,0,0,0.3) 100%) !important; + background: rgb(); + /* background: url() 50% 0 repeat-x !important; Nicer but problem when menu wrap on 2 lines */ +} +.tmenuend .tmenuleft { width: 0px; } +div.tmenuleft +{ + float: ; + margin-top: 0px; + dol_optimize_smallscreen)) { ?> + width: 5px; + height: px; + background: url() 0 -6px no-repeat; + +} +div.tmenucenter +{ + padding-top: 2px; + padding-left: 0px; + padding-right: 0px; + height: px; + width: 100%; +} +.mainmenuaspan +{ + padding-right: 4px; +} + +div.mainmenu { + position : relative; + background-repeat:no-repeat; + background-position:center top; + height: px; + margin-left: 0px; + min-width: 40px; +} + +/* Do not load menu img if hidden to save bandwidth */ + + +div.mainmenu.home{ + background-image: url(); + background-position-x: middle; +} + +div.mainmenu.accountancy { + background-image: url(); +} + +div.mainmenu.agenda { + background-image: url(); +} + +div.mainmenu.bank { + background-image: url(); +} + +div.mainmenu.cashdesk { + background-image: url(); +} + +div.mainmenu.companies { + background-image: url(); +} + +div.mainmenu.commercial { + background-image: url(); +} + +div.mainmenu.ecm { + background-image: url(); +} + +div.mainmenu.externalsite { + background-image: url(); +} + +div.mainmenu.ftp { + background-image: url(); +} + +div.mainmenu.hrm { + background-image: url(); +} + +div.mainmenu.members { + background-image: url(); +} + +div.mainmenu.products { + background-image: url(); + margin-left: 10px; +} + +div.mainmenu.project { + background-image: url(); +} + +div.mainmenu.tools { + background-image: url(); +} + +'name of class for div') + +$moduletomainmenu=array('user'=>'','syslog'=>'','societe'=>'companies','projet'=>'project','propale'=>'commercial','commande'=>'commercial', + 'produit'=>'products','service'=>'products','stock'=>'products', + 'don'=>'accountancy','tax'=>'accountancy','banque'=>'accountancy','facture'=>'accountancy','compta'=>'accountancy','accounting'=>'accountancy','adherent'=>'members','import'=>'tools','export'=>'tools','mailing'=>'tools', + 'contrat'=>'commercial','ficheinter'=>'commercial','deplacement'=>'commercial', + 'fournisseur'=>'companies', + 'barcode'=>'','fckeditor'=>'','categorie'=>'', +); +$mainmenuused='home'; +foreach($conf->modules as $val) +{ + $mainmenuused.=','.(isset($moduletomainmenu[$val])?$moduletomainmenu[$val]:$val); +} +//var_dump($mainmenuused); +$mainmenuusedarray=array_unique(explode(',',$mainmenuused)); + +$generic=1; +$divalreadydefined=array('home','companies','products','commercial','accountancy','project','tools','members','agenda','holiday','bookmark','cashdesk','ecm','geoipmaxmind','gravatar','clicktodial','paypal','webservices'); +foreach($mainmenuusedarray as $val) +{ + if (empty($val) || in_array($val,$divalreadydefined)) continue; + //print "XXX".$val; + + // Search img file in module dir + $found=0; $url=''; + foreach($conf->file->dol_document_root as $dirroot) + { + if (file_exists($dirroot."/".$val."/img/".$val.".png")) + { + $url=dol_buildpath('/'.$val.'/img/'.$val.'.png', 1); + $found=1; + break; + } + } + // Img file not found + if (! $found) + { + $url=dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.$generic.".png",1); + $found=1; + if ($generic < 4) $generic++; + print "/* A mainmenu entry but img file ".$val.".png not found (check /".$val."/img/".$val.".png), so we use a generic one */\n"; + } + if ($found) + { + print "div.mainmenu.".$val." {\n"; + print " background-image: url(".$url.");\n"; + print "}\n"; + } +} +// End of part to add more div class css +?> + + + +.tmenuimage { + padding:0 0 0 0 !important; + margin:0 0px 0 0 !important; +} + + + +/* Login */ + +.bodylogin +{ + background: #f0f0f0; +} +.login_vertical_align { + padding: 10px; +} +form#login { + margin-top: px; + margin-bottom: 30px; + font-size: 13px; + vertical-align: middle; +} +.login_table_title { + max-width: 530px; + color: #888888; + text-shadow: 1px 1px 1px #FFF; +} +.login_table label { + text-shadow: 1px 1px 1px #FFF; +} +.login_table { + margin-left: 10px; + margin-right: 10px; + padding-left:6px; + padding-right:6px; + padding-top:16px; + padding-bottom:12px; + max-width: 560px; + + background-color: #FFFFFF; + + -moz-box-shadow: 0 4px 23px 5px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(60,60,60,0.15); + -webkit-box-shadow: 0 4px 23px 5px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(60,60,60,0.15); + box-shadow: 0 4px 23px 5px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(60,60,60,0.15); + /*-moz-box-shadow: 3px 2px 20px #CCC; + -webkit-box-shadow: 3px 2px 20px #CCC; + box-shadow: 3px 2px 20px #CCC;*/ + + border-radius: 8px; + border:solid 1px rgba(80,80,80,.4); + + border-top:solid 1px f8f8f8; + /* + background-color: #f8f8f8; + background-image: -o-linear-gradient(top, rgba(250,250,250,.6) 0%, rgba(192,192,192,.3) 100%); + background-image: -moz-linear-gradient(top, rgba(250,250,250,.6) 0%, rgba(192,192,192,.3) 100%); + background-image: -webkit-linear-gradient(top, rgba(250,250,250,.6) 0%, rgba(192,192,192,.3) 100%); + background-image: -ms-linear-gradient(top, rgba(250,250,250,.6) 0%, rgba(192,192,192,.3) 100%); + background-image: linear-gradient(top, rgba(250,250,250,.6) 0%, rgba(192,192,192,.3) 100%); + */ +} +div#login_left, div#login_right { + display: inline-block; + min-width: 245px; + padding-top: 10px; + padding-left: 16px; + padding-right: 16px; + text-align: center; + vertical-align: middle; +} +table.login_table tr td table.none tr td { + padding: 2px; +} +table.login_table_securitycode { + border-spacing: 0px; +} +table.login_table_securitycode tr td { + padding-left: 0px; + padding-right: 4px; +} +#securitycode { + min-width: 60px; +} +#img_securitycode { + border: 1px solid #DDDDDD; +} +#img_logo { + max-width: 200px; + max-height: 100px; +} + +div.login_block { + position: absolute; + : 5px; + top: 3px; + font-weight: bold; + max-width: 110px; + + display: none; + +} +div.login_block table { + display: inline; +} +div.login { + white-space:nowrap; + font-weight: bold; + float: right; +} +div.login a { + color: #; +} +div.login a:hover { + color: #; + text-decoration:underline; +} +div.login_block_user, div.login_block_other { clear: both; } +div.login_block_other { padding-top: 3px; } +.login_block_elem { + float: right; + vertical-align: top; + padding: 0px 0px 0px 4px !important; + height: 16px; +} +.alogin, .alogin:hover { + color: #888 !important; + font-weight: normal !important; + font-size: px !important; +} +.alogin:hover { + text-decoration:underline !important; +} +img.login, img.printer, img.entity { + /* padding: 0px 0px 0px 4px; */ + /* margin: 0px 0px 0px 8px; */ + text-decoration: none; + color: white; + font-weight: bold; +} + +.span-icon-user { + background: url() no-repeat scroll 7px 7px; +} +.span-icon-password { + background-image: url(); + background-repeat: no-repeat; +} +/* +.span-icon-user input, .span-icon-password input { + margin-right: 30px; +} +*/ + +/* ============================================================================== */ +/* Menu gauche */ +/* ============================================================================== */ + +div.vmenu, td.vmenu { + margin-: 2px; + position: relative; + float: left; + padding: 0px; + padding-bottom: 0px; + padding-top: 1px; + width: 174px; +} + +.vmenu { + margin-left: 4px; + + display: none; + +} + +.menu_contenu { padding-top: 4px; padding-bottom: 3px;} + +a.vmenu:link, a.vmenu:visited, a.vmenu:hover, a.vmenu:active { font-size:px; font-family: ; text-align: ; font-weight: bold; } +font.vmenudisabled { font-size:px; font-family: ; text-align: ; font-weight: bold; color: #93a5aa; } +a.vmenu:link, a.vmenu:visited { color: #; } + +a.vsmenu:link, a.vsmenu:visited, a.vsmenu:hover, a.vsmenu:active { font-size:px; font-family: ; text-align: ; font-weight: normal; color: #202020; margin: 1px 1px 1px 8px; } +font.vsmenudisabled { font-size:px; font-family: ; text-align: ; font-weight: normal; color: #93a5aa; } +a.vsmenu:link, a.vsmenu:visited { color: #; } +font.vsmenudisabledmargin { margin: 1px 1px 1px 8px; } + +a.help:link, a.help:visited, a.help:hover, a.help:active { font-size:px; font-family: ; text-align: ; font-weight: normal; color: #666666; text-decoration: none; } + + +div.blockvmenupair, div.blockvmenuimpair, div.blockvmenubookmarks +{ + font-family: ; + color: #000000; + text-align: ; + text-decoration: none; + padding-left: 5px; + padding-right: 1px; + padding-top: 3px; + padding-bottom: 3px; + margin: 1px 0px 8px 0px; +/* + + + background-image: -o-linear-gradient(bottom, rgb() 0px, rgb() 3px); + background-image: -moz-linear-gradient(bottom, rgb() 0px, rgb() 3px); + background-image: -webkit-linear-gradient(right, rgb() 0px, rgb() 3px); + background-image: -ms-linear-gradient(bottom, rgb() 0px, rgb() 3px); + background-image: linear-gradient(bottom, rgb() 0px, rgb() 3px); + + + background-position:top; + background-repeat:repeat-x; + + border-left: 1px solid #AAA; + border-right: 1px solid #BBB; + border-bottom: 1px solid #BBB; + border-top: 1px solid #BBB; + border-radius: 5px; + -moz-border-radius: 5px; + -moz-box-shadow: 3px 3px 4px #DDD; + -webkit-box-shadow: 3px 3px 4px #DDD; + box-shadow: 3px 3px 4px #DDD;*/ + + padding-bottom: 10px; + border-bottom: 1px solid #DDD; +} + +div.blockvmenusearch +{ + font-family: ; + color: #000000; + text-align: ; + text-decoration: none; + padding-left: 5px; + padding-right: 1px; + padding-top: 3px; + padding-bottom: 3px; + margin: 1px 0px 8px 0px; +/* + background: #E3E6E8; + + background-image: -o-linear-gradient(bottom, rgb() 90%, rgb() 100%); + background-image: -moz-linear-gradient(bottom, rgb() 90%, rgb() 100%); + background-image: -webkit-linear-gradient(bottom, rgb() 90%, rgb() 100%); + background-image: -ms-linear-gradient(bottom, rgb() 90%, rgb() 100%); + background-image: linear-gradient(bottom, rgb() 90%, rgb() 100%); + + + border-left: 1px solid #AAA; + border-right: 1px solid #CCC; + border-bottom: 1px solid #CCC; + border-top: 1px solid #CCC; + border-radius: 5px; + -moz-border-radius: 5px; + -moz-box-shadow: 3px 3px 4px #DDD; + -webkit-box-shadow: 3px 3px 4px #DDD; + box-shadow: 3px 3px 4px #DDD; +*/ + + padding-bottom: 10px; + border-bottom: 1px solid #DDD; +} + +div.blockvmenuhelp +{ +dol_optimize_smallscreen)) { ?> + font-family: ; + color: #000000; + text-align: center; + text-decoration: none; + padding-left: 0px; + padding-right: 3px; + padding-top: 3px; + padding-bottom: 3px; + margin: 4px 0px 0px 0px; + + display: none; + +} + + +td.barre { + border-right: 1px solid #000000; + border-bottom: 1px solid #000000; + background: #b3c5cc; + font-family: ; + color: #000000; + text-align: ; + text-decoration: none; +} + +td.barre_select { + background: #b3c5cc; + color: #000000; +} + +td.photo { + background: #F4F4F4; + color: #000000; + border: 1px solid #b3c5cc; +} + +/* ============================================================================== */ +/* Panes for Main */ +/* ============================================================================== */ + +/* + * PANES and CONTENT-DIVs + */ + +#mainContent, #leftContent .ui-layout-pane { + padding: 0px; + overflow: auto; +} + +#mainContent, #leftContent .ui-layout-center { + padding: 0px; + position: relative; /* contain floated or positioned elements */ + overflow: auto; /* add scrolling to content-div */ +} + + +/* ============================================================================== */ +/* Toolbar for ECM or Filemanager */ +/* ============================================================================== */ + +.largebutton { + + background-image: -o-linear-gradient(bottom, rgba(200,200,200,0.1) 0%, rgba(255,255,255,0.3) 120%) !important; + background-image: -moz-linear-gradient(bottom, rgba(200,200,200,0.1) 0%, rgba(255,255,255,0.3) 120%) !important; + background-image: -webkit-linear-gradient(bottom, rgba(200,200,200,0.1) 0%, rgba(255,255,255,0.3) 120%) !important; + background-image: -ms-linear-gradient(bottom, rgba(200,200,200,0.1) 0%, rgba(255,255,255,0.3) 120%) !important; + background-image: linear-gradient(bottom, rgba(200,200,200,0.1) 0%, rgba(255,255,255,0.3) 120%) !important; + + background: #FFF; + background-repeat: repeat-x !important; + border: 1px solid #CCC !important; + + -moz-border-radius: 5px 5px 5px 5px !important; + -webkit-border-radius: 5px 5px 5px 5px !important; + border-radius: 5px 5px 5px 5px !important; + -moz-box-shadow: 2px 2px 4px #DDD; + -webkit-box-shadow: 2px 2px 4px #DDD; + box-shadow: 2px 2px 4px #DDD; + + padding: 0 4px 0 4px !important; + min-height: 32px; +} + + +a.toolbarbutton { + margin-top: 0px; + margin-left: 4px; + margin-right: 4px; + height: 30px; +} +img.toolbarbutton { + margin-top: 1px; + height: 30px; +} + +/* ============================================================================== */ +/* Panes for ECM or Filemanager */ +/* ============================================================================== */ + +#containerlayout .layout-with-no-border { + border: 0 !important; + border-width: 0 !important; +} + +#containerlayout .layout-padding { + padding: 2px !important; +} + +/* + * PANES and CONTENT-DIVs + */ +#containerlayout .ui-layout-pane { /* all 'panes' */ + background: #FFF; + border: 1px solid #BBB; + /* DO NOT add scrolling (or padding) to 'panes' that have a content-div, + otherwise you may get double-scrollbars - on the pane AND on the content-div + */ + padding: 0px; + overflow: auto; +} +/* (scrolling) content-div inside pane allows for fixed header(s) and/or footer(s) */ +#containerlayout .ui-layout-content { + padding: 10px; + position: relative; /* contain floated or positioned elements */ + overflow: auto; /* add scrolling to content-div */ +} + + +/* + * RESIZER-BARS + */ +.ui-layout-resizer { /* all 'resizer-bars' */ + width: dol_optimize_smallscreen)?'8':'24'); ?>px !important; +} +.ui-layout-resizer-hover { /* affects both open and closed states */ +} +/* NOTE: It looks best when 'hover' and 'dragging' are set to the same color, + otherwise color shifts while dragging when bar can't keep up with mouse */ +/*.ui-layout-resizer-open-hover ,*/ /* hover-color to 'resize' */ +.ui-layout-resizer-dragging { /* resizer beging 'dragging' */ + background: #DDD; + width: dol_optimize_smallscreen)?'8':'24'); ?>px; +} +.ui-layout-resizer-dragging { /* CLONED resizer being dragged */ + border-left: 1px solid #BBB; + border-right: 1px solid #BBB; +} +/* NOTE: Add a 'dragging-limit' color to provide visual feedback when resizer hits min/max size limits */ +.ui-layout-resizer-dragging-limit { /* CLONED resizer at min or max size-limit */ + background: #E1A4A4; /* red */ +} +.ui-layout-resizer-closed { + background-color: #DDDDDD; +} +.ui-layout-resizer-closed:hover { + background-color: #EEDDDD; +} +.ui-layout-resizer-sliding { /* resizer when pane is 'slid open' */ + opacity: .10; /* show only a slight shadow */ + filter: alpha(opacity=10); +} +.ui-layout-resizer-sliding-hover { /* sliding resizer - hover */ + opacity: 1.00; /* on-hover, show the resizer-bar normally */ + filter: alpha(opacity=100); +} +/* sliding resizer - add 'outside-border' to resizer on-hover */ +/* this sample illustrates how to target specific panes and states */ +/*.ui-layout-resizer-north-sliding-hover { border-bottom-width: 1px; } +.ui-layout-resizer-south-sliding-hover { border-top-width: 1px; } +.ui-layout-resizer-west-sliding-hover { border-right-width: 1px; } +.ui-layout-resizer-east-sliding-hover { border-left-width: 1px; } +*/ + +/* + * TOGGLER-BUTTONS + */ +.ui-layout-toggler { + dol_optimize_smallscreen)) { ?> + border-top: 1px solid #AAA; /* match pane-border */ + border-right: 1px solid #AAA; /* match pane-border */ + border-bottom: 1px solid #AAA; /* match pane-border */ + background-color: #DDD; + top: 5px !important; + + diplay: none; + +} +.ui-layout-toggler-open { + height: 54px !important; + width: dol_optimize_smallscreen)?'7':'22'); ?>px !important; + -moz-border-radius:0px 10px 10px 0px; + -webkit-border-radius:0px 10px 10px 0px; + border-radius:0px 10px 10px 0px; +} +.ui-layout-toggler-closed { + height: dol_optimize_smallscreen)?'54':'2'); ?>px !important; + width: dol_optimize_smallscreen)?'7':'22'); ?>px !important; + -moz-border-radius:0px 10px 10px 0px; + -webkit-border-radius:0px 10px 10px 0px; + border-radius:0px 10px 10px 0px; +} +.ui-layout-toggler .content { /* style the text we put INSIDE the togglers */ + color: #666; + font-size: 12px; + font-weight: bold; + width: 100%; + padding-bottom: 0.35ex; /* to 'vertically center' text inside text-span */ +} + +/* hide the toggler-button when the pane is 'slid open' */ +.ui-layout-resizer-sliding ui-layout-toggler { + display: none; +} + +.ui-layout-north { + height: dol_optimize_smallscreen)?'54':'21'); ?>px !important; +} + + +/* ECM */ + +#containerlayout .ecm-layout-pane { /* all 'panes' */ + background: #FFF; + border: 1px solid #BBB; + /* DO NOT add scrolling (or padding) to 'panes' that have a content-div, + otherwise you may get double-scrollbars - on the pane AND on the content-div + */ + padding: 0px; + overflow: auto; +} +/* (scrolling) content-div inside pane allows for fixed header(s) and/or footer(s) */ +#containerlayout .ecm-layout-content { + padding: 10px; + position: relative; /* contain floated or positioned elements */ + overflow: auto; /* add scrolling to content-div */ +} + +.ecm-layout-toggler { + border-top: 1px solid #AAA; /* match pane-border */ + border-right: 1px solid #AAA; /* match pane-border */ + border-bottom: 1px solid #AAA; /* match pane-border */ + background-color: #CCC; + } +.ecm-layout-toggler-open { + height: 48px !important; + width: 6px !important; + -moz-border-radius:0px 10px 10px 0px; + -webkit-border-radius:0px 10px 10px 0px; + border-radius:0px 10px 10px 0px; +} +.ecm-layout-toggler-closed { + height: 48px !important; + width: 6px !important; +} + +.ecm-layout-toggler .content { /* style the text we put INSIDE the togglers */ + color: #666; + font-size: 12px; + font-weight: bold; + width: 100%; + padding-bottom: 0.35ex; /* to 'vertically center' text inside text-span */ +} +#ecm-layout-west-resizer { + width: 6px !important; +} + +.ecm-layout-resizer { /* all 'resizer-bars' */ + border: 1px solid #BBB; + border-width: 0; + } +.ecm-layout-resizer-closed { +} + +.ecm-in-layout-center { + border-left: 1px !important; + border-right: 0px !important; + border-top: 0px !important; +} + +.ecm-in-layout-south { + border-left: 0px !important; + border-right: 0px !important; + border-bottom: 0px !important; + padding: 4px 0 4px 4px !important; +} + + + +/* ============================================================================== */ +/* Onglets */ +/* ============================================================================== */ +div.tabs { +/* margin: 0px 0px 2px 6px; + padding: 0px 6px 3px 0px; */ + text-align: ; + margin-left: 6px !important; + margin-right: 6px !important; + clear:both; + height:100%; +} +div.tabsElem { margin-top: 8px; } /* To avoid overlap of tabs when not browser */ + +div.tabBar { + color: #; + padding-top: 9px; + padding-left: px; + padding-right: px; + padding-bottom: 8px; + margin: 0px 0px 14px 0px; + -moz-border-radius:6px; + -webkit-border-radius: 6px; + border-radius: 6px; + border-right: 1px solid #BBB; + border-bottom: 1px solid #BBB; + border-left: 1px solid #BBB; + border-top: 1px solid #CCC; + width: auto; + + background: rgb(); + /* + background-image: -o-linear-gradient(bottom, rgba(, 0.5) 25%, rgba(, 0.5) 100%); + background-image: -moz-linear-gradient(bottom, rgba(, 0.5) 25%, rgba(, 0.5) 100%); + background-image: -webkit-linear-gradient(bottom, rgba(, 0.5) 25%, rgba(, 0.5) 100%); + background-image: -ms-linear-gradient(bottom, rgba(, 0.5) 25%, rgba(, 0.5) 100%); + background-image: linear-gradient(bottom, rgba(, 0.5) 25%, rgba(, 0.5) 100%); + */ + + background: rgb(); + + + -moz-box-shadow: 3px 3px 4px #DDD; + -webkit-box-shadow: 3px 3px 4px #DDD; + box-shadow: 3px 3px 4px #DDD; + +} + +div.tabsAction { + margin: 20px 0em 10px 0em; + padding: 0em 0em; + text-align: right; +} + + +a.tabTitle { +/* background: #657090; + color: white;*/ + color:rgba(0,0,0,.5); + margin-right:10px; + text-shadow:1px 1px 1px #ffffff; + font-family: ; + font-weight: normal; + padding: 4px 6px 2px 6px; + margin: 0px 6px; + text-decoration: none; + white-space: nowrap; +} + +a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { + font-family: ; + padding: 5px 12px 5px; + /* padding: 3px 6px 2px 6px;*/ + margin: 0em 0.2em; + text-decoration: none; + white-space: nowrap; + + -moz-border-radius:6px 6px 0px 0px; + -webkit-border-radius:6px 6px 0px 0px; + border-radius:6px 6px 0px 0px; + + -moz-box-shadow: 0 -1px 4px rgba(0,0,0,.1); + -webkit-box-shadow: 0 -1px 4px rgba(0,0,0,.1); + box-shadow: 0 -1px 4px rgba(0,0,0,.1); + + border-bottom: none; + border-right: 1px solid #CCCCCC; + border-left: 1px solid #D0D0D0; + border-top: 1px solid #D8D8D8; + + + background: rgb(); + /*background-image: -o-linear-gradient(bottom, rgb() 35%, rgb() 100%); + background-image: -moz-linear-gradient(bottom, rgb() 35%, rgb() 100%); + background-image: -webkit-linear-gradient(bottom, rgb() 35%, rgb() 100%); + background-image: -ms-linear-gradient(bottom, rgb() 35%, rgb() 100%); + background-image: linear-gradient(bottom, rgb() 35%, rgb() 100%);*/ + + background-image: none !important; +} + +.tabactive { + + background: rgb() !important; +/* border-bottom: 1px solid rgb() !important; + background: rgba(, 0.5) url() 50% 0 repeat-x; */ + + background: rgb() url() 50% 0 repeat-x; + + /*background-image: none !important; */ + color: #; +} +a.tab:hover +{ + background: rgba(, 0.5) url() 50% 0 repeat-x; + color: #; +} +a.tab:link, a.tab:visited +{ + /* color: #888; */ + /* font-weight: normal !important; */ +} +a.tabimage { + color: #434956; + font-family: ; + text-decoration: none; + white-space: nowrap; +} + +td.tab { + background: #dee7ec; +} + +span.tabspan { + background: #dee7ec; + color: #434956; + font-family: ; + padding: 0px 6px; + margin: 0em 0.2em; + text-decoration: none; + white-space: nowrap; + -moz-border-radius:6px 6px 0px 0px; + -webkit-border-radius:6px 6px 0px 0px; + border-radius:6px 6px 0px 0px; + + border-: 1px solid #555555; + border-: 1px solid #D8D8D8; + border-top: 1px solid #D8D8D8; +} + +/* ============================================================================== */ +/* Boutons actions */ +/* ============================================================================== */ + +div.divButAction { margin-bottom: 1.4em; } + +.butAction, .butAction:link, .butAction:visited, .butAction:hover, .butAction:active, .butActionDelete, .butActionDelete:link, .butActionDelete:visited, .butActionDelete:hover, .butActionDelete:active { + text-decoration: none; + white-space: nowrap; + padding: 0.4em em; + margin: 0em em; + font-family: ; + + font-weight: bold; + background: white; + border: 1px solid #8CACBB; + color: #434956; + -moz-border-radius:0px 5px 0px 5px; + -webkit-border-radius:0px 5px 0px 5px; + border-radius:0px 5px 0px 5px; + -moz-box-shadow: 2px 2px 3px #DDD; + -webkit-box-shadow: 2px 2px 3px #DDD; + box-shadow: 2px 2px 3px #DDD; +} + +.butAction:hover { + background: #dee7ec; +} + +.butActionDelete, .butActionDelete:link, .butActionDelete:visited, .butActionDelete:hover, .butActionDelete:active { + border: 1px solid #997777; +} + +.butActionDelete:hover { + background: #FFe7ec; +} + +.butActionRefused { + text-decoration: none !important; + white-space: nowrap !important; + cursor: not-allowed; + padding: 0.4em em; + margin: 0em em; + font-family: !important; + + font-weight: bold !important; + background: white !important; + border: 1px solid #AAAAAA !important; + color: #AAAAAA !important; + -moz-border-radius:0px 5px 0px 5px; + -webkit-border-radius:0px 5px 0px 5px; + border-radius:0px 5px 0px 5px; + -moz-box-shadow: 3px 3px 4px #DDD; + -webkit-box-shadow: 3px 3px 4px #DDD; + box-shadow: 3px 3px 4px #DDD; +} + +global->MAIN_BUTTON_HIDE_UNAUTHORIZED)) { ?> +.butActionRefused { + display: none; +} + + +span.butAction, span.butActionDelete { + cursor: pointer; +} + +/* Preapre for bootstrap look +.butAction, .butActionDelete, .butActionRefused { + border-color: #c5c5c5; + border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); + display: inline-block; + padding: 4px 14px; + margin-bottom: 0; + line-height: 20px; + text-align: center; + vertical-align: middle; + cursor: pointer; + color: #333333; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + border: 1px solid #bbbbbb; + border-bottom-color: #a2a2a2; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.butAction { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} + +.butActionDelete { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #cc6d00; + background-image: -moz-linear-gradient(top, #cc8800, #cc4400); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cc8800), to(#cc4400)); + background-image: -webkit-linear-gradient(top, #cc8800, #cc4400); + background-image: -o-linear-gradient(top, #cc8800, #cc4400); + background-image: linear-gradient(to bottom, #cc8800, #cc4400); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc8800', endColorstr='#ffcc4400', GradientType=0); + border-color: #cc4400 #cc4400 #802a00; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +a.butAction:link, a.butAction:visited, a.butAction:hover, a.butAction:active { + color: #FFFFFF; +} +End bootstrap */ + + + +/* ============================================================================== */ +/* Tables */ +/* ============================================================================== */ + +.allwidth { + width: 100%; +} + +#undertopmenu { + background-repeat: repeat-x; + margin-top: px; +} + + +.paddingrightonly { + border-collapse: collapse; + border: 0px; + margin-left: 0px; + padding-: 0px !important; + padding-: 4px !important; +} +.nocellnopadd { + list-style-type:none; + margin: 0px !important; + padding: 0px !important; +} + +.notopnoleft { + border-collapse: collapse; + border: 0px; + padding-top: 0px; + padding-: 0px; + padding-: 16px; + padding-bottom: 4px; + margin-right: 0px 0px; +} +.notopnoleftnoright { + border-collapse: collapse; + border: 0px; + padding-top: 0px; + padding-left: 0px; + padding-right: 0px; + padding-bottom: 4px; + margin: 0px 0px 0px 0px; +} + + +table.border, table.dataTable, .table-border, .table-border-col, .table-key-border-col, .table-val-border-col, div.border { + border: 1px solid #D0D0D0; + border-collapse: collapse; + padding: 1px 2px 1px 3px; /* t r b l */ +} + +table.border td, div.border div div.tagtd { + padding: 2px 2px 2px 2px; + border: 1px solid #D0D0D0; + border-collapse: collapse; +} + +td.border, div.tagtable div div.border { + border-top: 1px solid #000000; + border-right: 1px solid #000000; + border-bottom: 1px solid #000000; + border-left: 1px solid #000000; +} + +.table-key-border-col { + width: 25%; + vertical-align:top; +} +.table-val-border-col { + width:auto; +} + +/* Main boxes */ + +table.noborder, table.formdoc, div.noborder { + width: 100%; + + border-collapse: separate !important; + border-spacing: 0px; + + border-right-width: 1px; + border-right-color: #BBBBBB; + border-right-style: solid; + + border-left-width: 1px; + border-left-color: #B0B0B0; + border-left-style: solid; + + border-bottom-width: 1px; + border-bottom-color: #BBBBBB; + border-bottom-style: solid; + + margin: 0px 0px 2px 0px; + + -moz-box-shadow: 2px 2px 4px #DDD; + -webkit-box-shadow: 2px 2px 4px #DDD; + box-shadow: 2px 2px 4px #DDD; + + -moz-border-radius: 0.2em; + -webkit-border-radius: 0.2em; + border-radius: 0.2em; +} + +table.noborder tr, div.noborder form { + border-top-color: #FEFEFE; + + border-right-width: 1px; + border-right-color: #BBBBBB; + border-right-style: solid; + + border-left-width: 1px; + border-left-color: #BBBBBB; + border-left-style: solid; + height: 20px; +} + +table.noborder th, table.noborder td, div.noborder form, div.noborder form div { + padding: 1px 2px 1px 3px; /* t r b l */ +} + +table.nobordernopadding { + border-collapse: collapse !important; + border: 0px; +} +table.nobordernopadding tr { + border: 0px !important; + padding: 0px 0px; +} +table.nobordernopadding td { + border: 0px !important; + padding: 0px 0px; +} + +/* For lists */ + +table.liste { + width: 100%; + border-collapse: collapse; + border-top-color: #FEFEFE; + + border-right-width: 1px; + border-right-color: #BBBBBB; + border-right-style: solid; + + border-left-width: 1px; + border-left-color: #CCCCCC; + border-left-style: solid; + + border-bottom-width: 1px; + border-bottom-color: #BBBBBB; + border-bottom-style: solid; + + margin-bottom: 2px; + margin-top: 0px; + + -moz-box-shadow: 3px 3px 4px #DDD; + -webkit-box-shadow: 3px 3px 4px #DDD; + box-shadow: 3px 3px 4px #DDD; +} +table.liste td { + padding-right: 2px; +} + +.tagtable, .table-border { display: table; } +.tagtr, .table-border-row { display: table-row; } +.tagtd, .table-border-col, .table-key-border-col, .table-val-border-col { display: table-cell; } + + +/* Prepare to remove class pair - impair +.noborder > tbody > tr:nth-child(even) td { + background: linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -o-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -moz-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -webkit-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -ms-linear-gradient(bottom, rgb() 85%, rgb() 100%); + font-family: ; + border: 0px; + margin-bottom: 1px; + color: #202020; + min-height: 18px; +} + +.noborder > tbody > tr:nth-child(odd) td { + background: linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -o-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -moz-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -webkit-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -ms-linear-gradient(bottom, rgb() 85%, rgb() 100%); + font-family: ; + border: 0px; + margin-bottom: 1px; + color: #202020; +} +*/ + +.impair:hover, td.nohover { + + background: rgb(); + + background: #fafafa; + + border: 0px; +} + +.impair, .nohover .impair:hover, tr.impair td.nohover { + + background: linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; + background: -o-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; + background: -moz-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; + background: -webkit-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; + background: -ms-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; + + background: #eaeaea; + + font-family: ; + border: 0px; + margin-bottom: 1px; + color: #202020; + min-height: 18px; /* seems to not be used */ +} + +.pair:hover { + + background: rgb(); + + background: #fafafa; + + border: 0px; +} + +.pair, .nohover .pair:hover, tr.pair td.nohover { + + background: linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; + background: -o-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; + background: -moz-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; + background: -webkit-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; + background: -ms-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; + + background: #ffffff; + + font-family: ; + border: 0px; + margin-bottom: 1px; + color: #202020; +} + + +tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.liste_titre_sel, table.dataTable.tr +{ + height: 26px !important; +} +div.liste_titre, tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.liste_titre_sel, table.dataTable thead tr +{ + background: rgb(); + background-repeat: repeat-x; + + /* + background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); + background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); + background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); + background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); + background-image: linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); + */ + font-weight: bold; + + color: #; + font-family: ; + border-bottom: 1px solid #FDFFFF; + text-align: ; +} +tr.liste_titre th, th.liste_titre, tr.liste_titre td, td.liste_titre, form.liste_titre div, div.liste_titre +{ + font-family: ; + font-weight: bold; + border-bottom: 1px solid #FDFFFF; + text-shadow: 1px 0px 1px #; + vertical-align: middle; +} +tr.liste_titre th a, th.liste_titre a, tr.liste_titre td a, td.liste_titre a, form.liste_titre div a, div.liste_titre a { + text-shadow: none !important; +} +.liste_titre td a { + text-shadow: none !important; + color: #; +} +div.liste_titre { + padding-left: 3px; +} +tr.liste_titre_sel th, th.liste_titre_sel, tr.liste_titre_sel td, td.liste_titre_sel, form.liste_titre_sel div +{ + font-family: ; + font-weight: normal; + border-bottom: 1px solid #FDFFFF; + text-decoration: underline; + text-shadow: 1px 0px 1px #; +} +input.liste_titre { + background: transparent; + border: 0px; +} + +.noborder tr.liste_total, .noborder tr.liste_total td, tr.liste_total, form.liste_total { + background: #F0F0F0; +} +.noborder tr.liste_total td, tr.liste_total td, form.liste_total div { + border-top: 1px solid #DDDDDD; + color: #332266; + font-weight: normal; + white-space: nowrap; +} + + +.tableforservicepart1 .impair, .tableforservicepart1 .pair, .tableforservicepart2 .impair, .tableforservicepart2 .pair { + background: none; +} + +.margintable td { + border: 0px !important; +} + +/* Disable shadows */ +.noshadow { + -moz-box-shadow: 0px 0px 0px #DDD !important; + -webkit-box-shadow: 0px 0px 0px #DDD !important; + box-shadow: 0px 0px 0px #DDD !important; +} + +div.tabBar .noborder { + -moz-box-shadow: 0px 0px 0px #DDD !important; + -webkit-box-shadow: 0px 0px 0px #DDD !important; + box-shadow: 0px 0px 0px #DDD !important; +} + + +/* + * Boxes + */ + +.tdboxstats { + + background: -o-linear-gradient(bottom, rgb() 85%, rgb() 120%) !important; + background: -moz-linear-gradient(bottom, rgb() 85%, rgb() 120%) !important; + background: -webkit-linear-gradient(bottom, rgb() 85%, rgb() 120%) !important; + background: -ms-linear-gradient(bottom, rgb() 85%, rgb() 120%) !important; + background: linear-gradient(bottom, rgb() 85%, rgb() 120%) !important; + + background: #ffffff !important; + +} + +.boxstats { + + margin: 3px; + padding: 3px; + /*-moz-box-shadow: 3px 3px 4px #DDD; + -webkit-box-shadow: 3px 3px 4px #DDD; + box-shadow: 3px 3px 4px #DDD; + margin-bottom: 8px !important;*/ + border: 1px solid #AAA; + text-align: center; + border-radius: 5px; +} + +.boxtable { + -moz-box-shadow: 3px 3px 4px #DDD; + -webkit-box-shadow: 3px 3px 4px #DDD; + box-shadow: 3px 3px 4px #DDD; + margin-bottom: 8px !important; +} + + +.box { + padding-right: 0px; + padding-left: 0px; + padding-bottom: 4px; +} + +tr.box_titre { + height: 26px !important; + background: rgb(); + background-repeat: repeat-x; + + /* + background-image: linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); + background-image: -o-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); + background-image: -moz-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); + background-image: -webkit-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); + background-image: -ms-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); + background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0, rgba(255,255,255,.3)), color-stop(1, rgba(0,0,0,.3)) ); + */ + + color: #; + text-shadow: 1px 0px 1px #; + font-family: , sans-serif; + font-weight: bold; + border-bottom: 1px solid #FDFFFF; + white-space: nowrap; +} + +tr.box_titre td.boxclose { + width: 30px; +} + +tr.box_impair { + + background: -o-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -moz-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -webkit-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -ms-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: linear-gradient(bottom, rgb() 85%, rgb() 100%); + + background: #eaeaea; + + font-family: ; +} + +tr.box_pair { + + background: -o-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -moz-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -webkit-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -ms-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: linear-gradient(bottom, rgb() 85%, rgb() 100%); + + background: #ffffff; + + font-family: ; +} + +.formboxfilter { + vertical-align: middle; + margin-bottom: 6px; +} +.formboxfilter input[type=image] +{ + top: 5px; + position: relative; +} + + + + + + +/* + * Ok, Warning, Error + */ +.ok { color: #114466; } +.warning { color: #887711; } +.error { color: #550000 !important; font-weight: bold; } + +div.ok { + color: #114466; +} + +div.warning { + color: #302020; + padding: 0.3em 0.3em 0.3em 0.3em; + margin: 0.5em 0em 0.5em 0em; + border: 1px solid #e0d0b0; + -moz-border-radius:6px; + -webkit-border-radius: 6px; + border-radius: 6px; + background: #EFDF9A; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +div.error { + color: #550000; font-weight: bold; + padding: 0.3em 0.3em 0.3em 0.3em; + margin: 0.5em 0em 0.5em 0em; + border: 1px solid #DC9CAB; + -moz-border-radius:6px; + -webkit-border-radius: 6px; + border-radius: 6px; + background: #EFCFCF; +} + +/* Info admin */ +div.info { + color: #302010; + padding: 0.4em 0.4em 0.4em 0.4em; + margin: 0.5em 0em 0.5em 0em; + border: 1px solid #DFBF9A; + -moz-border-radius:6px; + -webkit-border-radius: 6px; + border-radius:6px; + background: #EFCFAA; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + + +/* + * Liens Payes/Non payes + */ + +a.normal:link { font-weight: normal } +a.normal:visited { font-weight: normal } +a.normal:active { font-weight: normal } +a.normal:hover { font-weight: normal } + +a.impayee:link { font-weight: bold; color: #550000; } +a.impayee:visited { font-weight: bold; color: #550000; } +a.impayee:active { font-weight: bold; color: #550000; } +a.impayee:hover { font-weight: bold; color: #550000; } + + + +/* + * Other + */ + +.product_line_stock_ok { color: #002200; } +.product_line_stock_too_low { color: #664400; } + +.fieldrequired { font-weight: bold; color: #000055; } + +.dolgraphtitle { margin-top: 6px; margin-bottom: 4px; } +.dolgraphtitlecssboxes { margin: 0px; } +.legendColorBox, .legendLabel { border: none !important; } +div.dolgraph div.legend, div.dolgraph div.legend div { background-color: rgba(255,255,255,0) !important; } +div.dolgraph div.legend table tbody tr { height: auto; } + +.photo { + border: 0px; +} +.photowithmargin { + margin-bottom: 2px; + margin-top: 2px; +} + +.logo_setup +{ + content:url(); +} + +div.titre { + font-family: ; + font-weight: bold; + color: rgb(); + text-decoration: none; + text-shadow: 1px 1px 2px #FFFFFF; + dol_optimize_smallscreen)?'':'margin-top: 4px;'); ?> +} + +#dolpaymenttable { width: 600px; font-size: 13px; } +#tablepublicpayment { border: 1px solid #CCCCCC !important; width: 100%; } +#tablepublicpayment .CTableRow1 { background-color: #F0F0F0 !important; } +#tablepublicpayment tr.liste_total { border-bottom: 1px solid #CCCCCC !important; } +#tablepublicpayment tr.liste_total td { border-top: none; } + +#divsubscribe { width: 700px; } +#tablesubscribe { width: 100%; } + + +/* + * Effect Postit + */ +.effectpostit +{ + position: relative; +} +.effectpostit:before, .effectpostit:after +{ + z-index: -1; + position: absolute; + content: ""; + bottom: 15px; + left: 10px; + width: 50%; + top: 80%; + max-width:300px; + background: #777; + -webkit-box-shadow: 0 15px 10px #777; + -moz-box-shadow: 0 15px 10px #777; + box-shadow: 0 15px 10px #777; + -webkit-transform: rotate(-3deg); + -moz-transform: rotate(-3deg); + -o-transform: rotate(-3deg); + -ms-transform: rotate(-3deg); + transform: rotate(-3deg); +} +.effectpostit:after +{ + -webkit-transform: rotate(3deg); + -moz-transform: rotate(3deg); + -o-transform: rotate(3deg); + -ms-transform: rotate(3deg); + transform: rotate(3deg); + right: 10px; + left: auto; +} + + + +/* ============================================================================== */ +/* Formulaire confirmation (When Ajax JQuery is used) */ +/* ============================================================================== */ + +.ui-dialog-titlebar { +} +.ui-dialog-content { + font-size: px !important; +} + +/* ============================================================================== */ +/* Formulaire confirmation (When HTML is used) */ +/* ============================================================================== */ + +table.valid { + border-top: solid 1px #E6E6E6; + border-: solid 1px #E6E6E6; + border-: solid 1px #444444; + border-bottom: solid 1px #555555; + padding-top: 0px; + padding-left: 0px; + padding-right: 0px; + padding-bottom: 0px; + margin: 0px 0px; + background: #D5BAA8; +} + +.validtitre { + background: #D5BAA8; + font-weight: bold; +} + + +/* ============================================================================== */ +/* Tooltips */ +/* ============================================================================== */ + +#tooltip { +position: absolute; +width: px; +border-top: solid 1px #BBBBBB; +border-: solid 1px #BBBBBB; +border-: solid 1px #444444; +border-bottom: solid 1px #444444; +padding: 2px; +z-index: 3000; +background-color: #EFCFAA; +opacity: 1; +-moz-border-radius:6px; +-webkit-border-radius: 6px; +border-radius: 6px; +} +#tiptip_content { + background-color: rgb(252,248,246); + background-color: rgba(252,248,246,0.95); +} + +/* ============================================================================== */ +/* Calendar */ +/* ============================================================================== */ + +img.datecallink { padding-left: 2px !important; padding-right: 2px !important; } + +.ui-datepicker-trigger { + vertical-align: middle; + cursor: pointer; +} + +.bodyline { + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + border: 1px #E4ECEC outset; + padding: 0px; + margin-bottom: 5px; +} +table.dp { + width: 180px; + background-color: #FFFFFF; + border-top: solid 2px #DDDDDD; + border-: solid 2px #DDDDDD; + border-: solid 1px #222222; + border-bottom: solid 1px #222222; + padding: 0px; + border-spacing: 0px; + border-collapse: collapse; +} +.dp td, .tpHour td, .tpMinute td{padding:2px; font-size:10px;} +/* Barre titre */ +.dpHead,.tpHead,.tpHour td:Hover .tpHead{ + font-weight:bold; + background-color:#b3c5cc; + color:white; + font-size:11px; + cursor:auto; +} +/* Barre navigation */ +.dpButtons,.tpButtons { + text-align:center; + background-color:#617389; + color:#FFFFFF; + font-weight:bold; + cursor:pointer; +} +.dpButtons:Active,.tpButtons:Active{border: 1px outset black;} +.dpDayNames td,.dpExplanation {background-color:#D9DBE1; font-weight:bold; text-align:center; font-size:11px;} +.dpExplanation{ font-weight:normal; font-size:11px;} +.dpWeek td{text-align:center} + +.dpToday,.dpReg,.dpSelected{ + cursor:pointer; +} +.dpToday{font-weight:bold; color:black; background-color:#DDDDDD;} +.dpReg:Hover,.dpToday:Hover{background-color:black;color:white} + +/* Jour courant */ +.dpSelected{background-color:#0B63A2;color:white;font-weight:bold; } + +.tpHour{border-top:1px solid #DDDDDD; border-right:1px solid #DDDDDD;} +.tpHour td {border-left:1px solid #DDDDDD; border-bottom:1px solid #DDDDDD; cursor:pointer;} +.tpHour td:Hover {background-color:black;color:white;} + +.tpMinute {margin-top:5px;} +.tpMinute td:Hover {background-color:black; color:white; } +.tpMinute td {background-color:#D9DBE1; text-align:center; cursor:pointer;} + +/* Bouton X fermer */ +.dpInvisibleButtons +{ + border-style:none; + background-color:transparent; + padding:0px; + font-size:9px; + border-width:0px; + color:#0B63A2; + vertical-align:middle; + cursor: pointer; +} + + +/* ============================================================================== */ +/* Afficher/cacher */ +/* ============================================================================== */ + +div.visible { + display: block; +} + +div.hidden { + display: none; +} + +tr.visible { + display: block; +} + +td.hidden { + display: none; +} + + +/* ============================================================================== */ +/* Module agenda */ +/* ============================================================================== */ + +table.cal_month { border-spacing: 0px; } +.cal_current_month { border-top: 0; border-left: solid 1px #E0E0E0; border-right: 0; border-bottom: solid 1px #E0E0E0; } +.cal_current_month_peruserleft { border-top: 0; border-left: solid 3px #6C7C7B; border-right: 0; border-bottom: solid 1px #E0E0E0; } +.cal_current_month_oneday { border-right: solid 1px #E0E0E0; } +.cal_other_month { border-top: 0; border-left: solid 1px #C0C0C0; border-right: 0; border-bottom: solid 1px #C0C0C0; } +.cal_other_month_peruserleft { border-top: 0; border-left: solid 3px #6C7C7B !important; border-right: 0; } +.cal_current_month_right { border-right: solid 1px #E0E0E0; } +.cal_other_month_right { border-right: solid 1px #C0C0C0; } +.cal_other_month { opacity: 0.6; background: #EAEAEA; padding-: 2px; padding-: 1px; padding-top: 0px; padding-bottom: 0px; } +.cal_past_month { opacity: 0.6; background: #EEEEEE; padding-: 2px; padding-: 1px; padding-top: 0px; padding-bottom: 0px; } +.cal_current_month { background: #FFFFFF; border-left: solid 1px #E0E0E0; padding-: 2px; padding-: 1px; padding-top: 0px; padding-bottom: 0px; } +.cal_current_month_peruserleft { background: #FFFFFF; border-left: solid 3px #6C7C7B; padding-: 2px; padding-: 1px; padding-top: 0px; padding-bottom: 0px; } +.cal_today { background: #FDFDF0; border-left: solid 1px #E0E0E0; border-bottom: solid 1px #E0E0E0; padding-: 2px; padding-: 1px; padding-top: 0px; padding-bottom: 0px; } +.cal_today_peruser { background: #FDFDF0; border-right: solid 1px #E0E0E0; border-bottom: solid 1px #E0E0E0; padding-: 2px; padding-: 1px; padding-top: 0px; padding-bottom: 0px; } +.cal_today_peruser_peruserleft { background: #FDFDF0; border-left: solid 3px #6C7C7B; border-right: solid 1px #E0E0E0; border-bottom: solid 1px #E0E0E0; padding-: 2px; padding-: 1px; padding-top: 0px; padding-bottom: 0px; } +.cal_past { } +.cal_peruser { padding: 0px; } +.peruser_busy { background: #CC8888; } +.peruser_notbusy { background: #EEDDDD; opacity: 0.5; } +table.cal_event { border: none; border-collapse: collapse; margin-bottom: 1px; -webkit-border-radius: 6px; border-radius: 6px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.25); + moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.25); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.25); + background: -webkit-gradient(linear, left top, left bottom, from(#006aac), to(#00438d)); + min-height: 20px; + } +table.cal_event td { border: none; padding-: 2px; padding-: 2px; padding-top: 0px; padding-bottom: 0px; } +ul.cal_event { padding-right: 2px; padding-top: 1px; border: none; list-style-type: none; margin: 0 auto; padding-left: 0px; padding-start: 0px; -khtml-padding-start: 0px; -o-padding-start: 0px; -moz-padding-start: 0px; -webkit-padding-start: 0px; } +li.cal_event { border: none; list-style-type: none; } +.cal_event a:link { color: #111111; font-size: 11px; font-weight: normal !important; } +.cal_event a:visited { color: #111111; font-size: 11px; font-weight: normal !important; } +.cal_event a:active { color: #111111; font-size: 11px; font-weight: normal !important; } +.cal_event a:hover { color: #111111; font-size: 11px; font-weight: normal !important; color:rgba(255,255,255,.75); } +.cal_event_busy { } +.cal_peruserviewname { max-width: 100px; height: 22px; } + +.topmenuimage { + background-size: 28px auto; +} + +/* ============================================================================== */ +/* Ajax - Liste deroulante de l'autocompletion */ +/* ============================================================================== */ + +.ui-widget-content { border: solid 1px rgba(0,0,0,.3); background: #fff !important; } + +.ui-autocomplete-loading { background: white url() right center no-repeat; } +.ui-autocomplete { + position:absolute; + width:auto; + font-size: 1.0em; + background-color:white; + border:1px solid #888; + margin:0px; +/* padding:0px; This make combo crazy */ + } +.ui-autocomplete ul { + list-style-type:none; + margin:0px; + padding:0px; + } +.ui-autocomplete ul li.selected { background-color: #D3E5EC;} +.ui-autocomplete ul li { + list-style-type:none; + display:block; + margin:0; + padding:2px; + height:18px; + cursor:pointer; + } + +/* ============================================================================== */ +/* jQuery - jeditable */ +/* ============================================================================== */ + +.editkey_textarea, .editkey_ckeditor, .editkey_string, .editkey_email, .editkey_numeric, .editkey_select, .editkey_autocomplete { + background: url() right top no-repeat; + cursor: pointer; +} + +.editkey_datepicker { + background: url() right center no-repeat; + cursor: pointer; +} + +.editval_textarea.active:hover, .editval_ckeditor.active:hover, .editval_string.active:hover, .editval_email.active:hover, .editval_numeric.active:hover, .editval_select.active:hover, .editval_autocomplete.active:hover, .editval_datepicker.active:hover { + background: white; + cursor: pointer; +} + +.viewval_textarea.active:hover, .viewval_ckeditor.active:hover, .viewval_string.active:hover, .viewval_email.active:hover, .viewval_numeric.active:hover, .viewval_select.active:hover, .viewval_autocomplete.active:hover, .viewval_datepicker.active:hover { + background: white; + cursor: pointer; +} + +.viewval_hover { + background: white; +} + + +/* ============================================================================== */ +/* Admin Menu */ +/* ============================================================================== */ + +/* CSS for treeview */ +.treeview ul { background-color: transparent !important; margin-top: 0; } +.treeview li { background-color: transparent !important; padding: 0 0 0 16px !important; min-height: 20px; } +.treeview .hover { color: black !important; } + + + +/* ============================================================================== */ +/* Show Excel tabs */ +/* ============================================================================== */ + +.table_data +{ + border-style:ridge; + border:1px solid; +} +.tab_base +{ + background:#C5D0DD; + font-weight:bold; + border-style:ridge; + border: 1px solid; + cursor:pointer; +} +.table_sub_heading +{ + background:#CCCCCC; + font-weight:bold; + border-style:ridge; + border: 1px solid; +} +.table_body +{ + background:#F0F0F0; + font-weight:normal; + font-family:sans-serif; + border-style:ridge; + border: 1px solid; + border-spacing: 0px; + border-collapse: collapse; +} +.tab_loaded +{ + background:#222222; + color:white; + font-weight:bold; + border-style:groove; + border: 1px solid; + cursor:pointer; +} + + +/* ============================================================================== */ +/* CSS for color picker */ +/* ============================================================================== */ + +A.color, A.color:active, A.color:visited { + position : relative; + display : block; + text-decoration : none; + width : 10px; + height : 10px; + line-height : 10px; + margin : 0px; + padding : 0px; + border : 1px inset white; +} +A.color:hover { + border : 1px outset white; +} +A.none, A.none:active, A.none:visited, A.none:hover { + position : relative; + display : block; + text-decoration : none; + width : 10px; + height : 10px; + line-height : 10px; + margin : 0px; + padding : 0px; + cursor : default; + border : 1px solid #b3c5cc; +} +.tblColor { + display : none; +} +.tdColor { + padding : 1px; +} +.tblContainer { + background-color : #b3c5cc; +} +.tblGlobal { + position : absolute; + top : 0px; + left : 0px; + display : none; + background-color : #b3c5cc; + border : 2px outset; +} +.tdContainer { + padding : 5px; +} +.tdDisplay { + width : 50%; + height : 20px; + line-height : 20px; + border : 1px outset white; +} +.tdDisplayTxt { + width : 50%; + height : 24px; + line-height : 12px; + font-family : ; + font-size : 8pt; + color : black; + text-align : center; +} +.btnColor { + width : 100%; + font-family : ; + font-size : 10pt; + padding : 0px; + margin : 0px; +} +.btnPalette { + width : 100%; + font-family : ; + font-size : 8pt; + padding : 0px; + margin : 0px; +} + + +/* Style to overwrites JQuery styles */ +.ui-menu .ui-menu-item a { + text-decoration:none; + display:block; + padding:.2em .4em; + line-height:1.5; + zoom:1; + font-weight: normal; + font-family:; + font-size:1em; +} +.ui-widget { + font-family:; + font-size:px; +} +.ui-button { margin-left: -2px; browser->name)?'padding-top: 1px;':''); ?> } +.ui-button-icon-only .ui-button-text { height: 8px; } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: 2px 0px 6px 0px; } +.ui-button-text +{ + line-height: 1em !important; +} +.ui-autocomplete-input { margin: 0; padding: 4px; } + + +/* ============================================================================== */ +/* CKEditor */ +/* ============================================================================== */ + +.cke_editable +{ + margin: 5px !important; +} +.cke_editor table, .cke_editor tr, .cke_editor td +{ + border: 0px solid #FF0000 !important; +} +span.cke_skin_kama { padding: 0 !important; } +.cke_wrapper { padding: 4px !important; } +a.cke_dialog_ui_button +{ + font-family: !important; + background-image: url() !important; + background-position: bottom !important; + border: 1px solid #C0C0C0 !important; + -moz-border-radius:0px 5px 0px 5px !important; + -webkit-border-radius:0px 5px 0px 5px !important; + border-radius:0px 5px 0px 5px !important; + -moz-box-shadow: 3px 3px 4px #DDD !important; + -webkit-box-shadow: 3px 3px 4px #DDD !important; + box-shadow: 3px 3px 4px #DDD !important; +} +.cke_dialog_ui_hbox_last +{ + vertical-align: bottom ! important; +} +.cke_editable +{ + line-height: 1.4 !important; + margin: 6px !important; +} + + +/* ============================================================================== */ +/* File upload */ +/* ============================================================================== */ + +.template-upload { + height: 72px !important; +} + + +/* ============================================================================== */ +/* Holiday */ +/* ============================================================================== */ + +#types .btn { + cursor: pointer; +} + +#types .btn-primary { + font-weight: bold; +} + +#types form { + padding: 20px; +} + +#types label { + display:inline-block; + width:100px; + margin-right: 20px; + padding: 4px; + text-align: right; + vertical-align: top; +} + +#types input.text, #types textarea { + width: 400px; +} + +#types textarea { + height: 100px; +} + + + +/* ============================================================================== */ +/* JSGantt */ +/* ============================================================================== */ + +div.scroll2 { + width: px !important; +} + + +/* ============================================================================== */ +/* jFileTree */ +/* ============================================================================== */ + +.ecmfiletree { + width: 99%; + height: 99%; + background: #FFF; + padding-left: 2px; + font-weight: normal; +} + +.fileview { + width: 99%; + height: 99%; + background: #FFF; + padding-left: 2px; + padding-top: 4px; + font-weight: normal; +} + +div.filedirelem { + position: relative; + display: block; + text-decoration: none; +} + +ul.filedirelem { + padding: 2px; + margin: 0 5px 5px 5px; +} +ul.filedirelem li { + list-style: none; + padding: 2px; + margin: 0 10px 20px 10px; + width: 160px; + height: 120px; + text-align: center; + display: block; + float: ; + border: solid 1px #DDDDDD; +} + +ui-layout-north { + +} + +ul.ecmjqft { + font-size: 11px; + line-height: 16px; + padding: 0px; + margin: 0px; + font-weight: normal; +} + +ul.ecmjqft li { + list-style: none; + padding: 0px; + padding-left: 20px; + margin: 0px; + white-space: nowrap; + display: block; +} + +ul.ecmjqft a { + line-height: 16px; + vertical-align: middle; + color: #333; + padding: 0px 0px; + font-weight:normal; + display: inline-block !important; +/* float: left;*/ +} +ul.ecmjqft a:active { + font-weight: bold !important; +} +ul.ecmjqft a:hover { + text-decoration: underline; +} +div.ecmjqft { + vertical-align: middle; + display: inline-block !important; + text-align: right; + position:absolute; + right:4px; +} + +/* Core Styles */ +.ecmjqft LI.directory { font-weight:normal; background: url() left top no-repeat; } +.ecmjqft LI.expanded { font-weight:normal; background: url() left top no-repeat; } +.ecmjqft LI.wait { font-weight:normal; background: url() left top no-repeat; } + + +/* ============================================================================== */ +/* jNotify */ +/* ============================================================================== */ + +.jnotify-container { + position: fixed !important; +global->MAIN_JQUERY_JNOTIFY_BOTTOM)) { ?> + top: auto !important; + bottom: 4px !important; + + text-align: center; + min-width: px; + width: auto; + padding-left: 10px !important; + padding-right: 10px !important; +} + +/* use or not ? */ +div.jnotify-background { + opacity : 0.95 !important; + -moz-box-shadow: 3px 3px 4px #888 !important; + -webkit-box-shadow: 3px 3px 4px #888 !important; + box-shadow: 3px 3px 4px #888 !important; +} + +/* ============================================================================== */ +/* blockUI */ +/* ============================================================================== */ + +/*div.growlUI { background: url(check48.png) no-repeat 10px 10px }*/ +div.dolEventValid h1, div.dolEventValid h2 { + color: #567b1b; + background-color: #e3f0db; + padding: 5px 5px 5px 5px; + text-align: left; +} +div.dolEventError h1, div.dolEventError h2 { + color: #a72947; + background-color: #d79eac; + padding: 5px 5px 5px 5px; + text-align: left; +} + +/* ============================================================================== */ +/* Maps */ +/* ============================================================================== */ + +.divmap, #google-visualization-geomap-embed-0, #google-visualization-geomap-embed-1, google-visualization-geomap-embed-2 { + -moz-box-shadow: 0px 0px 10px #AAA; + -webkit-box-shadow: 0px 0px 10px #AAA; + box-shadow: 0px 0px 10px #AAA; +} + + +/* ============================================================================== */ +/* Datatable */ +/* ============================================================================== */ + +.sorting_asc { background: url('') no-repeat center right; } +.sorting_desc { background: url('') no-repeat center right; } +.sorting_asc_disabled { background: url('') no-repeat center right; } +.sorting_desc_disabled { background: url('') no-repeat center right; } +.paginate_disabled_previous:hover, .paginate_enabled_previous:hover, .paginate_disabled_next:hover, .paginate_enabled_next:hover +{ + font-weight: normal; +} +.paginate_enabled_previous:hover, .paginate_enabled_next:hover +{ + text-decoration: underline !important; +} + +/* For jquery plugin combobox */ +/* Disable this. It breaks wrapping of boxes +.ui-corner-all { white-space: nowrap; } */ + +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled, .paginate_button_disabled { + opacity: .35; + filter: Alpha(Opacity=35); + background-image: none; +} + +/* ============================================================================== */ +/* Select2 */ +/* ============================================================================== */ + +.select2-choice, +.select2-drop.select2-drop-above.select2-drop-active, +.select2-container-active .select2-choice, +.select2-container-active .select2-choices, +.select2-dropdown-open.select2-drop-above .select2-choice, +.select2-dropdown-open.select2-drop-above .select2-choices, +.select2-container-multi.select2-container-active .select2-choices +{ + border: 1px solid #aaa; +} +.select2-disabled +{ + color: #888; +} +.select2-drop-active +{ + border: 1px solid #aaa; + border-top: none; +} +a span.select2-chosen +{ + font-weight: normal !important; +} +.select2-container .select2-choice { + background-image: none; +} +.select2-results .select2-no-results, .select2-results .select2-searching, .select2-results .select2-ajax-error, .select2-results .select2-selection-limit +{ + background: #FFFFFF; +} + + +/* ============================================================================== */ +/* JMobile */ +/* ============================================================================== */ + +li.ui-li-divider .ui-link { + color: #FFF !important; +} +.ui-btn { + margin: 0.1em 2px +} +a.ui-link, a.ui-link:hover, .ui-btn:hover, span.ui-btn-text:hover, span.ui-btn-inner:hover { + text-decoration: none !important; +} + +.ui-btn-inner { + min-width: .4em; + padding-left: 10px; + padding-right: 10px; + + font-size: 13px; + + font-size: px; + + /* white-space: normal; */ /* Warning, enable this break the truncate feature */ +} +.ui-btn-icon-right .ui-btn-inner { + padding-right: 34px; +} +.ui-btn-icon-left .ui-btn-inner { + padding-left: 34px; +} +.ui-select .ui-btn-icon-right .ui-btn-inner { + padding-right: 38px; +} +.ui-select .ui-btn-icon-left .ui-btn-inner { + padding-left: 38px; +} +.fiche .ui-controlgroup { + margin: 0px; + padding-bottom: 0px; +} +div.ui-controlgroup-controls div.tabsElem +{ + margin-top: 2px; +} +div.ui-controlgroup-controls div.tabsElem a +{ + -moz-box-shadow: 0 -3px 6px rgba(0,0,0,.2); + -webkit-box-shadow: 0 -3px 6px rgba(0,0,0,.2); + box-shadow: 0 -3px 6px rgba(0,0,0,.2); +} +div.ui-controlgroup-controls div.tabsElem a#active { + -moz-box-shadow: 0 -3px 6px rgba(0,0,0,.3); + -webkit-box-shadow: 0 -3px 6px rgba(0,0,0,.3); + box-shadow: 0 -3px 6px rgba(0,0,0,.3); +} + +a.tab span.ui-btn-inner +{ + border: none; + padding: 0; +} + +.ui-link { + color: rgb(); +} +.liste_titre .ui-link { + color: # !important; +} + +a.ui-link { + word-wrap: break-word; +} + +/* force wrap possible onto field overflow does not works */ +.formdoc .ui-btn-inner +{ + white-space: normal; + overflow: hidden; + text-overflow: hidden; +} + +/* Warning: setting this may make screen not beeing refreshed after a combo selection */ +/*.ui-body-c { + background: #fff; +}*/ + +div.ui-radio, div.ui-checkbox +{ + display: inline-block; + border-bottom: 0px !important; +} +.ui-checkbox input, .ui-radio input { + height: auto; + width: auto; + margin: 4px; + position: static; +} +div.ui-checkbox label+input, div.ui-radio label+input { + position: absolute; +} +.ui-mobile fieldset +{ + padding-bottom: 10px; margin-bottom: 4px; border-bottom: 1px solid #AAAAAA !important; +} + +ul.ulmenu { + border-radius: 0; + -webkit-border-radius: 0; +} + +.ui-field-contain label.ui-input-text { + vertical-align: middle !important; +} +.ui-mobile fieldset { + border-bottom: none !important; +} + +/* Style for first level menu with jmobile */ +.ui-bar-b, .lilevel0 { + border: 1px solid #5f5f7a !important; + background: rgb(); + background-repeat: repeat-x; + + background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); + background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); + background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); + background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); + background-image: linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%); + font-weight: bold; + + color: # !important; +} +.alilevel0 { + color: # !important; + text-shadow: 1px 0px 1px #; +} + +.ui-body-c { + border: 1px solid #ccc; + text-shadow: none; +} +.ui-btn-up-c, .ui-btn-hover-c { + border: 1px solid #ccc; + text-shadow: none; +} +.ui-body-c .ui-link, .ui-body-c .ui-link:visited, .ui-body-c .ui-link:hover { + color: rgb(); +} +.ui-btn-up-c .vsmenudisabled { + color: # !important; + text-shadow: none !important; +} +.ui-controlgroup-horizontal .ui-btn.ui-first-child { +-webkit-border-top-left-radius: 6px; +border-top-left-radius: 6px; +} +.ui-controlgroup-horizontal .ui-btn.ui-last-child { +-webkit-border-top-right-radius: 6px; +border-top-right-radius: 6px; +} +.alilevel1 { + color: # !important; + text-shadow: 1px 0px 1px #; +} +.lilevel1 { + background-image: -webkit-gradient(linear,left top,left bottom,from( #ddd ),to( #d1d1d1 )) !important; + background-image: -webkit-linear-gradient( #ddd,#d1d1d1 ) !important; + background-image: -moz-linear-gradient( #ddd,#d1d1d1 ) !important; + background-image: -ms-linear-gradient( #ddd,#d1d1d1 ) !important; + background-image: -o-linear-gradient( #ddd,#d1d1d1 ) !important; + background-image: linear-gradient( #ddd,#d1d1d1 ) !important; +} +.lilevel2 +{ + padding-left: 22px; +} +.lilevel3 +{ + padding-left: 54px; +} + +close(); diff --git a/htdocs/theme/md_dev/thumb.png b/htdocs/theme/md_dev/thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..6b4c467bead7e991a22ad47a394bd135b8837094 GIT binary patch literal 3839 zcmV|4I3mR z)+{ZAg@q6j28>GX0oqN2+g(*zSvkI!Z@%*sd=Zg(JF{|nm6@ixQC*d?-f&;U`Of&A z6PNtyU;bdN&YnEpwN}>Fms*-uS~SZFt{<%%p@8T)Z3{?7Fp<<9KkcPI$;I8X$&hp2Y%k(3B^o|tgc~GF3XKy>{FrO)y3?xLy`di^c@~GY(I>Ih z;>~qJnRas*=bCHjzxnHL*p>kl{%pG6J0O4fXMg=0Z@=NX&fov@e=N0YfD^}~I2kva zcL{!i9}!xwJDzKgCw?5KP(qj%NgUKYk5QVJ1uZj1O^#nOA?`tMr&e#;jwiM(OF}8< zWfUG{Mc8b78J`t-v9`Ln+HF1B+#65BGK&Wv{uAr0x4(3s>H3WV=AL7G=bK-1Y?DhU zoaf~GfAkl?0Igf5VH;Ev@@a;y7iE#>h0bVE^1LW)3kD}il9s%5Y#54WsW3YT@C)gbQVRaMl@*0V0xBkc&%aYW4B=;h=V)D=bYc5g=?<)+u!=S z>zHcQvPj4u|M_3lJQv&gK@3r9uFG_qBrqBQ;G!&Ru7l5kj%Y;J+06ILl6#(;WqBAy zt_!cxDb)t!spHtTX)#9fqQruL0gv!p2fCw_VnOU$6h)k5wr#=9!Z3={464-e8v@Pd zz8_&njoc96l6P8--~YYu0$`;_GPg!?8_~Xi7gP+4q)JFxmg%~VG&P%rmZgu!Guwux znDB?1o97uq_v5DlGxV;dw z_-&e|Wm$;NG+y^?I5UxU#@k9~Up&CDa9Nf?5Fn^b)4*$h@jTD6EGVLPF#Pxzo4vsV zP=PVYOQaa>IniRxwWan~@7?<7=Nsc$2*ojqoQ6L_l|>1RzLO$o*AXHw%q%hc}JShoDlkmY$-<$bSqgh8*UA}$iwO8&|;=;nvNUyg)91ILYUs+jg zwL6-sDf}5Z$kx`=qR4|NxwX35Y&QAv+e9hi2eb5(otYjFTXq5S;%3iv(=7A6dbiuv zWm%fnGl>=_F|^-oHh@XchbRn#E!T5wXVv$^$z&3zsi~Xm>+7=MWl{)TSQvqNUg1V0 z8wP{s@n7{JT!0>3&-g7?!`|vE+=kb-ZCAQWl30~T1PkIwxe}2VetUYsOTz@0e#BL< z8nO)pCd^2a1fQraz#Z_V_V`Z-*wLLoAZZ-_?GJwhFI`(~!Z`JM{k7NcFD-V|Dv0m| zzeuq{a!MDvX`07VS1D?20--AmLR*YgE&%_+J@^%6x*|TXs8CHQSPmAnY@5!V9ZDI; z)%qf&lQAWwZnpAVY{ca~5IzVaQugTVZ)$7bmoY3i&gGU|2qiA=M9f=t7LIFkIFcNV&>R%?E=lAnpoaU4}<(=<=QN0!Mg@9yr-K^TR|6d*!t zYirZ#bmj-h#f_#%vNYb<+=iDM$eF@}8Dc>r%ysO=#YO08w?BOUzaIAc1CS+v7IeRO z-XtwD)2-#scfR>mgOLPOJc%hPyUwySg}4raxK^k1`4-LLeiHDZGp1P*4=md>%r=Uv z@6WI)+y`E!oKATGK{2YNm&uh&-xGh8&3gx)vU?Awnr6wVo=m=q9m{H|kD&{+fl}Xtd z{5dbQjqToO8VJTHdkooTXi_{LP6tk{O|Lq9JL*C>NXYB2-1^1FZk*-300uD$6Gc$& zh?|HkW~Ceqik3j5{E(q@)#A@Xzo{y=%CPUf_wIN!&~@kbowc+eZ{B}hapwL0;K5Hn z7!C)NF-|~Lb2Ma0nt(TyyxiKKXv|cA$w?%KHSXy3c``u;uo2fbfA_oJ`teU53?~8J z!cC#ww9ptYyqX<_sb%YFR)XTXUM-FzKjBHn=L`<%?Znc>m{9;eGp>$P0<<+3xEfsJ z!}s5f%VIW*Y;+pXiWpH5$EhW0T!{IuVO#cFZ@sCMd#3JD{Lp4ReE28~#{Hqc*y+6b z>b)C@c8K@iAAPj5zk_O`!&A-^;&@ampFcs2Dc#xL4x)&u{ziJa$Q)99r7YC|sV`wJ z{8L>!I!8fTj|!o>Pz68|13#$Mz42%QstJbM>2$6S7&7#GJy0%5q~-v8UQNP6v)OEE zX=$FG&i9k;t@jD9N%o^cwAUt8rFZ=6RMouC4lNd#T5uivWXGZ#hNe|``I5n2?H`K|_7A%x~C3!e#C z5Yhm~D;qTy&Vt5bCz5pSJixy1i=n^4{G<>GD$5oZ7GUUWdiCz^F4R zx7(cqaIvu9Dm#VpIukHlT5?ZYRHCEJ)GXnIh4Uf~lV+!06<+1r7gPcDty<@bfbkju z3@9rrE0+Pr0!63eRDes{5~O;o)F_wtj7Gb$$ygz({rQ-e-0}lj1n;5B}j_gD@?NTyQ=ym7>yY z6gD2*4@F+=EmY3=IWk~|g0T>omju*-6w1rjDilbSY z6;YJnhhTw07>TK}JYl|C^Q)Ela6Cg^DDvENT%z-<0|pM{pJfU7MzSyE^xp1Xv)L%6`@tE-69$s%BfOt?rdgd4XSt-toa?5!HNJ*RCrRx4VL0>8jWZ2>XAzaSzfAuwOu!p!mIZ^bDNI#~E}c4wmJ>gbAW9M_&Rw1$<3D8GsJcI6ZKO7-$v7 zqXR6s+aHF$|MoZDX7t)~g(BPB?UOQtV>K3*MrrSIz)6-5M&SIZtcr&tcz*1_RK31V zC&$H+CtY4>4tm@0z=;?(kT?v#^2UAi64$XOI_LepeH22%%f`ZTFWtTbFr09AzyITZ ze|L9pfUPZqg-I?RPcaQtR|?uwkcLZVQ9kf5sQu>_6E2TnOr1Ek`Of#gty8$h;c=80 zAtIEn?ZZqwK%yG^f^a%lKa8Ayu?6wvY&K2O9GL~qtRDZ#axSJ8No>2dR-;~?uMjZ+ zh!fj!Zg!@5_FnVEFq#-7m5b*Oh}&vTz}4Zpd`=5nFhe&kLjtWXEG$UM@j?NM$I#+* zyEmEz2_>KL(xV_2C!lJSLC6&g$KlkP(Yv>oY|FUuIqvfTMhx%u`v3Oe{hhr5quexT z6lXA*DL84NQ>0xp4r8z8=4rAw$MkSuUj56aS%2{{oTSCUG_eiZs_AM92NES7ULv|M93@XTc5dBX zMXpkhv#6Q&#YdZ`8uVg1-SNDxX*!<+z*#x=(>NGsu@9J*Y2}61^7@^{uTWhWB=E;s zu7RAC^4JlDbY*$zMA}Q!UcV1u^4L*Vq^e#&H0F3bGEJ*2Bg1gP)n0VcBHAR(KH3;& zvxAPES+mHMG;RWfNWD zlgFD&D_wE)&X{_T59!+VyeiqElaJy=vN53m^{`9zSdc7un(uFW-m+=BFCK7~ Date: Sun, 22 Mar 2015 18:17:25 +0100 Subject: [PATCH 358/429] Method colorStringToArray can accept the # Method monthArray can return short label of month --- htdocs/core/class/html.formother.class.php | 2 +- htdocs/core/lib/date.lib.php | 25 +++++++++++++++++++--- htdocs/core/lib/functions2.lib.php | 2 +- htdocs/main.inc.php | 4 ++-- htdocs/societe/consumption.php | 2 +- htdocs/user/class/user.class.php | 13 ++++++----- 6 files changed, 33 insertions(+), 15 deletions(-) diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index 4ea60dbf2c1..786d2c53a34 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -782,7 +782,7 @@ class FormOther require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; - $montharray = monthArray($langs); // Get array + $montharray = monthArray($langs, 1); // Get array $select_month = ''; print ''; -print ''; // date +print ''; // date print $formother->select_month($month?$month:-1,'month',1); $formother->select_year($year?$year:-1,'year',1, 20, 1); print ''; diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index e8f3487a32c..9ffa762afd1 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -1793,13 +1793,13 @@ class User extends CommonObject $label = '' . $langs->trans("User") . ''; $label.= '

    '; - $label .= '' . $langs->trans('Name') . ': ' . $this->getFullName($langs,'',''); + $label.= '' . $langs->trans('Name') . ': ' . $this->getFullName($langs,'',''); if (! empty($this->login)) - $label .= '
    ' . $langs->trans('Login') . ': ' . $this->login; + $label.= '
    ' . $langs->trans('Login') . ': ' . $this->login; if (! empty($this->email)) - $label .= '
    ' . $langs->trans("EMail").': '.$this->email; + $label.= '
    ' . $langs->trans("EMail").': '.$this->email; if (! empty($this->admin)) - $label .= '
    ' . $langs->trans("Administrator").': '.yn($this->admin); + $label.= '
    ' . $langs->trans("Administrator").': '.yn($this->admin); if (! empty($this->societe_id)) { $thirdpartystatic = new Societe($db); $thirdpartystatic->fetch($this->societe_id); @@ -1807,11 +1807,10 @@ class User extends CommonObject $company=' ('.$langs->trans("Company").': '.$thirdpartystatic->name.')'; } $type=($this->societe_id?$langs->trans("External").$company:$langs->trans("Internal")); - $label .= '
    ' . $langs->trans("Type") . ': ' . $type; + $label.= '
    ' . $langs->trans("Type") . ': ' . $type; if (! empty($this->photo)) { - $label.= '
    '; - //if (! is_object($form)) $form = new Form($db); + $label.= '
    '; $label.= Form::showphoto('userphoto', $this, 80); } $label.= '
    '; From d678b554e0037309ae3f69917c504083bf6a5bd4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Mar 2015 18:39:05 +0100 Subject: [PATCH 359/429] Fix css --- htdocs/societe/notify/card.php | 1 + htdocs/theme/md_dev/style.css.php | 33 +++++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/htdocs/societe/notify/card.php b/htdocs/societe/notify/card.php index f8594a545ea..2e63d243526 100644 --- a/htdocs/societe/notify/card.php +++ b/htdocs/societe/notify/card.php @@ -262,6 +262,7 @@ if ($result > 0) foreach($conf->global as $key => $val) { if (! preg_match('/^NOTIFICATION_FIXEDEMAIL_(.*)/', $key, $reg)) continue; + $var = ! $var; print ''; $listtmp=explode(',',$val); $first=1; diff --git a/htdocs/theme/md_dev/style.css.php b/htdocs/theme/md_dev/style.css.php index 4dc84c90792..4d3e0937e4d 100644 --- a/htdocs/theme/md_dev/style.css.php +++ b/htdocs/theme/md_dev/style.css.php @@ -734,7 +734,7 @@ div.tmenuleft dol_optimize_smallscreen)) { ?> width: 5px; height: px; - background: url() 0 -6px no-repeat; + /* background: url() 0 -6px no-repeat; */ } div.tmenucenter @@ -1512,6 +1512,13 @@ a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { text-decoration: none; white-space: nowrap; + /*border-bottom: none; + border-right: 1px solid #CCCCCC; + border-left: 1px solid #D0D0D0; + border-top: 1px solid #D8D8D8; + */ + + /* -moz-border-radius:6px 6px 0px 0px; -webkit-border-radius:6px 6px 0px 0px; border-radius:6px 6px 0px 0px; @@ -1520,11 +1527,6 @@ a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { -webkit-box-shadow: 0 -1px 4px rgba(0,0,0,.1); box-shadow: 0 -1px 4px rgba(0,0,0,.1); - border-bottom: none; - border-right: 1px solid #CCCCCC; - border-left: 1px solid #D0D0D0; - border-top: 1px solid #D8D8D8; - background: rgb(); /*background-image: -o-linear-gradient(bottom, rgb() 35%, rgb() 100%); @@ -1533,10 +1535,23 @@ a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { background-image: -ms-linear-gradient(bottom, rgb() 35%, rgb() 100%); background-image: linear-gradient(bottom, rgb() 35%, rgb() 100%);*/ + */ background-image: none !important; } -.tabactive { +.tabactive, a.tab#active { + border-right: 1px solid #CCCCCC; + border-left: 1px solid #D0D0D0; + border-top: 1px solid #D8D8D8; + + -moz-border-radius:6px 6px 0px 0px; + -webkit-border-radius:6px 6px 0px 0px; + border-radius:6px 6px 0px 0px; + + -moz-box-shadow: 0 -1px 4px rgba(0,0,0,.1); + -webkit-box-shadow: 0 -1px 4px rgba(0,0,0,.1); + box-shadow: 0 -1px 4px rgba(0,0,0,.1); + background: rgb() !important; /* border-bottom: 1px solid rgb() !important; @@ -1549,8 +1564,10 @@ a.tab:link, a.tab:visited, a.tab:hover, a.tab#active { } a.tab:hover { + /* background: rgba(, 0.5) url() 50% 0 repeat-x; - color: #; + color: #;*/ + text-decoration: underline; } a.tab:link, a.tab:visited { From 221d44a4b8cd03544d11242f9dd942bd9da79000 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Mar 2015 18:54:12 +0100 Subject: [PATCH 360/429] br at wrong place --- htdocs/fourn/card.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index c88dae2e8f3..40d51c89b90 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -305,6 +305,8 @@ if ($object->id > 0) print '
    '.$langs->trans("ShowSupplierPreview").''; print ''; print ''; + print '
    '; + /* * List of products @@ -361,8 +363,6 @@ if ($object->id > 0) } - print '
    '; - /* * Last orders */ @@ -370,8 +370,6 @@ if ($object->id > 0) if ($user->rights->fournisseur->commande->lire) { - - // TODO move to DAO class // Check if there are supplier orders billable $sql2 = 'SELECT s.nom, s.rowid as socid, s.client, c.rowid, c.ref, c.total_ht, c.ref_supplier,'; From ad0f1aae6bc1eaff3f0d8f660735e590fac5e8c4 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 22 Mar 2015 20:19:22 +0100 Subject: [PATCH 361/429] Move loan in htdocs --- htdocs/core/lib/loan.lib.php | 6 +++--- htdocs/core/menus/init_menu_auguria.sql | 8 ++++---- htdocs/core/menus/standard/eldy.lib.php | 8 ++++---- htdocs/{compta => }/loan/calc.php | 2 +- htdocs/{compta => }/loan/card.php | 16 ++++++++-------- htdocs/{compta => }/loan/class/index.html | 0 htdocs/{compta => }/loan/class/loan.class.php | 4 ++-- .../loan/class/paymentloan.class.php | 6 +++--- htdocs/{compta => }/loan/document.php | 6 +++--- htdocs/{compta => }/loan/index.html | 0 htdocs/{compta => }/loan/index.php | 6 +++--- htdocs/{compta => }/loan/info.php | 6 +++--- htdocs/{compta => }/loan/payment/card.php | 16 +++++++--------- htdocs/{compta => }/loan/payment/index.html | 0 htdocs/{compta => }/loan/payment/payment.php | 14 +++++++------- 15 files changed, 48 insertions(+), 50 deletions(-) rename htdocs/{compta => }/loan/calc.php (99%) rename htdocs/{compta => }/loan/card.php (94%) rename htdocs/{compta => }/loan/class/index.html (100%) rename htdocs/{compta => }/loan/class/loan.class.php (99%) rename htdocs/{compta => }/loan/class/paymentloan.class.php (98%) rename htdocs/{compta => }/loan/document.php (96%) rename htdocs/{compta => }/loan/index.html (100%) rename htdocs/{compta => }/loan/index.php (97%) rename htdocs/{compta => }/loan/info.php (91%) rename htdocs/{compta => }/loan/payment/card.php (92%) rename htdocs/{compta => }/loan/payment/index.html (100%) rename htdocs/{compta => }/loan/payment/payment.php (95%) diff --git a/htdocs/core/lib/loan.lib.php b/htdocs/core/lib/loan.lib.php index 58ebaef7bfd..323516bbbd6 100644 --- a/htdocs/core/lib/loan.lib.php +++ b/htdocs/core/lib/loan.lib.php @@ -35,7 +35,7 @@ function loan_prepare_head($object) $h = 0; $head = array(); - $head[$h][0] = DOL_URL_ROOT.'/compta/loan/card.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT.'/loan/card.php?id='.$object->id; $head[$h][1] = $langs->trans('Card'); $head[$h][2] = 'card'; $h++; @@ -49,13 +49,13 @@ function loan_prepare_head($object) require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $upload_dir = $conf->loan->dir_output . "/" . dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$')); - $head[$h][0] = DOL_URL_ROOT.'/compta/loan/document.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT.'/loan/document.php?id='.$object->id; $head[$h][1] = $langs->trans("Documents"); if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')'; $head[$h][2] = 'documents'; $h++; - $head[$h][0] = DOL_URL_ROOT.'/compta/loan/info.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT.'/loan/info.php?id='.$object->id; $head[$h][1] = $langs->trans("Info"); $head[$h][2] = 'info'; $h++; diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index a2d77f611f0..c385eaab4bf 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -181,10 +181,10 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled', __HANDLER__, 'left', 2210__+MAX_llx_menu__, 'accountancy', 'tax_sal', 2200__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=accountancy', 'Salaries', 1, 'salaries', '$user->rights->salaries->read', '', 0, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2211__+MAX_llx_menu__, 'accountancy', '', 2210__+MAX_llx_menu__, '/compta/salaries/card.php?leftmenu=tax_salary&action=create', 'NewPayment', 2, 'companies', '$user->rights->salaries->write', '', 0, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->salaries->enabled && $leftmenu=="tax_salary"', __HANDLER__, 'left', 2212__+MAX_llx_menu__, 'accountancy', '', 2210__+MAX_llx_menu__, '/compta/salaries/index.php?leftmenu=tax_salary', 'Payments', 2, 'companies', '$user->rights->salaries->read', '', 0, 3, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled', __HANDLER__, 'left', 2220__+MAX_llx_menu__, 'accountancy', 'tax_loan', 2200__+MAX_llx_menu__, '/compta/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy', 'Loans', 1, 'loan', '$user->rights->loan->read', '', 0, 1, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2221__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/compta/loan/card.php?leftmenu=tax_loan&action=create', 'NewLoan', 2, 'loan', '$user->rights->loan->write', '', 0, 2, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2222__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/compta/loan/index.php?leftmenu=tax_loan', 'Payments', 2, 'companies', '$user->rights->loan->read', '', 0, 3, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2223__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/compta/loan/calc.php?leftmenu=tax_loan', 'Calculator', 2, 'companies', '$user->rights->loan->calc', '', 0, 4, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled', __HANDLER__, 'left', 2220__+MAX_llx_menu__, 'accountancy', 'tax_loan', 2200__+MAX_llx_menu__, '/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy', 'Loans', 1, 'loan', '$user->rights->loan->read', '', 0, 1, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2221__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/loan/card.php?leftmenu=tax_loan&action=create', 'NewLoan', 2, 'loan', '$user->rights->loan->write', '', 0, 2, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2222__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/loan/index.php?leftmenu=tax_loan', 'Payments', 2, 'companies', '$user->rights->loan->read', '', 0, 3, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->loan->enabled && $leftmenu=="tax_loan"', __HANDLER__, 'left', 2223__+MAX_llx_menu__, 'accountancy', '', 2220__+MAX_llx_menu__, '/loan/calc.php?leftmenu=tax_loan', 'Calculator', 2, 'companies', '$user->rights->loan->calc', '', 0, 4, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled', __HANDLER__, 'left', 2250__+MAX_llx_menu__, 'accountancy', 'tax_social', 2200__+MAX_llx_menu__, '/compta/sociales/index.php?leftmenu=tax_social', 'SocialContributions', 1, '', '$user->rights->tax->charges->lire', '', 0, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2251__+MAX_llx_menu__, 'accountancy', '', 2250__+MAX_llx_menu__, '/compta/sociales/charges.php?leftmenu=tax_social&action=create', 'MenuNewSocialContribution', 2, '', '$user->rights->tax->charges->creer', '', 0, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2252__+MAX_llx_menu__, 'accountancy', '', 2250__+MAX_llx_menu__, '/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly', 'Payments', 2, '', '$user->rights->tax->charges->lire', '', 0, 3, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 13781f0f8b4..0b8e30c746a 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -815,10 +815,10 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (! empty($conf->loan->enabled)) { $langs->load("loan"); - $newmenu->add("/compta/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy",$langs->trans("Loans"),1,$user->rights->loan->read, '', $mainmenu, 'tax_loan'); - if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/compta/loan/card.php?leftmenu=tax_loan&action=create",$langs->trans("NewLoan"),2,$user->rights->loan->write); - if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/compta/loan/index.php?leftmenu=tax_loan",$langs->trans("Payments"),2,$user->rights->loan->read); - if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/compta/loan/calc.php?leftmenu=tax_loan",$langs->trans("Calculator"),2,$user->rights->loan->calc); + $newmenu->add("/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy",$langs->trans("Loans"),1,$user->rights->loan->read, '', $mainmenu, 'tax_loan'); + if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/card.php?leftmenu=tax_loan&action=create",$langs->trans("NewLoan"),2,$user->rights->loan->write); + if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/index.php?leftmenu=tax_loan",$langs->trans("Payments"),2,$user->rights->loan->read); + if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/calc.php?leftmenu=tax_loan",$langs->trans("Calculator"),2,$user->rights->loan->calc); } // Social contributions diff --git a/htdocs/compta/loan/calc.php b/htdocs/loan/calc.php similarity index 99% rename from htdocs/compta/loan/calc.php rename to htdocs/loan/calc.php index 009c61095c9..0b40ef38f70 100644 --- a/htdocs/compta/loan/calc.php +++ b/htdocs/loan/calc.php @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -require '../../main.inc.php'; +require '../main.inc.php'; $langs->load("loan"); diff --git a/htdocs/compta/loan/card.php b/htdocs/loan/card.php similarity index 94% rename from htdocs/compta/loan/card.php rename to htdocs/loan/card.php index 88a4429e7c5..6a62ffe09ea 100644 --- a/htdocs/compta/loan/card.php +++ b/htdocs/loan/card.php @@ -16,13 +16,13 @@ */ /** - * \file htdocs/compta/loan/card.php + * \file htdocs/loan/card.php * \ingroup loan * \brief Loan card */ -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; @@ -416,7 +416,7 @@ if ($id > 0) $objp = $db->fetch_object($resql); $var=!$var; print ""; - print ''.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.''; + print ''.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.''; print ''.dol_print_date($db->jdate($objp->dp),'day')."\n"; print "".$objp->paiement_type.' '.$objp->num_payment."\n"; print ''.price($objp->amount_insurance)." ".$langs->trans("Currency".$conf->currency)."\n"; @@ -457,25 +457,25 @@ if ($id > 0) // Edit if ($user->rights->loan->write) { - print "id&action=edit\">".$langs->trans("Modify").""; + print "id&action=edit\">".$langs->trans("Modify").""; } // Emit payment if ($object->paid == 0 && ((price2num($object->capital) > 0 && round($staytopay) < 0) || (price2num($object->capital) > 0 && round($staytopay) > 0)) && $user->rights->loan->write) { - print "id&action=create\">".$langs->trans("DoPayment").""; + print "id&action=create\">".$langs->trans("DoPayment").""; } // Classify 'paid' if ($object->paid == 0 && round($staytopay) <=0 && $user->rights->loan->write) { - print "id&action=paid\">".$langs->trans("ClassifyPaid").""; + print "id&action=paid\">".$langs->trans("ClassifyPaid").""; } // Delete if ($user->rights->loan->delete) { - print "id&action=delete\">".$langs->trans("Delete").""; + print "id&action=delete\">".$langs->trans("Delete").""; } print ""; diff --git a/htdocs/compta/loan/class/index.html b/htdocs/loan/class/index.html similarity index 100% rename from htdocs/compta/loan/class/index.html rename to htdocs/loan/class/index.html diff --git a/htdocs/compta/loan/class/loan.class.php b/htdocs/loan/class/loan.class.php similarity index 99% rename from htdocs/compta/loan/class/loan.class.php rename to htdocs/loan/class/loan.class.php index b8fcf04728f..d1b770f744c 100644 --- a/htdocs/compta/loan/class/loan.class.php +++ b/htdocs/loan/class/loan.class.php @@ -16,7 +16,7 @@ */ /** - * \file htdocs/compta/loan/class/loan.class.php + * \file htdocs/loan/class/loan.class.php * \ingroup loan * \brief Class for loan module */ @@ -386,7 +386,7 @@ class Loan extends CommonObject $result=''; - $link = ''; + $link = ''; $linkend=''; if ($withpicto) $result.=($link.img_object($langs->trans("ShowLoan").': '.$this->label,'bill').$linkend.' '); diff --git a/htdocs/compta/loan/class/paymentloan.class.php b/htdocs/loan/class/paymentloan.class.php similarity index 98% rename from htdocs/compta/loan/class/paymentloan.class.php rename to htdocs/loan/class/paymentloan.class.php index 944cfe4ce2f..bb94a86d945 100644 --- a/htdocs/compta/loan/class/paymentloan.class.php +++ b/htdocs/loan/class/paymentloan.class.php @@ -16,7 +16,7 @@ */ /** - * \file htdocs/compta/loan/class/paymentloan.class.php + * \file htdocs/loan/class/paymentloan.class.php * \ingroup facture * \brief File of class to manage payment of loans */ @@ -429,7 +429,7 @@ class PaymentLoan extends CommonObject // Add link 'payment_loan' in bank_url between payment and bank transaction $url=''; - if ($mode == 'payment_loan') $url=DOL_URL_ROOT.'/compta/loan/payment/card.php?id='; + if ($mode == 'payment_loan') $url=DOL_URL_ROOT.'/loan/payment/card.php?id='; if ($url) { $result=$acc->add_url_line($bank_line_id, $this->id, $url, '(payment)', $mode); @@ -448,7 +448,7 @@ class PaymentLoan extends CommonObject { $loan = new Loan($this->db); $loan->fetch($key); - $result=$acc->add_url_line($bank_line_id, $loan->id, DOL_URL_ROOT.'/compta/loan/card.php?id=', $loan->type_libelle.(($loan->lib && $loan->lib!=$loan->type_libelle)?' ('.$loan->lib.')':''),'loan'); + $result=$acc->add_url_line($bank_line_id, $loan->id, DOL_URL_ROOT.'/loan/card.php?id=', $loan->type_libelle.(($loan->lib && $loan->lib!=$loan->type_libelle)?' ('.$loan->lib.')':''),'loan'); if ($result <= 0) dol_print_error($this->db); } } diff --git a/htdocs/compta/loan/document.php b/htdocs/loan/document.php similarity index 96% rename from htdocs/compta/loan/document.php rename to htdocs/loan/document.php index b263fa1687d..788048a215b 100644 --- a/htdocs/compta/loan/document.php +++ b/htdocs/loan/document.php @@ -16,13 +16,13 @@ */ /** - * \file htdocs/compta/loan/document.php + * \file htdocs/loan/document.php * \ingroup loan * \brief Page with attached files on loan */ -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php'; diff --git a/htdocs/compta/loan/index.html b/htdocs/loan/index.html similarity index 100% rename from htdocs/compta/loan/index.html rename to htdocs/loan/index.html diff --git a/htdocs/compta/loan/index.php b/htdocs/loan/index.php similarity index 97% rename from htdocs/compta/loan/index.php rename to htdocs/loan/index.php index 720b52de0a1..db6e9544cee 100644 --- a/htdocs/compta/loan/index.php +++ b/htdocs/loan/index.php @@ -16,13 +16,13 @@ */ /** - * \file htdocs/compta/loan/index.php + * \file htdocs/loan/index.php * \ingroup loan * \brief Page to list all loans */ -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'; $langs->load("loan"); $langs->load("compta"); diff --git a/htdocs/compta/loan/info.php b/htdocs/loan/info.php similarity index 91% rename from htdocs/compta/loan/info.php rename to htdocs/loan/info.php index 74319ba40b8..5e90474642a 100644 --- a/htdocs/compta/loan/info.php +++ b/htdocs/loan/info.php @@ -16,13 +16,13 @@ */ /** - * \file htdocs/compta/loan/info.php + * \file htdocs/loan/info.php * \ingroup loan * \brief Page with info about loan */ -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; diff --git a/htdocs/compta/loan/payment/card.php b/htdocs/loan/payment/card.php similarity index 92% rename from htdocs/compta/loan/payment/card.php rename to htdocs/loan/payment/card.php index 4dc1407e8ad..901daffaa2d 100644 --- a/htdocs/compta/loan/payment/card.php +++ b/htdocs/loan/payment/card.php @@ -16,16 +16,14 @@ */ /** - * \file htdocs/compta/loan/payment/card.php + * \file htdocs/loan/payment/card.php * \ingroup loan * \brief Payment's card of loan */ -require '../../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/paymentloan.class.php'; -// require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; -// require_once DOL_DOCUMENT_ROOT.'/core/modules/facture/modules_facture.php'; +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'; +require_once DOL_DOCUMENT_ROOT.'/loan/class/paymentloan.class.php'; if (! empty($conf->banque->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $langs->load('bills'); @@ -62,7 +60,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->loan->del if ($result > 0) { $db->commit(); - header("Location: ".DOL_URL_ROOT."/compta/loan/index.php"); + header("Location: ".DOL_URL_ROOT."/loan/index.php"); exit; } else @@ -122,7 +120,7 @@ $form = new Form($db); $h=0; -$head[$h][0] = DOL_URL_ROOT.'/compta/loan/payment/card.php?id='.$_GET["id"]; +$head[$h][0] = DOL_URL_ROOT.'/loan/payment/card.php?id='.$_GET["id"]; $head[$h][1] = $langs->trans("Card"); $hselected = $h; $h++; @@ -205,7 +203,7 @@ $sql.= ' WHERE pl.fk_loan = l.rowid'; $sql.= ' AND l.entity = '.$conf->entity; $sql.= ' AND pl.rowid = '.$payment->id; -dol_syslog("compta/loan/payment/card.php", LOG_DEBUG); +dol_syslog("loan/payment/card.php", LOG_DEBUG); $resql=$db->query($sql); if ($resql) { diff --git a/htdocs/compta/loan/payment/index.html b/htdocs/loan/payment/index.html similarity index 100% rename from htdocs/compta/loan/payment/index.html rename to htdocs/loan/payment/index.html diff --git a/htdocs/compta/loan/payment/payment.php b/htdocs/loan/payment/payment.php similarity index 95% rename from htdocs/compta/loan/payment/payment.php rename to htdocs/loan/payment/payment.php index 678ca1b8429..9a087d60633 100644 --- a/htdocs/compta/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -16,14 +16,14 @@ */ /** - * \file htdocs/compta/loan/payment.php + * \file htdocs/loan/payment/payment.php * \ingroup Loan * \brief Page to add payment of a loan */ -require '../../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/loan.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/loan/class/paymentloan.class.php'; +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'; +require_once DOL_DOCUMENT_ROOT.'/loan/class/paymentloan.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $langs->load("bills"); @@ -50,7 +50,7 @@ if ($action == 'add_payment') if ($cancel) { - $loc = DOL_URL_ROOT.'/compta/loan/card.php?id='.$chid; + $loc = DOL_URL_ROOT.'/loan/card.php?id='.$chid; header("Location: ".$loc); exit; } @@ -132,7 +132,7 @@ if ($action == 'add_payment') if (! $error) { $db->commit(); - $loc = DOL_URL_ROOT.'/compta/loan/card.php?id='.$chid; + $loc = DOL_URL_ROOT.'/loan/card.php?id='.$chid; header('Location: '.$loc); exit; } @@ -183,7 +183,7 @@ if ($_GET["action"] == 'create') print ''.$langs->trans("Loan").''; - print ''.$langs->trans("Ref").''.$chid.''; + print ''.$langs->trans("Ref").''.$chid.''; print ''.$langs->trans("DateStart").''.dol_print_date($loan->datestart,'day')."\n"; print ''.$langs->trans("Label").''.$loan->label."\n"; print ''.$langs->trans("Amount").''.price($loan->capital,0,$outputlangs,1,-1,-1,$conf->currency).''; From 730593b525c491fd6f1c889a5e7a4c1d95c61e38 Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Sun, 22 Mar 2015 20:26:20 +0100 Subject: [PATCH 362/429] Update extrafields.class.php if no elementtype send at the function, they return an empty array --- htdocs/core/class/extrafields.class.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index c821f6a1f34..94772eac79a 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -567,10 +567,12 @@ class ExtraFields { global $conf; + if ( empty($elementtype) ) return array(); + if ($elementtype == 'thirdparty') $elementtype='societe'; $array_name_label=array(); - + // For avoid conflicts with external modules if (!$forceload && !empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) return $array_name_label; From c4d852ffd73e3fa6af264aaf6a254ab3a80f1cfb Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 22 Mar 2015 20:57:41 +0100 Subject: [PATCH 363/429] Correct from frederic34 --- htdocs/langs/en_US/loan.lang | 1 + htdocs/loan/calc.php | 33 +++++++++++++++----------------- htdocs/loan/class/loan.class.php | 26 ++++++++++++++++++------- htdocs/loan/index.php | 13 +++++++------ htdocs/loan/info.php | 25 ++++++++++++++---------- htdocs/loan/payment/card.php | 21 ++++++++------------ 6 files changed, 65 insertions(+), 54 deletions(-) diff --git a/htdocs/langs/en_US/loan.lang b/htdocs/langs/en_US/loan.lang index a035c8cf68c..4922c0fc0a1 100644 --- a/htdocs/langs/en_US/loan.lang +++ b/htdocs/langs/en_US/loan.lang @@ -20,6 +20,7 @@ ErrorLoanInterest=Annual interest has to be numeric and g # Calc Totalsforyear=Totals for year MonthlyPayment=Monthly Payment +LoanCalcDesc=This mortgage calculator can be used to figure out monthly payments of a home mortgage loan, based on the home's sale price, the term of the loan desired, buyer's down payment percentage, and the loan's interest rate.
    This calculator factors in PMI (Private Mortgage Insurance) for loans where less than 20% is put as a down payment. Also taken into consideration are the town property taxes, and their effect on the total monthly mortgage payment.
    # Admin ConfigLoan=Configuration of the module loan LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accountancy code capital by default diff --git a/htdocs/loan/calc.php b/htdocs/loan/calc.php index 0b40ef38f70..0a5ee21923a 100644 --- a/htdocs/loan/calc.php +++ b/htdocs/loan/calc.php @@ -121,10 +121,7 @@ if (! empty($errors)) { llxHeader(); -echo "This mortgage calculator can be used to figure out monthly payments of a home mortgage loan, - based on the home's sale price, the term of the loan desired, buyer's down payment percentage, and the loan's interest rate. - This calculator factors in PMI (Private Mortgage Insurance) for loans where less than 20% is put as a down payment. Also taken - into consideration are the town property taxes, and their effect on the total monthly mortgage payment.
    "; +print $langs->trans('LoanCalcDesc'); print '
    '; print ''; @@ -190,7 +187,7 @@ if ($form_complete && $monthly_payment) print 'Monthly Payment:'; print '' . number_format($monthly_payment, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '
    (Principal & Interest ONLY)'; print ''; - + if ($down_percent < 20) { $pmi_per_month = 55 * ($financing_price / 100000); @@ -216,11 +213,11 @@ if ($form_complete && $monthly_payment) print ' '; print ''; print '
    '; - + $assessed_price = ($sale_price * .85); $residential_yearly_tax = ($assessed_price / 1000) * 14; $residential_monthly_tax = $residential_yearly_tax / 12; - + if ($pmi_per_month) { $pmi_text = "PMI and "; @@ -304,8 +301,8 @@ if ($form_complete && $show_progress) { print ''; print ''; print '
    '; - - + + // Set some base variables $principal = $financing_price; $current_month = 1; @@ -315,11 +312,11 @@ if ($form_complete && $show_progress) { $power = -($month_term); $denom = pow((1 + $monthly_interest_rate), $power); $monthly_payment = $principal * ($monthly_interest_rate / (1 - $denom)); - - print "

    Amortization For Monthly Payment: " . number_format($monthly_payment, "2", ".", ",") . " over " . $year_term . " years
    \n"); - + + print "

    Amortization For Monthly Payment: " . number_format($monthly_payment, "2", ".", ",") . " over " . $year_term . " years
    \n"; + print ''; - + // This LEGEND will get reprinted every 12 months $legend = ''; $legend.= ''; @@ -327,7 +324,7 @@ if ($form_complete && $show_progress) { $legend.= ''; $legend.= ''; $legend.= ''; - + print $legend; // Loop through and get the current month's payments for @@ -348,14 +345,14 @@ if ($form_complete && $show_progress) { print ''; print ''; print ''; - + ($current_month % 12) ? $show_legend = FALSE : $show_legend = TRUE; if ($show_legend) { print ''; print ''; print ''; - + $total_spent_this_year = $this_year_interest_paid + $this_year_principal_paid; print ''; print ''; @@ -369,11 +366,11 @@ if ($form_complete && $show_progress) { print ''; print ''; print ''; - + $current_year++; $this_year_interest_paid = 0; $this_year_principal_paid = 0; - + if (($current_month + 6) < $month_term) { echo $legend; diff --git a/htdocs/loan/class/loan.class.php b/htdocs/loan/class/loan.class.php index d1b770f744c..9ab8a690494 100644 --- a/htdocs/loan/class/loan.class.php +++ b/htdocs/loan/class/loan.class.php @@ -69,7 +69,7 @@ class Loan extends CommonObject * Load object in memory from database * * @param int $id id object - * @return void + * @return int <0 error , >=0 no error */ function fetch($id) { @@ -146,8 +146,8 @@ class Loan extends CommonObject if (($conf->accounting->enabled) && empty($this->account_capital) && empty($this->account_insurance) && empty($this->account_interest)) { $this->error="ErrorAccountingParameter"; - return -2; - } + return -2; + } $this->db->begin(); @@ -304,8 +304,12 @@ class Loan extends CommonObject $sql.= " paid = 1"; $sql.= " WHERE rowid = ".$this->id; $return = $this->db->query($sql); - if ($return) return 1; - else return -1; + if ($return) { + return 1; + } else { + $this->error=$this->db->lasterror(); + return -1; + } } /** @@ -423,7 +427,8 @@ class Loan extends CommonObject } else { - return -1; + $this->error=$this->db->lasterror(); + return -1; } } @@ -464,12 +469,19 @@ class Loan extends CommonObject $this->date_creation = $this->db->jdate($obj->datec); if (empty($obj->fk_user_modif)) $obj->tms = ""; $this->date_modification = $this->db->jdate($obj->tms); + + return 1; + } + else + { + return 0; } $this->db->free($result); } else { - dol_print_error($this->db); + $this->error=$this->db->lasterror(); + return -1; } } } \ No newline at end of file diff --git a/htdocs/loan/index.php b/htdocs/loan/index.php index db6e9544cee..082e5d0d0c2 100644 --- a/htdocs/loan/index.php +++ b/htdocs/loan/index.php @@ -50,7 +50,8 @@ $search_label=GETPOST('search_label','alpha'); $search_amount=GETPOST('search_amount','alpha'); $filtre=GETPOST("filtre"); -if (GETPOST("button_removefilter")) +// Purge search criteria +if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers { $search_ref=""; $search_label=""; @@ -112,11 +113,11 @@ if ($resql) print ''; print ''; print ''; - + while ($i < min($num,$limit)) { $obj = $db->fetch_object($resql); - + $var = !$var; print ""; @@ -135,7 +136,7 @@ if ($resql) print ''; print "\n"; - + $i++; } @@ -147,6 +148,6 @@ else { dol_print_error($db); } -$db->close(); - llxFooter(); + +$db->close(); \ No newline at end of file diff --git a/htdocs/loan/info.php b/htdocs/loan/info.php index 5e90474642a..16c349b92e9 100644 --- a/htdocs/loan/info.php +++ b/htdocs/loan/info.php @@ -46,20 +46,25 @@ $result = restrictedArea($user, 'loan', $id, '',''); $help_url='EN:Module_Loan|FR:Module_Emprunt'; llxHeader("",$langs->trans("Loan"),$help_url); -$loan = new Loan($db); -$loan->fetch($id); -$loan->info($id); +if ($id > 0) { + $loan = new Loan($db); + $loan->fetch($id); + $loan->info($id); -$head = loan_prepare_head($loan); + $head = loan_prepare_head($loan); -dol_fiche_head($head, 'info', $langs->trans("Loan"), 0, 'bill'); + dol_fiche_head($head, 'info', $langs->trans("Loan"), 0, 'bill'); + print '
    ' . $langs->trans("Month") . '' . $langs->trans("Capital") . '' . $langs->trans("Position") . '
    ' . number_format($principal_paid, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '' . number_format($remaining_balance, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '
    ' . $langs->trans("Totalsforyear") . ' ' . $current_year . '
     
     
    '.$loan_static->LibStatut($obj->paid,5,$obj->alreadypayed).'
    '; + dol_print_object_info($loan); + print '
    '; -print '
    '; -dol_print_object_info($loan); -print '
    '; - -print ''; + print ''; +} +else +{ + // $id ? +} llxFooter(); diff --git a/htdocs/loan/payment/card.php b/htdocs/loan/payment/card.php index 901daffaa2d..f75a2244154 100644 --- a/htdocs/loan/payment/card.php +++ b/htdocs/loan/payment/card.php @@ -133,7 +133,6 @@ dol_fiche_head($head, $hselected, $langs->trans("PaymentLoan"), 0, 'payment'); if ($action == 'delete') { print $form->formconfirm('card.php?id='.$payment->id, $langs->trans("DeletePayment"), $langs->trans("ConfirmDeletePayment"), 'confirm_delete','',0,2); - } /* @@ -142,8 +141,7 @@ if ($action == 'delete') if ($action == 'valide') { $facid = $_GET['facid']; - print $form->formconfirm('card.php?id='.$payment->id.'&facid='.$facid, $langs->trans("ValidatePayment"), $langs->trans("ConfirmValidatePayment"), 'confirm_valide','',0,2); - + print $form->formconfirm('card.php?id='.$payment->id.'&facid='.$facid, $langs->trans("ValidatePayment"), $langs->trans("ConfirmValidatePayment"), 'confirm_valide','',0,2); } @@ -283,18 +281,15 @@ if (! empty($conf->global->BILL_ADD_PAYMENT_VALIDATION)) } */ -if ($_GET['action'] == '') +if (empty($action) && ! empty($user->rights->loan->delete)) { - if ($user->rights->loan->delete) + if (! $disable_delete) { - if (! $disable_delete) - { - print ''.$langs->trans('Delete').''; - } - else - { - print ''.$langs->trans('Delete').''; - } + print ''.$langs->trans('Delete').''; + } + else + { + print ''.$langs->trans('Delete').''; } } From 1a1959b52c4f05ae46692fa19d8aa1241249bf4a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Mar 2015 21:18:25 +0100 Subject: [PATCH 364/429] Fix: Solve conflict with imgup and imgdown class use for sort fields and to drag and drop lines. --- htdocs/core/lib/functions.lib.php | 12 +-- htdocs/core/tpl/ajaxrow.tpl.php | 8 +- htdocs/core/tpl/objectline_view.tpl.php | 4 +- htdocs/public/test/test_arrays.php | 110 +++++++++++++----------- htdocs/theme/eldy/style.css.php | 16 +++- htdocs/theme/md_dev/style.css.php | 14 +++ 6 files changed, 99 insertions(+), 65 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index d2ce8023a65..cb3752f817c 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2280,15 +2280,16 @@ function img_previous($titlealt = 'default') * * @param string $titlealt Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title. * @param int $selected Selected + * @param string $moreclass Add more CSS classes * @return string Return img tag */ -function img_down($titlealt = 'default', $selected = 0) +function img_down($titlealt = 'default', $selected = 0, $moreclass='') { global $conf, $langs; if ($titlealt == 'default') $titlealt = $langs->trans('Down'); - return img_picto($titlealt, ($selected ? '1downarrow_selected.png' : '1downarrow.png'), 'class="imgdown"'); + return img_picto($titlealt, ($selected ? '1downarrow_selected.png' : '1downarrow.png'), 'class="imgdown'.($moreclass?" ".$moreclass:"").'"'); } /** @@ -2296,15 +2297,16 @@ function img_down($titlealt = 'default', $selected = 0) * * @param string $titlealt Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title. * @param int $selected Selected + * @param string $moreclass Add more CSS classes * @return string Return img tag */ -function img_up($titlealt = 'default', $selected = 0) +function img_up($titlealt = 'default', $selected = 0, $moreclass='') { global $conf, $langs; if ($titlealt == 'default') $titlealt = $langs->trans('Up'); - return img_picto($titlealt, ($selected ? '1uparrow_selected.png' : '1uparrow.png'), 'class="imgup"'); + return img_picto($titlealt, ($selected ? '1uparrow_selected.png' : '1uparrow.png'), 'class="imgup'.($moreclass?" ".$moreclass:"").'"'); } /** @@ -2622,7 +2624,7 @@ function print_liste_field_titre($name, $file="", $field="", $begin="", $morepar * Get title line of an array * * @param string $name Label of field - * @param int $thead 0=To use with standard table forat, 1=To use inside , 2=To use with
    + * @param int $thead 0=To use with standard table format, 1=To use inside , 2=To use with
    * @param string $file Url used when we click on sort picto * @param string $field Field to use for new sorting. Empty if this field is not sortable. * @param string $begin ("" by defaut) diff --git a/htdocs/core/tpl/ajaxrow.tpl.php b/htdocs/core/tpl/ajaxrow.tpl.php index 27b14d859f3..4b8d82bce40 100644 --- a/htdocs/core/tpl/ajaxrow.tpl.php +++ b/htdocs/core/tpl/ajaxrow.tpl.php @@ -33,8 +33,8 @@ $tagidfortablednd=(empty($tagidfortablednd)?'tablelines':$tagidfortablednd); if (GETPOST('action') != 'editline' && $nboflines > 1) { ?> diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index 1fd86ed871d..8da915ddd9a 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -203,12 +203,12 @@ if (empty($usemargins)) $usemargins=0; 0) { ?> id; ?>"> - + id; ?>"> - + diff --git a/htdocs/public/test/test_arrays.php b/htdocs/public/test/test_arrays.php index cae90530d36..ea0791dc984 100644 --- a/htdocs/public/test/test_arrays.php +++ b/htdocs/public/test/test_arrays.php @@ -1,5 +1,5 @@ - - - - - - -Test page - - - - - - -" /> - - - - - --- - - + ?> + + + + + + + Test page + + + + + + + " /> + + + + + + + + - + -
    +
    - This page is a sample of page using tables. It is designed to make test with
    - css (edit page to change to test another css)
    -- jmobile (add parameter dol_use_jmobile=1 to enable view with jmobile)
    +- jmobile (add parameter dol_use_jmobile=1&dol_optimize_smallscreen=1 to enable view with jmobile)
    - dataTables
    - tablednd