Merge branch 'develop' into patch-453
This commit is contained in:
commit
2fef57b31f
BIN
dev/resources/iso-normes/14-pourquoi le format PDF A.pdf
Normal file
BIN
dev/resources/iso-normes/14-pourquoi le format PDF A.pdf
Normal file
Binary file not shown.
@ -52,6 +52,7 @@ $list_account_main = array(
|
||||
);
|
||||
|
||||
$list_account = array();
|
||||
|
||||
$list_account[] = '---Product---';
|
||||
$list_account[] = 'ACCOUNTING_PRODUCT_SOLD_ACCOUNT';
|
||||
if ($mysoc->isInEEC()) {
|
||||
@ -63,6 +64,7 @@ if ($mysoc->isInEEC()) {
|
||||
$list_account[] = 'ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT';
|
||||
}
|
||||
$list_account[] = 'ACCOUNTING_PRODUCT_BUY_EXPORT_ACCOUNT';
|
||||
|
||||
$list_account[] = '---Service---';
|
||||
$list_account[] = 'ACCOUNTING_SERVICE_SOLD_ACCOUNT';
|
||||
if ($mysoc->isInEEC()) {
|
||||
@ -74,11 +76,11 @@ if ($mysoc->isInEEC()) {
|
||||
$list_account[] = 'ACCOUNTING_SERVICE_BUY_INTRA_ACCOUNT';
|
||||
}
|
||||
$list_account[] = 'ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT';
|
||||
|
||||
$list_account[] = '---Others---';
|
||||
$list_account[] = 'ACCOUNTING_VAT_BUY_ACCOUNT';
|
||||
$list_account[] = 'ACCOUNTING_VAT_SOLD_ACCOUNT';
|
||||
$list_account[] = 'ACCOUNTING_VAT_PAY_ACCOUNT';
|
||||
$list_account[] = 'ACCOUNTING_ACCOUNT_SUSPENSE';
|
||||
if ($conf->banque->enabled) {
|
||||
$list_account[] = 'ACCOUNTING_ACCOUNT_TRANSFER_CASH';
|
||||
}
|
||||
@ -96,6 +98,7 @@ if ($conf->loan->enabled) {
|
||||
if ($conf->societe->enabled) {
|
||||
$list_account[] = 'ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT';
|
||||
}
|
||||
$list_account[] = 'ACCOUNTING_ACCOUNT_SUSPENSE';
|
||||
|
||||
/*
|
||||
* Actions
|
||||
@ -154,6 +157,7 @@ print '<input type="hidden" name="action" value="update">';
|
||||
|
||||
// Define main accounts for thirdparty
|
||||
|
||||
print '<div class="div-table-responsive-no-min">';
|
||||
print '<table class="noborder centpercent">';
|
||||
print '<tr class="liste_titre"><td>'.$langs->trans("ThirdParties").' | '.$langs->trans("Users").'</td><td></td></tr>';
|
||||
|
||||
@ -164,17 +168,29 @@ foreach ($list_account_main as $key) {
|
||||
$keydesc = $key.'_Desc';
|
||||
|
||||
$htmltext = $langs->trans($keydesc);
|
||||
print '<td class="fieldrequired" width="50%">';
|
||||
print '<td class="fieldrequired">';
|
||||
if ($key == 'ACCOUNTING_ACCOUNT_CUSTOMER') {
|
||||
print img_picto('', 'company', 'class="pictofixedwidth"');
|
||||
} elseif ($key == 'ACCOUNTING_ACCOUNT_SUPPLIER') {
|
||||
print img_picto('', 'company', 'class="pictofixedwidth"');
|
||||
} else {
|
||||
print img_picto('', 'user', 'class="pictofixedwidth"');
|
||||
}
|
||||
print $form->textwithpicto($label, $htmltext);
|
||||
print '</td>';
|
||||
// Value
|
||||
print '<td>'; // Do not force class=right, or it align also the content of the select box
|
||||
print '<td class="right">'; // Do not force class=right, or it align also the content of the select box
|
||||
print $formaccounting->select_account($conf->global->$key, $key, 1, '', 1, 1, 'minwidth100 maxwidth300 maxwidthonsmartphone', 'accountsmain');
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
}
|
||||
print "</table>\n";
|
||||
print "</div>\n";
|
||||
|
||||
|
||||
print '<div class="div-table-responsive-no-min">';
|
||||
print '<table class="noborder centpercent">';
|
||||
|
||||
foreach ($list_account as $key) {
|
||||
$reg = array();
|
||||
if (preg_match('/---(.*)---/', $key, $reg)) {
|
||||
@ -183,9 +199,32 @@ foreach ($list_account as $key) {
|
||||
print '<tr class="oddeven value">';
|
||||
// Param
|
||||
$label = $langs->trans($key);
|
||||
print '<td width="50%">'.$label.'</td>';
|
||||
print '<td>';
|
||||
if (preg_match('/^ACCOUNTING_PRODUCT/', $key)) {
|
||||
print img_picto('', 'product', 'class="pictofixedwidth"');
|
||||
} elseif (preg_match('/^ACCOUNTING_SERVICE/', $key)) {
|
||||
print img_picto('', 'service', 'class="pictofixedwidth"');
|
||||
} elseif (preg_match('/^ACCOUNTING_VAT_PAY_ACCOUNT/', $key)) {
|
||||
print img_picto('', 'payment_vat', 'class="pictofixedwidth"');
|
||||
} elseif (preg_match('/^ACCOUNTING_VAT/', $key)) {
|
||||
print img_picto('', 'vat', 'class="pictofixedwidth"');
|
||||
} elseif (preg_match('/^ACCOUNTING_ACCOUNT_CUSTOMER/', $key)) {
|
||||
print img_picto('', 'bill', 'class="pictofixedwidth"');
|
||||
} elseif (preg_match('/^LOAN_ACCOUNTING_ACCOUNT/', $key)) {
|
||||
print img_picto('', 'loan', 'class="pictofixedwidth"');
|
||||
} elseif (preg_match('/^DONATION_ACCOUNTING/', $key)) {
|
||||
print img_picto('', 'donation', 'class="pictofixedwidth"');
|
||||
} elseif (preg_match('/^ADHERENT_SUBSCRIPTION/', $key)) {
|
||||
print img_picto('', 'member', 'class="pictofixedwidth"');
|
||||
} elseif (preg_match('/^ACCOUNTING_ACCOUNT_TRANSFER/', $key)) {
|
||||
print img_picto('', 'bank_account', 'class="pictofixedwidth"');
|
||||
} elseif (preg_match('/^ACCOUNTING_ACCOUNT_SUSPENSE/', $key)) {
|
||||
print img_picto('', 'question', 'class="pictofixedwidth"');
|
||||
}
|
||||
print $label;
|
||||
print '</td>';
|
||||
// Value
|
||||
print '<td>'; // Do not force class=right, or it align also the content of the select box
|
||||
print '<td class="right">'; // Do not force class=right, or it align also the content of the select box
|
||||
print $formaccounting->select_account(getDolGlobalString($key), $key, 1, '', 1, 1, 'minwidth100 maxwidth300 maxwidthonsmartphone', 'accounts');
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
@ -194,7 +233,7 @@ foreach ($list_account as $key) {
|
||||
|
||||
|
||||
print "</table>\n";
|
||||
|
||||
print "</div>\n";
|
||||
|
||||
print '<div class="center"><input type="submit" class="button button-edit" name="button" value="'.$langs->trans('Modify').'"></div>';
|
||||
|
||||
|
||||
@ -732,17 +732,16 @@ class AccountingAccount extends CommonObject
|
||||
/**
|
||||
* Return Suggest accounting accounts to bind
|
||||
*
|
||||
* @param Societe $buyer Societe Object Buyers
|
||||
* @param $seller Company Object seller
|
||||
* @param Product $product Product object sell or buy
|
||||
* @param Facture $facture Facture
|
||||
* @param FactureLigne $factureDet Facture Det
|
||||
* @param array $accountingAccount array of Account account
|
||||
* @param string $type Customer / Supplier
|
||||
*
|
||||
* @return array Accounting accounts suggested
|
||||
* @param Societe $buyer Object buyer
|
||||
* @param Societe $seller Object seller
|
||||
* @param Product $product Product object sell or buy
|
||||
* @param Facture|FactureFournisseur $facture Facture
|
||||
* @param FactureLigne|SupplierInvoiceLine $factureDet Facture Det
|
||||
* @param array $accountingAccount Array of Account account
|
||||
* @param string $type Customer / Supplier
|
||||
* @return array Accounting accounts suggested
|
||||
*/
|
||||
public function getAccountingCodeToBind(Societe $buyer, $seller, Product $product, Facture $facture, FactureLigne $factureDet, $accountingAccount = array(), $type = '')
|
||||
public function getAccountingCodeToBind(Societe $buyer, Societe $seller, Product $product, $facture, $factureDet, $accountingAccount = array(), $type = '')
|
||||
{
|
||||
global $conf;
|
||||
global $hookmanager;
|
||||
@ -755,21 +754,21 @@ class AccountingAccount extends CommonObject
|
||||
$reshook = $hookmanager->executeHooks('accoutancyBindingCalculation', $parameters); // Note that $action and $object may have been modified by some hooks
|
||||
|
||||
if (empty($reshook)) {
|
||||
if ($type=='customer') {
|
||||
if ($type == 'customer') {
|
||||
$const_name = "SOLD";
|
||||
} elseif ($type=='supplier') {
|
||||
} elseif ($type == 'supplier') {
|
||||
$const_name = "BUY";
|
||||
}
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/company.lib.php';
|
||||
$isBuyerInEEC = isInEEC($buyer);
|
||||
$isSellerInEEC = isInEEC($seller);
|
||||
$code_l = '';
|
||||
$code_p = '';
|
||||
$code_t = '';
|
||||
$code_l = ''; // Default value for generic product/service
|
||||
$code_p = ''; // Value for the product/service in parameter ($product)
|
||||
$code_t = ''; // Default value of product account for the thirdparty
|
||||
$suggestedid = '';
|
||||
|
||||
// Level 1: Search suggested default account for product/service
|
||||
// Level 1 (define $code_l): Search suggested default account for product/service
|
||||
$suggestedaccountingaccountbydefaultfor = '';
|
||||
if ($factureDet->product_type == 1) {
|
||||
if ($buyer->country_code == $seller->country_code || empty($buyer->country_code)) { // If buyer in same country than seller (if not defined, we assume it is same country)
|
||||
@ -814,14 +813,14 @@ class AccountingAccount extends CommonObject
|
||||
$code_l = '';
|
||||
}
|
||||
|
||||
// Level 2: Search suggested account for product/service (similar code exists in page index.php to make automatic binding)
|
||||
// Level 2 (define $code_p): Search suggested account for product/service (similar code exists in page index.php to make automatic binding)
|
||||
$suggestedaccountingaccountfor = '';
|
||||
if ((($buyer->country_code == $seller->country_code) || empty($buyer->country_code))) {
|
||||
// If buyer in same country than seller (if not defined, we assume it is same country)
|
||||
if ($type=='customer' && !empty($product->accountancy_code_sell)) {
|
||||
$code_p = $product->accountancy_code_sell;
|
||||
} elseif ($type=='supplier' && !empty($product->accountancy_code_buy)) {
|
||||
$code_p = $product->accountancy_code_sell;
|
||||
$code_p = $product->accountancy_code_buy;
|
||||
}
|
||||
$suggestedid = $accountingAccount['dom'];
|
||||
$suggestedaccountingaccountfor = 'prodserv';
|
||||
@ -831,7 +830,7 @@ class AccountingAccount extends CommonObject
|
||||
if ($type=='customer' && !empty($product->accountancy_code_sell)) {
|
||||
$code_p = $product->accountancy_code_sell;
|
||||
} elseif ($type=='supplier' && !empty($product->accountancy_code_buy)) {
|
||||
$code_p = $product->accountancy_code_sell;
|
||||
$code_p = $product->accountancy_code_buy;
|
||||
}
|
||||
$suggestedid = $accountingAccount['dom'];
|
||||
$suggestedaccountingaccountfor = 'eecwithvat';
|
||||
@ -840,7 +839,7 @@ class AccountingAccount extends CommonObject
|
||||
if ($type=='customer' && !empty($product->accountancy_code_sell)) {
|
||||
$code_p = $product->accountancy_code_sell;
|
||||
} elseif ($type=='supplier' && !empty($product->accountancy_code_buy)) {
|
||||
$code_p = $product->accountancy_code_sell;
|
||||
$code_p = $product->accountancy_code_buy;
|
||||
}
|
||||
$suggestedid = $accountingAccount['dom']; // There is a doubt for this case. Is it an error on vat or we just forgot to fill vat number ?
|
||||
$suggestedaccountingaccountfor = 'eecwithoutvatnumber';
|
||||
@ -855,18 +854,17 @@ class AccountingAccount extends CommonObject
|
||||
$suggestedaccountingaccountfor = 'eec';
|
||||
} else {
|
||||
// Foreign sale
|
||||
// European intravat sale
|
||||
if ($type=='customer' && !empty($product->accountancy_code_sell_export)) {
|
||||
$code_p = $product->accountancy_code_sell_export;
|
||||
} elseif ($type=='supplier' && !empty($product->accountancy_code_sell_export)) {
|
||||
$code_p = $product->accountancy_code_sell_export;
|
||||
} elseif ($type=='supplier' && !empty($product->accountancy_code_buy_export)) {
|
||||
$code_p = $product->accountancy_code_buy_export;
|
||||
}
|
||||
$suggestedid = $accountingAccount['export'];
|
||||
$suggestedaccountingaccountfor = 'export';
|
||||
}
|
||||
}
|
||||
|
||||
// Level 3: Search suggested account for this thirdparty (similar code exists in page index.php to make automatic binding)
|
||||
// Level 3 (define $code_t): Search suggested account for this thirdparty (similar code exists in page index.php to make automatic binding)
|
||||
if (!empty($conf->global->ACCOUNTANCY_USE_PRODUCT_ACCOUNT_ON_THIRDPARTY)) {
|
||||
if (!empty($buyer->code_compta)) {
|
||||
$code_t = $buyer->code_compta;
|
||||
@ -888,6 +886,7 @@ class AccountingAccount extends CommonObject
|
||||
$suggestedaccountingaccountfor = 'deposit';
|
||||
}
|
||||
|
||||
// If $suggestedid could not be guessed yet, we set it from the generic default accounting code $code_l
|
||||
if (empty($suggestedid) && empty($code_p) && !empty($code_l) && empty($conf->global->ACCOUNTANCY_DO_NOT_AUTOFILL_ACCOUNT_WITH_GENERIC)) {
|
||||
if (empty($this->accountingaccount_codetotid_cache[$code_l])) {
|
||||
$tmpaccount = new self($this->db);
|
||||
|
||||
@ -249,13 +249,13 @@ if ($action == 'validatehistory') {
|
||||
if (!is_array($return) && $return<0) {
|
||||
setEventMessage($accountingAccount->error, 'errors');
|
||||
} else {
|
||||
$suggestedid=$return['suggestedid'];
|
||||
$suggestedaccountingaccountfor=$return['suggestedaccountingaccountfor'];
|
||||
$suggestedid = $return['suggestedid'];
|
||||
$suggestedaccountingaccountfor = $return['suggestedaccountingaccountfor'];
|
||||
|
||||
if (!empty($suggestedid) && $suggestedaccountingaccountfor<>'') {
|
||||
$suggestedid=$return['suggestedid'];
|
||||
if (!empty($suggestedid) && $suggestedaccountingaccountfor != '' && $suggestedaccountingaccountfor != 'eecwithoutvatnumber') {
|
||||
$suggestedid = $return['suggestedid'];
|
||||
} else {
|
||||
$suggestedid=0;
|
||||
$suggestedid = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -478,7 +478,6 @@ if ($result) {
|
||||
print '</div>';
|
||||
print '</td>';
|
||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_ref" value="'.dol_escape_htmltag($search_ref).'"></td>';
|
||||
//print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="' . dol_escape_htmltag($search_label) . '"></td>';
|
||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth100" name="search_desc" value="'.dol_escape_htmltag($search_desc).'"></td>';
|
||||
print '<td class="liste_titre right"><input type="text" class="flat maxwidth50 right" name="search_amount" value="'.dol_escape_htmltag($search_amount).'"></td>';
|
||||
print '<td class="liste_titre right"><input type="text" class="flat maxwidth50 right" name="search_vat" placeholder="%" size="1" value="'.dol_escape_htmltag($search_vat).'"></td>';
|
||||
@ -528,6 +527,9 @@ if ($result) {
|
||||
while ($i < min($num_lines, $limit)) {
|
||||
$objp = $db->fetch_object($result);
|
||||
|
||||
// product_type: 0 = service, 1 = product
|
||||
// if product does not exist we use the value of product_type provided in facturedet to define if this is a product or service
|
||||
// issue : if we change product_type value in product DB it should differ from the value stored in facturedet DB !
|
||||
$code_sell_l = '';
|
||||
$code_sell_p = '';
|
||||
|
||||
@ -586,9 +588,9 @@ if ($result) {
|
||||
$suggestedid=$return['suggestedid'];
|
||||
$suggestedaccountingaccountfor=$return['suggestedaccountingaccountfor'];
|
||||
$suggestedaccountingaccountbydefaultfor=$return['suggestedaccountingaccountbydefaultfor'];
|
||||
$code_sell_l=$return['code_sell_l'];
|
||||
$code_sell_p=$return['code_sell_p'];
|
||||
$code_sell_t=$return['code_sell_t'];
|
||||
$code_sell_l=$return['code_l'];
|
||||
$code_sell_p=$return['code_p'];
|
||||
$code_sell_t=$return['code_t'];
|
||||
}
|
||||
//var_dump($return);
|
||||
|
||||
@ -661,11 +663,11 @@ if ($result) {
|
||||
print '</td>';
|
||||
|
||||
// Vat rate
|
||||
$code_vat_differ='';
|
||||
if ($product_static->tva_tx !== $facture_static_det->tva_tx && ! empty($facture_static_det->tva_tx)) { // Note: having a vat rate of 0 is often the normal case when sells is intra b2b or to export
|
||||
$code_vat_differ = 'font-weight:bold; text-decoration:blink; color:red';
|
||||
$code_vat_differ = '';
|
||||
if ($product_static->tva_tx !== $facture_static_det->tva_tx && price2num($product_static->tva_tx) && price2num($facture_static_det->tva_tx)) { // Note: having a vat rate of 0 is often the normal case when sells is intra b2b or to export
|
||||
$code_vat_differ = 'warning bold';
|
||||
}
|
||||
print '<td style="'.$code_vat_differ.'" class="right">';
|
||||
print '<td class="right'.($code_vat_differ?' '.$code_vat_differ:'').'">';
|
||||
print vatrate($facture_static_det->tva_tx.($facture_static_det->vat_src_code ? ' ('.$facture_static_det->vat_src_code.')' : ''));
|
||||
print '</td>';
|
||||
|
||||
@ -731,12 +733,11 @@ if ($result) {
|
||||
|
||||
// Column with checkbox
|
||||
print '<td class="center">';
|
||||
if (!empty($suggestedid) && $suggestedaccountingaccountfor <> '') {
|
||||
$ischecked=1;
|
||||
} elseif ($suggestedaccountingaccountfor == 'eecwithoutvatnumber') {
|
||||
$ischecked = 0;
|
||||
$ischecked = 0;
|
||||
if (!empty($suggestedid) && $suggestedaccountingaccountfor != '' && $suggestedaccountingaccountfor != 'eecwithoutvatnumber') {
|
||||
$ischecked = 1;
|
||||
}
|
||||
print '<input type="checkbox" class="flat checkforselect checkforselect'.$facture_static_det->id.'" name="toselect[]" value="'.$facture_static_det->id."_".$i.'"'.($ischecked ? "checked" : "").'/>';
|
||||
print '<input type="checkbox" class="flat checkforselect checkforselect'.$facture_static_det->id.'" name="toselect[]" value="'.$facture_static_det->id."_".$i.'"'.($ischecked ? " checked" : "").'/>';
|
||||
print '</td>';
|
||||
|
||||
print '</tr>';
|
||||
|
||||
@ -245,13 +245,13 @@ if ($action == 'validatehistory') {
|
||||
if (!is_array($return) && $return<0) {
|
||||
setEventMessage($accountingAccount->error, 'errors');
|
||||
} else {
|
||||
$suggestedid=$return['suggestedid'];
|
||||
$suggestedaccountingaccountfor=$return['suggestedaccountingaccountfor'];
|
||||
$suggestedid = $return['suggestedid'];
|
||||
$suggestedaccountingaccountfor = $return['suggestedaccountingaccountfor'];
|
||||
|
||||
if (!empty($suggestedid) && $suggestedaccountingaccountfor<>'') {
|
||||
$suggestedid=$return['suggestedid'];
|
||||
if (!empty($suggestedid) && $suggestedaccountingaccountfor != '' && $suggestedaccountingaccountfor != 'eecwithoutvatnumber') {
|
||||
$suggestedid = $return['suggestedid'];
|
||||
} else {
|
||||
$suggestedid=0;
|
||||
$suggestedid = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -529,11 +529,12 @@ if ($result) {
|
||||
while ($i < min($num_lines, $limit)) {
|
||||
$objp = $db->fetch_object($result);
|
||||
|
||||
// product_type: 0 = service ? 1 = product
|
||||
// product_type: 0 = service, 1 = product
|
||||
// if product does not exist we use the value of product_type provided in facturedet to define if this is a product or service
|
||||
// issue : if we change product_type value in product DB it should differ from the value stored in facturedet DB !
|
||||
$objp->code_buy_l = '';
|
||||
$objp->code_buy_p = '';
|
||||
$objp->aarowid_suggest = ''; // Will be set later
|
||||
|
||||
$thirdpartystatic->id = $objp->socid;
|
||||
$thirdpartystatic->name = $objp->name;
|
||||
@ -575,10 +576,6 @@ if ($result) {
|
||||
$facturefourn_static_det->product_type = $objp->type_l;
|
||||
$facturefourn_static_det->desc = $objp->description;
|
||||
|
||||
$code_buy_p_notset = '';
|
||||
$code_buy_t_notset = '';
|
||||
$objp->aarowid_suggest = ''; // Will be set later
|
||||
|
||||
$accountingAccountArray = array(
|
||||
'dom'=>$objp->aarowid,
|
||||
'intra'=>$objp->aarowid_intra,
|
||||
@ -595,12 +592,15 @@ if ($result) {
|
||||
$suggestedid=$return['suggestedid'];
|
||||
$suggestedaccountingaccountfor=$return['suggestedaccountingaccountfor'];
|
||||
$suggestedaccountingaccountbydefaultfor=$return['suggestedaccountingaccountbydefaultfor'];
|
||||
$code_buy_l=$return['code_buy_l'];
|
||||
$code_buy_p=$return['code_buy_p'];
|
||||
$code_buy_t=$return['code_buy_t'];
|
||||
$code_buy_l=$return['code_l'];
|
||||
$code_buy_p=$return['code_p'];
|
||||
$code_buy_t=$return['code_t'];
|
||||
}
|
||||
//var_dump($return);
|
||||
|
||||
// Level 3: Search suggested account for this thirdparty (similar code exists in page index.php to make automatic binding)
|
||||
// Not supported for suppliers
|
||||
|
||||
if (!empty($code_buy_p)) {
|
||||
// Value was defined previously
|
||||
} else {
|
||||
@ -654,11 +654,11 @@ if ($result) {
|
||||
print '</td>';
|
||||
|
||||
// Vat rate
|
||||
$code_vat_differ='';
|
||||
if ($objp->vat_tx_l != $objp->vat_tx_p && ! empty($objp->vat_tx_l)) { // Note: having a vat rate of 0 is often the normal case when sells is intra b2b or to export
|
||||
$code_vat_differ = 'font-weight:bold; text-decoration:blink; color:red';
|
||||
$code_vat_differ = '';
|
||||
if ($objp->vat_tx_l != $objp->vat_tx_p && price2num($objp->vat_tx_p) && price2num($objp->vat_tx_l)) { // Note: having a vat rate of 0 is often the normal case when sells is intra b2b or to export
|
||||
$code_vat_differ = 'warning bold';
|
||||
}
|
||||
print '<td style="'.$code_vat_differ.'" class="right">';
|
||||
print '<td class="right'.($code_vat_differ?' '.$code_vat_differ:'').'">';
|
||||
print vatrate($facturefourn_static_det->tva_tx.($facturefourn_static_det->vat_src_code ? ' ('.$facturefourn_static_det->vat_src_code.')' : ''));
|
||||
print '</td>';
|
||||
|
||||
@ -691,6 +691,11 @@ if ($result) {
|
||||
$shelp = ''; $ttype = 'help';
|
||||
if ($suggestedaccountingaccountfor == 'eec') {
|
||||
$shelp = $langs->trans("SaleEEC");
|
||||
} elseif ($suggestedaccountingaccountfor == 'eecwithvat') {
|
||||
$shelp = $langs->trans("SaleEECWithVAT");
|
||||
} elseif ($suggestedaccountingaccountfor == 'eecwithoutvatnumber') {
|
||||
$shelp = $langs->trans("SaleEECWithoutVATNumber");
|
||||
$ttype = 'warning';
|
||||
} elseif ($suggestedaccountingaccountfor == 'export') {
|
||||
$shelp = $langs->trans("SaleExport");
|
||||
}
|
||||
@ -719,12 +724,11 @@ if ($result) {
|
||||
|
||||
// Column with checkbox
|
||||
print '<td class="center">';
|
||||
if (!empty($suggestedid)) {
|
||||
$ischecked = 0;
|
||||
if (!empty($suggestedid) && $suggestedaccountingaccountfor != '' && $suggestedaccountingaccountfor != 'eecwithoutvatnumber') {
|
||||
$ischecked = 1;
|
||||
} else {
|
||||
$ischecked = 0;
|
||||
}
|
||||
print '<input type="checkbox" class="flat checkforselect checkforselect'.$facturefourn_static_det->id.'" name="toselect[]" value="'.$facturefourn_static_det->id."_".$i.'"'.($ischecked ? "checked" : "").'/>';
|
||||
print '<input type="checkbox" class="flat checkforselect checkforselect'.$facturefourn_static_det->id.'" name="toselect[]" value="'.$facturefourn_static_det->id."_".$i.'"'.($ischecked ? " checked" : "").'/>';
|
||||
print '</td>';
|
||||
|
||||
print '</tr>';
|
||||
|
||||
@ -14,6 +14,7 @@
|
||||
* Copyright (C) 2019 Nicolas ZABOURI <info@inovea-conseil.com>
|
||||
* Copyright (C) 2020 Josep Lluís Amador <joseplluis@lliuretic.cat>
|
||||
* Copyright (C) 2021 Waël Almoman <info@almoman.com>
|
||||
* Copyright (C) 2021 Philippe Grand <philippe.grand@atoo-net.com>
|
||||
*
|
||||
* 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
|
||||
@ -1520,7 +1521,7 @@ class Adherent extends CommonObject
|
||||
{
|
||||
global $langs;
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/parntership/class/partnership.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/partnership/class/partnership.class.php';
|
||||
|
||||
|
||||
$this->partnerships[] = array();
|
||||
@ -2703,7 +2704,7 @@ class Adherent extends CommonObject
|
||||
$info[$conf->global->LDAP_MEMBER_FIELD_PASSWORD] = $this->pass; // this->pass = mot de passe non crypte
|
||||
}
|
||||
if (!empty($conf->global->LDAP_MEMBER_FIELD_PASSWORD_CRYPTED)) {
|
||||
$info[$conf->global->LDAP_MEMBER_FIELD_PASSWORD_CRYPTED] = dol_hash($this->pass, 4); // Create OpenLDAP MD5 password (TODO add type of encryption)
|
||||
$info[$conf->global->LDAP_MEMBER_FIELD_PASSWORD_CRYPTED] = dol_hash($this->pass, 'openldap'); // Create OpenLDAP password (see LDAP_PASSWORD_HASH_TYPE)
|
||||
}
|
||||
} elseif ($conf->global->LDAP_SERVER_PROTOCOLVERSION !== '3') {
|
||||
// Set LDAP password if possible
|
||||
@ -2714,7 +2715,7 @@ class Adherent extends CommonObject
|
||||
if ($this->pass_indatabase_crypted && !empty($conf->global->LDAP_MEMBER_FIELD_PASSWORD_CRYPTED)) {
|
||||
// Create OpenLDAP MD5 password from Dolibarr MD5 password
|
||||
// Note: This suppose that "pass_indatabase_crypted" is a md5 (guaranted by the previous test if "(empty($conf->global->MAIN_SECURITY_HASH_ALGO))"
|
||||
$info[$conf->global->LDAP_MEMBER_FIELD_PASSWORD_CRYPTED] = '{md5}'.base64_encode(hex2bin($this->pass_indatabase_crypted));
|
||||
$info[$conf->global->LDAP_MEMBER_FIELD_PASSWORD_CRYPTED] = dolGetLdapPasswordHash($this->pass_indatabase_crypted, 'md5frommd5');
|
||||
}
|
||||
}
|
||||
} elseif (!empty($this->pass_indatabase)) {
|
||||
@ -2723,7 +2724,7 @@ class Adherent extends CommonObject
|
||||
$info[$conf->global->LDAP_MEMBER_FIELD_PASSWORD] = $this->pass_indatabase; // $this->pass_indatabase = mot de passe non crypte
|
||||
}
|
||||
if (!empty($conf->global->LDAP_MEMBER_FIELD_PASSWORD_CRYPTED)) {
|
||||
$info[$conf->global->LDAP_MEMBER_FIELD_PASSWORD_CRYPTED] = dol_hash($this->pass_indatabase, 4); // md5 for OpenLdap TODO add type of encryption
|
||||
$info[$conf->global->LDAP_MEMBER_FIELD_PASSWORD_CRYPTED] = dol_hash($this->pass_indatabase, 'openldap'); // Create OpenLDAP password (see LDAP_PASSWORD_HASH_TYPE)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2006 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2006-2017 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2006-2021 Regis Houssin <regis.houssin@inodbox.com>
|
||||
*
|
||||
* 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
|
||||
@ -50,14 +50,14 @@ if ($id > 0 || !empty($ref)) {
|
||||
$result = $object->fetch($id, $ref);
|
||||
|
||||
// Define variables to know what current user can do on users
|
||||
$canadduser = ($user->admin || $user->rights->user->user->creer);
|
||||
$canadduser = (!empty($user->admin) || !empty($user->rights->user->user->creer));
|
||||
// Define variables to know what current user can do on properties of user linked to edited member
|
||||
if ($object->user_id) {
|
||||
// $User is the user who edits, $object->user_id is the id of the related user in the edited member
|
||||
$caneditfielduser = ((($user->id == $object->user_id) && $user->rights->user->self->creer)
|
||||
|| (($user->id != $object->user_id) && $user->rights->user->user->creer));
|
||||
$caneditfielduser = ((($user->id == $object->user_id) && !empty($user->rights->user->self->creer))
|
||||
|| (($user->id != $object->user_id) && !empty($user->rights->user->user->creer)));
|
||||
$caneditpassworduser = ((($user->id == $object->user_id) && $user->rights->user->self->password)
|
||||
|| (($user->id != $object->user_id) && $user->rights->user->user->password));
|
||||
|| (($user->id != $object->user_id) && !empty($user->rights->user->user->password)));
|
||||
}
|
||||
}
|
||||
|
||||
@ -135,17 +135,17 @@ $adht->fetch($object->typeid);
|
||||
print '<tr><td>'.$langs->trans("Type").'</td><td class="valeur">'.$adht->getNomUrl(1)."</td></tr>\n";
|
||||
|
||||
// LDAP DN
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPMemberDn").'</td><td class="valeur">'.$conf->global->LDAP_MEMBER_DN."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPMemberDn").'</td><td class="valeur">'.getDolGlobalString('LDAP_MEMBER_DN')."</td></tr>\n";
|
||||
|
||||
// LDAP Cle
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPNamingAttribute").'</td><td class="valeur">'.$conf->global->LDAP_KEY_MEMBERS."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPNamingAttribute").'</td><td class="valeur">'.getDolGlobalString('LDAP_KEY_MEMBERS')."</td></tr>\n";
|
||||
|
||||
// LDAP Server
|
||||
print '<tr><td>LDAP '.$langs->trans("Type").'</td><td class="valeur">'.$conf->global->LDAP_SERVER_TYPE."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("Version").'</td><td class="valeur">'.$conf->global->LDAP_SERVER_PROTOCOLVERSION."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPPrimaryServer").'</td><td class="valeur">'.$conf->global->LDAP_SERVER_HOST."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPSecondaryServer").'</td><td class="valeur">'.$conf->global->LDAP_SERVER_HOST_SLAVE."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPServerPort").'</td><td class="valeur">'.$conf->global->LDAP_SERVER_PORT."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("Type").'</td><td class="valeur">'.getDolGlobalString('LDAP_SERVER_TYPE')."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("Version").'</td><td class="valeur">'.getDolGlobalString('LDAP_SERVER_PROTOCOLVERSION')."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPPrimaryServer").'</td><td class="valeur">'.getDolGlobalString('LDAP_SERVER_HOST')."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPSecondaryServer").'</td><td class="valeur">'.getDolGlobalString('LDAP_SERVER_HOST_SLAVE')."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPServerPort").'</td><td class="valeur">'.getDolGlobalString('LDAP_SERVER_PORT')."</td></tr>\n";
|
||||
|
||||
print '</table>';
|
||||
|
||||
@ -158,13 +158,13 @@ print dol_get_fiche_end();
|
||||
*/
|
||||
print '<div class="tabsAction">';
|
||||
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && $conf->global->LDAP_MEMBER_ACTIVE != 'ldap2dolibarr') {
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && getDolGlobalString('LDAP_MEMBER_ACTIVE') != Ldap::SYNCHRO_LDAP_TO_DOLIBARR) {
|
||||
print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dolibarr2ldap">'.$langs->trans("ForceSynchronize").'</a></div>';
|
||||
}
|
||||
|
||||
print "</div>\n";
|
||||
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && $conf->global->LDAP_MEMBER_ACTIVE != 'ldap2dolibarr') {
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && getDolGlobalString('LDAP_MEMBER_ACTIVE') != Ldap::SYNCHRO_LDAP_TO_DOLIBARR) {
|
||||
print "<br>\n";
|
||||
}
|
||||
|
||||
|
||||
@ -311,6 +311,7 @@ print '<input type="hidden" name="action" value="list">';
|
||||
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
|
||||
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
||||
print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
|
||||
print '<input type="hidden" name="date_select" value="'.$date_select.'">';
|
||||
|
||||
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, $subscription->picto, 0, $newcardbutton, '', $limit, 0, 0, 1);
|
||||
|
||||
|
||||
@ -124,13 +124,13 @@ print dol_get_fiche_end();
|
||||
|
||||
print '<div class="tabsAction">';
|
||||
|
||||
if ($conf->global->LDAP_MEMBER_TYPE_ACTIVE == 1) {
|
||||
if (getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?rowid='.$object->id.'&action=dolibarr2ldap">'.$langs->trans("ForceSynchronize").'</a>';
|
||||
}
|
||||
|
||||
print "</div>\n";
|
||||
|
||||
if ($conf->global->LDAP_MEMBER_TYPE_ACTIVE == 1) {
|
||||
if (getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
print "<br>\n";
|
||||
}
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
|
||||
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
||||
* Copyright (C) 2005-2017 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2005-2021 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2006-2020 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2011-2013 Juanjo Menent <jmenent@2byte.es>
|
||||
*
|
||||
@ -29,10 +29,11 @@
|
||||
require '../main.inc.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/ldap.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formldap.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/ldap.lib.php';
|
||||
|
||||
// Load translation files required by the page
|
||||
$langs->load("admin");
|
||||
$langs->loadLangs(array("admin", "ldap"));
|
||||
|
||||
if (!$user->admin) {
|
||||
accessforbidden();
|
||||
@ -99,6 +100,9 @@ if (empty($reshook)) {
|
||||
if (!dolibarr_set_const($db, 'LDAP_MEMBER_TYPE_ACTIVE', GETPOST("activememberstypes", 'aZ09'), 'chaine', 0, '', $conf->entity)) {
|
||||
$error++;
|
||||
}
|
||||
if (!dolibarr_set_const($db, 'LDAP_PASSWORD_HASH_TYPE', GETPOST("LDAP_PASSWORD_HASH_TYPE", 'aZ09'), 'chaine', 0, '', $conf->entity)) {
|
||||
$error++;
|
||||
}
|
||||
|
||||
if (!$error) {
|
||||
$db->commit();
|
||||
@ -129,7 +133,7 @@ if (!function_exists("ldap_connect")) {
|
||||
|
||||
|
||||
$form = new Form($db);
|
||||
|
||||
$formldap = new FormLdap($db);
|
||||
|
||||
print '<form method="post" action="'.$_SERVER["PHP_SELF"].'?action=setvalue&token='.newToken().'">';
|
||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
@ -146,13 +150,9 @@ print "</tr>\n";
|
||||
// Synchro utilisateurs/groupes active
|
||||
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPDnSynchroActive").'</td><td>';
|
||||
$arraylist = array();
|
||||
$arraylist['0'] = $langs->trans("No");
|
||||
$arraylist['ldap2dolibarr'] = $langs->trans("LDAPToDolibarr");
|
||||
$arraylist['dolibarr2ldap'] = $langs->trans("DolibarrToLDAP");
|
||||
print $form->selectarray('activesynchro', $arraylist, $conf->global->LDAP_SYNCHRO_ACTIVE);
|
||||
print $formldap->selectLdapDnSynchroActive(getDolGlobalInt('LDAP_SYNCHRO_ACTIVE'), 'activesynchro');
|
||||
print '</td><td><span class="opacitymedium">'.$langs->trans("LDAPDnSynchroActiveExample").'</span>';
|
||||
if ($conf->global->LDAP_SYNCHRO_ACTIVE && !$conf->global->LDAP_USER_DN) {
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && empty($conf->global->LDAP_USER_DN)) {
|
||||
print '<br><span class="error">'.$langs->trans("LDAPSetupNotComplete").'</span>';
|
||||
}
|
||||
print '</td></tr>';
|
||||
@ -160,32 +160,21 @@ print '</td></tr>';
|
||||
// Synchro contact active
|
||||
if (!empty($conf->societe->enabled)) {
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPDnContactActive").'</td><td>';
|
||||
$arraylist = array();
|
||||
$arraylist['0'] = $langs->trans("No");
|
||||
$arraylist['1'] = $langs->trans("DolibarrToLDAP");
|
||||
print $form->selectarray('activecontact', $arraylist, $conf->global->LDAP_CONTACT_ACTIVE);
|
||||
print $formldap->selectLdapDnSynchroActive(getDolGlobalInt('LDAP_CONTACT_ACTIVE'), 'activecontact', array(Ldap::SYNCHRO_LDAP_TO_DOLIBARR));
|
||||
print '</td><td><span class="opacitymedium">'.$langs->trans("LDAPDnContactActiveExample").'</span></td></tr>';
|
||||
}
|
||||
|
||||
// Synchro member active
|
||||
if (!empty($conf->adherent->enabled)) {
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPDnMemberActive").'</td><td>';
|
||||
$arraylist = array();
|
||||
$arraylist['0'] = $langs->trans("No");
|
||||
$arraylist['1'] = $langs->trans("DolibarrToLDAP");
|
||||
$arraylist['ldap2dolibarr'] = $langs->trans("LDAPToDolibarr").' ('.$langs->trans("SupportedForLDAPImportScriptOnly").')';
|
||||
print $form->selectarray('activemembers', $arraylist, $conf->global->LDAP_MEMBER_ACTIVE);
|
||||
print $formldap->selectLdapDnSynchroActive(getDolGlobalInt('LDAP_MEMBER_ACTIVE'), 'activemembers', array(), 2);
|
||||
print '</td><td><span class="opacitymedium">'.$langs->trans("LDAPDnMemberActiveExample").'</span></td></tr>';
|
||||
}
|
||||
|
||||
// Synchro member type active
|
||||
if (!empty($conf->adherent->enabled)) {
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPDnMemberTypeActive").'</td><td>';
|
||||
$arraylist = array();
|
||||
$arraylist['0'] = $langs->trans("No");
|
||||
$arraylist['1'] = $langs->trans("DolibarrToLDAP");
|
||||
$arraylist['ldap2dolibarr'] = $langs->trans("LDAPToDolibarr").' ('.$langs->trans("SupportedForLDAPImportScriptOnly").')';
|
||||
print $form->selectarray('activememberstypes', $arraylist, $conf->global->LDAP_MEMBER_TYPE_ACTIVE);
|
||||
print $formldap->selectLdapDnSynchroActive(getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE'), 'activememberstypes', array(), 2);
|
||||
print '</td><td><span class="opacitymedium">'.$langs->trans("LDAPDnMemberTypeActiveExample").'</span></td></tr>';
|
||||
}
|
||||
|
||||
@ -202,55 +191,46 @@ print "</tr>\n";
|
||||
|
||||
// Type
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("Type").'</td><td>';
|
||||
$arraylist = array();
|
||||
$arraylist['activedirectory'] = 'Active Directory';
|
||||
$arraylist['openldap'] = 'OpenLdap';
|
||||
$arraylist['egroupware'] = 'Egroupware';
|
||||
print $form->selectarray('type', $arraylist, $conf->global->LDAP_SERVER_TYPE);
|
||||
print $formldap->selectLdapServerType(getDolGlobalString('LDAP_SERVER_TYPE'), 'type');
|
||||
print '</td><td> </td></tr>';
|
||||
|
||||
// Version
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("Version").'</td><td>';
|
||||
$arraylist = array();
|
||||
$arraylist['3'] = 'Version 3';
|
||||
$arraylist['2'] = 'Version 2';
|
||||
print $form->selectarray('LDAP_SERVER_PROTOCOLVERSION', $arraylist, $conf->global->LDAP_SERVER_PROTOCOLVERSION);
|
||||
print $formldap->selectLdapServerProtocolVersion(getDolGlobalString('LDAP_SERVER_PROTOCOLVERSION'), 'LDAP_SERVER_PROTOCOLVERSION');
|
||||
print '</td><td><span class="opacitymedium">'.$langs->trans("LDAPServerProtocolVersion").'</span></td></tr>';
|
||||
|
||||
// Serveur primaire
|
||||
print '<tr class="oddeven"><td>';
|
||||
print $langs->trans("LDAPPrimaryServer").'</td><td>';
|
||||
print '<input class="minwidth200" type="text" name="host" value="'.$conf->global->LDAP_SERVER_HOST.'">';
|
||||
print '<input class="minwidth200" type="text" name="host" value="'.getDolGlobalString('LDAP_SERVER_HOST').'">';
|
||||
print '</td><td><span class="opacitymedium">'.$langs->trans("LDAPServerExample").'</span></td></tr>';
|
||||
|
||||
// Serveur secondaire
|
||||
print '<tr class="oddeven"><td>';
|
||||
print $langs->trans("LDAPSecondaryServer").'</td><td>';
|
||||
print '<input class="minwidth200" type="text" name="slave" value="'.$conf->global->LDAP_SERVER_HOST_SLAVE.'">';
|
||||
print '<input class="minwidth200" type="text" name="slave" value="'.getDolGlobalString('LDAP_SERVER_HOST_SLAVE').'">';
|
||||
print '</td><td><span class="opacitymedium">'.$langs->trans("LDAPServerExample").'</span></td></tr>';
|
||||
|
||||
// Port
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPServerPort").'</td><td>';
|
||||
if (!empty($conf->global->LDAP_SERVER_PORT)) {
|
||||
print '<input class="width75" type="text" name="port" value="'.$conf->global->LDAP_SERVER_PORT.'">';
|
||||
} else {
|
||||
print '<input class="width75" type="text" name="port" value="389">';
|
||||
}
|
||||
print '<input class="width75" type="text" name="port" value="'.getDolGlobalString('LDAP_SERVER_PORT', '389').'">';
|
||||
print '</td><td><span class="opacitymedium">'.$langs->trans("LDAPServerPortExample").'</span></td></tr>';
|
||||
|
||||
// DNserver
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPServerDn").'</td><td>';
|
||||
print '<input class="minwidth300" type="text" name="dn" value="'.$conf->global->LDAP_SERVER_DN.'">';
|
||||
print '<input class="minwidth300" type="text" name="dn" value="'.getDolGlobalString('LDAP_SERVER_DN').'">';
|
||||
print '</td><td><span class="opacitymedium">'.$langs->trans("LDAPServerDnExample").'</span></td></tr>';
|
||||
|
||||
// Utiliser TLS
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPServerUseTLS").'</td><td>';
|
||||
$arraylist = array();
|
||||
$arraylist['0'] = $langs->trans("No");
|
||||
$arraylist['1'] = $langs->trans("Yes");
|
||||
print $form->selectarray('usetls', $arraylist, $conf->global->LDAP_SERVER_USE_TLS);
|
||||
print $form->selectyesno('usetls', getDolGlobalInt('LDAP_SERVER_USE_TLS'), 1);
|
||||
print '</td><td><span class="opacitymedium">'.$langs->trans("LDAPServerUseTLSExample").'</span></td></tr>';
|
||||
|
||||
// Password hash type
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPPasswordHashType").'</td><td>';
|
||||
print $formldap->selectLdapPasswordHashType(getDolGlobalString('LDAP_PASSWORD_HASH_TYPE'), 'LDAP_PASSWORD_HASH_TYPE');
|
||||
print '</td><td><span class="opacitymedium">'.$langs->trans("LDAPPasswordHashTypeExample").'</span></td></tr>';
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td colspan="3">'.$langs->trans("ForANonAnonymousAccess").'</td>';
|
||||
print "</tr>\n";
|
||||
@ -258,17 +238,13 @@ print "</tr>\n";
|
||||
// DNAdmin
|
||||
print '<!-- LDAP_ADMIN_DN -->';
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPAdminDn").'</td><td>';
|
||||
print '<input class="minwidth300" type="text" name="admin" value="'.$conf->global->LDAP_ADMIN_DN.'">';
|
||||
print '<input class="minwidth300" type="text" name="admin" value="'.getDolGlobalString('LDAP_ADMIN_DN').'">';
|
||||
print '</td><td class="maxwidthhalf"><span class="opacitymedium">'.$langs->trans("LDAPAdminDnExample").'</span></td></tr>';
|
||||
|
||||
// Pass
|
||||
print '<!-- LDAP_ADMIN_PASS -->';
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("LDAPPassword").'</td><td>';
|
||||
if (!empty($conf->global->LDAP_ADMIN_PASS)) {
|
||||
print '<input class="minwidth150" type="password" name="pass" value="'.$conf->global->LDAP_ADMIN_PASS.'">'; // je le met en visible pour test
|
||||
} else {
|
||||
print '<input class="minwidth150" type="text" name="pass" value="'.$conf->global->LDAP_ADMIN_PASS.'">';
|
||||
}
|
||||
print '<input class="minwidth150" type="password" name="pass" value="'.$conf->global->LDAP_ADMIN_PASS.'">';
|
||||
print '</td><td><span class="opacitymedium">'.$langs->trans('Password').' (ex: secret)</span></td></tr>';
|
||||
|
||||
print '</table>';
|
||||
@ -297,17 +273,17 @@ if (function_exists("ldap_connect")) {
|
||||
if ($result > 0) {
|
||||
// Test ldap connect and bind
|
||||
print img_picto('', 'info').' ';
|
||||
print '<span class="ok">'.$langs->trans("LDAPTCPConnectOK", $ldap->connectedServer, $conf->global->LDAP_SERVER_PORT).'</span>';
|
||||
print '<span class="ok">'.$langs->trans("LDAPTCPConnectOK", $ldap->connectedServer, getDolGlobalString('LDAP_SERVER_PORT')).'</span>';
|
||||
print '<br>';
|
||||
|
||||
if (!empty($conf->global->LDAP_ADMIN_DN) && !empty($conf->global->LDAP_ADMIN_PASS)) {
|
||||
if ($result == 2) {
|
||||
print img_picto('', 'info').' ';
|
||||
print '<span class="ok">'.$langs->trans("LDAPBindOK", $ldap->connectedServer, $conf->global->LDAP_SERVER_PORT, $conf->global->LDAP_ADMIN_DN, preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)).'</span>';
|
||||
print '<span class="ok">'.$langs->trans("LDAPBindOK", $ldap->connectedServer, getDolGlobalString('LDAP_SERVER_PORT'), $conf->global->LDAP_ADMIN_DN, preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)).'</span>';
|
||||
print '<br>';
|
||||
} else {
|
||||
print img_picto('', 'error').' ';
|
||||
print '<span class="error">'.$langs->trans("LDAPBindKO", $ldap->connectedServer, $conf->global->LDAP_SERVER_PORT, $conf->global->LDAP_ADMIN_DN, preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)).'</span>';
|
||||
print '<span class="error">'.$langs->trans("LDAPBindKO", $ldap->connectedServer, getDolGlobalString('LDAP_SERVER_PORT'), $conf->global->LDAP_ADMIN_DN, preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)).'</span>';
|
||||
print '<br>';
|
||||
print $langs->trans("Error").' '.$ldap->error;
|
||||
print '<br>';
|
||||
@ -333,7 +309,7 @@ if (function_exists("ldap_connect")) {
|
||||
$ldap->unbind();
|
||||
} else {
|
||||
print img_picto('', 'error').' ';
|
||||
print '<span class="error">'.$langs->trans("LDAPTCPConnectKO", $ldap->connectedServer, $conf->global->LDAP_SERVER_PORT).'</span>';
|
||||
print '<span class="error">'.$langs->trans("LDAPTCPConnectKO", $ldap->connectedServer, getDolGlobalString('LDAP_SERVER_PORT')).'</span>';
|
||||
print '<br>';
|
||||
print $langs->trans("Error").' '.$ldap->error;
|
||||
print '<br>';
|
||||
|
||||
@ -218,7 +218,7 @@ print '</form>';
|
||||
/*
|
||||
* Test de la connexion
|
||||
*/
|
||||
if ($conf->global->LDAP_SYNCHRO_ACTIVE == 'dolibarr2ldap') {
|
||||
if (getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$butlabel = $langs->trans("LDAPTestSynchroGroup");
|
||||
$testlabel = 'testgroup';
|
||||
$key = $conf->global->LDAP_KEY_GROUPS;
|
||||
@ -226,7 +226,7 @@ if ($conf->global->LDAP_SYNCHRO_ACTIVE == 'dolibarr2ldap') {
|
||||
$objectclass = $conf->global->LDAP_GROUP_OBJECT_CLASS;
|
||||
|
||||
show_ldap_test_button($butlabel, $testlabel, $key, $dn, $objectclass);
|
||||
} elseif ($conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr') {
|
||||
} elseif (getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_LDAP_TO_DOLIBARR) {
|
||||
$butlabel = $langs->trans("LDAPTestSearch");
|
||||
$testlabel = 'testsearchgroup';
|
||||
$key = $conf->global->LDAP_KEY_GROUPS;
|
||||
|
||||
@ -188,7 +188,7 @@ print '</form>';
|
||||
/*
|
||||
* Test de la connexion
|
||||
*/
|
||||
if ($conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') {
|
||||
if (getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$butlabel = $langs->trans("LDAPTestSynchroMemberType");
|
||||
$testlabel = 'testmembertype';
|
||||
$key = $conf->global->LDAP_KEY_MEMBERS_TYPES;
|
||||
|
||||
@ -405,7 +405,7 @@ print '</form>';
|
||||
/*
|
||||
* Test de la connexion
|
||||
*/
|
||||
if (getDolGlobalString('LDAP_SYNCHRO_ACTIVE') == 'dolibarr2ldap') {
|
||||
if (getDolGlobalString('LDAP_SYNCHRO_ACTIVE') == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$butlabel = $langs->trans("LDAPTestSynchroUser");
|
||||
$testlabel = 'testuser';
|
||||
$key = getDolGlobalString('LDAP_KEY_USERS');
|
||||
@ -413,7 +413,7 @@ if (getDolGlobalString('LDAP_SYNCHRO_ACTIVE') == 'dolibarr2ldap') {
|
||||
$objectclass = getDolGlobalString('LDAP_USER_OBJECT_CLASS');
|
||||
|
||||
show_ldap_test_button($butlabel, $testlabel, $key, $dn, $objectclass);
|
||||
} elseif (getDolGlobalString('LDAP_SYNCHRO_ACTIVE') == 'ldap2dolibarr') {
|
||||
} elseif (getDolGlobalString('LDAP_SYNCHRO_ACTIVE') == Ldap::SYNCHRO_LDAP_TO_DOLIBARR) {
|
||||
$butlabel = $langs->trans("LDAPTestSearch");
|
||||
$testlabel = 'testsearchuser';
|
||||
$key = getDolGlobalString('LDAP_KEY_USERS');
|
||||
|
||||
@ -169,6 +169,7 @@ $head = multicurrencyAdminPrepareHead();
|
||||
print dol_get_fiche_head($head, 'settings', $langs->trans($page_name), -1, "multicurrency");
|
||||
|
||||
|
||||
print '<div class="div-table-responsive-no-min">';
|
||||
print '<table class="noborder centpercent">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$langs->trans("Parameters").'</td>'."\n";
|
||||
@ -191,7 +192,7 @@ print '<tr class="oddeven">';
|
||||
print '<td>'.$langs->transnoentitiesnoconv("multicurrency_useOriginTx").'</td>';
|
||||
print '<td class="center">';
|
||||
if ($conf->use_javascript_ajax) {
|
||||
print ajax_constantonoff('MULTICURRENCY_USE_ORIGIN_TX');
|
||||
print ajax_constantonoff('MULTICURRENCY_USE_ORIGIN_TX', null, null, 0, 0, 0, 2, 0, 1);
|
||||
} else {
|
||||
$arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
|
||||
print $form->selectarray("MULTICURRENCY_USE_ORIGIN_TX", $arrval, $conf->global->MULTICURRENCY_USE_ORIGIN_TX);
|
||||
@ -242,6 +243,7 @@ print '</td></tr>';
|
||||
*/
|
||||
|
||||
print '</table>';
|
||||
print '</div>';
|
||||
|
||||
print '<br>';
|
||||
|
||||
@ -290,7 +292,7 @@ if (!empty($conf->global->MAIN_MULTICURRENCY_ALLOW_SYNCHRONIZATION)) {
|
||||
}
|
||||
|
||||
print '<div class="div-table-responsive-no-min">';
|
||||
print '<table class="noborder centpercent">';
|
||||
print '<table class="noborder centpercent nomarginbottom">';
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$form->textwithpicto($langs->trans("CurrenciesUsed"), $langs->transnoentitiesnoconv("CurrenciesUsed_help_to_add")).'</td>'."\n";
|
||||
@ -305,7 +307,7 @@ print '<tr class="oddeven">';
|
||||
print '<td>'.$form->selectCurrency('', 'code', 1).'</td>';
|
||||
print '<td class="right">';
|
||||
print '<input type="text" name="rate" value="" class="width75 right" placeholder="'.$langs->trans('Rate').'" /> ';
|
||||
print '<input type="submit" class="button button-add" value="'.$langs->trans("Add").'">';
|
||||
print '<input type="submit" class="button button-add small" value="'.$langs->trans("Add").'">';
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
|
||||
|
||||
@ -196,6 +196,12 @@ $arraydetailsforpdffoot = array(
|
||||
3 => $langs->transnoentitiesnoconv('DisplayCompanyInfoAndManagers')
|
||||
);
|
||||
|
||||
$arraylistofpdfformat = array(
|
||||
0 => $langs->transnoentitiesnoconv('PDF 1.7'),
|
||||
1 => $langs->transnoentitiesnoconv('PDF/A-1b'),
|
||||
3 => $langs->transnoentitiesnoconv('PDF/A-3b'),
|
||||
);
|
||||
|
||||
$s = $langs->trans("LibraryToBuildPDF")."<br>";
|
||||
$i = 0;
|
||||
$pdf = pdf_getInstance('A4');
|
||||
@ -540,11 +546,7 @@ if ($conf->use_javascript_ajax) {
|
||||
print '</td></tr>';
|
||||
|
||||
print '<tr class="oddeven"><td>'.$langs->trans("PDF_USE_A").'</td><td>';
|
||||
if ($conf->use_javascript_ajax) {
|
||||
print ajax_constantonoff('PDF_USE_A');
|
||||
} else {
|
||||
print $form->selectyesno('PDF_USE_A', (empty($conf->global->PDF_USE_A) ? 0 : $conf->global->PDF_USE_A), 1);
|
||||
}
|
||||
print $form->selectarray('PDF_USE_A', $arraylistofpdfformat, (empty($conf->global->PDF_USE_A) ? 0 : $conf->global->PDF_USE_A));
|
||||
print '</td></tr>';
|
||||
|
||||
print '</table>';
|
||||
|
||||
@ -98,7 +98,9 @@ if (!empty($ExecTimeLimit)) {
|
||||
@set_time_limit($ExecTimeLimit); // Need more than 240 on Windows 7/64
|
||||
error_reporting($err);
|
||||
}
|
||||
$MemoryLimit = 0;
|
||||
|
||||
/* If value has been forced with a php_admin_value, this has no effect. Example of value: '512M' */
|
||||
$MemoryLimit = getDolGlobalString('MAIN_MEMORY_LIMIT_ARCHIVE_DATAROOT');
|
||||
if (!empty($MemoryLimit)) {
|
||||
@ini_set('memory_limit', $MemoryLimit);
|
||||
}
|
||||
|
||||
@ -46,7 +46,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php';
|
||||
|
||||
// Load translation files required by the page
|
||||
$langs->loadLangs(array("banks", "categories", "companies", "bills", "trips", "donations", "loan"));
|
||||
$langs->loadLangs(array("banks", "categories", "companies", "bills", "trips", "donations", "loan", "salaries"));
|
||||
|
||||
$action = GETPOST('action', 'aZ09');
|
||||
$id = GETPOST('account', 'int') ? GETPOST('account', 'int') : GETPOST('id', 'int');
|
||||
@ -481,7 +481,7 @@ if (empty($numref)) {
|
||||
|
||||
// Description
|
||||
print '<td valign="center">';
|
||||
print '<a href="'.DOL_URL_ROOT.'/compta/bank/line.php?rowid='.$objp->rowid.'&account='.$object->id.'">';
|
||||
print '<a href="'.DOL_URL_ROOT.'/compta/bank/line.php?rowid='.$objp->rowid.'&account='.$object->id.'">';
|
||||
$reg = array();
|
||||
preg_match('/\((.+)\)/i', $objp->label, $reg); // Si texte entoure de parenthese on tente recherche de traduction
|
||||
if ($reg[1] && $langs->trans($reg[1]) != $reg[1]) {
|
||||
@ -492,7 +492,7 @@ if (empty($numref)) {
|
||||
print '</a>';
|
||||
|
||||
/*
|
||||
* Ajout les liens (societe, company...)
|
||||
* Add links under the label (link to payment, company, user, social contribution...)
|
||||
*/
|
||||
$newline = 1;
|
||||
$links = $object->get_url($objp->rowid);
|
||||
|
||||
@ -1058,7 +1058,7 @@ class Facture extends CommonInvoice
|
||||
{
|
||||
global $conf;
|
||||
|
||||
// Charge facture source
|
||||
// Source invoice load
|
||||
$facture = new Facture($this->db);
|
||||
|
||||
// Retrieve all extrafield
|
||||
@ -2405,7 +2405,7 @@ class Facture extends CommonInvoice
|
||||
|
||||
/**
|
||||
* Tag the invoice as paid completely (if close_code is filled) => this->fk_statut=2, this->paye=1
|
||||
* or partialy (if close_code filled) + appel trigger BILL_PAYED => this->fk_statut=2, this->paye stay 0
|
||||
* or partially (if close_code filled) + appel trigger BILL_PAYED => this->fk_statut=2, this->paye stay 0
|
||||
*
|
||||
* @param User $user Object user that modify
|
||||
* @param string $close_code Code renseigne si on classe a payee completement alors que paiement incomplet (cas escompte par exemple)
|
||||
@ -2421,7 +2421,7 @@ class Facture extends CommonInvoice
|
||||
|
||||
$now = dol_now();
|
||||
|
||||
dol_syslog(get_class($this)."::set_paid rowid=".((int) $this->id), LOG_DEBUG);
|
||||
dol_syslog(get_class($this)."::setPaid rowid=".((int) $this->id), LOG_DEBUG);
|
||||
|
||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.'facture SET';
|
||||
$sql .= ' fk_statut='.self::STATUS_CLOSED;
|
||||
@ -2502,7 +2502,7 @@ class Facture extends CommonInvoice
|
||||
$sql .= ' fk_user_closing=null';
|
||||
$sql .= " WHERE rowid = ".((int) $this->id);
|
||||
|
||||
dol_syslog(get_class($this)."::set_unpaid", LOG_DEBUG);
|
||||
dol_syslog(get_class($this)."::setUnpaid", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql) {
|
||||
// Call trigger
|
||||
@ -2728,7 +2728,7 @@ class Facture extends CommonInvoice
|
||||
$error++;
|
||||
}
|
||||
|
||||
// On verifie si la facture etait une provisoire
|
||||
// We check if the invoice was provisional
|
||||
if (!$error && (preg_match('/^[\(]?PROV/i', $this->ref))) {
|
||||
// La verif qu'une remise n'est pas utilisee 2 fois est faite au moment de l'insertion de ligne
|
||||
}
|
||||
@ -2737,7 +2737,7 @@ class Facture extends CommonInvoice
|
||||
// Define third party as a customer
|
||||
$result = $this->thirdparty->set_as_client();
|
||||
|
||||
// Si active on decremente le produit principal et ses composants a la validation de facture
|
||||
// If active we decrement the main product and its components at invoice validation
|
||||
if ($this->type != self::TYPE_DEPOSIT && $result >= 0 && !empty($conf->stock->enabled) && !empty($conf->global->STOCK_CALCULATE_ON_BILL) && $idwarehouse > 0) {
|
||||
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php';
|
||||
$langs->load("agenda");
|
||||
@ -4783,7 +4783,7 @@ class Facture extends CommonInvoice
|
||||
|
||||
// TODO : add a flag on invoices to store this conf : INVOICE_RETAINED_WARRANTY_LIMITED_TO_FINAL_SITUATION
|
||||
|
||||
// note : we dont need to test INVOICE_USE_RETAINED_WARRANTY because if $this->retained_warranty is not empty it's because it was set when this conf was active
|
||||
// note : we don't need to test INVOICE_USE_RETAINED_WARRANTY because if $this->retained_warranty is not empty it's because it was set when this conf was active
|
||||
|
||||
$displayWarranty = false;
|
||||
if (!empty($this->retained_warranty)) {
|
||||
@ -4982,7 +4982,7 @@ class Facture extends CommonInvoice
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
//Select all action comm reminder
|
||||
// Select all action comm reminder
|
||||
$sql = "SELECT rowid as id FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
if (!empty($paymentmode) && $paymentmode != 'all') {
|
||||
$sql .= ", ".MAIN_DB_PREFIX."c_paiement as cp";
|
||||
@ -5382,7 +5382,7 @@ class FactureLigne extends CommonInvoiceLine
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
// Insertion dans base de la ligne
|
||||
// Update line in database
|
||||
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'facturedet';
|
||||
$sql .= ' (fk_facture, fk_parent_line, label, description, qty,';
|
||||
$sql .= ' vat_src_code, tva_tx, localtax1_tx, localtax2_tx, localtax1_type, localtax2_type,';
|
||||
@ -5450,8 +5450,8 @@ class FactureLigne extends CommonInvoiceLine
|
||||
}
|
||||
}
|
||||
|
||||
// Si fk_remise_except defini, on lie la remise a la facture
|
||||
// ce qui la flague comme "consommee".
|
||||
// If fk_remise_except is defined, the discount is linked to the invoice
|
||||
// which flags it as "consumed".
|
||||
if ($this->fk_remise_except) {
|
||||
$discount = new DiscountAbsolute($this->db);
|
||||
$result = $discount->fetch($this->fk_remise_except);
|
||||
@ -5740,7 +5740,7 @@ class FactureLigne extends CommonInvoiceLine
|
||||
$this->total_localtax2 = 0;
|
||||
}
|
||||
|
||||
// Mise a jour ligne en base
|
||||
// Update line in database
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."facturedet SET";
|
||||
$sql .= " total_ht=".price2num($this->total_ht)."";
|
||||
$sql .= ",total_tva=".price2num($this->total_tva)."";
|
||||
|
||||
@ -231,8 +231,11 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && ($user->rights->tax->char
|
||||
$object->fetch($id);
|
||||
|
||||
if ($object->id > 0) {
|
||||
$object->paye = 0;
|
||||
$object->id = $object->ref = null;
|
||||
$object->paye = 0;
|
||||
if (GETPOST('amount', 'alphanohtml')) {
|
||||
$object->amount = price2num(GETPOST('amount', 'alphanohtml'), 'MT', 2);
|
||||
}
|
||||
|
||||
if (GETPOST('clone_label', 'alphanohtml')) {
|
||||
$object->label = GETPOST('clone_label', 'alphanohtml');
|
||||
@ -244,7 +247,7 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && ($user->rights->tax->char
|
||||
$object->periode = dol_time_plus_duree($object->periode, 1, 'm');
|
||||
$object->date_ech = dol_time_plus_duree($object->date_ech, 1, 'm');
|
||||
} else {
|
||||
// Note dateech is often a little bit higher than dateperiod
|
||||
// Note date_ech is often a little bit higher than dateperiod
|
||||
$newdateperiod = dol_mktime(0, 0, 0, GETPOST('clone_periodmonth', 'int'), GETPOST('clone_periodday', 'int'), GETPOST('clone_periodyear', 'int'));
|
||||
$newdateech = dol_mktime(0, 0, 0, GETPOST('clone_date_echmonth', 'int'), GETPOST('clone_date_echday', 'int'), GETPOST('clone_date_echyear', 'int'));
|
||||
if ($newdateperiod) {
|
||||
@ -263,7 +266,8 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && ($user->rights->tax->char
|
||||
}
|
||||
}
|
||||
|
||||
if ($object->check()) {
|
||||
$resultcheck = $object->check();
|
||||
if ($resultcheck) {
|
||||
$id = $object->create($user);
|
||||
if ($id > 0) {
|
||||
$db->commit();
|
||||
@ -431,9 +435,10 @@ if ($id > 0) {
|
||||
} else {
|
||||
$formquestion[] = array('type' => 'date', 'datenow'=>1, 'name' => 'clone_date_ech', 'label' => $langs->trans("Date"), 'value' => -1);
|
||||
$formquestion[] = array('type' => 'date', 'name' => 'clone_period', 'label' => $langs->trans("PeriodEndDate"), 'value' => -1);
|
||||
$formquestion[] = array('type' => 'text', 'name' => 'amount', 'label' => $langs->trans("Amount"), 'value' => price($object->amount), 'morecss' => 'width100');
|
||||
}
|
||||
|
||||
print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneTax', $object->ref), 'confirm_clone', $formquestion, 'yes', 1, 240);
|
||||
print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneTax', $object->ref), 'confirm_clone', $formquestion, 'yes', 1, 280);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -198,11 +198,10 @@ class ChargeSociales extends CommonObject
|
||||
$newamount = price2num($this->amount, 'MT');
|
||||
|
||||
// Validation of parameters
|
||||
if (!$newamount > 0 || empty($this->date_ech) || empty($this->periode)) {
|
||||
if (!($newamount > 0) || empty($this->date_ech) || empty($this->periode)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2006-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2006-2017 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2006-2021 Regis Houssin <regis.houssin@inodbox.com>
|
||||
*
|
||||
* 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
|
||||
@ -114,15 +114,15 @@ print $object->getCivilityLabel();
|
||||
print '</td></tr>';
|
||||
|
||||
// LDAP DN
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPContactDn").'</td><td class="valeur" colspan="3">'.$conf->global->LDAP_CONTACT_DN."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPContactDn").'</td><td class="valeur" colspan="3">'.getDolGlobalString('LDAP_CONTACT_DN')."</td></tr>\n";
|
||||
|
||||
// LDAP Cle
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPNamingAttribute").'</td><td class="valeur" colspan="3">'.$conf->global->LDAP_KEY_CONTACTS."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPNamingAttribute").'</td><td class="valeur" colspan="3">'.getDolGlobalString('LDAP_KEY_CONTACTS')."</td></tr>\n";
|
||||
|
||||
// LDAP Server
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPPrimaryServer").'</td><td class="valeur" colspan="3">'.$conf->global->LDAP_SERVER_HOST."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPSecondaryServer").'</td><td class="valeur" colspan="3">'.$conf->global->LDAP_SERVER_HOST_SLAVE."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPServerPort").'</td><td class="valeur" colspan="3">'.$conf->global->LDAP_SERVER_PORT."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPPrimaryServer").'</td><td class="valeur" colspan="3">'.getDolGlobalString('LDAP_SERVER_HOST')."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPSecondaryServer").'</td><td class="valeur" colspan="3">'.getDolGlobalString('LDAP_SERVER_HOST_SLAVE')."</td></tr>\n";
|
||||
print '<tr><td>LDAP '.$langs->trans("LDAPServerPort").'</td><td class="valeur" colspan="3">'.getDolGlobalString('LDAP_SERVER_PORT')."</td></tr>\n";
|
||||
|
||||
print '</table>';
|
||||
|
||||
@ -136,13 +136,13 @@ print dol_get_fiche_end();
|
||||
*/
|
||||
print '<div class="tabsAction">';
|
||||
|
||||
if (!empty($conf->global->LDAP_CONTACT_ACTIVE) && $conf->global->LDAP_CONTACT_ACTIVE != 'ldap2dolibarr') {
|
||||
if (!empty($conf->global->LDAP_CONTACT_ACTIVE) && getDolGlobalInt('LDAP_CONTACT_ACTIVE') != Ldap::SYNCHRO_LDAP_TO_DOLIBARR) {
|
||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dolibarr2ldap">'.$langs->trans("ForceSynchronize").'</a>';
|
||||
}
|
||||
|
||||
print "</div>\n";
|
||||
|
||||
if (!empty($conf->global->LDAP_CONTACT_ACTIVE) && $conf->global->LDAP_CONTACT_ACTIVE != 'ldap2dolibarr') {
|
||||
if (!empty($conf->global->LDAP_CONTACT_ACTIVE) && getDolGlobalInt('LDAP_CONTACT_ACTIVE') != Ldap::SYNCHRO_LDAP_TO_DOLIBARR) {
|
||||
print "<br>\n";
|
||||
}
|
||||
|
||||
|
||||
@ -140,6 +140,7 @@ if ($action == 'add' && !empty($permissiontoadd)) {
|
||||
header("Location: ".$urltogo);
|
||||
exit;
|
||||
} else {
|
||||
$error++;
|
||||
// Creation KO
|
||||
if (!empty($object->errors)) {
|
||||
setEventMessages(null, $object->errors, 'errors');
|
||||
@ -255,6 +256,7 @@ if ($action == 'update' && !empty($permissiontoadd)) {
|
||||
if ($result > 0) {
|
||||
$action = 'view';
|
||||
} else {
|
||||
$error++;
|
||||
// Creation KO
|
||||
setEventMessages($object->error, $object->errors, 'errors');
|
||||
$action = 'edit';
|
||||
@ -284,6 +286,7 @@ if ($action == "update_extras" && !empty($permissiontoadd)) {
|
||||
setEventMessages($langs->trans('RecordSaved'), null, 'mesgs');
|
||||
$action = 'view';
|
||||
} else {
|
||||
$error++;
|
||||
setEventMessages($object->error, $object->errors, 'errors');
|
||||
$action = 'edit_extras';
|
||||
}
|
||||
@ -301,9 +304,11 @@ if ($action == 'confirm_delete' && !empty($permissiontodelete)) {
|
||||
if ($result > 0) {
|
||||
// Delete OK
|
||||
setEventMessages("RecordDeleted", null, 'mesgs');
|
||||
|
||||
header("Location: ".$backurlforlist);
|
||||
exit;
|
||||
} else {
|
||||
$error++;
|
||||
if (!empty($object->errors)) {
|
||||
setEventMessages(null, $object->errors, 'errors');
|
||||
} else {
|
||||
@ -347,6 +352,7 @@ if ($action == 'confirm_deleteline' && $confirm == 'yes' && !empty($permissionto
|
||||
header('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id);
|
||||
exit;
|
||||
} else {
|
||||
$error++;
|
||||
setEventMessages($object->error, $object->errors, 'errors');
|
||||
}
|
||||
$action = '';
|
||||
@ -383,6 +389,7 @@ if ($action == 'confirm_validate' && $confirm == 'yes' && $permissiontoadd) {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$error++;
|
||||
setEventMessages($object->error, $object->errors, 'errors');
|
||||
}
|
||||
$action = '';
|
||||
@ -414,6 +421,7 @@ if ($action == 'confirm_close' && $confirm == 'yes' && $permissiontoadd) {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$error++;
|
||||
setEventMessages($object->error, $object->errors, 'errors');
|
||||
}
|
||||
$action = '';
|
||||
@ -425,6 +433,7 @@ if ($action == 'confirm_setdraft' && $confirm == 'yes' && $permissiontoadd) {
|
||||
if ($result >= 0) {
|
||||
// Nothing else done
|
||||
} else {
|
||||
$error++;
|
||||
setEventMessages($object->error, $object->errors, 'errors');
|
||||
}
|
||||
$action = '';
|
||||
@ -456,6 +465,7 @@ if ($action == 'confirm_reopen' && $confirm == 'yes' && $permissiontoadd) {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$error++;
|
||||
setEventMessages($object->error, $object->errors, 'errors');
|
||||
}
|
||||
$action = '';
|
||||
@ -481,6 +491,7 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && !empty($permissiontoadd))
|
||||
header("Location: ".$_SERVER['PHP_SELF'].'?id='.$newid); // Open record of new object
|
||||
exit;
|
||||
} else {
|
||||
$error++;
|
||||
setEventMessages($objectutil->error, $objectutil->errors, 'errors');
|
||||
$action = '';
|
||||
}
|
||||
|
||||
@ -26,6 +26,14 @@
|
||||
// $arrayofparameters must be set for action 'update'
|
||||
// $nomessageinupdate can be set to 1
|
||||
// $nomessageinsetmoduleoptions can be set to 1
|
||||
// $formSetup may be defined
|
||||
|
||||
|
||||
if ($action == 'update' && !empty($formSetup) && is_object($formSetup)) {
|
||||
$formSetup->saveConfFromPost();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'update' && is_array($arrayofparameters)) {
|
||||
$db->begin();
|
||||
|
||||
@ -8730,7 +8730,11 @@ abstract class CommonObject
|
||||
$res = $this->db->query($sql);
|
||||
if ($res === false) {
|
||||
$error++;
|
||||
$this->errors[] = $this->db->lasterror();
|
||||
if ($this->db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
|
||||
$this->errors[] = "ErrorRefAlreadyExists";
|
||||
} else {
|
||||
$this->errors[] = $this->db->lasterror();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -110,10 +110,13 @@ class Conf
|
||||
// Common objects that are not modules
|
||||
$this->mycompany = new stdClass();
|
||||
$this->admin = new stdClass();
|
||||
$this->browser = new stdClass();
|
||||
$this->medias = new stdClass();
|
||||
$this->global = new stdClass();
|
||||
|
||||
// Common objects that are not modules and set by the main and not into the this->setValues()
|
||||
$this->browser = new stdClass();
|
||||
|
||||
// Common arrays
|
||||
$this->cache = array();
|
||||
$this->modules = array();
|
||||
$this->modules_parts = array(
|
||||
@ -152,7 +155,6 @@ class Conf
|
||||
$this->facture = new stdClass();
|
||||
$this->contrat = new stdClass();
|
||||
$this->user = new stdClass();
|
||||
$this->usergroup = new stdClass();
|
||||
$this->adherent = new stdClass();
|
||||
$this->bank = new stdClass();
|
||||
$this->notification = new stdClass();
|
||||
@ -161,6 +163,23 @@ class Conf
|
||||
$this->productbatch = new stdClass();
|
||||
}
|
||||
|
||||
/**
|
||||
* Load setup values into conf object (read llx_const) for a specified entity
|
||||
* Note that this->db->xxx, this->file->xxx and this->multicompany have been already loaded when setValues is called.
|
||||
*
|
||||
* @param int $entity Entity to get
|
||||
* @return int < 0 if KO, >= 0 if OK
|
||||
*/
|
||||
public function setEntityValues($entity)
|
||||
{
|
||||
if ($this->entity != $entity) {
|
||||
// If we ask to reload setup for a new entity
|
||||
$this->entity = $entity;
|
||||
return $this->setValues($this->db);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load setup values into conf object (read llx_const)
|
||||
@ -173,6 +192,67 @@ class Conf
|
||||
{
|
||||
dol_syslog(get_class($this)."::setValues");
|
||||
|
||||
// Unset all old modules values
|
||||
if (!empty($this->modules)) {
|
||||
foreach ($this->modules as $m) {
|
||||
if (isset($this->$m)) unset($this->$m);
|
||||
}
|
||||
}
|
||||
|
||||
// Common objects that are not modules
|
||||
$this->mycompany = new stdClass();
|
||||
$this->admin = new stdClass();
|
||||
$this->medias = new stdClass();
|
||||
$this->global = new stdClass();
|
||||
|
||||
// Common objects that are not modules and set by the main and not into the this->setValues()
|
||||
//$this->browser = new stdClass(); // This is set by main and not into this setValues(), so we keep it intact.
|
||||
|
||||
// First level object
|
||||
// TODO Remove this part.
|
||||
$this->syslog = new stdClass();
|
||||
$this->expedition_bon = new stdClass();
|
||||
$this->delivery_note = new stdClass();
|
||||
$this->fournisseur = new stdClass();
|
||||
$this->product = new stdClass();
|
||||
$this->service = new stdClass();
|
||||
$this->contrat = new stdClass();
|
||||
$this->actions = new stdClass();
|
||||
$this->agenda = new stdClass();
|
||||
$this->commande = new stdClass();
|
||||
$this->propal = new stdClass();
|
||||
$this->facture = new stdClass();
|
||||
$this->contrat = new stdClass();
|
||||
$this->user = new stdClass();
|
||||
$this->adherent = new stdClass();
|
||||
$this->bank = new stdClass();
|
||||
$this->notification = new stdClass();
|
||||
$this->mailing = new stdClass();
|
||||
$this->expensereport = new stdClass();
|
||||
$this->productbatch = new stdClass();
|
||||
|
||||
// Common arrays
|
||||
$this->cache = array();
|
||||
$this->modules = array();;
|
||||
$this->modules_parts = array(
|
||||
'css' => array(),
|
||||
'js' => array(),
|
||||
'tabs' => array(),
|
||||
'triggers' => array(),
|
||||
'login' => array(),
|
||||
'substitutions' => array(),
|
||||
'menus' => array(),
|
||||
'theme' => array(),
|
||||
'sms' => array(),
|
||||
'tpl' => array(),
|
||||
'barcode' => array(),
|
||||
'models' => array(),
|
||||
'societe' => array(),
|
||||
'hooks' => array(),
|
||||
'dir' => array(),
|
||||
'syslog' => array(),
|
||||
);
|
||||
|
||||
if (!is_null($db) && is_object($db)) {
|
||||
// Define all global constants into $this->global->key=value
|
||||
$sql = "SELECT ".$db->decrypt('name')." as name,";
|
||||
@ -401,10 +481,6 @@ class Conf
|
||||
$this->user->dir_output = $rootforuser."/users";
|
||||
$this->user->dir_temp = $rootfortemp."/users/temp";
|
||||
|
||||
// For usergroup storage
|
||||
$this->usergroup->dir_output = $rootforuser."/usergroups";
|
||||
$this->usergroup->dir_temp = $rootfortemp."/usergroups/temp";
|
||||
|
||||
// For proposal storage
|
||||
$this->propal->multidir_output = array($this->entity => $rootfordata."/propale");
|
||||
$this->propal->multidir_temp = array($this->entity => $rootfortemp."/propale/temp");
|
||||
@ -692,6 +768,11 @@ class Conf
|
||||
$this->global->MAIN_SHOW_STATE_CODE = 1;
|
||||
}
|
||||
|
||||
// By default, we show state code in combo list
|
||||
if (!isset($this->global->MULTICURRENCY_USE_ORIGIN_TX)) {
|
||||
$this->global->MULTICURRENCY_USE_ORIGIN_TX = 1;
|
||||
}
|
||||
|
||||
// Use a SCA ready workflow with Stripe module (STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION by default if nothing defined)
|
||||
if (!isset($this->global->STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION) && empty($this->global->STRIPE_USE_NEW_CHECKOUT)) {
|
||||
$this->global->STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION = 1;
|
||||
@ -775,8 +856,8 @@ class Conf
|
||||
$this->contrat->services->expires->warning_delay = (isset($this->global->MAIN_DELAY_RUNNING_SERVICES) ? $this->global->MAIN_DELAY_RUNNING_SERVICES : 0) * 86400;
|
||||
}
|
||||
if (isset($this->commande)) {
|
||||
$this->bank->rappro = new stdClass();
|
||||
$this->bank->cheque = new stdClass();
|
||||
$this->bank->rappro = new stdClass();
|
||||
$this->bank->cheque = new stdClass();
|
||||
$this->bank->rappro->warning_delay = (isset($this->global->MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE) ? $this->global->MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE : 0) * 86400;
|
||||
$this->bank->cheque->warning_delay = (isset($this->global->MAIN_DELAY_CHEQUES_TO_DEPOSIT) ? $this->global->MAIN_DELAY_CHEQUES_TO_DEPOSIT : 0) * 86400;
|
||||
}
|
||||
@ -845,6 +926,23 @@ class Conf
|
||||
}
|
||||
}
|
||||
|
||||
// For backward compatibility
|
||||
if (!empty($this->global->LDAP_SYNCHRO_ACTIVE)) {
|
||||
if ($this->global->LDAP_SYNCHRO_ACTIVE == 'dolibarr2ldap') {
|
||||
$this->global->LDAP_SYNCHRO_ACTIVE = 1;
|
||||
} elseif ($this->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr') {
|
||||
$this->global->LDAP_SYNCHRO_ACTIVE = 2;
|
||||
}
|
||||
}
|
||||
// For backward compatibility
|
||||
if (!empty($this->global->LDAP_MEMBER_ACTIVE) && $this->global->LDAP_MEMBER_ACTIVE == 'ldap2dolibarr') {
|
||||
$this->global->LDAP_MEMBER_ACTIVE = 2;
|
||||
}
|
||||
// For backward compatibility
|
||||
if (!empty($this->global->LDAP_MEMBER_TYPE_ACTIVE) && $this->global->LDAP_MEMBER_TYPE_ACTIVE == 'ldap2dolibarr') {
|
||||
$this->global->LDAP_MEMBER_TYPE_ACTIVE = 2;
|
||||
}
|
||||
|
||||
if (!empty($this->global->MAIN_TZUSERINPUTKEY)) {
|
||||
$this->tzuserinputkey = $this->global->MAIN_TZUSERINPUTKEY; // 'tzserver' or 'tzuserrel'
|
||||
}
|
||||
|
||||
@ -230,7 +230,8 @@ class HookManager
|
||||
'setContentSecurityPolicy',
|
||||
'setHtmlTitle',
|
||||
'completeTabsHead',
|
||||
'formDolBanner'
|
||||
'formDolBanner',
|
||||
'displayMarginInfos',
|
||||
)
|
||||
)) {
|
||||
$hooktype = 'addreplace';
|
||||
|
||||
201
htdocs/core/class/html.formldap.class.php
Normal file
201
htdocs/core/class/html.formldap.class.php
Normal file
@ -0,0 +1,201 @@
|
||||
<?php
|
||||
/* Copyright (C) 2021 Regis Houssin <regis.houssin@inodbox.com>
|
||||
*
|
||||
* 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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/core/class/html.formldap.class.php
|
||||
* \ingroup core
|
||||
* \brief File of class with ldap html predefined components
|
||||
*/
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
|
||||
|
||||
/**
|
||||
* Class to manage generation of HTML components for ldap module
|
||||
*/
|
||||
class FormLdap
|
||||
{
|
||||
/**
|
||||
* @var DoliDB Database handler.
|
||||
*/
|
||||
public $db;
|
||||
|
||||
/**
|
||||
* @var string Error code (or message)
|
||||
*/
|
||||
public $error = '';
|
||||
|
||||
/**
|
||||
* @var string[] Array of error strings
|
||||
*/
|
||||
public $errors = array();
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param DoliDB $db Database handler
|
||||
*/
|
||||
public function __construct($db)
|
||||
{
|
||||
global $langs, $form;
|
||||
|
||||
if (!is_object($form)) {
|
||||
$form = new Form($this->db);
|
||||
}
|
||||
|
||||
$langs->loadLangs(array("admin", "ldap"));
|
||||
|
||||
$this->db = $db;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return list of types of hash
|
||||
*
|
||||
* @param string $selected Preselected type
|
||||
* @param string $htmlname Name of field in form
|
||||
* @param int $showempty Add an empty field
|
||||
* @return string HTML select string
|
||||
*/
|
||||
public function selectLdapPasswordHashType($selected = 'md5', $htmlname = 'ldaphashtype', $showempty = 0)
|
||||
{
|
||||
global $form;
|
||||
|
||||
if (empty($selected)) {
|
||||
$selected = 'md5';
|
||||
}
|
||||
if (empty($htmlname)) {
|
||||
$htmlname = 'ldaphashtype';
|
||||
}
|
||||
|
||||
$arraylist = array(
|
||||
//"pbkdf2sha256" => "PBKDF2_SHA256",
|
||||
"ssha512" => "SSHA-512",
|
||||
"ssha384" => "SSHA-384",
|
||||
"ssha256" => "SSHA-256",
|
||||
"ssha" => "SSHA",
|
||||
"sha512" => "SHA-512",
|
||||
"sha384" => "SHA-384",
|
||||
"sha256" => "SHA-256",
|
||||
"sha" => "SHA",
|
||||
"md5" => "MD5",
|
||||
"smd5" => "SMD5",
|
||||
//"cryptmd5" => "CRYPT-MD5",
|
||||
//"cryptsha512" => "CRYPT-SHA512",
|
||||
//"cryptsha384" => "CRYPT-SHA384",
|
||||
//"cryptsha256" => "CRYPT-SHA256",
|
||||
"crypt" => "CRYPT",
|
||||
"clear" => "CLEAR"
|
||||
);
|
||||
|
||||
return $form->selectarray($htmlname, $arraylist, $selected, $showempty);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return list of type of synchronization
|
||||
*
|
||||
* @param int $selected Preselected type
|
||||
* @param string $htmlname Name of field in form
|
||||
* @param array $exclude Exclude values from the list
|
||||
* @param int $scriptonly Add warning if synchro only work with a script (0 = disable, 1 = Dolibarr2ldap, 2 = ldap2dolibarr, 3 = all)
|
||||
* @param int $showempty Add an empty field
|
||||
* @return string HTML select string
|
||||
*/
|
||||
public function selectLdapDnSynchroActive($selected = 0, $htmlname = 'activesynchro', $exclude = array(), $scriptonly = 0, $showempty = 0)
|
||||
{
|
||||
global $langs, $form;
|
||||
|
||||
if (empty($selected)) {
|
||||
$selected = Ldap::SYNCHRO_NONE;
|
||||
}
|
||||
if (empty($htmlname)) {
|
||||
$htmlname = 'activesynchro';
|
||||
}
|
||||
|
||||
$dolibarr2ldaplabel = $langs->trans("DolibarrToLDAP") . (($scriptonly == 1 || $scriptonly == 3) ? " (".$langs->trans("SupportedForLDAPExportScriptOnly").")" : "");
|
||||
$ldap2dolibarrlabel = $langs->trans("LDAPToDolibarr") . (($scriptonly == 2 || $scriptonly == 3) ? " (".$langs->trans("SupportedForLDAPImportScriptOnly").")" : "");
|
||||
|
||||
$arraylist = array(
|
||||
Ldap::SYNCHRO_NONE => $langs->trans("No"),
|
||||
Ldap::SYNCHRO_DOLIBARR_TO_LDAP => $dolibarr2ldaplabel,
|
||||
Ldap::SYNCHRO_LDAP_TO_DOLIBARR => $ldap2dolibarrlabel
|
||||
);
|
||||
|
||||
if (is_array($exclude) && !empty($exclude)) {
|
||||
foreach ($exclude as $value) {
|
||||
if (array_key_exists($value, $arraylist)) {
|
||||
unset($arraylist[$value]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $form->selectarray($htmlname, $arraylist, $selected, $showempty);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return list of ldap server types
|
||||
*
|
||||
* @param string $selected Preselected type
|
||||
* @param string $htmlname Name of field in form
|
||||
* @param int $showempty Add an empty field
|
||||
* @return string HTML select string
|
||||
*/
|
||||
public function selectLdapServerType($selected = 'openldap', $htmlname = 'type', $showempty = 0)
|
||||
{
|
||||
global $form;
|
||||
|
||||
if (empty($selected)) {
|
||||
$selected = 'openldap';
|
||||
}
|
||||
if (empty($htmlname)) {
|
||||
$htmlname = 'type';
|
||||
}
|
||||
|
||||
$arraylist = array(
|
||||
'activedirectory' => 'Active Directory',
|
||||
'openldap' => 'OpenLdap',
|
||||
'egroupware' => 'Egroupware'
|
||||
);
|
||||
|
||||
return $form->selectarray($htmlname, $arraylist, $selected, $showempty);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return list of ldap server protocol version
|
||||
*
|
||||
* @param string $selected Preselected type
|
||||
* @param string $htmlname Name of field in form
|
||||
* @param int $showempty Add an empty field
|
||||
* @return string HTML select string
|
||||
*/
|
||||
public function selectLdapServerProtocolVersion($selected = '3', $htmlname = 'ldapprotocolversion', $showempty = 0)
|
||||
{
|
||||
global $form;
|
||||
|
||||
if (empty($selected)) {
|
||||
$selected = '3';
|
||||
}
|
||||
if (empty($htmlname)) {
|
||||
$htmlname = 'ldapprotocolversion';
|
||||
}
|
||||
|
||||
$arraylist = array(
|
||||
'3' => 'Version 3',
|
||||
'2' => 'Version 2'
|
||||
);
|
||||
|
||||
return $form->selectarray($htmlname, $arraylist, $selected, $showempty);
|
||||
}
|
||||
}
|
||||
@ -201,7 +201,7 @@ class FormMargin
|
||||
*/
|
||||
public function displayMarginInfos($object, $force_price = false)
|
||||
{
|
||||
global $langs, $conf, $user;
|
||||
global $langs, $conf, $user, $hookmanager;
|
||||
|
||||
if (!empty($user->socid)) {
|
||||
return;
|
||||
@ -213,88 +213,97 @@ class FormMargin
|
||||
|
||||
$marginInfo = $this->getMarginInfosArray($object, $force_price);
|
||||
|
||||
if (!empty($conf->global->MARGIN_ADD_SHOWHIDE_BUTTON)) { // TODO Warning this feature rely on an external js file that may be removed. Using native js function document.cookie should be better
|
||||
print $langs->trans('ShowMarginInfos').' : ';
|
||||
$hidemargininfos = preg_replace('/[^a-zA-Z0-9_\-]/', '', $_COOKIE['DOLUSER_MARGININFO_HIDE_SHOW']); // Clean cookie
|
||||
print '<span id="showMarginInfos" class="linkobject '.(!empty($hidemargininfos) ? '' : 'hideobject').'">'.img_picto($langs->trans("Disabled"), 'switch_off').'</span>';
|
||||
print '<span id="hideMarginInfos" class="linkobject '.(!empty($hidemargininfos) ? 'hideobject' : '').'">'.img_picto($langs->trans("Enabled"), 'switch_on').'</span>';
|
||||
$parameters=array('marginInfo'=>$marginInfo);
|
||||
$reshook = $hookmanager->executeHooks('displayMarginInfos', $parameters, $object, $action);
|
||||
if ($reshook < 0) {
|
||||
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||
} elseif (empty($reshook)) {
|
||||
if (!empty($conf->global->MARGIN_ADD_SHOWHIDE_BUTTON)) { // TODO Warning this feature rely on an external js file that may be removed. Using native js function document.cookie should be better
|
||||
print $langs->trans('ShowMarginInfos') . ' : ';
|
||||
$hidemargininfos = preg_replace('/[^a-zA-Z0-9_\-]/', '', $_COOKIE['DOLUSER_MARGININFO_HIDE_SHOW']); // Clean cookie
|
||||
print '<span id="showMarginInfos" class="linkobject ' . (!empty($hidemargininfos) ? '' : 'hideobject') . '">' . img_picto($langs->trans("Disabled"), 'switch_off') . '</span>';
|
||||
print '<span id="hideMarginInfos" class="linkobject ' . (!empty($hidemargininfos) ? 'hideobject' : '') . '">' . img_picto($langs->trans("Enabled"), 'switch_on') . '</span>';
|
||||
|
||||
print '<script>$(document).ready(function() {
|
||||
$("span#showMarginInfos").click(function() { $.getScript( "'.dol_buildpath('/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js', 1).'", function( data, textStatus, jqxhr ) { $.cookie("DOLUSER_MARGININFO_HIDE_SHOW", 0); $(".margininfos").show(); $("span#showMarginInfos").addClass("hideobject"); $("span#hideMarginInfos").removeClass("hideobject");})});
|
||||
$("span#hideMarginInfos").click(function() { $.getScript( "'.dol_buildpath('/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js', 1).'", function( data, textStatus, jqxhr ) { $.cookie("DOLUSER_MARGININFO_HIDE_SHOW", 1); $(".margininfos").hide(); $("span#hideMarginInfos").addClass("hideobject"); $("span#showMarginInfos").removeClass("hideobject");})});
|
||||
print '<script>$(document).ready(function() {
|
||||
$("span#showMarginInfos").click(function() { $.getScript( "' . dol_buildpath('/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js', 1) . '", function( data, textStatus, jqxhr ) { $.cookie("DOLUSER_MARGININFO_HIDE_SHOW", 0); $(".margininfos").show(); $("span#showMarginInfos").addClass("hideobject"); $("span#hideMarginInfos").removeClass("hideobject");})});
|
||||
$("span#hideMarginInfos").click(function() { $.getScript( "' . dol_buildpath('/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js', 1) . '", function( data, textStatus, jqxhr ) { $.cookie("DOLUSER_MARGININFO_HIDE_SHOW", 1); $(".margininfos").hide(); $("span#hideMarginInfos").addClass("hideobject"); $("span#showMarginInfos").removeClass("hideobject");})});
|
||||
});</script>';
|
||||
if (!empty($hidemargininfos)) {
|
||||
print '<script>$(document).ready(function() {$(".margininfos").hide();});</script>';
|
||||
if (!empty($hidemargininfos)) {
|
||||
print '<script>$(document).ready(function() {$(".margininfos").hide();});</script>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print '<div class="div-table-responsive-no-min">';
|
||||
print '<!-- Margin table -->'."\n";
|
||||
print '<div class="div-table-responsive-no-min">';
|
||||
print '<!-- Margin table -->' . "\n";
|
||||
|
||||
print '<table class="noborder margintable centpercent">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td class="liste_titre">'.$langs->trans('Margins').'</td>';
|
||||
print '<td class="liste_titre right">'.$langs->trans('SellingPrice').'</td>';
|
||||
if ($conf->global->MARGIN_TYPE == "1") {
|
||||
print '<td class="liste_titre right">'.$langs->trans('BuyingPrice').'</td>';
|
||||
} else {
|
||||
print '<td class="liste_titre right">'.$langs->trans('CostPrice').'</td>';
|
||||
}
|
||||
print '<td class="liste_titre right">'.$langs->trans('Margin').'</td>';
|
||||
if (!empty($conf->global->DISPLAY_MARGIN_RATES)) {
|
||||
print '<td class="liste_titre right">'.$langs->trans('MarginRate').'</td>';
|
||||
}
|
||||
if (!empty($conf->global->DISPLAY_MARK_RATES)) {
|
||||
print '<td class="liste_titre right">'.$langs->trans('MarkRate').'</td>';
|
||||
}
|
||||
print '</tr>';
|
||||
|
||||
if (!empty($conf->product->enabled)) {
|
||||
//if ($marginInfo['margin_on_products'] != 0 && $marginInfo['margin_on_services'] != 0) {
|
||||
print '<tr class="oddeven">';
|
||||
print '<td>'.$langs->trans('MarginOnProducts').'</td>';
|
||||
print '<td class="right">'.price($marginInfo['pv_products']).'</td>';
|
||||
print '<td class="right">'.price($marginInfo['pa_products']).'</td>';
|
||||
print '<td class="right">'.price($marginInfo['margin_on_products']).'</td>';
|
||||
print '<table class="noborder margintable centpercent">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td class="liste_titre">' . $langs->trans('Margins') . '</td>';
|
||||
print '<td class="liste_titre right">' . $langs->trans('SellingPrice') . '</td>';
|
||||
if ($conf->global->MARGIN_TYPE == "1") {
|
||||
print '<td class="liste_titre right">' . $langs->trans('BuyingPrice') . '</td>';
|
||||
} else {
|
||||
print '<td class="liste_titre right">' . $langs->trans('CostPrice') . '</td>';
|
||||
}
|
||||
print '<td class="liste_titre right">' . $langs->trans('Margin') . '</td>';
|
||||
if (!empty($conf->global->DISPLAY_MARGIN_RATES)) {
|
||||
print '<td class="right">'.(($marginInfo['margin_rate_products'] == '') ? '' : price($marginInfo['margin_rate_products'], null, null, null, null, 2).'%').'</td>';
|
||||
print '<td class="liste_titre right">' . $langs->trans('MarginRate') . '</td>';
|
||||
}
|
||||
if (!empty($conf->global->DISPLAY_MARK_RATES)) {
|
||||
print '<td class="right">'.(($marginInfo['mark_rate_products'] == '') ? '' : price($marginInfo['mark_rate_products'], null, null, null, null, 2).'%').'</td>';
|
||||
print '<td class="liste_titre right">' . $langs->trans('MarkRate') . '</td>';
|
||||
}
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
if (!empty($conf->service->enabled)) {
|
||||
print '<tr class="oddeven">';
|
||||
print '<td>'.$langs->trans('MarginOnServices').'</td>';
|
||||
print '<td class="right">'.price($marginInfo['pv_services']).'</td>';
|
||||
print '<td class="right">'.price($marginInfo['pa_services']).'</td>';
|
||||
print '<td class="right">'.price($marginInfo['margin_on_services']).'</td>';
|
||||
if (!empty($conf->global->DISPLAY_MARGIN_RATES)) {
|
||||
print '<td class="right">'.(($marginInfo['margin_rate_services'] == '') ? '' : price($marginInfo['margin_rate_services'], null, null, null, null, 2).'%').'</td>';
|
||||
if (!empty($conf->product->enabled)) {
|
||||
//if ($marginInfo['margin_on_products'] != 0 && $marginInfo['margin_on_services'] != 0) {
|
||||
print '<tr class="oddeven">';
|
||||
print '<td>' . $langs->trans('MarginOnProducts') . '</td>';
|
||||
print '<td class="right">' . price($marginInfo['pv_products']) . '</td>';
|
||||
print '<td class="right">' . price($marginInfo['pa_products']) . '</td>';
|
||||
print '<td class="right">' . price($marginInfo['margin_on_products']) . '</td>';
|
||||
if (!empty($conf->global->DISPLAY_MARGIN_RATES)) {
|
||||
print '<td class="right">' . (($marginInfo['margin_rate_products'] == '') ? '' : price($marginInfo['margin_rate_products'], null, null, null, null, 2) . '%') . '</td>';
|
||||
}
|
||||
if (!empty($conf->global->DISPLAY_MARK_RATES)) {
|
||||
print '<td class="right">' . (($marginInfo['mark_rate_products'] == '') ? '' : price($marginInfo['mark_rate_products'], null, null, null, null, 2) . '%') . '</td>';
|
||||
}
|
||||
print '</tr>';
|
||||
}
|
||||
if (!empty($conf->global->DISPLAY_MARK_RATES)) {
|
||||
print '<td class="right">'.(($marginInfo['mark_rate_services'] == '') ? '' : price($marginInfo['mark_rate_services'], null, null, null, null, 2).'%').'</td>';
|
||||
}
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
if (!empty($conf->product->enabled) && !empty($conf->service->enabled)) {
|
||||
print '<tr class="liste_total">';
|
||||
print '<td>'.$langs->trans('TotalMargin').'</td>';
|
||||
print '<td class="right">'.price($marginInfo['pv_total']).'</td>';
|
||||
print '<td class="right">'.price($marginInfo['pa_total']).'</td>';
|
||||
print '<td class="right">'.price($marginInfo['total_margin']).'</td>';
|
||||
if (!empty($conf->global->DISPLAY_MARGIN_RATES)) {
|
||||
print '<td class="right">'.(($marginInfo['total_margin_rate'] == '') ? '' : price($marginInfo['total_margin_rate'], null, null, null, null, 2).'%').'</td>';
|
||||
if (!empty($conf->service->enabled)) {
|
||||
print '<tr class="oddeven">';
|
||||
print '<td>' . $langs->trans('MarginOnServices') . '</td>';
|
||||
print '<td class="right">' . price($marginInfo['pv_services']) . '</td>';
|
||||
print '<td class="right">' . price($marginInfo['pa_services']) . '</td>';
|
||||
print '<td class="right">' . price($marginInfo['margin_on_services']) . '</td>';
|
||||
if (!empty($conf->global->DISPLAY_MARGIN_RATES)) {
|
||||
print '<td class="right">' . (($marginInfo['margin_rate_services'] == '') ? '' : price($marginInfo['margin_rate_services'], null, null, null, null, 2) . '%') . '</td>';
|
||||
}
|
||||
if (!empty($conf->global->DISPLAY_MARK_RATES)) {
|
||||
print '<td class="right">' . (($marginInfo['mark_rate_services'] == '') ? '' : price($marginInfo['mark_rate_services'], null, null, null, null, 2) . '%') . '</td>';
|
||||
}
|
||||
print '</tr>';
|
||||
}
|
||||
if (!empty($conf->global->DISPLAY_MARK_RATES)) {
|
||||
print '<td class="right">'.(($marginInfo['total_mark_rate'] == '') ? '' : price($marginInfo['total_mark_rate'], null, null, null, null, 2).'%').'</td>';
|
||||
|
||||
if (!empty($conf->product->enabled) && !empty($conf->service->enabled)) {
|
||||
print '<tr class="liste_total">';
|
||||
print '<td>' . $langs->trans('TotalMargin') . '</td>';
|
||||
print '<td class="right">' . price($marginInfo['pv_total']) . '</td>';
|
||||
print '<td class="right">' . price($marginInfo['pa_total']) . '</td>';
|
||||
print '<td class="right">' . price($marginInfo['total_margin']) . '</td>';
|
||||
if (!empty($conf->global->DISPLAY_MARGIN_RATES)) {
|
||||
print '<td class="right">' . (($marginInfo['total_margin_rate'] == '') ? '' : price($marginInfo['total_margin_rate'], null, null, null, null, 2) . '%') . '</td>';
|
||||
}
|
||||
if (!empty($conf->global->DISPLAY_MARK_RATES)) {
|
||||
print '<td class="right">' . (($marginInfo['total_mark_rate'] == '') ? '' : price($marginInfo['total_mark_rate'], null, null, null, null, 2) . '%') . '</td>';
|
||||
}
|
||||
print '</tr>';
|
||||
}
|
||||
print '</tr>';
|
||||
print $hookmanager->resPrint;
|
||||
print '</table>';
|
||||
print '</div>';
|
||||
} elseif ($reshook > 0) {
|
||||
print $hookmanager->resPrint;
|
||||
}
|
||||
print '</table>';
|
||||
print '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
926
htdocs/core/class/html.formsetup.class.php
Normal file
926
htdocs/core/class/html.formsetup.class.php
Normal file
@ -0,0 +1,926 @@
|
||||
<?php
|
||||
/* Copyright (C) 2021 John BOTELLA <john.botella@atm-consulting.fr>
|
||||
*
|
||||
* 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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* This class help you create setup render
|
||||
*/
|
||||
class FormSetup
|
||||
{
|
||||
|
||||
/**
|
||||
* @var DoliDB Database handler.
|
||||
*/
|
||||
public $db;
|
||||
|
||||
/** @var FormSetupItem[] */
|
||||
public $items = array();
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $setupNotEmpty = 0;
|
||||
|
||||
/** @var Translate */
|
||||
public $langs;
|
||||
|
||||
/** @var Form */
|
||||
public $form;
|
||||
|
||||
/** @var int */
|
||||
protected $maxItemRank;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param DoliDB $db Database handler
|
||||
* @param Translate $outputLangs if needed can use another lang
|
||||
*/
|
||||
public function __construct($db, $outputLangs = false)
|
||||
{
|
||||
global $langs;
|
||||
$this->db = $db;
|
||||
$this->form = new Form($this->db);
|
||||
|
||||
if ($outputLangs) {
|
||||
$this->langs = $outputLangs;
|
||||
} else {
|
||||
$this->langs = $langs;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $editMode true will display output on edit mod
|
||||
* @return string
|
||||
*/
|
||||
public function generateOutput($editMode = false)
|
||||
{
|
||||
global $hookmanager, $action;
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
|
||||
|
||||
$parameters = array(
|
||||
'editMode' => $editMode
|
||||
);
|
||||
$reshook = $hookmanager->executeHooks('formSetupBeforeGenerateOutput', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
|
||||
if ($reshook < 0) {
|
||||
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||
}
|
||||
|
||||
if ($reshook > 0) {
|
||||
return $hookmanager->resPrint;
|
||||
} else {
|
||||
$out = '<input type="hidden" name="token" value="' . newToken() . '">';
|
||||
if ($editMode) {
|
||||
$out .= '<input type="hidden" name="action" value="update">';
|
||||
}
|
||||
|
||||
$out .= '<table class="noborder centpercent">';
|
||||
$out .= '<thead>';
|
||||
$out .= '<tr class="liste_titre">';
|
||||
$out .= ' <td class="titlefield">' . $this->langs->trans("Parameter") . '</td>';
|
||||
$out .= ' <td>' . $this->langs->trans("Value") . '</td>';
|
||||
$out .= '</tr>';
|
||||
$out .= '</thead>';
|
||||
|
||||
// Sort items before render
|
||||
$this->sortingItems();
|
||||
|
||||
$out .= '<tbody>';
|
||||
foreach ($this->items as $item) {
|
||||
$out .= $this->generateLineOutput($item, $editMode);
|
||||
}
|
||||
$out .= '</tbody>';
|
||||
|
||||
$out .= '</table>';
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $noMessageInUpdate display event message on errors and success
|
||||
* @return void|null
|
||||
*/
|
||||
public function saveConfFromPost($noMessageInUpdate = false)
|
||||
{
|
||||
|
||||
if (empty($this->items)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$this->db->begin();
|
||||
$error = 0;
|
||||
foreach ($this->items as $item) {
|
||||
$res = $item->setValueFromPost();
|
||||
if ($res > 0) {
|
||||
$item->saveConfValue();
|
||||
} elseif ($res < 0) {
|
||||
$error++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$error) {
|
||||
$this->db->commit();
|
||||
if (empty($noMessageInUpdate)) {
|
||||
setEventMessages($this->langs->trans("SetupSaved"), null);
|
||||
}
|
||||
} else {
|
||||
$this->db->rollback();
|
||||
if (empty($noMessageInUpdate)) {
|
||||
setEventMessages($this->langs->trans("SetupNotSaved"), null, 'errors');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FormSetupItem $item the setup item
|
||||
* @param bool $editMode Display as edit mod
|
||||
* @return string the html output for an setup item
|
||||
*/
|
||||
public function generateLineOutput($item, $editMode = false)
|
||||
{
|
||||
|
||||
$out = '';
|
||||
if ($item->enabled==1) {
|
||||
$this->setupNotEmpty++;
|
||||
$out.= '<tr class="oddeven">';
|
||||
|
||||
$out.= '<td class="col-setup-title">';
|
||||
$out.= '<span id="helplink'.$item->confKey.'" class="spanforparamtooltip">';
|
||||
$out.= $this->form->textwithpicto($item->getNameText(), $item->getHelpText(), 1, 'info', '', 0, 3, 'tootips'.$item->confKey);
|
||||
$out.= '</span>';
|
||||
$out.= '</td>';
|
||||
|
||||
$out.= '<td>';
|
||||
|
||||
if ($editMode) {
|
||||
$out.= $item->generateInputField();
|
||||
} else {
|
||||
$out.= $item->generateOutputField();
|
||||
}
|
||||
|
||||
if (!empty($item->errors)) {
|
||||
// TODO : move set event message in a methode to be called by cards not by this class
|
||||
setEventMessages(null, $item->errors, 'errors');
|
||||
}
|
||||
|
||||
$out.= '</td>';
|
||||
$out.= '</tr>';
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param array $params an array of arrays of params from old modulBuilder params
|
||||
* @deprecated was used to test module builder convertion to this form usage
|
||||
* @return null
|
||||
*/
|
||||
public function addItemsFromParamsArray($params)
|
||||
{
|
||||
if (!array($params)) { return false; }
|
||||
foreach ($params as $confKey => $param) {
|
||||
$this->addItemFromParams($confKey, $param); // todo manage error
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* From old
|
||||
* @param string $confKey the conf name to store
|
||||
* @param array $params an array of params from old modulBuilder params
|
||||
* @deprecated was used to test module builder convertion to this form usage
|
||||
* @return bool
|
||||
*/
|
||||
public function addItemFromParams($confKey, $params)
|
||||
{
|
||||
if (empty($confKey) || empty($params['type'])) { return false; }
|
||||
|
||||
/*
|
||||
* Exemple from old module builder setup page
|
||||
* // 'MYMODULE_MYPARAM1'=>array('type'=>'string', 'css'=>'minwidth500' ,'enabled'=>1),
|
||||
// 'MYMODULE_MYPARAM2'=>array('type'=>'textarea','enabled'=>1),
|
||||
//'MYMODULE_MYPARAM3'=>array('type'=>'category:'.Categorie::TYPE_CUSTOMER, 'enabled'=>1),
|
||||
//'MYMODULE_MYPARAM4'=>array('type'=>'emailtemplate:thirdparty', 'enabled'=>1),
|
||||
//'MYMODULE_MYPARAM5'=>array('type'=>'yesno', 'enabled'=>1),
|
||||
//'MYMODULE_MYPARAM5'=>array('type'=>'thirdparty_type', 'enabled'=>1),
|
||||
//'MYMODULE_MYPARAM6'=>array('type'=>'securekey', 'enabled'=>1),
|
||||
//'MYMODULE_MYPARAM7'=>array('type'=>'product', 'enabled'=>1),
|
||||
*/
|
||||
|
||||
$item = new FormSetupItem($confKey);
|
||||
$item->setTypeFromTypeString($params['type']);
|
||||
|
||||
if (!empty($params['enabled'])) {
|
||||
$item->enabled = $params['enabled'];
|
||||
}
|
||||
|
||||
if (!empty($params['css'])) {
|
||||
$item->cssClass = $params['css'];
|
||||
}
|
||||
|
||||
$this->items[$item->confKey] = $item;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* used to export param array for /core/actions_setmoduleoptions.inc.php template
|
||||
* @return array $arrayofparameters for /core/actions_setmoduleoptions.inc.php
|
||||
* @deprecated yes this method came deprecated because it exists only for manage setup convertion
|
||||
*/
|
||||
public function exportItemsAsParamsArray()
|
||||
{
|
||||
$arrayofparameters = array();
|
||||
foreach ($this->items as $key => $item) {
|
||||
$arrayofparameters[$item->confKey] = array(
|
||||
'type' => $item->getType(),
|
||||
'enabled' => $item->enabled
|
||||
);
|
||||
}
|
||||
|
||||
return $arrayofparameters;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reload for each item default conf
|
||||
* note: this will override custom configuration
|
||||
* @return bool
|
||||
*/
|
||||
public function reloadConfs()
|
||||
{
|
||||
|
||||
if (!array($this->items)) { return false; }
|
||||
foreach ($this->items as $item) {
|
||||
$item->reloadValueFromConf();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a new item
|
||||
* the tagret is useful with hooks : that allow externals modules to add setup items on good place
|
||||
* @param $confKey the conf key used in database
|
||||
* @param string $targetItemKey target item used to place the new item beside
|
||||
* @param bool $insertAfterTarget insert before or after target item ?
|
||||
* @return FormSetupItem the new setup item created
|
||||
*/
|
||||
public function newItem($confKey, $targetItemKey = false, $insertAfterTarget = false)
|
||||
{
|
||||
$item = new FormSetupItem($confKey);
|
||||
|
||||
// set item rank if not defined as last item
|
||||
if (empty($item->rank)) {
|
||||
$item->rank = $this->getCurentItemMaxRank() + 1;
|
||||
$this->setItemMaxRank($item->rank); // set new max rank if needed
|
||||
}
|
||||
|
||||
// try to get rank from target column, this will override item->rank
|
||||
if (!empty($targetItemKey)) {
|
||||
if (isset($this->items[$targetItemKey])) {
|
||||
$targetItem = $this->items[$targetItemKey];
|
||||
$item->rank = $targetItem->rank; // $targetItem->rank will be increase after
|
||||
if ($targetItem->rank >= 0 && $insertAfterTarget) {
|
||||
$item->rank++;
|
||||
}
|
||||
}
|
||||
|
||||
// calc new rank for each item to make place for new item
|
||||
foreach ($this->items as $fItem) {
|
||||
if ($item->rank <= $fItem->rank) {
|
||||
$fItem->rank = $fItem->rank + 1;
|
||||
$this->setItemMaxRank($fItem->rank); // set new max rank if needed
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->items[$item->confKey] = $item;
|
||||
return $this->items[$item->confKey];
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort items according to rank
|
||||
* @return bool
|
||||
*/
|
||||
public function sortingItems()
|
||||
{
|
||||
// Sorting
|
||||
return uasort($this->items, array($this, 'itemSort'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $cache To use cache or not
|
||||
* @return int
|
||||
*/
|
||||
public function getCurentItemMaxRank($cache = true)
|
||||
{
|
||||
if (empty($this->items)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ($cache && $this->maxItemRank > 0) {
|
||||
return $this->maxItemRank;
|
||||
}
|
||||
|
||||
$this->maxItemRank = 0;
|
||||
foreach ($this->items as $item) {
|
||||
$this->maxItemRank = max($this->maxItemRank, $item->rank);
|
||||
}
|
||||
|
||||
return $this->maxItemRank;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* set new max rank if needed
|
||||
* @param int $rank the item rank
|
||||
* @return int|void
|
||||
*/
|
||||
public function setItemMaxRank($rank)
|
||||
{
|
||||
$this->maxItemRank = max($this->maxItemRank, $rank);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* get item position rank from item key
|
||||
*
|
||||
* @param string $itemKey the item key
|
||||
* @return int rank on success and -1 on error
|
||||
*/
|
||||
public function getLineRank($itemKey)
|
||||
{
|
||||
if (!isset($this->items[$itemKey]->rank)) {
|
||||
return -1;
|
||||
}
|
||||
return $this->items[$itemKey]->rank;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* uasort callback function to Sort params items
|
||||
*
|
||||
* @param FormSetupItem $a formSetup item
|
||||
* @param FormSetupItem $b formSetup item
|
||||
* @return int Return compare result
|
||||
*/
|
||||
public function itemSort(FormSetupItem $a, FormSetupItem $b)
|
||||
{
|
||||
if (empty($a->rank)) {
|
||||
$a->rank = 0;
|
||||
}
|
||||
if (empty($b->rank)) {
|
||||
$b->rank = 0;
|
||||
}
|
||||
if ($a->rank == $b->rank) {
|
||||
return 0;
|
||||
}
|
||||
return ($a->rank < $b->rank) ? -1 : 1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This class help to create item for class formSetup
|
||||
*/
|
||||
class FormSetupItem
|
||||
{
|
||||
/**
|
||||
* @var DoliDB Database handler.
|
||||
*/
|
||||
public $db;
|
||||
|
||||
/** @var Translate */
|
||||
public $langs;
|
||||
|
||||
/** @var int */
|
||||
public $entity;
|
||||
|
||||
/** @var Form */
|
||||
public $form;
|
||||
|
||||
/** @var string $confKey the conf key used in database */
|
||||
public $confKey;
|
||||
|
||||
/** @var string|false $nameText */
|
||||
public $nameText = false;
|
||||
|
||||
/** @var string $helpText */
|
||||
public $helpText = '';
|
||||
|
||||
/** @var string $value */
|
||||
public $fieldValue;
|
||||
|
||||
/** @var bool|string set this var to override field output will override $fieldInputOverride and $fieldOutputOverride too */
|
||||
public $fieldOverride = false;
|
||||
|
||||
/** @var bool|string set this var to override field output */
|
||||
public $fieldInputOverride = false;
|
||||
|
||||
/** @var bool|string set this var to override field output */
|
||||
public $fieldOutputOverride = false;
|
||||
|
||||
/** @var int $rank */
|
||||
public $rank = 0;
|
||||
|
||||
/**
|
||||
* @var string $errors
|
||||
*/
|
||||
public $errors = array();
|
||||
|
||||
/**
|
||||
* TODO each type must have setAs{type} method to help configuration
|
||||
* And set var as protected when its done configuration must be done by method
|
||||
* @var string $type 'string', 'textarea', 'category:'.Categorie::TYPE_CUSTOMER', 'emailtemplate', 'thirdparty_type'
|
||||
*/
|
||||
protected $type = 'string';
|
||||
|
||||
public $enabled = 1;
|
||||
|
||||
public $cssClass = '';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param $confKey the conf key used in database
|
||||
*/
|
||||
public function __construct($confKey)
|
||||
{
|
||||
global $langs, $db, $conf;
|
||||
$this->db = $db;
|
||||
$this->form = new Form($this->db);
|
||||
$this->langs = $langs;
|
||||
$this->entity = $conf->entity;
|
||||
|
||||
$this->confKey = $confKey;
|
||||
$this->fieldValue = $conf->global->{$this->confKey};
|
||||
}
|
||||
|
||||
/**
|
||||
* reload conf value from databases
|
||||
* @return null
|
||||
*/
|
||||
public function reloadValueFromConf()
|
||||
{
|
||||
global $conf;
|
||||
$this->fieldValue = $conf->global->{$this->confKey};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Save const value based on htdocs/core/actions_setmoduleoptions.inc.php
|
||||
* @return int -1 if KO, 1 if OK
|
||||
*/
|
||||
public function saveConfValue()
|
||||
{
|
||||
// Modify constant only if key was posted (avoid resetting key to the null value)
|
||||
if ($this->type != 'title') {
|
||||
$result = dolibarr_set_const($this->db, $this->confKey, $this->fieldValue, 'chaine', 0, '', $this->entity);
|
||||
if ($result < 0) {
|
||||
return -1;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Save const value based on htdocs/core/actions_setmoduleoptions.inc.php
|
||||
* @return int -1 if KO, 0 nothing to do , 1 if OK
|
||||
*/
|
||||
public function setValueFromPost()
|
||||
{
|
||||
// Modify constant only if key was posted (avoid resetting key to the null value)
|
||||
if ($this->type != 'title') {
|
||||
if (preg_match('/category:/', $this->type)) {
|
||||
if (GETPOST($this->confKey, 'int') == '-1') {
|
||||
$val_const = '';
|
||||
} else {
|
||||
$val_const = GETPOST($this->confKey, 'int');
|
||||
}
|
||||
} else {
|
||||
$val_const = GETPOST($this->confKey, 'alpha');
|
||||
}
|
||||
|
||||
// TODO add value check with class validate
|
||||
$this->fieldValue = $val_const;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get help text or generate it
|
||||
* @return int|string
|
||||
*/
|
||||
public function getHelpText()
|
||||
{
|
||||
if (!empty($this->helpText)) { return $this->helpText; }
|
||||
return (($this->langs->trans($this->confKey . 'Tooltip') != $this->confKey . 'Tooltip') ? $this->langs->trans($this->confKey . 'Tooltip') : '');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get field name text or generate it
|
||||
* @return false|int|string
|
||||
*/
|
||||
public function getNameText()
|
||||
{
|
||||
if (!empty($this->nameText)) { return $this->nameText; }
|
||||
return (($this->langs->trans($this->confKey) != $this->confKey) ? $this->langs->trans($this->confKey) : $this->langs->trans('MissingTranslationForConfKey', $this->confKey));
|
||||
}
|
||||
|
||||
/**
|
||||
* generate input field
|
||||
* @return bool|string
|
||||
*/
|
||||
public function generateInputField()
|
||||
{
|
||||
global $conf, $user;
|
||||
|
||||
if (!empty($this->fieldOverride)) {
|
||||
return $this->fieldOverride;
|
||||
}
|
||||
|
||||
if (!empty($this->fieldInputOverride)) {
|
||||
return $this->fieldInputOverride;
|
||||
}
|
||||
|
||||
$out = '';
|
||||
|
||||
if ($this->type == 'title') {
|
||||
$out.= $this->generateOutputField(); // title have no input
|
||||
} elseif ($this->type == 'textarea') {
|
||||
$out.= $this->generateInputFieldTextarea();
|
||||
} elseif ($this->type== 'html') {
|
||||
$out.= $this->generateInputFieldHtml();
|
||||
} elseif ($this->type == 'yesno') {
|
||||
$out.= $this->form->selectyesno($this->confKey, $this->fieldValue, 1);
|
||||
} elseif (preg_match('/emailtemplate:/', $this->type)) {
|
||||
$out.= $this->generateInputFieldEmailTemplate();
|
||||
} elseif (preg_match('/category:/', $this->type)) {
|
||||
$out.=$this->generateInputFieldCategories();
|
||||
} elseif (preg_match('/thirdparty_type/', $this->type)) {
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
|
||||
$formcompany = new FormCompany($this->db);
|
||||
$out.= $formcompany->selectProspectCustomerType($this->fieldValue, $this->confKey);
|
||||
} elseif ($this->type == 'securekey') {
|
||||
$out.= $this->generateInputFieldSecureKey();
|
||||
} elseif ($this->type == 'product') {
|
||||
if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) {
|
||||
$selected = (empty($this->fieldValue) ? '' : $this->fieldValue);
|
||||
$out.= $this->form->select_produits($selected, $this->confKey, '', 0, 0, 1, 2, '', 0, array(), 0, '1', 0, $this->cssClass, 0, '', null, 1);
|
||||
}
|
||||
} else {
|
||||
$out.= '<input name="'.$this->confKey.'" class="flat '.(empty($this->cssClass) ? 'minwidth200' : $this->cssClass).'" value="'.$this->fieldValue.'">';
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* generate input field for textarea
|
||||
* @return string
|
||||
*/
|
||||
public function generateInputFieldTextarea()
|
||||
{
|
||||
$out = '<textarea class="flat" name="'.$this->confKey.'" id="'.$this->confKey.'" cols="50" rows="5" wrap="soft">' . "\n";
|
||||
$out.= dol_htmlentities($this->fieldValue);
|
||||
$out.= "</textarea>\n";
|
||||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* generate input field for html
|
||||
* @return string
|
||||
*/
|
||||
public function generateInputFieldHtml()
|
||||
{
|
||||
global $conf;
|
||||
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
|
||||
$doleditor = new DolEditor($this->confKey, $this->fieldValue, '', 160, 'dolibarr_notes', '', false, false, $conf->fckeditor->enabled, ROWS_5, '90%');
|
||||
return $doleditor->Create(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* generate input field for categories
|
||||
* @return string
|
||||
*/
|
||||
public function generateInputFieldCategories()
|
||||
{
|
||||
global $conf;
|
||||
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||
$formother = new FormOther($this->db);
|
||||
|
||||
$tmp = explode(':', $this->type);
|
||||
$out= img_picto('', 'category', 'class="pictofixedwidth"');
|
||||
$out.= $formother->select_categories($tmp[1], $this->fieldValue, $this->confKey, 0, $this->langs->trans('CustomersProspectsCategoriesShort'));
|
||||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* generate input field for email template selector
|
||||
* @return string
|
||||
*/
|
||||
public function generateInputFieldEmailTemplate()
|
||||
{
|
||||
global $conf, $user;
|
||||
$out = '';
|
||||
if (preg_match('/emailtemplate:/', $this->type)) {
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
|
||||
$formmail = new FormMail($this->db);
|
||||
|
||||
$tmp = explode(':', $this->type);
|
||||
$nboftemplates = $formmail->fetchAllEMailTemplate($tmp[1], $user, null, 1); // We set lang=null to get in priority record with no lang
|
||||
$arrayOfMessageName = array();
|
||||
if (is_array($formmail->lines_model)) {
|
||||
foreach ($formmail->lines_model as $modelMail) {
|
||||
$moreonlabel = '';
|
||||
if (!empty($arrayOfMessageName[$modelMail->label])) {
|
||||
$moreonlabel = ' <span class="opacitymedium">(' . $this->langs->trans("SeveralLangugeVariatFound") . ')</span>';
|
||||
}
|
||||
// The 'label' is the key that is unique if we exclude the language
|
||||
$arrayOfMessageName[$modelMail->id] = $this->langs->trans(preg_replace('/\(|\)/', '', $modelMail->label)) . $moreonlabel;
|
||||
}
|
||||
}
|
||||
$out .= $this->form->selectarray($this->confKey, $arrayOfMessageName, $this->fieldValue, 'None', 0, 0, '', 0, 0, 0, '', '', 1);
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* generate input field for secure key
|
||||
* @return string
|
||||
*/
|
||||
public function generateInputFieldSecureKey()
|
||||
{
|
||||
global $conf;
|
||||
$out = '<input required="required" type="text" class="flat" id="'.$this->confKey.'" name="'.$this->confKey.'" value="'.(GETPOST($this->confKey, 'alpha') ?GETPOST($this->confKey, 'alpha') : $this->fieldValue).'" size="40">';
|
||||
if (!empty($conf->use_javascript_ajax)) {
|
||||
$out.= ' '.img_picto($this->langs->trans('Generate'), 'refresh', 'id="generate_token'.$this->confKey.'" class="linkobject"');
|
||||
}
|
||||
if (!empty($conf->use_javascript_ajax)) {
|
||||
$out .= "\n" . '<script type="text/javascript">';
|
||||
$out .= '$(document).ready(function () {
|
||||
$("#generate_token' . $this->confKey . '").click(function() {
|
||||
$.get( "' . DOL_URL_ROOT . '/core/ajax/security.php", {
|
||||
action: \'getrandompassword\',
|
||||
generic: true
|
||||
},
|
||||
function(token) {
|
||||
$("#' . $this->confKey . '").val(token);
|
||||
});
|
||||
});
|
||||
});';
|
||||
$out .= '</script>';
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the type : used for old module builder setup conf style conversion and tests
|
||||
* because this two class will quickly evolve it's important to not set or get directly $this->type (will be protected) so this method exist
|
||||
* to be sure we can manage evolution easily
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return $this->type;
|
||||
}
|
||||
|
||||
/**
|
||||
* set the type from string : used for old module builder setup conf style conversion and tests
|
||||
* because this two class will quickly evolve it's important to not set directly $this->type (will be protected) so this method exist
|
||||
* to be sure we can manage evolution easily
|
||||
* @param string $type possible values based on old module builder setup : 'string', 'textarea', 'category:'.Categorie::TYPE_CUSTOMER', 'emailtemplate', 'thirdparty_type'
|
||||
* @deprecated yes this setTypeFromTypeString came deprecated because it exists only for manage setup convertion
|
||||
* @return bool
|
||||
*/
|
||||
public function setTypeFromTypeString($type)
|
||||
{
|
||||
$this->type = $type;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add error
|
||||
* @param array|string $errors the error text
|
||||
* @return null
|
||||
*/
|
||||
public function setErrors($errors)
|
||||
{
|
||||
if (is_array($errors)) {
|
||||
if (!empty($errors)) {
|
||||
foreach ($errors as $error) {
|
||||
$this->setErrors($error);
|
||||
}
|
||||
}
|
||||
} elseif (!empty($errors)) {
|
||||
$this->errors[] = $errors;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool|string Generate the output html for this item
|
||||
*/
|
||||
public function generateOutputField()
|
||||
{
|
||||
global $conf, $user;
|
||||
|
||||
if (!empty($this->fieldOverride)) {
|
||||
return $this->fieldOverride;
|
||||
}
|
||||
|
||||
if (!empty($this->fieldOutputOverride)) {
|
||||
return $this->fieldOutputOverride;
|
||||
}
|
||||
|
||||
$out = '';
|
||||
|
||||
if ($this->type == 'title') {
|
||||
// nothing to do
|
||||
} elseif ($this->type == 'textarea') {
|
||||
$out.= dol_nl2br($this->fieldValue);
|
||||
} elseif ($this->type== 'html') {
|
||||
$out.= $this->fieldValue;
|
||||
} elseif ($this->type == 'yesno') {
|
||||
$out.= ajax_constantonoff($this->confKey);
|
||||
} elseif (preg_match('/emailtemplate:/', $this->type)) {
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
|
||||
$formmail = new FormMail($this->db);
|
||||
|
||||
$tmp = explode(':', $this->type);
|
||||
|
||||
$template = $formmail->getEMailTemplate($this->db, $tmp[1], $user, $this->langs, $this->fieldValue);
|
||||
if ($template<0) {
|
||||
$this->setErrors($formmail->errors);
|
||||
}
|
||||
$out.= $this->langs->trans($template->label);
|
||||
} elseif (preg_match('/category:/', $this->type)) {
|
||||
$c = new Categorie($this->db);
|
||||
$result = $c->fetch($this->fieldValue);
|
||||
if ($result < 0) {
|
||||
$this->setErrors($c->errors);
|
||||
}
|
||||
$ways = $c->print_all_ways(' >> ', 'none', 0, 1); // $ways[0] = "ccc2 >> ccc2a >> ccc2a1" with html formated text
|
||||
$toprint = array();
|
||||
foreach ($ways as $way) {
|
||||
$toprint[] = '<li class="select2-search-choice-dolibarr noborderoncategories"' . ($c->color ? ' style="background: #' . $c->color . ';"' : ' style="background: #bbb"') . '>' . $way . '</li>';
|
||||
}
|
||||
$out.='<div class="select2-container-multi-dolibarr" style="width: 90%;"><ul class="select2-choices-dolibarr">' . implode(' ', $toprint) . '</ul></div>';
|
||||
} elseif (preg_match('/thirdparty_type/', $this->type)) {
|
||||
if ($this->fieldValue==2) {
|
||||
$out.= $this->langs->trans("Prospect");
|
||||
} elseif ($this->fieldValue==3) {
|
||||
$out.= $this->langs->trans("ProspectCustomer");
|
||||
} elseif ($this->fieldValue==1) {
|
||||
$out.= $this->langs->trans("Customer");
|
||||
} elseif ($this->fieldValue==0) {
|
||||
$out.= $this->langs->trans("NorProspectNorCustomer");
|
||||
}
|
||||
} elseif ($this->type == 'product') {
|
||||
$product = new Product($this->db);
|
||||
$resprod = $product->fetch($this->fieldValue);
|
||||
if ($resprod > 0) {
|
||||
$out.= $product->ref;
|
||||
} elseif ($resprod < 0) {
|
||||
$this->setErrors($product->errors);
|
||||
}
|
||||
} else {
|
||||
$out.= $this->fieldValue;
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* METHODS FOR SETTING DISPLAY TYPE
|
||||
*/
|
||||
|
||||
/**
|
||||
* Set type of input as string
|
||||
* @return self
|
||||
*/
|
||||
public function setAsString()
|
||||
{
|
||||
$this->type = 'string';
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set type of input as textarea
|
||||
* @return self
|
||||
*/
|
||||
public function setAsTextarea()
|
||||
{
|
||||
$this->type = 'textarea';
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set type of input as html editor
|
||||
* @return self
|
||||
*/
|
||||
public function setAsHtml()
|
||||
{
|
||||
$this->type = 'html';
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set type of input as emailtemplate selector
|
||||
* @param string $templateType email template type
|
||||
* @return self
|
||||
*/
|
||||
public function setAsEmailTemplate($templateType)
|
||||
{
|
||||
$this->type = 'emailtemplate:'.$templateType;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set type of input as thirdparty_type selector
|
||||
* @return self
|
||||
*/
|
||||
public function setAsThirdpartyType()
|
||||
{
|
||||
$this->type = 'thirdparty_type';
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set type of input as Yes
|
||||
* @return self
|
||||
*/
|
||||
public function setAsYesNo()
|
||||
{
|
||||
$this->type = 'yesno';
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set type of input as secure key
|
||||
* @return self
|
||||
*/
|
||||
public function setAsSecureKey()
|
||||
{
|
||||
$this->type = 'securekey';
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set type of input as product
|
||||
* @return self
|
||||
*/
|
||||
public function setAsProduct()
|
||||
{
|
||||
$this->type = 'product';
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set type of input as a category selector
|
||||
* TODO add default value
|
||||
* @param int $catType Type of category ('customer', 'supplier', 'contact', 'product', 'member'). Old mode (0, 1, 2, ...) is deprecated.
|
||||
* @return self
|
||||
*/
|
||||
public function setAsCategory($catType)
|
||||
{
|
||||
$this->type = 'category:'.$catType;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set type of input as a simple title
|
||||
* no data to store
|
||||
* @return self
|
||||
*/
|
||||
public function setAsTitle()
|
||||
{
|
||||
$this->type = 'title';
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
@ -122,6 +122,21 @@ class Ldap
|
||||
*/
|
||||
public $result;
|
||||
|
||||
/**
|
||||
* No Ldap synchronization
|
||||
*/
|
||||
const SYNCHRO_NONE = 0;
|
||||
|
||||
/**
|
||||
* Dolibarr to Ldap synchronization
|
||||
*/
|
||||
const SYNCHRO_DOLIBARR_TO_LDAP = 1;
|
||||
|
||||
/**
|
||||
* Ldap to Dolibarr synchronization
|
||||
*/
|
||||
const SYNCHRO_LDAP_TO_DOLIBARR = 2;
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
@ -225,6 +240,7 @@ class Ldap
|
||||
// For test/debug
|
||||
//ldap_set_option($this->connection, LDAP_OPT_DEBUG_LEVEL, 7);
|
||||
//ldap_set_option($this->connection, LDAP_OPT_PROTOCOL_VERSION, 3);
|
||||
//ldap_set_option($this->connection, LDAP_OPT_REFERRALS, 0);
|
||||
|
||||
$resulttls = ldap_start_tls($this->connection);
|
||||
if (!$resulttls) {
|
||||
@ -299,7 +315,6 @@ class Ldap
|
||||
return $return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Simply closes the connection set up earlier. Returns true if OK, false if there was an error.
|
||||
* This method seems a duplicate/alias of unbind().
|
||||
@ -920,10 +935,10 @@ class Ldap
|
||||
return -3;
|
||||
}
|
||||
|
||||
$search = ldap_search($this->connection, $dn, $filter);
|
||||
$search = @ldap_search($this->connection, $dn, $filter);
|
||||
|
||||
// Only one entry should ever be returned
|
||||
$entry = ldap_first_entry($this->connection, $search);
|
||||
$entry = @ldap_first_entry($this->connection, $search);
|
||||
|
||||
if (!$entry) {
|
||||
$this->ldapErrorCode = -1;
|
||||
|
||||
@ -358,10 +358,19 @@ class Utils
|
||||
|
||||
dol_syslog("Utils::dumpDatabase execmethod=".$execmethod." command:".$fullcommandcrypted, LOG_INFO);
|
||||
|
||||
|
||||
/* If value has been forced with a php_admin_value, this has no effect. Example of value: '512M' */
|
||||
$MemoryLimit = getDolGlobalString('MAIN_MEMORY_LIMIT_DUMP');
|
||||
if (!empty($MemoryLimit)) {
|
||||
@ini_set('memory_limit', $MemoryLimit);
|
||||
}
|
||||
|
||||
|
||||
// TODO Replace with executeCLI function
|
||||
if ($execmethod == 1) {
|
||||
$output_arr = array();
|
||||
$retval = null;
|
||||
|
||||
exec($fullcommandclear, $output_arr, $retval);
|
||||
|
||||
if ($retval != 0) {
|
||||
|
||||
@ -77,7 +77,8 @@ abstract class DoliDB implements Database
|
||||
*/
|
||||
public function ifsql($test, $resok, $resko)
|
||||
{
|
||||
return 'IF('.$test.','.$resok.','.$resko.')';
|
||||
//return 'IF('.$test.','.$resok.','.$resko.')'; // Not sql standard
|
||||
return '(CASE WHEN '.$test.' THEN '.$resok.' ELSE '.$resko.' END)';
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -132,7 +132,7 @@ function facturefourn_prepare_head($object)
|
||||
* @param Object $object Object related to tabs
|
||||
* @return array Array of tabs to show
|
||||
*/
|
||||
function ordersupplier_prepare_head($object)
|
||||
function ordersupplier_prepare_head(CommandeFournisseur $object)
|
||||
{
|
||||
global $db, $langs, $conf, $user;
|
||||
|
||||
@ -159,6 +159,28 @@ function ordersupplier_prepare_head($object)
|
||||
$langs->load("stocks");
|
||||
$head[$h][0] = DOL_URL_ROOT.'/fourn/commande/dispatch.php?id='.$object->id;
|
||||
$head[$h][1] = $langs->trans("OrderDispatch");
|
||||
|
||||
//If dispach process running we add the number of item to dispatch into the head
|
||||
if (in_array($object->statut, array($object::STATUS_ORDERSENT, $object::STATUS_RECEIVED_PARTIALLY, $object::STATUS_RECEIVED_COMPLETELY))) {
|
||||
$sumQtyAllreadyDispatched = 0;
|
||||
$sumQtyOrdered = 0;
|
||||
|
||||
if (empty($object->lines)) {
|
||||
$object->fetch_lines();
|
||||
}
|
||||
$nbLinesOrdered = count($object->lines);
|
||||
$dispachedLines = $object->getDispachedLines(1);
|
||||
$nbDispachedLines = count($dispachedLines);
|
||||
|
||||
for ($line = 0 ; $line < $nbDispachedLines; $line++) {
|
||||
$sumQtyAllreadyDispatched = $sumQtyAllreadyDispatched + $dispachedLines[$line]['qty'];
|
||||
}
|
||||
for ($line = 0 ; $line < $nbLinesOrdered; $line++) {
|
||||
$sumQtyOrdered = $sumQtyOrdered + $object->lines[$line]->qty;
|
||||
}
|
||||
$head[$h][1] .= '<span class="badge marginleftonlyshort">'.price2num($sumQtyAllreadyDispatched, 'MS').' / '.price2num($sumQtyOrdered, 'MS').'</span>';
|
||||
}
|
||||
|
||||
$head[$h][2] = 'dispatch';
|
||||
$h++;
|
||||
}
|
||||
|
||||
@ -3645,14 +3645,14 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
||||
'github', 'jabber', 'skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'youtube', 'google-plus-g', 'whatsapp',
|
||||
'chevron-left', 'chevron-right', 'chevron-down', 'chevron-top', 'commercial', 'companies',
|
||||
'generic', 'home', 'hrm', 'members', 'products', 'invoicing',
|
||||
'partnership', 'payment', 'pencil-ruler', 'preview', 'project', 'projectpub', 'projecttask', 'question', 'refresh', 'region',
|
||||
'partnership', 'payment', 'payment_vat', 'pencil-ruler', 'preview', 'project', 'projectpub', 'projecttask', 'question', 'refresh', 'region',
|
||||
'salary', 'shipment', 'state', 'supplier_invoice', 'supplier_invoicea', 'supplier_invoicer', 'supplier_invoiced',
|
||||
'technic', 'ticket',
|
||||
'error', 'warning',
|
||||
'recent', 'reception', 'recruitmentcandidature', 'recruitmentjobposition', 'resource',
|
||||
'shapes', 'supplier', 'supplier_proposal', 'supplier_order', 'supplier_invoice',
|
||||
'timespent', 'title_setup', 'title_accountancy', 'title_bank', 'title_hrm', 'title_agenda',
|
||||
'uncheck', 'user-cog', 'website', 'workstation',
|
||||
'uncheck', 'user-cog', 'vat', 'website', 'workstation',
|
||||
'conferenceorbooth', 'eventorganization'
|
||||
))) {
|
||||
$fakey = $pictowithouttext;
|
||||
@ -3692,7 +3692,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
||||
'error'=>'exclamation-triangle', 'warning'=>'exclamation-triangle',
|
||||
'other'=>'square',
|
||||
'playdisabled'=>'play', 'pdf'=>'file-pdf', 'poll'=>'check-double', 'pos'=>'cash-register', 'preview'=>'binoculars', 'project'=>'project-diagram', 'projectpub'=>'project-diagram', 'projecttask'=>'tasks', 'propal'=>'file-signature',
|
||||
'partnership'=>'handshake', 'payment'=>'money-check-alt', 'phoning'=>'phone', 'phoning_mobile'=>'mobile-alt', 'phoning_fax'=>'fax', 'previous'=>'arrow-alt-circle-left', 'printer'=>'print', 'product'=>'cube', 'service'=>'concierge-bell',
|
||||
'partnership'=>'handshake', 'payment'=>'money-check-alt', 'payment_vat'=>'money-check-alt', 'phoning'=>'phone', 'phoning_mobile'=>'mobile-alt', 'phoning_fax'=>'fax', 'previous'=>'arrow-alt-circle-left', 'printer'=>'print', 'product'=>'cube', 'service'=>'concierge-bell',
|
||||
'recent' => 'question', 'reception'=>'dolly', 'recruitmentjobposition'=>'id-card-alt', 'recruitmentcandidature'=>'id-badge',
|
||||
'resize'=>'crop', 'supplier_order'=>'dol-order_supplier', 'supplier_proposal'=>'file-signature',
|
||||
'refresh'=>'redo', 'region'=>'map-marked', 'resource'=>'laptop-house',
|
||||
@ -3700,7 +3700,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
||||
'supplier'=>'building', 'technic'=>'cogs',
|
||||
'timespent'=>'clock', 'title_setup'=>'tools', 'title_accountancy'=>'money-check-alt', 'title_bank'=>'university', 'title_hrm'=>'umbrella-beach',
|
||||
'title_agenda'=>'calendar-alt',
|
||||
'uncheck'=>'times', 'uparrow'=>'share', 'vcard'=>'address-card',
|
||||
'uncheck'=>'times', 'uparrow'=>'share', 'vat'=>'money-check-alt', 'vcard'=>'address-card',
|
||||
'jabber'=>'comment-o',
|
||||
'website'=>'globe-americas', 'workstation'=>'pallet',
|
||||
'conferenceorbooth'=>'chalkboard-teacher', 'eventorganization'=>'project-diagram'
|
||||
@ -3771,12 +3771,13 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
||||
'error'=>'pictoerror', 'warning'=>'pictowarning', 'switch_on'=>'font-status4', 'switch_on_red'=>'font-status8',
|
||||
'holiday'=>'infobox-holiday', 'info'=>'opacityhigh', 'invoice'=>'infobox-commande',
|
||||
'knowledgemanagement'=>'infobox-contrat rotate90', 'loan'=>'infobox-bank_account',
|
||||
'payment'=>'infobox-bank_account', 'poll'=>'infobox-adherent', 'pos'=>'infobox-bank_account', 'project'=>'infobox-project', 'projecttask'=>'infobox-project', 'propal'=>'infobox-propal',
|
||||
'payment'=>'infobox-bank_account', 'payment_vat'=>'infobox-bank_account', 'poll'=>'infobox-adherent', 'pos'=>'infobox-bank_account', 'project'=>'infobox-project', 'projecttask'=>'infobox-project', 'propal'=>'infobox-propal',
|
||||
'reception'=>'flip', 'recruitmentjobposition'=>'infobox-adherent', 'recruitmentcandidature'=>'infobox-adherent',
|
||||
'resource'=>'infobox-action',
|
||||
'salary'=>'infobox-bank_account', 'shipment'=>'infobox-commande', 'supplier_invoice'=>'infobox-order_supplier', 'supplier_invoicea'=>'infobox-order_supplier', 'supplier_invoiced'=>'infobox-order_supplier',
|
||||
'supplier'=>'infobox-order_supplier', 'supplier_order'=>'infobox-order_supplier', 'supplier_proposal'=>'infobox-supplier_proposal',
|
||||
'ticket'=>'infobox-contrat', 'title_accountancy'=>'infobox-bank_account', 'title_hrm'=>'infobox-holiday', 'expensereport'=>'infobox-expensereport', 'trip'=>'infobox-expensereport', 'title_agenda'=>'infobox-action',
|
||||
'vat'=>'infobox-bank_account',
|
||||
//'title_setup'=>'infobox-action', 'tools'=>'infobox-action',
|
||||
'list-alt'=>'imgforviewmode', 'calendar'=>'imgforviewmode', 'calendarweek'=>'imgforviewmode', 'calendarmonth'=>'imgforviewmode', 'calendarday'=>'imgforviewmode', 'calendarperuser'=>'imgforviewmode'
|
||||
);
|
||||
@ -8131,10 +8132,10 @@ function dol_getIdFromCode($db, $key, $tablename, $fieldkey = 'code', $fieldid =
|
||||
/**
|
||||
* Verify if condition in string is ok or not
|
||||
*
|
||||
* @param string $strRights String with condition to check
|
||||
* @return boolean True or False. Return True if strRights is ''
|
||||
* @param string $strToEvaluate String with condition to check
|
||||
* @return boolean True or False. Note: It returns True if $strToEvaluate is ''
|
||||
*/
|
||||
function verifCond($strRights)
|
||||
function verifCond($strToEvaluate)
|
||||
{
|
||||
global $user, $conf, $langs;
|
||||
global $leftmenu;
|
||||
@ -8142,8 +8143,8 @@ function verifCond($strRights)
|
||||
|
||||
//print $strRights."<br>\n";
|
||||
$rights = true;
|
||||
if ($strRights != '') {
|
||||
$str = 'if(!('.$strRights.')) { $rights = false; }';
|
||||
if ($strToEvaluate !== '') {
|
||||
$str = 'if(!('.$strToEvaluate.')) { $rights = false; }';
|
||||
dol_eval($str); // The dol_eval must contains all the global $xxx used into a condition
|
||||
}
|
||||
return $rights;
|
||||
|
||||
@ -2131,30 +2131,38 @@ function dolGetElementUrl($objectid, $objecttype, $withpicto = 0, $option = '')
|
||||
|
||||
// Special cases, to work with non standard path
|
||||
if ($objecttype == 'facture' || $objecttype == 'invoice') {
|
||||
$langs->load('bills');
|
||||
$classpath = 'compta/facture/class';
|
||||
$module = 'facture';
|
||||
$myobject = 'facture';
|
||||
} elseif ($objecttype == 'commande' || $objecttype == 'order') {
|
||||
$langs->load('orders');
|
||||
$classpath = 'commande/class';
|
||||
$module = 'commande';
|
||||
$myobject = 'commande';
|
||||
} elseif ($objecttype == 'propal') {
|
||||
$langs->load('propal');
|
||||
$classpath = 'comm/propal/class';
|
||||
} elseif ($objecttype == 'supplier_proposal') {
|
||||
$langs->load('supplier_proposal');
|
||||
$classpath = 'supplier_proposal/class';
|
||||
} elseif ($objecttype == 'shipping') {
|
||||
$langs->load('sendings');
|
||||
$classpath = 'expedition/class';
|
||||
$myobject = 'expedition';
|
||||
$module = 'expedition_bon';
|
||||
} elseif ($objecttype == 'delivery') {
|
||||
$langs->load('deliveries');
|
||||
$classpath = 'delivery/class';
|
||||
$myobject = 'delivery';
|
||||
$module = 'delivery_note';
|
||||
} elseif ($objecttype == 'contract') {
|
||||
$langs->load('contracts');
|
||||
$classpath = 'contrat/class';
|
||||
$module = 'contrat';
|
||||
$myobject = 'contrat';
|
||||
} elseif ($objecttype == 'member') {
|
||||
$langs->load('members');
|
||||
$classpath = 'adherents/class';
|
||||
$module = 'adherent';
|
||||
$myobject = 'adherent';
|
||||
@ -2163,13 +2171,16 @@ function dolGetElementUrl($objectid, $objecttype, $withpicto = 0, $option = '')
|
||||
$module = 'cabinetmed';
|
||||
$myobject = 'cabinetmedcons';
|
||||
} elseif ($objecttype == 'fichinter') {
|
||||
$langs->load('interventions');
|
||||
$classpath = 'fichinter/class';
|
||||
$module = 'ficheinter';
|
||||
$myobject = 'fichinter';
|
||||
} elseif ($objecttype == 'project') {
|
||||
$langs->load('projects');
|
||||
$classpath = 'projet/class';
|
||||
$module = 'projet';
|
||||
} elseif ($objecttype == 'task') {
|
||||
$langs->load('projects');
|
||||
$classpath = 'projet/class';
|
||||
$module = 'projet';
|
||||
$myobject = 'task';
|
||||
|
||||
@ -1363,6 +1363,7 @@ function pdf_getlinedesc($object, $i, $outputlangs, $hideref = 0, $hidedesc = 0,
|
||||
// Description short of product line
|
||||
$libelleproduitservice = $label;
|
||||
if (!empty($libelleproduitservice) && !empty($conf->global->PDF_BOLD_PRODUCT_LABEL)) {
|
||||
// This part of code is bugged. It introduces a HTML tag making the label a html string but without converting \n into br if it was a full text non html string before.
|
||||
$libelleproduitservice = '<b>'.$libelleproduitservice.'</b>';
|
||||
}
|
||||
}
|
||||
|
||||
@ -97,7 +97,7 @@ function dol_decode($chain, $key = '1')
|
||||
* If constant MAIN_SECURITY_SALT is defined, we use it as a salt (used only if hashing algorightm is something else than 'password_hash').
|
||||
*
|
||||
* @param string $chain String to hash
|
||||
* @param string $type Type of hash ('0':auto will use MAIN_SECURITY_HASH_ALGO else md5, '1':sha1, '2':sha1+md5, '3':md5, '4':md5 for OpenLdap with no salt, '5':sha256, '6':password_hash). Use '3' here, if hash is not needed for security purpose, for security need, prefer '0'.
|
||||
* @param string $type Type of hash ('0':auto will use MAIN_SECURITY_HASH_ALGO else md5, '1':sha1, '2':sha1+md5, '3':md5, '4': for OpenLdap, '5':sha256, '6':password_hash). Use '3' here, if hash is not needed for security purpose, for security need, prefer '0'.
|
||||
* @return string Hash of string
|
||||
* @see getRandomPassword()
|
||||
*/
|
||||
@ -111,7 +111,7 @@ function dol_hash($chain, $type = '0')
|
||||
}
|
||||
|
||||
// Salt value
|
||||
if (!empty($conf->global->MAIN_SECURITY_SALT) && $type != '4' && $type !== 'md5openldap') {
|
||||
if (!empty($conf->global->MAIN_SECURITY_SALT) && $type != '4' && $type !== 'openldap') {
|
||||
$chain = $conf->global->MAIN_SECURITY_SALT.$chain;
|
||||
}
|
||||
|
||||
@ -121,8 +121,8 @@ function dol_hash($chain, $type = '0')
|
||||
return sha1(md5($chain));
|
||||
} elseif ($type == '3' || $type == 'md5') {
|
||||
return md5($chain);
|
||||
} elseif ($type == '4' || $type == 'md5openldap') {
|
||||
return '{md5}'.base64_encode(pack("H*", md5($chain))); // For OpenLdap with md5 (based on an unencrypted password in base)
|
||||
} elseif ($type == '4' || $type == 'openldap') {
|
||||
return dolGetLdapPasswordHash($chain, getDolGlobalString('LDAP_PASSWORD_HASH_TYPE', 'md5'));
|
||||
} elseif ($type == '5' || $type == 'sha256') {
|
||||
return hash('sha256', $chain);
|
||||
} elseif ($type == '6' || $type == 'password_hash') {
|
||||
@ -145,7 +145,7 @@ function dol_hash($chain, $type = '0')
|
||||
*
|
||||
* @param string $chain String to hash (not hashed string)
|
||||
* @param string $hash hash to compare
|
||||
* @param string $type Type of hash ('0':auto, '1':sha1, '2':sha1+md5, '3':md5, '4':md5 for OpenLdap, '5':sha256). Use '3' here, if hash is not needed for security purpose, for security need, prefer '0'.
|
||||
* @param string $type Type of hash ('0':auto, '1':sha1, '2':sha1+md5, '3':md5, '4': for OpenLdap, '5':sha256). Use '3' here, if hash is not needed for security purpose, for security need, prefer '0'.
|
||||
* @return bool True if the computed hash is the same as the given one
|
||||
*/
|
||||
function dol_verifyHash($chain, $hash, $type = '0')
|
||||
@ -167,6 +167,50 @@ function dol_verifyHash($chain, $hash, $type = '0')
|
||||
return dol_hash($chain, $type) == $hash;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a specific ldap hash of a password.
|
||||
*
|
||||
* @param string $password Password to hash
|
||||
* @param string $type Type of hash
|
||||
* @return string Hash of password
|
||||
*/
|
||||
function dolGetLdapPasswordHash($password, $type = 'md5')
|
||||
{
|
||||
if (empty($type)) {
|
||||
$type = 'md5';
|
||||
}
|
||||
|
||||
$salt = substr(sha1(time()), 0, 8);
|
||||
|
||||
if ($type === 'md5') {
|
||||
return '{MD5}' . base64_encode(hash("md5", $password, true)); //For OpenLdap with md5 (based on an unencrypted password in base)
|
||||
} elseif ($type === 'md5frommd5') {
|
||||
return '{MD5}' . base64_encode(hex2bin($password)); // Create OpenLDAP MD5 password from Dolibarr MD5 password
|
||||
} elseif ($type === 'smd5') {
|
||||
return "{SMD5}" . base64_encode(hash("md5", $password . $salt, true) . $salt);
|
||||
} elseif ($type === 'sha') {
|
||||
return '{SHA}' . base64_encode(hash("sha1", $password, true));
|
||||
} elseif ($type === 'ssha') {
|
||||
return "{SSHA}" . base64_encode(hash("sha1", $password . $salt, true) . $salt);
|
||||
} elseif ($type === 'sha256') {
|
||||
return "{SHA256}" . base64_encode(hash("sha256", $password, true));
|
||||
} elseif ($type === 'ssha256') {
|
||||
return "{SSHA256}" . base64_encode(hash("sha256", $password . $salt, true) . $salt);
|
||||
} elseif ($type === 'sha384') {
|
||||
return "{SHA384}" . base64_encode(hash("sha384", $password, true));
|
||||
} elseif ($type === 'ssha384') {
|
||||
return "{SSHA384}" . base64_encode(hash("sha384", $password . $salt, true) . $salt);
|
||||
} elseif ($type === 'sha512') {
|
||||
return "{SHA512}" . base64_encode(hash("sha512", $password, true));
|
||||
} elseif ($type === 'ssha512') {
|
||||
return "{SSHA512}" . base64_encode(hash("sha512", $password . $salt, true) . $salt);
|
||||
} elseif ($type === 'crypt') {
|
||||
return '{CRYPT}' . crypt($password, $salt);
|
||||
} elseif ($type === 'clear') {
|
||||
return '{CLEAR}' . $password; // Just for test, plain text password is not secured !
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check permissions of a user to show a page and an object. Check read permission.
|
||||
* If GETPOST('action','aZ09') defined, we also check write and delete permission.
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2007-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2008-2021 Regis Houssin <regis.houssin@inodbox.com>
|
||||
*
|
||||
* 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
|
||||
@ -156,7 +157,7 @@ function check_user_password_ldap($usertotest, $passwordtotest, $entitytotest)
|
||||
// we need to get the real login to use in the ldap answer.
|
||||
if (!empty($conf->global->LDAP_FIELD_LOGIN) && !empty($ldap->login)) {
|
||||
$login = $ldap->login;
|
||||
dol_syslog("functions_ldap::check_user_password_ldap login is now $login (LDAP_FIELD_LOGIN=".$conf->global->LDAP_FIELD_LOGIN.")");
|
||||
dol_syslog("functions_ldap::check_user_password_ldap login is now $login (LDAP_FIELD_LOGIN=".getDolGlobalString('LDAP_FIELD_LOGIN').")");
|
||||
}
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
||||
@ -181,7 +182,7 @@ function check_user_password_ldap($usertotest, $passwordtotest, $entitytotest)
|
||||
}
|
||||
|
||||
// ldap2dolibarr synchronisation
|
||||
if ($login && !empty($conf->ldap->enabled) && $conf->global->LDAP_SYNCHRO_ACTIVE == 'ldap2dolibarr') { // ldap2dolibarr synchronisation
|
||||
if ($login && !empty($conf->ldap->enabled) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') == Ldap::SYNCHRO_LDAP_TO_DOLIBARR) { // ldap2dolibarr synchronization
|
||||
dol_syslog("functions_ldap::check_user_password_ldap Sync ldap2dolibarr");
|
||||
|
||||
// On charge les attributs du user ldap
|
||||
|
||||
@ -757,7 +757,7 @@ class modSociete extends DolibarrModules
|
||||
'sr.bank' => "Bank",
|
||||
'sr.code_banque' => "BankCode",
|
||||
'sr.code_guichet' => "DeskCode",
|
||||
'sr.number' => "BankAccountNumber*",
|
||||
'sr.number' => "BankAccountNumber",
|
||||
'sr.cle_rib' => "BankAccountNumberKey",
|
||||
'sr.bic' => "BIC",
|
||||
'sr.iban_prefix' => "IBAN",
|
||||
@ -766,6 +766,7 @@ class modSociete extends DolibarrModules
|
||||
'sr.owner_address' => "BankAccountOwnerAddress",
|
||||
'sr.default_rib' => 'Default',
|
||||
'sr.rum' => 'RUM',
|
||||
'sr.frstrecur' => "WithdrawMode",
|
||||
'sr.type' => "Type ban is defaut",
|
||||
);
|
||||
|
||||
@ -797,6 +798,7 @@ class modSociete extends DolibarrModules
|
||||
'sr.owner_address' => 'address of account holder',
|
||||
'sr.default_rib' => '1 (default account) / 0 (not default)',
|
||||
'sr.rum' => 'RUM code',
|
||||
'sr.frstrecur' => 'FRST',
|
||||
'sr.type' => 'ban',
|
||||
);
|
||||
|
||||
|
||||
@ -69,7 +69,7 @@ class PrintingDriver
|
||||
$listoffiles = array();
|
||||
$dirmodels = array_merge(array('/core/modules/printing/'), (array) $conf->modules_parts['printing']);
|
||||
foreach ($dirmodels as $dir) {
|
||||
$tmpfiles = dol_dir_list(dol_buildpath($dir, 0), 'all', 0, '\modules.php', '', 'name', SORT_ASC, 0);
|
||||
$tmpfiles = dol_dir_list(dol_buildpath($dir, 0), 'all', 0, '\.modules.php', '', 'name', SORT_ASC, 0);
|
||||
if (!empty($tmpfiles)) {
|
||||
$listoffiles = array_merge($listoffiles, $tmpfiles);
|
||||
}
|
||||
|
||||
@ -258,7 +258,7 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup
|
||||
}
|
||||
}
|
||||
|
||||
$dir = $conf->usergroup->dir_output;
|
||||
$dir = $conf->user->dir_output.'/usergroups';
|
||||
$objectref = dol_sanitizeFileName($object->ref);
|
||||
if (!preg_match('/specimen/i', $objectref)) {
|
||||
$dir .= "/".$objectref;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2017 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2005-2021 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -81,7 +81,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
// Users
|
||||
if ($action == 'USER_CREATE') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -98,7 +98,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
}
|
||||
} elseif ($action == 'USER_MODIFY') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -177,7 +177,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
}
|
||||
} elseif ($action == 'USER_NEW_PASSWORD') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -212,7 +212,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
} elseif ($action == 'USER_DELETE') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -229,7 +229,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
}
|
||||
/*} elseif ($action == 'USER_SETINGROUP') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -263,7 +263,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
}
|
||||
} elseif ($action == 'USER_REMOVEFROMGROUP') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -298,7 +298,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
} elseif ($action == 'USERGROUP_CREATE') {
|
||||
// Groupes
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -320,7 +320,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
}
|
||||
} elseif ($action == 'USERGROUP_MODIFY') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -353,7 +353,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
}
|
||||
} elseif ($action == 'USERGROUP_DELETE') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
|
||||
if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && getDolGlobalInt('LDAP_SYNCHRO_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -439,7 +439,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
} elseif ($action == 'MEMBER_CREATE') {
|
||||
// Members
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') {
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_ACTIVE') == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -450,7 +450,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
$result = $ldap->add($dn, $info, $user);
|
||||
|
||||
// For member type
|
||||
if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') {
|
||||
if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
if ($object->typeid > 0) {
|
||||
require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php";
|
||||
$membertype = new AdherentType($this->db);
|
||||
@ -482,7 +482,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
}
|
||||
} elseif ($action == 'MEMBER_VALIDATE') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') {
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_ACTIVE') == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
// If status field is setup to be synchronized
|
||||
if (!empty($conf->global->LDAP_FIELD_MEMBER_STATUS)) {
|
||||
$ldap = new Ldap();
|
||||
@ -503,13 +503,13 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
}
|
||||
} elseif ($action == 'MEMBER_SUBSCRIPTION') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') {
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_ACTIVE') == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
// If subscriptions fields are setup to be synchronized
|
||||
if ($conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE
|
||||
|| $conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_AMOUNT
|
||||
|| $conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_DATE
|
||||
|| $conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_AMOUNT
|
||||
|| $conf->global->LDAP_FIELD_MEMBER_END_LASTSUBSCRIPTION) {
|
||||
if (!empty($conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE)
|
||||
|| !empty($conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_AMOUNT)
|
||||
|| !empty($conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_DATE)
|
||||
|| !empty($conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_AMOUNT)
|
||||
|| !empty($conf->global->LDAP_FIELD_MEMBER_END_LASTSUBSCRIPTION)) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -528,7 +528,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
}
|
||||
} elseif ($action == 'MEMBER_MODIFY') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') {
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_ACTIVE') == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -557,7 +557,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
$result = $ldap->update($dn, $info, $user, $olddn, $newrdn, $newparent);
|
||||
|
||||
// For member type
|
||||
if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') {
|
||||
if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php";
|
||||
|
||||
/*
|
||||
@ -616,9 +616,9 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
}
|
||||
} elseif ($action == 'MEMBER_NEW_PASSWORD') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') {
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_ACTIVE') == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
// If password field is setup to be synchronized
|
||||
if ($conf->global->LDAP_FIELD_PASSWORD || $conf->global->LDAP_FIELD_PASSWORD_CRYPTED) {
|
||||
if (!empty($conf->global->LDAP_FIELD_PASSWORD) || !empty($conf->global->LDAP_FIELD_PASSWORD_CRYPTED)) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -637,7 +637,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
}
|
||||
} elseif ($action == 'MEMBER_RESILIATE') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') {
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_ACTIVE') == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
// If status field is setup to be synchronized
|
||||
if (!empty($conf->global->LDAP_FIELD_MEMBER_STATUS)) {
|
||||
$ldap = new Ldap();
|
||||
@ -658,7 +658,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
}
|
||||
} elseif ($action == 'MEMBER_DELETE') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') {
|
||||
if (!empty($conf->global->LDAP_MEMBER_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_ACTIVE') == Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -669,7 +669,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
$result = $ldap->delete($dn);
|
||||
|
||||
// For member type
|
||||
if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') {
|
||||
if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
if ($object->typeid > 0) {
|
||||
require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php";
|
||||
|
||||
@ -706,7 +706,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
} elseif ($action == 'MEMBER_TYPE_CREATE') {
|
||||
// Members types
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') {
|
||||
if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -728,7 +728,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
}
|
||||
} elseif ($action == 'MEMBER_TYPE_MODIFY') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') {
|
||||
if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
@ -765,7 +765,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
|
||||
}
|
||||
} elseif ($action == 'MEMBER_TYPE_DELETE') {
|
||||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') {
|
||||
if (!empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE') === Ldap::SYNCHRO_DOLIBARR_TO_LDAP) {
|
||||
$ldap = new Ldap();
|
||||
$result = $ldap->connect_bind();
|
||||
|
||||
|
||||
@ -1081,7 +1081,7 @@ class Cronjob extends CommonObject
|
||||
dol_syslog("We try to run a job in entity ".$this->entity." when we are in entity ".$conf->entity, LOG_WARNING);
|
||||
}
|
||||
$savcurrententity = $conf->entity;
|
||||
$conf->entity = $this->entity;
|
||||
$conf->setEntityValues($this->entity);
|
||||
dol_syslog(get_class($this)."::run_jobs entity for running job is ".$conf->entity);
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
|
||||
@ -1090,13 +1090,13 @@ class Cronjob extends CommonObject
|
||||
if ($result < 0) {
|
||||
$this->error = "User Error:".$user->error;
|
||||
dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR);
|
||||
$conf->entity = $savcurrententity;
|
||||
$conf->setEntityValues($savcurrententity);
|
||||
return -1;
|
||||
} else {
|
||||
if (empty($user->id)) {
|
||||
$this->error = " User user login:".$userlogin." do not exists";
|
||||
dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR);
|
||||
$conf->entity = $savcurrententity;
|
||||
$conf->setEntityValues($savcurrententity);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@ -1126,7 +1126,7 @@ class Cronjob extends CommonObject
|
||||
$result = $this->update($user); // This include begin/commit
|
||||
if ($result < 0) {
|
||||
dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR);
|
||||
$conf->entity = $savcurrententity;
|
||||
$conf->setEntityValues($savcurrententity);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -1241,7 +1241,7 @@ class Cronjob extends CommonObject
|
||||
if ($ret === false) {
|
||||
$this->error = $langs->trans('CronCannotLoadLib').': '.$libpath;
|
||||
dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR);
|
||||
$conf->entity = $savcurrententity;
|
||||
$conf->setEntityValues($savcurrententity);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -1250,7 +1250,7 @@ class Cronjob extends CommonObject
|
||||
$result = $langs->load($this->module_name.'@'.$this->module_name); // If this->module_name was an existing language file, this will make nothing
|
||||
if ($result < 0) { // If technical error
|
||||
dol_syslog(get_class($this)."::run_jobs Cannot load module langs".$langs->error, LOG_ERR);
|
||||
$conf->entity = $savcurrententity;
|
||||
$conf->setEntityValues($savcurrententity);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -1316,11 +1316,11 @@ class Cronjob extends CommonObject
|
||||
$result = $this->update($user); // This include begin/commit
|
||||
if ($result < 0) {
|
||||
dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR);
|
||||
$conf->entity = $savcurrententity;
|
||||
$conf->setEntityValues($savcurrententity);
|
||||
return -1;
|
||||
}
|
||||
|
||||
$conf->entity = $savcurrententity;
|
||||
$conf->setEntityValues($savcurrententity);
|
||||
return $error ?-1 : 1;
|
||||
}
|
||||
|
||||
|
||||
@ -837,6 +837,10 @@ if ($action == 'create') {
|
||||
$note_private = (!empty($objectsrc->note) ? $objectsrc->note : (!empty($objectsrc->note_private) ? $objectsrc->note_private : GETPOST('note_private', 'restricthtml')));
|
||||
$note_public = (!empty($objectsrc->note_public) ? $objectsrc->note_public : GETPOST('note_public', 'restricthtml'));
|
||||
|
||||
// Replicate extrafields
|
||||
$objectsrc->fetch_optionals();
|
||||
$object->array_options = $objectsrc->array_options;
|
||||
|
||||
// Object source contacts list
|
||||
$srccontactslist = $objectsrc->liste_contact(-1, 'external', 1);
|
||||
}
|
||||
|
||||
@ -2274,7 +2274,6 @@ class CommandeFournisseur extends CommonOrder
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
/**
|
||||
* Set a delivery in database for this supplier order
|
||||
|
||||
@ -554,14 +554,12 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
|
||||
print '<td class="right">'.$langs->trans('MulticurrencyAmountTTC').'</td>';
|
||||
print '<td class="right">'.$langs->trans('MulticurrencyAlreadyPaid').'</td>';
|
||||
print '<td class="right">'.$langs->trans('MulticurrencyRemainderToPay').'</td>';
|
||||
print '<td class="center">'.$langs->trans('MulticurrencyPaymentAmount').'</td>';
|
||||
}
|
||||
print '<td class="right">'.$langs->trans('AmountTTC').'</td>';
|
||||
print '<td class="right">'.$langs->trans('AlreadyPaid').'</td>';
|
||||
print '<td class="right">'.$langs->trans('RemainderToPay').'</td>';
|
||||
print '<td class="center">'.$langs->trans('PaymentAmount').'</td>';
|
||||
if (!empty($conf->multicurrency->enabled)) {
|
||||
print '<td class="center">'.$langs->trans('MulticurrencyPaymentAmount').'</td>';
|
||||
}
|
||||
print '</tr>';
|
||||
|
||||
$total = 0;
|
||||
@ -656,6 +654,24 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
|
||||
print price($sign * $multicurrency_remaintopay);
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
print '<td class="right">';
|
||||
// Add remind multicurrency amount
|
||||
$namef = 'multicurrency_amount_'.$objp->facid;
|
||||
$nameRemain = 'multicurrency_remain_'.$objp->facid;
|
||||
if ($objp->multicurrency_code && $objp->multicurrency_code != $conf->currency) {
|
||||
if ($action != 'add_paiement') {
|
||||
if (!empty($conf->use_javascript_ajax)) {
|
||||
print img_picto("Auto fill", 'rightarrow', "class='AutoFillAmout' data-rowname='".$namef."' data-value='".($sign * $multicurrency_remaintopay)."'");
|
||||
}
|
||||
print '<input type=hidden class="multicurrency_remain" name="'.$nameRemain.'" value="'.$multicurrency_remaintopay.'">';
|
||||
print '<input type="text" size="8" class="multicurrency_amount" name="'.$namef.'" value="'.$_POST[$namef].'">';
|
||||
} else {
|
||||
print '<input type="text" size="8" name="'.$namef.'_disabled" value="'.$_POST[$namef].'" disabled>';
|
||||
print '<input type="hidden" name="'.$namef.'" value="'.$_POST[$namef].'">';
|
||||
}
|
||||
}
|
||||
print "</td>";
|
||||
}
|
||||
|
||||
print '<td class="right">'.price($sign * $objp->total_ttc).'</td>';
|
||||
@ -689,29 +705,6 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
|
||||
}
|
||||
print "</td>";
|
||||
|
||||
// Multicurrency Price
|
||||
if (!empty($conf->multicurrency->enabled)) {
|
||||
print '<td class="right">';
|
||||
|
||||
// Add remind multicurrency amount
|
||||
$namef = 'multicurrency_amount_'.$objp->facid;
|
||||
$nameRemain = 'multicurrency_remain_'.$objp->facid;
|
||||
|
||||
if ($objp->multicurrency_code && $objp->multicurrency_code != $conf->currency) {
|
||||
if ($action != 'add_paiement') {
|
||||
if (!empty($conf->use_javascript_ajax)) {
|
||||
print img_picto("Auto fill", 'rightarrow', "class='AutoFillAmout' data-rowname='".$namef."' data-value='".($sign * $multicurrency_remaintopay)."'");
|
||||
}
|
||||
print '<input type=hidden class="multicurrency_remain" name="'.$nameRemain.'" value="'.$multicurrency_remaintopay.'">';
|
||||
print '<input type="text" size="8" class="multicurrency_amount" name="'.$namef.'" value="'.$_POST[$namef].'">';
|
||||
} else {
|
||||
print '<input type="text" size="8" name="'.$namef.'_disabled" value="'.$_POST[$namef].'" disabled>';
|
||||
print '<input type="hidden" name="'.$namef.'" value="'.$_POST[$namef].'">';
|
||||
}
|
||||
}
|
||||
print "</td>";
|
||||
}
|
||||
|
||||
print "</tr>\n";
|
||||
$total += $objp->total_ht;
|
||||
$total_ttc += $objp->total_ttc;
|
||||
@ -729,6 +722,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
|
||||
print '<td> </td>';
|
||||
print '<td> </td>';
|
||||
print '<td> </td>';
|
||||
print '<td class="right" id="multicurrency_result" style="font-weight: bold;"></td>';
|
||||
}
|
||||
print '<td class="right"><b>'.price($sign * $total_ttc).'</b></td>';
|
||||
print '<td class="right"><b>'.price($sign * $totalrecu);
|
||||
@ -741,9 +735,6 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
|
||||
print '</b></td>';
|
||||
print '<td class="right"><b>'.price($sign * price2num($total_ttc - $totalrecu - $totalrecucreditnote - $totalrecudeposits, 'MT')).'</b></td>';
|
||||
print '<td class="center" id="result" style="font-weight: bold;"></td>'; // Autofilled
|
||||
if (!empty($conf->multicurrency->enabled)) {
|
||||
print '<td class="right" id="multicurrency_result" style="font-weight: bold;"></td>';
|
||||
}
|
||||
print "</tr>\n";
|
||||
}
|
||||
print "</table>\n";
|
||||
|
||||
@ -448,8 +448,14 @@ ALTER TABLE llx_socpeople DROP COLUMN googleplus;
|
||||
ALTER TABLE llx_socpeople DROP COLUMN youtube;
|
||||
ALTER TABLE llx_socpeople DROP COLUMN whatsapp;
|
||||
|
||||
INSERT INTO llx_c_paiement (id,code,libelle,type,active) values (100, 'KLA', 'Klarna', 1, 1);
|
||||
INSERT INTO llx_c_paiement (id,code,libelle,type,active) values (101, 'SOF', 'Sofort', 1, 1);
|
||||
INSERT INTO llx_c_paiement (id,code,libelle,type,active) values (102, 'BAN', 'Bancontact', 1, 1);
|
||||
INSERT INTO llx_c_paiement (id,code,libelle,type,active) values (103, 'IDE', 'iDeal', 1, 1);
|
||||
INSERT INTO llx_c_paiement (id,code,libelle,type,active) values (104, 'GIR', 'Giropay', 1, 1)
|
||||
INSERT INTO llx_c_paiement (id,code,libelle,type,active) values (100, 'KLA', 'Klarna', 1, 0);
|
||||
INSERT INTO llx_c_paiement (id,code,libelle,type,active) values (101, 'SOF', 'Sofort', 1, 0);
|
||||
INSERT INTO llx_c_paiement (id,code,libelle,type,active) values (102, 'BAN', 'Bancontact', 1, 0);
|
||||
INSERT INTO llx_c_paiement (id,code,libelle,type,active) values (103, 'IDE', 'iDeal', 1, 0);
|
||||
INSERT INTO llx_c_paiement (id,code,libelle,type,active) values (104, 'GIR', 'Giropay', 1, 0);
|
||||
|
||||
ALTER TABLE llx_propal ADD COLUMN online_sign_ip varchar(48);
|
||||
ALTER TABLE llx_propal ADD COLUMN online_sign_name varchar(64);
|
||||
|
||||
ALTER TABLE llx_entrepot ADD COLUMN usage integer DEFAULT 1;
|
||||
|
||||
|
||||
@ -35,9 +35,10 @@ create table llx_entrepot
|
||||
fk_pays integer DEFAULT 0,
|
||||
phone varchar(20), -- phone number
|
||||
fax varchar(20), -- fax number
|
||||
usage integer DEFAULT 1, -- 1=internal, 2=external (virtual warehouse or stock out of company)
|
||||
statut tinyint DEFAULT 1, -- 1 open, 0 close
|
||||
fk_user_author integer,
|
||||
model_pdf varchar(255),
|
||||
import_key varchar(14),
|
||||
import_key varchar(14),
|
||||
fk_parent integer DEFAULT 0
|
||||
)ENGINE=innodb;
|
||||
|
||||
@ -60,6 +60,9 @@ create table llx_propal
|
||||
fk_cond_reglement integer, -- condition de reglement (30 jours, fin de mois ...)
|
||||
fk_mode_reglement integer, -- mode de reglement (Virement, Prelevement)
|
||||
|
||||
online_sign_ip varchar(48),
|
||||
online_sign_name varchar(64),
|
||||
|
||||
note_private text,
|
||||
note_public text,
|
||||
|
||||
|
||||
@ -37,8 +37,8 @@ OtherInfo=Other information
|
||||
DeleteCptCategory=Remove accounting account from group
|
||||
ConfirmDeleteCptCategory=Are you sure you want to remove this accounting account from the accounting account group?
|
||||
JournalizationInLedgerStatus=Status of journalization
|
||||
AlreadyInGeneralLedger=Already transferred in accounting journals and ledger
|
||||
NotYetInGeneralLedger=Not yet transferred in accouting journals and ledger
|
||||
AlreadyInGeneralLedger=Already transferred to accounting journals and ledger
|
||||
NotYetInGeneralLedger=Not yet transferred to accouting journals and ledger
|
||||
GroupIsEmptyCheckSetup=Group is empty, check setup of the personalized accounting group
|
||||
DetailByAccount=Show detail by account
|
||||
AccountWithNonZeroValues=Accounts with non-zero values
|
||||
@ -298,7 +298,7 @@ NoNewRecordSaved=No more record to journalize
|
||||
ListOfProductsWithoutAccountingAccount=List of products not bound to any accounting account
|
||||
ChangeBinding=Change the binding
|
||||
Accounted=Accounted in ledger
|
||||
NotYetAccounted=Not yet accounted in the ledger
|
||||
NotYetAccounted=Not yet transferred to accounting
|
||||
ShowTutorial=Show Tutorial
|
||||
NotReconciled=Not reconciled
|
||||
WarningRecordWithoutSubledgerAreExcluded=Warning, all operations without subledger account defined are filtered and excluded from this view
|
||||
@ -329,8 +329,8 @@ ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Disable binding & transfer in accountanc
|
||||
ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Disable binding & transfer in accountancy on expense reports (expense reports will not be taken into account in accounting)
|
||||
|
||||
## Export
|
||||
NotifiedExportDate=Notified export date (modification of the entries will not be possible)
|
||||
NotifiedValidationDate=Validation of the entries (modification or deletion of the entries will not be possible)
|
||||
NotifiedExportDate=Flag exported lines as exported (modification of the lines will not be possible)
|
||||
NotifiedValidationDate=Validate the exported entries (modification or deletion of the lines will not be possible)
|
||||
ConfirmExportFile=Confirmation of the generation of the accounting export file ?
|
||||
ExportDraftJournal=Export draft journal
|
||||
Modelcsv=Model of export
|
||||
@ -343,7 +343,7 @@ Modelcsv_ciel=Export for Sage50, Ciel Compta or Compta Evo. (Format XIMPORT)
|
||||
Modelcsv_quadratus=Export for Quadratus QuadraCompta
|
||||
Modelcsv_ebp=Export for EBP
|
||||
Modelcsv_cogilog=Export for Cogilog
|
||||
Modelcsv_agiris=Export for Agiris
|
||||
Modelcsv_agiris=Export for Agiris Isacompta
|
||||
Modelcsv_LDCompta=Export for LD Compta (v9) (Test)
|
||||
Modelcsv_LDCompta10=Export for LD Compta (v10 & higher)
|
||||
Modelcsv_openconcerto=Export for OpenConcerto (Test)
|
||||
@ -351,9 +351,10 @@ Modelcsv_configurable=Export CSV Configurable
|
||||
Modelcsv_FEC=Export FEC
|
||||
Modelcsv_FEC2=Export FEC (With dates generation writing / document reversed)
|
||||
Modelcsv_Sage50_Swiss=Export for Sage 50 Switzerland
|
||||
Modelcsv_winfic=Export Winfic - eWinfic - WinSis Compta
|
||||
Modelcsv_winfic=Export for Winfic - eWinfic - WinSis Compta
|
||||
Modelcsv_Gestinumv3=Export for Gestinum (v3)
|
||||
Modelcsv_Gestinumv5Export for Gestinum (v5)
|
||||
Modelcsv_Gestinumv5=Export for Gestinum (v5)
|
||||
Modelcsv_charlemagne=Export for Aplim Charlemagne
|
||||
ChartofaccountsId=Chart of accounts Id
|
||||
|
||||
## Tools - Init accounting account on product / service
|
||||
|
||||
@ -75,7 +75,7 @@ Dictionary=Dictionaries
|
||||
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
|
||||
DisableJavascriptNote=Note: For test or debug purpose. For optimization for blind person or text browsers, you may prefer to use the setup on the profile of user
|
||||
DisableJavascriptNote=Note: For test or debug purpose only. For optimization for blind person or text browsers, you may prefer to use the setup on the profile of user
|
||||
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.
|
||||
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.
|
||||
DelaiedFullListToSelectCompany=Wait until a key is pressed before loading content of Third Parties combo list.<br>This may increase performance if you have a large number of third parties, but it is less convenient.
|
||||
@ -133,7 +133,6 @@ IdModule=Module ID
|
||||
IdPermissions=Permissions ID
|
||||
LanguageBrowserParameter=Parameter %s
|
||||
LocalisationDolibarrParameters=Localization parameters
|
||||
ClientTZ=Client Time Zone (user)
|
||||
ClientHour=Client time (user)
|
||||
OSTZ=Server OS Time Zone
|
||||
PHPTZ=PHP server Time Zone
|
||||
@ -161,7 +160,7 @@ Purge=Purge
|
||||
PurgeAreaDesc=This page allows you to delete all files generated or stored by Dolibarr (temporary files or all files in <b>%s</b> directory). Using this feature is not normally necessary. It is provided as a workaround for users whose Dolibarr is hosted by a provider that does not offer permissions to delete files generated by the web server.
|
||||
PurgeDeleteLogFile=Delete log files, including <b>%s</b> defined for Syslog module (no risk of losing data)
|
||||
PurgeDeleteTemporaryFiles=Delete all log and temporary files (no risk of losing data). Parameter can be 'tempfilesold', 'logfiles' or both 'tempfilesold+logfiles'. Note: Deletion of temporary files is done only if the temp directory was created more than 24 hours ago.
|
||||
PurgeDeleteTemporaryFilesShort=Delete log and temporary files
|
||||
PurgeDeleteTemporaryFilesShort=Delete log and temporary files (no risk of losing data)
|
||||
PurgeDeleteAllFilesInDocumentsDir=Delete all files in directory: <b>%s</b>.<br>This will delete all generated documents related to elements (third parties, invoices etc...), files uploaded into the ECM module, database backup dumps and temporary files.
|
||||
PurgeRunNow=Purge now
|
||||
PurgeNothingToDelete=No directory or files to delete.
|
||||
@ -280,6 +279,7 @@ SpaceX=Space X
|
||||
SpaceY=Space Y
|
||||
FontSize=Font size
|
||||
Content=Content
|
||||
ContentForLines=Content to display for each product or service (from variable __LINES__ of Content)
|
||||
NoticePeriod=Notice period
|
||||
NewByMonth=New by month
|
||||
Emails=Emails
|
||||
@ -375,8 +375,8 @@ 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).<br>It must be the octal value (for example, 0666 means read and write for everyone).<br>This parameter is useless on a Windows server.
|
||||
SeeWikiForAllTeam=Take a look at the Wiki page for a list of contributors and their organization
|
||||
UseACacheDelay= Delay for caching export response in seconds (0 or empty for no cache)
|
||||
DisableLinkToHelpCenter=Hide link "<b>Need help or support</b>" on login page
|
||||
DisableLinkToHelp=Hide link to online help "<b>%s</b>"
|
||||
DisableLinkToHelpCenter=Hide the link "<b>Need help or support</b>" on the login page
|
||||
DisableLinkToHelp=Hide the link to the online help "<b>%s</b>"
|
||||
AddCRIfTooLong=There is no automatic text wrapping, text that is too long will not display on documents. Please add carriage returns in the text area if needed.
|
||||
ConfirmPurge=Are you sure you want to execute this purge?<br>This will permanently delete all your data files with no way to restore them (ECM files, attached files...).
|
||||
MinLength=Minimum length
|
||||
@ -498,9 +498,10 @@ WarningPHPMail=WARNING: The setup to send emails from the application is using t
|
||||
WarningPHPMailA=- Using the server of the Email Service Provider increases the trustability of your email, so it increases the deliverablity without being flagged as SPAM
|
||||
WarningPHPMailB=- Some Email Service Providers (like Yahoo) do not allow you to send an email from another server than their own server. Your current setup uses the server of the application to send email and not the server of your email provider, so some recipients (the one compatible with the restrictive DMARC protocol), will ask your email provider if they can accept your email and some email providers (like Yahoo) may respond "no" because the server is not theirs, so few of your sent Emails may not be accepted for delivery (be careful also of your email provider's sending quota).
|
||||
WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to send emails is also interesting so all emails sent from application will also be saved into your "Sent" directory of your mailbox.
|
||||
WarningPHPMailD=If the method 'PHP Mail' is really the method you would like to use, you can remove this warning by adding the constant MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP to 1 in Home - Setup - Other.
|
||||
WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other.
|
||||
WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: <strong>%s</strong>.
|
||||
WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask you domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: <strong>%s</strong>.
|
||||
WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: <strong>%s</strong>.
|
||||
ActualMailSPFRecordFound=Actual SPF record found : %s
|
||||
ClickToShowDescription=Click to show description
|
||||
DependsOn=This module needs the module(s)
|
||||
RequiredBy=This module is required by module(s)
|
||||
@ -517,6 +518,9 @@ Field=Field
|
||||
ProductDocumentTemplates=Document templates to generate product document
|
||||
FreeLegalTextOnExpenseReports=Free legal text on expense reports
|
||||
WatermarkOnDraftExpenseReports=Watermark on draft expense reports
|
||||
ProjectIsRequiredOnExpenseReports=The project is mandatory for entering an expense report
|
||||
PrefillExpenseReportDatesWithCurrentMonth=Pre-fill start and end dates of new expense report with start and end dates of the current month
|
||||
ForceExpenseReportsLineAmountsIncludingTaxesOnly=Force the entry of expense report amounts always in amount with taxes
|
||||
AttachMainDocByDefault=Set this to 1 if you want to attach main document to email by default (if applicable)
|
||||
FilesAttachedToEmail=Attach file
|
||||
SendEmailsReminders=Send agenda reminders by emails
|
||||
@ -606,7 +610,7 @@ Module400Desc=Management of projects, leads/opportunities and/or tasks. You can
|
||||
Module410Name=Webcalendar
|
||||
Module410Desc=Webcalendar integration
|
||||
Module500Name=Taxes & Special Expenses
|
||||
Module500Desc=Management of other expenses (sale taxes, social or fiscal taxes, dividends, ...)
|
||||
Module500Desc=Management of other expenses (sales taxes, social or fiscal taxes, dividends, ...)
|
||||
Module510Name=Salaries
|
||||
Module510Desc=Record and track employee payments
|
||||
Module520Name=Loans
|
||||
@ -898,6 +902,11 @@ Permission1002=Create/modify warehouses
|
||||
Permission1003=Delete warehouses
|
||||
Permission1004=Read stock movements
|
||||
Permission1005=Create/modify stock movements
|
||||
Permission1011=View inventories
|
||||
Permission1012=Create new inventory
|
||||
Permission1014=Validate inventory
|
||||
Permission1015=Allow to change PMP value for a product
|
||||
Permission1016=Delete inventory
|
||||
Permission1101=Read delivery receipts
|
||||
Permission1102=Create/modify delivery receipts
|
||||
Permission1104=Validate delivery receipts
|
||||
@ -953,6 +962,14 @@ Permission4001=See employees
|
||||
Permission4002=Create employees
|
||||
Permission4003=Delete employees
|
||||
Permission4004=Export employees
|
||||
Permission4010=Read skill/job/position
|
||||
Permission4011=Create/modify skill/job/position
|
||||
Permission4012=Delete skill/job/position
|
||||
Permission4020=Read evaluation
|
||||
Permission4021=Create/modify evaluation
|
||||
Permission4022=Validate evaluation
|
||||
Permission4023=Delete evaluation
|
||||
Permission4030=See comparison menu
|
||||
Permission10001=Read website content
|
||||
Permission10002=Create/modify website content (html and javascript content)
|
||||
Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers.
|
||||
@ -1035,7 +1052,7 @@ DictionaryFees=Expense report - Types of expense report lines
|
||||
DictionarySendingMethods=Shipping methods
|
||||
DictionaryStaff=Number of Employees
|
||||
DictionaryAvailability=Delivery delay
|
||||
DictionaryOrderMethods=Ordering methods
|
||||
DictionaryOrderMethods=Order methods
|
||||
DictionarySource=Origin of proposals/orders
|
||||
DictionaryAccountancyCategory=Personalized groups for reports
|
||||
DictionaryAccountancysystem=Models for chart of accounts
|
||||
@ -1168,7 +1185,8 @@ DoNotSuggestPaymentMode=Do not suggest
|
||||
NoActiveBankAccountDefined=No active bank account defined
|
||||
OwnerOfBankAccount=Owner of bank account %s
|
||||
BankModuleNotActive=Bank accounts module not enabled
|
||||
ShowBugTrackLink=Define the link "<strong>%s</strong>" (empty to not display this link, 'github' for the link to the Dolibarr project or define directly an url 'https://...')
|
||||
ShowBugTrackLink=Show the link "<strong>%s</strong>"
|
||||
ShowBugTrackLinkDesc=Keep empty to not display this link, use value 'github' for the link to the Dolibarr project or define directly an url 'https://...'
|
||||
Alerts=Alerts
|
||||
DelaysOfToleranceBeforeWarning=Delay before displaying a warning alert for:
|
||||
DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element.
|
||||
@ -1218,7 +1236,7 @@ SystemAreaForAdminOnly=This area is available to administrator users only. Dolib
|
||||
CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done.
|
||||
AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information.
|
||||
AccountantFileNumber=Accountant code
|
||||
DisplayDesc=Parameters affecting the look and behaviour of Dolibarr can be modified here.
|
||||
DisplayDesc=Parameters affecting the look and presentation of the application can be modified here.
|
||||
AvailableModules=Available app/modules
|
||||
ToActivateModule=To activate modules, go on setup Area (Home->Setup->Modules).
|
||||
SessionTimeOut=Time out for session
|
||||
@ -1270,7 +1288,7 @@ SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn w
|
||||
ShowProfIdInAddress=Show professional ID with addresses
|
||||
ShowVATIntaInAddress=Hide intra-Community VAT number
|
||||
TranslationUncomplete=Partial translation
|
||||
MAIN_DISABLE_METEO=Disable meteorological view
|
||||
MAIN_DISABLE_METEO=Disable weather thumb
|
||||
MeteoStdMod=Standard mode
|
||||
MeteoStdModEnabled=Standard mode enabled
|
||||
MeteoPercentageMod=Percentage mode
|
||||
@ -1341,6 +1359,7 @@ BrowserIsKO=You are using the %s web browser. This browser is known to be a bad
|
||||
PHPModuleLoaded=PHP component %s is loaded
|
||||
PreloadOPCode=Preloaded OPCode is used
|
||||
AddRefInList=Display Customer/Vendor ref. info list (select list or combobox) and most of hyperlink.<br>Third Parties will appear with a name format of "CC12345 - SC45678 - The Big Company corp." instead of "The Big Company corp".
|
||||
AddVatInList=Display Customer/Vendor VAT number. info list (select list or combobox).
|
||||
AddAdressInList=Display Customer/Vendor adress info list (select list or combobox)<br>Third Parties will appear with a name format of "The Big Company corp. - 21 jump street 123456 Big town - USA" instead of "The Big Company corp".
|
||||
AddEmailPhoneTownInContactList=Display Contact email (or phones if not defined) and town info list (select list or combobox)<br>Contacts will appear with a name format of "Dupond Durand - dupond.durand@email.com - Paris" or "Dupond Durand - 06 07 59 65 66 - Paris" instead of "Dupond Durand".
|
||||
AskForPreferredShippingMethod=Ask for preferred shipping method for Third Parties.
|
||||
@ -1372,7 +1391,7 @@ AccountCodeManager=Options for automatic generation of customer/vendor accountin
|
||||
NotificationsDesc=Email notifications can be sent automatically for some Dolibarr events.<br>Recipients of notifications can be defined:
|
||||
NotificationsDescUser=* per user, one user at a time.
|
||||
NotificationsDescContact=* per third-party contacts (customers or vendors), one contact at a time.
|
||||
NotificationsDescGlobal=* or by setting global email addresses in this setup page.
|
||||
NotificationsDescGlobal=* or by setting global email addresses in the setup page of the module.
|
||||
ModelModules=Document Templates
|
||||
DocumentModelOdt=Generate documents from OpenDocument templates (.ODT / .ODS files from LibreOffice, OpenOffice, KOffice, TextEdit,...)
|
||||
WatermarkOnDraft=Watermark on draft document
|
||||
@ -1421,7 +1440,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order
|
||||
##### Suppliers Orders #####
|
||||
BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order
|
||||
##### Orders #####
|
||||
SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sale order by default if not defined on the order
|
||||
SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sales order by default if not defined on the order
|
||||
OrdersSetup=Sales Orders management setup
|
||||
OrdersNumberingModules=Orders numbering models
|
||||
OrdersModelModule=Order documents models
|
||||
@ -1472,10 +1491,10 @@ LDAPSynchronizeMembersTypes=Organization of foundation's members types in LDAP
|
||||
LDAPPrimaryServer=Primary server
|
||||
LDAPSecondaryServer=Secondary server
|
||||
LDAPServerPort=Server port
|
||||
LDAPServerPortExample=Default port: 389
|
||||
LDAPServerPortExample=Standard or StartTLS: 389, LDAPs: 636
|
||||
LDAPServerProtocolVersion=Protocol version
|
||||
LDAPServerUseTLS=Use TLS
|
||||
LDAPServerUseTLSExample=Your LDAP server use TLS
|
||||
LDAPServerUseTLSExample=Your LDAP server use StartTLS
|
||||
LDAPServerDn=Server DN
|
||||
LDAPAdminDn=Administrator DN
|
||||
LDAPAdminDnExample=Complete DN (ex: cn=admin,dc=example,dc=com or cn=Administrator,cn=Users,dc=example,dc=com for active directory)
|
||||
@ -1625,8 +1644,7 @@ ProductSetup=Products module setup
|
||||
ServiceSetup=Services module setup
|
||||
ProductServiceSetup=Products and Services modules setup
|
||||
NumberOfProductShowInSelect=Maximum number of products to show in combo select lists (0=no limit)
|
||||
ViewProductDescInFormAbility=Display product descriptions in forms (otherwise shown in a tooltip popup)
|
||||
DoNotAddProductDescAtAddLines=Do not add product description (from product card) on submit add lines on forms
|
||||
ViewProductDescInFormAbility=Display product descriptions in lines of items (otherwise show description in a tooltip popup)
|
||||
OnProductSelectAddProductDesc=How to use the description of the products when adding a product as a line of a document
|
||||
AutoFillFormFieldBeforeSubmit=Auto fill the description input field with the description of product
|
||||
DoNotAutofillButAutoConcat=Do not autofill the input field with description of product. Description of the product will be concatenated to the entered description automatically.
|
||||
@ -1690,6 +1708,8 @@ MailingDelay=Seconds to wait after sending next message
|
||||
NotificationSetup=Email Notification module setup
|
||||
NotificationEMailFrom=Sender email (From) for emails sent by the Notifications module
|
||||
FixedEmailTarget=Recipient
|
||||
NotificationDisableConfirmMessageFix=Disable notification info in confirm message for fix notification
|
||||
NotificationDisableConfirmMessageUser=Disable notification info in confirm message for user notification
|
||||
##### Sendings #####
|
||||
SendingsSetup=Shipping module setup
|
||||
SendingsReceiptModel=Sending receipt model
|
||||
@ -1705,8 +1725,10 @@ 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
|
||||
FCKeditorForNotePublic=WYSIWIG creation/edition of the field public notes of elements
|
||||
FCKeditorForNotePrivate=WYSIWIG creation/edition of the field private notes of elements
|
||||
FCKeditorForCompany=WYSIWIG creation/edition of the field description of elements (except products/services)
|
||||
FCKeditorForProduct=WYSIWIG creation/edition of the field description of products/services
|
||||
FCKeditorForProductDetails=WYSIWIG creation/edition of products details lines for all entities (proposals, orders, invoices, etc...). <span class="warning">Warning: Using this option for this case is seriously not recommended as it can create problems with special characters and page formatting when building PDF files.</span>
|
||||
FCKeditorForMailing= WYSIWIG creation/edition for mass eMailings (Tools->eMailing)
|
||||
FCKeditorForUserSignature=WYSIWIG creation/edition of user signature
|
||||
@ -1915,11 +1937,11 @@ UnicodeCurrency=Enter here between braces, list of byte number that represent th
|
||||
ColorFormat=The RGB color is in HEX format, eg: FF0000
|
||||
PictoHelp=Icon name in dolibarr format ('image.png' if into the current theme directory, 'image.png@nom_du_module' if into the directory /img/ of a module)
|
||||
PositionIntoComboList=Position of line into combo lists
|
||||
SellTaxRate=Sale tax rate
|
||||
SellTaxRate=Sales tax rate
|
||||
RecuperableOnly=Yes for VAT "Not Perceived but Recoverable" dedicated for some state in France. Keep value to "No" in all other cases.
|
||||
UrlTrackingDesc=If the provider or transport service offers a page or web site to check the status of your shipments, you may enter it here. You can use the key {TRACKID} in the URL parameters so the system will replace it with the tracking number the user entered into the shipment card.
|
||||
OpportunityPercent=When you create a lead, you will define an estimated amount of project/lead. According to status of the lead, this amount may be multiplied by this rate to evaluate a total amount all your leads may generate. Value is a percentage (between 0 and 100).
|
||||
TemplateForElement=This template record is dedicated to which element
|
||||
TemplateForElement=This mail template is related to what type of object? An email template is available only when using the "Send Email" button from the related object.
|
||||
TypeOfTemplate=Type of template
|
||||
TemplateIsVisibleByOwnerOnly=Template is visible to owner only
|
||||
VisibleEverywhere=Visible everywhere
|
||||
@ -1994,7 +2016,12 @@ MAIN_PDF_MARGIN_RIGHT=Right margin on PDF
|
||||
MAIN_PDF_MARGIN_TOP=Top margin on PDF
|
||||
MAIN_PDF_MARGIN_BOTTOM=Bottom margin on PDF
|
||||
MAIN_DOCUMENTS_LOGO_HEIGHT=Height for logo on PDF
|
||||
MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Add picture on proposal line
|
||||
MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Add column for picture on proposal lines
|
||||
MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Width of the column if a picture is added on lines
|
||||
MAIN_PDF_NO_SENDER_FRAME=Hide borders on sender address frame
|
||||
MAIN_PDF_NO_RECIPENT_FRAME=Hide borders on recipent address frame
|
||||
MAIN_PDF_HIDE_CUSTOMER_CODE=Hide customer code
|
||||
MAIN_PDF_HIDE_SENDER_NAME=Hide sender/company name in address block
|
||||
PROPOSAL_PDF_HIDE_PAYMENTTERM=Hide payments conditions
|
||||
PROPOSAL_PDF_HIDE_PAYMENTMODE=Hide payment mode
|
||||
MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=Add electronic sign in PDF
|
||||
@ -2114,6 +2141,7 @@ EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax
|
||||
PDF_SHOW_PROJECT=Show project on document
|
||||
ShowProjectLabel=Project Label
|
||||
PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF.
|
||||
PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF
|
||||
FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book.
|
||||
RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard
|
||||
JumpToBoxes=Jump to Setup -> Widgets
|
||||
@ -2145,7 +2173,7 @@ NoWritableFilesFoundIntoRootDir=No writable files or directories of the common p
|
||||
RecommendedValueIs=Recommended: %s
|
||||
Recommended=Recommended
|
||||
NotRecommended=Not recommended
|
||||
ARestrictedPath=A restricted path
|
||||
ARestrictedPath=Some restricted path
|
||||
CheckForModuleUpdate=Check for external modules updates
|
||||
CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available.
|
||||
ModuleUpdateAvailable=An update is available
|
||||
@ -2159,3 +2187,25 @@ APIsAreNotEnabled=APIs modules are not enabled
|
||||
YouShouldSetThisToOff=You should set this to 0 or off
|
||||
InstallAndUpgradeLockedBy=Install and upgrades are locked by the file <b>%s</b>
|
||||
OldImplementation=Old implementation
|
||||
PDF_SHOW_LINK_TO_ONLINE_PAYMENT=If some online payment modules are enabled (Paypal, Stripe, ...), add a link on the PDF to make the online payment
|
||||
DashboardDisableGlobal=Disable globally all the thumbs of open objects
|
||||
BoxstatsDisableGlobal=Disable totally box statistics
|
||||
DashboardDisableBlocks=Thumbs of open objects (to process or late) on main dashboard
|
||||
DashboardDisableBlockAgenda=Disable the thumb for agenda
|
||||
DashboardDisableBlockProject=Disable the thumb for projects
|
||||
DashboardDisableBlockCustomer=Disable the thumb for customers
|
||||
DashboardDisableBlockSupplier=Disable the thumb for suppliers
|
||||
DashboardDisableBlockContract=Disable the thumb for contracts
|
||||
DashboardDisableBlockTicket=Disable the thumb for tickets
|
||||
DashboardDisableBlockBank=Disable the thumb for banks
|
||||
DashboardDisableBlockAdherent=Disable the thumb for memberships
|
||||
DashboardDisableBlockExpenseReport=Disable the thumb for expense reports
|
||||
DashboardDisableBlockHoliday=Disable the thumb for leaves
|
||||
EnabledCondition=Condition to have field enabled (if not enabled, visibility will always be off)
|
||||
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax
|
||||
IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax
|
||||
LanguageAndPresentation=Language and presentation
|
||||
SkinAndColors=Skin and colors
|
||||
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax
|
||||
IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax
|
||||
PDF_USE_1A=Generate PDF with PDF/A-1b format
|
||||
|
||||
@ -64,6 +64,7 @@ ShipmentClassifyClosedInDolibarr=Shipment %s classified billed
|
||||
ShipmentUnClassifyCloseddInDolibarr=Shipment %s classified re-open
|
||||
ShipmentBackToDraftInDolibarr=Shipment %s go back to draft status
|
||||
ShipmentDeletedInDolibarr=Shipment %s deleted
|
||||
ShipmentCanceledInDolibarr=Shipment %s canceled
|
||||
ReceptionValidatedInDolibarr=Reception %s validated
|
||||
OrderCreatedInDolibarr=Order %s created
|
||||
OrderValidatedInDolibarr=Order %s validated
|
||||
@ -170,3 +171,4 @@ ReminderType=Callback type
|
||||
AddReminder=Create an automatic reminder notification for this event
|
||||
ErrorReminderActionCommCreation=Error creating the reminder notification for this event
|
||||
BrowserPush=Browser Popup Notification
|
||||
ActiveByDefault=Enabled by default
|
||||
|
||||
@ -182,3 +182,4 @@ BankColorizeMovementName2=Background color for credit movement
|
||||
IfYouDontReconcileDisableProperty=If you don't make the bank reconciliations on some bank accounts, disable the property "%s" on them to remove this warning.
|
||||
NoBankAccountDefined=No bank account defined
|
||||
NoRecordFoundIBankcAccount=No record found in bank account. Commonly, this occurs when a record has been deleted manually from the list of transaction in the bank account (for example during a reconciliation of the bank account). Another reason is that the payment was recorded when the module "%s" was disabled.
|
||||
AlreadyOneBankAccount=Already one bank account defined
|
||||
|
||||
@ -192,6 +192,7 @@ ConfirmClassifyPaidPartiallyReasonDiscount=Remaining unpaid <b>(%s %s)</b> is a
|
||||
ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Remaining unpaid <b>(%s %s)</b> is a discount granted because payment was made before term. I accept to lose the VAT on this discount.
|
||||
ConfirmClassifyPaidPartiallyReasonDiscountVat=Remaining unpaid <b>(%s %s)</b> is a discount granted because payment was made before term. I recover the VAT on this discount without a credit note.
|
||||
ConfirmClassifyPaidPartiallyReasonBadCustomer=Bad customer
|
||||
ConfirmClassifyPaidPartiallyReasonBankCharge=Deduction by bank (intermediary bank fees)
|
||||
ConfirmClassifyPaidPartiallyReasonProductReturned=Products partially returned
|
||||
ConfirmClassifyPaidPartiallyReasonOther=Amount abandoned for other reason
|
||||
ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=This choice is possible if your invoice has been provided with suitable comments. (Example «Only the tax corresponding to the price that has been actually paid gives rights to deduction»)
|
||||
@ -199,6 +200,7 @@ ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=In some countries, this choice
|
||||
ConfirmClassifyPaidPartiallyReasonAvoirDesc=Use this choice if all other does not suit
|
||||
ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=A <b>bad customer</b> is a customer that refuses to pay his debt.
|
||||
ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=This choice is used when payment is not complete because some of products were returned
|
||||
ConfirmClassifyPaidPartiallyReasonBankChargeDesc=The unpaid amount is <b>intermediary bank fees</b>, deducted directly from the <b>correct amount</b> paid by the Customer.
|
||||
ConfirmClassifyPaidPartiallyReasonOtherDesc=Use this choice if all others are not suitable, for example in following situation:<br>- payment not complete because some products were shipped back<br>- amount claimed too important because a discount was forgotten<br>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.
|
||||
@ -234,16 +236,24 @@ AlreadyPaidBack=Already paid back
|
||||
AlreadyPaidNoCreditNotesNoDeposits=Already paid (without credit notes and down payments)
|
||||
Abandoned=Abandoned
|
||||
RemainderToPay=Remaining unpaid
|
||||
RemainderToPayMulticurrency=Remaining unpaid, original currency
|
||||
RemainderToTake=Remaining amount to take
|
||||
RemainderToTakeMulticurrency=Remaining amount to take, original currency
|
||||
RemainderToPayBack=Remaining amount to refund
|
||||
RemainderToPayBackMulticurrency=Remaining amount to refund, original currency
|
||||
NegativeIfExcessRefunded=negative if excess refunded
|
||||
Rest=Pending
|
||||
AmountExpected=Amount claimed
|
||||
ExcessReceived=Excess received
|
||||
ExcessReceivedMulticurrency=Excess received, original currency
|
||||
NegativeIfExcessReceived=negative if excess received
|
||||
ExcessPaid=Excess paid
|
||||
ExcessPaidMulticurrency=Excess paid, original currency
|
||||
EscompteOffered=Discount offered (payment before term)
|
||||
EscompteOfferedShort=Discount
|
||||
SendBillRef=Submission of invoice %s
|
||||
SendReminderBillRef=Submission of invoice %s (reminder)
|
||||
SendPaymentReceipt=Submission of payment receipt %s
|
||||
NoDraftBills=No draft invoices
|
||||
NoOtherDraftBills=No other draft invoices
|
||||
NoDraftInvoices=No draft invoices
|
||||
@ -260,6 +270,7 @@ DateInvoice=Invoice date
|
||||
DatePointOfTax=Point of tax
|
||||
NoInvoice=No invoice
|
||||
NoOpenInvoice=No open invoice
|
||||
NbOfOpenInvoices=Number of open invoices
|
||||
ClassifyBill=Classify invoice
|
||||
SupplierBillsToPay=Unpaid vendor invoices
|
||||
CustomerBillsUnpaid=Unpaid customer invoices
|
||||
@ -570,7 +581,7 @@ ToCreateARecurringInvoiceGene=To generate future invoices regularly and manually
|
||||
ToCreateARecurringInvoiceGeneAuto=If you need to have such invoices generated automatically, ask your administrator to enable and setup module <strong>%s</strong>. Note that both methods (manual and automatic) can be used together with no risk of duplication.
|
||||
DeleteRepeatableInvoice=Delete template invoice
|
||||
ConfirmDeleteRepeatableInvoice=Are your sure you want to delete the template invoice?
|
||||
CreateOneBillByThird=Create one invoice per third party (otherwise, one invoice per order)
|
||||
CreateOneBillByThird=Create one invoice per third party (otherwise, one invoice per selected object)
|
||||
BillCreated=%s invoice(s) generated
|
||||
BillXCreated=Invoice %s generated
|
||||
StatusOfGeneratedDocuments=Status of document generation
|
||||
@ -591,3 +602,5 @@ SituationTotalRayToRest=Remainder to pay without taxe
|
||||
PDFSituationTitle=Situation n° %d
|
||||
SituationTotalProgress=Total progress %d %%
|
||||
SearchUnpaidInvoicesWithDueDate=Search unpaid invoices with a due date = %s
|
||||
NoPaymentAvailable=No payment available for %s
|
||||
PaymentRegisteredAndInvoiceSetToPaid=Payment registered and invoice %s set to paid
|
||||
|
||||
@ -19,3 +19,4 @@ UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external/absolute link (https
|
||||
ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choose if the linked page should open in the current tab or a new tab
|
||||
BookmarksManagement=Bookmarks management
|
||||
BookmarksMenuShortCut=Ctrl + shift + m
|
||||
NoBookmarks=No bookmarks defined
|
||||
|
||||
@ -42,7 +42,7 @@ AddTable=Add table
|
||||
Place=Place
|
||||
TakeposConnectorNecesary='TakePOS Connector' required
|
||||
OrderPrinters=Add a button to send the order to some given printers, without payment (for example to send an order to a kitchen)
|
||||
NotAvailableWithBrowserPrinter=Not available when printer for receipt is set to browser:
|
||||
NotAvailableWithBrowserPrinter=Not available when printer for receipt is set to browser
|
||||
SearchProduct=Search product
|
||||
Receipt=Receipt
|
||||
Header=Header
|
||||
@ -129,3 +129,8 @@ WeighingScale=Weighing scale
|
||||
ShowPriceHT = Display the column with the price excluding tax (on screen)
|
||||
ShowPriceHTOnReceipt = Display the column with the price excluding tax (on the receipt)
|
||||
CustomerDisplay=Customer display
|
||||
SplitSale=Split sale
|
||||
PrintWithoutDetailsButton=Add "Print without details" button
|
||||
PrintWithoutDetailsLabelDefault=Line label by default on printing without details
|
||||
PrintWithoutDetails=Print without details
|
||||
YearNotDefined=Year is not defined
|
||||
|
||||
@ -96,4 +96,5 @@ ChooseCategory=Choose category
|
||||
StocksCategoriesArea=Warehouse Categories
|
||||
ActionCommCategoriesArea=Event Categories
|
||||
WebsitePagesCategoriesArea=Page-Container Categories
|
||||
KnowledgemanagementsCategoriesArea=KM article Categories
|
||||
UseOrOperatorForCategories=Use 'OR' operator for categories
|
||||
|
||||
@ -80,7 +80,7 @@ Web=Web
|
||||
Poste= Position
|
||||
DefaultLang=Default language
|
||||
VATIsUsed=Sales tax used
|
||||
VATIsUsedWhenSelling=This defines if this third party includes a sale tax or not when it makes an invoice to its own customers
|
||||
VATIsUsedWhenSelling=This defines if this third party includes a sales tax or not when it makes an invoice to its own customers
|
||||
VATIsNotUsed=Sales tax is not used
|
||||
CopyAddressFromSoc=Copy address from third-party details
|
||||
ThirdpartyNotCustomerNotSupplierSoNoRef=Third party neither customer nor vendor, no available referring objects
|
||||
@ -271,6 +271,12 @@ ProfId3RU=Prof Id 3 (KPP)
|
||||
ProfId4RU=Prof Id 4 (OKPO)
|
||||
ProfId5RU=-
|
||||
ProfId6RU=-
|
||||
ProfId1UA=Prof Id 1 (EDRPOU)
|
||||
ProfId2UA=Prof Id 2 (DRFO)
|
||||
ProfId3UA=Prof Id 3 (INN)
|
||||
ProfId4UA=Prof Id 4 (Certificate)
|
||||
ProfId5UA=Prof Id 5 (RNOKPP)
|
||||
ProfId6UA=Prof Id 6 (TRDPAU)
|
||||
ProfId1DZ=RC
|
||||
ProfId2DZ=Art.
|
||||
ProfId3DZ=NIF
|
||||
|
||||
@ -188,25 +188,25 @@ LT1ReportByCustomers=Report tax 2 by third party
|
||||
LT2ReportByCustomers=Report tax 3 by third party
|
||||
LT1ReportByCustomersES=Report by third party RE
|
||||
LT2ReportByCustomersES=Report by third party IRPF
|
||||
VATReport=Sale tax report
|
||||
VATReportByPeriods=Sale tax report by period
|
||||
VATReportByMonth=Sale tax report by month
|
||||
VATReportByRates=Sale tax report by rates
|
||||
VATReportByThirdParties=Sale tax report by third parties
|
||||
VATReportByCustomers=Sale tax report by customer
|
||||
VATReport=Sales tax report
|
||||
VATReportByPeriods=Sales tax report by period
|
||||
VATReportByMonth=Sales tax report by month
|
||||
VATReportByRates=Sales tax report by rate
|
||||
VATReportByThirdParties=Sales tax report by third party
|
||||
VATReportByCustomers=Sales tax report by customer
|
||||
VATReportByCustomersInInputOutputMode=Report by the customer VAT collected and paid
|
||||
VATReportByQuartersInInputOutputMode=Report by Sale tax rate of the tax collected and paid
|
||||
VATReportByQuartersInInputOutputMode=Report by Sales tax rate of the tax collected and paid
|
||||
VATReportShowByRateDetails=Show details of this rate
|
||||
LT1ReportByQuarters=Report tax 2 by rate
|
||||
LT2ReportByQuarters=Report tax 3 by rate
|
||||
LT1ReportByQuartersES=Report by RE rate
|
||||
LT2ReportByQuartersES=Report by IRPF rate
|
||||
SeeVATReportInInputOutputMode=See report <b>%sVAT encasement%s</b> for a standard calculation
|
||||
SeeVATReportInDueDebtMode=See report <b>%sVAT on flow%s</b> 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, the report includes the VAT received or issued on the basis of the date of payment.
|
||||
RulesVATDueServices=- For services, the report includes VAT invoices due, paid or not, based on the invoice date.
|
||||
RulesVATDueProducts=- For material assets, the report includes the VAT invoices, based on the invoice date.
|
||||
SeeVATReportInInputOutputMode=See report <b>%sVAT collection%s</b> for a standard calculation
|
||||
SeeVATReportInDueDebtMode=See report <b>%sVAT on debit%s</b> for a calculation with an option on the invoicing
|
||||
RulesVATInServices=- For services, the report includes the VAT of payments actually received or paid on the basis of the date of payment.
|
||||
RulesVATInProducts=- For material assets, the report includes the VAT on the basis of the date of payment.
|
||||
RulesVATDueServices=- For services, the report includes VAT of due invoices, paid or not, based on the invoice date.
|
||||
RulesVATDueProducts=- For material assets, the report includes the VAT of due invoices, based on the invoice date.
|
||||
OptionVatInfoModuleComptabilite=Note: For material assets, it should use the date of delivery to be more fair.
|
||||
ThisIsAnEstimatedValue=This is a preview, based on business events and not from the final ledger table, so final results may differ from this preview values
|
||||
PercentOfInvoice=%%/invoice
|
||||
@ -286,9 +286,12 @@ ReportPurchaseTurnover=Purchase turnover invoiced
|
||||
ReportPurchaseTurnoverCollected=Purchase turnover collected
|
||||
IncludeVarpaysInResults = Include various payments in reports
|
||||
IncludeLoansInResults = Include loans in reports
|
||||
InvoiceLate30Days = Invoices late > 30 days
|
||||
InvoiceLate15Days = Invoices late > 15 days
|
||||
InvoiceLateMinus15Days = Invoices late
|
||||
InvoiceNotLate = To be collected < 15 days
|
||||
InvoiceNotLate15Days = To be collected in 15 days
|
||||
InvoiceNotLate30Days = To be collected in 30 days
|
||||
InvoiceLate30Days = Invoices late (> 30 days)
|
||||
InvoiceLate15Days = Invoices late (15 to 30 days)
|
||||
InvoiceLateMinus15Days = Invoices late (< 15 days)
|
||||
InvoiceNotLate = To be collected (< 15 days)
|
||||
InvoiceNotLate15Days = To be collected (15 to 30 days)
|
||||
InvoiceNotLate30Days = To be collected (> 30 days)
|
||||
InvoiceToPay=To pay (< 15 days)
|
||||
InvoiceToPay15Days=To pay (15 to 30 days)
|
||||
InvoiceToPay30Days=To pay (> 30 days)
|
||||
|
||||
@ -36,7 +36,7 @@ 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 <b>%s</b>?
|
||||
ConfirmActivateAllOnContract=This will open all services (not yet active). Are you sure you want to open all services?
|
||||
ConfirmCloseContract=This will close all services (active or not). Are you sure you want to close this contract?
|
||||
ConfirmCloseContract=This will close all services (expired or not). Are you sure you want to close this contract?
|
||||
ConfirmCloseService=Are you sure you want to close this service with date <b>%s</b>?
|
||||
ValidateAContract=Validate a contract
|
||||
ActivateService=Activate service
|
||||
|
||||
@ -45,3 +45,5 @@ GenerateImgWebp=Duplicate all images with another version with .webp format
|
||||
ConfirmGenerateImgWebp=If you confirm, you will generate an image in .webp format for all images currently into this folder (subfolders are not included)...
|
||||
ConfirmImgWebpCreation=Confirm all images duplication
|
||||
SucessConvertImgWebp=Images successfully duplicated
|
||||
ECMDirName=Dir name
|
||||
ECMParentDirectory=Parent directory
|
||||
|
||||
@ -83,7 +83,7 @@ ErrorCantSaveADoneUserWithZeroPercentage=Can't save an action with "status not s
|
||||
ErrorRefAlreadyExists=Reference <b>%s</b> already exists.
|
||||
ErrorPleaseTypeBankTransactionReportName=Please enter the bank statement name where the entry has to be reported (Format YYYYMM or YYYYMMDD)
|
||||
ErrorRecordHasChildren=Failed to delete record since it has some child records.
|
||||
ErrorRecordHasAtLeastOneChildOfType=Object has at least one child of type %s
|
||||
ErrorRecordHasAtLeastOneChildOfType=Object %s has at least one child of type %s
|
||||
ErrorRecordIsUsedCantDelete=Can't delete record. It is already used or included into another 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
|
||||
@ -265,6 +265,12 @@ ErrorAPercentIsRequired=Error, please fill in the percentage correctly
|
||||
ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of account
|
||||
ErrorFailedToFindEmailTemplate=Failed to find template with code name %s
|
||||
ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price.
|
||||
ErrorActionCommPropertyUserowneridNotDefined=User's owner is required
|
||||
ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary
|
||||
CheckVersionFail=Version check fail
|
||||
ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it
|
||||
ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify.
|
||||
ErrorIsNotADraft=%s is not a draft
|
||||
|
||||
# Warnings
|
||||
WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup.
|
||||
@ -298,8 +304,24 @@ WarningTheHiddenOptionIsOn=Warning, the hidden option <b>%s</b> is on.
|
||||
WarningCreateSubAccounts=Warning, you can't create directly a sub account, you must create a third party or an user and assign them an accounting code to find them in this list
|
||||
WarningAvailableOnlyForHTTPSServers=Available only if using HTTPS secured connection.
|
||||
WarningModuleXDisabledSoYouMayMissEventHere=Module %s has not been enabled. So you may miss a lot of event here.
|
||||
ErrorActionCommPropertyUserowneridNotDefined=User's owner is required
|
||||
ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary
|
||||
CheckVersionFail=Version check fail
|
||||
ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it
|
||||
ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify.
|
||||
WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead.
|
||||
|
||||
# Validate
|
||||
RequireValidValue = Value not valid
|
||||
RequireAtLeastXString = Requires at least %s character(s)
|
||||
RequireXStringMax = Requires %s character(s) max
|
||||
RequireAtLeastXDigits = Requires at least %s digit(s)
|
||||
RequireXDigitsMax = Requires %s digit(s) max
|
||||
RequireValidEmail = Email address is not valid
|
||||
RequireMaxLength = Length must be less than %s chars
|
||||
RequireMinLength = Length must be more than %s char(s)
|
||||
RequireValidUrl = Require valid URL
|
||||
RequireValidDate = Require a valid date
|
||||
RequireANotEmptyValue = Is required
|
||||
RequireValidDuration = Require a valid duration
|
||||
RequireValidExistingElement = Require an existing value
|
||||
RequireValidBool = Require a valid boolean
|
||||
BadSetupOfField = Error bad setup of field
|
||||
BadSetupOfFieldClassNotFoundForValidation = Error bad setup of field : Class not found for validation
|
||||
BadSetupOfFieldFileNotFound = Error bad setup of field : File not found for inclusion
|
||||
BadSetupOfFieldFetchNotCallable = Error bad setup of field : Fetch not callable on class
|
||||
|
||||
@ -19,18 +19,22 @@
|
||||
#
|
||||
ModuleEventOrganizationName = Event Organization
|
||||
EventOrganizationDescription = Event Organization through Module Project
|
||||
EventOrganizationDescriptionLong= Manage Event organization for conference, attendees, speaker, and attendees, with public subcription page
|
||||
EventOrganizationDescriptionLong= Manage the organization of an event (show, conferences, attendees or speakers, with public pages for suggestion, vote or registration)
|
||||
#
|
||||
# Menu
|
||||
#
|
||||
EventOrganizationMenuLeft = Organized events
|
||||
EventOrganizationConferenceOrBoothMenuLeft = Conference Or Booth
|
||||
|
||||
PaymentEvent=Payment of event
|
||||
|
||||
#
|
||||
# Admin page
|
||||
#
|
||||
EventOrganizationSetup = Event Organization setup
|
||||
Settings = Settings
|
||||
NewRegistration=Registration
|
||||
EventOrganizationSetup=Event Organization setup
|
||||
EventOrganization=Event organization
|
||||
Settings=Settings
|
||||
EventOrganizationSetupPage = Event Organization setup page
|
||||
EVENTORGANIZATION_TASK_LABEL = Label of tasks to create automatically when project is validated
|
||||
EVENTORGANIZATION_TASK_LABELTooltip = When you validate an organized event, some tasks can be automatically created in the project<br><br>For example: <br>Send Call for Conference<br>Send Call for Booth<br>Receive call for conferences<br>Receive call for Booth<br>Open subscriptions to events for attendees<br>Send remind of event to speakers<br>Send remind of event to Booth hoster<br>Send remind of event to attendees
|
||||
@ -38,8 +42,8 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom
|
||||
EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth
|
||||
EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference.
|
||||
EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth.
|
||||
EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a subscription to a booth has been paid.
|
||||
EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a subscription to an event has been paid.
|
||||
EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid.
|
||||
EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid.
|
||||
EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes
|
||||
EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers
|
||||
EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category
|
||||
@ -49,11 +53,11 @@ EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in att
|
||||
# Object
|
||||
#
|
||||
EventOrganizationConfOrBooth= Conference Or Booth
|
||||
ManageOrganizeEvent = Manage event organisation
|
||||
ManageOrganizeEvent = Manage the organization of an event
|
||||
ConferenceOrBooth = Conference Or Booth
|
||||
ConferenceOrBoothTab = Conference Or Booth
|
||||
AmountOfSubscriptionPaid = Amount of subscription paid
|
||||
DateSubscription = Date of subscription
|
||||
AmountPaid = Amount paid
|
||||
DateOfRegistration = Date of registration
|
||||
ConferenceOrBoothAttendee = Conference Or Booth Attendee
|
||||
|
||||
#
|
||||
@ -63,25 +67,26 @@ YourOrganizationEventConfRequestWasReceived = Your request for conference was re
|
||||
YourOrganizationEventBoothRequestWasReceived = Your request for booth was received
|
||||
EventOrganizationEmailAskConf = Request for conference
|
||||
EventOrganizationEmailAskBooth = Request for booth
|
||||
EventOrganizationEmailSubsBooth = Subscription for booth
|
||||
EventOrganizationEmailSubsEvent = Subscription for an event
|
||||
EventOrganizationEmailBoothPayment = Payment of your booth
|
||||
EventOrganizationEmailRegistrationPayment = Registration for an event
|
||||
EventOrganizationMassEmailAttendees = Communication to attendees
|
||||
EventOrganizationMassEmailSpeakers = Communication to speakers
|
||||
|
||||
#
|
||||
# Event
|
||||
#
|
||||
AllowUnknownPeopleSuggestConf=Allow unknown people to suggest conferences
|
||||
AllowUnknownPeopleSuggestConfHelp=Allow unknown people to suggest conferences
|
||||
AllowUnknownPeopleSuggestBooth=Allow unknown people to suggest booth
|
||||
AllowUnknownPeopleSuggestBoothHelp=Allow unknown people to suggest booth
|
||||
AllowUnknownPeopleSuggestConf=Allow people to suggest conferences
|
||||
AllowUnknownPeopleSuggestConfHelp=Allow unknown people to suggest a conference they want to do
|
||||
AllowUnknownPeopleSuggestBooth=Allow people to apply for a booth
|
||||
AllowUnknownPeopleSuggestBoothHelp=Allow unknown people to apply for a booth
|
||||
PriceOfRegistration=Price of registration
|
||||
PriceOfRegistrationHelp=Price of registration
|
||||
PriceOfRegistrationHelp=Price to pay to register or participate in the event
|
||||
PriceOfBooth=Subscription price to stand a booth
|
||||
PriceOfBoothHelp=Subscription price to stand a booth
|
||||
EventOrganizationICSLink=Link ICS for events
|
||||
ConferenceOrBoothInformation=Conference Or Booth informations
|
||||
Attendees = Attendees
|
||||
Attendees=Attendees
|
||||
ListOfAttendeesOfEvent=List of attendees of the event project
|
||||
DownloadICSLink = Download ICS link
|
||||
EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference
|
||||
SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location
|
||||
@ -100,28 +105,42 @@ EvntOrgCancelled = Cancelled
|
||||
# Public page
|
||||
#
|
||||
SuggestForm = Suggestion page
|
||||
RegisterPage = Page for conferences or booth
|
||||
EvntOrgRegistrationHelpMessage = Here, you can vote for an event, or suggest a new conference or booth for the project
|
||||
EvntOrgRegistrationConfHelpMessage = Here, you can suggest a new conference for the project
|
||||
EvntOrgRegistrationBoothHelpMessage = Here, you can suggest a new booth for the project
|
||||
SuggestOrVoteForConfOrBooth = Page for suggestion or vote
|
||||
EvntOrgRegistrationHelpMessage = Here, you can vote for a conference or suggest a new one for the event. You can also apply to have a booth during the event.
|
||||
EvntOrgRegistrationConfHelpMessage = Here, you can suggest a new conference to animate during the event.
|
||||
EvntOrgRegistrationBoothHelpMessage = Here, you can apply to have a booth during the event.
|
||||
ListOfSuggestedConferences = List of suggested conferences
|
||||
ListOfSuggestedBooths = List of suggested booths
|
||||
ListOfConferencesOrBooths=List of conferences or booths of event project
|
||||
SuggestConference = Suggest a new conference
|
||||
SuggestBooth = Suggest a booth
|
||||
ViewAndVote = View and vote for suggested events
|
||||
PublicAttendeeSubscriptionPage = Public link of registration to a conference
|
||||
PublicAttendeeSubscriptionGlobalPage = Public link for registration to the event
|
||||
PublicAttendeeSubscriptionPage = Public link for registration to this event only
|
||||
MissingOrBadSecureKey = The security key is invalid or missing
|
||||
EvntOrgWelcomeMessage = This form allows you to register as a new participant to the conference : '%s'
|
||||
EvntOrgWelcomeMessage = This form allows you to register as a new participant to the event : <b>%s</b>
|
||||
EvntOrgDuration = This conference starts on %s and ends on %s.
|
||||
ConferenceAttendeeFee = Conference attendee fee for the event : '%s' occurring from %s to %s.
|
||||
BoothLocationFee = Booth location for the event : '%s' occurring from %s to %s
|
||||
EventType = Event type
|
||||
LabelOfBooth=Booth label
|
||||
LabelOfconference=Conference label
|
||||
ConferenceIsNotConfirmed=Subcription not available, conference is not confirmed yet
|
||||
ConferenceIsNotConfirmed=Registration not available, conference is not confirmed yet
|
||||
DateMustBeBeforeThan=%s must be before %s
|
||||
DateMustBeAfterThan=%s must be after %s
|
||||
|
||||
NewSubscription=Registration
|
||||
OrganizationEventConfRequestWasReceived=Your suggestion for a conference has been received
|
||||
OrganizationEventBoothRequestWasReceived=Your request for a booth has been received
|
||||
OrganizationEventPaymentOfBoothWasReceived=Your payment for your booth has been recorded
|
||||
OrganizationEventPaymentOfRegistrationWasReceived=Your payment for your event registration has been recorded
|
||||
OrganizationEventBulkMailToAttendees=This is a remind about your participation in the event as an attendee
|
||||
OrganizationEventBulkMailToSpeakers=This is a reminder on your participation in the event as a speaker
|
||||
OrganizationEventLinkToThirdParty=Link to third party (customer, supplier or partner)
|
||||
|
||||
NewSuggestionOfBooth=Application for a booth
|
||||
NewSuggestionOfConference=Application for a conference
|
||||
|
||||
#
|
||||
# Vote page
|
||||
#
|
||||
@ -133,17 +152,15 @@ VoteOk = Your vote has been accepted.
|
||||
AlreadyVoted = You have already voted for this event.
|
||||
VoteError = An error has occurred during the vote, please try again.
|
||||
|
||||
#
|
||||
# SubscriptionOk page
|
||||
#
|
||||
SubscriptionOk = Your subscription to this conference has been validated
|
||||
#
|
||||
# Subscription validation mail
|
||||
#
|
||||
ConfAttendeeSubscriptionConfirmation = Confirmation of your subscription to a conference
|
||||
#
|
||||
# Payment page
|
||||
#
|
||||
SubscriptionOk = Your registration has been validated
|
||||
ConfAttendeeSubscriptionConfirmation = Confirmation of your subscription to an event
|
||||
Attendee = Attendee
|
||||
PaymentConferenceAttendee = Conference attendee payment
|
||||
PaymentBoothLocation = Booth location payment
|
||||
DeleteConferenceOrBoothAttendee=Remove attendee
|
||||
RegistrationAndPaymentWereAlreadyRecorder=A registration and a payment were already recorded for the email <b>%s</b>
|
||||
EmailAttendee=Attendee email
|
||||
EmailCompanyForInvoice=Company email (for invoice, if different of attendee email)
|
||||
ErrorSeveralCompaniesWithEmailContactUs=Several companies with this email has been found so we can't validate automaticaly your registration. Please contact us at %s for a manual validation
|
||||
ErrorSeveralCompaniesWithNameContactUs=Several companies with this name has been found so we can't validate automaticaly your registration. Please contact us at %s for a manual validation
|
||||
NoPublicActionsAllowedForThisEvent=No public actions are open to public for this event
|
||||
|
||||
@ -96,8 +96,8 @@ DataComeFromFileFieldNb=Value to insert comes from field number <b>%s</b> in sou
|
||||
DataComeFromIdFoundFromRef=Value that comes from field number <b>%s</b> of source file will be used to find the id of the parent object to use (so the object <b>%s</b> that has the ref. from source file must exist in the database).
|
||||
DataComeFromIdFoundFromCodeId=Code that comes from field number <b>%s</b> of source file will be used to find the id of the parent object to use (so the code from source file must exist in the dictionary <b>%s</b>). Note that if you know the id, you can also use it in the source file instead of the code. Import should work in both cases.
|
||||
DataIsInsertedInto=Data coming from source file will be inserted into the following field:
|
||||
DataIDSourceIsInsertedInto=The id of parent object was found using the data in the source file, will be inserted into the following field:
|
||||
DataCodeIDSourceIsInsertedInto=The id of parent line found from code, will be inserted into following field:
|
||||
DataIDSourceIsInsertedInto=The id of the parent object, that was found using the data in the source file, will be inserted into the following field:
|
||||
DataCodeIDSourceIsInsertedInto=The id of the parent line, that was found from code, will be inserted into the following field:
|
||||
SourceRequired=Data value is mandatory
|
||||
SourceExample=Example of possible data value
|
||||
ExampleAnyRefFoundIntoElement=Any ref found for element <b>%s</b>
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
# Dolibarr language file - en_US - hrm
|
||||
|
||||
|
||||
# Admin
|
||||
HRM_EMAIL_EXTERNAL_SERVICE=Email to prevent HRM external service
|
||||
Establishments=Establishments
|
||||
@ -17,3 +19,63 @@ Employees=Employees
|
||||
Employee=Employee
|
||||
NewEmployee=New employee
|
||||
ListOfEmployees=List of employees
|
||||
HrmSetup=HRM module setup
|
||||
HRM_MAXRANK=Maximum rank for a skill
|
||||
HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created
|
||||
deplacement=Shift
|
||||
DateEval=Evaluation date
|
||||
JobCard=Job card
|
||||
Job=Job
|
||||
Jobs=Jobs
|
||||
NewSkill=New Skill
|
||||
SkillType=Skill type
|
||||
Skilldets=List of ranks for this skill
|
||||
Skilldet=Skill level
|
||||
rank=Rank
|
||||
ErrNoSkillSelected=No skill selected
|
||||
ErrSkillAlreadyAdded=This skill is already in the list
|
||||
SkillHasNoLines=This skill has no lines
|
||||
skill=Skill
|
||||
Skills=Skills
|
||||
SkillCard=Skill card
|
||||
EmployeeSkillsUpdated=Employee skills have been updated (see "Skills" tab of employee card)
|
||||
Eval=Evaluation
|
||||
Evals=Evaluations
|
||||
NewEval=New evaluation
|
||||
ValidateEvaluation=Validate evaluation
|
||||
ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with reference <b>%s</b>?
|
||||
EvaluationCard=Evaluation card
|
||||
RequiredRank=Required rank for this job
|
||||
EmployeeRank=Employee rank for this skill
|
||||
Position=Position
|
||||
Positions=Positions
|
||||
PositionCard=Position card
|
||||
EmployeesInThisPosition=Employees in this position
|
||||
group1ToCompare=Usergroup to analyze
|
||||
group2ToCompare=Second usergroup for comparison
|
||||
OrJobToCompare=Compare to job skills requirements
|
||||
difference=Difference
|
||||
CompetenceAcquiredByOneOrMore=Competence acquired by one or more users but not requested by the second comparator
|
||||
MaxlevelGreaterThan=Max level greater than the one requested
|
||||
MaxLevelEqualTo=Max level equal to that demand
|
||||
MaxLevelLowerThan=Max level lower than that demand
|
||||
MaxlevelGreaterThanShort=Employee level greater than the one requested
|
||||
MaxLevelEqualToShort=Employee level equals to that demand
|
||||
MaxLevelLowerThanShort=Employee level lower than that demand
|
||||
SkillNotAcquired=Skill not acquired by all users and requested by the second comparator
|
||||
legend=Legend
|
||||
TypeSkill=Skill type
|
||||
AddSkill=Add skills to job
|
||||
RequiredSkills=Required skills for this job
|
||||
UserRank=User Rank
|
||||
SkillList=Skill list
|
||||
SaveRank=Save rank
|
||||
knowHow=Know how
|
||||
HowToBe=How to be
|
||||
knowledge=Knowledge
|
||||
AbandonmentComment=Abandonment comment
|
||||
DateLastEval=Date last evaluation
|
||||
NoEval=No evaluation done for this employee
|
||||
HowManyUserWithThisMaxNote=Number of users with this rank
|
||||
HighestRank=Highest rank
|
||||
SkillComparison=Skill comparison
|
||||
|
||||
@ -47,3 +47,4 @@ KnowledgeRecord = Article
|
||||
KnowledgeRecordExtraFields = Extrafields for Article
|
||||
GroupOfTicket=Group of tickets
|
||||
YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets)
|
||||
SuggestedForTicketsInGroup=Suggested for tickets when group is
|
||||
|
||||
@ -1,11 +1,13 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
Language_am_ET=Ethiopian
|
||||
Language_ar_AR=Arabic
|
||||
Language_ar_DZ=Arabic (Algeria)
|
||||
Language_ar_EG=Arabic (Egypt)
|
||||
Language_ar_MA=Arabic (Moroco)
|
||||
Language_ar_SA=Arabic
|
||||
Language_ar_TN=Arabic (Tunisia)
|
||||
Language_ar_IQ=Arabic (Iraq)
|
||||
Language_as_IN=Assamese
|
||||
Language_az_AZ=Azerbaijani
|
||||
Language_bn_BD=Bengali
|
||||
Language_bn_IN=Bengali (India)
|
||||
@ -72,6 +74,7 @@ Language_it_IT=Italian
|
||||
Language_it_CH=Italian (Switzerland)
|
||||
Language_ja_JP=Japanese
|
||||
Language_ka_GE=Georgian
|
||||
Language_kk_KZ=Kazakh
|
||||
Language_km_KH=Khmer
|
||||
Language_kn_IN=Kannada
|
||||
Language_ko_KR=Korean
|
||||
@ -92,6 +95,7 @@ Language_ro_MD=Romanian (Moldavia)
|
||||
Language_ro_RO=Romanian
|
||||
Language_ru_RU=Russian
|
||||
Language_ru_UA=Russian (Ukraine)
|
||||
Language_tg_TJ=Tajik
|
||||
Language_tr_TR=Turkish
|
||||
Language_sl_SI=Slovenian
|
||||
Language_sv_SV=Swedish
|
||||
|
||||
@ -60,6 +60,7 @@ EMailTestSubstitutionReplacedByGenericValues=When using test mode, substitutions
|
||||
MailingAddFile=Attach this file
|
||||
NoAttachedFiles=No attached files
|
||||
BadEMail=Bad value for Email
|
||||
EMailNotDefined=Email not defined
|
||||
ConfirmCloneEMailing=Are you sure you want to clone this emailing?
|
||||
CloneContent=Clone message
|
||||
CloneReceivers=Cloner recipients
|
||||
@ -175,5 +176,5 @@ Answered=Answered
|
||||
IsNotAnAnswer=Is not answer (initial email)
|
||||
IsAnAnswer=Is an answer of an initial email
|
||||
RecordCreatedByEmailCollector=Record created by the Email Collector %s from email %s
|
||||
DefaultBlacklistMailingStatus=Default contact status for refuse bulk emailing
|
||||
DefaultBlacklistMailingStatus=Default value for field '%s' when creating a new contact
|
||||
DefaultStatusEmptyMandatory=Empty but mandatory
|
||||
|
||||
@ -804,6 +804,7 @@ LinkToSupplierInvoice=Link to vendor invoice
|
||||
LinkToContract=Link to contract
|
||||
LinkToIntervention=Link to intervention
|
||||
LinkToTicket=Link to ticket
|
||||
LinkToMo=Link to Mo
|
||||
CreateDraft=Create draft
|
||||
SetToDraft=Back to draft
|
||||
ClickToEdit=Click to edit
|
||||
@ -1149,3 +1150,12 @@ RecordEnabled=Record enabled
|
||||
RecordDisabled=Record disabled
|
||||
Forthcoming=Forthcoming
|
||||
Currently=Currently
|
||||
ConfirmMassLeaveApprovalQuestion=Are you sure you want to approve the %s selected record(s)?
|
||||
ConfirmMassLeaveApproval=Mass leave approval confirmation
|
||||
RecordAproved=Record approved
|
||||
RecordsApproved=%s Record(s) approved
|
||||
Properties=Properties
|
||||
hasBeenValidated=%s has been validated
|
||||
ClientTZ=Client Time Zone (user)
|
||||
NotClosedYet=Not yet closed
|
||||
ClearSignature=Signature reset
|
||||
|
||||
@ -22,7 +22,7 @@ ProductService=Product or Service
|
||||
AllProducts=All products and services
|
||||
ChooseProduct/Service=Choose product or service
|
||||
ForceBuyingPriceIfNull=Force buying/cost price to selling price if not defined
|
||||
ForceBuyingPriceIfNullDetails=If buying/cost price not provided when we add a new line, and this option is "ON", the margin will be 0 on the new line (buying/cost price = selling price). If this option is "OFF" (recommended), margin will be equal to the value suggested by default (and may be 100% if no default value can be found).
|
||||
ForceBuyingPriceIfNullDetails=If buying/cost price not provided when we add a new line, and this option is "ON", the margin will be 0%% on the new line (buying/cost price = selling price). If this option is "OFF" (recommended), margin will be equal to the value suggested by default (and may be 100%% if no default value can be found).
|
||||
MARGIN_METHODE_FOR_DISCOUNT=Margin method for global discounts
|
||||
UseDiscountAsProduct=As a product
|
||||
UseDiscountAsService=As a service
|
||||
|
||||
@ -7,7 +7,7 @@ Members=Members
|
||||
ShowMember=Show member card
|
||||
UserNotLinkedToMember=User not linked to a member
|
||||
ThirdpartyNotLinkedToMember=Third party not linked to a member
|
||||
MembersTickets=Members Tickets
|
||||
MembersTickets=Membership address sheet
|
||||
FundationMembers=Foundation members
|
||||
ListOfValidatedPublicMembers=List of validated public members
|
||||
ErrorThisMemberIsNotPublic=This member is not public
|
||||
@ -19,8 +19,8 @@ MembersCards=Business cards for members
|
||||
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 out-of-date subscription
|
||||
MembersListUpToDate=List of valid members with up-to-date contribution
|
||||
MembersListNotUpToDate=List of valid members with out-of-date contribution
|
||||
MembersListExcluded=List of excluded members
|
||||
MembersListResiliated=List of terminated members
|
||||
MembersListQualified=List of qualified members
|
||||
@ -28,13 +28,13 @@ MenuMembersToValidate=Draft members
|
||||
MenuMembersValidated=Validated members
|
||||
MenuMembersExcluded=Excluded members
|
||||
MenuMembersResiliated=Terminated members
|
||||
MembersWithSubscriptionToReceive=Members with subscription to receive
|
||||
MembersWithSubscriptionToReceiveShort=Subscription to receive
|
||||
DateSubscription=Subscription date
|
||||
DateEndSubscription=Subscription end date
|
||||
EndSubscription=Subscription Ends
|
||||
SubscriptionId=Subscription id
|
||||
WithoutSubscription=Without subscription
|
||||
MembersWithSubscriptionToReceive=Members with contribution to receive
|
||||
MembersWithSubscriptionToReceiveShort=Contributions to receive
|
||||
DateSubscription=Date of membership
|
||||
DateEndSubscription=End date of membership
|
||||
EndSubscription=End of membership
|
||||
SubscriptionId=Contribution ID
|
||||
WithoutSubscription=Without contribution
|
||||
MemberId=Member id
|
||||
NewMember=New member
|
||||
MemberType=Member type
|
||||
@ -43,9 +43,9 @@ MemberTypeLabel=Member type label
|
||||
MembersTypes=Members types
|
||||
MemberStatusDraft=Draft (needs to be validated)
|
||||
MemberStatusDraftShort=Draft
|
||||
MemberStatusActive=Validated (waiting subscription)
|
||||
MemberStatusActive=Validated (waiting contribution)
|
||||
MemberStatusActiveShort=Validated
|
||||
MemberStatusActiveLate=Subscription expired
|
||||
MemberStatusActiveLate=Contribution expired
|
||||
MemberStatusActiveLateShort=Expired
|
||||
MemberStatusPaid=Subscription up to date
|
||||
MemberStatusPaidShort=Up to date
|
||||
@ -56,9 +56,9 @@ MemberStatusResiliatedShort=Terminated
|
||||
MembersStatusToValid=Draft members
|
||||
MembersStatusExcluded=Excluded members
|
||||
MembersStatusResiliated=Terminated members
|
||||
MemberStatusNoSubscription=Validated (no subscription needed)
|
||||
MemberStatusNoSubscription=Validated (no contribution required)
|
||||
MemberStatusNoSubscriptionShort=Validated
|
||||
SubscriptionNotNeeded=No subscription needed
|
||||
SubscriptionNotNeeded=No contribution required
|
||||
NewCotisation=New contribution
|
||||
PaymentSubscription=New contribution payment
|
||||
SubscriptionEndDate=Subscription's end date
|
||||
@ -68,19 +68,19 @@ DeleteAMemberType=Delete a member type
|
||||
ConfirmDeleteMemberType=Are you sure you want to delete this member type?
|
||||
MemberTypeDeleted=Member type deleted
|
||||
MemberTypeCanNotBeDeleted=Member type can not be deleted
|
||||
NewSubscription=New subscription
|
||||
NewSubscription=New contribution
|
||||
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
|
||||
Subscription=Contribution
|
||||
Subscriptions=Contributions
|
||||
SubscriptionLate=Late
|
||||
SubscriptionNotReceived=Subscription never received
|
||||
ListOfSubscriptions=List of subscriptions
|
||||
SubscriptionNotReceived=Contribution never received
|
||||
ListOfSubscriptions=List of contributions
|
||||
SendCardByMail=Send card by email
|
||||
AddMember=Create member
|
||||
NoTypeDefinedGoToSetup=No member types defined. Go to menu "Members types"
|
||||
NewMemberType=New member type
|
||||
WelcomeEMail=Welcome email
|
||||
SubscriptionRequired=Subscription required
|
||||
SubscriptionRequired=Contribution required
|
||||
DeleteType=Delete
|
||||
VoteAllowed=Vote allowed
|
||||
Physical=Individual
|
||||
@ -88,47 +88,48 @@ Moral=Corporation
|
||||
MorAndPhy=Corporation and Individual
|
||||
Reenable=Re-Enable
|
||||
ExcludeMember=Exclude a member
|
||||
Exclude=Exclude
|
||||
ConfirmExcludeMember=Are you sure you want to exclude this member ?
|
||||
ResiliateMember=Terminate a member
|
||||
ConfirmResiliateMember=Are you sure you want to terminate this member?
|
||||
DeleteMember=Delete a member
|
||||
ConfirmDeleteMember=Are you sure you want to delete this member (Deleting a member will delete all his subscriptions)?
|
||||
ConfirmDeleteMember=Are you sure you want to delete this member (Deleting a member will delete all his contributions)?
|
||||
DeleteSubscription=Delete a subscription
|
||||
ConfirmDeleteSubscription=Are you sure you want to delete this subscription?
|
||||
ConfirmDeleteSubscription=Are you sure you want to delete this contribution?
|
||||
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 formatted pages, provided as example to show how to list members database.
|
||||
PublicMemberList=Public member list
|
||||
BlankSubscriptionForm=Public self-subscription form
|
||||
BlankSubscriptionForm=Public self-registration form
|
||||
BlankSubscriptionFormDesc=Dolibarr can provide you a public URL/website to allow external visitors to ask to subscribe to the foundation. If an online payment module is enabled, a payment form may also be automatically provided.
|
||||
EnablePublicSubscriptionForm=Enable the public website with self-subscription form
|
||||
ForceMemberType=Force the member type
|
||||
ExportDataset_member_1=Members and subscriptions
|
||||
ExportDataset_member_1=Members and contributions
|
||||
ImportDataset_member_1=Members
|
||||
LastMembersModified=Latest %s modified members
|
||||
LastSubscriptionsModified=Latest %s modified subscriptions
|
||||
LastSubscriptionsModified=Latest %s modified contributions
|
||||
String=String
|
||||
Text=Text
|
||||
Int=Int
|
||||
DateAndTime=Date and time
|
||||
PublicMemberCard=Member public card
|
||||
SubscriptionNotRecorded=Subscription not recorded
|
||||
AddSubscription=Create subscription
|
||||
ShowSubscription=Show subscription
|
||||
SubscriptionNotRecorded=Contribution not recorded
|
||||
AddSubscription=Create contribution
|
||||
ShowSubscription=Show contribution
|
||||
# Label of email templates
|
||||
SendingAnEMailToMember=Sending information email to member
|
||||
SendingEmailOnAutoSubscription=Sending email on auto registration
|
||||
SendingEmailOnMemberValidation=Sending email on new member validation
|
||||
SendingEmailOnNewSubscription=Sending email on new subscription
|
||||
SendingReminderForExpiredSubscription=Sending reminder for expired subscriptions
|
||||
SendingEmailOnNewSubscription=Sending email on new contribution
|
||||
SendingReminderForExpiredSubscription=Sending reminder for expired contributions
|
||||
SendingEmailOnCancelation=Sending email on cancelation
|
||||
SendingReminderActionComm=Sending reminder for agenda event
|
||||
# Topic of email templates
|
||||
YourMembershipRequestWasReceived=Your membership was received.
|
||||
YourMembershipWasValidated=Your membership was validated
|
||||
YourSubscriptionWasRecorded=Your new subscription was recorded
|
||||
SubscriptionReminderEmail=Subscription reminder
|
||||
YourSubscriptionWasRecorded=Your new contribution was recorded
|
||||
SubscriptionReminderEmail=contribution reminder
|
||||
YourMembershipWasCanceled=Your membership was canceled
|
||||
CardContent=Content of your member card
|
||||
# Text of email templates
|
||||
@ -139,10 +140,10 @@ ThisIsContentOfSubscriptionReminderEmail=We want to let you know that your subsc
|
||||
ThisIsContentOfYourCard=This is a summary of the information we have about you. Please contact us if anything is incorrect.<br><br>
|
||||
DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the notification email received in case of auto-inscription of a guest
|
||||
DescADHERENT_AUTOREGISTER_NOTIF_MAIL=Content of the notification email received in case of auto-inscription of a guest
|
||||
DescADHERENT_EMAIL_TEMPLATE_AUTOREGISTER=Email template to use to send email to a member on member autosubscription
|
||||
DescADHERENT_EMAIL_TEMPLATE_AUTOREGISTER=Email template to use to send email to a member on member auto-registration
|
||||
DescADHERENT_EMAIL_TEMPLATE_MEMBER_VALIDATION=Email template to use to send email to a member on member validation
|
||||
DescADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION=Email template to use to send email to a member on new subscription recording
|
||||
DescADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION=Email template to use to send email reminder when subscription is about to expire
|
||||
DescADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION=Email template to use to send email to a member on new contribution recording
|
||||
DescADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION=Email template to use to send email reminder when contribution is about to expire
|
||||
DescADHERENT_EMAIL_TEMPLATE_CANCELATION=Email template to use to send email to a member on member cancelation
|
||||
DescADHERENT_EMAIL_TEMPLATE_EXCLUSION=Email template to use to send email to a member on member exclusion
|
||||
DescADHERENT_MAIL_FROM=Sender Email for automatic emails
|
||||
@ -155,10 +156,10 @@ DescADHERENT_CARD_TEXT_RIGHT=Text printed on member cards (align on right)
|
||||
DescADHERENT_CARD_FOOTER_TEXT=Text printed on bottom of member cards
|
||||
ShowTypeCard=Show type '%s'
|
||||
HTPasswordExport=htpassword file generation
|
||||
NoThirdPartyAssociatedToMember=No third party associated to this member
|
||||
MembersAndSubscriptions= Members and Subscriptions
|
||||
NoThirdPartyAssociatedToMember=No third party associated with this member
|
||||
MembersAndSubscriptions=Members and Contributions
|
||||
MoreActions=Complementary action on recording
|
||||
MoreActionsOnSubscription=Complementary action, suggested by default when recording a subscription
|
||||
MoreActionsOnSubscription=Complementary action, suggested by default when recording a contribution
|
||||
MoreActionBankDirect=Create a direct entry on bank account
|
||||
MoreActionBankViaInvoice=Create an invoice, and a payment on bank account
|
||||
MoreActionInvoiceOnly=Create an invoice with no payment
|
||||
@ -167,9 +168,9 @@ LinkToGeneratedPagesDesc=This screen allows you to generate PDF files with busin
|
||||
DocForAllMembersCards=Generate business cards for all members
|
||||
DocForOneMemberCards=Generate business cards for a particular member
|
||||
DocForLabels=Generate address sheets
|
||||
SubscriptionPayment=Subscription payment
|
||||
LastSubscriptionDate=Date of latest subscription payment
|
||||
LastSubscriptionAmount=Amount of latest subscription
|
||||
SubscriptionPayment=Contribution payment
|
||||
LastSubscriptionDate=Date of latest contribution payment
|
||||
LastSubscriptionAmount=Amount of latest contribution
|
||||
LastMemberType=Last Member type
|
||||
MembersStatisticsByCountries=Members statistics by country
|
||||
MembersStatisticsByState=Members statistics by state/province
|
||||
@ -186,32 +187,34 @@ MembersByRegion=This screen show you statistics of members by region.
|
||||
MembersStatisticsDesc=Choose statistics you want to read...
|
||||
MenuMembersStats=Statistics
|
||||
LastMemberDate=Latest membership date
|
||||
LatestSubscriptionDate=Latest subscription date
|
||||
LatestSubscriptionDate=Latest contribution date
|
||||
MemberNature=Nature of the member
|
||||
MembersNature=Nature of the members
|
||||
Public=Information is public
|
||||
NewMemberbyWeb=New member added. Awaiting approval
|
||||
NewMemberForm=New member form
|
||||
SubscriptionsStatistics=Subscriptions statistics
|
||||
NbOfSubscriptions=Number of subscriptions
|
||||
AmountOfSubscriptions=Amount collected from subscriptions
|
||||
SubscriptionsStatistics=Contributions statistics
|
||||
NbOfSubscriptions=Number of contributions
|
||||
AmountOfSubscriptions=Amount collected from contributions
|
||||
TurnoverOrBudget=Turnover (for a company) or Budget (for a foundation)
|
||||
DefaultAmount=Default amount of subscription
|
||||
CanEditAmount=Visitor can choose/edit amount of its subscription
|
||||
DefaultAmount=Default amount of contribution
|
||||
CanEditAmount=Visitor can choose/edit amount of its contribution
|
||||
MEMBER_NEWFORM_PAYONLINE=Jump on integrated online payment page
|
||||
ByProperties=By nature
|
||||
MembersStatisticsByProperties=Members statistics by nature
|
||||
VATToUseForSubscriptions=VAT rate to use for subscriptions
|
||||
NoVatOnSubscription=No VAT for subscriptions
|
||||
ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for subscription line into invoice: %s
|
||||
VATToUseForSubscriptions=VAT rate to use for contributionss
|
||||
NoVatOnSubscription=No VAT for contributions
|
||||
ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for contribution line into invoice: %s
|
||||
NameOrCompany=Name or company
|
||||
SubscriptionRecorded=Subscription recorded
|
||||
SubscriptionRecorded=Contribution recorded
|
||||
NoEmailSentToMember=No email sent to member
|
||||
EmailSentToMember=Email sent to member at %s
|
||||
SendReminderForExpiredSubscriptionTitle=Send reminder by email for expired subscription
|
||||
SendReminderForExpiredSubscription=Send reminder by email to members when subscription is about to expire (parameter is number of days before end of subscription to send the remind. It can be a list of days separated by a semicolon, for example '10;5;0;-5')
|
||||
SendReminderForExpiredSubscriptionTitle=Send reminder by email for expired contributions
|
||||
SendReminderForExpiredSubscription=Send reminder by email to members when contribution is about to expire (parameter is number of days before end of membership to send the remind. It can be a list of days separated by a semicolon, for example '10;5;0;-5')
|
||||
MembershipPaid=Membership paid for current period (until %s)
|
||||
YouMayFindYourInvoiceInThisEmail=You may find your invoice attached to this email
|
||||
XMembersClosed=%s member(s) closed
|
||||
XExternalUserCreated=%s external user(s) created
|
||||
ForceMemberNature=Force member nature (Individual or Corporation)
|
||||
CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves.
|
||||
CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution.
|
||||
|
||||
@ -98,7 +98,7 @@ MenusDefDescTooltip=The menus provided by your module/application are defined in
|
||||
DictionariesDefDescTooltip=The dictionaries provided by your module/application are defined into the array <strong>$this->dictionaries</strong> into the module descriptor file. You can edit manually this file or use the embedded editor.<br><br>Note: Once defined (and module re-activated), dictionaries are also visible into the setup area to administrator users on %s.
|
||||
PermissionsDefDescTooltip=The permissions provided by your module/application are defined into the array <strong>$this->rights</strong> into the module descriptor file. You can edit manually this file or use the embedded editor.<br><br>Note: Once defined (and module re-activated), permissions are visible into the default permissions setup %s.
|
||||
HooksDefDesc=Define in the <b>module_parts['hooks']</b> property, in the module descriptor, the context of hooks you want to manage (list of contexts can be found by a search on '<b>initHooks(</b>' in core code).<br>Edit the hook file to add code of your hooked functions (hookable functions can be found by a search on '<b>executeHooks</b>' in core code).
|
||||
TriggerDefDesc=Define in the trigger file the code you want to execute for each business event executed.
|
||||
TriggerDefDesc=Define in the trigger file the code that you want to execute when a business event external to your module is executed (events recorded by other modules).
|
||||
SeeIDsInUse=See IDs in use in your installation
|
||||
SeeReservedIDsRangeHere=See range of reserved IDs
|
||||
ToolkitForDevelopers=Toolkit for Dolibarr developers
|
||||
@ -144,3 +144,4 @@ AsciiToPdfConverter=Ascii to PDF converter
|
||||
TableNotEmptyDropCanceled=Table not empty. Drop has been canceled.
|
||||
ModuleBuilderNotAllowed=The module builder is available but not allowed to your user.
|
||||
ImportExportProfiles=Import and export profiles
|
||||
ValidateModBuilderDesc=Put 1 if this field need to be validated with $this->validateField() or 0 if validation required
|
||||
|
||||
@ -9,6 +9,7 @@ LatestBOMModified=Latest %s Bills of materials modified
|
||||
LatestMOModified=Latest %s Manufacturing Orders modified
|
||||
Bom=Bills of Material
|
||||
BillOfMaterials=Bill of Materials
|
||||
BillOfMaterialsLines=Bill of Materials lines
|
||||
BOMsSetup=Setup of module BOM
|
||||
ListOfBOMs=List of bills of material - BOM
|
||||
ListOfManufacturingOrders=List of Manufacturing Orders
|
||||
@ -55,6 +56,7 @@ WarehouseForProduction=Warehouse for production
|
||||
CreateMO=Create MO
|
||||
ToConsume=To consume
|
||||
ToProduce=To produce
|
||||
ToObtain=To obtain
|
||||
QtyAlreadyConsumed=Qty already consumed
|
||||
QtyAlreadyProduced=Qty already produced
|
||||
QtyRequiredIfNoLoss=Qty required if there is no loss (Manufacturing efficiency is 100%%)
|
||||
@ -72,6 +74,7 @@ NoStockChangeOnServices=No stock change on services
|
||||
ProductQtyToConsumeByMO=Product quantity still to consume by open MO
|
||||
ProductQtyToProduceByMO=Product quantity still to produce by open MO
|
||||
AddNewConsumeLines=Add new line to consume
|
||||
AddNewProduceLines=Add new line to produce
|
||||
ProductsToConsume=Products to consume
|
||||
ProductsToProduce=Products to produce
|
||||
UnitCost=Unit cost
|
||||
@ -101,3 +104,6 @@ HumanMachine=Human / Machine
|
||||
WorkstationArea=Workstation area
|
||||
Machines=Machines
|
||||
THMEstimatedHelp=This rate makes it possible to define a forecast cost of the item
|
||||
BOM=Bill Of Materials
|
||||
CollapseBOMHelp=You can define the default display of the details of the nomenclature in the configuration of the BOM module
|
||||
MOAndLines=Manufacturing Orders and lines
|
||||
|
||||
@ -48,6 +48,8 @@ AddEndHour=Add end hour
|
||||
votes=vote(s)
|
||||
NoCommentYet=No comments have been posted for this poll yet
|
||||
CanComment=Voters can comment in the poll
|
||||
YourVoteIsPrivate=This poll is private, nobody can see your vote.
|
||||
YourVoteIsPublic=This poll is public, anybody with the link can see your vote.
|
||||
CanSeeOthersVote=Voters can see other people's vote
|
||||
SelectDayDesc=For each selected day, you can choose, or not, meeting hours in the following format:<br>- empty,<br>- "8h", "8H" or "8:00" to give a meeting's start hour,<br>- "8-11", "8h-11h", "8H-11H" or "8:00-11:00" to give a meeting's start and end hour,<br>- "8h15-11h15", "8H15-11H15" or "8:15-11:15" for the same thing but with minutes.
|
||||
BackToCurrentMonth=Back to current month
|
||||
|
||||
@ -17,7 +17,7 @@ ToOrder=Make order
|
||||
MakeOrder=Make order
|
||||
SupplierOrder=Purchase order
|
||||
SuppliersOrders=Purchase orders
|
||||
SaleOrderLines=Sale order lines
|
||||
SaleOrderLines=Sales order lines
|
||||
PurchaseOrderLines=Puchase order lines
|
||||
SuppliersOrdersRunning=Current purchase orders
|
||||
CustomerOrder=Sales Order
|
||||
@ -124,6 +124,8 @@ SupplierOrderReceivedInDolibarr=Purchase Order %s received %s
|
||||
SupplierOrderSubmitedInDolibarr=Purchase Order %s submitted
|
||||
SupplierOrderClassifiedBilled=Purchase Order %s set billed
|
||||
OtherOrders=Other orders
|
||||
SupplierOrderValidatedAndApproved=Supplier order is validated and approved : %s
|
||||
SupplierOrderValidated=Supplier order is validated : %s
|
||||
##### Types de contacts #####
|
||||
TypeContact_commande_internal_SALESREPFOLL=Representative following-up sales order
|
||||
TypeContact_commande_internal_SHIPPING=Representative following-up shipping
|
||||
@ -151,6 +153,7 @@ PDFEdisonDescription=A simple order model
|
||||
PDFProformaDescription=A complete Proforma invoice template
|
||||
CreateInvoiceForThisCustomer=Bill orders
|
||||
CreateInvoiceForThisSupplier=Bill orders
|
||||
CreateInvoiceForThisReceptions=Bill receptions
|
||||
NoOrdersToInvoice=No orders billable
|
||||
CloseProcessedOrdersAutomatically=Classify "Processed" all selected orders.
|
||||
OrderCreation=Order creation
|
||||
|
||||
@ -35,6 +35,9 @@ OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Onl
|
||||
AtLeastOneMeasureIsRequired=At least 1 field for measure is required
|
||||
AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required
|
||||
LatestBlogPosts=Latest Blog Posts
|
||||
notiftouser=To users
|
||||
notiftofixedemail=To fixed mail
|
||||
notiftouserandtofixedemail=To user and fixed mail
|
||||
Notify_ORDER_VALIDATE=Sales order validated
|
||||
Notify_ORDER_SENTBYMAIL=Sales order sent by mail
|
||||
Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email
|
||||
|
||||
@ -58,6 +58,7 @@ ManagePartnership=Manage partnership
|
||||
BacklinkNotFoundOnPartnerWebsite=Backlink not found on partner website
|
||||
ConfirmClosePartnershipAsk=Are you sure you want to cancel this partnership?
|
||||
PartnershipType=Partnership type
|
||||
PartnershipRefApproved=Partnership %s approved
|
||||
|
||||
#
|
||||
# Template Mail
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
# Dolibarr language file - Source file is en_US - printing
|
||||
Module64000Name=Direct Printing
|
||||
Module64000Desc=Enable Direct Printing System
|
||||
PrintingSetup=Setup of Direct Printing System
|
||||
PrintingDesc=This module adds a Print button to various modules to allow documents to be printed directly to a printer without needing to open the document in another application.
|
||||
MenuDirectPrinting=Direct Printing jobs
|
||||
DirectPrint=Direct print
|
||||
Module64000Name=One click Printing
|
||||
Module64000Desc=Enable One click Printing System
|
||||
PrintingSetup=Setup of One click Printing System
|
||||
PrintingDesc=This module adds a Print button to various modules to allow documents to be printed directly to a printer with no need to open the document into another application.
|
||||
MenuDirectPrinting=One click Printing jobs
|
||||
DirectPrint=One click Print
|
||||
PrintingDriverDesc=Configuration variables for printing driver.
|
||||
ListDrivers=List of drivers
|
||||
PrintTestDesc=List of Printers.
|
||||
|
||||
@ -37,7 +37,8 @@ ManufacturingDate=Manufacturing date
|
||||
DestructionDate=Destruction date
|
||||
FirstUseDate=First use date
|
||||
QCFrequency=Quality control frequency (in days)
|
||||
|
||||
ShowAllLots=Show all lots
|
||||
HideLots=Hide lots
|
||||
#Traceability - qc status
|
||||
OutOfOrder=Out of order
|
||||
InWorkingOrder=In working order
|
||||
|
||||
@ -75,6 +75,7 @@ SellingPriceTTC=Selling price (inc. tax)
|
||||
SellingMinPriceTTC=Minimum Selling price (inc. tax)
|
||||
CostPriceDescription=This price field (excl. tax) can be used to capture the average amount this product costs to your company. It may be any price you calculate yourself, for example, from the average buying price plus average production and distribution cost.
|
||||
CostPriceUsage=This value could be used for margin calculation.
|
||||
ManufacturingPrice=Manufacturing price
|
||||
SoldAmount=Sold amount
|
||||
PurchasedAmount=Purchased amount
|
||||
NewPrice=New price
|
||||
@ -315,7 +316,7 @@ LastUpdated=Latest update
|
||||
CorrectlyUpdated=Correctly updated
|
||||
PropalMergePdfProductActualFile=Files use to add into PDF Azur are/is
|
||||
PropalMergePdfProductChooseFile=Select PDF files
|
||||
IncludingProductWithTag=Include products/services with tag
|
||||
IncludingProductWithTag=Including products/services with the tag
|
||||
DefaultPriceRealPriceMayDependOnCustomer=Default price, real price may depend on customer
|
||||
WarningSelectOneDocument=Please select at least one document
|
||||
DefaultUnitToShow=Unit
|
||||
@ -397,5 +398,13 @@ ActionAvailableOnVariantProductOnly=Action only available on the variant of prod
|
||||
ProductsPricePerCustomer=Product prices per customers
|
||||
ProductSupplierExtraFields=Additional Attributes (Supplier Prices)
|
||||
DeleteLinkedProduct=Delete the child product linked to the combination
|
||||
AmountUsedToUpdateWAP=Amount to use to update the Weighted Average Price
|
||||
PMPValue=Weighted average price
|
||||
PMPValueShort=WAP
|
||||
mandatoryperiod=Mandatory periods
|
||||
mandatoryPeriodNeedTobeSet=Attention periods not entered and mandatory
|
||||
mandatoryPeriodNeedTobeSetMsgValidate=A service requires a start and end period
|
||||
mandatoryHelper=Message to the user on the need to enter a start date and an end date on a service when creating / validating an invoice, commercial proposal, sales order. <br> This action is not blocking in the process of confirmation
|
||||
DefaultBOM=Default BOM
|
||||
DefaultBOMDesc=The default BOM recommended to use to manufacture this product. This field can be set only if nature of product is '%s'.
|
||||
Rank=Rank
|
||||
|
||||
@ -274,6 +274,7 @@ NewInter=New intervention
|
||||
OneLinePerTask=One line per task
|
||||
OneLinePerPeriod=One line per period
|
||||
OneLinePerTimeSpentLine=One line for each time spent declaration
|
||||
AddDetailDateAndDuration=With date and duration into line description
|
||||
RefTaskParent=Ref. Parent Task
|
||||
ProfitIsCalculatedWith=Profit is calculated using
|
||||
AddPersonToTask=Add also to tasks
|
||||
@ -281,3 +282,5 @@ UsageOrganizeEvent=Usage: Event Organization
|
||||
PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE=Classify project as closed when all its tasks are completed (100%% progress)
|
||||
PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with all tasks at 100 %% progress won't be affected: you will have to close them manually. This option only affects open projects.
|
||||
SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them
|
||||
ProjectTasksWithoutTimeSpent=Project tasks without time spent
|
||||
FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to <b>%s</b>.
|
||||
|
||||
@ -5,7 +5,7 @@ ProposalShort=Proposal
|
||||
ProposalsDraft=Draft commercial proposals
|
||||
ProposalsOpened=Open commercial proposals
|
||||
CommercialProposal=Commercial proposal
|
||||
PdfCommercialProposalTitle=Commercial proposal
|
||||
PdfCommercialProposalTitle=Proposal
|
||||
ProposalCard=Proposal card
|
||||
NewProp=New commercial proposal
|
||||
NewPropal=New proposal
|
||||
@ -89,4 +89,11 @@ IdProposal=Proposal ID
|
||||
IdProduct=Product ID
|
||||
PrParentLine=Proposal Parent Line
|
||||
LineBuyPriceHT=Buy Price Amount net of tax for line
|
||||
|
||||
SignPropal=Accept proposal
|
||||
RefusePropal=Refuse proposal
|
||||
Sign=Sign
|
||||
PropalAlreadySigned=Proposal already accepted
|
||||
PropalAlreadyRefused=Proposal already refused
|
||||
PropalSigned=Proposal accepted
|
||||
PropalRefused=Proposal refused
|
||||
ConfirmRefusePropal=Are you sure you want to refuse this commercial proposal?
|
||||
|
||||
@ -36,7 +36,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated
|
||||
SendReceptionByEMail=Send reception by email
|
||||
SendReceptionRef=Submission of reception %s
|
||||
ActionsOnReception=Events on reception
|
||||
ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the order card.
|
||||
ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record.
|
||||
ReceptionLine=Reception line
|
||||
ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent
|
||||
ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received
|
||||
@ -45,3 +45,4 @@ ReceptionsNumberingModules=Numbering module for receptions
|
||||
ReceptionsReceiptModel=Document templates for receptions
|
||||
NoMorePredefinedProductToDispatch=No more predefined products to dispatch
|
||||
ReceptionExist=A reception exists
|
||||
ByingPrice=Bying price
|
||||
|
||||
@ -6,6 +6,7 @@ CREATE_NEW_SALARY_WITHOUT_AUTO_PAYMENT=By default, leave empty the option "Autom
|
||||
Salary=Salary
|
||||
Salaries=Salaries
|
||||
NewSalary=New salary
|
||||
AddSalary=Add salary
|
||||
NewSalaryPayment=New salary card
|
||||
AddSalaryPayment=Add salary payment
|
||||
SalaryPayment=Salary payment
|
||||
@ -22,3 +23,4 @@ AllSalaries=All salaries
|
||||
SalariesStatistics=Salary statistics
|
||||
SalariesAndPayments=Salaries and payments
|
||||
ConfirmDeleteSalaryPayment=Do you want to delete this salary payment ?
|
||||
FillFieldFirst=Fill employee field first
|
||||
|
||||
@ -53,7 +53,7 @@ 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.
|
||||
ShipmentCreationIsDoneFromOrder=For the moment, creation of a new shipment is done from the Sales Order record.
|
||||
ShipmentLine=Shipment line
|
||||
ProductQtyInCustomersOrdersRunning=Product quantity from open sales orders
|
||||
ProductQtyInSuppliersOrdersRunning=Product quantity from open purchase orders
|
||||
|
||||
@ -12,9 +12,9 @@ AddWarehouse=Create warehouse
|
||||
AddOne=Add one
|
||||
DefaultWarehouse=Default warehouse
|
||||
WarehouseTarget=Target warehouse
|
||||
ValidateSending=Delete sending
|
||||
CancelSending=Cancel sending
|
||||
DeleteSending=Delete sending
|
||||
ValidateSending=Confirm shipment
|
||||
CancelSending=Cancel shipment
|
||||
DeleteSending=Delete shipment
|
||||
Stock=Stock
|
||||
Stocks=Stocks
|
||||
MissingStocks=Missing stocks
|
||||
@ -62,7 +62,8 @@ AllowAddLimitStockByWarehouse=Manage also value for minimum and desired stock pe
|
||||
RuleForWarehouse=Rule for warehouses
|
||||
WarehouseAskWarehouseOnThirparty=Set a warehouse on Third-parties
|
||||
WarehouseAskWarehouseDuringPropal=Set a warehouse on Commercial proposals
|
||||
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sale orders
|
||||
WarehouseAskWarehouseDuringOrder=Set a warehouse on Sales Orders
|
||||
WarehouseAskWarehouseDuringProject=Set a warehouse on Projects
|
||||
UserDefaultWarehouse=Set a warehouse on Users
|
||||
MainDefaultWarehouse=Default warehouse
|
||||
MainDefaultWarehouseUser=Use a default warehouse for each user
|
||||
@ -95,7 +96,7 @@ RealStock=Real Stock
|
||||
RealStockDesc=Physical/real stock is the stock currently in the warehouses.
|
||||
RealStockWillAutomaticallyWhen=The real stock will be modified according to this rule (as defined in the Stock module):
|
||||
VirtualStock=Virtual stock
|
||||
VirtualStockAtDate=Virtual stock at date
|
||||
VirtualStockAtDate=Virtual stock at a future date
|
||||
VirtualStockAtDateDesc=Virtual stock once all the pending orders that are planned to be processed before the chosen date will be finished
|
||||
VirtualStockDesc=Virtual stock is the calculated stock available once all open/pending actions (that affect stocks) are closed (purchase orders received, sales orders shipped, manufacturing orders produced, etc)
|
||||
AtDate=At date
|
||||
@ -261,3 +262,5 @@ ProductDoesNotExist=Product does not exist
|
||||
ErrorSameBatchNumber=Same batch number found in inventory list
|
||||
ProductBatchDoesNotExist=Product with batch/serial does not exist
|
||||
ProductBarcodeDoesNotExist=Product with barcode does not exist
|
||||
WarehouseId=Warehouse ID
|
||||
WarehouseRef=Warehouse Ref
|
||||
|
||||
@ -45,6 +45,8 @@ TicketSeverityShortNORMAL=Normal
|
||||
TicketSeverityShortHIGH=High
|
||||
TicketSeverityShortBLOCKING=Critical, Blocking
|
||||
|
||||
TicketCategoryShortOTHER=Other
|
||||
|
||||
ErrorBadEmailAddress=Field '%s' incorrect
|
||||
MenuTicketMyAssign=My tickets
|
||||
MenuTicketMyAssignNonClosed=My open tickets
|
||||
@ -180,7 +182,7 @@ MessageSuccessfullyAdded=Ticket added
|
||||
TicketMessageSuccessfullyAdded=Message successfully added
|
||||
TicketMessagesList=Message list
|
||||
NoMsgForThisTicket=No message for this ticket
|
||||
Properties=Classification
|
||||
TicketProperties=Classification
|
||||
LatestNewTickets=Latest %s newest tickets (not read)
|
||||
TicketSeverity=Severity
|
||||
ShowTicket=See ticket
|
||||
@ -316,6 +318,7 @@ BoxTicketLastXDays=Number of new tickets by days the last %s days
|
||||
BoxTicketLastXDayswidget = Number of new tickets by days the last X days
|
||||
BoxNoTicketLastXDays=No new tickets the last %s days
|
||||
BoxNumberOfTicketByDay=Number of new tickets by day
|
||||
BoxNewTicketVSClose=Number of today's new tickets versus today's closed tickets
|
||||
BoxNewTicketVSClose=Number of tickets versus closed tickets (today)
|
||||
TicketCreatedToday=Ticket created today
|
||||
TicketClosedToday=Ticket closed today
|
||||
KMFoundForTicketGroup=We found topics and FAQs that may answers your question, thanks to check them before submitting the ticket
|
||||
|
||||
@ -112,7 +112,7 @@ ConfirmCloneExpenseReport=Are you sure you want to clone this expense report ?
|
||||
ExpenseReportsIk=Configuration of mileage charges
|
||||
ExpenseReportsRules=Expense report rules
|
||||
ExpenseReportIkDesc=You can modify the calculation of kilometers expense by category and range who they are previously defined. <b>d</b> is the distance in kilometers
|
||||
ExpenseReportRulesDesc=You can create or update any rules of calculation. This part will be used when user will create a new expense report
|
||||
ExpenseReportRulesDesc=You can define max amount rules for expense reports. These rules will be applied when a new expense is added to an expense report
|
||||
expenseReportOffset=Offset
|
||||
expenseReportCoef=Coefficient
|
||||
expenseReportTotalForFive=Example with <u>d</u> = 5
|
||||
@ -127,19 +127,19 @@ ExpenseReportDomain=Domain to apply
|
||||
ExpenseReportLimitOn=Limit on
|
||||
ExpenseReportDateStart=Date start
|
||||
ExpenseReportDateEnd=Date end
|
||||
ExpenseReportLimitAmount=Limite amount
|
||||
ExpenseReportRestrictive=Restrictive
|
||||
ExpenseReportLimitAmount=Max amount
|
||||
ExpenseReportRestrictive=Exceeding forbidden
|
||||
AllExpenseReport=All type of expense report
|
||||
OnExpense=Expense line
|
||||
ExpenseReportRuleSave=Expense report rule saved
|
||||
ExpenseReportRuleErrorOnSave=Error: %s
|
||||
RangeNum=Range %d
|
||||
ExpenseReportConstraintViolationError=Constraint violation id [%s]: %s is superior to %s %s
|
||||
ExpenseReportConstraintViolationError=Max amount exceeded (rule %s): %s is higher than %s (Exceeding forbidden)
|
||||
byEX_DAY=by day (limitation to %s)
|
||||
byEX_MON=by month (limitation to %s)
|
||||
byEX_YEA=by year (limitation to %s)
|
||||
byEX_EXP=by line (limitation to %s)
|
||||
ExpenseReportConstraintViolationWarning=Constraint violation id [%s]: %s is superior to %s %s
|
||||
ExpenseReportConstraintViolationWarning=Max amount exceeded (rule %s): %s is higher than %s (Exceeding authorized)
|
||||
nolimitbyEX_DAY=by day (no limitation)
|
||||
nolimitbyEX_MON=by month (no limitation)
|
||||
nolimitbyEX_YEA=by year (no limitation)
|
||||
|
||||
@ -62,8 +62,8 @@ ListOfUsersInGroup=List of users in this group
|
||||
ListOfGroupsForUser=List of groups for this user
|
||||
LinkToCompanyContact=Link to third party / contact
|
||||
LinkedToDolibarrMember=Link to member
|
||||
LinkedToDolibarrUser=Link to Dolibarr user
|
||||
LinkedToDolibarrThirdParty=Link to Dolibarr third party
|
||||
LinkedToDolibarrUser=Link to user
|
||||
LinkedToDolibarrThirdParty=Link to third party
|
||||
CreateDolibarrLogin=Create a user
|
||||
CreateDolibarrThirdParty=Create a third party
|
||||
LoginAccountDisableInDolibarr=Account disabled in Dolibarr.
|
||||
|
||||
435
htdocs/langs/ar_DZ/accountancy.lang
Normal file
435
htdocs/langs/ar_DZ/accountancy.lang
Normal file
@ -0,0 +1,435 @@
|
||||
# Dolibarr language file - en_US - Accountancy (Double entries)
|
||||
Accountancy=Accountancy
|
||||
Accounting=Accounting
|
||||
ACCOUNTING_EXPORT_SEPARATORCSV=Column separator for export file
|
||||
ACCOUNTING_EXPORT_DATE=Date format for export file
|
||||
ACCOUNTING_EXPORT_PIECE=Export the number of piece
|
||||
ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Export with global account
|
||||
ACCOUNTING_EXPORT_LABEL=Export label
|
||||
ACCOUNTING_EXPORT_AMOUNT=Export amount
|
||||
ACCOUNTING_EXPORT_DEVISE=Export currency
|
||||
Selectformat=Select the format for the file
|
||||
ACCOUNTING_EXPORT_FORMAT=Select the format for the file
|
||||
ACCOUNTING_EXPORT_ENDLINE=Select the carriage return type
|
||||
ACCOUNTING_EXPORT_PREFIX_SPEC=Specify the prefix for the file name
|
||||
ThisService=This service
|
||||
ThisProduct=This product
|
||||
DefaultForService=Default for service
|
||||
DefaultForProduct=Default for product
|
||||
ProductForThisThirdparty=Product for this thirdparty
|
||||
ServiceForThisThirdparty=Service for this thirdparty
|
||||
CantSuggest=Can't suggest
|
||||
AccountancySetupDoneFromAccountancyMenu=Most setup of the accountancy is done from the menu %s
|
||||
ConfigAccountingExpert=Configuration of the module accounting (double entry)
|
||||
Journalization=Journalization
|
||||
Journals=Journals
|
||||
JournalFinancial=Financial journals
|
||||
BackToChartofaccounts=Return chart of accounts
|
||||
Chartofaccounts=Chart of accounts
|
||||
ChartOfSubaccounts=Chart of individual accounts
|
||||
ChartOfIndividualAccountsOfSubsidiaryLedger=Chart of individual accounts of the subsidiary ledger
|
||||
CurrentDedicatedAccountingAccount=Current dedicated account
|
||||
AssignDedicatedAccountingAccount=New account to assign
|
||||
InvoiceLabel=Invoice label
|
||||
OverviewOfAmountOfLinesNotBound=Overview of amount of lines not bound to an accounting account
|
||||
OverviewOfAmountOfLinesBound=Overview of amount of lines already bound to an accounting account
|
||||
OtherInfo=Other information
|
||||
DeleteCptCategory=Remove accounting account from group
|
||||
ConfirmDeleteCptCategory=Are you sure you want to remove this accounting account from the accounting account group?
|
||||
JournalizationInLedgerStatus=Status of journalization
|
||||
AlreadyInGeneralLedger=Already transferred to accounting journals and ledger
|
||||
NotYetInGeneralLedger=Not yet transferred to accouting journals and ledger
|
||||
GroupIsEmptyCheckSetup=Group is empty, check setup of the personalized accounting group
|
||||
DetailByAccount=Show detail by account
|
||||
AccountWithNonZeroValues=Accounts with non-zero values
|
||||
ListOfAccounts=List of accounts
|
||||
CountriesInEEC=Countries in EEC
|
||||
CountriesNotInEEC=Countries not in EEC
|
||||
CountriesInEECExceptMe=Countries in EEC except %s
|
||||
CountriesExceptMe=All countries except %s
|
||||
AccountantFiles=Export source documents
|
||||
ExportAccountingSourceDocHelp=With this tool, you can export the source events (list in CSV and PDFs) that were used to generate your accountancy.
|
||||
ExportAccountingSourceDocHelp2=To export your journals, use the menu entry %s - %s.
|
||||
VueByAccountAccounting=View by accounting account
|
||||
VueBySubAccountAccounting=View by accounting subaccount
|
||||
|
||||
MainAccountForCustomersNotDefined=Main accounting account for customers not defined in setup
|
||||
MainAccountForSuppliersNotDefined=Main accounting account for vendors not defined in setup
|
||||
MainAccountForUsersNotDefined=Main accounting account for users not defined in setup
|
||||
MainAccountForVatPaymentNotDefined=Main accounting account for VAT payment not defined in setup
|
||||
MainAccountForSubscriptionPaymentNotDefined=Main accounting account for subscription payment not defined in setup
|
||||
|
||||
AccountancyArea=Accounting area
|
||||
AccountancyAreaDescIntro=Usage of the accountancy module is done in several step:
|
||||
AccountancyAreaDescActionOnce=The following actions are usually executed one time only, or once per year...
|
||||
AccountancyAreaDescActionOnceBis=Next steps should be done to save you time in future by suggesting you the correct default accounting account when making the journalization (writing record in Journals and General ledger)
|
||||
AccountancyAreaDescActionFreq=The following actions are usually executed every month, week or day for very large companies...
|
||||
|
||||
AccountancyAreaDescJournalSetup=STEP %s: Create or check content of your journal list from menu %s
|
||||
AccountancyAreaDescChartModel=STEP %s: Check that a model of chart of account exists or create one from menu %s
|
||||
AccountancyAreaDescChart=STEP %s: Select and|or complete your chart of account from menu %s
|
||||
|
||||
AccountancyAreaDescVat=STEP %s: Define accounting accounts for each VAT Rates. For this, use the menu entry %s.
|
||||
AccountancyAreaDescDefault=STEP %s: Define default accounting accounts. For this, use the menu entry %s.
|
||||
AccountancyAreaDescExpenseReport=STEP %s: Define default accounting accounts for each type of expense report. For this, use the menu entry %s.
|
||||
AccountancyAreaDescSal=STEP %s: Define default accounting accounts for payment of salaries. For this, use the menu entry %s.
|
||||
AccountancyAreaDescContrib=STEP %s: Define default accounting accounts for special expenses (miscellaneous taxes). For this, use the menu entry %s.
|
||||
AccountancyAreaDescDonation=STEP %s: Define default accounting accounts for donation. For this, use the menu entry %s.
|
||||
AccountancyAreaDescSubscription=STEP %s: Define default accounting accounts for member subscription. For this, use the menu entry %s.
|
||||
AccountancyAreaDescMisc=STEP %s: Define mandatory default account and default accounting accounts for miscellaneous transactions. For this, use the menu entry %s.
|
||||
AccountancyAreaDescLoan=STEP %s: Define default accounting accounts for loans. For this, use the menu entry %s.
|
||||
AccountancyAreaDescBank=STEP %s: Define accounting accounts and journal code for each bank and financial accounts. For this, use the menu entry %s.
|
||||
AccountancyAreaDescProd=STEP %s: Define accounting accounts on your products/services. For this, use the menu entry %s.
|
||||
|
||||
AccountancyAreaDescBind=STEP %s: Check the binding between existing %s lines and accounting account is done, so application will be able to journalize transactions in Ledger in one click. Complete missing bindings. For this, use the menu entry %s.
|
||||
AccountancyAreaDescWriteRecords=STEP %s: Write transactions into the Ledger. For this, go into menu <strong>%s</strong>, and click into button <strong>%s</strong>.
|
||||
AccountancyAreaDescAnalyze=STEP %s: Add or edit existing transactions and generate reports and exports.
|
||||
|
||||
AccountancyAreaDescClosePeriod=STEP %s: Close period so we can't make modification in a future.
|
||||
|
||||
TheJournalCodeIsNotDefinedOnSomeBankAccount=A mandatory step in setup has not been completed (accounting code journal not defined for all bank accounts)
|
||||
Selectchartofaccounts=Select active chart of accounts
|
||||
ChangeAndLoad=Change and load
|
||||
Addanaccount=Add an accounting account
|
||||
AccountAccounting=Accounting account
|
||||
AccountAccountingShort=Account
|
||||
SubledgerAccount=Subledger account
|
||||
SubledgerAccountLabel=Subledger account label
|
||||
ShowAccountingAccount=Show accounting account
|
||||
ShowAccountingJournal=Show accounting journal
|
||||
ShowAccountingAccountInLedger=Show accounting account in ledger
|
||||
ShowAccountingAccountInJournals=Show accounting account in journals
|
||||
AccountAccountingSuggest=Accounting account suggested
|
||||
MenuDefaultAccounts=Default accounts
|
||||
MenuBankAccounts=Bank accounts
|
||||
MenuVatAccounts=Vat accounts
|
||||
MenuTaxAccounts=Tax accounts
|
||||
MenuExpenseReportAccounts=Expense report accounts
|
||||
MenuLoanAccounts=Loan accounts
|
||||
MenuProductsAccounts=Product accounts
|
||||
MenuClosureAccounts=Closure accounts
|
||||
MenuAccountancyClosure=Closure
|
||||
MenuAccountancyValidationMovements=Validate movements
|
||||
ProductsBinding=Products accounts
|
||||
TransferInAccounting=Transfer in accounting
|
||||
RegistrationInAccounting=Registration in accounting
|
||||
Binding=Binding to accounts
|
||||
CustomersVentilation=Customer invoice binding
|
||||
SuppliersVentilation=Vendor invoice binding
|
||||
ExpenseReportsVentilation=Expense report binding
|
||||
CreateMvts=Create new transaction
|
||||
UpdateMvts=Modification of a transaction
|
||||
ValidTransaction=Validate transaction
|
||||
WriteBookKeeping=Register transactions in accounting
|
||||
Bookkeeping=Ledger
|
||||
BookkeepingSubAccount=Subledger
|
||||
AccountBalance=Account balance
|
||||
ObjectsRef=Source object ref
|
||||
CAHTF=Total purchase vendor before tax
|
||||
TotalExpenseReport=Total expense report
|
||||
InvoiceLines=Lines of invoices to bind
|
||||
InvoiceLinesDone=Bound lines of invoices
|
||||
ExpenseReportLines=Lines of expense reports to bind
|
||||
ExpenseReportLinesDone=Bound lines of expense reports
|
||||
IntoAccount=Bind line with the accounting account
|
||||
TotalForAccount=Total accounting account
|
||||
|
||||
|
||||
Ventilate=Bind
|
||||
LineId=Id line
|
||||
Processing=Processing
|
||||
EndProcessing=Process terminated.
|
||||
SelectedLines=Selected lines
|
||||
Lineofinvoice=Line of invoice
|
||||
LineOfExpenseReport=Line of expense report
|
||||
NoAccountSelected=No accounting account selected
|
||||
VentilatedinAccount=Binded successfully to the accounting account
|
||||
NotVentilatedinAccount=Not bound to the accounting account
|
||||
XLineSuccessfullyBinded=%s products/services successfully bound to an accounting account
|
||||
XLineFailedToBeBinded=%s products/services were not bound to any accounting account
|
||||
|
||||
ACCOUNTING_LIMIT_LIST_VENTILATION=Maximum number of lines on list and bind page (recommended: 50)
|
||||
ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the page "Binding to do" by the most recent elements
|
||||
ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the page "Binding done" by the most recent elements
|
||||
|
||||
ACCOUNTING_LENGTH_DESCRIPTION=Truncate product & services description in listings after x chars (Best = 50)
|
||||
ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT=Truncate product & services account description form in listings after x chars (Best = 50)
|
||||
ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounting accounts (If you set value to 6 here, the account '706' will appear like '706000' on screen)
|
||||
ACCOUNTING_LENGTH_AACCOUNT=Length of the third-party accounting accounts (If you set value to 6 here, the account '401' will appear like '401000' on screen)
|
||||
ACCOUNTING_MANAGE_ZERO=Allow to manage different number of zeros at the end of an accounting account. Needed by some countries (like Switzerland). If set to off (default), you can set the following two parameters to ask the application to add virtual zeros.
|
||||
BANK_DISABLE_DIRECT_INPUT=Disable direct recording of transaction in bank account
|
||||
ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Enable draft export on journal
|
||||
ACCOUNTANCY_COMBO_FOR_AUX=Enable combo list for subsidiary account (may be slow if you have a lot of third parties, break ability to search on a part of value)
|
||||
ACCOUNTING_DATE_START_BINDING=Define a date to start binding & transfer in accountancy. Below this date, the transactions will not be transferred to accounting.
|
||||
ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=On accountancy transfer, select period show by default
|
||||
|
||||
ACCOUNTING_SELL_JOURNAL=Sell journal
|
||||
ACCOUNTING_PURCHASE_JOURNAL=Purchase journal
|
||||
ACCOUNTING_MISCELLANEOUS_JOURNAL=Miscellaneous journal
|
||||
ACCOUNTING_EXPENSEREPORT_JOURNAL=Expense report journal
|
||||
ACCOUNTING_SOCIAL_JOURNAL=Social journal
|
||||
ACCOUNTING_HAS_NEW_JOURNAL=Has new Journal
|
||||
|
||||
ACCOUNTING_RESULT_PROFIT=Result accounting account (Profit)
|
||||
ACCOUNTING_RESULT_LOSS=Result accounting account (Loss)
|
||||
ACCOUNTING_CLOSURE_DEFAULT_JOURNAL=Journal of closure
|
||||
|
||||
ACCOUNTING_ACCOUNT_TRANSFER_CASH=Accounting account of transitional bank transfer
|
||||
TransitionalAccount=Transitional bank transfer account
|
||||
|
||||
ACCOUNTING_ACCOUNT_SUSPENSE=Accounting account of wait
|
||||
DONATION_ACCOUNTINGACCOUNT=Accounting account to register donations
|
||||
ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Accounting account to register subscriptions
|
||||
|
||||
ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Accounting account by default to register customer deposit
|
||||
|
||||
ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for the bought products (used if not defined in the product sheet)
|
||||
ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Accounting account by default for the bought products in EEC (used if not defined in the product sheet)
|
||||
ACCOUNTING_PRODUCT_BUY_EXPORT_ACCOUNT=Accounting account by default for the bought products and imported out of EEC (used if not defined in the product sheet)
|
||||
ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Accounting account by default for the sold products (used if not defined in the product sheet)
|
||||
ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT=Accounting account by default for the products sold in EEC (used if not defined in the product sheet)
|
||||
ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT=Accounting account by default for the products sold and exported out of EEC (used if not defined in the product sheet)
|
||||
|
||||
ACCOUNTING_SERVICE_BUY_ACCOUNT=Accounting account by default for the bought services (used if not defined in the service sheet)
|
||||
ACCOUNTING_SERVICE_BUY_INTRA_ACCOUNT=Accounting account by default for the bought services in EEC (used if not defined in the service sheet)
|
||||
ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT=Accounting account by default for the bought services and imported out of EEC (used if not defined in the service sheet)
|
||||
ACCOUNTING_SERVICE_SOLD_ACCOUNT=Accounting account by default for the sold services (used if not defined in the service sheet)
|
||||
ACCOUNTING_SERVICE_SOLD_INTRA_ACCOUNT=Accounting account by default for the services sold in EEC (used if not defined in the service sheet)
|
||||
ACCOUNTING_SERVICE_SOLD_EXPORT_ACCOUNT=Accounting account by default for the services sold and exported out of EEC (used if not defined in the service sheet)
|
||||
|
||||
Doctype=Type of document
|
||||
Docdate=Date
|
||||
Docref=Reference
|
||||
LabelAccount=Label account
|
||||
LabelOperation=Label operation
|
||||
Sens=Direction
|
||||
AccountingDirectionHelp=For an accounting account of a customer, use Credit to record a payment you have received<br>For an accounting account of a supplier, use Debit to record a payment you made
|
||||
LetteringCode=Lettering code
|
||||
Lettering=Lettering
|
||||
Codejournal=Journal
|
||||
JournalLabel=Journal label
|
||||
NumPiece=Piece number
|
||||
TransactionNumShort=Num. transaction
|
||||
AccountingCategory=Custom group
|
||||
GroupByAccountAccounting=Group by general ledger account
|
||||
GroupBySubAccountAccounting=Group by subledger account
|
||||
AccountingAccountGroupsDesc=You can define here some groups of accounting account. They will be used for personalized accounting reports.
|
||||
ByAccounts=By accounts
|
||||
ByPredefinedAccountGroups=By predefined groups
|
||||
ByPersonalizedAccountGroups=By personalized groups
|
||||
ByYear=By year
|
||||
NotMatch=Not Set
|
||||
DeleteMvt=Delete some operation lines from accounting
|
||||
DelMonth=Month to delete
|
||||
DelYear=Year to delete
|
||||
DelJournal=Journal to delete
|
||||
ConfirmDeleteMvt=This will delete all operation lines of the accounting for the year/month and/or for a specific journal (At least one criterion is required). You will have to reuse the feature '%s' to have the deleted record back in the ledger.
|
||||
ConfirmDeleteMvtPartial=This will delete the transaction from the accounting (all operation lines related to the same transaction will be deleted)
|
||||
FinanceJournal=Finance journal
|
||||
ExpenseReportsJournal=Expense reports journal
|
||||
DescFinanceJournal=Finance journal including all the types of payments by bank account
|
||||
DescJournalOnlyBindedVisible=This is a view of record that are bound to an accounting account and can be recorded into the Journals and Ledger.
|
||||
VATAccountNotDefined=Account for VAT not defined
|
||||
ThirdpartyAccountNotDefined=Account for third party not defined
|
||||
ProductAccountNotDefined=Account for product not defined
|
||||
FeeAccountNotDefined=Account for fee not defined
|
||||
BankAccountNotDefined=Account for bank not defined
|
||||
CustomerInvoicePayment=Payment of invoice customer
|
||||
ThirdPartyAccount=Third-party account
|
||||
NewAccountingMvt=New transaction
|
||||
NumMvts=Numero of transaction
|
||||
ListeMvts=List of movements
|
||||
ErrorDebitCredit=Debit and Credit cannot have a value at the same time
|
||||
AddCompteFromBK=Add accounting accounts to the group
|
||||
ReportThirdParty=List third-party account
|
||||
DescThirdPartyReport=Consult here the list of third-party customers and vendors and their accounting accounts
|
||||
ListAccounts=List of the accounting accounts
|
||||
UnknownAccountForThirdparty=Unknown third-party account. We will use %s
|
||||
UnknownAccountForThirdpartyBlocking=Unknown third-party account. Blocking error
|
||||
ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Subledger account not defined or third party or user unknown. We will use %s
|
||||
ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored=Third-party unknown and subledger not defined on the payment. We will keep the subledger account value empty.
|
||||
ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=Subledger account not defined or third party or user unknown. Blocking error.
|
||||
UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Unknown third-party account and waiting account not defined. Blocking error
|
||||
PaymentsNotLinkedToProduct=Payment not linked to any product / service
|
||||
OpeningBalance=Opening balance
|
||||
ShowOpeningBalance=Show opening balance
|
||||
HideOpeningBalance=Hide opening balance
|
||||
ShowSubtotalByGroup=Show subtotal by level
|
||||
|
||||
Pcgtype=Group of account
|
||||
PcgtypeDesc=Group of account are used as predefined 'filter' and 'grouping' criteria for some accounting reports. For example, 'INCOME' or 'EXPENSE' are used as groups for accounting accounts of products to build the expense/income report.
|
||||
|
||||
Reconcilable=Reconcilable
|
||||
|
||||
TotalVente=Total turnover before tax
|
||||
TotalMarge=Total sales margin
|
||||
|
||||
DescVentilCustomer=Consult here the list of customer invoice lines bound (or not) to a product accounting account
|
||||
DescVentilMore=In most cases, if you use predefined products or services and you set the account number on the product/service card, the application will be able to make all the binding between your invoice lines and the accounting account of your chart of accounts, just in one click with the button <strong>"%s"</strong>. If account was not set on product/service cards or if you still have some lines not bound to an account, you will have to make a manual binding from the menu "<strong>%s</strong>".
|
||||
DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their product accounting account
|
||||
DescVentilTodoCustomer=Bind invoice lines not already bound with a product accounting account
|
||||
ChangeAccount=Change the product/service accounting account for selected lines with the following accounting account:
|
||||
Vide=-
|
||||
DescVentilSupplier=Consult here the list of vendor invoice lines bound or not yet bound to a product accounting account (only record not already transfered in accountancy are visible)
|
||||
DescVentilDoneSupplier=Consult here the list of the lines of vendor invoices and their accounting account
|
||||
DescVentilTodoExpenseReport=Bind expense report lines not already bound with a fee accounting account
|
||||
DescVentilExpenseReport=Consult here the list of expense report lines bound (or not) to a fee accounting account
|
||||
DescVentilExpenseReportMore=If you setup accounting account on type of expense report lines, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button <strong>"%s"</strong>. If account was not set on fees dictionary or if you still have some lines not bound to any account, you will have to make a manual binding from the menu "<strong>%s</strong>".
|
||||
DescVentilDoneExpenseReport=Consult here the list of the lines of expenses reports and their fees accounting account
|
||||
|
||||
Closure=Annual closure
|
||||
DescClosure=Consult here the number of movements by month who are not validated & fiscal years already open
|
||||
OverviewOfMovementsNotValidated=Step 1/ Overview of movements not validated. (Necessary to close a fiscal year)
|
||||
AllMovementsWereRecordedAsValidated=All movements were recorded as validated
|
||||
NotAllMovementsCouldBeRecordedAsValidated=Not all movements could be recorded as validated
|
||||
ValidateMovements=Validate movements
|
||||
DescValidateMovements=Any modification or deletion of writing, lettering and deletes will be prohibited. All entries for an exercise must be validated otherwise closing will not be possible
|
||||
|
||||
ValidateHistory=Bind Automatically
|
||||
AutomaticBindingDone=Automatic binding done
|
||||
|
||||
ErrorAccountancyCodeIsAlreadyUse=Error, you cannot delete this accounting account because it is used
|
||||
MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s | Credit = %s
|
||||
Balancing=Balancing
|
||||
FicheVentilation=Binding card
|
||||
GeneralLedgerIsWritten=Transactions are written in the Ledger
|
||||
GeneralLedgerSomeRecordWasNotRecorded=Some of the transactions could not be journalized. If there is no other error message, this is probably because they were already journalized.
|
||||
NoNewRecordSaved=No more record to journalize
|
||||
ListOfProductsWithoutAccountingAccount=List of products not bound to any accounting account
|
||||
ChangeBinding=Change the binding
|
||||
Accounted=Accounted in ledger
|
||||
NotYetAccounted=Not yet transferred to accounting
|
||||
ShowTutorial=Show Tutorial
|
||||
NotReconciled=Not reconciled
|
||||
WarningRecordWithoutSubledgerAreExcluded=Warning, all operations without subledger account defined are filtered and excluded from this view
|
||||
|
||||
## Admin
|
||||
BindingOptions=Binding options
|
||||
ApplyMassCategories=Apply mass categories
|
||||
AddAccountFromBookKeepingWithNoCategories=Available account not yet in the personalized group
|
||||
CategoryDeleted=Category for the accounting account has been removed
|
||||
AccountingJournals=Accounting journals
|
||||
AccountingJournal=Accounting journal
|
||||
NewAccountingJournal=New accounting journal
|
||||
ShowAccountingJournal=Show accounting journal
|
||||
NatureOfJournal=Nature of Journal
|
||||
AccountingJournalType1=Miscellaneous operations
|
||||
AccountingJournalType2=Sales
|
||||
AccountingJournalType3=Purchases
|
||||
AccountingJournalType4=Bank
|
||||
AccountingJournalType5=Expenses report
|
||||
AccountingJournalType8=Inventory
|
||||
AccountingJournalType9=Has-new
|
||||
ErrorAccountingJournalIsAlreadyUse=This journal is already use
|
||||
AccountingAccountForSalesTaxAreDefinedInto=Note: Accounting account for Sales tax are defined into menu <b>%s</b> - <b>%s</b>
|
||||
NumberOfAccountancyEntries=Number of entries
|
||||
NumberOfAccountancyMovements=Number of movements
|
||||
ACCOUNTING_DISABLE_BINDING_ON_SALES=Disable binding & transfer in accountancy on sales (customer invoices will not be taken into account in accounting)
|
||||
ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Disable binding & transfer in accountancy on purchases (vendor invoices will not be taken into account in accounting)
|
||||
ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Disable binding & transfer in accountancy on expense reports (expense reports will not be taken into account in accounting)
|
||||
|
||||
## Export
|
||||
NotifiedExportDate=Flag exported lines as exported (modification of the lines will not be possible)
|
||||
NotifiedValidationDate=Validate the exported entries (modification or deletion of the lines will not be possible)
|
||||
ConfirmExportFile=Confirmation of the generation of the accounting export file ?
|
||||
ExportDraftJournal=Export draft journal
|
||||
Modelcsv=Model of export
|
||||
Selectmodelcsv=Select a model of export
|
||||
Modelcsv_normal=Classic export
|
||||
Modelcsv_CEGID=Export for CEGID Expert Comptabilité
|
||||
Modelcsv_COALA=Export for Sage Coala
|
||||
Modelcsv_bob50=Export for Sage BOB 50
|
||||
Modelcsv_ciel=Export for Sage50, Ciel Compta or Compta Evo. (Format XIMPORT)
|
||||
Modelcsv_quadratus=Export for Quadratus QuadraCompta
|
||||
Modelcsv_ebp=Export for EBP
|
||||
Modelcsv_cogilog=Export for Cogilog
|
||||
Modelcsv_agiris=Export for Agiris Isacompta
|
||||
Modelcsv_LDCompta=Export for LD Compta (v9) (Test)
|
||||
Modelcsv_LDCompta10=Export for LD Compta (v10 & higher)
|
||||
Modelcsv_openconcerto=Export for OpenConcerto (Test)
|
||||
Modelcsv_configurable=Export CSV Configurable
|
||||
Modelcsv_FEC=Export FEC
|
||||
Modelcsv_FEC2=Export FEC (With dates generation writing / document reversed)
|
||||
Modelcsv_Sage50_Swiss=Export for Sage 50 Switzerland
|
||||
Modelcsv_winfic=Export for Winfic - eWinfic - WinSis Compta
|
||||
Modelcsv_Gestinumv3=Export for Gestinum (v3)
|
||||
Modelcsv_Gestinumv5=Export for Gestinum (v5)
|
||||
Modelcsv_charlemagne=Export for Aplim Charlemagne
|
||||
ChartofaccountsId=Chart of accounts Id
|
||||
|
||||
## Tools - Init accounting account on product / service
|
||||
InitAccountancy=Init accountancy
|
||||
InitAccountancyDesc=This page can be used to initialize an accounting account on products and services that does not have accounting account defined for sales and purchases.
|
||||
DefaultBindingDesc=This page can be used to set a default account to use to link transactions record about payment salaries, donation, taxes and vat when no specific accounting account were already set.
|
||||
DefaultClosureDesc=This page can be used to set parameters used for accounting closures.
|
||||
Options=Options
|
||||
OptionModeProductSell=Mode sales
|
||||
OptionModeProductSellIntra=Mode sales exported in EEC
|
||||
OptionModeProductSellExport=Mode sales exported in other countries
|
||||
OptionModeProductBuy=Mode purchases
|
||||
OptionModeProductBuyIntra=Mode purchases imported in EEC
|
||||
OptionModeProductBuyExport=Mode purchased imported from other countries
|
||||
OptionModeProductSellDesc=Show all products with accounting account for sales.
|
||||
OptionModeProductSellIntraDesc=Show all products with accounting account for sales in EEC.
|
||||
OptionModeProductSellExportDesc=Show all products with accounting account for other foreign sales.
|
||||
OptionModeProductBuyDesc=Show all products with accounting account for purchases.
|
||||
OptionModeProductBuyIntraDesc=Show all products with accounting account for purchases in EEC.
|
||||
OptionModeProductBuyExportDesc=Show all products with accounting account for other foreign purchases.
|
||||
CleanFixHistory=Remove accounting code from lines that not exists into charts of account
|
||||
CleanHistory=Reset all bindings for selected year
|
||||
PredefinedGroups=Predefined groups
|
||||
WithoutValidAccount=Without valid dedicated account
|
||||
WithValidAccount=With valid dedicated account
|
||||
ValueNotIntoChartOfAccount=This value of accounting account does not exist into chart of account
|
||||
AccountRemovedFromGroup=Account removed from group
|
||||
SaleLocal=Local sale
|
||||
SaleExport=Export sale
|
||||
SaleEEC=Sale in EEC
|
||||
SaleEECWithVAT=Sale in EEC with a VAT not null, so we suppose this is NOT an intracommunautary sale and the suggested account is the standard product account.
|
||||
SaleEECWithoutVATNumber=Sale in EEC with no VAT but the VAT ID of thirdparty is not defined. We fallback on the product account for standard sales. You can fix the VAT ID of thirdparty or the product account if needed.
|
||||
|
||||
## Dictionary
|
||||
Range=Range of accounting account
|
||||
Calculated=Calculated
|
||||
Formula=Formula
|
||||
|
||||
## Error
|
||||
SomeMandatoryStepsOfSetupWereNotDone=Some mandatory steps of setup was not done, please complete them
|
||||
ErrorNoAccountingCategoryForThisCountry=No accounting account group available for country %s (See Home - Setup - Dictionaries)
|
||||
ErrorInvoiceContainsLinesNotYetBounded=You try to journalize some lines of the invoice <strong>%s</strong>, but some other lines are not yet bounded to accounting account. Journalization of all invoice lines for this invoice are refused.
|
||||
ErrorInvoiceContainsLinesNotYetBoundedShort=Some lines on invoice are not bound to accounting account.
|
||||
ExportNotSupported=The export format setuped is not supported into this page
|
||||
BookeppingLineAlreayExists=Lines already existing into bookkeeping
|
||||
NoJournalDefined=No journal defined
|
||||
Binded=Lines bound
|
||||
ToBind=Lines to bind
|
||||
UseMenuToSetBindindManualy=Lines not yet bound, use menu <a href="%s">%s</a> to make the binding manually
|
||||
|
||||
## Import
|
||||
ImportAccountingEntries=Accounting entries
|
||||
ImportAccountingEntriesFECFormat=Accounting entries - FEC format
|
||||
FECFormatJournalCode=Code journal (JournalCode)
|
||||
FECFormatJournalLabel=Label journal (JournalLib)
|
||||
FECFormatEntryNum=Piece number (EcritureNum)
|
||||
FECFormatEntryDate=Piece date (EcritureDate)
|
||||
FECFormatGeneralAccountNumber=General account number (CompteNum)
|
||||
FECFormatGeneralAccountLabel=General account label (CompteLib)
|
||||
FECFormatSubledgerAccountNumber=Subledger account number (CompAuxNum)
|
||||
FECFormatSubledgerAccountLabel=Subledger account number (CompAuxLib)
|
||||
FECFormatPieceRef=Piece ref (PieceRef)
|
||||
FECFormatPieceDate=Piece date creation (PieceDate)
|
||||
FECFormatLabelOperation=Label operation (EcritureLib)
|
||||
FECFormatDebit=Debit (Debit)
|
||||
FECFormatCredit=Credit (Credit)
|
||||
FECFormatReconcilableCode=Reconcilable code (EcritureLet)
|
||||
FECFormatReconcilableDate=Reconcilable date (DateLet)
|
||||
FECFormatValidateDate=Piece date validated (ValidDate)
|
||||
FECFormatMulticurrencyAmount=Multicurrency amount (Montantdevise)
|
||||
FECFormatMulticurrencyCode=Multicurrency code (Idevise)
|
||||
|
||||
DateExport=Date export
|
||||
WarningReportNotReliable=Warning, this report is not based on the Ledger, so does not contains transaction modified manually in the Ledger. If your journalization is up to date, the bookkeeping view is more accurate.
|
||||
ExpenseReportJournal=Expense Report Journal
|
||||
InventoryJournal=Inventory Journal
|
||||
|
||||
NAccounts=%s accounts
|
||||
2211
htdocs/langs/ar_DZ/admin.lang
Normal file
2211
htdocs/langs/ar_DZ/admin.lang
Normal file
File diff suppressed because it is too large
Load Diff
174
htdocs/langs/ar_DZ/agenda.lang
Normal file
174
htdocs/langs/ar_DZ/agenda.lang
Normal file
@ -0,0 +1,174 @@
|
||||
# Dolibarr language file - Source file is en_US - agenda
|
||||
IdAgenda=ID event
|
||||
Actions=Events
|
||||
Agenda=Agenda
|
||||
TMenuAgenda=Agenda
|
||||
Agendas=Agendas
|
||||
LocalAgenda=Default calendar
|
||||
ActionsOwnedBy=Event owned by
|
||||
ActionsOwnedByShort=Owner
|
||||
AffectedTo=Assigned to
|
||||
Event=Event
|
||||
Events=Events
|
||||
EventsNb=Number of events
|
||||
ListOfActions=List of events
|
||||
EventReports=Event reports
|
||||
Location=Location
|
||||
ToUserOfGroup=Event assigned to any user in the group
|
||||
EventOnFullDay=Event on all day(s)
|
||||
MenuToDoActions=All incomplete events
|
||||
MenuDoneActions=All terminated events
|
||||
MenuToDoMyActions=My incomplete events
|
||||
MenuDoneMyActions=My terminated events
|
||||
ListOfEvents=List of events (default calendar)
|
||||
ActionsAskedBy=Events reported by
|
||||
ActionsToDoBy=Events assigned to
|
||||
ActionsDoneBy=Events done by
|
||||
ActionAssignedTo=Event assigned to
|
||||
ViewCal=Month view
|
||||
ViewDay=Day view
|
||||
ViewWeek=Week view
|
||||
ViewPerUser=Per user view
|
||||
ViewPerType=Per type view
|
||||
AutoActions= Automatic filling
|
||||
AgendaAutoActionDesc= Here you may define events which you want Dolibarr to create automatically in Agenda. If nothing is checked, only manual actions will be included in logs and displayed in Agenda. Automatic tracking of business actions done on objects (validation, status change) will not be saved.
|
||||
AgendaSetupOtherDesc= This page provides options to allow the export of your Dolibarr events into an external calendar (Thunderbird, Google Calendar etc...)
|
||||
AgendaExtSitesDesc=This page allows to declare external sources of calendars to see their events into Dolibarr agenda.
|
||||
ActionsEvents=Events for which Dolibarr will create an action in agenda automatically
|
||||
EventRemindersByEmailNotEnabled=Event reminders by email was not enabled into %s module setup.
|
||||
##### Agenda event labels #####
|
||||
NewCompanyToDolibarr=Third party %s created
|
||||
COMPANY_MODIFYInDolibarr=Third party %s modified
|
||||
COMPANY_DELETEInDolibarr=Third party %s deleted
|
||||
ContractValidatedInDolibarr=Contract %s validated
|
||||
CONTRACT_DELETEInDolibarr=Contract %s deleted
|
||||
PropalClosedSignedInDolibarr=Proposal %s signed
|
||||
PropalClosedRefusedInDolibarr=Proposal %s refused
|
||||
PropalValidatedInDolibarr=Proposal %s validated
|
||||
PropalClassifiedBilledInDolibarr=Proposal %s classified billed
|
||||
InvoiceValidatedInDolibarr=Invoice %s validated
|
||||
InvoiceValidatedInDolibarrFromPos=Invoice %s validated from POS
|
||||
InvoiceBackToDraftInDolibarr=Invoice %s go back to draft status
|
||||
InvoiceDeleteDolibarr=Invoice %s deleted
|
||||
InvoicePaidInDolibarr=Invoice %s changed to paid
|
||||
InvoiceCanceledInDolibarr=Invoice %s canceled
|
||||
MemberValidatedInDolibarr=Member %s validated
|
||||
MemberModifiedInDolibarr=Member %s modified
|
||||
MemberResiliatedInDolibarr=Member %s terminated
|
||||
MemberDeletedInDolibarr=Member %s deleted
|
||||
MemberSubscriptionAddedInDolibarr=Subscription %s for member %s added
|
||||
MemberSubscriptionModifiedInDolibarr=Subscription %s for member %s modified
|
||||
MemberSubscriptionDeletedInDolibarr=Subscription %s for member %s deleted
|
||||
ShipmentValidatedInDolibarr=Shipment %s validated
|
||||
ShipmentClassifyClosedInDolibarr=Shipment %s classified billed
|
||||
ShipmentUnClassifyCloseddInDolibarr=Shipment %s classified re-open
|
||||
ShipmentBackToDraftInDolibarr=Shipment %s go back to draft status
|
||||
ShipmentDeletedInDolibarr=Shipment %s deleted
|
||||
ShipmentCanceledInDolibarr=Shipment %s canceled
|
||||
ReceptionValidatedInDolibarr=Reception %s validated
|
||||
OrderCreatedInDolibarr=Order %s created
|
||||
OrderValidatedInDolibarr=Order %s validated
|
||||
OrderDeliveredInDolibarr=Order %s classified delivered
|
||||
OrderCanceledInDolibarr=Order %s canceled
|
||||
OrderBilledInDolibarr=Order %s classified billed
|
||||
OrderApprovedInDolibarr=Order %s approved
|
||||
OrderRefusedInDolibarr=Order %s refused
|
||||
OrderBackToDraftInDolibarr=Order %s go back to draft status
|
||||
ProposalSentByEMail=Commercial proposal %s sent by email
|
||||
ContractSentByEMail=Contract %s sent by email
|
||||
OrderSentByEMail=Sales order %s sent by email
|
||||
InvoiceSentByEMail=Customer invoice %s sent by email
|
||||
SupplierOrderSentByEMail=Purchase order %s sent by email
|
||||
ORDER_SUPPLIER_DELETEInDolibarr=Purchase order %s deleted
|
||||
SupplierInvoiceSentByEMail=Vendor invoice %s sent by email
|
||||
ShippingSentByEMail=Shipment %s sent by email
|
||||
ShippingValidated= Shipment %s validated
|
||||
InterventionSentByEMail=Intervention %s sent by email
|
||||
ProposalDeleted=Proposal deleted
|
||||
OrderDeleted=Order deleted
|
||||
InvoiceDeleted=Invoice deleted
|
||||
DraftInvoiceDeleted=Draft invoice deleted
|
||||
CONTACT_CREATEInDolibarr=Contact %s created
|
||||
CONTACT_MODIFYInDolibarr=Contact %s modified
|
||||
CONTACT_DELETEInDolibarr=Contact %s deleted
|
||||
PRODUCT_CREATEInDolibarr=Product %s created
|
||||
PRODUCT_MODIFYInDolibarr=Product %s modified
|
||||
PRODUCT_DELETEInDolibarr=Product %s deleted
|
||||
HOLIDAY_CREATEInDolibarr=Request for leave %s created
|
||||
HOLIDAY_MODIFYInDolibarr=Request for leave %s modified
|
||||
HOLIDAY_APPROVEInDolibarr=Request for leave %s approved
|
||||
HOLIDAY_VALIDATEInDolibarr=Request for leave %s validated
|
||||
HOLIDAY_DELETEInDolibarr=Request for leave %s deleted
|
||||
EXPENSE_REPORT_CREATEInDolibarr=Expense report %s created
|
||||
EXPENSE_REPORT_VALIDATEInDolibarr=Expense report %s validated
|
||||
EXPENSE_REPORT_APPROVEInDolibarr=Expense report %s approved
|
||||
EXPENSE_REPORT_DELETEInDolibarr=Expense report %s deleted
|
||||
EXPENSE_REPORT_REFUSEDInDolibarr=Expense report %s refused
|
||||
PROJECT_CREATEInDolibarr=Project %s created
|
||||
PROJECT_MODIFYInDolibarr=Project %s modified
|
||||
PROJECT_DELETEInDolibarr=Project %s deleted
|
||||
TICKET_CREATEInDolibarr=Ticket %s created
|
||||
TICKET_MODIFYInDolibarr=Ticket %s modified
|
||||
TICKET_ASSIGNEDInDolibarr=Ticket %s assigned
|
||||
TICKET_CLOSEInDolibarr=Ticket %s closed
|
||||
TICKET_DELETEInDolibarr=Ticket %s deleted
|
||||
BOM_VALIDATEInDolibarr=BOM validated
|
||||
BOM_UNVALIDATEInDolibarr=BOM unvalidated
|
||||
BOM_CLOSEInDolibarr=BOM disabled
|
||||
BOM_REOPENInDolibarr=BOM reopen
|
||||
BOM_DELETEInDolibarr=BOM deleted
|
||||
MRP_MO_VALIDATEInDolibarr=MO validated
|
||||
MRP_MO_UNVALIDATEInDolibarr=MO set to draft status
|
||||
MRP_MO_PRODUCEDInDolibarr=MO produced
|
||||
MRP_MO_DELETEInDolibarr=MO deleted
|
||||
MRP_MO_CANCELInDolibarr=MO canceled
|
||||
PAIDInDolibarr=%s paid
|
||||
##### End agenda events #####
|
||||
AgendaModelModule=Document templates for event
|
||||
DateActionStart=Start date
|
||||
DateActionEnd=End date
|
||||
AgendaUrlOptions1=You can also add following parameters to filter output:
|
||||
AgendaUrlOptions3=<b>logina=%s</b> to restrict output to actions owned by a user <b>%s</b>.
|
||||
AgendaUrlOptionsNotAdmin=<b>logina=!%s</b> to restrict output to actions not owned by user <b>%s</b>.
|
||||
AgendaUrlOptions4=<b>logint=%s</b> to restrict output to actions assigned to user <b>%s</b> (owner and others).
|
||||
AgendaUrlOptionsProject=<b>project=__PROJECT_ID__</b> to restrict output to actions linked to project <b>__PROJECT_ID__</b>.
|
||||
AgendaUrlOptionsNotAutoEvent=<b>notactiontype=systemauto</b> to exclude automatic events.
|
||||
AgendaUrlOptionsIncludeHolidays=<b>includeholidays=1</b> to include events of holidays.
|
||||
AgendaShowBirthdayEvents=Birthdays of contacts
|
||||
AgendaHideBirthdayEvents=Hide birthdays of 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 in global setup) in Agenda. Does not affect external calendars defined by users.
|
||||
ExtSitesNbOfAgenda=Number of calendars
|
||||
AgendaExtNb=Calendar no. %s
|
||||
ExtSiteUrlAgenda=URL to access .ical file
|
||||
ExtSiteNoLabel=No Description
|
||||
VisibleTimeRange=Visible time range
|
||||
VisibleDaysRange=Visible days range
|
||||
AddEvent=Create event
|
||||
MyAvailability=My availability
|
||||
ActionType=Event type
|
||||
DateActionBegin=Start event date
|
||||
ConfirmCloneEvent=Are you sure you want to clone the event <b>%s</b>?
|
||||
RepeatEvent=Repeat event
|
||||
OnceOnly=Once only
|
||||
EveryWeek=Every week
|
||||
EveryMonth=Every month
|
||||
DayOfMonth=Day of month
|
||||
DayOfWeek=Day of week
|
||||
DateStartPlusOne=Date start + 1 hour
|
||||
SetAllEventsToTodo=Set all events to todo
|
||||
SetAllEventsToInProgress=Set all events to in progress
|
||||
SetAllEventsToFinished=Set all events to finished
|
||||
ReminderTime=Reminder period before the event
|
||||
TimeType=Duration type
|
||||
ReminderType=Callback type
|
||||
AddReminder=Create an automatic reminder notification for this event
|
||||
ErrorReminderActionCommCreation=Error creating the reminder notification for this event
|
||||
BrowserPush=Browser Popup Notification
|
||||
ActiveByDefault=Enabled by default
|
||||
67
htdocs/langs/ar_DZ/assets.lang
Normal file
67
htdocs/langs/ar_DZ/assets.lang
Normal file
@ -0,0 +1,67 @@
|
||||
# Copyright (C) 2018 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||
#
|
||||
# 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
#
|
||||
# Generic
|
||||
#
|
||||
Assets = Assets
|
||||
NewAsset = New asset
|
||||
AccountancyCodeAsset = Accounting code (asset)
|
||||
AccountancyCodeDepreciationAsset = Accounting code (depreciation asset account)
|
||||
AccountancyCodeDepreciationExpense = Accounting code (depreciation expense account)
|
||||
NewAssetType=New asset type
|
||||
AssetsTypeSetup=Asset type setup
|
||||
AssetTypeModified=Asset type modified
|
||||
AssetType=Asset type
|
||||
AssetsLines=Assets
|
||||
DeleteType=Delete
|
||||
DeleteAnAssetType=Delete an asset type
|
||||
ConfirmDeleteAssetType=Are you sure you want to delete this asset type?
|
||||
ShowTypeCard=Show type '%s'
|
||||
|
||||
# Module label 'ModuleAssetsName'
|
||||
ModuleAssetsName = Assets
|
||||
# Module description 'ModuleAssetsDesc'
|
||||
ModuleAssetsDesc = Assets description
|
||||
|
||||
#
|
||||
# Admin page
|
||||
#
|
||||
AssetsSetup = Assets setup
|
||||
Settings = Settings
|
||||
AssetsSetupPage = Assets setup page
|
||||
ExtraFieldsAssetsType = Complementary attributes (Asset type)
|
||||
AssetsType=Asset type
|
||||
AssetsTypeId=Asset type id
|
||||
AssetsTypeLabel=Asset type label
|
||||
AssetsTypes=Assets types
|
||||
|
||||
#
|
||||
# Menu
|
||||
#
|
||||
MenuAssets = Assets
|
||||
MenuNewAsset = New asset
|
||||
MenuTypeAssets = Type assets
|
||||
MenuListAssets = List
|
||||
MenuNewTypeAssets = New
|
||||
MenuListTypeAssets = List
|
||||
|
||||
#
|
||||
# Module
|
||||
#
|
||||
Asset=Asset
|
||||
NewAssetType=New asset type
|
||||
NewAsset=New asset
|
||||
ConfirmDeleteAsset=Are you sure you want to delete this asset ?
|
||||
185
htdocs/langs/ar_DZ/banks.lang
Normal file
185
htdocs/langs/ar_DZ/banks.lang
Normal file
@ -0,0 +1,185 @@
|
||||
# Dolibarr language file - Source file is en_US - banks
|
||||
Bank=Bank
|
||||
MenuBankCash=Banks | Cash
|
||||
MenuVariousPayment=Miscellaneous payments
|
||||
MenuNewVariousPayment=New Miscellaneous payment
|
||||
BankName=Bank name
|
||||
FinancialAccount=Account
|
||||
BankAccount=Bank account
|
||||
BankAccounts=Bank accounts
|
||||
BankAccountsAndGateways=Bank accounts | Gateways
|
||||
ShowAccount=Show Account
|
||||
AccountRef=Financial account ref
|
||||
AccountLabel=Financial account label
|
||||
CashAccount=Cash account
|
||||
CashAccounts=Cash accounts
|
||||
CurrentAccounts=Current accounts
|
||||
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
|
||||
BIC=BIC/SWIFT code
|
||||
SwiftValid=BIC/SWIFT valid
|
||||
SwiftVNotalid=BIC/SWIFT not valid
|
||||
IbanValid=BAN valid
|
||||
IbanNotValid=BAN not valid
|
||||
StandingOrders=Direct debit orders
|
||||
StandingOrder=Direct debit order
|
||||
PaymentByDirectDebit=Payment by direct debit
|
||||
PaymentByBankTransfers=Payments by credit transfer
|
||||
PaymentByBankTransfer=Payment by credit transfer
|
||||
AccountStatement=Account statement
|
||||
AccountStatementShort=Statement
|
||||
AccountStatements=Account statements
|
||||
LastAccountStatements=Last account statements
|
||||
IOMonthlyReporting=Monthly reporting
|
||||
BankAccountDomiciliation=Bank address
|
||||
BankAccountCountry=Account country
|
||||
BankAccountOwner=Account owner name
|
||||
BankAccountOwnerAddress=Account owner address
|
||||
RIBControlError=Integrity check of values failed. This means the information for this account number is not complete or is incorrect (check country, numbers and IBAN).
|
||||
CreateAccount=Create account
|
||||
NewBankAccount=New account
|
||||
NewFinancialAccount=New financial account
|
||||
MenuNewFinancialAccount=New financial account
|
||||
EditFinancialAccount=Edit account
|
||||
LabelBankCashAccount=Bank or cash label
|
||||
AccountType=Account type
|
||||
BankType0=Savings account
|
||||
BankType1=Current or credit card account
|
||||
BankType2=Cash account
|
||||
AccountsArea=Accounts area
|
||||
AccountCard=Account card
|
||||
DeleteAccount=Delete account
|
||||
ConfirmDeleteAccount=Are you sure you want to delete this account?
|
||||
Account=Account
|
||||
BankTransactionByCategories=Bank entries by categories
|
||||
BankTransactionForCategory=Bank entries for category <b>%s</b>
|
||||
RemoveFromRubrique=Remove link with category
|
||||
RemoveFromRubriqueConfirm=Are you sure you want to remove link between the entry and the category?
|
||||
ListBankTransactions=List of bank entries
|
||||
IdTransaction=Transaction ID
|
||||
BankTransactions=Bank entries
|
||||
BankTransaction=Bank entry
|
||||
ListTransactions=List entries
|
||||
ListTransactionsByCategory=List entries/category
|
||||
TransactionsToConciliate=Entries to reconcile
|
||||
TransactionsToConciliateShort=To reconcile
|
||||
Conciliable=Can be reconciled
|
||||
Conciliate=Reconcile
|
||||
Conciliation=Reconciliation
|
||||
SaveStatementOnly=Save statement only
|
||||
ReconciliationLate=Reconciliation late
|
||||
IncludeClosedAccount=Include closed accounts
|
||||
OnlyOpenedAccount=Only open accounts
|
||||
AccountToCredit=Account to credit
|
||||
AccountToDebit=Account to debit
|
||||
DisableConciliation=Disable reconciliation feature for this account
|
||||
ConciliationDisabled=Reconciliation feature disabled
|
||||
LinkedToAConciliatedTransaction=Linked to a conciliated entry
|
||||
StatusAccountOpened=Open
|
||||
StatusAccountClosed=Closed
|
||||
AccountIdShort=Number
|
||||
LineRecord=Transaction
|
||||
AddBankRecord=Add entry
|
||||
AddBankRecordLong=Add entry manually
|
||||
Conciliated=Reconciled
|
||||
ConciliatedBy=Reconciled by
|
||||
DateConciliating=Reconcile date
|
||||
BankLineConciliated=Entry reconciled with bank receipt
|
||||
Reconciled=Reconciled
|
||||
NotReconciled=Not reconciled
|
||||
CustomerInvoicePayment=Customer payment
|
||||
SupplierInvoicePayment=Vendor payment
|
||||
SubscriptionPayment=Subscription payment
|
||||
WithdrawalPayment=Debit payment order
|
||||
SocialContributionPayment=Social/fiscal tax payment
|
||||
BankTransfer=Credit transfer
|
||||
BankTransfers=Credit transfers
|
||||
MenuBankInternalTransfer=Internal transfer
|
||||
TransferDesc=Use internal transfer to transfer from one account to another, the application will write two records: a debit in the source account and a credit in the target account. The same amount, label and date will be used for this transaction.
|
||||
TransferFrom=From
|
||||
TransferTo=To
|
||||
TransferFromToDone=A transfer from <b>%s</b> to <b>%s</b> of <b>%s</b> %s has been recorded.
|
||||
CheckTransmitter=Sender
|
||||
ValidateCheckReceipt=Validate this check receipt?
|
||||
ConfirmValidateCheckReceipt=Are you sure that you want to submit this check receipt for validation? No changes will be possible once validated.
|
||||
DeleteCheckReceipt=Delete this check receipt?
|
||||
ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt?
|
||||
BankChecks=Bank checks
|
||||
BankChecksToReceipt=Checks awaiting deposit
|
||||
BankChecksToReceiptShort=Checks awaiting deposit
|
||||
ShowCheckReceipt=Show check deposit receipt
|
||||
NumberOfCheques=No. of check
|
||||
DeleteTransaction=Delete entry
|
||||
ConfirmDeleteTransaction=Are you sure you want to delete this entry?
|
||||
ThisWillAlsoDeleteBankRecord=This will also delete generated bank entry
|
||||
BankMovements=Movements
|
||||
PlannedTransactions=Planned entries
|
||||
Graph=Graphs
|
||||
ExportDataset_banque_1=Bank entries and account statement
|
||||
ExportDataset_banque_2=Deposit slip
|
||||
TransactionOnTheOtherAccount=Transaction on the other account
|
||||
PaymentNumberUpdateSucceeded=Payment number updated successfully
|
||||
PaymentNumberUpdateFailed=Payment number could not be updated
|
||||
PaymentDateUpdateSucceeded=Payment date updated successfully
|
||||
PaymentDateUpdateFailed=Payment date could not be updated
|
||||
Transactions=Transactions
|
||||
BankTransactionLine=Bank entry
|
||||
AllAccounts=All bank and cash accounts
|
||||
BackToAccount=Back to account
|
||||
ShowAllAccounts=Show for all accounts
|
||||
FutureTransaction=Future transaction. Unable to reconcile.
|
||||
SelectChequeTransactionAndGenerate=Select/filter the checks which are to be included in the check deposit receipt. Then, 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 reconcile?
|
||||
ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click
|
||||
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?
|
||||
RejectCheck=Check returned
|
||||
ConfirmRejectCheck=Are you sure you want to mark this check as rejected?
|
||||
RejectCheckDate=Date the check was returned
|
||||
CheckRejected=Check returned
|
||||
CheckRejectedAndInvoicesReopened=Check returned and invoices re-open
|
||||
BankAccountModelModule=Document templates for bank accounts
|
||||
DocumentModelSepaMandate=Template of SEPA mandate. Useful for European countries in EEC only.
|
||||
DocumentModelBan=Template to print a page with BAN information.
|
||||
NewVariousPayment=New miscellaneous payment
|
||||
VariousPayment=Miscellaneous payment
|
||||
VariousPayments=Miscellaneous payments
|
||||
ShowVariousPayment=Show miscellaneous payment
|
||||
AddVariousPayment=Add miscellaneous payment
|
||||
VariousPaymentId=Miscellaneous payment ID
|
||||
VariousPaymentLabel=Miscellaneous payment label
|
||||
ConfirmCloneVariousPayment=Confirm the clone of a miscellaneous payment
|
||||
SEPAMandate=SEPA mandate
|
||||
YourSEPAMandate=Your SEPA mandate
|
||||
FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to
|
||||
AutoReportLastAccountStatement=Automatically fill the field 'number of bank statement' with last statement number when making reconciliation
|
||||
CashControl=POS cash desk control
|
||||
NewCashFence=New cash desk opening or closing
|
||||
BankColorizeMovement=Colorize movements
|
||||
BankColorizeMovementDesc=If this function is enable, you can choose specific background color for debit or credit movements
|
||||
BankColorizeMovementName1=Background color for debit movement
|
||||
BankColorizeMovementName2=Background color for credit movement
|
||||
IfYouDontReconcileDisableProperty=If you don't make the bank reconciliations on some bank accounts, disable the property "%s" on them to remove this warning.
|
||||
NoBankAccountDefined=No bank account defined
|
||||
NoRecordFoundIBankcAccount=No record found in bank account. Commonly, this occurs when a record has been deleted manually from the list of transaction in the bank account (for example during a reconciliation of the bank account). Another reason is that the payment was recorded when the module "%s" was disabled.
|
||||
AlreadyOneBankAccount=Already one bank account defined
|
||||
606
htdocs/langs/ar_DZ/bills.lang
Normal file
606
htdocs/langs/ar_DZ/bills.lang
Normal file
@ -0,0 +1,606 @@
|
||||
# Dolibarr language file - Source file is en_US - bills
|
||||
Bill=Invoice
|
||||
Bills=Invoices
|
||||
BillsCustomers=Customer invoices
|
||||
BillsCustomer=Customer invoice
|
||||
BillsSuppliers=Vendor invoices
|
||||
BillsCustomersUnpaid=Unpaid customer invoices
|
||||
BillsCustomersUnpaidForCompany=Unpaid customer invoices for %s
|
||||
BillsSuppliersUnpaid=Unpaid vendor invoices
|
||||
BillsSuppliersUnpaidForCompany=Unpaid vendors invoices for %s
|
||||
BillsLate=Late payments
|
||||
BillsStatistics=Customers invoices statistics
|
||||
BillsStatisticsSuppliers=Vendors invoices statistics
|
||||
DisabledBecauseDispatchedInBookkeeping=Disabled because invoice was dispatched into bookkeeping
|
||||
DisabledBecauseNotLastInvoice=Disabled because invoice is not erasable. Some invoices were recorded after this one and it will create holes in the counter.
|
||||
DisabledBecauseNotErasable=Disabled because cannot be erased
|
||||
InvoiceStandard=Standard invoice
|
||||
InvoiceStandardAsk=Standard invoice
|
||||
InvoiceStandardDesc=This kind of invoice is the common invoice.
|
||||
InvoiceDeposit=Down payment invoice
|
||||
InvoiceDepositAsk=Down payment invoice
|
||||
InvoiceDepositDesc=This kind of invoice is done when a down payment has been received.
|
||||
InvoiceProForma=Proforma invoice
|
||||
InvoiceProFormaAsk=Proforma invoice
|
||||
InvoiceProFormaDesc=<b>Proforma invoice</b> is an image of a true invoice but has no accountancy value.
|
||||
InvoiceReplacement=Replacement invoice
|
||||
InvoiceReplacementAsk=Replacement invoice for invoice
|
||||
InvoiceReplacementDesc=<b>Replacement invoice</b> is used to completely replace an invoice with no payment already received.<br><br>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 <b>credit note</b> is a negative invoice used to correct the fact that an invoice shows an amount that differs from the amount actually paid (eg the customer paid too much by mistake, or will not pay the complete amount since some products were returned).
|
||||
invoiceAvoirWithLines=Create Credit Note with lines from the origin invoice
|
||||
invoiceAvoirWithPaymentRestAmount=Create Credit Note with remaining unpaid of origin invoice
|
||||
invoiceAvoirLineWithPaymentRestAmount=Credit Note for remaining unpaid amount
|
||||
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 replaceable invoices
|
||||
NoInvoiceToCorrect=No invoice to correct
|
||||
InvoiceHasAvoir=Was source of one or several credit notes
|
||||
CardBill=Invoice card
|
||||
PredefinedInvoices=Predefined Invoices
|
||||
Invoice=Invoice
|
||||
PdfInvoiceTitle=Invoice
|
||||
Invoices=Invoices
|
||||
InvoiceLine=Invoice line
|
||||
InvoiceCustomer=Customer invoice
|
||||
CustomerInvoice=Customer invoice
|
||||
CustomersInvoices=Customer invoices
|
||||
SupplierInvoice=Vendor invoice
|
||||
SuppliersInvoices=Vendor invoices
|
||||
SupplierInvoiceLines=Vendor invoice lines
|
||||
SupplierBill=Vendor invoice
|
||||
SupplierBills=Vendor invoices
|
||||
Payment=Payment
|
||||
PaymentBack=Refund
|
||||
CustomerInvoicePaymentBack=Refund
|
||||
Payments=Payments
|
||||
PaymentsBack=Refunds
|
||||
paymentInInvoiceCurrency=in invoices currency
|
||||
PaidBack=Paid back
|
||||
DeletePayment=Delete payment
|
||||
ConfirmDeletePayment=Are you sure you want to delete this payment?
|
||||
ConfirmConvertToReduc=Do you want to convert this %s into an available credit?
|
||||
ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer.
|
||||
ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit?
|
||||
ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor.
|
||||
SupplierPayments=Vendor payments
|
||||
ReceivedPayments=Received payments
|
||||
ReceivedCustomersPayments=Payments received from customers
|
||||
PayedSuppliersPayments=Payments paid to vendors
|
||||
ReceivedCustomersPaymentsToValid=Received customers payments to validate
|
||||
PaymentsReportsForYear=Payments reports for %s
|
||||
PaymentsReports=Payments reports
|
||||
PaymentsAlreadyDone=Payments already done
|
||||
PaymentsBackAlreadyDone=Refunds already done
|
||||
PaymentRule=Payment rule
|
||||
PaymentMode=Payment Type
|
||||
DefaultPaymentMode=Default Payment Type
|
||||
DefaultBankAccount=Default Bank Account
|
||||
PaymentTypeDC=Debit/Credit Card
|
||||
PaymentTypePP=PayPal
|
||||
IdPaymentMode=Payment Type (id)
|
||||
CodePaymentMode=Payment Type (code)
|
||||
LabelPaymentMode=Payment Type (label)
|
||||
PaymentModeShort=Payment Type
|
||||
PaymentTerm=Payment Term
|
||||
PaymentConditions=Payment Terms
|
||||
PaymentConditionsShort=Payment Terms
|
||||
PaymentAmount=Payment amount
|
||||
PaymentHigherThanReminderToPay=Payment higher than reminder to pay
|
||||
HelpPaymentHigherThanReminderToPay=Attention, the payment amount of one or more bills is higher than the outstanding amount to pay. <br> Edit your entry, otherwise confirm and consider creating a credit note for the excess received for each overpaid invoice.
|
||||
HelpPaymentHigherThanReminderToPaySupplier=Attention, the payment amount of one or more bills is higher than the outstanding amount to pay. <br> Edit your entry, otherwise confirm and consider creating a credit note for the excess paid for each overpaid invoice.
|
||||
ClassifyPaid=Classify 'Paid'
|
||||
ClassifyUnPaid=Classify 'Unpaid'
|
||||
ClassifyPaidPartially=Classify 'Paid partially'
|
||||
ClassifyCanceled=Classify 'Abandoned'
|
||||
ClassifyClosed=Classify 'Closed'
|
||||
ClassifyUnBilled=Classify 'Unbilled'
|
||||
CreateBill=Create Invoice
|
||||
CreateCreditNote=Create credit note
|
||||
AddBill=Create invoice or credit note
|
||||
AddToDraftInvoices=Add to draft invoice
|
||||
DeleteBill=Delete invoice
|
||||
SearchACustomerInvoice=Search for a customer invoice
|
||||
SearchASupplierInvoice=Search for a vendor invoice
|
||||
CancelBill=Cancel an invoice
|
||||
SendRemindByMail=Send reminder by email
|
||||
DoPayment=Enter payment
|
||||
DoPaymentBack=Enter refund
|
||||
ConvertToReduc=Mark as credit available
|
||||
ConvertExcessReceivedToReduc=Convert excess received into available credit
|
||||
ConvertExcessPaidToReduc=Convert excess paid into available discount
|
||||
EnterPaymentReceivedFromCustomer=Enter payment received from customer
|
||||
EnterPaymentDueToCustomer=Make payment due to customer
|
||||
DisabledBecauseRemainderToPayIsZero=Disabled because remaining unpaid is zero
|
||||
PriceBase=Base price
|
||||
BillStatus=Invoice status
|
||||
StatusOfGeneratedInvoices=Status of generated invoices
|
||||
BillStatusDraft=Draft (needs to be validated)
|
||||
BillStatusPaid=Paid
|
||||
BillStatusPaidBackOrConverted=Credit note refund or marked as credit available
|
||||
BillStatusConverted=Paid (ready for consumption in final invoice)
|
||||
BillStatusCanceled=Abandoned
|
||||
BillStatusValidated=Validated (needs to be paid)
|
||||
BillStatusStarted=Started
|
||||
BillStatusNotPaid=Not paid
|
||||
BillStatusNotRefunded=Not refunded
|
||||
BillStatusClosedUnpaid=Closed (unpaid)
|
||||
BillStatusClosedPaidPartially=Paid (partially)
|
||||
BillShortStatusDraft=Draft
|
||||
BillShortStatusPaid=Paid
|
||||
BillShortStatusPaidBackOrConverted=Refunded or converted
|
||||
Refunded=Refunded
|
||||
BillShortStatusConverted=Paid
|
||||
BillShortStatusCanceled=Abandoned
|
||||
BillShortStatusValidated=Validated
|
||||
BillShortStatusStarted=Started
|
||||
BillShortStatusNotPaid=Not paid
|
||||
BillShortStatusNotRefunded=Not refunded
|
||||
BillShortStatusClosedUnpaid=Closed
|
||||
BillShortStatusClosedPaidPartially=Paid (partially)
|
||||
PaymentStatusToValidShort=To validate
|
||||
ErrorVATIntraNotConfigured=Intra-Community VAT number not yet defined
|
||||
ErrorNoPaiementModeConfigured=No default payment type defined. Go to Invoice module setup to fix this.
|
||||
ErrorCreateBankAccount=Create a bank account, then go to Setup panel of Invoice module to define payment types
|
||||
ErrorBillNotFound=Invoice %s does not exist
|
||||
ErrorInvoiceAlreadyReplaced=Error, you tried to validate an invoice to replace invoice %s. But this one has already been replaced by invoice %s.
|
||||
ErrorDiscountAlreadyUsed=Error, discount already used
|
||||
ErrorInvoiceAvoirMustBeNegative=Error, correct invoice must have a negative amount
|
||||
ErrorInvoiceOfThisTypeMustBePositive=Error, this type of invoice must have an amount excluding tax positive (or null)
|
||||
ErrorCantCancelIfReplacementInvoiceNotValidated=Error, can't cancel an invoice that has been replaced by another invoice that is still in draft status
|
||||
ErrorThisPartOrAnotherIsAlreadyUsedSoDiscountSerieCantBeRemoved=This part or another is already used so discount series cannot be removed.
|
||||
BillFrom=From
|
||||
BillTo=To
|
||||
ActionsOnBill=Actions on invoice
|
||||
RecurringInvoiceTemplate=Template / Recurring invoice
|
||||
NoQualifiedRecurringInvoiceTemplateFound=No recurring template invoice qualified for generation.
|
||||
FoundXQualifiedRecurringInvoiceTemplate=Found %s recurring template invoice(s) qualified for generation.
|
||||
NotARecurringInvoiceTemplate=Not a recurring template invoice
|
||||
NewBill=New invoice
|
||||
LastBills=Latest %s invoices
|
||||
LatestTemplateInvoices=Latest %s template invoices
|
||||
LatestCustomerTemplateInvoices=Latest %s customer template invoices
|
||||
LatestSupplierTemplateInvoices=Latest %s vendor template invoices
|
||||
LastCustomersBills=Latest %s customer invoices
|
||||
LastSuppliersBills=Latest %s vendor invoices
|
||||
AllBills=All invoices
|
||||
AllCustomerTemplateInvoices=All template invoices
|
||||
OtherBills=Other invoices
|
||||
DraftBills=Draft invoices
|
||||
CustomersDraftInvoices=Customer draft invoices
|
||||
SuppliersDraftInvoices=Vendor draft invoices
|
||||
Unpaid=Unpaid
|
||||
ErrorNoPaymentDefined=Error No payment defined
|
||||
ConfirmDeleteBill=Are you sure you want to delete this invoice?
|
||||
ConfirmValidateBill=Are you sure you want to validate this invoice with reference <b>%s</b>?
|
||||
ConfirmUnvalidateBill=Are you sure you want to change invoice <b>%s</b> to draft status?
|
||||
ConfirmClassifyPaidBill=Are you sure you want to change invoice <b>%s</b> to status paid?
|
||||
ConfirmCancelBill=Are you sure you want to cancel invoice <b>%s</b>?
|
||||
ConfirmCancelBillQuestion=Why do you want to classify this invoice 'abandoned'?
|
||||
ConfirmClassifyPaidPartially=Are you sure you want to change invoice <b>%s</b> to status paid?
|
||||
ConfirmClassifyPaidPartiallyQuestion=This invoice has not been paid completely. What is the reason for closing this invoice?
|
||||
ConfirmClassifyPaidPartiallyReasonAvoir=Remaining unpaid <b>(%s %s)</b> is a discount granted because payment was made before term. I regularize the VAT with a credit note.
|
||||
ConfirmClassifyPaidPartiallyReasonDiscount=Remaining unpaid <b>(%s %s)</b> is a discount granted because payment was made before term.
|
||||
ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Remaining unpaid <b>(%s %s)</b> is a discount granted because payment was made before term. I accept to lose the VAT on this discount.
|
||||
ConfirmClassifyPaidPartiallyReasonDiscountVat=Remaining unpaid <b>(%s %s)</b> is a discount granted because payment was made before term. I recover the VAT on this discount without a credit note.
|
||||
ConfirmClassifyPaidPartiallyReasonBadCustomer=Bad customer
|
||||
ConfirmClassifyPaidPartiallyReasonBankCharge=Deduction by bank (intermediary bank fees)
|
||||
ConfirmClassifyPaidPartiallyReasonProductReturned=Products partially returned
|
||||
ConfirmClassifyPaidPartiallyReasonOther=Amount abandoned for other reason
|
||||
ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=This choice is possible if your invoice has been provided with suitable comments. (Example «Only the tax corresponding to the price that has been actually paid gives rights to deduction»)
|
||||
ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=In some countries, this choice might be possible only if your invoice contains correct notes.
|
||||
ConfirmClassifyPaidPartiallyReasonAvoirDesc=Use this choice if all other does not suit
|
||||
ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=A <b>bad customer</b> is a customer that refuses to pay his debt.
|
||||
ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=This choice is used when payment is not complete because some of products were returned
|
||||
ConfirmClassifyPaidPartiallyReasonBankChargeDesc=The unpaid amount is <b>intermediary bank fees</b>, deducted directly from the <b>correct amount</b> paid by the Customer.
|
||||
ConfirmClassifyPaidPartiallyReasonOtherDesc=Use this choice if all others are not suitable, for example in following situation:<br>- payment not complete because some products were shipped back<br>- amount claimed too important because a discount was forgotten<br>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 <b>%s</b> %s?
|
||||
ConfirmSupplierPayment=Do you confirm this payment input for <b>%s</b> %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=No. of invoices
|
||||
NumberOfBillsByMonth=No. of invoices per month
|
||||
AmountOfBills=Amount of invoices
|
||||
AmountOfBillsHT=Amount of invoices (net of tax)
|
||||
AmountOfBillsByMonthHT=Amount of invoices by month (net of tax)
|
||||
UseSituationInvoices=Allow situation invoice
|
||||
UseSituationInvoicesCreditNote=Allow situation invoice credit note
|
||||
Retainedwarranty=Retained warranty
|
||||
AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices
|
||||
RetainedwarrantyDefaultPercent=Retained warranty default percent
|
||||
RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices
|
||||
RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation
|
||||
ToPayOn=To pay on %s
|
||||
toPayOn=to pay on %s
|
||||
RetainedWarranty=Retained Warranty
|
||||
PaymentConditionsShortRetainedWarranty=Retained warranty payment terms
|
||||
DefaultPaymentConditionsRetainedWarranty=Default retained warranty payment terms
|
||||
setPaymentConditionsShortRetainedWarranty=Set retained warranty payment terms
|
||||
setretainedwarranty=Set retained warranty
|
||||
setretainedwarrantyDateLimit=Set retained warranty date limit
|
||||
RetainedWarrantyDateLimit=Retained warranty date limit
|
||||
RetainedWarrantyNeed100Percent=The situation invoice need to be at 100%% progress to be displayed on PDF
|
||||
AlreadyPaid=Already paid
|
||||
AlreadyPaidBack=Already paid back
|
||||
AlreadyPaidNoCreditNotesNoDeposits=Already paid (without credit notes and down payments)
|
||||
Abandoned=Abandoned
|
||||
RemainderToPay=Remaining unpaid
|
||||
RemainderToPayMulticurrency=Remaining unpaid, original currency
|
||||
RemainderToTake=Remaining amount to take
|
||||
RemainderToTakeMulticurrency=Remaining amount to take, original currency
|
||||
RemainderToPayBack=Remaining amount to refund
|
||||
RemainderToPayBackMulticurrency=Remaining amount to refund, original currency
|
||||
NegativeIfExcessRefunded=negative if excess refunded
|
||||
Rest=Pending
|
||||
AmountExpected=Amount claimed
|
||||
ExcessReceived=Excess received
|
||||
ExcessReceivedMulticurrency=Excess received, original currency
|
||||
NegativeIfExcessReceived=negative if excess received
|
||||
ExcessPaid=Excess paid
|
||||
ExcessPaidMulticurrency=Excess paid, original currency
|
||||
EscompteOffered=Discount offered (payment before term)
|
||||
EscompteOfferedShort=Discount
|
||||
SendBillRef=Submission of invoice %s
|
||||
SendReminderBillRef=Submission of invoice %s (reminder)
|
||||
SendPaymentReceipt=Submission of payment receipt %s
|
||||
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
|
||||
RelatedRecurringCustomerInvoices=Related recurring customer invoices
|
||||
MenuToValid=To valid
|
||||
DateMaxPayment=Payment due on
|
||||
DateInvoice=Invoice date
|
||||
DatePointOfTax=Point of tax
|
||||
NoInvoice=No invoice
|
||||
NoOpenInvoice=No open invoice
|
||||
NbOfOpenInvoices=Number of open invoices
|
||||
ClassifyBill=Classify invoice
|
||||
SupplierBillsToPay=Unpaid vendor invoices
|
||||
CustomerBillsUnpaid=Unpaid customer invoices
|
||||
NonPercuRecuperable=Non-recoverable
|
||||
SetConditions=Set Payment Terms
|
||||
SetMode=Set Payment Type
|
||||
SetRevenuStamp=Set revenue stamp
|
||||
Billed=Billed
|
||||
RecurringInvoices=Recurring invoices
|
||||
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 details
|
||||
CustomersInvoicesAndPayments=Customer invoices and payments
|
||||
ExportDataset_invoice_1=Customer invoices and invoice details
|
||||
ExportDataset_invoice_2=Customer invoices and payments
|
||||
ProformaBill=Proforma Bill:
|
||||
Reduction=Reduction
|
||||
ReductionShort=Disc.
|
||||
Reductions=Reductions
|
||||
ReductionsShort=Disc.
|
||||
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 discount
|
||||
ShowSourceInvoice=Show the source invoice
|
||||
RelativeDiscount=Relative discount
|
||||
GlobalDiscount=Global discount
|
||||
CreditNote=Credit note
|
||||
CreditNotes=Credit notes
|
||||
CreditNotesOrExcessReceived=Credit notes or excess received
|
||||
Deposit=Down payment
|
||||
Deposits=Down payments
|
||||
DiscountFromCreditNote=Discount from credit note %s
|
||||
DiscountFromDeposit=Down payments from invoice %s
|
||||
DiscountFromExcessReceived=Payments in excess of invoice %s
|
||||
DiscountFromExcessPaid=Payments in excess of invoice %s
|
||||
AbsoluteDiscountUse=This kind of credit can be used on invoice before its validation
|
||||
CreditNoteDepositUse=Invoice must be validated to use this kind of credits
|
||||
NewGlobalDiscount=New absolute discount
|
||||
NewRelativeDiscount=New relative discount
|
||||
DiscountType=Discount type
|
||||
NoteReason=Note/Reason
|
||||
ReasonDiscount=Reason
|
||||
DiscountOfferedBy=Granted by
|
||||
DiscountStillRemaining=Discounts or credits available
|
||||
DiscountAlreadyCounted=Discounts or credits already consumed
|
||||
CustomerDiscounts=Customer discounts
|
||||
SupplierDiscounts=Vendors discounts
|
||||
BillAddress=Bill address
|
||||
HelpEscompte=This discount is a discount granted to customer because payment was made before term.
|
||||
HelpAbandonBadCustomer=This amount has been abandoned (customer said to be a bad customer) and is considered as an exceptional loss.
|
||||
HelpAbandonOther=This amount has been abandoned since it was an error (wrong customer or invoice replaced by another for example)
|
||||
IdSocialContribution=Social/fiscal tax payment id
|
||||
PaymentId=Payment id
|
||||
PaymentRef=Payment ref.
|
||||
InvoiceId=Invoice id
|
||||
InvoiceRef=Invoice ref.
|
||||
InvoiceDateCreation=Invoice creation date
|
||||
InvoiceStatus=Invoice status
|
||||
InvoiceNote=Invoice note
|
||||
InvoicePaid=Invoice paid
|
||||
InvoicePaidCompletely=Paid completely
|
||||
InvoicePaidCompletelyHelp=Invoice that are paid completely. This excludes invoices that are paid partially. To get list of all 'Closed' or non 'Closed' invoices, prefer to use a filter on the invoice status.
|
||||
OrderBilled=Order billed
|
||||
DonationPaid=Donation paid
|
||||
PaymentNumber=Payment number
|
||||
RemoveDiscount=Remove discount
|
||||
WatermarkOnDraftBill=Watermark on draft invoices (nothing if empty)
|
||||
InvoiceNotChecked=No invoice selected
|
||||
ConfirmCloneInvoice=Are you sure you want to clone this invoice <b>%s</b>?
|
||||
DisabledBecauseReplacedInvoice=Action disabled because invoice has been replaced
|
||||
DescTaxAndDividendsArea=This area presents a summary of all payments made for special expenses. Only records with payments during the fixed year are included here.
|
||||
NbOfPayments=No. of payments
|
||||
SplitDiscount=Split discount in two
|
||||
ConfirmSplitDiscount=Are you sure you want to split this discount of <b>%s</b> %s into two smaller discounts?
|
||||
TypeAmountOfEachNewDiscount=Input amount for each of two parts:
|
||||
TotalOfTwoDiscountMustEqualsOriginal=The total of the two new discounts must be equal to the original discount amount.
|
||||
ConfirmRemoveDiscount=Are you sure you want to remove this discount?
|
||||
RelatedBill=Related invoice
|
||||
RelatedBills=Related invoices
|
||||
RelatedCustomerInvoices=Related customer invoices
|
||||
RelatedSupplierInvoices=Related vendor invoices
|
||||
LatestRelatedBill=Latest related invoice
|
||||
WarningBillExist=Warning, one or more invoices already exist
|
||||
MergingPDFTool=Merging PDF tool
|
||||
AmountPaymentDistributedOnInvoice=Payment amount distributed on invoice
|
||||
PaymentOnDifferentThirdBills=Allow payments on different third parties bills but same parent company
|
||||
PaymentNote=Payment note
|
||||
ListOfPreviousSituationInvoices=List of previous situation invoices
|
||||
ListOfNextSituationInvoices=List of next situation invoices
|
||||
ListOfSituationInvoices=List of situation invoices
|
||||
CurrentSituationTotal=Total current situation
|
||||
DisabledBecauseNotEnouthCreditNote=To remove a situation invoice from cycle, this invoice's credit note total must cover this invoice total
|
||||
RemoveSituationFromCycle=Remove this invoice from cycle
|
||||
ConfirmRemoveSituationFromCycle=Remove this invoice %s from cycle ?
|
||||
ConfirmOuting=Confirm outing
|
||||
FrequencyPer_d=Every %s days
|
||||
FrequencyPer_m=Every %s months
|
||||
FrequencyPer_y=Every %s years
|
||||
FrequencyUnit=Frequency unit
|
||||
toolTipFrequency=Examples:<br><b>Set 7, Day</b>: give a new invoice every 7 days<br><b>Set 3, Month</b>: give a new invoice every 3 month
|
||||
NextDateToExecution=Date for next invoice generation
|
||||
NextDateToExecutionShort=Date next gen.
|
||||
DateLastGeneration=Date of latest generation
|
||||
DateLastGenerationShort=Date latest gen.
|
||||
MaxPeriodNumber=Max. number of invoice generation
|
||||
NbOfGenerationDone=Number of invoice generation already done
|
||||
NbOfGenerationOfRecordDone=Number of record generation already done
|
||||
NbOfGenerationDoneShort=Number of generation done
|
||||
MaxGenerationReached=Maximum number of generations reached
|
||||
InvoiceAutoValidate=Validate invoices automatically
|
||||
GeneratedFromRecurringInvoice=Generated from template recurring invoice %s
|
||||
DateIsNotEnough=Date not reached yet
|
||||
InvoiceGeneratedFromTemplate=Invoice %s generated from recurring template invoice %s
|
||||
GeneratedFromTemplate=Generated from template invoice %s
|
||||
WarningInvoiceDateInFuture=Warning, the invoice date is higher than current date
|
||||
WarningInvoiceDateTooFarInFuture=Warning, the invoice date is too far from current date
|
||||
ViewAvailableGlobalDiscounts=View available discounts
|
||||
GroupPaymentsByModOnReports=Group payments by mode on reports
|
||||
# PaymentConditions
|
||||
Statut=Status
|
||||
PaymentConditionShortRECEP=Due Upon Receipt
|
||||
PaymentConditionRECEP=Due Upon Receipt
|
||||
PaymentConditionShort30D=30 days
|
||||
PaymentCondition30D=30 days
|
||||
PaymentConditionShort30DENDMONTH=30 days of month-end
|
||||
PaymentCondition30DENDMONTH=Within 30 days following the end of the month
|
||||
PaymentConditionShort60D=60 days
|
||||
PaymentCondition60D=60 days
|
||||
PaymentConditionShort60DENDMONTH=60 days of month-end
|
||||
PaymentCondition60DENDMONTH=Within 60 days following the end of the month
|
||||
PaymentConditionShortPT_DELIVERY=Delivery
|
||||
PaymentConditionPT_DELIVERY=On delivery
|
||||
PaymentConditionShortPT_ORDER=Order
|
||||
PaymentConditionPT_ORDER=On order
|
||||
PaymentConditionShortPT_5050=50-50
|
||||
PaymentConditionPT_5050=50%% in advance, 50%% on delivery
|
||||
PaymentConditionShort10D=10 days
|
||||
PaymentCondition10D=10 days
|
||||
PaymentConditionShort10DENDMONTH=10 days of month-end
|
||||
PaymentCondition10DENDMONTH=Within 10 days following the end of the month
|
||||
PaymentConditionShort14D=14 days
|
||||
PaymentCondition14D=14 days
|
||||
PaymentConditionShort14DENDMONTH=14 days of month-end
|
||||
PaymentCondition14DENDMONTH=Within 14 days following the end of the month
|
||||
FixAmount=Fixed amount - 1 line with label '%s'
|
||||
VarAmount=Variable amount (%% tot.)
|
||||
VarAmountOneLine=Variable amount (%% tot.) - 1 line with label '%s'
|
||||
VarAmountAllLines=Variable amount (%% tot.) - all lines from origin
|
||||
# PaymentType
|
||||
PaymentTypeVIR=Bank transfer
|
||||
PaymentTypeShortVIR=Bank transfer
|
||||
PaymentTypePRE=Direct debit payment order
|
||||
PaymentTypeShortPRE=Debit payment order
|
||||
PaymentTypeLIQ=Cash
|
||||
PaymentTypeShortLIQ=Cash
|
||||
PaymentTypeCB=Credit card
|
||||
PaymentTypeShortCB=Credit card
|
||||
PaymentTypeCHQ=Check
|
||||
PaymentTypeShortCHQ=Check
|
||||
PaymentTypeTIP=TIP (Documents against Payment)
|
||||
PaymentTypeShortTIP=TIP Payment
|
||||
PaymentTypeVAD=Online payment
|
||||
PaymentTypeShortVAD=Online payment
|
||||
PaymentTypeTRA=Bank draft
|
||||
PaymentTypeShortTRA=Draft
|
||||
PaymentTypeFAC=Factor
|
||||
PaymentTypeShortFAC=Factor
|
||||
BankDetails=Bank details
|
||||
BankCode=Bank code
|
||||
DeskCode=Branch code
|
||||
BankAccountNumber=Account number
|
||||
BankAccountNumberKey=Checksum
|
||||
Residence=Address
|
||||
IBANNumber=IBAN account number
|
||||
IBAN=IBAN
|
||||
CustomerIBAN=IBAN of customer
|
||||
SupplierIBAN=IBAN of vendor
|
||||
BIC=BIC/SWIFT
|
||||
BICNumber=BIC/SWIFT code
|
||||
ExtraInfos=Extra infos
|
||||
RegulatedOn=Regulated on
|
||||
ChequeNumber=Check N°
|
||||
ChequeOrTransferNumber=Check/Transfer N°
|
||||
ChequeBordereau=Check schedule
|
||||
ChequeMaker=Check/Transfer sender
|
||||
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=Intra-Community VAT ID
|
||||
PaymentByChequeOrderedTo=Check payments (including tax) are payable to %s, send to
|
||||
PaymentByChequeOrderedToShort=Check payments (incl. tax) are payable to
|
||||
SendTo=sent to
|
||||
PaymentByTransferOnThisBankAccount=Payment by transfer to the following bank account
|
||||
VATIsNotUsedForInvoice=* Non applicable VAT art-293B of CGI
|
||||
LawApplicationPart1=By application of the law 80.335 of 12/05/80
|
||||
LawApplicationPart2=the goods remain the property of
|
||||
LawApplicationPart3=the seller until full payment 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=Check Deposits
|
||||
MenuCheques=Checks
|
||||
MenuChequesReceipts=Check receipts
|
||||
NewChequeDeposit=New deposit
|
||||
ChequesReceipts=Check receipts
|
||||
ChequesArea=Check deposits area
|
||||
ChequeDeposits=Check deposits
|
||||
Cheques=Checks
|
||||
DepositId=Id deposit
|
||||
NbCheque=Number of checks
|
||||
CreditNoteConvertedIntoDiscount=This %s has been converted into %s
|
||||
UsBillingContactAsIncoiveRecipientIfExist=Use contact/address with type 'billing contact' instead of third-party address as recipient for invoices
|
||||
ShowUnpaidAll=Show all unpaid invoices
|
||||
ShowUnpaidLateOnly=Show late unpaid invoices only
|
||||
PaymentInvoiceRef=Payment invoice %s
|
||||
ValidateInvoice=Validate invoice
|
||||
ValidateInvoices=Validate invoices
|
||||
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
|
||||
CantRemovePaymentVATPaid=Can't remove payment since VAT declaration is classified paid
|
||||
CantRemovePaymentSalaryPaid=Can't remove payment since salary is classified paid
|
||||
ExpectedToPay=Expected payment
|
||||
CantRemoveConciliatedPayment=Can't remove reconciled payment
|
||||
PayedByThisPayment=Paid by this payment
|
||||
ClosePaidInvoicesAutomatically=Classify automatically all standard, down payment or replacement invoices as "Paid" when payment is done entirely.
|
||||
ClosePaidCreditNotesAutomatically=Classify automatically all credit notes as "Paid" when refund is done entirely.
|
||||
ClosePaidContributionsAutomatically=Classify automatically all social or fiscal contributions as "Paid" when payment is done entirely.
|
||||
ClosePaidVATAutomatically=Classify automatically VAT declaration as "Paid" when payment is done entirely.
|
||||
ClosePaidSalaryAutomatically=Classify automatically salary as "Paid" when payment is done entirely.
|
||||
AllCompletelyPayedInvoiceWillBeClosed=All invoices with no remainder to pay will be automatically closed with status "Paid".
|
||||
ToMakePayment=Pay
|
||||
ToMakePaymentBack=Pay back
|
||||
ListOfYourUnpaidInvoices=List of unpaid invoices
|
||||
NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative.
|
||||
RevenueStamp=Tax stamp
|
||||
YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party
|
||||
YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party
|
||||
YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice
|
||||
PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template)
|
||||
PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template
|
||||
PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices
|
||||
TerreNumRefModelDesc1=Return number in the format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequencial auto-incrementing number with no break and no return to 0
|
||||
MarsNumRefModelDesc1=Return number in the format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for down payment invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequencial auto-incrementing number with no break and no return to 0
|
||||
TerreNumRefModelError=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.
|
||||
CactusNumRefModelDesc1=Return number in the format %syymm-nnnn for standard invoices, %syymm-nnnn for credit notes and %syymm-nnnn for down payment invoices where yy is year, mm is month and nnnn is a sequencial auto-incrementing number with no break and no return to 0
|
||||
EarlyClosingReason=Early closing reason
|
||||
EarlyClosingComment=Early closing note
|
||||
##### 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 vendor invoice
|
||||
TypeContact_invoice_supplier_external_BILLING=Vendor invoice contact
|
||||
TypeContact_invoice_supplier_external_SHIPPING=Vendor shipping contact
|
||||
TypeContact_invoice_supplier_external_SERVICE=Vendor service contact
|
||||
# Situation invoices
|
||||
InvoiceFirstSituationAsk=First situation invoice
|
||||
InvoiceFirstSituationDesc=The <b>situation invoices</b> 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
|
||||
PDFInvoiceSituation=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
|
||||
ModifyAllLines=Modify all lines
|
||||
CreateNextSituationInvoice=Create next situation
|
||||
ErrorFindNextSituationInvoice=Error unable to find next situation cycle ref
|
||||
ErrorOutingSituationInvoiceOnUpdate=Unable to outing this situation invoice.
|
||||
ErrorOutingSituationInvoiceCreditNote=Unable to outing linked credit note.
|
||||
NotLastInCycle=This invoice is not the latest in cycle and must not be modified.
|
||||
DisabledBecauseNotLastInCycle=The next situation already exists.
|
||||
DisabledBecauseFinal=This situation is final.
|
||||
situationInvoiceShortcode_AS=AS
|
||||
situationInvoiceShortcode_S=S
|
||||
CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation.
|
||||
NoSituations=No open situations
|
||||
InvoiceSituationLast=Final and general invoice
|
||||
PDFCrevetteSituationNumber=Situation N°%s
|
||||
PDFCrevetteSituationInvoiceLineDecompte=Situation invoice - COUNT
|
||||
PDFCrevetteSituationInvoiceTitle=Situation invoice
|
||||
PDFCrevetteSituationInvoiceLine=Situation N°%s: Inv. N°%s on %s
|
||||
TotalSituationInvoice=Total situation
|
||||
invoiceLineProgressError=Invoice line progress can't be greater than or equal to the next invoice line
|
||||
updatePriceNextInvoiceErrorUpdateline=Error: update price on invoice line: %s
|
||||
ToCreateARecurringInvoice=To create a recurring invoice for this contract, first create this draft invoice, then convert it into an invoice template and define the frequency for generation of future invoices.
|
||||
ToCreateARecurringInvoiceGene=To generate future invoices regularly and manually, just go on menu <strong>%s - %s - %s</strong>.
|
||||
ToCreateARecurringInvoiceGeneAuto=If you need to have such invoices generated automatically, ask your administrator to enable and setup module <strong>%s</strong>. Note that both methods (manual and automatic) can be used together with no risk of duplication.
|
||||
DeleteRepeatableInvoice=Delete template invoice
|
||||
ConfirmDeleteRepeatableInvoice=Are your sure you want to delete the template invoice?
|
||||
CreateOneBillByThird=Create one invoice per third party (otherwise, one invoice per selected object)
|
||||
BillCreated=%s invoice(s) generated
|
||||
BillXCreated=Invoice %s generated
|
||||
StatusOfGeneratedDocuments=Status of document generation
|
||||
DoNotGenerateDoc=Do not generate document file
|
||||
AutogenerateDoc=Auto generate document file
|
||||
AutoFillDateFrom=Set start date for service line with invoice date
|
||||
AutoFillDateFromShort=Set start date
|
||||
AutoFillDateTo=Set end date for service line with next invoice date
|
||||
AutoFillDateToShort=Set end date
|
||||
MaxNumberOfGenerationReached=Max number of gen. reached
|
||||
BILL_DELETEInDolibarr=Invoice deleted
|
||||
BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted
|
||||
UnitPriceXQtyLessDiscount=Unit price x Qty - Discount
|
||||
CustomersInvoicesArea=Customer billing area
|
||||
SupplierInvoicesArea=Supplier billing area
|
||||
FacParentLine=Invoice Line Parent
|
||||
SituationTotalRayToRest=Remainder to pay without taxe
|
||||
PDFSituationTitle=Situation n° %d
|
||||
SituationTotalProgress=Total progress %d %%
|
||||
SearchUnpaidInvoicesWithDueDate=Search unpaid invoices with a due date = %s
|
||||
NoPaymentAvailable=No payment available for %s
|
||||
PaymentRegisteredAndInvoiceSetToPaid=Payment registered and invoice %s set to paid
|
||||
54
htdocs/langs/ar_DZ/blockedlog.lang
Normal file
54
htdocs/langs/ar_DZ/blockedlog.lang
Normal file
@ -0,0 +1,54 @@
|
||||
BlockedLog=Unalterable Logs
|
||||
Field=Field
|
||||
BlockedLogDesc=This module tracks some events into an unalterable log (that you can't modify once recorded) into a block chain, in real time. This module provides compatibility with requirements of laws of some countries (like France with the law Finance 2016 - Norme NF525).
|
||||
Fingerprints=Archived events and fingerprints
|
||||
FingerprintsDesc=This is the tool to browse or extract the unalterable logs. Unalterable logs are generated and archived locally into a dedicated table, in real time when you record a business event. You can use this tool to export this archive and save it into an external support (some countries, like France, ask that you do it every year). Note that, there is no feature to purge this log and every change tried to be done directly into this log (by a hacker for example) will be reported with a non-valid fingerprint. If you really need to purge this table because you used your application for a demo/test purpose and want to clean your data to start your production, you can ask your reseller or integrator to reset your database (all your data will be removed).
|
||||
CompanyInitialKey=Company initial key (hash of genesis block)
|
||||
BrowseBlockedLog=Unalterable logs
|
||||
ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long)
|
||||
ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long)
|
||||
DownloadBlockChain=Download fingerprints
|
||||
KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record.
|
||||
OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one.
|
||||
OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously.
|
||||
AddedByAuthority=Stored into remote authority
|
||||
NotAddedByAuthorityYet=Not yet stored into remote authority
|
||||
ShowDetails=Show stored details
|
||||
logPAYMENT_VARIOUS_CREATE=Payment (not assigned to an invoice) created
|
||||
logPAYMENT_VARIOUS_MODIFY=Payment (not assigned to an invoice) modified
|
||||
logPAYMENT_VARIOUS_DELETE=Payment (not assigned to an invoice) logical deletion
|
||||
logPAYMENT_ADD_TO_BANK=Payment added to bank
|
||||
logPAYMENT_CUSTOMER_CREATE=Customer payment created
|
||||
logPAYMENT_CUSTOMER_DELETE=Customer payment logical deletion
|
||||
logDONATION_PAYMENT_CREATE=Donation payment created
|
||||
logDONATION_PAYMENT_DELETE=Donation payment logical deletion
|
||||
logBILL_PAYED=Customer invoice paid
|
||||
logBILL_UNPAYED=Customer invoice set unpaid
|
||||
logBILL_VALIDATE=Customer invoice validated
|
||||
logBILL_SENTBYMAIL=Customer invoice send by mail
|
||||
logBILL_DELETE=Customer invoice logically deleted
|
||||
logMODULE_RESET=Module BlockedLog was disabled
|
||||
logMODULE_SET=Module BlockedLog was enabled
|
||||
logDON_VALIDATE=Donation validated
|
||||
logDON_MODIFY=Donation modified
|
||||
logDON_DELETE=Donation logical deletion
|
||||
logMEMBER_SUBSCRIPTION_CREATE=Member subscription created
|
||||
logMEMBER_SUBSCRIPTION_MODIFY=Member subscription modified
|
||||
logMEMBER_SUBSCRIPTION_DELETE=Member subscription logical deletion
|
||||
logCASHCONTROL_VALIDATE=Cash desk closing recording
|
||||
BlockedLogBillDownload=Customer invoice download
|
||||
BlockedLogBillPreview=Customer invoice preview
|
||||
BlockedlogInfoDialog=Log Details
|
||||
ListOfTrackedEvents=List of tracked events
|
||||
Fingerprint=Fingerprint
|
||||
DownloadLogCSV=Export archived logs (CSV)
|
||||
logDOC_PREVIEW=Preview of a validated document in order to print or download
|
||||
logDOC_DOWNLOAD=Download of a validated document in order to print or send
|
||||
DataOfArchivedEvent=Full datas of archived event
|
||||
ImpossibleToReloadObject=Original object (type %s, id %s) not linked (see 'Full datas' column to get unalterable saved data)
|
||||
BlockedLogAreRequiredByYourCountryLegislation=Unalterable Logs module may be required by the legislation of your country. Disabling this module may render any future transactions invalid with respect to the law and the use of legal software as they can not be validated by a tax audit.
|
||||
BlockedLogActivatedBecauseRequiredByYourCountryLegislation=Unalterable Logs module was activated because of the legislation of your country. Disabling this module may render any future transactions invalid with respect to the law and the use of legal software as they cannot be validated by a tax audit.
|
||||
BlockedLogDisableNotAllowedForCountry=List of countries where usage of this module is mandatory (just to prevent to disable the module by error, if your country is in this list, disable of module is not possible without editing this list first. Note also that enabling/disabling this module will keep a track into the unalterable log).
|
||||
OnlyNonValid=Non-valid
|
||||
TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters.
|
||||
RestrictYearToExport=Restrict month / year to export
|
||||
22
htdocs/langs/ar_DZ/bookmarks.lang
Normal file
22
htdocs/langs/ar_DZ/bookmarks.lang
Normal file
@ -0,0 +1,22 @@
|
||||
# Dolibarr language file - Source file is en_US - marque pages
|
||||
AddThisPageToBookmarks=Add current page to bookmarks
|
||||
Bookmark=Bookmark
|
||||
Bookmarks=Bookmarks
|
||||
ListOfBookmarks=List of bookmarks
|
||||
EditBookmarks=List/edit bookmarks
|
||||
NewBookmark=New bookmark
|
||||
ShowBookmark=Show bookmark
|
||||
OpenANewWindow=Open a new tab
|
||||
ReplaceWindow=Replace current tab
|
||||
BookmarkTargetNewWindowShort=New tab
|
||||
BookmarkTargetReplaceWindowShort=Current tab
|
||||
BookmarkTitle=Bookmark name
|
||||
UrlOrLink=URL
|
||||
BehaviourOnClick=Behaviour when a bookmark URL is selected
|
||||
CreateBookmark=Create bookmark
|
||||
SetHereATitleForLink=Set a name for the bookmark
|
||||
UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external/absolute link (https://URL) or an internal/relative link (/DOLIBARR_ROOT/htdocs/...)
|
||||
ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choose if the linked page should open in the current tab or a new tab
|
||||
BookmarksManagement=Bookmarks management
|
||||
BookmarksMenuShortCut=Ctrl + shift + m
|
||||
NoBookmarks=No bookmarks defined
|
||||
120
htdocs/langs/ar_DZ/boxes.lang
Normal file
120
htdocs/langs/ar_DZ/boxes.lang
Normal file
@ -0,0 +1,120 @@
|
||||
# Dolibarr language file - Source file is en_US - boxes
|
||||
BoxDolibarrStateBoard=Statistics on main business objects in database
|
||||
BoxLoginInformation=Login Information
|
||||
BoxLastRssInfos=RSS Information
|
||||
BoxLastProducts=Latest %s Products/Services
|
||||
BoxProductsAlertStock=Stock alerts for products
|
||||
BoxLastProductsInContract=Latest %s contracted products/services
|
||||
BoxLastSupplierBills=Latest Vendor invoices
|
||||
BoxLastCustomerBills=Latest Customer invoices
|
||||
BoxOldestUnpaidCustomerBills=Oldest unpaid customer invoices
|
||||
BoxOldestUnpaidSupplierBills=Oldest unpaid vendor invoices
|
||||
BoxLastProposals=Latest commercial proposals
|
||||
BoxLastProspects=Latest modified prospects
|
||||
BoxLastCustomers=Latest modified customers
|
||||
BoxLastSuppliers=Latest modified suppliers
|
||||
BoxLastCustomerOrders=Latest sales orders
|
||||
BoxLastActions=Latest actions
|
||||
BoxLastContracts=Latest contracts
|
||||
BoxLastContacts=Latest contacts/addresses
|
||||
BoxLastMembers=Latest members
|
||||
BoxLastModifiedMembers=Latest modified members
|
||||
BoxLastMembersSubscriptions=Latest member subscriptions
|
||||
BoxFicheInter=Latest interventions
|
||||
BoxCurrentAccounts=Open accounts balance
|
||||
BoxTitleMemberNextBirthdays=Birthdays of this month (members)
|
||||
BoxTitleMembersByType=Members by type
|
||||
BoxTitleMembersSubscriptionsByYear=Members Subscriptions by year
|
||||
BoxTitleLastRssInfos=Latest %s news from %s
|
||||
BoxTitleLastProducts=Products/Services: last %s modified
|
||||
BoxTitleProductsAlertStock=Products: stock alert
|
||||
BoxTitleLastSuppliers=Latest %s recorded suppliers
|
||||
BoxTitleLastModifiedSuppliers=Vendors: last %s modified
|
||||
BoxTitleLastModifiedCustomers=Customers: last %s modified
|
||||
BoxTitleLastCustomersOrProspects=Latest %s customers or prospects
|
||||
BoxTitleLastCustomerBills=Latest %s modified Customer invoices
|
||||
BoxTitleLastSupplierBills=Latest %s modified Vendor invoices
|
||||
BoxTitleLastModifiedProspects=Prospects: last %s modified
|
||||
BoxTitleLastModifiedMembers=Latest %s members
|
||||
BoxTitleLastFicheInter=Latest %s modified interventions
|
||||
BoxTitleOldestUnpaidCustomerBills=Customer Invoices: oldest %s unpaid
|
||||
BoxTitleOldestUnpaidSupplierBills=Vendor Invoices: oldest %s unpaid
|
||||
BoxTitleCurrentAccounts=Open Accounts: balances
|
||||
BoxTitleSupplierOrdersAwaitingReception=Supplier orders awaiting reception
|
||||
BoxTitleLastModifiedContacts=Contacts/Addresses: last %s modified
|
||||
BoxMyLastBookmarks=Bookmarks: latest %s
|
||||
BoxOldestExpiredServices=Oldest active expired services
|
||||
BoxLastExpiredServices=Latest %s oldest contacts with active expired services
|
||||
BoxTitleLastActionsToDo=Latest %s actions to do
|
||||
BoxTitleLastContracts=Latest %s contracts which were modified
|
||||
BoxTitleLastModifiedDonations=Latest %s donations which were modified
|
||||
BoxTitleLastModifiedExpenses=Latest %s expense reports which were modified
|
||||
BoxTitleLatestModifiedBoms=Latest %s BOMs which were modified
|
||||
BoxTitleLatestModifiedMos=Latest %s Manufacturing Orders which were modified
|
||||
BoxTitleLastOutstandingBillReached=Customers with maximum outstanding exceeded
|
||||
BoxGlobalActivity=Global activity (invoices, proposals, orders)
|
||||
BoxGoodCustomers=Good customers
|
||||
BoxTitleGoodCustomers=%s Good customers
|
||||
BoxScheduledJobs=Scheduled jobs
|
||||
BoxTitleFunnelOfProspection=Lead funnel
|
||||
FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Latest successful refresh date: %s
|
||||
LastRefreshDate=Latest 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 sales orders
|
||||
NoRecordedProposals=No recorded proposals
|
||||
NoRecordedInvoices=No recorded customer invoices
|
||||
NoUnpaidCustomerBills=No unpaid customer invoices
|
||||
NoUnpaidSupplierBills=No unpaid vendor invoices
|
||||
NoModifiedSupplierBills=No recorded vendor 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 purchase orders
|
||||
BoxLatestSupplierOrdersAwaitingReception=Latest Purchase Orders (with a pending reception)
|
||||
NoSupplierOrder=No recorded purchase order
|
||||
BoxCustomersInvoicesPerMonth=Customer Invoices per month
|
||||
BoxSuppliersInvoicesPerMonth=Vendor Invoices per month
|
||||
BoxCustomersOrdersPerMonth=Sales Orders per month
|
||||
BoxSuppliersOrdersPerMonth=Vendor Orders per month
|
||||
BoxProposalsPerMonth=Proposals per month
|
||||
NoTooLowStockProducts=No products are under the low stock limit
|
||||
BoxProductDistribution=Products/Services Distribution
|
||||
ForObject=On %s
|
||||
BoxTitleLastModifiedSupplierBills=Vendor Invoices: last %s modified
|
||||
BoxTitleLatestModifiedSupplierOrders=Vendor Orders: last %s modified
|
||||
BoxTitleLastModifiedCustomerBills=Customer Invoices: last %s modified
|
||||
BoxTitleLastModifiedCustomerOrders=Sales Orders: last %s modified
|
||||
BoxTitleLastModifiedPropals=Latest %s modified proposals
|
||||
BoxTitleLatestModifiedJobPositions=Latest %s modified job positions
|
||||
BoxTitleLatestModifiedCandidatures=Latest %s modified job applications
|
||||
ForCustomersInvoices=Customers invoices
|
||||
ForCustomersOrders=Customers orders
|
||||
ForProposals=Proposals
|
||||
LastXMonthRolling=The latest %s month rolling
|
||||
ChooseBoxToAdd=Add widget to your dashboard
|
||||
BoxAdded=Widget was added in your dashboard
|
||||
BoxTitleUserBirthdaysOfMonth=Birthdays of this month (users)
|
||||
BoxLastManualEntries=Latest record in accountancy entered manually or without source document
|
||||
BoxTitleLastManualEntries=%s latest record entered manually or without source document
|
||||
NoRecordedManualEntries=No manual entries record in accountancy
|
||||
BoxSuspenseAccount=Count accountancy operation with suspense account
|
||||
BoxTitleSuspenseAccount=Number of unallocated lines
|
||||
NumberOfLinesInSuspenseAccount=Number of line in suspense account
|
||||
SuspenseAccountNotDefined=Suspense account isn't defined
|
||||
BoxLastCustomerShipments=Last customer shipments
|
||||
BoxTitleLastCustomerShipments=Latest %s customer shipments
|
||||
NoRecordedShipments=No recorded customer shipment
|
||||
BoxCustomersOutstandingBillReached=Customers with oustanding limit reached
|
||||
# Pages
|
||||
UsersHome=Home users and groups
|
||||
MembersHome=Home Membership
|
||||
ThirdpartiesHome=Home Thirdparties
|
||||
TicketsHome=Home Tickets
|
||||
AccountancyHome=Home Accountancy
|
||||
ValidatedProjects=Validated projects
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user