Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop

This commit is contained in:
Laurent Destailleur 2016-06-06 10:58:43 +02:00
commit 51ce4804dd
114 changed files with 790 additions and 578 deletions

View File

@ -121,6 +121,7 @@ NEW: When emailing is not sent completely, show progression.
For developers: For developers:
NEW: Add a css class style called 'reposition', so when clicking on a link with this class will move scrollbarr to be placed at same page location.
NEW: TimeZone can be supplied to mktime NEW: TimeZone can be supplied to mktime
NEW: hook in shipment card NEW: hook in shipment card
NEW: Deprecated Societe::set_prospect_level, Societe::set_commnucation_level, Societe::set_OutstandingBill functions NEW: Deprecated Societe::set_prospect_level, Societe::set_commnucation_level, Societe::set_OutstandingBill functions

View File

@ -138,7 +138,7 @@ if ($action == 'display' || $action == 'delete') {
if(!empty($obj)){ if(!empty($obj)){
foreach ( $obj as $cpt ) { foreach ( $obj as $cpt ) {
$var = ! $var; $var = ! $var;
print "<tr $bc[$var]>"; print '<tr'. $bc[$var].'>';
print '<td>' . length_accountg($cpt->account_number) . '</td>'; print '<td>' . length_accountg($cpt->account_number) . '</td>';
print '<td>' . $cpt->label . '</td>'; print '<td>' . $cpt->label . '</td>';
print $form->formconfirm($_SERVER["PHP_SELF"]."?account_category=$cat_id&cptid=".$cpt->rowid, $langs->trans("DeleteCptCategory"), $langs->trans("ConfirmDeleteCptCategory"), "delete", '', 0, "action-delete".$j); print $form->formconfirm($_SERVER["PHP_SELF"]."?account_category=$cat_id&cptid=".$cpt->rowid, $langs->trans("DeleteCptCategory"), $langs->trans("ConfirmDeleteCptCategory"), "delete", '', 0, "action-delete".$j);

View File

@ -138,7 +138,7 @@ if ($result) {
while ( $i < min($num_lines, $limit) ) { while ( $i < min($num_lines, $limit) ) {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$var = ! $var; $var = ! $var;
print "<tr $bc[$var]>"; print '<tr'. $bc[$var].'>';
print '<td align="left">'; print '<td align="left">';
print $objp->accounting; print $objp->accounting;

View File

@ -328,10 +328,10 @@ if ($result) {
$product_static = new Product($db); $product_static = new Product($db);
print "<tr $bc[$var]>"; print '<tr'. $bc[$var].'>';
print "</tr>"; print "</tr>";
print "<tr $bc[$var]>"; print '<tr'. $bc[$var].'>';
// Ref produit as link // Ref produit as link
$product_static->ref = $obj->ref; $product_static->ref = $obj->ref;
$product_static->id = $obj->rowid; $product_static->id = $obj->rowid;

View File

@ -223,7 +223,7 @@ else {
if(empty($description)){ if(empty($description)){
$link = '<a href="../admin/card.php?action=create&compte=' . length_accountg($line->numero_compte) . '">' . img_edit_add() .'</a>'; $link = '<a href="../admin/card.php?action=create&compte=' . length_accountg($line->numero_compte) . '">' . img_edit_add() .'</a>';
} }
print "<tr $bc[$var]>"; print '<tr'. $bc[$var].'>';
print '<td>' . length_accountg($line->numero_compte) . '</td>'; print '<td>' . length_accountg($line->numero_compte) . '</td>';
print '<td>' . $description . '</td>'; print '<td>' . $description . '</td>';

View File

@ -346,7 +346,7 @@ if ($action == 'create') {
foreach ( $book->linesmvt as $line ) { foreach ( $book->linesmvt as $line ) {
$var = ! $var; $var = ! $var;
print "<tr $bc[$var]>"; print '<tr'. $bc[$var].'>';
$total_debit += $line->debit; $total_debit += $line->debit;
$total_credit += $line->credit; $total_credit += $line->credit;
@ -400,7 +400,7 @@ if ($action == 'create') {
if ($action == "" || $action == 'add') { if ($action == "" || $action == 'add') {
$var = ! $var; $var = ! $var;
print "<tr $bc[$var]>"; print '<tr'. $bc[$var].'>';
print '<td>'; print '<td>';
print $formventilation->select_account($account_number, 'account_number', 0, array (), 1, 1, ''); print $formventilation->select_account($account_number, 'account_number', 0, array (), 1, 1, '');
print '</td>'; print '</td>';

View File

@ -368,7 +368,7 @@ foreach ( $object->lines as $line ) {
$total_debit += $line->debit; $total_debit += $line->debit;
$total_credit += $line->credit; $total_credit += $line->credit;
print "<tr $bc[$var]>"; print '<tr'. $bc[$var].'>';
print '<td><a href="./card.php?piece_num=' . $line->piece_num . '">' . $line->piece_num . '</a></td>'; print '<td><a href="./card.php?piece_num=' . $line->piece_num . '">' . $line->piece_num . '</a></td>';
print '<td align="center">' . dol_print_date($line->doc_date, 'day') . '</td>'; print '<td align="center">' . dol_print_date($line->doc_date, 'day') . '</td>';

View File

@ -269,7 +269,7 @@ $var = True;
foreach ( $object->lines as $line ) { foreach ( $object->lines as $line ) {
$var = ! $var; $var = ! $var;
print "<tr $bc[$var]>"; print '<tr'. $bc[$var].'>';
print '<td>' . $line->piece_num . '</td>' . "\n"; print '<td>' . $line->piece_num . '</td>' . "\n";
print '<td>' . $line->doc_type . '</td>' . "\n"; print '<td>' . $line->doc_type . '</td>' . "\n";
print '<td>' . dol_print_date($line->doc_date) . '</td>'; print '<td>' . dol_print_date($line->doc_date) . '</td>';

View File

@ -288,7 +288,7 @@ if ($result) {
$var = ! $var; $var = ! $var;
$codecompta = length_accountg($objp->account_number) . ' - ' . $objp->label_compte; $codecompta = length_accountg($objp->account_number) . ' - ' . $objp->label_compte;
print "<tr $bc[$var]>"; print '<tr'. $bc[$var].'>';
// Ref Invoice // Ref Invoice
$facture_static->ref = $objp->facnumber; $facture_static->ref = $objp->facnumber;

View File

@ -302,7 +302,7 @@ if ($result) {
if ($objp->code_sell_l != $objp->code_sell_p) if ($objp->code_sell_l != $objp->code_sell_p)
$code_sell_p_l_differ = 'color:red'; $code_sell_p_l_differ = 'color:red';
print "<tr $bc[$var]>"; print '<tr'. $bc[$var].'>';
// Ref Invoice // Ref Invoice
$facture_static->ref = $objp->facnumber; $facture_static->ref = $objp->facnumber;

View File

@ -127,7 +127,7 @@ if(!empty($cats))
$resultN = $AccCat->getResult($cpt['account_number'], 0, $year_current, $cpt['dc']); $resultN = $AccCat->getResult($cpt['account_number'], 0, $year_current, $cpt['dc']);
$sommes[$code]['NP'] += $resultNP; $sommes[$code]['NP'] += $resultNP;
$sommes[$code]['N'] += $resultN; $sommes[$code]['N'] += $resultN;
print "<tr $bc[$var]>"; print '<tr'. $bc[$var].'>';
print '<td>' . $cpt['account_number'] . '</td>'; print '<td>' . $cpt['account_number'] . '</td>';
print '<td>' . $cpt['name_cpt'] . '</td>'; print '<td>' . $cpt['name_cpt'] . '</td>';
print '<td>' . price($resultNP) . '</td>'; print '<td>' . price($resultNP) . '</td>';

View File

@ -236,7 +236,7 @@ if ($result) {
$var = ! $var; $var = ! $var;
$codeCompta = length_accountg($objp->account_number) . ' - ' . $objp->label; $codeCompta = length_accountg($objp->account_number) . ' - ' . $objp->label;
print "<tr $bc[$var]>"; print '<tr'. $bc[$var].'>';
// Ref Invoice // Ref Invoice
$facturefournisseur_static->ref = $objp->facnumber; $facturefournisseur_static->ref = $objp->facnumber;

View File

@ -314,7 +314,7 @@ if ($result) {
if ($objp->code_buy_l != $objp->code_buy_p) if ($objp->code_buy_l != $objp->code_buy_p)
$code_buy_p_l_differ = 'color:red'; $code_buy_p_l_differ = 'color:red';
print "<tr $bc[$var]>"; print '<tr'. $bc[$var].'>';
// Ref Invoice // Ref Invoice
$facturefourn_static->ref = $objp->ref; $facturefourn_static->ref = $objp->ref;

View File

@ -200,7 +200,7 @@ if (! empty($conf->paybox->enabled) || ! empty($conf->paypal->enabled))
print '<tr '.$bc[$var].' id="tremail"><td>'; print '<tr '.$bc[$var].' id="tremail"><td>';
print $langs->trans("MEMBER_PAYONLINE_SENDEMAIL"); print $langs->trans("MEMBER_PAYONLINE_SENDEMAIL");
print '</td><td align="right">'; print '</td><td align="right">';
print '<input type="text" id="MEMBER_PAYONLINE_SENDEMAIL" name="MEMBER_PAYONLINE_SENDEMAIL" size="24" value="'.(! empty($conf->global->MEMBER_PAYONLINE_SENDEMAIL)?$conf->global->MEMBER_PAYONLINE_SENDEMAIL:'').'">'; print '<input type="text" id="MEMBER_PAYONLINE_SENDEMAIL" name="MEMBER_PAYONLINE_SENDEMAIL" size="24" value="'.(! empty($conf->global->MEMBER_PAYONLINE_SENDEMAIL)?$conf->global->MEMBER_PAYONLINE_SENDEMAIL:'').'">';
print "</td></tr>\n"; print "</td></tr>\n";
} }

View File

@ -253,7 +253,8 @@ if (empty($reshook))
} }
$lastname=$_POST["lastname"]; $lastname=$_POST["lastname"];
$firstname=$_POST["firstname"]; $firstname=$_POST["firstname"];
$morphy=$morphy=$_POST["morphy"]; $morphy=$_POST["morphy"];
$login=$_POST["login"];
if ($morphy != 'mor' && empty($lastname)) { if ($morphy != 'mor' && empty($lastname)) {
$error++; $error++;
$langs->load("errors"); $langs->load("errors");
@ -264,7 +265,19 @@ if (empty($reshook))
$langs->load("errors"); $langs->load("errors");
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Firstname")), null, 'errors'); setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Firstname")), null, 'errors');
} }
if ($morphy == 'mor' && empty($societe)) {
$error++;
$langs->load("errors");
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Company")), null, 'errors');
}
// Test si le login existe deja
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
{
if (empty($login)) {
$error++;
setEventMessages($langs->trans("ErrorFieldRequired", $langs->trans("Login")), null, 'errors');
}
}
// Create new object // Create new object
if ($result > 0 && ! $error) if ($result > 0 && ! $error)
{ {
@ -506,6 +519,11 @@ if (empty($reshook))
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Password")), null, 'errors'); setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Password")), null, 'errors');
} }
} }
if ($morphy == 'mor' && empty($societe)) {
$error++;
$langs->load("errors");
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Company")), null, 'errors');
}
if ($morphy != 'mor' && empty($lastname)) { if ($morphy != 'mor' && empty($lastname)) {
$error++; $error++;
$langs->load("errors"); $langs->load("errors");

View File

@ -272,7 +272,7 @@ if ($action == 'create')
</script>'; </script>';
print load_fiche_titre($langs->trans("NewMenu"),'','title_setup'); print load_fiche_titre($langs->trans("NewMenu"),'','title_setup');
print '<form action="./edit.php?action=add&menuId='.$_GET['menuId'].'" method="post" name="formmenucreate">'; print '<form action="./edit.php?action=add&menuId='.$_GET['menuId'].'" method="post" name="formmenucreate">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
@ -284,7 +284,7 @@ if ($action == 'create')
$parent_rowid = $_GET['menuId']; $parent_rowid = $_GET['menuId'];
if ($_GET['menuId']) if ($_GET['menuId'])
{ {
$sql = "SELECT m.rowid, m.mainmenu, m.level, m.langs FROM ".MAIN_DB_PREFIX."menu as m WHERE m.rowid = ".$_GET['menuId']; $sql = "SELECT m.rowid, m.mainmenu, m.leftmenu, m.level, m.langs FROM ".MAIN_DB_PREFIX."menu as m WHERE m.rowid = ".$_GET['menuId'];
$res = $db->query($sql); $res = $db->query($sql);
if ($res) if ($res)
{ {
@ -293,6 +293,7 @@ if ($action == 'create')
{ {
$parent_rowid = $menu['rowid']; $parent_rowid = $menu['rowid'];
$parent_mainmenu = $menu['mainmenu']; $parent_mainmenu = $menu['mainmenu'];
$parent_leftmenu = $menu['leftmenu'];
$parent_langs = $menu['langs']; $parent_langs = $menu['langs'];
$parent_level = $menu['level']; $parent_level = $menu['level'];
} }
@ -343,7 +344,9 @@ if ($action == 'create')
{ {
print '<td><input type="text" size="20" id="menuId" name="menuId" value="'.($_POST["menuId"]?$_POST["menuId"]:'').'"></td>'; print '<td><input type="text" size="20" id="menuId" name="menuId" value="'.($_POST["menuId"]?$_POST["menuId"]:'').'"></td>';
} }
print '<td>'.$langs->trans('DetailMenuIdParent').'</td></tr>'; print '<td>'.$langs->trans('DetailMenuIdParent');
print ', '.$langs->trans("Example").': fk_mainmenu=abc&fk_leftmenu=def';
print '</td></tr>';
// Title // Title
print '<tr><td class="fieldrequired">'.$langs->trans('Title').'</td><td><input type="text" size="30" name="titre" value="'.$_POST["titre"].'"></td><td>'.$langs->trans('DetailTitre').'</td></tr>'; print '<tr><td class="fieldrequired">'.$langs->trans('Title').'</td><td><input type="text" size="30" name="titre" value="'.$_POST["titre"].'"></td><td>'.$langs->trans('DetailTitre').'</td></tr>';
@ -423,9 +426,10 @@ elseif ($action == 'edit')
// MenuId Parent // MenuId Parent
print '<tr><td class="fieldrequired">'.$langs->trans('MenuIdParent').'</td>'; print '<tr><td class="fieldrequired">'.$langs->trans('MenuIdParent').'</td>';
print '<td><input type="text" name="fk_menu" value="'.$menu->fk_menu.'" size=10></td>'; $valtouse=$menu->fk_menu;
//$menu_handler if ($menu->fk_mainmenu) $valtouse='fk_mainmenu='.$menu->fk_mainmenu;
//print '<td><input type="text" size="50" name="handler" value="all"></td>'; if ($menu->fk_leftmenu) $valtouse.='&fk_leftmenu='.$menu->fk_leftmenu;
print '<td><input type="text" name="fk_menu" value="'.$valtouse.'" size="10"></td>';
print '<td>'.$langs->trans('DetailMenuIdParent').'</td></tr>'; print '<td>'.$langs->trans('DetailMenuIdParent').'</td></tr>';
// Niveau // Niveau

View File

@ -289,17 +289,18 @@ if ($conf->use_javascript_ajax)
- la chaine a afficher - la chaine a afficher
ie: data[]= array (index, index parent, chaine ) ie: data[]= array (index, index parent, chaine )
*/ */
//il faut d'abord declarer un element racine de l'arbre //il faut d'abord declarer un element racine de l'arbre
$data[] = array('rowid'=>0,'fk_menu'=>-1,'title'=>"racine",'mainmenu'=>'','leftmenu'=>'','fk_mainmenu'=>'','fk_leftmenu'=>''); $data[] = array('rowid'=>0,'fk_menu'=>-1,'title'=>"racine",'mainmenu'=>'','leftmenu'=>'','fk_mainmenu'=>'','fk_leftmenu'=>'');
//puis tous les elements enfants //puis tous les elements enfants
$sql = "SELECT m.rowid, m.titre, m.langs, m.mainmenu, m.leftmenu, m.fk_menu, m.fk_mainmenu, m.fk_leftmenu"; $sql = "SELECT m.rowid, m.titre, m.langs, m.mainmenu, m.leftmenu, m.fk_menu, m.fk_mainmenu, m.fk_leftmenu, m.module";
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m"; $sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
$sql.= " WHERE menu_handler = '".$menu_handler_to_search."'"; $sql.= " WHERE menu_handler = '".$menu_handler_to_search."'";
$sql.= " AND entity = ".$conf->entity; $sql.= " AND entity = ".$conf->entity;
$sql.= " AND fk_menu >= 0"; //$sql.= " AND fk_menu >= 0";
$sql.= " ORDER BY m.position, m.rowid"; // Order is position then rowid (because we need a sort criteria when position is same) $sql.= " ORDER BY m.position, m.rowid"; // Order is position then rowid (because we need a sort criteria when position is same)
$res = $db->query($sql); $res = $db->query($sql);
@ -314,9 +315,10 @@ if ($conf->use_javascript_ajax)
$titre = $langs->trans($menu['titre']); $titre = $langs->trans($menu['titre']);
$data[] = array( $data[] = array(
'rowid'=>$menu['rowid'], 'rowid'=>$menu['rowid'],
'module'=>$menu['module'],
'fk_menu'=>$menu['fk_menu'], 'fk_menu'=>$menu['fk_menu'],
'title'=>$titre, 'title'=>$titre,
'mainmenu'=>$menu['mainmenu'], 'mainmenu'=>$menu['mainmenu'],
'leftmenu'=>$menu['leftmenu'], 'leftmenu'=>$menu['leftmenu'],
'fk_mainmenu'=>$menu['fk_mainmenu'], 'fk_mainmenu'=>$menu['fk_mainmenu'],
'fk_leftmenu'=>$menu['fk_leftmenu'], 'fk_leftmenu'=>$menu['fk_leftmenu'],
@ -334,17 +336,54 @@ if ($conf->use_javascript_ajax)
} }
} }
global $tree_recur_alreadyadded; // This var was def into tree_recur
// Appelle de la fonction recursive (ammorce) // Appelle de la fonction recursive (ammorce)
// avec recherche depuis la racine. // avec recherche depuis la racine.
//var_dump($data); //var_dump($data);
tree_recur($data,$data[0],0); tree_recur($data, $data[0], 0, 'iddivjstree'); // $data[0] is virtual record 'racine'
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
print '</table>'; print '</table>';
// Process remaining records (records that are not linked to root by any path)
$remainingdata = array();
foreach($data as $datar)
{
if (empty($datar['rowid']) || $tree_recur_alreadyadded[$datar['rowid']]) continue;
$remainingdata[] = $datar;
}
if (count($remainingdata))
{
print '<table class="border" width="100%">';
print '<tr class="liste_titre">';
print '<td>'.$langs->trans("NotTopTreeMenuPersonalized").'</td>';
print '<td align="right"></td>';
print '</tr>';
print '<tr>';
print '<td colspan="2">';
foreach($remainingdata as $datar)
{
$father = array('rowid'=>$datar['rowid'],'title'=>"???",'mainmenu'=>$datar['fk_mainmenu'],'leftmenu'=>$datar['fk_leftmenu'],'fk_mainmenu'=>'','fk_leftmenu'=>'');
//print 'Start with rowid='.$datar['rowid'].' mainmenu='.$father ['mainmenu'].' leftmenu='.$father ['leftmenu'].'<br>'."\n";
tree_recur($data, $father, 0, 'iddivjstree'.$datar['rowid'], 1, 1);
}
print '</td>';
print '</tr>';
print '</table>';
}
print '</div>'; print '</div>';

View File

@ -77,20 +77,20 @@ if (preg_match('/del_(.*)/',$action,$reg))
if ($action == 'add_currency') if ($action == 'add_currency')
{ {
$code = GETPOST('code', 'alpha'); $langs->loadCacheCurrencies('');
$name = GETPOST('name', 'alpha');
$rate = GETPOST('rate', 'alpha');
$code = GETPOST('code', 'alpha');
$rate = GETPOST('rate', 'alpha');
$currency = new MultiCurrency($db); $currency = new MultiCurrency($db);
$currency->code = $code; $currency->code = $code;
$currency->name = $name; $currency->name = !empty($langs->cache_currencies[$code]['label']) ? $langs->cache_currencies[$code]['label'].' ('.$langs->getCurrencySymbol($code).')' : $code;
if ($currency->create($user) > 0) if ($currency->create($user) > 0)
{ {
if ($currency->addRate($rate)) setEventMessages($langs->trans('RecordSaved'), array()); if ($currency->addRate($rate)) setEventMessages($langs->trans('RecordSaved'), array());
else setEventMessages($langs->trans('ErrorAddRateFail'), array(), 'errors'); else setEventMessages($langs->trans('ErrorAddRateFail'), array(), 'errors');
} }
else setEventMessages($langs->trans('ErrorAddCurrencyFail'), array()); else setEventMessages($langs->trans('ErrorAddCurrencyFail'), $currency->errors, 'errors');
} }
elseif ($action == 'update_currency') elseif ($action == 'update_currency')
{ {
@ -182,6 +182,7 @@ print '<td>'.$langs->trans("Parameters").'</td>'."\n";
print '<td align="center" width="20">&nbsp;</td>'; print '<td align="center" width="20">&nbsp;</td>';
print '<td align="center" width="100">'.$langs->trans("Value").'</td>'."\n"; print '<td align="center" width="100">'.$langs->trans("Value").'</td>'."\n";
/* TODO uncomment when the functionality will integrated
$var=!$var; $var=!$var;
print '<tr '.$bc[$var].'>'; print '<tr '.$bc[$var].'>';
print '<td>'.$langs->transnoentitiesnoconv("multicurrency_useRateOnInvoiceDate").'</td>'; print '<td>'.$langs->transnoentitiesnoconv("multicurrency_useRateOnInvoiceDate").'</td>';
@ -194,6 +195,7 @@ print $form->selectyesno("MULTICURRENCY_USE_RATE_ON_INVOICE_DATE",$conf->global-
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">'; print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print '</form>'; print '</form>';
print '</td></tr>'; print '</td></tr>';
*/
$var=!$var; $var=!$var;
print '<tr '.$bc[$var].'>'; print '<tr '.$bc[$var].'>';
@ -208,6 +210,7 @@ print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">'
print '</form>'; print '</form>';
print '</td></tr>'; print '</td></tr>';
/* TODO uncomment when the functionality will integrated
$var=!$var; $var=!$var;
print '<tr '.$bc[$var].'>'; print '<tr '.$bc[$var].'>';
print '<td>'.$langs->transnoentitiesnoconv("multicurrency_buyPriceInCurrency").'</td>'; print '<td>'.$langs->transnoentitiesnoconv("multicurrency_buyPriceInCurrency").'</td>';
@ -220,7 +223,9 @@ print $form->selectyesno("MULTICURRENCY_BUY_PRICE_IN_CURRENCY",$conf->global->MU
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">'; print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print '</form>'; print '</form>';
print '</td></tr>'; print '</td></tr>';
*/
/* TODO uncomment when the functionality will integrated
$var=!$var; $var=!$var;
print '<tr '.$bc[$var].'>'; print '<tr '.$bc[$var].'>';
print '<td>'.$langs->transnoentitiesnoconv("multicurrency_modifyRateApplication").'</td>'; print '<td>'.$langs->transnoentitiesnoconv("multicurrency_modifyRateApplication").'</td>';
@ -234,71 +239,75 @@ print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">'
print '</form>'; print '</form>';
print '</td></tr>'; print '</td></tr>';
print '</table>';
print '<br />';
$var=false;
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print '<td>'.$langs->trans("CurrencyLayerAccount").'</td>'."\n";
print '<td align="center" width="20">&nbsp;</td>';
print '<td align="right" width="100">';
print '<form id="form_sync" action="" method="POST">';
print '<input type="hidden" name="action" value="synchronize" />';
print '<textarea id="response" class="hideobject" name="response"></textarea>';
print $langs->trans("Value").'&nbsp;<input type="button" id="bt_sync" class="button" onclick="javascript:getRates();" value="'.$langs->trans('Synchronize').'" />';
print '</form>';
print '</td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'>';
print '<td><a target="_blank" href="https://currencylayer.com">'.$langs->transnoentitiesnoconv("multicurrency_appId").'</a></td>';
print '<td align="center" width="20">&nbsp;</td>';
print '<td align="right" width="400">';
print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="set_MULTICURRENCY_APP_ID">';
print '<input type="text" name="MULTICURRENCY_APP_ID" value="'.$conf->global->MULTICURRENCY_APP_ID.'" size="28" />&nbsp;';
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print '</form>';
print '</td></tr>';
/* This property seems not used in code, so i comment it
$var=!$var;
print '<tr '.$bc[$var].'>';
print '<td>'.$langs->transnoentitiesnoconv("multicurrency_appCurrencySource").'</td>';
print '<td align="center" width="20">&nbsp;</td>';
print '<td align="right" width="400">';
print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="set_MULTICURRENCY_APP_SOURCE">';
print '<input type="text" name="MULTICURRENCY_APP_SOURCE" value="'.$conf->global->MULTICURRENCY_APP_SOURCE.'" size="10" placeholder="USD" />&nbsp;'; // Default: USD
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print '</form>';
print '</td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'>';
print '<td>'.$langs->transnoentitiesnoconv("multicurrency_alternateCurrencySource").'</td>';
print '<td align="center" width="20">&nbsp;</td>';
print '<td align="right" width="400">';
print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="set_MULTICURRENCY_ALTERNATE_SOURCE">';
print '<input type="text" name="MULTICURRENCY_ALTERNATE_SOURCE" value="'.$conf->global->MULTICURRENCY_ALTERNATE_SOURCE.'" size="10" placeholder="EUR" />&nbsp;'; // Example: EUR
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print '</form>';
print '</td></tr>';
*/ */
print '</table>'; print '</table>';
print '<br />'; print '<br />';
if (!empty($conf->global->MAIN_MULTICURRENCY_ALLOW_SYNCHRONIZATION))
{
$var=false;
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print '<td>'.$form->textwithpicto($langs->trans("CurrencyLayerAccount"), $langs->trans("CurrencyLayerAccount_help_to_synchronize")).'</td>'."\n";
print '<td align="center" width="20">&nbsp;</td>';
print '<td align="right" width="100">';
print '<form id="form_sync" action="" method="POST">';
print '<input type="hidden" name="action" value="synchronize" />';
print '<textarea id="response" class="hideobject" name="response"></textarea>';
print $langs->trans("Value").'&nbsp;<input type="button" id="bt_sync" class="button" onclick="javascript:getRates();" value="'.$langs->trans('Synchronize').'" />';
print '</form>';
print '</td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'>';
print '<td><a target="_blank" href="https://currencylayer.com">'.$langs->transnoentitiesnoconv("multicurrency_appId").'</a></td>';
print '<td align="center" width="20">&nbsp;</td>';
print '<td align="right" width="400">';
print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="set_MULTICURRENCY_APP_ID">';
print '<input type="text" name="MULTICURRENCY_APP_ID" value="'.$conf->global->MULTICURRENCY_APP_ID.'" size="28" />&nbsp;';
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print '</form>';
print '</td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'>';
print '<td>'.$langs->transnoentitiesnoconv("multicurrency_appCurrencySource").'</td>';
print '<td align="center" width="20">&nbsp;</td>';
print '<td align="right" width="400">';
print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="set_MULTICURRENCY_APP_SOURCE">';
print '<input type="text" name="MULTICURRENCY_APP_SOURCE" value="'.$conf->global->MULTICURRENCY_APP_SOURCE.'" size="10" placeholder="USD" />&nbsp;'; // Default: USD
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print '</form>';
print '</td></tr>';
$var=!$var;
print '<tr '.$bc[$var].'>';
print '<td>'.$langs->transnoentitiesnoconv("multicurrency_alternateCurrencySource").'</td>';
print '<td align="center" width="20">&nbsp;</td>';
print '<td align="right" width="400">';
print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="set_MULTICURRENCY_ALTERNATE_SOURCE">';
print '<input type="text" name="MULTICURRENCY_ALTERNATE_SOURCE" value="'.$conf->global->MULTICURRENCY_ALTERNATE_SOURCE.'" size="10" placeholder="EUR" />&nbsp;'; // Example: EUR
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print '</form>';
print '</td></tr>';
print '</table>';
print '<br />';
}
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td>'.$langs->trans("Currencies").'</td>'."\n"; print '<td>'.$form->textwithpicto($langs->trans("CurrenciesUsed"), $langs->transnoentitiesnoconv("CurrenciesUsed_help_to_add")).'</td>'."\n";
print '<td align="center" width="20">&nbsp;</td>'; print '<td align="center" width="20">&nbsp;</td>';
print '<td align="center" width="100">'.$langs->trans("Rate").'</td>'."\n"; print '<td align="center" width="100">'.$langs->trans("Rate").'</td>'."\n";
@ -307,7 +316,7 @@ print '<tr '.$bc[$var].'>';
print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'">'; print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="add_currency">'; print '<input type="hidden" name="action" value="add_currency">';
print '<td><input type="text" name="code" value="" size="5" placeholder="'.$langs->trans('code').'" /> - <input type="text" name="name" value="" size="35" placeholder="'.$langs->trans('name').'" /></td>'; print '<td>'.$form->selectCurrency('', 'code').'</td>';
print '<td align="center" width="20">&nbsp;</td>'; print '<td align="center" width="20">&nbsp;</td>';
print '<td align="right" width="300">'; print '<td align="right" width="300">';
print '<input type="text" name="rate" value="" size="13" placeholder="'.$langs->trans('rate').'" />&nbsp;'; print '<input type="text" name="rate" value="" size="13" placeholder="'.$langs->trans('rate').'" />&nbsp;';

View File

@ -1,6 +1,7 @@
<?php <?php
/* Copyright (C) 2013-2016 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2013-2016 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2015 Frederic France <frederic.france@free.fr> * Copyright (C) 2015 Frederic France <frederic.france@free.fr>
* Copyright (C) 2016 Juanjo Menent <jmenent@2byte.es>
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@ -377,7 +378,8 @@ if ($mode == 'template' && $user->admin)
if ($ret > 0) { if ($ret > 0) {
setEventMessages($printer->error, $printer->errors, 'errors'); setEventMessages($printer->error, $printer->errors, 'errors');
} else { } else {
for ($line=0; $line < count($printer->listprinterstemplates); $line++) { $max = count($printer->listprinterstemplates);
for ($line=0; $line < $max; $line++) {
$var = !$var; $var = !$var;
print '<tr '.$bc[$var].'>'; print '<tr '.$bc[$var].'>';
if ($action=='edittemplate' && $printer->listprinterstemplates[$line]['rowid']==$templateid) { if ($action=='edittemplate' && $printer->listprinterstemplates[$line]['rowid']==$templateid) {
@ -422,7 +424,8 @@ if ($mode == 'template' && $user->admin)
print '<th>'.$langs->trans("Tag").'</th>'; print '<th>'.$langs->trans("Tag").'</th>';
print '<th>'.$langs->trans("Description").'</th>'; print '<th>'.$langs->trans("Description").'</th>';
print "</tr>\n"; print "</tr>\n";
for ($tag=0; $tag < count($printer->tags); $tag++) { $max = count($printer->tags);
for ($tag=0; $tag < $max; $tag++) {
$var = !$var; $var = !$var;
print '<tr '.$bc[$var].'>'; print '<tr '.$bc[$var].'>';
print '<td>&lt;'.$printer->tags[$tag].'&gt;</td><td>'.$langs->trans(strtoupper($printer->tags[$tag])).'</td>'; print '<td>&lt;'.$printer->tags[$tag].'&gt;</td><td>'.$langs->trans(strtoupper($printer->tags[$tag])).'</td>';

View File

@ -1,7 +1,7 @@
<?php <?php
/* Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2001-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2003 Eric Seigne <erics@rycks.com> * Copyright (C) 2003 Eric Seigne <erics@rycks.com>
* Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2016 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -199,7 +199,7 @@ if ($status == 'todo') { $sql.= " AND ((a.percent >= 0 AND a.percent < 100) OR (
if ($filtert > 0 || $usergroup > 0) if ($filtert > 0 || $usergroup > 0)
{ {
$sql.= " AND ("; $sql.= " AND (";
if ($filtert > 0) $sql.= "(ar.fk_element = ".$filtert." OR a.fk_user_action=".$filtert.")"; if ($filtert > 0) $sql.= "(ar.fk_element = ".$filtert." OR (ar.fk_element IS NULL AND a.fk_user_action=".$filtert."))"; // The OR is for backward compatibility
if ($usergroup > 0) $sql.= ($filtert>0?" OR ":"")." ugu.fk_usergroup = ".$usergroup; if ($usergroup > 0) $sql.= ($filtert>0?" OR ":"")." ugu.fk_usergroup = ".$usergroup;
$sql.= ")"; $sql.= ")";
} }
@ -368,7 +368,7 @@ if ($resql)
$actionstatic->type_code=$obj->type_code; $actionstatic->type_code=$obj->type_code;
$actionstatic->type_label=$obj->type_label; $actionstatic->type_label=$obj->type_label;
$actionstatic->label=$obj->label; $actionstatic->label=$obj->label;
print $actionstatic->getNomUrl(1,28); print $actionstatic->getNomUrl(1,36);
print '</td>'; print '</td>';
if (! empty($conf->global->AGENDA_USE_EVENT_TYPE)) if (! empty($conf->global->AGENDA_USE_EVENT_TYPE))

View File

@ -1433,7 +1433,7 @@ if ($action == 'create')
print '<td>'.fieldLabel('Currency','multicurrency_code').'</td>'; print '<td>'.fieldLabel('Currency','multicurrency_code').'</td>';
print '<td colspan="3" class="maxwidthonsmartphone">'; print '<td colspan="3" class="maxwidthonsmartphone">';
$currency_code = (!empty($soc->multicurrency_code) ? $soc->multicurrency_code : ($object->multicurrency_code ? $object->multicurrency_code : $conf->currency)); $currency_code = (!empty($soc->multicurrency_code) ? $soc->multicurrency_code : ($object->multicurrency_code ? $object->multicurrency_code : $conf->currency));
print $form->selectMultiCurrency($currency_code, 'multicurrency_code', 1); print $form->selectMultiCurrency($currency_code, 'multicurrency_code', 0);
print '</td></tr>'; print '</td></tr>';
} }

View File

@ -2570,7 +2570,7 @@ class Propal extends CommonObject
$response = new WorkboardResponse(); $response = new WorkboardResponse();
$response->warning_delay = $delay_warning/60/60/24; $response->warning_delay = $delay_warning/60/60/24;
$response->label = $label; $response->label = $label;
$response->url = DOL_URL_ROOT.'/comm/propal/list.php?viewstatut='.$statut; $response->url = DOL_URL_ROOT.'/comm/propal/list.php?viewstatut='.$statut.'&mainmenu=commercial&leftmenu=propals';
$response->img = img_object($langs->trans("Propals"),"propal"); $response->img = img_object($langs->trans("Propals"),"propal");
// This assignment in condition is not a bug. It allows walking the results. // This assignment in condition is not a bug. It allows walking the results.
@ -2674,9 +2674,12 @@ class Propal extends CommonObject
$line->remise_percent=00; $line->remise_percent=00;
} }
$prodid = mt_rand(1, $num_prods); if ($num_prods > 0)
$line->fk_product=$prodids[$prodid]; {
$prodid = mt_rand(1, $num_prods);
$line->fk_product=$prodids[$prodid];
}
$this->lines[$xnbp]=$line; $this->lines[$xnbp]=$line;
$this->total_ht += $line->total_ht; $this->total_ht += $line->total_ht;

View File

@ -2974,7 +2974,7 @@ class Commande extends CommonOrder
$response = new WorkboardResponse(); $response = new WorkboardResponse();
$response->warning_delay=$conf->commande->client->warning_delay/60/60/24; $response->warning_delay=$conf->commande->client->warning_delay/60/60/24;
$response->label=$langs->trans("OrdersToProcess"); $response->label=$langs->trans("OrdersToProcess");
$response->url=DOL_URL_ROOT.'/commande/list.php?viewstatut=-3'; $response->url=DOL_URL_ROOT.'/commande/list.php?viewstatut=-3&mainmenu=commercial&leftmenu=orders';
$response->img=img_object($langs->trans("Orders"),"order"); $response->img=img_object($langs->trans("Orders"),"order");
$generic_commande = new Commande($this->db); $generic_commande = new Commande($this->db);
@ -3278,9 +3278,12 @@ class Commande extends CommonOrder
$line->total_tva=19.6; $line->total_tva=19.6;
$line->remise_percent=0; $line->remise_percent=0;
} }
$prodid = mt_rand(1, $num_prods); if ($num_prods > 0)
$line->fk_product=$prodids[$prodid]; {
$prodid = mt_rand(1, $num_prods);
$line->fk_product=$prodids[$prodid];
}
$this->lines[$xnbp]=$line; $this->lines[$xnbp]=$line;
$this->total_ht += $line->total_ht; $this->total_ht += $line->total_ht;

View File

@ -206,7 +206,7 @@ class CommandeStats extends Stats
$sql = "SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.".$this->field_line.") as total, AVG(tl.".$this->field_line.") as avg"; $sql = "SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.".$this->field_line.") as total, AVG(tl.".$this->field_line.") as avg";
$sql.= " FROM ".$this->from.", ".$this->from_line.", ".MAIN_DB_PREFIX."product as product"; $sql.= " FROM ".$this->from.", ".$this->from_line.", ".MAIN_DB_PREFIX."product as product";
//if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= " WHERE ".$this->where; $sql.= " WHERE ".$this->where;
$sql.= " AND c.rowid = tl.fk_commande AND tl.fk_product = product.rowid"; $sql.= " AND c.rowid = tl.fk_commande AND tl.fk_product = product.rowid";
$sql.= " AND c.date_commande BETWEEN '".$this->db->idate(dol_get_first_day($year,1,false))."' AND '".$this->db->idate(dol_get_last_day($year,12,false))."'"; $sql.= " AND c.date_commande BETWEEN '".$this->db->idate(dol_get_first_day($year,1,false))."' AND '".$this->db->idate(dol_get_last_day($year,12,false))."'";

View File

@ -46,7 +46,16 @@ foreach($linkedObjectBlock as $key => $objectlink)
echo price($objectlink->total_ht); echo price($objectlink->total_ht);
} ?></td> } ?></td>
<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
<td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td> <td align="right">
<?php
// For now, shipments must stay linked to order, so link is not deletable
if($object->element != 'shipping') {
?>
<a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a>
<?php
}
?>
</td>
</tr> </tr>
<?php <?php
} }

View File

@ -863,7 +863,7 @@ if (empty($reshook))
} }
} }
// Standard invoice or Deposit invoice created from a Predefined invoice // Standard invoice or Deposit invoice created from a Predefined template invoice
if (($_POST['type'] == Facture::TYPE_STANDARD || $_POST['type'] == Facture::TYPE_DEPOSIT) && GETPOST('fac_rec') > 0) if (($_POST['type'] == Facture::TYPE_STANDARD || $_POST['type'] == Facture::TYPE_DEPOSIT) && GETPOST('fac_rec') > 0)
{ {
$dateinvoice = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']); $dateinvoice = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
@ -2036,7 +2036,7 @@ if ($action == 'create')
if (!empty($conf->multicurrency->enabled) && !empty($soc->multicurrency_code)) $currency_code = $soc->multicurrency_code; if (!empty($conf->multicurrency->enabled) && !empty($soc->multicurrency_code)) $currency_code = $soc->multicurrency_code;
} }
$absolute_discount = $soc->getAvailableDiscounts(); if(!empty($soc->id)) $absolute_discount = $soc->getAvailableDiscounts();
if (! empty($conf->use_javascript_ajax)) if (! empty($conf->use_javascript_ajax))
{ {

View File

@ -666,7 +666,7 @@ class FactureRec extends CommonInvoice
$facture->fac_rec = $facturerec->id; // We will create $facture from this recurring invoice $facture->fac_rec = $facturerec->id; // We will create $facture from this recurring invoice
$facture->type = self::TYPE_STANDARD; $facture->type = self::TYPE_STANDARD;
$facture->brouillon = 1; $facture->brouillon = 1;
$facture->date = $now; $facture->date = $facturerec->date_when; // We could also use dol_now here but we prefer date_when so invoice has real date when we would like even if we generate later.
$facture->socid = $facturerec->socid; $facture->socid = $facturerec->socid;
$invoiceidgenerated = $facture->create($user); // This will also update fields of recurring invoice $invoiceidgenerated = $facture->create($user); // This will also update fields of recurring invoice
@ -962,6 +962,7 @@ class FactureRec extends CommonInvoice
if ($this->db->query($sql)) if ($this->db->query($sql))
{ {
$this->date_when = $date; $this->date_when = $date;
if ($increment_nb_gen_done>0) $_facrec->nb_gen_done++;
return 1; return 1;
} }
else else

View File

@ -309,13 +309,12 @@ class Facture extends CommonInvoice
$forceduedate = $this->calculate_date_lim_reglement(); $forceduedate = $this->calculate_date_lim_reglement();
// Update date and number of last generation of recurring template invoice, before inserting new invoice // For recurrn invoices, update date and number of last generation of recurring template invoice, before inserting new invoice
if ($_facrec->frequency > 0) if ($_facrec->frequency > 0)
{ {
$_facrec->nb_gen_done++;
$next_date = $_facrec->getNextDate(); // Calculate next date $next_date = $_facrec->getNextDate(); // Calculate next date
$_facrec->setValueFrom('date_last_gen', $now, '', null, 'date'); $_facrec->setValueFrom('date_last_gen', $now, '', null, 'date');
$_facrec->setValueFrom('nb_gen_done', $_facrec->nb_gen_done + 1); //$_facrec->setValueFrom('nb_gen_done', $_facrec->nb_gen_done + 1); // Not required, +1 already included into setNextDate when second param is 1.
$_facrec->setNextDate($next_date,1); $_facrec->setNextDate($next_date,1);
} }
} }
@ -3465,7 +3464,7 @@ class Facture extends CommonInvoice
$response = new WorkboardResponse(); $response = new WorkboardResponse();
$response->warning_delay=$conf->facture->client->warning_delay/60/60/24; $response->warning_delay=$conf->facture->client->warning_delay/60/60/24;
$response->label=$langs->trans("CustomerBillsUnpaid"); $response->label=$langs->trans("CustomerBillsUnpaid");
$response->url=DOL_URL_ROOT.'/compta/facture/list.php?search_status=1'; $response->url=DOL_URL_ROOT.'/compta/facture/list.php?search_status=1&mainmenu=accountancy&leftmenu=customers_bills';
$response->img=img_object($langs->trans("Bills"),"bill"); $response->img=img_object($langs->trans("Bills"),"bill");
$generic_facture = new Facture($this->db); $generic_facture = new Facture($this->db);

View File

@ -1256,8 +1256,13 @@ else
print '<br>'; print '<br>';
// Frequencry/Recurring section
if ($object->frequency > 0) if ($object->frequency > 0)
{ {
if (empty($conf->cron->enabled))
{
print info_admin($langs->trans("EnableAndSetupModuleCron", $langs->transnoentitiesnoconv("Module2300Name")));
}
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';

View File

@ -182,7 +182,7 @@ if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'e
include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
// Do we click on purge search criteria ? // Do we click on purge search criteria ?
if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter") || GETPOST("button_removefilter.x")) // Both test are required to be compatible with all browsers
{ {
$search_user=''; $search_user='';
$search_sale=''; $search_sale='';

View File

@ -2,7 +2,7 @@
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2015-2016 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
* Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> * Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
* Copyright (C) 2016 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2016 Marcos García <marcosgdf@gmail.com>
@ -877,7 +877,7 @@ if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture-
if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
if ($socid) $sql.= " AND ff.fk_soc = ".$socid; if ($socid) $sql.= " AND ff.fk_soc = ".$socid;
$sql.= " GROUP BY ff.rowid, ff.ref, ff.fk_statut, ff.libelle, ff.total_ht, ff.tva, ff.total_tva, ff.total_ttc, ff.paye,"; $sql.= " GROUP BY ff.rowid, ff.ref, ff.fk_statut, ff.libelle, ff.total_ht, ff.tva, ff.total_tva, ff.total_ttc, ff.paye,";
$sql.= " s.nom, s.rowid, s.code_client, s.code_fournisseur"; $sql.= " s.nom, s.rowid, s.code_client, s.code_fournisseur, ff.date_lim_reglement";
$sql.= " ORDER BY ff.date_lim_reglement ASC"; $sql.= " ORDER BY ff.date_lim_reglement ASC";
$resql=$db->query($sql); $resql=$db->query($sql);

View File

@ -2147,8 +2147,11 @@ class Contrat extends CommonObject
$line->total_ht=90; $line->total_ht=90;
$line->total_ttc=107.64; // 90 * 1.196 $line->total_ttc=107.64; // 90 * 1.196
$line->total_tva=17.64; $line->total_tva=17.64;
$prodid = mt_rand(1, $num_prods); if ($num_prods > 0)
$line->fk_product=$prodids[$prodid]; {
$prodid = mt_rand(1, $num_prods);
$line->fk_product=$prodids[$prodid];
}
$this->lines[$xnbp]=$line; $this->lines[$xnbp]=$line;
$xnbp++; $xnbp++;
} }

View File

@ -256,7 +256,7 @@ if ($resql)
print '<input type="text" class="flat" size="3" name="search_contract" value="'.dol_escape_htmltag($search_contract).'">'; print '<input type="text" class="flat" size="3" name="search_contract" value="'.dol_escape_htmltag($search_contract).'">';
print '</td>'; print '</td>';
print '<td class="liste_titre">'; print '<td class="liste_titre">';
print '<input type="text" class="flat" size="6" name="search_ref_customer value="'.dol_escape_htmltag($search_ref_supplier).'">'; print '<input type="text" class="flat" size="6" name="search_ref_customer value="'.dol_escape_htmltag($search_ref_customer).'">';
print '</td>'; print '</td>';
print '<td class="liste_titre">'; print '<td class="liste_titre">';
print '<input type="text" class="flat" size="6" name="search_ref_supplier value="'.dol_escape_htmltag($search_ref_supplier).'">'; print '<input type="text" class="flat" size="6" name="search_ref_supplier value="'.dol_escape_htmltag($search_ref_supplier).'">';

View File

@ -240,7 +240,10 @@ if ($section)
require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
$useglobalvars=1; $useglobalvars=1;
$form = new Form($db); $form = new Form($db);
$formquestion=array('urlfile'=>array('type'=>'hidden','value'=>$urlfile,'name'=>'urlfile')); $formquestion=array(
'urlfile'=>array('type'=>'hidden','value'=>$urlfile,'name'=>'urlfile'),
'section'=>array('type'=>'hidden','value'=>$section,'name'=>'section')
);
print $form->formconfirm($url,$langs->trans("DeleteFile"),$langs->trans("ConfirmDeleteFile"),'confirm_deletefile',$formquestion,"no",($useajax?'deletefile':0)); print $form->formconfirm($url,$langs->trans("DeleteFile"),$langs->trans("ConfirmDeleteFile"),'confirm_deletefile',$formquestion,"no",($useajax?'deletefile':0));
} }

View File

@ -744,7 +744,8 @@ abstract class CommonObject
$sql = "DELETE FROM ".MAIN_DB_PREFIX."element_contact"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."element_contact";
$sql.= " WHERE element_id = ".$this->id; $sql.= " WHERE element_id = ".$this->id;
$sql.= " AND fk_c_type_contact IN (".$listId.")"; if ($listId)
$sql.= " AND fk_c_type_contact IN (".$listId.")";
dol_syslog(get_class($this)."::delete_linked_contact", LOG_DEBUG); dol_syslog(get_class($this)."::delete_linked_contact", LOG_DEBUG);
if ($this->db->query($sql)) if ($this->db->query($sql))

View File

@ -1133,7 +1133,7 @@ class ExtraFields
if ($InfoFieldList[0] && class_exists($InfoFieldList[0])) if ($InfoFieldList[0] && class_exists($InfoFieldList[0]))
{ {
$object = new $InfoFieldList[0]($this->db); $object = new $InfoFieldList[0]($this->db);
$object->fetch($value); if (!empty($value)) $object->fetch($value);
$valuetoshow=$object->ref; $valuetoshow=$object->ref;
if ($object->element == 'societe') $valuetoshow=$object->name; // Special case for thirdparty because ref is id because name is not unique if ($object->element == 'societe') $valuetoshow=$object->name; // Special case for thirdparty because ref is id because name is not unique
$out.='<input type="text" class="flat" name="'.$keysuffix.'options_'.$key.$keyprefix.'" size="20" value="'.$valuetoshow.'" >'; $out.='<input type="text" class="flat" name="'.$keysuffix.'options_'.$key.$keyprefix.'" size="20" value="'.$valuetoshow.'" >';

View File

@ -2329,7 +2329,7 @@ class Form
$sql.= " FROM ".MAIN_DB_PREFIX."product as p"; $sql.= " FROM ".MAIN_DB_PREFIX."product as p";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON pfp.fk_soc = s.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON pfp.fk_soc = s.rowid";
$sql.= " WHERE p.entity IN (".getEntity('product', 1).")"; $sql.= " WHERE p.entity IN (".getEntity('productprice', 1).")";
$sql.= " AND p.tobuy = 1"; $sql.= " AND p.tobuy = 1";
$sql.= " AND s.fournisseur = 1"; $sql.= " AND s.fournisseur = 1";
$sql.= " AND p.rowid = ".$productid; $sql.= " AND p.rowid = ".$productid;
@ -3812,7 +3812,7 @@ class Form
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<table class="nobordernopadding" cellpadding="0" cellspacing="0">'; print '<table class="nobordernopadding" cellpadding="0" cellspacing="0">';
print '<tr><td>'; print '<tr><td>';
print $this->selectMultiCurrency($selected, $htmlname, 1); print $this->selectMultiCurrency($selected, $htmlname, 0);
print '</td>'; print '</td>';
print '<td align="left"><input type="submit" class="button" value="'.$langs->trans("Modify").'"></td>'; print '<td align="left"><input type="submit" class="button" value="'.$langs->trans("Modify").'"></td>';
print '</tr></table></form>'; print '</tr></table></form>';
@ -4091,7 +4091,7 @@ class Form
$out=''; $out='';
$out.= '<select class="flat" name="'.$htmlname.'" id="'.$htmlname.'">'; $out.= '<select class="flat" name="'.$htmlname.'" id="'.$htmlname.'">';
if ($useempty) $out .= '<option value="'.$conf->currency.'"'.((empty($selected) || $selected == $conf->currency)?' selected="selected"':'').'>'.$langs->cache_currencies[$conf->currency]['label'].'</option>'; if ($useempty) $out .= '<option value=""></option>';
if (count($TCurrency) > 0) if (count($TCurrency) > 0)
{ {
foreach ($langs->cache_currencies as $code_iso => $currency) foreach ($langs->cache_currencies as $code_iso => $currency)

View File

@ -162,68 +162,52 @@ class Ldap
return -1; return -1;
} }
if (! function_exists('ldap_connect')) if (! function_exists("ldap_connect"))
{ {
$this->error='Your PHP need extension ldap'; $this->error='LDAPFunctionsNotAvailableOnPHP';
dol_syslog(get_class($this)."::connect_bind ".$this->error, LOG_WARNING); dol_syslog(get_class($this)."::connect_bind ".$this->error, LOG_WARNING);
return -1; $return=-1;
} }
// Loop on each ldap server if (empty($this->error))
foreach ($this->server as $key => $host)
{ {
if ($connected) break; // Loop on each ldap server
if (empty($host)) continue; foreach ($this->server as $key => $host)
if (preg_match('/^ldap/',$host))
{ {
$this->connection = ldap_connect($host); if ($connected) break;
} if (empty($host)) continue;
else
{ if (preg_match('/^ldap/',$host))
$this->connection = ldap_connect($host,$this->serverPort);
}
if (is_resource($this->connection))
{
// Begin TLS if requested by the configuration
if (! empty($conf->global->LDAP_SERVER_USE_TLS))
{
if (! ldap_start_tls($this->connection))
{
dol_syslog(get_class($this)."::connect_bind failed to start tls", LOG_WARNING);
$connected = 0;
$this->close();
}
}
// Execute the ldap_set_option here (after connect and before bind)
$this->setVersion();
ldap_set_option($this->connection, LDAP_OPT_SIZELIMIT, 0); // no limit here. should return true.
if ($this->serverType == "activedirectory")
{ {
$result=$this->setReferrals(); $this->connection = ldap_connect($host);
dol_syslog(get_class($this)."::connect_bind try bindauth for activedirectory on ".$host." user=".$this->searchUser." password=".preg_replace('/./','*',$this->searchPassword),LOG_DEBUG);
$this->result=$this->bindauth($this->searchUser,$this->searchPassword);
if ($this->result)
{
$this->bind=$this->result;
$connected=2;
break;
}
else
{
$this->error=ldap_errno($this->connection).' '.ldap_error($this->connection);
}
} }
else else
{ {
// Try in auth mode $this->connection = ldap_connect($host,$this->serverPort);
if ($this->searchUser && $this->searchPassword) }
if (is_resource($this->connection))
{
// Begin TLS if requested by the configuration
if (! empty($conf->global->LDAP_SERVER_USE_TLS))
{
if (! ldap_start_tls($this->connection))
{
dol_syslog(get_class($this)."::connect_bind failed to start tls", LOG_WARNING);
$connected = 0;
$this->close();
}
}
// Execute the ldap_set_option here (after connect and before bind)
$this->setVersion();
ldap_set_option($this->connection, LDAP_OPT_SIZELIMIT, 0); // no limit here. should return true.
if ($this->serverType == "activedirectory")
{ {
dol_syslog(get_class($this)."::connect_bind try bindauth on ".$host." user=".$this->searchUser." password=".preg_replace('/./','*',$this->searchPassword),LOG_DEBUG); $result=$this->setReferrals();
dol_syslog(get_class($this)."::connect_bind try bindauth for activedirectory on ".$host." user=".$this->searchUser." password=".preg_replace('/./','*',$this->searchPassword),LOG_DEBUG);
$this->result=$this->bindauth($this->searchUser,$this->searchPassword); $this->result=$this->bindauth($this->searchUser,$this->searchPassword);
if ($this->result) if ($this->result)
{ {
@ -236,26 +220,45 @@ class Ldap
$this->error=ldap_errno($this->connection).' '.ldap_error($this->connection); $this->error=ldap_errno($this->connection).' '.ldap_error($this->connection);
} }
} }
// Try in anonymous else
if (! $this->bind)
{ {
dol_syslog(get_class($this)."::connect_bind try bind on ".$host,LOG_DEBUG); // Try in auth mode
$result=$this->bind(); if ($this->searchUser && $this->searchPassword)
if ($result)
{ {
$this->bind=$this->result; dol_syslog(get_class($this)."::connect_bind try bindauth on ".$host." user=".$this->searchUser." password=".preg_replace('/./','*',$this->searchPassword),LOG_DEBUG);
$connected=1; $this->result=$this->bindauth($this->searchUser,$this->searchPassword);
break; if ($this->result)
{
$this->bind=$this->result;
$connected=2;
break;
}
else
{
$this->error=ldap_errno($this->connection).' '.ldap_error($this->connection);
}
} }
else // Try in anonymous
if (! $this->bind)
{ {
$this->error=ldap_errno($this->connection).' '.ldap_error($this->connection); dol_syslog(get_class($this)."::connect_bind try bind on ".$host,LOG_DEBUG);
$result=$this->bind();
if ($result)
{
$this->bind=$this->result;
$connected=1;
break;
}
else
{
$this->error=ldap_errno($this->connection).' '.ldap_error($this->connection);
}
} }
} }
} }
if (! $connected) $this->close();
} }
if (! $connected) $this->close();
} }
if ($connected) if ($connected)

View File

@ -264,6 +264,8 @@ class Menubase
$sql.= " t.mainmenu,"; $sql.= " t.mainmenu,";
$sql.= " t.leftmenu,"; $sql.= " t.leftmenu,";
$sql.= " t.fk_menu,"; $sql.= " t.fk_menu,";
$sql.= " t.fk_mainmenu,";
$sql.= " t.fk_leftmenu,";
$sql.= " t.position,"; $sql.= " t.position,";
$sql.= " t.url,"; $sql.= " t.url,";
$sql.= " t.target,"; $sql.= " t.target,";
@ -293,6 +295,8 @@ class Menubase
$this->mainmenu = $obj->mainmenu; $this->mainmenu = $obj->mainmenu;
$this->leftmenu = $obj->leftmenu; $this->leftmenu = $obj->leftmenu;
$this->fk_menu = $obj->fk_menu; $this->fk_menu = $obj->fk_menu;
$this->fk_mainmenu = $obj->fk_mainmenu;
$this->fk_leftmenu = $obj->fk_leftmenu;
$this->position = $obj->position; $this->position = $obj->position;
$this->url = $obj->url; $this->url = $obj->url;
$this->target = $obj->target; $this->target = $obj->target;

View File

@ -736,17 +736,24 @@ function activateModule($value,$withdeps=1)
if (isset($objMod->depends) && is_array($objMod->depends) && ! empty($objMod->depends)) if (isset($objMod->depends) && is_array($objMod->depends) && ! empty($objMod->depends))
{ {
// Activation des modules dont le module depend // Activation des modules dont le module depend
$TError=array();
$num = count($objMod->depends); $num = count($objMod->depends);
for ($i = 0; $i < $num; $i++) for ($i = 0; $i < $num; $i++)
{ {
$activate = false;
foreach ($modulesdir as $dir) foreach ($modulesdir as $dir)
{ {
if (file_exists($dir.$objMod->depends[$i].".class.php")) if (file_exists($dir.$objMod->depends[$i].".class.php"))
{ {
activateModule($objMod->depends[$i]); activateModule($objMod->depends[$i]);
$activate = true;
} }
} }
if (!$activate) $TError[] = $langs->trans('activateModuleDependNotSatisfied', $objMod->name, $objMod->depends[$i]);
} }
setEventMessages('', $TError, 'errors');
} }
if (isset($objMod->conflictwith) && is_array($objMod->conflictwith) && ! empty($objMod->conflictwith)) if (isset($objMod->conflictwith) && is_array($objMod->conflictwith) && ! empty($objMod->conflictwith))

View File

@ -436,7 +436,7 @@ function dol_size($size,$type='')
*/ */
function dol_sanitizeFileName($str,$newstr='_',$unaccent=1) function dol_sanitizeFileName($str,$newstr='_',$unaccent=1)
{ {
$filesystem_forbidden_chars = array('<','>',':','/','\\','?','*','|','"'); $filesystem_forbidden_chars = array('<','>',':','/','\\','?','*','|','"','°');
return dol_string_nospecial($unaccent?dol_string_unaccent($str):$str, $newstr, $filesystem_forbidden_chars); return dol_string_nospecial($unaccent?dol_string_unaccent($str):$str, $newstr, $filesystem_forbidden_chars);
} }
@ -902,8 +902,15 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
if ($showimage) $morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref">'.$object->show_photos($conf->product->multidir_output[$object->entity],'small',-$maxvisiblephotos,0,0,0,$width,0).'</div>'; if ($showimage) $morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref">'.$object->show_photos($conf->product->multidir_output[$object->entity],'small',-$maxvisiblephotos,0,0,0,$width,0).'</div>';
else else
{ {
$nophoto='/public/theme/common/nophoto.png'; if (!empty($conf->global->PRODUCT_NODISPLAYIFNOPHOTO)) {
$morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref"><img class="photo'.$modulepart.($cssclass?' '.$cssclass:'').'" alt="No photo" border="0"'.($width?' width="'.$width.'"':'').($height?' height="'.$height.'"':'').' src="'.DOL_URL_ROOT.$nophoto.'"></div>'; $nophoto='';
$morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref"></div>';
}
else {
$nophoto='/public/theme/common/nophoto.png';
$morehtmlleft.='<div class="floatleft inline-block valignmiddle divphotoref"><img class="photo'.$modulepart.($cssclass?' '.$cssclass:'').'" alt="No photo" border="0"'.($width?' width="'.$width.'"':'').($height?' height="'.$height.'"':'').' src="'.DOL_URL_ROOT.$nophoto.'"></div>';
}
} }
} }
else else

View File

@ -109,15 +109,17 @@ function tree_showpad(&$fulltree,$key,$silent=0)
* @param int $pere Array with parent ids ('rowid'=>,'mainmenu'=>,'leftmenu'=>,'fk_mainmenu=>,'fk_leftmenu=>) * @param int $pere Array with parent ids ('rowid'=>,'mainmenu'=>,'leftmenu'=>,'fk_mainmenu=>,'fk_leftmenu=>)
* @param int $rang Level of element * @param int $rang Level of element
* @param string $iddivjstree Id to use for parent ul element * @param string $iddivjstree Id to use for parent ul element
* @param int $donoresetalreadyloaded Do not reset global array $donoresetalreadyloaded used to avoid to go down on an aleady processed record
* @param int $showfk Show fk links to parent into label
* @return void * @return void
*/ */
function tree_recur($tab, $pere, $rang, $iddivjstree='iddivjstree') function tree_recur($tab, $pere, $rang, $iddivjstree='iddivjstree', $donoresetalreadyloaded=0, $showfk=0)
{ {
global $tree_recur_alreadyadded; global $tree_recur_alreadyadded;
if ($rang == 0) $tree_recur_alreadyadded=array(); if ($rang == 0 && empty($donoresetalreadyloaded)) $tree_recur_alreadyadded=array();
if (empty($pere['rowid'])) if ($rang == 0)
{ {
// Test also done with jstree and dynatree (not able to have <a> inside label) // Test also done with jstree and dynatree (not able to have <a> inside label)
print '<script type="text/javascript" language="javascript"> print '<script type="text/javascript" language="javascript">
@ -161,7 +163,9 @@ function tree_recur($tab, $pere, $rang, $iddivjstree='iddivjstree')
} }
print "\n".'<li '.($tab[$x]['statut']?' class="liuseractive"':'class="liuserdisabled"').'>'; print "\n".'<li '.($tab[$x]['statut']?' class="liuseractive"':'class="liuserdisabled"').'>';
print $tab[$x]['entry']; print $tab[$x]['entry'];
$tree_recur_alreadyadded[$tab[$x]['rowid']]=$rang; if ($showfk) print '&nbsp; (fk_mainmenu='.$tab[$x]['fk_mainmenu'].' fk_leftmenu='.$tab[$x]['fk_leftmenu'].')';
//print ' -> A '.$tab[$x]['rowid'].' mainmenu='.$tab[$x]['mainmenu'].' leftmenu='.$tab[$x]['leftmenu'].' fk_mainmenu='.$tab[$x]['fk_mainmenu'].' fk_leftmenu='.$tab[$x]['fk_leftmenu'].'<br>'."\n";
$tree_recur_alreadyadded[$tab[$x]['rowid']]=($rang + 1);
// And now we search all its sons of lower level // And now we search all its sons of lower level
tree_recur($tab,$tab[$x],$rang+1); tree_recur($tab,$tab[$x],$rang+1);
print '</li>'; print '</li>';
@ -173,7 +177,8 @@ function tree_recur($tab, $pere, $rang, $iddivjstree='iddivjstree')
{ {
if (! empty($tree_recur_alreadyadded[$tab[$x]['rowid']])) if (! empty($tree_recur_alreadyadded[$tab[$x]['rowid']]))
{ {
dol_syslog('Error, record with id '.$tab[$x]['rowid'].' seems to be a child of record with id '.$pere['rowid'].' but it was already output. Complete field "leftmenu" and "mainmenu" on ALL records to avoid ambiguity.', LOG_WARNING); dol_syslog('Error, record with id '.$tab[$x]['rowid'].' seems to be a child of record with id '.$pere['rowid'].' but it was already output. Complete field "leftmenu" and "mainmenu" on ALL records to avoid ambiguity.', LOG_WARNING);
//print 'Error, record with id '.$tab[$x]['rowid'].' seems to be a child of record with id '.$pere['rowid'].' but it was already output. Complete field "leftmenu" and "mainmenu" on ALL records to avoid ambiguity.';
continue; continue;
} }
@ -181,15 +186,17 @@ function tree_recur($tab, $pere, $rang, $iddivjstree='iddivjstree')
} }
print "\n".'<li '.($tab[$x]['statut']?' class="liuseractive"':'class="liuserdisabled"').'>'; print "\n".'<li '.($tab[$x]['statut']?' class="liuseractive"':'class="liuserdisabled"').'>';
print $tab[$x]['entry']; print $tab[$x]['entry'];
$tree_recur_alreadyadded[$tab[$x]['rowid']]=$rang; if ($showfk) print '&nbsp; (fk_mainmenu='.$tab[$x]['fk_mainmenu'].' fk_leftmenu='.$tab[$x]['fk_leftmenu'].')';
//print ' -> B '.$tab[$x]['rowid'].' mainmenu='.$tab[$x]['mainmenu'].' leftmenu='.$tab[$x]['leftmenu'].' fk_mainmenu='.$tab[$x]['fk_mainmenu'].' fk_leftmenu='.$tab[$x]['fk_leftmenu'].'<br>'."\n";
$tree_recur_alreadyadded[$tab[$x]['rowid']]=($rang + 1);
// And now we search all its sons of lower level // And now we search all its sons of lower level
//print 'Appel de tree_recur pour x='.$x.' rowid='.$tab[$x]['rowid']." fk_mainmenu pere = ".$tab[$x]['fk_mainmenu']." fk_leftmenu pere = ".$tab[$x]['fk_leftmenu']."<br>\n"; //print 'Call tree_recur for x='.$x.' rowid='.$tab[$x]['rowid']." fk_mainmenu pere = ".$tab[$x]['fk_mainmenu']." fk_leftmenu pere = ".$tab[$x]['fk_leftmenu']."<br>\n";
tree_recur($tab,$tab[$x],$rang+1); tree_recur($tab,$tab[$x],$rang+1);
print '</li>'; print '</li>';
} }
} }
if (! empty($ulprinted) && ! empty($pere['rowid'])) { print '</ul>'."\n"; } if (! empty($ulprinted) && ! empty($pere['rowid'])) { print '</ul>'."\n"; }
if (empty($pere['rowid'])) print '</ul>'; if ($rang == 0) print '</ul>';
} }

View File

@ -788,8 +788,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
if (! empty($conf->facture->enabled)) if (! empty($conf->facture->enabled))
{ {
$langs->load("bills"); $langs->load("bills");
$newmenu->add("/compta/facture/list.php",$langs->trans("BillsCustomers"),0,$user->rights->facture->lire, '', $mainmenu, 'customers_bills'); $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills",$langs->trans("BillsCustomers"),0,$user->rights->facture->lire, '', $mainmenu, 'customers_bills');
$newmenu->add("/compta/facture.php?action=create",$langs->trans("NewBill"),1,$user->rights->facture->creer); $newmenu->add("/compta/facture.php?action=create&leftmenu=customers_bills",$langs->trans("NewBill"),1,$user->rights->facture->creer);
$newmenu->add("/compta/facture/list.php?leftmenu=customers_bills",$langs->trans("List"),1,$user->rights->facture->lire); $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills",$langs->trans("List"),1,$user->rights->facture->lire);
if (empty($leftmenu) || ($leftmenu == 'customers_bills')) if (empty($leftmenu) || ($leftmenu == 'customers_bills'))

View File

@ -397,6 +397,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales
$tmparray = array_merge($array_user,$array_soc,$array_thirdparty,$array_objet,$array_other,$array_thirdparty_contact); $tmparray = array_merge($array_user,$array_soc,$array_thirdparty,$array_objet,$array_other,$array_thirdparty_contact);
complete_substitutions_array($tmparray, $outputlangs, $object); complete_substitutions_array($tmparray, $outputlangs, $object);
$object->fetch_optionals();
// Call the ODTSubstitution hook // Call the ODTSubstitution hook
$parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray); $parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray);
$reshook=$hookmanager->executeHooks('ODTSubstitution',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks $reshook=$hookmanager->executeHooks('ODTSubstitution',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks

View File

@ -711,7 +711,7 @@ class pdf_azur extends ModelePDFPropales
if (file_exists($infile) && is_readable($infile)) { if (file_exists($infile) && is_readable($infile)) {
$pagecount = $pdf->setSourceFile($infile); $pagecount = $pdf->setSourceFile($infile);
for($i = 1; $i <= $pagecount; $i ++) { for($i = 1; $i <= $pagecount; $i ++) {
$tplIdx = $pdf->importPage(1); $tplIdx = $pdf->importPage($i);
if ($tplIdx!==false) { if ($tplIdx!==false) {
$s = $pdf->getTemplatesize($tplIdx); $s = $pdf->getTemplatesize($tplIdx);
$pdf->AddPage($s['h'] > $s['w'] ? 'P' : 'L'); $pdf->AddPage($s['h'] > $s['w'] ? 'P' : 'L');

View File

@ -175,10 +175,9 @@ if ($action == 'confirm_deletefile')
dol_print_error($db,$ecmdir->error); dol_print_error($db,$ecmdir->error);
exit; exit;
} }
$relativepath=$ecmdir->getRelativePath();
} }
else $relativepath=''; else $relativepath='';
$upload_dir = $conf->ecm->dir_output.($relativepath?'/'.$relativepath:''); $upload_dir = $conf->ecm->dir_output;
$file = $upload_dir . "/" . GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_POST are already decoded by PHP). $file = $upload_dir . "/" . GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_POST are already decoded by PHP).
$ret=dol_delete_file($file); $ret=dol_delete_file($file);

View File

@ -41,12 +41,20 @@ foreach($linkedObjectBlock as $key => $objectlink)
<td></td> <td></td>
<td align="center"><?php echo dol_print_date($objectlink->date_delivery,'day'); ?></td> <td align="center"><?php echo dol_print_date($objectlink->date_delivery,'day'); ?></td>
<td align="right"><?php <td align="right"><?php
/*if ($user->rights->expedition->lire) { if ($user->rights->expedition->lire) {
$total = $total + $objectlink->total_ht; $total = $total + $objectlink->total_ht;
echo price($objectlink->total_ht); echo price($objectlink->total_ht);
}*/ ?></td> } ?></td>
<td align="right"><?php echo $objectlink->getLibStatut(3); ?></td> <td align="right"><?php echo $objectlink->getLibStatut(3); ?></td>
<td align="right"><a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td> <td align="right">
<?php
// For now, shipments must stay linked to order, so link is not deletable
if($object->element != 'commande') {
?>
<a href="<?php echo $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=dellink&dellinkid='.$key; ?>"><?php echo img_delete($langs->transnoentitiesnoconv("RemoveLink")); ?></a></td>
<?php
}
?>
</tr> </tr>
<?php <?php
} }

View File

@ -819,7 +819,7 @@ if ($action == 'set_paid' && $id > 0 && $user->rights->expensereport->to_paid)
} }
} }
if ($action == "addline") if ($action == "addline" && $user->rights->expensereport->creer)
{ {
$error = 0; $error = 0;
@ -911,7 +911,7 @@ if ($action == "addline")
$action=''; $action='';
} }
if ($action == 'confirm_delete_line' && GETPOST("confirm") == "yes") if ($action == 'confirm_delete_line' && GETPOST("confirm") == "yes" && $user->rights->expensereport->creer)
{ {
$object = new ExpenseReport($db); $object = new ExpenseReport($db);
$object->fetch($id); $object->fetch($id);
@ -954,7 +954,7 @@ if ($action == 'confirm_delete_line' && GETPOST("confirm") == "yes")
} }
} }
if ($action == "updateligne" ) if ($action == "updateligne" && $user->rights->expensereport->creer)
{ {
$object = new ExpenseReport($db); $object = new ExpenseReport($db);
$object->fetch($id); $object->fetch($id);
@ -1640,8 +1640,11 @@ else
print '<td style="text-align:right;">'.$langs->trans('AmountHT').'</td>'; print '<td style="text-align:right;">'.$langs->trans('AmountHT').'</td>';
print '<td style="text-align:right;">'.$langs->trans('AmountTTC').'</td>'; print '<td style="text-align:right;">'.$langs->trans('AmountTTC').'</td>';
} }
print '<td style="text-align:right;"></td>'; // Ajout des boutons de modification/suppression
if (($object->fk_statut < 2 || $object->fk_statut == 99) && $user->rights->expensereport->creer)
{
print '<td style="text-align:right;"></td>';
}
print '</tr>'; print '</tr>';
$var=true; $var=true;
@ -1682,7 +1685,7 @@ else
// Ajout des boutons de modification/suppression // Ajout des boutons de modification/suppression
print '<td style="text-align:right;" class="nowrap">'; print '<td style="text-align:right;" class="nowrap">';
if($object->fk_statut<2 OR $object->fk_statut==99) if (($object->fk_statut < 2 || $object->fk_statut == 99) && $user->rights->expensereport->creer)
{ {
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=editline&amp;rowid='.$objp->rowid.'#'.$objp->rowid.'">'; print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=editline&amp;rowid='.$objp->rowid.'#'.$objp->rowid.'">';
print img_edit(); print img_edit();
@ -1768,7 +1771,7 @@ else
//print '</div>'; //print '</div>';
// Add a line // Add a line
if (($object->fk_statut==0 || $object->fk_statut==99) && $action != 'editline') if (($object->fk_statut==0 || $object->fk_statut==99) && $action != 'editline' && $user->rights->expensereport->creer)
{ {
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td colspan="2"></td>'; print '<td colspan="2"></td>';

View File

@ -165,7 +165,7 @@ else:
while($i<$num): while($i<$num):
$objp = $db->fetch_object($resql); $objp = $db->fetch_object($resql);
$var=!$var; $var=!$var;
print "<tr $bc[$var]>"; print '<tr'. $bc[$var].'>';
print '<td>'.$objp->ref.'</td>'; print '<td>'.$objp->ref.'</td>';
print '<td>'.dol_print_date($db->jdate($objp->date_valid),'day').'</td>'; print '<td>'.dol_print_date($db->jdate($objp->date_valid),'day').'</td>';
print '<td><a href="'.DOL_URL_ROOT.'/user/card.php?id='.$objp->fk_user_author.'">'.img_object($langs->trans("ShowUser"),"user").' '.$objp->declarant_NDF.'</a></td>'; print '<td><a href="'.DOL_URL_ROOT.'/user/card.php?id='.$objp->fk_user_author.'">'.img_object($langs->trans("ShowUser"),"user").' '.$objp->declarant_NDF.'</a></td>';

View File

@ -494,7 +494,7 @@ if (empty($reshook))
$desc=GETPOST('np_desc'); $desc=GETPOST('np_desc');
$date_intervention = dol_mktime(GETPOST('dihour','int'), GETPOST('dimin','int'), 0, GETPOST('dimonth','int'), GETPOST('diday','int'), GETPOST('diyear','int')); $date_intervention = dol_mktime(GETPOST('dihour','int'), GETPOST('dimin','int'), 0, GETPOST('dimonth','int'), GETPOST('diday','int'), GETPOST('diyear','int'));
$duration = empty($conf->global->FICHINTER_WITHOUT_DURATION)?0:convertTime2Seconds(GETPOST('durationhour','int'), GETPOST('durationmin','int')); $duration = empty($conf->global->FICHINTER_WITHOUT_DURATION)?convertTime2Seconds(GETPOST('durationhour','int'), GETPOST('durationmin','int')) : 0;
// Extrafields // Extrafields
@ -1553,7 +1553,7 @@ else if ($id > 0 || ! empty($ref))
$selectmode = 'select'; $selectmode = 'select';
if (!empty($conf->global->INTERVENTION_ADDLINE_FREEDUREATION)) if (!empty($conf->global->INTERVENTION_ADDLINE_FREEDUREATION))
$selectmode = 'text'; $selectmode = 'text';
$form->select_duration('duration', $objp->duree, $selectmode); $form->select_duration('duration', $objp->duree, 0, $selectmode);
} }
print '</td>'; print '</td>';

View File

@ -89,7 +89,18 @@ if (! $result && ! empty($_SERVER["GATEWAY_INTERFACE"])) // If install not do
{ {
// Note: If calling page was not into htdocs (index.php, ...), then this redirect will fails. // Note: If calling page was not into htdocs (index.php, ...), then this redirect will fails.
// There is no real solution, because the only way to know the apache url relative path is to have into conf file. // There is no real solution, because the only way to know the apache url relative path is to have into conf file.
header("Location: install/index.php"); $TDir = explode('/', $_SERVER['PHP_SELF']);
$path = '';
$i = count($TDir);
while ($i--)
{
if (empty($TDir[$i]) || $TDir[$i] == 'htdocs') break;
if (substr($TDir[$i], -4, 4) == '.php') continue;
$path .= '../';
}
header("Location: ".$path."install/index.php");
exit; exit;
} }

View File

@ -92,13 +92,16 @@ if ($idprod > 0)
} }
} }
// Add price for pmp
$price=$producttmp->pmp;
$prices[] = array("id" => 'pmpprice', "price" => price2num($price), "label" => $langs->trans("PMPValueShort").': '.price($price,0,$langs,0,0,-1,$conf->currency), "title" => $langs->trans("PMPValueShort").': '.price($price,0,$langs,0,0,-1,$conf->currency)); // For price field, we must use price2num(), for label or title, price()
// Add price for costprice // Add price for costprice
$price=$producttmp->cost_price; $price=$producttmp->cost_price;
$prices[] = array("id" => 'costprice', "price" => price2num($price), "label" => $langs->trans("CostPrice").': '.price($price,0,$langs,0,0,-1,$conf->currency), "title" => $langs->trans("PMPValueShort").': '.price($price,0,$langs,0,0,-1,$conf->currency)); // For price field, we must use price2num(), for label or title, price() $prices[] = array("id" => 'costprice', "price" => price2num($price), "label" => $langs->trans("CostPrice").': '.price($price,0,$langs,0,0,-1,$conf->currency), "title" => $langs->trans("PMPValueShort").': '.price($price,0,$langs,0,0,-1,$conf->currency)); // For price field, we must use price2num(), for label or title, price()
if(!empty($conf->stock->enabled))
{
// Add price for pmp
$price=$producttmp->pmp;
$prices[] = array("id" => 'pmpprice', "price" => price2num($price), "label" => $langs->trans("PMPValueShort").': '.price($price,0,$langs,0,0,-1,$conf->currency), "title" => $langs->trans("PMPValueShort").': '.price($price,0,$langs,0,0,-1,$conf->currency)); // For price field, we must use price2num(), for label or title, price()
}
} }
echo json_encode($prices); echo json_encode($prices);

View File

@ -1458,12 +1458,10 @@ class CommandeFournisseur extends CommonOrder
//print $sql; //print $sql;
if ($resql) if ($resql)
{ {
$this->rowid = $this->db->last_insert_id(MAIN_DB_PREFIX.'commande_fournisseurdet');
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
{ {
$linetmp = new CommandeFournisseurLigne($this->db); $linetmp = new CommandeFournisseurLigne($this->db);
$linetmp->id=$this->rowid; $linetmp->id=$this->db->last_insert_id(MAIN_DB_PREFIX.'commande_fournisseurdet');
$linetmp->array_options = $array_options; $linetmp->array_options = $array_options;
$result=$linetmp->insertExtraFields(); $result=$linetmp->insertExtraFields();
if ($result < 0) if ($result < 0)
@ -2494,7 +2492,7 @@ class CommandeFournisseur extends CommonOrder
$response = new WorkboardResponse(); $response = new WorkboardResponse();
$response->warning_delay=$conf->commande->fournisseur->warning_delay/60/60/24; $response->warning_delay=$conf->commande->fournisseur->warning_delay/60/60/24;
$response->label=$langs->trans("SuppliersOrdersToProcess"); $response->label=$langs->trans("SuppliersOrdersToProcess");
$response->url=DOL_URL_ROOT.'/fourn/commande/list.php?statut=1,2,3'; $response->url=DOL_URL_ROOT.'/fourn/commande/list.php?statut=1,2,3&mainmenu=commercial&leftmenu=orders_suppliers';
$response->img=img_object($langs->trans("Orders"),"order"); $response->img=img_object($langs->trans("Orders"),"order");
while ($obj=$this->db->fetch_object($resql)) while ($obj=$this->db->fetch_object($resql))

View File

@ -1507,7 +1507,7 @@ class FactureFournisseur extends CommonInvoice
$response = new WorkboardResponse(); $response = new WorkboardResponse();
$response->warning_delay=$conf->facture->fournisseur->warning_delay/60/60/24; $response->warning_delay=$conf->facture->fournisseur->warning_delay/60/60/24;
$response->label=$langs->trans("SupplierBillsToPay"); $response->label=$langs->trans("SupplierBillsToPay");
$response->url=DOL_URL_ROOT.'/fourn/facture/list.php?filtre=fac.fk_statut:1,paye:0'; $response->url=DOL_URL_ROOT.'/fourn/facture/list.php?filtre=fac.fk_statut:1,paye:0&mainmenu=accountancy&leftmenu=suppliers_bills';
$response->img=img_object($langs->trans("Bills"),"bill"); $response->img=img_object($langs->trans("Bills"),"bill");
$facturestatic = new FactureFournisseur($this->db); $facturestatic = new FactureFournisseur($this->db);
@ -1708,8 +1708,11 @@ class FactureFournisseur extends CommonInvoice
$line->remise_percent=0; $line->remise_percent=0;
} }
$prodid = mt_rand(1, $num_prods); if ($num_prods > 0)
$line->fk_product=$prodids[$prodid]; {
$prodid = mt_rand(1, $num_prods);
$line->fk_product=$prodids[$prodid];
}
$line->product_type=0; $line->product_type=0;
$this->lines[$xnbp]=$line; $this->lines[$xnbp]=$line;

View File

@ -445,7 +445,7 @@ class ProductFournisseur extends Product
$sql.= " pfp.price, pfp.quantity, pfp.unitprice, pfp.remise_percent, pfp.remise, pfp.tva_tx, pfp.fk_availability, pfp.charges, pfp.unitcharges, pfp.info_bits, pfp.delivery_time_days, pfp.supplier_reputation"; $sql.= " pfp.price, pfp.quantity, pfp.unitprice, pfp.remise_percent, pfp.remise, pfp.tva_tx, pfp.fk_availability, pfp.charges, pfp.unitcharges, pfp.info_bits, pfp.delivery_time_days, pfp.supplier_reputation";
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp";
$sql.= ", ".MAIN_DB_PREFIX."societe as s"; $sql.= ", ".MAIN_DB_PREFIX."societe as s";
$sql.= " WHERE pfp.entity IN (".getEntity('product', 1).")"; $sql.= " WHERE pfp.entity IN (".getEntity('productprice', 1).")";
$sql.= " AND pfp.fk_soc = s.rowid"; $sql.= " AND pfp.fk_soc = s.rowid";
$sql.= " AND s.status=1"; // only enabled company selected $sql.= " AND s.status=1"; // only enabled company selected
$sql.= " AND pfp.fk_product = ".$prodid; $sql.= " AND pfp.fk_product = ".$prodid;

View File

@ -1030,7 +1030,7 @@ if (empty($reshook))
$num = count($lines); $num = count($lines);
$productsupplier = new ProductFournisseur($db); $productsupplier = new ProductFournisseur($db);
for($i = 0; $i < $num; $i ++) for($i = 0; $i < $num; $i ++)
{ {
@ -1040,7 +1040,7 @@ if (empty($reshook))
$label = (! empty($lines[$i]->label) ? $lines[$i]->label : ''); $label = (! empty($lines[$i]->label) ? $lines[$i]->label : '');
$desc = (! empty($lines[$i]->desc) ? $lines[$i]->desc : $lines[$i]->libelle); $desc = (! empty($lines[$i]->desc) ? $lines[$i]->desc : $lines[$i]->libelle);
$product_type = (! empty($lines[$i]->product_type) ? $lines[$i]->product_type : 0); $product_type = (! empty($lines[$i]->product_type) ? $lines[$i]->product_type : 0);
// Reset fk_parent_line for no child products and special product // Reset fk_parent_line for no child products and special product
if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) { if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) {
$fk_parent_line = 0; $fk_parent_line = 0;
@ -1055,7 +1055,7 @@ if (empty($reshook))
} }
$result = $productsupplier->find_min_price_product_fournisseur($lines[$i]->fk_product, $lines[$i]->qty); $result = $productsupplier->find_min_price_product_fournisseur($lines[$i]->fk_product, $lines[$i]->qty);
if ($result>0) if ($result>=0)
{ {
$tva_tx = $lines[$i]->tva_tx; $tva_tx = $lines[$i]->tva_tx;
@ -1073,7 +1073,7 @@ if (empty($reshook))
$tva_tx, $tva_tx,
$lines[$i]->localtax1_tx, $lines[$i]->localtax1_tx,
$lines[$i]->localtax2_tx, $lines[$i]->localtax2_tx,
$lines[$i]->fk_product, $lines[$i]->fk_product > 0 ? $lines[$i]->fk_product : 0,
$productsupplier->product_fourn_price_id, $productsupplier->product_fourn_price_id,
$productsupplier->ref_supplier, $productsupplier->ref_supplier,
$lines[$i]->remise_percent, $lines[$i]->remise_percent,
@ -1088,6 +1088,7 @@ if (empty($reshook))
$lines[$i]->fk_unit $lines[$i]->fk_unit
); );
} }
if ($result < 0) { if ($result < 0) {
$error++; $error++;
break; break;

View File

@ -252,7 +252,7 @@ if ($status)
if ($status == '6,7') $title.=' - '.$langs->trans("StatusOrderCanceled"); if ($status == '6,7') $title.=' - '.$langs->trans("StatusOrderCanceled");
else $title.=' - '.$langs->trans($commandestatic->statuts[$status]); else $title.=' - '.$langs->trans($commandestatic->statuts[$status]);
} }
if ($billed) $title.=' - '.$langs->trans("Billed"); if ($billed > 0) $title.=' - '.$langs->trans("Billed");
//$help_url="EN:Module_Customers_Orders|FR:Module_Commandes_Clients|ES:Módulo_Pedidos_de_clientes"; //$help_url="EN:Module_Customers_Orders|FR:Module_Commandes_Clients|ES:Módulo_Pedidos_de_clientes";
$help_url=''; $help_url='';

View File

@ -1869,8 +1869,8 @@ else
print '</td></tr>'; print '</td></tr>';
// Label // Label
print '<tr><td>'.$form->editfieldkey("Label",'label',$object->label,$object,($user->rights->fournisseur->facture->creer)).'</td>'; print '<tr><td>'.$form->editfieldkey("Label",'libelle',$object->label,$object,($user->rights->fournisseur->facture->creer)).'</td>';
print '<td colspan="3">'.$form->editfieldval("Label",'label',$object->label,$object,($user->rights->fournisseur->facture->creer)).'</td>'; print '<td colspan="3">'.$form->editfieldval("Label",'libelle',$object->label,$object,($user->rights->fournisseur->facture->creer)).'</td>';
/* /*
* List of payments * List of payments

View File

@ -82,10 +82,9 @@ $year = GETPOST("year","int");
$day_lim = GETPOST('day_lim','int'); $day_lim = GETPOST('day_lim','int');
$month_lim = GETPOST('month_lim','int'); $month_lim = GETPOST('month_lim','int');
$year_lim = GETPOST('year_lim','int'); $year_lim = GETPOST('year_lim','int');
$filter = GETPOST("filtre");
$optioncss = GETPOST('optioncss','alpha'); $optioncss = GETPOST('optioncss','alpha');
if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test must be present to be compatible with all browsers if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter") || GETPOST("button_removefilter.x")) // All test must be present to be compatible with all browsers
{ {
$search_all=""; $search_all="";
$search_ref=""; $search_ref="";
@ -225,7 +224,7 @@ if ($search_amount_all_tax != '')
$sql .= natural_search('fac.total_ttc', $search_amount_all_tax, 1); $sql .= natural_search('fac.total_ttc', $search_amount_all_tax, 1);
} }
if ($search_status != '' && $search_status>=0) if ($search_status != '' && $search_status >= 0)
{ {
$sql.= " AND fac.fk_statut = ".$search_status; $sql.= " AND fac.fk_statut = ".$search_status;
} }
@ -273,7 +272,6 @@ if ($resql)
if ($search_company) $param.='&search_company='.urlencode($search_company); if ($search_company) $param.='&search_company='.urlencode($search_company);
if ($search_amount_no_tax) $param.='&search_amount_no_tax='.urlencode($search_amount_no_tax); if ($search_amount_no_tax) $param.='&search_amount_no_tax='.urlencode($search_amount_no_tax);
if ($search_amount_all_tax) $param.='&search_amount_all_tax='.urlencode($search_amount_all_tax); if ($search_amount_all_tax) $param.='&search_amount_all_tax='.urlencode($search_amount_all_tax);
if ($filter && $filter != -1) $param.='&filtre='.urlencode($filter);
if ($optioncss != '') $param.='&optioncss='.$optioncss; if ($optioncss != '') $param.='&optioncss='.$optioncss;
if ($search_status >= 0) $param.="&search_status=".$search_status; if ($search_status >= 0) $param.="&search_status=".$search_status;
@ -347,7 +345,7 @@ if ($resql)
print '<input class="flat" type="text" size="6" name="search_amount_all_tax" value="'.$search_amount_all_tax.'">'; print '<input class="flat" type="text" size="6" name="search_amount_all_tax" value="'.$search_amount_all_tax.'">';
print '</td><td class="liste_titre" align="right">'; print '</td><td class="liste_titre" align="right">';
$liststatus=array('0'=>$langs->trans("Draft"),'1'=>$langs->trans("Unpaid"), '2'=>$langs->trans("Paid")); $liststatus=array('0'=>$langs->trans("Draft"),'1'=>$langs->trans("Unpaid"), '2'=>$langs->trans("Paid"));
print $form->selectarray('filtre', $liststatus, $search_status, 1); print $form->selectarray('search_status', $liststatus, $search_status, 1);
print '</td>'; print '</td>';
print '<td class="liste_titre" align="right">'; print '<td class="liste_titre" align="right">';
$searchpitco=$form->showFilterAndCheckAddButtons(0); $searchpitco=$form->showFilterAndCheckAddButtons(0);

View File

@ -634,6 +634,10 @@ if ($step == 4 && $datatoimport)
} }
} }
if (GETPOST('update')) {
$array_match_file_to_database=array();
}
// Load source fields in input file // Load source fields in input file
$fieldssource=array(); $fieldssource=array();
@ -757,7 +761,7 @@ if ($step == 4 && $datatoimport)
print '<input type="text" size="1" name="separator" value="'.htmlentities($separator).'"/>'; print '<input type="text" size="1" name="separator" value="'.htmlentities($separator).'"/>';
print '&nbsp;&nbsp;&nbsp;&nbsp;'.$langs->trans("Enclosure").' : '; print '&nbsp;&nbsp;&nbsp;&nbsp;'.$langs->trans("Enclosure").' : ';
print '<input type="text" size="1" name="enclosure" value="'.htmlentities($enclosure).'"/>'; print '<input type="text" size="1" name="enclosure" value="'.htmlentities($enclosure).'"/>';
print '<input type="submit" value="'.$langs->trans('Update').'" class="button" />'; print '<input name="update" type="submit" value="'.$langs->trans('Update').'" class="button" />';
print '</form>'; print '</form>';
print '</td></tr>'; print '</td></tr>';
} }

View File

@ -610,3 +610,4 @@ INSERT INTO llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) VALUES (14
-- VMYSQL4.1 ALTER TABLE llx_c_type_resource CHANGE COLUMN rowid rowid integer NOT NULL AUTO_INCREMENT; -- VMYSQL4.1 ALTER TABLE llx_c_type_resource CHANGE COLUMN rowid rowid integer NOT NULL AUTO_INCREMENT;
ALTER TABLE llx_import_model MODIFY COLUMN type varchar(50);

View File

@ -501,3 +501,5 @@ CREATE TABLE llx_oauth_state (
fk_adherent integer, fk_adherent integer,
entity integer entity integer
)ENGINE=InnoDB; )ENGINE=InnoDB;
ALTER TABLE llx_import_model MODIFY COLUMN type varchar(50);

View File

@ -23,6 +23,6 @@ create table llx_import_model
rowid integer AUTO_INCREMENT PRIMARY KEY, rowid integer AUTO_INCREMENT PRIMARY KEY,
fk_user integer DEFAULT 0 NOT NULL, fk_user integer DEFAULT 0 NOT NULL,
label varchar(50) NOT NULL, label varchar(50) NOT NULL,
type varchar(20) NOT NULL, type varchar(50) NOT NULL,
field text NOT NULL field text NOT NULL
)ENGINE=innodb; )ENGINE=innodb;

View File

@ -3,9 +3,9 @@ ACCOUNTING_EXPORT_SEPARATORCSV=Column separator for export file
ACCOUNTING_EXPORT_DATE=Date format for export file ACCOUNTING_EXPORT_DATE=Date format for export file
ACCOUNTING_EXPORT_PIECE=Export the number of piece ACCOUNTING_EXPORT_PIECE=Export the number of piece
ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Export with global account ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Export with global account
ACCOUNTING_EXPORT_LABEL=Export the label ACCOUNTING_EXPORT_LABEL=Export label
ACCOUNTING_EXPORT_AMOUNT=Export the amount ACCOUNTING_EXPORT_AMOUNT=Export amount
ACCOUNTING_EXPORT_DEVISE=Export the devise ACCOUNTING_EXPORT_DEVISE=Export currency
Selectformat=Select the format for the file Selectformat=Select the format for the file
ACCOUNTING_EXPORT_PREFIX_SPEC=Specify the prefix for the file name ACCOUNTING_EXPORT_PREFIX_SPEC=Specify the prefix for the file name
@ -183,4 +183,4 @@ Formula=Formula
## Error ## Error
ErrorNoAccountingCategoryForThisCountry=No accounting category are available for this country ErrorNoAccountingCategoryForThisCountry=No accounting category are available for this country
ExportNotSupported=The export format setuped is not supported into this page ExportNotSupported=The export format setuped is not supported into this page

View File

@ -2,8 +2,8 @@
Foundation=Foundation Foundation=Foundation
Version=Version Version=Version
VersionProgram=Version program VersionProgram=Version program
VersionLastInstall=Version initial install VersionLastInstall=Initial install version
VersionLastUpgrade=Version last upgrade VersionLastUpgrade=Latest version upgrade
VersionExperimental=Experimental VersionExperimental=Experimental
VersionDevelopment=Development VersionDevelopment=Development
VersionUnknown=Unknown VersionUnknown=Unknown
@ -145,8 +145,8 @@ Boxes=Widgets
MaxNbOfLinesForBoxes=Max number of lines for widgets MaxNbOfLinesForBoxes=Max number of lines for widgets
PositionByDefault=Default order PositionByDefault=Default order
Position=Position Position=Position
MenusDesc=Menus managers define content of the 2 menu bars (horizontal bar and vertical bar). MenusDesc=Menu managers set content of the two menu bars (horizontal and vertical).
MenusEditorDesc=The menu editor allow you to define personalized entries in menus. Use it carefully to avoid making dolibarr unstable and menu entries permanently unreachable.<br>Some modules add entries in the menus (in menu <b>All</b> in most cases). If you removed some of these entries by mistake, you can restore them by disabling and reenabling the module. MenusEditorDesc=The menu editor allows you to define custom menu entries. Use it carefully to avoid instability and permanently unreachable menu entries.<br />Some modules add menu entries (in menu <b>All</b> mostly). If you remove some of these entries by mistake, you can restore them disabling and reenabling the module.
MenuForUsers=Menu for users MenuForUsers=Menu for users
LangFile=.lang file LangFile=.lang file
System=System System=System
@ -154,13 +154,13 @@ SystemInfo=System information
SystemToolsArea=System tools area SystemToolsArea=System tools area
SystemToolsAreaDesc=This area provides administration features. Use the menu to choose the feature you're looking for. SystemToolsAreaDesc=This area provides administration features. Use the menu to choose the feature you're looking for.
Purge=Purge Purge=Purge
PurgeAreaDesc=This page allows you to delete all files built or stored by Dolibarr (temporary files or all files in <b>%s</b> directory). Using this feature is not necessary. It is provided for users whose Dolibarr is hosted by a provider that does not offer permissions to delete files built by the web server. 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 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 file <b>%s</b> defined for Syslog module (no risk to loose data) PurgeDeleteLogFile=Delete log file <b>%s</b> defined for Syslog module (no risk of losing data)
PurgeDeleteTemporaryFiles=Delete all temporary files (no risk to loose data) PurgeDeleteTemporaryFiles=Delete all temporary files (no risk of losing data)
PurgeDeleteTemporaryFilesShort=Delete temporary files PurgeDeleteTemporaryFilesShort=Delete temporary files
PurgeDeleteAllFilesInDocumentsDir=Delete all files in directory <b>%s</b>. Temporary files but also database backup dumps, files attached to elements (third parties, invoices, ...) and uploaded into the ECM module will be deleted. PurgeDeleteAllFilesInDocumentsDir=Delete all files in directory <b>%s</b>. Temporary files but also database backup dumps, files attached to elements (third parties, invoices, ...) and uploaded into the ECM module will be deleted.
PurgeRunNow=Purge now PurgeRunNow=Purge now
PurgeNothingToDelete=No directory or file to delete. PurgeNothingToDelete=No directory or files to delete.
PurgeNDirectoriesDeleted=<b>%s</b> files or directories deleted. PurgeNDirectoriesDeleted=<b>%s</b> files or directories deleted.
PurgeAuditEvents=Purge all security events PurgeAuditEvents=Purge all security events
ConfirmPurgeAuditEvents=Are you sure you want to purge all security events ? All security logs will be deleted, no other data will be removed. ConfirmPurgeAuditEvents=Are you sure you want to purge all security events ? All security logs will be deleted, no other data will be removed.
@ -210,12 +210,12 @@ OnlyActiveElementsAreShown=Only elements from <a href="%s">enabled modules</a> a
ModulesDesc=Dolibarr modules define which functionality is enabled in software. Some modules require permissions you must grant to users, after enabling module. Click on button on/off in column "Status" to enable a module/feature. ModulesDesc=Dolibarr modules define which functionality is enabled in software. Some modules require permissions you must grant to users, after enabling module. Click on button on/off in column "Status" to enable a module/feature.
ModulesInterfaceDesc=The Dolibarr modules interface allows you to add features depending on external software, systems or services. ModulesInterfaceDesc=The Dolibarr modules interface allows you to add features depending on external software, systems or services.
ModulesSpecialDesc=Special modules are very specific or seldom used modules. ModulesSpecialDesc=Special modules are very specific or seldom used modules.
ModulesJobDesc=Business modules provide simple predefined setup of Dolibarr for a particular business. ModulesJobDesc=Business modules provide simple preconfigured setup of Dolibarr for specific businesses.
ModulesMarketPlaceDesc=You can find more modules to download on external web sites on the Internet... ModulesMarketPlaceDesc=You can find more modules to download on external websites on the Internet...
ModulesMarketPlaces=More modules... ModulesMarketPlaces=More modules...
DoliStoreDesc=DoliStore, the official market place for Dolibarr ERP/CRM external modules DoliStoreDesc=DoliStore, the official market place for Dolibarr ERP/CRM external modules
DoliPartnersDesc=List with some companies that can provide/develop on-demand modules or features (Note: any Open Source company knowning PHP language can provide you specific development) DoliPartnersDesc=List of companies providing custom developed modules or features (Note: anyone experienced in PHP programming can provide custom development for an open source project)
WebSiteDesc=Web site providers you can search to find more modules... WebSiteDesc=Reference websites to find more modules...
URL=Link URL=Link
BoxesAvailable=Widgets available BoxesAvailable=Widgets available
BoxesActivated=Widgets activated BoxesActivated=Widgets activated
@ -312,8 +312,8 @@ InfDirAlt=Since version 3 it is possible to define an alternative root directory
InfDirExample=<br>Then declare it in the file conf.php<br> $dolibarr_main_url_root_alt='http://myserver/custom'<br>$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'<br>*These lines are commented with "#", to uncomment only remove the character. InfDirExample=<br>Then declare it in the file conf.php<br> $dolibarr_main_url_root_alt='http://myserver/custom'<br>$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'<br>*These lines are commented with "#", to uncomment only remove the character.
YouCanSubmitFile=For this step, you can send package using this tool: Select module file YouCanSubmitFile=For this step, you can send package using this tool: Select module file
CurrentVersion=Dolibarr current version CurrentVersion=Dolibarr current version
CallUpdatePage=Go to the page that updates the database structure and datas: %s. CallUpdatePage=Go to the page that updates the database structure and data: %s.
LastStableVersion=Last stable version LastStableVersion=Latest stable version
UpdateServerOffline=Update server offline UpdateServerOffline=Update server offline
GenericMaskCodes=You may enter any numbering mask. In this mask, the following tags could be used:<br><b>{000000}</b> corresponds to a number which will be incremented on each %s. Enter as many zeros as the desired length of the counter. The counter will be completed by zeros from the left in order to have as many zeros as the mask. <br><b>{000000+000}</b> same as previous but an offset corresponding to the number to the right of the + sign is applied starting on first %s. <br><b>{000000@x}</b> same as previous but the counter is reset to zero when month x is reached (x between 1 and 12, or 0 to use the early months of fiscal year defined in your configuration, or 99 to reset to zero every month). If this option is used and x is 2 or higher, then sequence {yy}{mm} or {yyyy}{mm} is also required. <br><b>{dd}</b> day (01 to 31).<br><b>{mm}</b> month (01 to 12).<br><b>{yy}</b>, <b>{yyyy}</b> or <b>{y}</b> year over 2, 4 or 1 numbers. <br> GenericMaskCodes=You may enter any numbering mask. In this mask, the following tags could be used:<br><b>{000000}</b> corresponds to a number which will be incremented on each %s. Enter as many zeros as the desired length of the counter. The counter will be completed by zeros from the left in order to have as many zeros as the mask. <br><b>{000000+000}</b> same as previous but an offset corresponding to the number to the right of the + sign is applied starting on first %s. <br><b>{000000@x}</b> same as previous but the counter is reset to zero when month x is reached (x between 1 and 12, or 0 to use the early months of fiscal year defined in your configuration, or 99 to reset to zero every month). If this option is used and x is 2 or higher, then sequence {yy}{mm} or {yyyy}{mm} is also required. <br><b>{dd}</b> day (01 to 31).<br><b>{mm}</b> month (01 to 12).<br><b>{yy}</b>, <b>{yyyy}</b> or <b>{y}</b> year over 2, 4 or 1 numbers. <br>
GenericMaskCodes2=<b>{cccc}</b> the client code on n characters<br><b>{cccc000}</b> the client code on n characters is followed by a counter dedicated for customer. This counter dedicated to customer is reset at same time than global counter.<br><b>{tttt}</b> The code of thirdparty type on n characters (see dictionary-thirdparty types).<br> GenericMaskCodes2=<b>{cccc}</b> the client code on n characters<br><b>{cccc000}</b> the client code on n characters is followed by a counter dedicated for customer. This counter dedicated to customer is reset at same time than global counter.<br><b>{tttt}</b> The code of thirdparty type on n characters (see dictionary-thirdparty types).<br>
@ -367,7 +367,7 @@ PDFAddressForging=Rules to forge address boxes
HideAnyVATInformationOnPDF=Hide all information related to VAT on generated PDF HideAnyVATInformationOnPDF=Hide all information related to VAT on generated PDF
HideDescOnPDF=Hide products description on generated PDF HideDescOnPDF=Hide products description on generated PDF
HideRefOnPDF=Hide products ref. on generated PDF HideRefOnPDF=Hide products ref. on generated PDF
HideDetailsOnPDF=Hide products lines details on generated PDF HideDetailsOnPDF=Hide product lines details on generated PDF
PlaceCustomerAddressToIsoLocation=Use french standard position (La Poste) for customer address position PlaceCustomerAddressToIsoLocation=Use french standard position (La Poste) for customer address position
Library=Library Library=Library
UrlGenerationParameters=Parameters to secure URLs UrlGenerationParameters=Parameters to secure URLs
@ -401,8 +401,8 @@ ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> fo
ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>... ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value<br>You can also use $ID$ in filter witch is the current id of current object<br>To do a SELECT in filter use $SEL$<br>if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value<br>You can also use $ID$ in filter witch is the current id of current object<br>To do a SELECT in filter use $SEL$<br>if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
ExtrafieldParamHelpchkbxlst=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value<br>You can also use $ID$ in filter witch is the current id of current object<br>To do a SELECT in filter use $SEL$<br>if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelpchkbxlst=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value<br>You can also use $ID$ in filter witch is the current id of current object<br>To do a SELECT in filter use $SEL$<br>if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath<br>Syntax : ObjectName:Classpath<br>Example : Societe:societe/class/societe.class.php ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath<br>Syntax : ObjectName:Classpath<br>Example : Societe:societe/class/societe.class.php
LibraryToBuildPDF=Library used to build PDF LibraryToBuildPDF=Library used for PDF generation
WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b> WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b>
LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3 : local tax apply on products without vat (localtax is calculated on amount without tax)<br>4 : local tax apply on products including vat (localtax is calculated on amount + main vat)<br>5 : local tax apply on services without vat (localtax is calculated on amount without tax)<br>6 : local tax apply on services including vat (localtax is calculated on amount + tax) LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3 : local tax apply on products without vat (localtax is calculated on amount without tax)<br>4 : local tax apply on products including vat (localtax is calculated on amount + main vat)<br>5 : local tax apply on services without vat (localtax is calculated on amount without tax)<br>6 : local tax apply on services including vat (localtax is calculated on amount + tax)
SMS=SMS SMS=SMS
@ -424,12 +424,13 @@ AllBarcodeReset=All barcode values have been removed
NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup. NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup.
NoRecordWithoutBarcodeDefined=No record with no barcode value defined. NoRecordWithoutBarcodeDefined=No record with no barcode value defined.
EnableFileCache=Enable file cache EnableFileCache=Enable file cache
ShowDetailsInPDFPageFoot=Add more details into footer of PDF files, like your company address, or manager names (to complete professional ids, capital and VAT number). ShowDetailsInPDFPageFoot=Add more details into footer of PDF files, like your company address, or manager names (to complete professional ids, company capital and VAT number).
NoDetails=No more details in footer NoDetails=No more details in footer
DisplayCompanyInfo=Display company address DisplayCompanyInfo=Display company address
DisplayCompanyManager=Display manager names DisplayCompanyManager=Display manager names
DisplayCompanyInfoAndManagers=Display company and manager names DisplayCompanyInfoAndManagers=Display company and manager names
EnableAndSetupModuleCron=If you want to have this recurring invoice beeing generated automatically, module *%s* must be enabled and correctly setup. Otherwise, generation of invoices must be done manually from this template with button *Create*. Note that even if you enabled automatic generation, you can still safely launch manual generation. Duplicates generation for same period are not possible.
# Modules # Modules
Module0Name=Users & groups Module0Name=Users & groups
Module0Desc=Users and groups management Module0Desc=Users and groups management
@ -492,15 +493,15 @@ Module200Desc=LDAP directory synchronisation
Module210Name=PostNuke Module210Name=PostNuke
Module210Desc=PostNuke integration Module210Desc=PostNuke integration
Module240Name=Data exports Module240Name=Data exports
Module240Desc=Tool to export Dolibarr datas (with assistants) Module240Desc=Tool to export Dolibarr data (with assistants)
Module250Name=Data imports Module250Name=Data imports
Module250Desc=Tool to import datas in Dolibarr (with assistants) Module250Desc=Tool to import data in Dolibarr (with assistants)
Module310Name=Members Module310Name=Members
Module310Desc=Foundation members management Module310Desc=Foundation members management
Module320Name=RSS Feed Module320Name=RSS Feed
Module320Desc=Add RSS feed inside Dolibarr screen pages Module320Desc=Add RSS feed inside Dolibarr screen pages
Module330Name=Bookmarks Module330Name=Bookmarks
Module330Desc=Bookmark management Module330Desc=Bookmarks management
Module400Name=Projects/Opportunities/Leads Module400Name=Projects/Opportunities/Leads
Module400Desc=Management of projects, opportunities or leads. You can then assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. Module400Desc=Management of projects, opportunities or leads. You can then assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view.
Module410Name=Webcalendar Module410Name=Webcalendar
@ -549,7 +550,7 @@ Module2800Desc=FTP Client
Module2900Name=GeoIPMaxmind Module2900Name=GeoIPMaxmind
Module2900Desc=GeoIP Maxmind conversions capabilities Module2900Desc=GeoIP Maxmind conversions capabilities
Module3100Name=Skype Module3100Name=Skype
Module3100Desc=Add a Skype button into card of users / third parties / contacts / members Module3100Desc=Add a Skype button into users / third parties / contacts / members cards
Module4000Name=HRM Module4000Name=HRM
Module4000Desc=Human resources management Module4000Desc=Human resources management
Module5000Name=Multi-company Module5000Name=Multi-company
@ -607,7 +608,7 @@ Permission71=Read members
Permission72=Create/modify members Permission72=Create/modify members
Permission74=Delete members Permission74=Delete members
Permission75=Setup types of membership Permission75=Setup types of membership
Permission76=Export datas Permission76=Export data
Permission78=Read subscriptions Permission78=Read subscriptions
Permission79=Create/modify subscriptions Permission79=Create/modify subscriptions
Permission81=Read customers orders Permission81=Read customers orders
@ -817,15 +818,15 @@ Permission55002=Create/modify polls
Permission59001=Read commercial margins Permission59001=Read commercial margins
Permission59002=Define commercial margins Permission59002=Define commercial margins
Permission59003=Read every user margin Permission59003=Read every user margin
DictionaryCompanyType=Thirdparties type DictionaryCompanyType=Types of thirdparties
DictionaryCompanyJuridicalType=Juridical kinds of thirdparties DictionaryCompanyJuridicalType=Legal forms of thirdparties
DictionaryProspectLevel=Prospect potential level DictionaryProspectLevel=Prospect potential level
DictionaryCanton=State/Province DictionaryCanton=State/Province
DictionaryRegion=Regions DictionaryRegion=Regions
DictionaryCountry=Countries DictionaryCountry=Countries
DictionaryCurrency=Currencies DictionaryCurrency=Currencies
DictionaryCivility=Civility title DictionaryCivility=Personal and professional titles
DictionaryActions=Type of agenda events DictionaryActions=Types of agenda events
DictionarySocialContributions=Social or fiscal taxes types DictionarySocialContributions=Social or fiscal taxes types
DictionaryVAT=VAT Rates or Sales Tax Rates DictionaryVAT=VAT Rates or Sales Tax Rates
DictionaryRevenueStamp=Amount of revenue stamps DictionaryRevenueStamp=Amount of revenue stamps
@ -834,7 +835,7 @@ DictionaryPaymentModes=Payment modes
DictionaryTypeContact=Contact/Address types DictionaryTypeContact=Contact/Address types
DictionaryEcotaxe=Ecotax (WEEE) DictionaryEcotaxe=Ecotax (WEEE)
DictionaryPaperFormat=Paper formats DictionaryPaperFormat=Paper formats
DictionaryFees=Type of fees DictionaryFees=Types of fees
DictionarySendingMethods=Shipping methods DictionarySendingMethods=Shipping methods
DictionaryStaff=Staff DictionaryStaff=Staff
DictionaryAvailability=Delivery delay DictionaryAvailability=Delivery delay
@ -845,14 +846,14 @@ DictionaryAccountancysystem=Models for chart of accounts
DictionaryEMailTemplates=Emails templates DictionaryEMailTemplates=Emails templates
DictionaryUnits=Units DictionaryUnits=Units
DictionaryProspectStatus=Prospection status DictionaryProspectStatus=Prospection status
DictionaryHolidayTypes=Type of leaves DictionaryHolidayTypes=Types of leaves
DictionaryOpportunityStatus=Opportunity status for project/lead DictionaryOpportunityStatus=Opportunity status for project/lead
SetupSaved=Setup saved SetupSaved=Setup saved
BackToModuleList=Back to modules list BackToModuleList=Back to modules list
BackToDictionaryList=Back to dictionaries list BackToDictionaryList=Back to dictionaries list
VATReceivedOnly=Special rate not charged VATReceivedOnly=Special rate not charged
VATManagement=VAT Management VATManagement=VAT Management
VATIsUsedDesc=The VAT rate by default when creating prospects, invoices, orders etc follow the active standard rule:<br>If the seller is not subjected to VAT, then VAT by default=0. End of rule.<br>If the (selling country= buying country), then the VAT by default=VAT of the product in the selling country. End of rule. <br>If seller and buyer in the European Community and goods are transport products (car, ship, plane), the default VAT=0 ( The VAT should be paid by the buyer at the customoffice of his country and not at the seller). End of rule.<br>If seller and buyer in the European Community and buyer is not a company, then the VAT by default=VAT of product sold. End of rule.<br>If seller and buyer in the European Community and buyer is a company, then the VAT by default=0. End of rule.<br>Else the proposed default VAT=0. End of rule. VATIsUsedDesc=By default when creating prospects, invoices, orders etc the VAT rate follows the active standard rule:<br>If the seller is not subjected to VAT, then VAT defaults to 0. End of rule.<br>If the (selling country= buying country), then the VAT by default equals the VAT of the product in the selling country. End of rule. <br>If seller and buyer are both in the European Community and goods are transport products (car, ship, plane), the default VAT is 0 ( The VAT should be paid by the buyer to the customoffice of his country and not to the seller). End of rule.<br>If seller and buyer are both in the European Community and the buyer is not a company, then the VAT by defaults to the VAT of the product sold. End of rule.<br>If seller and buyer are both in the European Community and the buyer is a company, then the VAT is 0 by default . End of rule.<br>In any othe case the proposed default is VAT=0. End of rule.
VATIsNotUsedDesc=By default the proposed VAT is 0 which can be used for cases like associations, individuals ou small companies. VATIsNotUsedDesc=By default the proposed VAT is 0 which can be used for cases like associations, individuals ou small companies.
VATIsUsedExampleFR=In France, it means companies or organisations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. VATIsUsedExampleFR=In France, it means companies or organisations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared.
VATIsNotUsedExampleFR=In France, it means associations that are non VAT declared or companies, organisations or liberal professions that have chosen the micro enterprise fiscal system (VAT in franchise) and paid a franchise VAT without any VAT declaration. This choice will display the reference "Non applicable VAT - art-293B of CGI" on invoices. VATIsNotUsedExampleFR=In France, it means associations that are non VAT declared or companies, organisations or liberal professions that have chosen the micro enterprise fiscal system (VAT in franchise) and paid a franchise VAT without any VAT declaration. This choice will display the reference "Non applicable VAT - art-293B of CGI" on invoices.
@ -978,10 +979,10 @@ DelayBeforeWarning=Delay before warning
DelaysBeforeWarning=Delays before warning DelaysBeforeWarning=Delays before warning
DelaysOfToleranceBeforeWarning=Tolerance delays before warning DelaysOfToleranceBeforeWarning=Tolerance delays before warning
DelaysOfToleranceDesc=This screen allows you to define the tolerated delays before an alert is reported on screen with picto %s for each late element. DelaysOfToleranceDesc=This screen allows you to define the tolerated delays before an alert is reported on screen with picto %s for each late element.
Delays_MAIN_DELAY_ACTIONS_TODO=Delay tolerance (in days) before alert on planned events not yet realised Delays_MAIN_DELAY_ACTIONS_TODO=Delay tolerance (in days) before alert on planned events not completed yet
Delays_MAIN_DELAY_TASKS_TODO=Delay tolerance (in days) before alert on planned tasks not yet realised Delays_MAIN_DELAY_TASKS_TODO=Delay tolerance (in days) before alert on planned tasks not completed yet
Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on orders not yet processed Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on orders not processed yet
Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on suppliers orders not yet processed Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Delay tolerance (in days) before alert on suppliers orders not processed yet
Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Delay tolerance (in days) before alert on proposals to close Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Delay tolerance (in days) before alert on proposals to close
Delays_MAIN_DELAY_PROPALS_TO_BILL=Delay tolerance (in days) before alert on proposals not billed Delays_MAIN_DELAY_PROPALS_TO_BILL=Delay tolerance (in days) before alert on proposals not billed
Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Tolerance delay (in days) before alert on services to activate Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Tolerance delay (in days) before alert on services to activate
@ -992,21 +993,21 @@ Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Tolerance delay (in days) before al
Delays_MAIN_DELAY_MEMBERS=Tolerance delay (in days) before alert on delayed membership fee Delays_MAIN_DELAY_MEMBERS=Tolerance delay (in days) before alert on delayed membership fee
Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Tolerance delay (in days) before alert for cheques deposit to do Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Tolerance delay (in days) before alert for cheques deposit to do
Delays_MAIN_DELAY_EXPENSEREPORTS=Tolerance delay (in days) before alert for expense reports to approve Delays_MAIN_DELAY_EXPENSEREPORTS=Tolerance delay (in days) before alert for expense reports to approve
SetupDescription1=All parameters available in the setup area allow you to setup Dolibarr before starting using it. SetupDescription1=The setup area is for initial setup parameters before starting to use Dolibarr.
SetupDescription2=The 2 most important setup steps are the 2 first ones in the left setup menu, this means Company/foundation setup page and Modules setup page: SetupDescription2=The two most important setup steps are the first two in the setup menu on the left: Company/foundation setup page and Modules setup page:
SetupDescription3=Parameters in menu <a href="%s">Setup -> Company/foundation</a> are required because input information is used on Dolibarr displays and to modify Dolibarr behaviour (for example for features related to your country). SetupDescription3=Parameters in menu <a href="%s">Setup -> Company/foundation</a> are required because submitted data are used on Dolibarr displays and to customize the default behaviour of the software (for country-related features for example).
SetupDescription4=Parameters in menu <a href="%s">Setup -> Modules</a> are required because Dolibarr is not a fixed ERP/CRM but a sum of several modules, all more or less independant. It's only after activating modules you're interesting in that you will see features appeared in menus. SetupDescription4=Parameters in menu <a href="%s">Setup -> Modules</a> are required because Dolibarr is not a monolithic ERP/CRM but a collection of several modules, all more or less independent. New features will be added to menus for every module you'll enable.
SetupDescription5=Other menu entries manage optional parameters. SetupDescription5=Other menu entries manage optional parameters.
EventsSetup=Setup for events logs EventsSetup=Setup for events logs
LogEvents=Security audit events LogEvents=Security audit events
Audit=Audit Audit=Audit
InfoDolibarr=Infos Dolibarr InfoDolibarr=About Dolibarr
InfoBrowser=Infos Browser InfoBrowser=About Browser
InfoOS=Infos OS InfoOS=About OS
InfoWebServer=Infos web server InfoWebServer=About Web Server
InfoDatabase=Infos database InfoDatabase=About Database
InfoPHP=Infos PHP InfoPHP=About PHP
InfoPerf=Infos performances InfoPerf=About Performances
BrowserName=Browser name BrowserName=Browser name
BrowserOS=Browser OS BrowserOS=Browser OS
ListEvents=Audit events ListEvents=Audit events
@ -1030,10 +1031,10 @@ TriggerDisabledAsModuleDisabled=Triggers in this file are disabled as module <b>
TriggerAlwaysActive=Triggers in this file are always active, whatever are the activated Dolibarr modules. TriggerAlwaysActive=Triggers in this file are always active, whatever are the activated Dolibarr modules.
TriggerActiveAsModuleActive=Triggers in this file are active as module <b>%s</b> is enabled. TriggerActiveAsModuleActive=Triggers in this file are active as module <b>%s</b> is enabled.
GeneratedPasswordDesc=Define here which rule you want to use to generate new password if you ask to have auto generated password GeneratedPasswordDesc=Define here which rule you want to use to generate new password if you ask to have auto generated password
DictionaryDesc=Define here all reference datas. You can complete predefined value with yours. DictionaryDesc=Insert all reference data. You can add your values to the default.
ConstDesc=This page allows you to edit all other parameters not available in previous pages. They are reserved parameters for advanced developers or for troubleshouting. ConstDesc=This page allows you to edit all other parameters not available in previous pages. These are mostly reserved parameters for developers or advanced troubleshooting.
OnceSetupFinishedCreateUsers=Warning, you are a Dolibarr administrator user. Administrator users are used to setup Dolibarr. For a usual usage of Dolibarr, it is recommended to use a non administrator user created from Users & Groups menu. OnceSetupFinishedCreateUsers=Warning, you are a Dolibarr administrator user. Administrator users are used to setup Dolibarr. For a usual usage of Dolibarr, it is recommended to use a non administrator user created from Users & Groups menu.
MiscellaneousDesc=Define here all other parameters related to security. MiscellaneousDesc=All other security related parameters are defined here.
LimitsSetup=Limits/Precision setup LimitsSetup=Limits/Precision setup
LimitsDesc=You can define limits, precisions and optimisations used by Dolibarr here LimitsDesc=You can define limits, precisions and optimisations used by Dolibarr here
MAIN_MAX_DECIMALS_UNIT=Max decimals for unit prices MAIN_MAX_DECIMALS_UNIT=Max decimals for unit prices
@ -1103,8 +1104,8 @@ PathToDocuments=Path to documents
PathDirectory=Directory PathDirectory=Directory
SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail direct" will generate a mail message that might be not correctly parsed by some receiving mail servers. Result is that some mails can't be read by people hosted by those bugged platforms. It's case for some Internet providers (Ex: Orange in France). This is not a problem into Dolibarr nor into PHP but onto receiving mail server. You can however add option MAIN_FIX_FOR_BUGGED_MTA to 1 into setup - other to modify Dolibarr to avoid this. However, you may experience problem with other servers that respect strictly the SMTP standard. The other solution (recommended) is to use the method "SMTP socket library" that has no disadvantages. SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail direct" will generate a mail message that might be not correctly parsed by some receiving mail servers. Result is that some mails can't be read by people hosted by those bugged platforms. It's case for some Internet providers (Ex: Orange in France). This is not a problem into Dolibarr nor into PHP but onto receiving mail server. You can however add option MAIN_FIX_FOR_BUGGED_MTA to 1 into setup - other to modify Dolibarr to avoid this. However, you may experience problem with other servers that respect strictly the SMTP standard. The other solution (recommended) is to use the method "SMTP socket library" that has no disadvantages.
TranslationSetup=Configuration de la traduction TranslationSetup=Configuration de la traduction
TranslationDesc=Choice of language visible on screen can be modified:<br>* Globally from menu <strong>Home - Setup - Display</strong><br>* For user only from tab <strong>User display</strong> of user card (click on login on top of screen). TranslationDesc=How to set displayed application language<br>* Systemwide: menu <strong>Home - Setup - Display</strong><br>* Per user: <strong>User display setup</strong> tab of user card (click on username at the top of the screen).
TranslationOverwriteDesc=You can also overwrite some value by completing/editing the following table. You must use for "%s" the language code, for "%s" the key found into file langs/xx_XX/somefile.lang and "%s" the new value you want to use as new translation. TranslationOverwriteDesc=You can also override strings filling the following table. Choose your language from "%s" dropdown, insert the key string found in the lang file (langs/xx_XX/somefile.lang) into "%s" and your new translation into "%s".
TotalNumberOfActivatedModules=Total number of activated feature modules: <b>%s</b> / <b>%s</b> TotalNumberOfActivatedModules=Total number of activated feature modules: <b>%s</b> / <b>%s</b>
YouMustEnableOneModule=You must at least enable 1 module YouMustEnableOneModule=You must at least enable 1 module
ClassNotFoundIntoPathWarning=Class %s not found into PHP path ClassNotFoundIntoPathWarning=Class %s not found into PHP path
@ -1526,6 +1527,7 @@ MenuDeleted=Menu deleted
TreeMenu=Tree menus TreeMenu=Tree menus
Menus=Menus Menus=Menus
TreeMenuPersonalized=Personalized menus TreeMenuPersonalized=Personalized menus
NotTopTreeMenuPersonalized=Personalized menus not linked to a top menu entry
NewMenu=New menu NewMenu=New menu
MenuConf=Menus setup MenuConf=Menus setup
Menu=Selection of menu Menu=Selection of menu
@ -1750,4 +1752,5 @@ AddModels=Add document or numbering templates
AddSubstitutions=Add keys substitutions AddSubstitutions=Add keys substitutions
DetectionNotPossible=Detection not possible DetectionNotPossible=Detection not possible
UrlToGetKeyToUseAPIs=Url to get token to use API (once token has been received it is saved on database user table and will be checked on each future access) UrlToGetKeyToUseAPIs=Url to get token to use API (once token has been received it is saved on database user table and will be checked on each future access)
ListOfAvailableAPIs=List of available APIs ListOfAvailableAPIs=List of available APIs
activateModuleDependNotSatisfied=Module "%s" depends on module "%s" that is missing, so module "%1$s" may not work correclty. Please install module "%2$s" or disable module "%1$s" if you want to be safe from any surprise

View File

@ -81,8 +81,8 @@ AgendaUrlOptions2=<b>login=%s</b> to restrict output to actions created by or as
AgendaUrlOptions3=<b>logina=%s</b> to restrict output to actions owned by a user <b>%s</b>. AgendaUrlOptions3=<b>logina=%s</b> to restrict output to actions owned by a user <b>%s</b>.
AgendaUrlOptions4=<b>logint=%s</b> to restrict output to actions assigned to user <b>%s</b>. AgendaUrlOptions4=<b>logint=%s</b> to restrict output to actions assigned to user <b>%s</b>.
AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> to restrict output to actions associated to project <b>PROJECT_ID</b>. AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> to restrict output to actions associated to project <b>PROJECT_ID</b>.
AgendaShowBirthdayEvents=Show birthday's contacts AgendaShowBirthdayEvents=Show birthdays of contacts
AgendaHideBirthdayEvents=Hide birthday's contacts AgendaHideBirthdayEvents=Hide birthdays of contacts
Busy=Busy Busy=Busy
ExportDataset_event1=List of agenda events ExportDataset_event1=List of agenda events
DefaultWorkingDays=Default working days range in week (Example: 1-5, 1-6) DefaultWorkingDays=Default working days range in week (Example: 1-5, 1-6)
@ -110,4 +110,4 @@ EveryWeek=Every week
EveryMonth=Every month EveryMonth=Every month
DayOfMonth=Day of month DayOfMonth=Day of month
DayOfWeek=Day of week DayOfWeek=Day of week
DateStartPlusOne=Date start + 1 hour DateStartPlusOne=Date start + 1 hour

View File

@ -127,7 +127,7 @@ ConfirmValidateCheckReceipt=Are you sure you want to validate this check receipt
DeleteCheckReceipt=Delete this check receipt ? DeleteCheckReceipt=Delete this check receipt ?
ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt ? ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt ?
BankChecks=Bank checks BankChecks=Bank checks
BankChecksToReceipt=Checks waiting for deposit BankChecksToReceipt=Checks awaiting deposit
ShowCheckReceipt=Show check deposit receipt ShowCheckReceipt=Show check deposit receipt
NumberOfCheques=Nb of check NumberOfCheques=Nb of check
DeleteTransaction=Delete transaction DeleteTransaction=Delete transaction
@ -141,9 +141,9 @@ ExportDataset_banque_1=Bank transactions and account statement
ExportDataset_banque_2=Deposit slip ExportDataset_banque_2=Deposit slip
TransactionOnTheOtherAccount=Transaction on the other account TransactionOnTheOtherAccount=Transaction on the other account
TransactionWithOtherAccount=Account transfer TransactionWithOtherAccount=Account transfer
PaymentNumberUpdateSucceeded=Payment number updated succesfully PaymentNumberUpdateSucceeded=Payment number updated successfully
PaymentNumberUpdateFailed=Payment number could not be updated PaymentNumberUpdateFailed=Payment number could not be updated
PaymentDateUpdateSucceeded=Payment date update succesfully PaymentDateUpdateSucceeded=Payment date updated successfully
PaymentDateUpdateFailed=Payment date could not be updated PaymentDateUpdateFailed=Payment date could not be updated
Transactions=Transactions Transactions=Transactions
BankTransactionLine=Bank transaction BankTransactionLine=Bank transaction

View File

@ -11,7 +11,7 @@ BillsSuppliersUnpaidForCompany=Unpaid supplier's invoices for %s
BillsLate=Late payments BillsLate=Late payments
BillsStatistics=Customers invoices statistics BillsStatistics=Customers invoices statistics
BillsStatisticsSuppliers=Suppliers invoices statistics BillsStatisticsSuppliers=Suppliers invoices statistics
DisabledBecauseNotErasable=Disabled because can not be erased DisabledBecauseNotErasable=Disabled because cannot be erased
InvoiceStandard=Standard invoice InvoiceStandard=Standard invoice
InvoiceStandardAsk=Standard invoice InvoiceStandardAsk=Standard invoice
InvoiceStandardDesc=This kind of invoice is the common invoice. InvoiceStandardDesc=This kind of invoice is the common invoice.
@ -319,27 +319,27 @@ FrequencyPer_m=Every %s months
FrequencyPer_y=Every %s years FrequencyPer_y=Every %s years
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 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 NextDateToExecution=Date for next invoice generation
DateLastGeneration=Date of last generation DateLastGeneration=Date of latest generation
MaxPeriodNumber=Max nb of invoice generation MaxPeriodNumber=Max nb of invoice generation
NbOfGenerationDone=Nb of invoice generation already done NbOfGenerationDone=Nb of invoice generation already done
InvoiceAutoValidate=Automatically validate invoice InvoiceAutoValidate=Validate invoices automatically
GeneratedFromRecurringInvoice=Generated from template recurring invoice %s GeneratedFromRecurringInvoice=Generated from template recurring invoice %s
DateIsNotEnough=Date not yet reached DateIsNotEnough=Date not reached yet
InvoiceGeneratedFromTemplate=Invoice %s generated from recurring template invoice %s InvoiceGeneratedFromTemplate=Invoice %s generated from recurring template invoice %s
# PaymentConditions # PaymentConditions
PaymentConditionShortRECEP=Immediate PaymentConditionShortRECEP=Immediate
PaymentConditionRECEP=Immediate PaymentConditionRECEP=Immediate
PaymentConditionShort30D=30 days PaymentConditionShort30D=30 days
PaymentCondition30D=30 days PaymentCondition30D=30 days
PaymentConditionShort30DENDMONTH=30 days end of month PaymentConditionShort30DENDMONTH=30 days of month-end
PaymentCondition30DENDMONTH=30 days end of month PaymentCondition30DENDMONTH=Within 30 days following the end of the month
PaymentConditionShort60D=60 days PaymentConditionShort60D=60 days
PaymentCondition60D=60 days PaymentCondition60D=60 days
PaymentConditionShort60DENDMONTH=60 days end of month PaymentConditionShort60DENDMONTH=60 days of month-end
PaymentCondition60DENDMONTH=60 days end of month PaymentCondition60DENDMONTH=Within 60 days following the end of the month
PaymentConditionShortPT_DELIVERY=Delivery PaymentConditionShortPT_DELIVERY=Delivery
PaymentConditionPT_DELIVERY=On delivery PaymentConditionPT_DELIVERY=On delivery
PaymentConditionShortPT_ORDER=On order PaymentConditionShortPT_ORDER=Order
PaymentConditionPT_ORDER=On order PaymentConditionPT_ORDER=On order
PaymentConditionShortPT_5050=50-50 PaymentConditionShortPT_5050=50-50
PaymentConditionPT_5050=50%% in advance, 50%% on delivery PaymentConditionPT_5050=50%% in advance, 50%% on delivery
@ -356,12 +356,12 @@ PaymentTypeCB=Credit card
PaymentTypeShortCB=Credit card PaymentTypeShortCB=Credit card
PaymentTypeCHQ=Check PaymentTypeCHQ=Check
PaymentTypeShortCHQ=Check PaymentTypeShortCHQ=Check
PaymentTypeTIP=Interbank Payment PaymentTypeTIP=TIP (Documents against Payment)
PaymentTypeShortTIP=Interbank Payment PaymentTypeShortTIP=TIP Payment
PaymentTypeVAD=On line payment PaymentTypeVAD=On line payment
PaymentTypeShortVAD=On line payment PaymentTypeShortVAD=On line payment
PaymentTypeTRA=Traite PaymentTypeTRA=Bank draft
PaymentTypeShortTRA=Traite PaymentTypeShortTRA=Draft
PaymentTypeFAC=Factor PaymentTypeFAC=Factor
PaymentTypeShortFAC=Factor PaymentTypeShortFAC=Factor
BankDetails=Bank details BankDetails=Bank details
@ -369,7 +369,7 @@ BankCode=Bank code
DeskCode=Desk code DeskCode=Desk code
BankAccountNumber=Account number BankAccountNumber=Account number
BankAccountNumberKey=Key BankAccountNumberKey=Key
Residence=Domiciliation Residence=Direct debit
IBANNumber=IBAN number IBANNumber=IBAN number
IBAN=IBAN IBAN=IBAN
BIC=BIC/SWIFT BIC=BIC/SWIFT
@ -425,7 +425,7 @@ ExpectedToPay=Expected payment
CantRemoveConciliatedPayment=Can't remove conciliated payment CantRemoveConciliatedPayment=Can't remove conciliated payment
PayedByThisPayment=Paid by this payment PayedByThisPayment=Paid by this payment
ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid. ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid.
ClosePaidCreditNotesAutomatically=Classify "Paid" all credit notes entirely paid back. ClosePaidCreditNotesAutomatically=Classify "Paid" all credit notes entirely paid back.
AllCompletelyPayedInvoiceWillBeClosed=All invoice with no remain to pay will be automatically closed to status "Paid". AllCompletelyPayedInvoiceWillBeClosed=All invoice with no remain to pay will be automatically closed to status "Paid".
ToMakePayment=Pay ToMakePayment=Pay
ToMakePaymentBack=Pay back ToMakePaymentBack=Pay back
@ -459,7 +459,7 @@ SituationDeduction=Situation subtraction
Progress=Progress Progress=Progress
ModifyAllLines=Modify all lines ModifyAllLines=Modify all lines
CreateNextSituationInvoice=Create next situation CreateNextSituationInvoice=Create next situation
NotLastInCycle=This invoice in not the last in cycle and must not be modified. NotLastInCycle=This invoice is not the latest in cycle and must not be modified.
DisabledBecauseNotLastInCycle=The next situation already exists. DisabledBecauseNotLastInCycle=The next situation already exists.
DisabledBecauseFinal=This situation is final. DisabledBecauseFinal=This situation is final.
CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation. CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation.

View File

@ -14,6 +14,6 @@ BehaviourOnClick=Behaviour when a URL is clicked
CreateBookmark=Create bookmark CreateBookmark=Create bookmark
SetHereATitleForLink=Set a title for the bookmark SetHereATitleForLink=Set a title for the bookmark
UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external http URL or a relative Dolibarr URL UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external http URL or a relative Dolibarr URL
ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choose if a page opened by link must appear on current or new window ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choose if linked page must open in new window or not
BookmarksManagement=Bookmarks management BookmarksManagement=Bookmarks management
ListOfBookmarks=List of bookmarks ListOfBookmarks=List of bookmarks

View File

@ -1,69 +1,69 @@
# Dolibarr language file - Source file is en_US - boxes # Dolibarr language file - Source file is en_US - boxes
BoxLastRssInfos=Rss information BoxLastRssInfos=Rss information
BoxLastProducts=Last %s products/services BoxLastProducts=Latest %s products/services
BoxProductsAlertStock=Products in stock alert BoxProductsAlertStock=Stock alerts for products
BoxLastProductsInContract=Last %s contracted products/services BoxLastProductsInContract=Latest %s contracted products/services
BoxLastSupplierBills=Last supplier's invoices BoxLastSupplierBills=Latest supplier invoices
BoxLastCustomerBills=Last customer's invoices BoxLastCustomerBills=Latest customer invoices
BoxOldestUnpaidCustomerBills=Oldest unpaid customer's invoices BoxOldestUnpaidCustomerBills=Oldest unpaid customer invoices
BoxOldestUnpaidSupplierBills=Oldest unpaid supplier's invoices BoxOldestUnpaidSupplierBills=Oldest unpaid supplier invoices
BoxLastProposals=Last commercial proposals BoxLastProposals=Latest commercial proposals
BoxLastProspects=Last modified prospects BoxLastProspects=Latest modified prospects
BoxLastCustomers=Last modified customers BoxLastCustomers=Latest modified customers
BoxLastSuppliers=Last modified suppliers BoxLastSuppliers=Latest modified suppliers
BoxLastCustomerOrders=Last customer orders BoxLastCustomerOrders=Latest customer orders
BoxLastValidatedCustomerOrders=Last validated customer orders BoxLastValidatedCustomerOrders=Latest validated customer orders
BoxLastBooks=Last books BoxLastBooks=Latest bookmarks
BoxLastActions=Last actions BoxLastActions=Latest actions
BoxLastContracts=Last contracts BoxLastContracts=Latest contracts
BoxLastContacts=Last contacts/addresses BoxLastContacts=Latest contacts/addresses
BoxLastMembers=Last members BoxLastMembers=Latest members
BoxFicheInter=Last interventions BoxFicheInter=Latest interventions
BoxCurrentAccounts=Open accounts balance BoxCurrentAccounts=Open accounts balance
BoxSalesTurnover=Sales turnover BoxSalesTurnover=Sales turnover
BoxTotalUnpaidCustomerBills=Total unpaid customer's invoices BoxTotalUnpaidCustomerBills=Total unpaid customer's invoices
BoxTotalUnpaidSuppliersBills=Total unpaid supplier's invoices BoxTotalUnpaidSuppliersBills=Total unpaid supplier's invoices
BoxTitleLastBooks=Last %s recorded books BoxTitleLastBooks=Latest %s recorded bookmarks
BoxTitleNbOfCustomers=Number of clients BoxTitleNbOfCustomers=Number of clients
BoxTitleLastRssInfos=Last %s news from %s BoxTitleLastRssInfos=Latest %s news from %s
BoxTitleLastProducts=Last %s modified products/services BoxTitleLastProducts=Latest %s modified products/services
BoxTitleProductsAlertStock=Products in stock alert BoxTitleProductsAlertStock=Products in stock alert
BoxTitleLastCustomerOrders=Last %s customer orders BoxTitleLastCustomerOrders=Latest %s customer orders
BoxTitleLastModifiedCustomerOrders=Last %s modified customer orders BoxTitleLastModifiedCustomerOrders=Latest %s modified customer orders
BoxTitleLastSuppliers=Last %s recorded suppliers BoxTitleLastSuppliers=Latest %s recorded suppliers
BoxTitleLastCustomers=Last %s recorded customers BoxTitleLastCustomers=Latest %s recorded customers
BoxTitleLastModifiedSuppliers=Last %s modified suppliers BoxTitleLastModifiedSuppliers=Latest %s modified suppliers
BoxTitleLastModifiedCustomers=Last %s modified customers BoxTitleLastModifiedCustomers=Latest %s modified customers
BoxTitleLastCustomersOrProspects=Last %s customers or prospects BoxTitleLastCustomersOrProspects=Latest %s customers or prospects
BoxTitleLastPropals=Last %s proposals BoxTitleLastPropals=Latest %s proposals
BoxTitleLastModifiedPropals=Last %s modified proposals BoxTitleLastModifiedPropals=Latest %s modified proposals
BoxTitleLastCustomerBills=Last %s customer's invoices BoxTitleLastCustomerBills=Latest %s customer's invoices
BoxTitleLastModifiedCustomerBills=Last %s modified customer invoices BoxTitleLastModifiedCustomerBills=Latest %s modified customer invoices
BoxTitleLastSupplierBills=Last %s supplier's invoices BoxTitleLastSupplierBills=Latest %s supplier's invoices
BoxTitleLastModifiedSupplierBills=Last %s modified supplier invoices BoxTitleLastModifiedSupplierBills=Latest %s modified supplier invoices
BoxTitleLastModifiedProspects=Last %s modified prospects BoxTitleLastModifiedProspects=Latest %s modified prospects
BoxTitleLastProductsInContract=Last %s products/services in a contract BoxTitleLastProductsInContract=Latest %s products/services in a contract
BoxTitleLastModifiedMembers=Last %s members BoxTitleLastModifiedMembers=Latest %s members
BoxTitleLastFicheInter=Last %s modified intervention BoxTitleLastFicheInter=Latest %s modified interventions
BoxTitleOldestUnpaidCustomerBills=Oldest %s unpaid customer invoices BoxTitleOldestUnpaidCustomerBills=Oldest %s unpaid customer invoices
BoxTitleOldestUnpaidSupplierBills=Oldest %s unpaid supplier invoices BoxTitleOldestUnpaidSupplierBills=Oldest %s unpaid supplier invoices
BoxTitleCurrentAccounts=Open accounts balances BoxTitleCurrentAccounts=Open accounts balances
BoxTitleSalesTurnover=Sales turnover BoxTitleSalesTurnover=Sales turnover
BoxTitleTotalUnpaidCustomerBills=Unpaid customer invoices BoxTitleTotalUnpaidCustomerBills=Unpaid customer invoices
BoxTitleTotalUnpaidSuppliersBills=Unpaid supplier invoices BoxTitleTotalUnpaidSuppliersBills=Unpaid supplier invoices
BoxTitleLastModifiedContacts=Last %s modified contacts/addresses BoxTitleLastModifiedContacts=Latest %s modified contacts/addresses
BoxMyLastBookmarks=My last %s bookmarks BoxMyLastBookmarks=My latest %s bookmarks
BoxOldestExpiredServices=Oldest active expired services BoxOldestExpiredServices=Oldest active expired services
BoxLastExpiredServices=Last %s oldest contacts with active expired services BoxLastExpiredServices=Latest %s oldest contacts with active expired services
BoxTitleLastActionsToDo=Last %s actions to do BoxTitleLastActionsToDo=Latest %s actions to do
BoxTitleLastContracts=Last %s contracts BoxTitleLastContracts=Latest %s contracts
BoxTitleLastModifiedDonations=Last %s modified donations BoxTitleLastModifiedDonations=Latest %s modified donations
BoxTitleLastModifiedExpenses=Last %s modified expense reports BoxTitleLastModifiedExpenses=Latest %s modified expense reports
BoxGlobalActivity=Global activity (invoices, proposals, orders) BoxGlobalActivity=Global activity (invoices, proposals, orders)
BoxGoodCustomers=Good customers BoxGoodCustomers=Good customers
BoxTitleGoodCustomers=%s Good customers BoxTitleGoodCustomers=%s Good customers
FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Last successfull refresh date: %s FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Latest successfull refresh date: %s
LastRefreshDate=Last refresh date LastRefreshDate=Latest refresh date
NoRecordedBookmarks=No bookmarks defined. NoRecordedBookmarks=No bookmarks defined.
ClickToAdd=Click here to add. ClickToAdd=Click here to add.
NoRecordedCustomers=No recorded customers NoRecordedCustomers=No recorded customers
@ -82,8 +82,8 @@ NoContractedProducts=No products/services contracted
NoRecordedContracts=No recorded contracts NoRecordedContracts=No recorded contracts
NoRecordedInterventions=No recorded interventions NoRecordedInterventions=No recorded interventions
BoxLatestSupplierOrders=Latest supplier orders BoxLatestSupplierOrders=Latest supplier orders
BoxTitleLatestSupplierOrders=Last %s supplier orders BoxTitleLatestSupplierOrders=Latest %s supplier orders
BoxTitleLatestModifiedSupplierOrders=Last %s modified supplier orders BoxTitleLatestModifiedSupplierOrders=Latest %s modified supplier orders
NoSupplierOrder=No recorded supplier order NoSupplierOrder=No recorded supplier order
BoxCustomersInvoicesPerMonth=Customer invoices per month BoxCustomersInvoicesPerMonth=Customer invoices per month
BoxSuppliersInvoicesPerMonth=Supplier invoices per month BoxSuppliersInvoicesPerMonth=Supplier invoices per month
@ -96,5 +96,5 @@ BoxProductDistributionFor=Distribution of %s for %s
ForCustomersInvoices=Customers invoices ForCustomersInvoices=Customers invoices
ForCustomersOrders=Customers orders ForCustomersOrders=Customers orders
ForProposals=Proposals ForProposals=Proposals
LastXMonthRolling=The last %s month rolling LastXMonthRolling=The latest %s month rolling
ChooseBoxToAdd=Add widget to your dashboard... ChooseBoxToAdd=Add widget to your dashboard...

View File

@ -16,8 +16,8 @@ Rendez-Vous=Rendezvous
ConfirmDeleteAction=Are you sure you want to delete this event ? ConfirmDeleteAction=Are you sure you want to delete this event ?
CardAction=Event card CardAction=Event card
PercentDone=Percentage complete PercentDone=Percentage complete
ActionOnCompany=Event about company ActionOnCompany=Related company
ActionOnContact=Event about contact ActionOnContact=Related contact
TaskRDV=Meetings TaskRDV=Meetings
TaskRDVWith=Meeting with %s TaskRDVWith=Meeting with %s
ShowTask=Show task ShowTask=Show task
@ -35,9 +35,9 @@ ShowCustomer=Show customer
ShowProspect=Show prospect ShowProspect=Show prospect
ListOfProspects=List of prospects ListOfProspects=List of prospects
ListOfCustomers=List of customers ListOfCustomers=List of customers
LastDoneTasks=Last %s completed tasks LastDoneTasks=Latest %s completed tasks
LastRecordedTasks=Last recorded tasks LastRecordedTasks=Latest recorded tasks
LastActionsToDo=Last %s oldest actions not completed LastActionsToDo=Oldest %s not completed actions
DoneAndToDoActionsFor=Completed and To do events for %s DoneAndToDoActionsFor=Completed and To do events for %s
DoneAndToDoActions=Completed and To do events DoneAndToDoActions=Completed and To do events
DoneActions=Completed events DoneActions=Completed events
@ -94,4 +94,4 @@ StatusProsp=Prospect status
DraftPropals=Draft commercial proposals DraftPropals=Draft commercial proposals
SearchPropal=Search a commercial proposal SearchPropal=Search a commercial proposal
CommercialDashboard=Commercial summary CommercialDashboard=Commercial summary
NoLimit=No limit NoLimit=No limit

View File

@ -302,7 +302,7 @@ RequiredIfCustomer=Required if third party is a customer or prospect
RequiredIfSupplier=Required if third party is a supplier RequiredIfSupplier=Required if third party is a supplier
ValidityControledByModule=Validity controled by module ValidityControledByModule=Validity controled by module
ThisIsModuleRules=This is rules for this module ThisIsModuleRules=This is rules for this module
LastProspect=Last LastProspect=Latest
ProspectToContact=Prospect to contact ProspectToContact=Prospect to contact
CompanyDeleted=Company "%s" deleted from database. CompanyDeleted=Company "%s" deleted from database.
ListOfContacts=List of contacts/addresses ListOfContacts=List of contacts/addresses
@ -328,7 +328,7 @@ NoContactForAnyContract=This contact is not a contact for any contract
NoContactForAnyInvoice=This contact is not a contact for any invoice NoContactForAnyInvoice=This contact is not a contact for any invoice
NewContact=New contact NewContact=New contact
NewContactAddress=New contact/address NewContactAddress=New contact/address
LastContacts=Last contacts LastContacts=Latest contacts
MyContacts=My contacts MyContacts=My contacts
Phones=Phones Phones=Phones
Capital=Capital Capital=Capital
@ -343,7 +343,7 @@ VATIntraCheckableOnEUSite=Check Intracomunnautary VAT on European commision site
VATIntraManualCheck=You can also check manually from european web site <a href="%s" target="_blank">%s</a> VATIntraManualCheck=You can also check manually from european web site <a href="%s" target="_blank">%s</a>
ErrorVATCheckMS_UNAVAILABLE=Check not possible. Check service is not provided by the member state (%s). ErrorVATCheckMS_UNAVAILABLE=Check not possible. Check service is not provided by the member state (%s).
NorProspectNorCustomer=Nor prospect, nor customer NorProspectNorCustomer=Nor prospect, nor customer
JuridicalStatus=Juridical status JuridicalStatus=Legal form
Staff=Staff Staff=Staff
ProspectLevelShort=Potential ProspectLevelShort=Potential
ProspectLevel=Prospect potential ProspectLevel=Prospect potential
@ -370,12 +370,12 @@ TE_PRIVATE=Private individual
TE_OTHER=Other TE_OTHER=Other
StatusProspect-1=Do not contact StatusProspect-1=Do not contact
StatusProspect0=Never contacted StatusProspect0=Never contacted
StatusProspect1=To contact StatusProspect1=To be contacted
StatusProspect2=Contact in process StatusProspect2=Contact in process
StatusProspect3=Contact done StatusProspect3=Contact done
ChangeDoNotContact=Change status to 'Do not contact' ChangeDoNotContact=Change status to 'Do not contact'
ChangeNeverContacted=Change status to 'Never contacted' ChangeNeverContacted=Change status to 'Never contacted'
ChangeToContact=Change status to 'To contact' ChangeToContact=Change status to 'To be contacted'
ChangeContactInProcess=Change status to 'Contact in process' ChangeContactInProcess=Change status to 'Contact in process'
ChangeContactDone=Change status to 'Contact done' ChangeContactDone=Change status to 'Contact done'
ProspectsByStatus=Prospects by status ProspectsByStatus=Prospects by status
@ -400,28 +400,28 @@ DeliveriesAddress=Delivery addresses
DeliveryAddress=Delivery address DeliveryAddress=Delivery address
DeliveryAddressLabel=Delivery address label DeliveryAddressLabel=Delivery address label
DeleteDeliveryAddress=Delete a delivery address DeleteDeliveryAddress=Delete a delivery address
ConfirmDeleteDeliveryAddress=Are you sure you want to delete this delivery address? ConfirmDeleteDeliveryAddress=Are you sure you want to delete this delivery address ?
NewDeliveryAddress=New delivery address NewDeliveryAddress=New delivery address
AddDeliveryAddress=Create address AddDeliveryAddress=Add delivery address
AddAddress=Create address AddAddress=Add address
NoOtherDeliveryAddress=No alternative delivery address defined NoOtherDeliveryAddress=No alternative delivery address defined
SupplierCategory=Supplier category SupplierCategory=Supplier category
JuridicalStatus200=Independant JuridicalStatus200=Independent
DeleteFile=Delete file DeleteFile=Delete file
ConfirmDeleteFile=Are you sure you want to delete this file? ConfirmDeleteFile=Are you sure you want to delete this file?
AllocateCommercial=Assigned to sale representative AllocateCommercial=Assigned to sales representative
SelectCountry=Select a country SelectCountry=Select a country
SelectCompany=Select a third party SelectCompany=Select a third party
Organization=Organization Organization=Organization
AutomaticallyGenerated=Automatically generated AutomaticallyGenerated=Automatically generated
FiscalYearInformation=Information on the fiscal year FiscalYearInformation=Information on the fiscal year
FiscalMonthStart=Starting month of the fiscal year FiscalMonthStart=Starting month of the fiscal year
YouMustCreateContactFirst=You must create emails contacts for third party first to be able to add emails notifications. YouMustCreateContactFirst=To be able to add email notifications, you must first insert email contacts for the third party
ListSuppliersShort=List of suppliers ListSuppliersShort=List of suppliers
ListProspectsShort=List of prospects ListProspectsShort=List of prospects
ListCustomersShort=List of customers ListCustomersShort=List of customers
ThirdPartiesArea=Third parties and contact area ThirdPartiesArea=Third parties and contact area
LastModifiedThirdParties=Last %s modified third parties LastModifiedThirdParties=Latest %s modified third parties
UniqueThirdParties=Total of unique third parties UniqueThirdParties=Total of unique third parties
InActivity=Open InActivity=Open
ActivityCeased=Closed ActivityCeased=Closed
@ -429,7 +429,7 @@ ActivityStateFilter=Activity status
ProductsIntoElements=List of products/services into %s ProductsIntoElements=List of products/services into %s
CurrentOutstandingBill=Current outstanding bill CurrentOutstandingBill=Current outstanding bill
OutstandingBill=Max. for outstanding bill OutstandingBill=Max. for outstanding bill
OutstandingBillReached=Reached max. for outstanding bill OutstandingBillReached=Max. for outstanding bill reached
MonkeyNumRefModelDesc=Return numero with format %syymm-nnnn for customer code and %syymm-nnnn for supplier code where yy is year, mm is month and nnnn is a sequence with no break and no return to 0. MonkeyNumRefModelDesc=Return numero with format %syymm-nnnn for customer code and %syymm-nnnn for supplier code where yy is year, mm is month and nnnn is a sequence with no break and no return to 0.
LeopardNumRefModelDesc=The code is free. This code can be modified at any time. LeopardNumRefModelDesc=The code is free. This code can be modified at any time.
ManagingDirectors=Manager(s) name (CEO, director, president...) ManagingDirectors=Manager(s) name (CEO, director, president...)
@ -440,8 +440,8 @@ MergeThirdparties=Merge third parties
ConfirmMergeThirdparties=Are you sure you want to merge this third party into the current one ? All linked objects (invoices, orders, ...) will be moved to current third party so you will be able to delete the duplicate one. ConfirmMergeThirdparties=Are you sure you want to merge this third party into the current one ? All linked objects (invoices, orders, ...) will be moved to current third party so you will be able to delete the duplicate one.
ThirdpartiesMergeSuccess=Thirdparties have been merged ThirdpartiesMergeSuccess=Thirdparties have been merged
ErrorThirdpartiesMerge=There was an error when deleting the thirdparties. Please check the log. Changes have been reverted. ErrorThirdpartiesMerge=There was an error when deleting the thirdparties. Please check the log. Changes have been reverted.
SaleRepresentativeLogin=Login of sale representative SaleRepresentativeLogin=Login of sales representative
SaleRepresentativeFirstname=Firstname of sale representative SaleRepresentativeFirstname=Firstname of sales representative
SaleRepresentativeLastname=Lastname of sale representative SaleRepresentativeLastname=Lastname of sales representative
ModelModulesContact=Document Models of contact ModelModulesContact=Document Models of contact
ModelModulesThirdParties=Document models of third party ModelModulesThirdParties=Document models of third party

View File

@ -121,11 +121,11 @@ ErrorWrongAccountancyCodeForCompany=Bad customer accountancy code for %s
SuppliersProductsSellSalesTurnover=The generated turnover by the sales of supplier's products. SuppliersProductsSellSalesTurnover=The generated turnover by the sales of supplier's products.
CheckReceipt=Check deposit CheckReceipt=Check deposit
CheckReceiptShort=Check deposit CheckReceiptShort=Check deposit
LastCheckReceiptShort=Last %s check receipts LastCheckReceiptShort=Latest %s check receipts
NewCheckReceipt=New discount NewCheckReceipt=New discount
NewCheckDeposit=New check deposit NewCheckDeposit=New check deposit
NewCheckDepositOn=Create receipt for deposit on account: %s NewCheckDepositOn=Create receipt for deposit on account: %s
NoWaitingChecks=No checks waiting for deposit. NoWaitingChecks=No checks awaiting deposit.
DateChequeReceived=Check reception date DateChequeReceived=Check reception date
NbOfCheques=Nb of checks NbOfCheques=Nb of checks
PaySocialContribution=Pay a social/fiscal tax PaySocialContribution=Pay a social/fiscal tax
@ -225,4 +225,5 @@ BasedOnTwoFirstLettersOfVATNumberBeingDifferentFromYourCompanyCountry=Based on t
SameCountryCustomersWithVAT=National customers report SameCountryCustomersWithVAT=National customers report
BasedOnTwoFirstLettersOfVATNumberBeingTheSameAsYourCompanyCountry=Based on the two first letters of the VAT number being the same as your own company's country code BasedOnTwoFirstLettersOfVATNumberBeingTheSameAsYourCompanyCountry=Based on the two first letters of the VAT number being the same as your own company's country code
LinkedFichinter=Link to an intervention LinkedFichinter=Link to an intervention
ImportDataset_tax_1=Import social/fiscal taxes ImportDataset_tax_1=Import social/fiscal taxes
ErrorBankAccountNotFound=Error: Bank account not found

View File

@ -1,7 +1,7 @@
# Dolibarr language file - Source file is en_US - contracts # Dolibarr language file - Source file is en_US - contracts
ContractsArea=Contracts area ContractsArea=Contracts area
ListOfContracts=List of contracts ListOfContracts=List of contracts
LastModifiedContracts=Last %s modified contracts LastModifiedContracts=Latest %s modified contracts
AllContracts=All contracts AllContracts=All contracts
ContractCard=Contract card ContractCard=Contract card
ContractStatus=Contract status ContractStatus=Contract status
@ -58,9 +58,9 @@ ListOfRunningContractsLines=List of running contract lines
ListOfRunningServices=List of running services ListOfRunningServices=List of running services
NotActivatedServices=Inactive services (among validated contracts) NotActivatedServices=Inactive services (among validated contracts)
BoardNotActivatedServices=Services to activate among validated contracts BoardNotActivatedServices=Services to activate among validated contracts
LastContracts=Last %s contracts LastContracts=Latest %s contracts
LastActivatedServices=Last %s activated services LastActivatedServices=Latest %s activated services
LastModifiedServices=Last %s modified services LastModifiedServices=Latest %s modified services
EditServiceLine=Edit service line EditServiceLine=Edit service line
ContractStartDate=Start date ContractStartDate=Start date
ContractEndDate=End date ContractEndDate=End date

View File

@ -40,8 +40,8 @@ CronNone=None
CronDtStart=Not before CronDtStart=Not before
CronDtEnd=Not after CronDtEnd=Not after
CronDtNextLaunch=Next execution CronDtNextLaunch=Next execution
CronDtLastLaunch=Start date of last execution CronDtLastLaunch=Start date of latest execution
CronDtLastResult=End date of last execution CronDtLastResult=End date of latest execution
CronFrequency=Frequency CronFrequency=Frequency
CronClass=Class CronClass=Class
CronMethod=Method CronMethod=Method
@ -63,7 +63,7 @@ CronHourStart= Start hour and date of job
CronEvery=Execute job each CronEvery=Execute job each
CronObject=Instance/Object to create CronObject=Instance/Object to create
CronArgs=Parameters CronArgs=Parameters
CronSaveSucess=Save succesfully CronSaveSucess=Save successfully
CronNote=Comment CronNote=Comment
CronFieldMandatory=Fields %s is mandatory CronFieldMandatory=Fields %s is mandatory
CronErrEndDateStartDt=End date cannot be before start date CronErrEndDateStartDt=End date cannot be before start date

View File

@ -138,7 +138,7 @@ CountryLS=Lesotho
CountryLR=Liberia CountryLR=Liberia
CountryLY=Libyan CountryLY=Libyan
CountryLI=Liechtenstein CountryLI=Liechtenstein
CountryLT=Lituania CountryLT=Lithuania
CountryLU=Luxembourg CountryLU=Luxembourg
CountryMO=Macao CountryMO=Macao
CountryMK=Macedonia, the former Yugoslav of CountryMK=Macedonia, the former Yugoslav of

View File

@ -29,7 +29,7 @@ ValidPromess=Validate promise
DonationReceipt=Donation receipt DonationReceipt=Donation receipt
BuildDonationReceipt=Build receipt BuildDonationReceipt=Build receipt
DonationsModels=Documents models for donation receipts DonationsModels=Documents models for donation receipts
LastModifiedDonations=Last %s modified donations LastModifiedDonations=Latest %s modified donations
SearchADonation=Search a donation SearchADonation=Search a donation
DonationRecipient=Donation recipient DonationRecipient=Donation recipient
ThankYou=Thank You ThankYou=Thank You

View File

@ -17,7 +17,7 @@ ErrorFailToCreateFile=Failed to create file '<b>%s</b>'.
ErrorFailToRenameDir=Failed to rename directory '<b>%s</b>' into '<b>%s</b>'. ErrorFailToRenameDir=Failed to rename directory '<b>%s</b>' into '<b>%s</b>'.
ErrorFailToCreateDir=Failed to create directory '<b>%s</b>'. ErrorFailToCreateDir=Failed to create directory '<b>%s</b>'.
ErrorFailToDeleteDir=Failed to delete directory '<b>%s</b>'. ErrorFailToDeleteDir=Failed to delete directory '<b>%s</b>'.
ErrorFailedToDeleteJoinedFiles=Can not delete environment because there is some joined files. Remove join files first. ErrorFailedToDeleteJoinedFiles=Cannot delete environment because joined files are present. Remove joined files first.
ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as contact for this type. ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as contact for this type.
ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only.
ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different.
@ -41,7 +41,7 @@ ErrorBadDateFormat=Value '%s' has wrong date format
ErrorWrongDate=Date is not correct! ErrorWrongDate=Date is not correct!
ErrorFailedToWriteInDir=Failed to write in directory %s ErrorFailedToWriteInDir=Failed to write in directory %s
ErrorFoundBadEmailInFile=Found incorrect email syntax for %s lines in file (example line %s with email=%s) ErrorFoundBadEmailInFile=Found incorrect email syntax for %s lines in file (example line %s with email=%s)
ErrorUserCannotBeDelete=User can not be deleted. May be it is associated on Dolibarr entities. ErrorUserCannotBeDelete=User cannot be deleted. May be it is associated to Dolibarr entities.
ErrorFieldsRequired=Some required fields were not filled. ErrorFieldsRequired=Some required fields were not filled.
ErrorFailedToCreateDir=Failed to create a directory. Check that Web server user has permissions to write into Dolibarr documents directory. If parameter <b>safe_mode</b> is enabled on this PHP, check that Dolibarr php files owns to web server user (or group). ErrorFailedToCreateDir=Failed to create a directory. Check that Web server user has permissions to write into Dolibarr documents directory. If parameter <b>safe_mode</b> is enabled on this PHP, check that Dolibarr php files owns to web server user (or group).
ErrorNoMailDefinedForThisUser=No mail defined for this user ErrorNoMailDefinedForThisUser=No mail defined for this user
@ -129,7 +129,7 @@ ErrorNewValueCantMatchOldValue=New value can't be equal to old one
ErrorFailedToValidatePasswordReset=Failed to reinit password. May be the reinit was already done (this link can be used only one time). If not, try to restart the reinit process. ErrorFailedToValidatePasswordReset=Failed to reinit password. May be the reinit was already done (this link can be used only one time). If not, try to restart the reinit process.
ErrorToConnectToMysqlCheckInstance=Connect to database fails. Check Mysql server is running (in most cases, you can launch it from command line with 'sudo /etc/init.d/mysql start'). ErrorToConnectToMysqlCheckInstance=Connect to database fails. Check Mysql server is running (in most cases, you can launch it from command line with 'sudo /etc/init.d/mysql start').
ErrorFailedToAddContact=Failed to add contact ErrorFailedToAddContact=Failed to add contact
ErrorDateMustBeBeforeToday=The date can not be greater than today ErrorDateMustBeBeforeToday=The date cannot be greater than today
ErrorPaymentModeDefinedToWithoutSetup=A payment mode was set to type %s but setup of module Invoice was not completed to define information to show for this payment mode. ErrorPaymentModeDefinedToWithoutSetup=A payment mode was set to type %s but setup of module Invoice was not completed to define information to show for this payment mode.
ErrorPHPNeedModule=Error, your PHP must have module <b>%s</b> installed to use this feature. ErrorPHPNeedModule=Error, your PHP must have module <b>%s</b> installed to use this feature.
ErrorOpenIDSetupNotComplete=You setup Dolibarr config file to allow OpenID authentication, but URL of OpenID service is not defined into constant %s ErrorOpenIDSetupNotComplete=You setup Dolibarr config file to allow OpenID authentication, but URL of OpenID service is not defined into constant %s

View File

@ -80,7 +80,7 @@ alreadyCPexist=A leave request has already been done on this period.
UserName=Name UserName=Name
FirstDayOfHoliday=First day of vacation FirstDayOfHoliday=First day of vacation
LastDayOfHoliday=Last day of vacation LastDayOfHoliday=Last day of vacation
BoxTitleLastLeaveRequests=Last %s modified leave requests BoxTitleLastLeaveRequests=Latest %s modified leave requests
HolidaysMonthlyUpdate=Monthly update HolidaysMonthlyUpdate=Monthly update
ManualUpdate=Manual update ManualUpdate=Manual update
HolidaysCancelation=Leave request cancelation HolidaysCancelation=Leave request cancelation
@ -91,8 +91,8 @@ DescOptionCP=Description of the option
ValueOptionCP=Value ValueOptionCP=Value
GroupToValidateCP=Group with the ability to approve leave requests GroupToValidateCP=Group with the ability to approve leave requests
ConfirmConfigCP=Validate the configuration ConfirmConfigCP=Validate the configuration
LastUpdateCP=Last automatic update of leaves allocation LastUpdateCP=Latest automatic update of leaves allocation
MonthOfLastMonthlyUpdate=Month of last automatic update of leaves allocation MonthOfLastMonthlyUpdate=Month of latest automatic update of leaves allocation
UpdateConfCPOK=Updated successfully. UpdateConfCPOK=Updated successfully.
ErrorUpdateConfCP=An error occurred during the update, please try again. ErrorUpdateConfCP=An error occurred during the update, please try again.
AddCPforUsers=Please add the balance of leaves allocation of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>. AddCPforUsers=Please add the balance of leaves allocation of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>.
@ -143,4 +143,4 @@ NewByMonth=Added per month
Affect=Followed by a counter Affect=Followed by a counter
FollowedByACounter=1: This type of leave need to be followed by a counter. Counter is incremented manually or automatically and when a leave request is validated, counter is decremented.<br>0: Not followed by a counter. FollowedByACounter=1: This type of leave need to be followed by a counter. Counter is incremented manually or automatically and when a leave request is validated, counter is decremented.<br>0: Not followed by a counter.
NoLeaveWithCounterDefined=There is no leave types defined that need to be followed by a counter NoLeaveWithCounterDefined=There is no leave types defined that need to be followed by a counter
GoIntoDictionaryHolidayTypes=Go into <strong>Home - Setup - Dictionaries - Type of leaves</strong> to setup the different types of leaves. GoIntoDictionaryHolidayTypes=Go into <strong>Home - Setup - Dictionaries - Type of leaves</strong> to setup the different types of leaves.

View File

@ -82,7 +82,7 @@ SetupEnd=End of setup
SystemIsInstalled=This installation is complete. SystemIsInstalled=This installation is complete.
SystemIsUpgraded=Dolibarr has been upgraded successfully. SystemIsUpgraded=Dolibarr has been upgraded successfully.
YouNeedToPersonalizeSetup=You need to configure Dolibarr to suit your needs (appearance, features, ...). To do this, please follow the link below: YouNeedToPersonalizeSetup=You need to configure Dolibarr to suit your needs (appearance, features, ...). To do this, please follow the link below:
AdminLoginCreatedSuccessfuly=Dolibarr administrator login '<b>%s</b>' created successfuly. AdminLoginCreatedSuccessfuly=Dolibarr administrator login '<b>%s</b>' created successfully.
GoToDolibarr=Go to Dolibarr GoToDolibarr=Go to Dolibarr
GoToSetupArea=Go to Dolibarr (setup area) GoToSetupArea=Go to Dolibarr (setup area)
MigrationNotFinished=Version of your database is not completely up to date, so you'll have to run the upgrade process again. MigrationNotFinished=Version of your database is not completely up to date, so you'll have to run the upgrade process again.
@ -159,7 +159,7 @@ MigrationSupplierOrder=Data migration for supplier's orders
MigrationProposal=Data migration for commercial proposals MigrationProposal=Data migration for commercial proposals
MigrationInvoice=Data migration for customer's invoices MigrationInvoice=Data migration for customer's invoices
MigrationContract=Data migration for contracts MigrationContract=Data migration for contracts
MigrationSuccessfullUpdate=Upgrade successful MigrationSuccessfullUpdate=Upgrade successfull
MigrationUpdateFailed=Failed upgrade process MigrationUpdateFailed=Failed upgrade process
MigrationRelationshipTables=Data migration for relationship tables (%s) MigrationRelationshipTables=Data migration for relationship tables (%s)
MigrationPaymentsUpdate=Payment data correction MigrationPaymentsUpdate=Payment data correction
@ -173,7 +173,7 @@ MigrationContractsLineCreation=Create contract line for contract ref %s
MigrationContractsNothingToUpdate=No more things to do MigrationContractsNothingToUpdate=No more things to do
MigrationContractsFieldDontExist=Field fk_facture does not exists anymore. Nothing to do. MigrationContractsFieldDontExist=Field fk_facture does not exists anymore. Nothing to do.
MigrationContractsEmptyDatesUpdate=Contract empty date correction MigrationContractsEmptyDatesUpdate=Contract empty date correction
MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfuly MigrationContractsEmptyDatesUpdateSuccess=Contract emtpy date correction done successfully
MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct
MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct
MigrationContractsInvalidDatesUpdate=Bad value date contract correction MigrationContractsInvalidDatesUpdate=Bad value date contract correction
@ -181,7 +181,7 @@ MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting
MigrationContractsInvalidDatesNumber=%s contracts modified MigrationContractsInvalidDatesNumber=%s contracts modified
MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct
MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction
MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done succesfuly MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done successfully
MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct
MigrationReopeningContracts=Open contract closed by error MigrationReopeningContracts=Open contract closed by error
MigrationReopenThisContract=Reopen contract %s MigrationReopenThisContract=Reopen contract %s
@ -205,4 +205,4 @@ MigrationEvents=Migration of events to add event owner into assignement table
MigrationReloadModule=Reload module %s MigrationReloadModule=Reload module %s
ShowNotAvailableOptions=Show not available options ShowNotAvailableOptions=Show not available options
HideNotAvailableOptions=Hide not available options HideNotAvailableOptions=Hide not available options
ErrorFoundDuringMigration=Error were reported during migration process so next step is not available. To ignore errors, you can <a href="%s">click here</a>, but application or some features may not work correctly until fixed. ErrorFoundDuringMigration=Error were reported during migration process so next step is not available. To ignore errors, you can <a href="%s">click here</a>, but application or some features may not work correctly until fixed.

View File

@ -7,7 +7,7 @@ AddIntervention=Create intervention
ListOfInterventions=List of interventions ListOfInterventions=List of interventions
EditIntervention=Edit intervention EditIntervention=Edit intervention
ActionsOnFicheInter=Actions on intervention ActionsOnFicheInter=Actions on intervention
LastInterventions=Last %s interventions LastInterventions=Latest %s interventions
AllInterventions=All interventions AllInterventions=All interventions
CreateDraftIntervention=Create draft CreateDraftIntervention=Create draft
CustomerDoesNotHavePrefix=Customer does not have a prefix CustomerDoesNotHavePrefix=Customer does not have a prefix
@ -41,7 +41,7 @@ InterventionDeletedInDolibarr=Intervention %s deleted
SearchAnIntervention=Search an intervention SearchAnIntervention=Search an intervention
InterventionsArea=Interventions area InterventionsArea=Interventions area
DraftFichinter=Draft interventions DraftFichinter=Draft interventions
LastModifiedInterventions=Last %s modified interventions LastModifiedInterventions=Latest %s modified interventions
##### Types de contacts ##### ##### Types de contacts #####
TypeContact_fichinter_internal_INTERREPFOLL=Representative following-up intervention TypeContact_fichinter_internal_INTERREPFOLL=Representative following-up intervention
TypeContact_fichinter_internal_INTERVENING=Intervening TypeContact_fichinter_internal_INTERVENING=Intervening

View File

@ -3,8 +3,8 @@ MailmanSpipSetup=Mailman and SPIP module Setup
MailmanTitle=Mailman mailing list system MailmanTitle=Mailman mailing list system
TestSubscribe=To test subscription to Mailman lists TestSubscribe=To test subscription to Mailman lists
TestUnSubscribe=To test unsubscribe from Mailman lists TestUnSubscribe=To test unsubscribe from Mailman lists
MailmanCreationSuccess=Subscription test was executed succesfully MailmanCreationSuccess=Subscription test was executed successfully
MailmanDeletionSuccess=Unsubscription test was executed succesfully MailmanDeletionSuccess=Unsubscription test was executed successfully
SynchroMailManEnabled=A Mailman update will be performed SynchroMailManEnabled=A Mailman update will be performed
SynchroSpipEnabled=A Spip update will be performed SynchroSpipEnabled=A Spip update will be performed
DescADHERENT_MAILMAN_ADMINPW=Mailman administrator password DescADHERENT_MAILMAN_ADMINPW=Mailman administrator password
@ -23,5 +23,5 @@ DeleteIntoSpip=Remove from SPIP
DeleteIntoSpipConfirmation=Are you sure you want to remove this member from SPIP? DeleteIntoSpipConfirmation=Are you sure you want to remove this member from SPIP?
DeleteIntoSpipError=Failed to suppress the user from SPIP DeleteIntoSpipError=Failed to suppress the user from SPIP
SPIPConnectionFailed=Failed to connect to SPIP SPIPConnectionFailed=Failed to connect to SPIP
SuccessToAddToMailmanList=Add of %s to mailman list %s or SPIP database done SuccessToAddToMailmanList=%s successfully added to mailman list %s or SPIP database
SuccessToRemoveToMailmanList=Removal of %s from mailman list %s or SPIP database done SuccessToRemoveToMailmanList=%s successfully removed from mailman list %s or SPIP database

View File

@ -70,7 +70,7 @@ CloneEMailing=Clone Emailing
ConfirmCloneEMailing=Are you sure you want to clone this emailing ? ConfirmCloneEMailing=Are you sure you want to clone this emailing ?
CloneContent=Clone message CloneContent=Clone message
CloneReceivers=Cloner recipients CloneReceivers=Cloner recipients
DateLastSend=Date of last sending DateLastSend=Date of latest sending
DateSending=Date sending DateSending=Date sending
SentTo=Sent to <b>%s</b> SentTo=Sent to <b>%s</b>
MailingStatusRead=Read MailingStatusRead=Read
@ -170,4 +170,4 @@ AdvTgtSaveFilter=Save filter
AdvTgtCreateFilter=Create filter AdvTgtCreateFilter=Create filter
AdvTgtOrCreateNewFilter=Name of new filter AdvTgtOrCreateNewFilter=Name of new filter
NoContactWithCategoryFound=No contact/address with a category found NoContactWithCategoryFound=No contact/address with a category found
NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found NoContactLinkedToThirdpartieWithCategoryFound=No contact/address with a category found

View File

@ -36,8 +36,8 @@ ErrorFieldRequired=Field '%s' is required
ErrorFieldFormat=Field '%s' has a bad value ErrorFieldFormat=Field '%s' has a bad value
ErrorFileDoesNotExists=File %s does not exist ErrorFileDoesNotExists=File %s does not exist
ErrorFailedToOpenFile=Failed to open file %s ErrorFailedToOpenFile=Failed to open file %s
ErrorCanNotCreateDir=Can not create dir %s ErrorCanNotCreateDir=Cannot create dir %s
ErrorCanNotReadDir=Can not read dir %s ErrorCanNotReadDir=Cannot read dir %s
ErrorConstantNotDefined=Parameter %s not defined ErrorConstantNotDefined=Parameter %s not defined
ErrorUnknown=Unknown error ErrorUnknown=Unknown error
ErrorSQL=SQL Error ErrorSQL=SQL Error
@ -73,7 +73,7 @@ FileNotUploaded=The file was not uploaded
FileUploaded=The file was successfully uploaded FileUploaded=The file was successfully uploaded
FileWasNotUploaded=A file is selected for attachment but was not yet uploaded. Click on "Attach file" for this. FileWasNotUploaded=A file is selected for attachment but was not yet uploaded. Click on "Attach file" for this.
NbOfEntries=Nb of entries NbOfEntries=Nb of entries
GoToWikiHelpPage=Read online help (need Internet access) GoToWikiHelpPage=Read online help (Internet access needed)
GoToHelpPage=Read help GoToHelpPage=Read help
RecordSaved=Record saved RecordSaved=Record saved
RecordDeleted=Record deleted RecordDeleted=Record deleted
@ -94,12 +94,12 @@ ConnectedSince=Connected since
AuthenticationMode=Authentification mode AuthenticationMode=Authentification mode
RequestedUrl=Requested Url RequestedUrl=Requested Url
DatabaseTypeManager=Database type manager DatabaseTypeManager=Database type manager
RequestLastAccess=Request for last database access RequestLastAccess=Latest database access request
RequestLastAccessInError=Request for last database access in error RequestLastAccessInError=Latest database access request error
ReturnCodeLastAccessInError=Return code for last database access in error ReturnCodeLastAccessInError=Return code for latest database access request error
InformationLastAccessInError=Information for last database access in error InformationLastAccessInError=Information for latest database access request error
DolibarrHasDetectedError=Dolibarr has detected a technical error DolibarrHasDetectedError=Dolibarr has detected a technical error
InformationToHelpDiagnose=This is information that can help diagnostic InformationToHelpDiagnose=This information can be useful for diagnostic
MoreInformation=More information MoreInformation=More information
TechnicalInformation=Technical information TechnicalInformation=Technical information
TechnicalID=Technical ID TechnicalID=Technical ID
@ -142,7 +142,7 @@ Update=Update
AddActionToDo=Add event to do AddActionToDo=Add event to do
AddActionDone=Add event done AddActionDone=Add event done
Close=Close Close=Close
CloseBox=Remove box of your dashboard CloseBox=Remove box from your dashboard
Confirm=Confirm Confirm=Confirm
ConfirmSendCardByMail=Do you really want to send content of this card by mail to <b>%s</b> ? ConfirmSendCardByMail=Do you really want to send content of this card by mail to <b>%s</b> ?
Delete=Delete Delete=Delete
@ -158,6 +158,7 @@ Save=Save
SaveAs=Save As SaveAs=Save As
TestConnection=Test connection TestConnection=Test connection
ToClone=Clone ToClone=Clone
ConfirmCloneAction=Are you sure you want to clone this event ?
ConfirmClone=Choose data you want to clone : ConfirmClone=Choose data you want to clone :
NoCloneOptionsSpecified=No data to clone defined. NoCloneOptionsSpecified=No data to clone defined.
Of=of Of=of
@ -176,7 +177,6 @@ Upload=Send file
ToLink=Link ToLink=Link
Select=Select Select=Select
Choose=Choose Choose=Choose
ChooseLangage=Please choose your language
Resize=Resize Resize=Resize
Recenter=Recenter Recenter=Recenter
Author=Author Author=Author
@ -530,7 +530,7 @@ ReportName=Report name
ReportPeriod=Report period ReportPeriod=Report period
ReportDescription=Description ReportDescription=Description
Report=Report Report=Report
Keyword=Mot clé Keyword=Keyword
Legend=Legend Legend=Legend
FillTownFromZip=Fill city from zip FillTownFromZip=Fill city from zip
Fill=Fill Fill=Fill
@ -550,8 +550,8 @@ NbOfCustomers=Number of customers
NbOfLines=Number of lines NbOfLines=Number of lines
NbOfObjects=Number of objects NbOfObjects=Number of objects
NbOfReferers=Number of referrers NbOfReferers=Number of referrers
NbOfObjectReferers=Number of refering objects NbOfObjectReferers=Number of related items
Referers=Refering objects Referers=Related items
TotalQuantity=Total quantity TotalQuantity=Total quantity
DateFromTo=From %s to %s DateFromTo=From %s to %s
DateFrom=From %s DateFrom=From %s
@ -594,7 +594,7 @@ Priority=Priority
SendByMail=Send by EMail SendByMail=Send by EMail
MailSentBy=Email sent by MailSentBy=Email sent by
TextUsedInTheMessageBody=Email body TextUsedInTheMessageBody=Email body
SendAcknowledgementByMail=Send Ack. by email SendAcknowledgementByMail=Send confirmation email
EMail=E-mail EMail=E-mail
NoEMail=No email NoEMail=No email
NoMobilePhone=No mobile phone NoMobilePhone=No mobile phone
@ -746,7 +746,7 @@ Sincerely=Sincerely
DeleteLine=Delete line DeleteLine=Delete line
ConfirmDeleteLine=Are you sure you want to delete this line ? ConfirmDeleteLine=Are you sure you want to delete this line ?
NoPDFAvailableForDocGenAmongChecked=No PDF were available for the document generation among checked records NoPDFAvailableForDocGenAmongChecked=No PDF were available for the document generation among checked records
TooManyRecordForMassAction=Too many records selected for mass action. Such action are restriced to a list of %s records. TooManyRecordForMassAction=Too many records selected for mass action. The action is restricted to a list of %s records.
MassFilesArea=Area for files built by mass actions MassFilesArea=Area for files built by mass actions
HideTempMassFilesArea=Hide area of files built by mass actions HideTempMassFilesArea=Hide area of files built by mass actions
ShowTempMassFilesArea=Show area of files built by mass actions ShowTempMassFilesArea=Show area of files built by mass actions
@ -804,4 +804,4 @@ SearchIntoSupplierProposals=Supplier proposals
SearchIntoInterventions=Interventions SearchIntoInterventions=Interventions
SearchIntoContracts=Contracts SearchIntoContracts=Contracts
SearchIntoExpenseReports=Expense reports SearchIntoExpenseReports=Expense reports
SearchIntoCustomerShipments=Customer shipments SearchIntoCustomerShipments=Customer shipments

View File

@ -114,9 +114,9 @@ EnablePublicSubscriptionForm=Enable the public auto-subscription form
MemberPublicLinks=Public links/pages MemberPublicLinks=Public links/pages
ExportDataset_member_1=Members and subscriptions ExportDataset_member_1=Members and subscriptions
ImportDataset_member_1=Members ImportDataset_member_1=Members
LastMembers=Last %s members LastMembers=Latest %s members
LastMembersModified=Last %s modified members LastMembersModified=Latest %s modified members
LastSubscriptionsModified=Last %s modified subscriptions LastSubscriptionsModified=Latest %s modified subscriptions
AttributeName=Attribute name AttributeName=Attribute name
String=String String=String
Text=Text Text=Text
@ -204,4 +204,4 @@ MembersByRegion=This screen show you statistics on members by region.
VATToUseForSubscriptions=VAT rate to use for subscriptions VATToUseForSubscriptions=VAT rate to use for subscriptions
NoVatOnSubscription=No TVA for subscriptions NoVatOnSubscription=No TVA for subscriptions
MEMBER_PAYONLINE_SENDEMAIL=Email to use for email warning when Dolibarr receive a confirmation of a validated payment for a subscription (Example: paymentdone@example.com) MEMBER_PAYONLINE_SENDEMAIL=Email to use for email warning when Dolibarr receive a confirmation of a validated payment for a subscription (Example: paymentdone@example.com)
ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for subscription line into invoice: %s ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for subscription line into invoice: %s

View File

@ -0,0 +1,17 @@
# ADMIN
RecordSaved=Currency rate added
RecordDeleted=Currency rate deleted
ErrorAddRateFail=Error in added rate
ErrorAddCurrencyFail=Error in added currency
ErrorDeleteCurrencyFail=Error delete fail
multicurrency_syncronize_error=Error in synchronization
multicurrency_useOriginTx=Use the origin rate
CurrencyLayerAccount=CurrencyLayer API
CurrencyLayerAccount_help_to_synchronize=You sould create an account on their website to use this functionnality<br />Get your <b>API key</b><br />If you use a free account you can't change the <b>currency source</b> (USD by default)<br />But if your main currency isn't USD you can use the <b>alternate currency source</b> to force you main currency<br /><br />You are limited at 1000 synchronizations per month
multicurrency_appId=API key
multicurrency_appCurrencySource=Currency source
multicurrency_alternateCurrencySource= Alternate currency souce
CurrenciesUsed=Currencies used
CurrenciesUsed_help_to_add=Add the differents currencies and rates you need to use on you <b>proposals</b>, <b>orders</b>, etc.
Rate=Rate
rate=rate

View File

@ -87,11 +87,11 @@ NoDraftOrders=No draft orders
NoOrder=No order NoOrder=No order
NoSupplierOrder=No supplier order NoSupplierOrder=No supplier order
OtherOrders=Other orders OtherOrders=Other orders
LastOrders=Last %s customer orders LastOrders=Latest %s customer orders
LastCustomerOrders=Last %s customer orders LastCustomerOrders=Latest %s customer orders
LastSupplierOrders=Last %s supplier orders LastSupplierOrders=Latest %s supplier orders
LastModifiedOrders=Last %s modified orders LastModifiedOrders=Latest %s modified orders
LastClosedOrders=Last %s closed orders LastClosedOrders=Latest %s closed orders
AllOrders=All orders AllOrders=All orders
NbOfOrders=Number of orders NbOfOrders=Number of orders
OrdersStatistics=Order's statistics OrdersStatistics=Order's statistics

View File

@ -3,12 +3,12 @@ SecurityCode=Security code
Calendar=Calendar Calendar=Calendar
NumberingShort=N° NumberingShort=N°
Tools=Tools Tools=Tools
ToolsDesc=This area is dedicated to group miscellaneous tools not available into other menu entries.<br><br>Those tools can be reached from menu on the side. ToolsDesc=All miscellaneous tools not included in other menu entries are collected here.<br /><br />All the tools can be reached in the left menu.
Birthday=Birthday Birthday=Birthday
BirthdayDate=Birthday BirthdayDate=Birthday date
DateToBirth=Date of birth DateToBirth=Date of birth
BirthdayAlertOn= birthday alert active BirthdayAlertOn=birthday alert active
BirthdayAlertOff= birthday alert inactive BirthdayAlertOff=birthday alert inactive
Notify_FICHINTER_ADD_CONTACT=Added contact to Intervention Notify_FICHINTER_ADD_CONTACT=Added contact to Intervention
Notify_FICHINTER_VALIDATE=Intervention validated Notify_FICHINTER_VALIDATE=Intervention validated
Notify_FICHINTER_SENTBYMAIL=Intervention sent by mail Notify_FICHINTER_SENTBYMAIL=Intervention sent by mail
@ -69,8 +69,8 @@ PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find her
PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__ PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__
DemoDesc=Dolibarr is a compact ERP/CRM composed by several functional modules. A demo that includes all modules does not mean anything as this never occurs. So, several demo profiles are available. DemoDesc=Dolibarr is a compact ERP/CRM supporting several functional modules. A demo showcasing all modules makes no sense as this scenario never occurs. So, several demo profiles are available.
ChooseYourDemoProfil=Choose the demo profile that match your activity... ChooseYourDemoProfil=Choose the demo profile that best suits your needs...
DemoFundation=Manage members of a foundation DemoFundation=Manage members of a foundation
DemoFundation2=Manage members and bank account of a foundation DemoFundation2=Manage members and bank account of a foundation
DemoCompanyServiceOnly=Manage a freelance activity selling service only DemoCompanyServiceOnly=Manage a freelance activity selling service only
@ -84,22 +84,22 @@ ValidatedBy=Validated by %s
CanceledBy=Canceled by %s CanceledBy=Canceled by %s
ClosedBy=Closed by %s ClosedBy=Closed by %s
CreatedById=User id who created CreatedById=User id who created
ModifiedById=User id who made last change ModifiedById=User id who made latest change
ValidatedById=User id who validated ValidatedById=User id who validated
CanceledById=User id who canceled CanceledById=User id who canceled
ClosedById=User id who closed ClosedById=User id who closed
CreatedByLogin=User login who created CreatedByLogin=User login who created
ModifiedByLogin=User login who made last change ModifiedByLogin=User login who made latest change
ValidatedByLogin=User login who validated ValidatedByLogin=User login who validated
CanceledByLogin=User login who canceled CanceledByLogin=User login who canceled
ClosedByLogin=User login who closed ClosedByLogin=User login who closed
FileWasRemoved=File %s was removed FileWasRemoved=File %s was removed
DirWasRemoved=Directory %s was removed DirWasRemoved=Directory %s was removed
FeatureNotYetAvailableShort=Available in a next version FeatureNotYetAvailableShort=Available in a future version
FeatureNotYetAvailable=Feature not yet available in this version FeatureNotYetAvailable=Feature not yet available in the current version
FeatureExperimental=Experimental feature. Not stable in this version FeatureExperimental=Experimental feature. Not stable in the current version
FeatureDevelopment=Development feature. Not stable in this version FeatureDevelopment=Development feature. Not stable in the current version
FeaturesSupported=Features supported FeaturesSupported=Supported features
Width=Width Width=Width
Height=Height Height=Height
Depth=Depth Depth=Depth
@ -111,7 +111,7 @@ CalculatedWeight=Calculated weight
CalculatedVolume=Calculated volume CalculatedVolume=Calculated volume
Weight=Weight Weight=Weight
TotalWeight=Total weight TotalWeight=Total weight
WeightUnitton=tonnes WeightUnitton=tonne
WeightUnitkg=kg WeightUnitkg=kg
WeightUnitg=g WeightUnitg=g
WeightUnitmg=mg WeightUnitmg=mg
@ -147,27 +147,27 @@ SizeUnitinch=inch
SizeUnitfoot=foot SizeUnitfoot=foot
SizeUnitpoint=point SizeUnitpoint=point
BugTracker=Bug tracker BugTracker=Bug tracker
SendNewPasswordDesc=This form allows you to request a new password. It will be send to your email address.<br>Change will be effective only after clicking on confirmation link inside this email.<br>Check your email reader software. SendNewPasswordDesc=This form allows you to request a new password. It will be sent to your email address.<br />Change will become effective once you click on the confirmation link in the email.<br />Check your inbox.
BackToLoginPage=Back to login page BackToLoginPage=Back to login page
AuthenticationDoesNotAllowSendNewPassword=Authentication mode is <b>%s</b>.<br>In this mode, Dolibarr can't know nor change your password.<br>Contact your system administrator if you want to change your password. AuthenticationDoesNotAllowSendNewPassword=Authentication mode is <b>%s</b>.<br />In this mode, Dolibarr can't know nor change your password.<br />Contact your system administrator if you want to change your password.
EnableGDLibraryDesc=Install or enable GD library with your PHP for use this option. EnableGDLibraryDesc=Install or enable GD library on your PHP installation to use this option.
EnablePhpAVModuleDesc=You need to install a module compatible with your anti-virus. (Clamav : php4-clamavlib ou php5-clamavlib) EnablePhpAVModuleDesc=You need to install a module compatible with your anti-virus. (Clamav : php4-clamavlib ou php5-clamavlib)
ProfIdShortDesc=<b>Prof Id %s</b> is an information depending on third party country.<br>For example, for country <b>%s</b>, it's code <b>%s</b>. ProfIdShortDesc=<b>Prof Id %s</b> is an information depending on third party country.<br>For example, for country <b>%s</b>, it's code <b>%s</b>.
DolibarrDemo=Dolibarr ERP/CRM demo DolibarrDemo=Dolibarr ERP/CRM demo
StatsByNumberOfUnits=Statistics in number of products/services units StatsByNumberOfUnits=Statistics in number of products/services units
StatsByNumberOfEntities=Statistics in number of referring entities StatsByNumberOfEntities=Statistics in number of referring entities
NumberOfProposals=Number of proposals on last 12 month NumberOfProposals=Number of proposals in past 12 months
NumberOfCustomerOrders=Number of customer orders on last 12 month NumberOfCustomerOrders=Number of customer orders in past 12 months
NumberOfCustomerInvoices=Number of customer invoices on last 12 month NumberOfCustomerInvoices=Number of customer invoices in past 12 months
NumberOfSupplierProposals=Number of supplier proposals on last 12 month NumberOfSupplierProposals=Number of supplier proposals in past 12 months
NumberOfSupplierOrders=Number of supplier orders on last 12 month NumberOfSupplierOrders=Number of supplier orders in past 12 months
NumberOfSupplierInvoices=Number of supplier invoices on last 12 month NumberOfSupplierInvoices=Number of supplier invoices in past 12 months
NumberOfUnitsProposals=Number of units on proposals on last 12 month NumberOfUnitsProposals=Number of units on proposals in past 12 months
NumberOfUnitsCustomerOrders=Number of units on customer orders on last 12 month NumberOfUnitsCustomerOrders=Number of units on customer orders in past 12 months
NumberOfUnitsCustomerInvoices=Number of units on customer invoices on last 12 month NumberOfUnitsCustomerInvoices=Number of units on customer invoices in past 12 months
NumberOfUnitsSupplierProposals=Number of units on supplier proposals on last 12 month NumberOfUnitsSupplierProposals=Number of units on supplier proposals in past 12 months
NumberOfUnitsSupplierOrders=Number of units on supplier orders on last 12 month NumberOfUnitsSupplierOrders=Number of units on supplier orders in past 12 months
NumberOfUnitsSupplierInvoices=Number of units on supplier invoices on last 12 month NumberOfUnitsSupplierInvoices=Number of units on supplier invoices in past 12 months
EMailTextInterventionAddedContact=A newintervention %s has been assigned to you. EMailTextInterventionAddedContact=A newintervention %s has been assigned to you.
EMailTextInterventionValidated=The intervention %s has been validated. EMailTextInterventionValidated=The intervention %s has been validated.
EMailTextInvoiceValidated=The invoice %s has been validated. EMailTextInvoiceValidated=The invoice %s has been validated.

View File

@ -36,12 +36,12 @@ ServicesOnSell=Services for sale or for purchase
ServicesNotOnSell=Services not for sale ServicesNotOnSell=Services not for sale
ServicesOnSellAndOnBuy=Services for sale and for purchase ServicesOnSellAndOnBuy=Services for sale and for purchase
InternalRef=Internal reference InternalRef=Internal reference
LastRecorded=Last products/services on sell recorded LastRecorded=Latest recorded products/services on sell
LastRecordedProductsAndServices=Last %s recorded products/services LastRecordedProductsAndServices=Latest %s recorded products/services
LastModifiedProductsAndServices=Last %s modified products/services LastModifiedProductsAndServices=Latest %s modified products/services
LastRecordedProducts=Last %s products recorded LastRecordedProducts=Latest %s recorded products
LastRecordedServices=Last %s services recorded LastRecordedServices=Latest %s recorded services
LastProducts=Last products LastProducts=Latest products
CardProduct0=Product card CardProduct0=Product card
CardProduct1=Service card CardProduct1=Service card
CardContract=Contract card CardContract=Contract card

View File

@ -8,7 +8,7 @@ Projects=Projects
ProjectsArea=Projects Area ProjectsArea=Projects Area
ProjectStatus=Project status ProjectStatus=Project status
SharedProject=Everybody SharedProject=Everybody
PrivateProject=Contacts of project PrivateProject=Project contacts
MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type).
ProjectsPublicDesc=This view presents all projects you are allowed to read. ProjectsPublicDesc=This view presents all projects you are allowed to read.
ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read.
@ -28,11 +28,11 @@ DeleteATask=Delete a task
ConfirmDeleteAProject=Are you sure you want to delete this project ? ConfirmDeleteAProject=Are you sure you want to delete this project ?
ConfirmDeleteATask=Are you sure you want to delete this task ? ConfirmDeleteATask=Are you sure you want to delete this task ?
OfficerProject=Officer project OfficerProject=Officer project
LastProjects=Last %s projects LastProjects=Latest %s projects
AllProjects=All projects AllProjects=All projects
OpenedProjects=Opened projects OpenedProjects=Open projects
OpenedTasks=Opened tasks OpenedTasks=Open tasks
OpportunitiesStatusForOpenedProjects=Opportunities amount of opened projects by status OpportunitiesStatusForOpenedProjects=Opportunities amount of open projects by status
OpportunitiesStatusForProjects=Opportunities amount of projects by status OpportunitiesStatusForProjects=Opportunities amount of projects by status
ProjectsList=List of projects ProjectsList=List of projects
ShowProject=Show project ShowProject=Show project
@ -159,14 +159,14 @@ DocumentModelBaleine=Project report template for tasks
PlannedWorkload=Planned workload PlannedWorkload=Planned workload
PlannedWorkloadShort=Workload PlannedWorkloadShort=Workload
WorkloadOccupation=Workload assignation WorkloadOccupation=Workload assignation
ProjectReferers=Refering objects ProjectReferers=Related items
SearchAProject=Search a project SearchAProject=Search a project
SearchATask=Search a task SearchATask=Search a task
ProjectMustBeValidatedFirst=Project must be validated first ProjectMustBeValidatedFirst=Project must be validated first
ProjectDraft=Draft projects ProjectDraft=Draft projects
FirstAddRessourceToAllocateTime=Associate a resource to allocate time FirstAddRessourceToAllocateTime=Associate a resource to allocate time
InputPerDay=Input per day InputPerDay=Input per day
InputPerWeek=Input per week InputPerWeek=Input per week
InputPerAction=Input per action InputPerAction=Input per action
TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s
ProjectsWithThisUserAsContact=Projects with this user as contact ProjectsWithThisUserAsContact=Projects with this user as contact
@ -182,14 +182,14 @@ ManageOpportunitiesStatus=Use projects to follow leads/opportinuties
ProjectNbProjectByMonth=Nb of created projects by month ProjectNbProjectByMonth=Nb of created projects by month
ProjectOppAmountOfProjectsByMonth=Amount of opportunities by month ProjectOppAmountOfProjectsByMonth=Amount of opportunities by month
ProjectWeightedOppAmountOfProjectsByMonth=Weighted amount of opportunities by month ProjectWeightedOppAmountOfProjectsByMonth=Weighted amount of opportunities by month
ProjectOpenedProjectByOppStatus=Opened project/lead by opportunity status ProjectOpenedProjectByOppStatus=Open project/lead by opportunity status
ProjectsStatistics=Statistics on projects/leads ProjectsStatistics=Statistics on projects/leads
TaskAssignedToEnterTime=Task assigned. Entering time on this task should be possible. TaskAssignedToEnterTime=Task assigned. Entering time on this task should be possible.
IdTaskTime=Id task time IdTaskTime=Id task time
YouCanCompleteRef=If you want to complete the ref with some information (to use it as search filters), it is recommanded to add a - character to separate it, so the automatic numbering will still work correctly for next projects. For example %s-ABC. You may also prefer to add search keys into label. YouCanCompleteRef=If you want to complete the ref with some information (to use it as search filters), it is recommanded to add a - character to separate it, so the automatic numbering will still work correctly for next projects. For example %s-ABC. You may also prefer to add search keys into label.
OpenedProjectsByThirdparties=Opened projects by thirdparties OpenedProjectsByThirdparties=Open projects by thirdparties
OnlyOpportunitiesShort=Only opportunities OnlyOpportunitiesShort=Only opportunities
OpenedOpportunitiesShort=Opened opportunities OpenedOpportunitiesShort=Open opportunities
NotAnOpportunityShort=Not an opportunity NotAnOpportunityShort=Not an opportunity
OpportunityTotalAmount=Opportunities total amount OpportunityTotalAmount=Opportunities total amount
OpportunityPonderatedAmount=Opportunities weighted amount OpportunityPonderatedAmount=Opportunities weighted amount
@ -201,4 +201,4 @@ OppStatusNEGO=Negociation
OppStatusPENDING=Pending OppStatusPENDING=Pending
OppStatusWON=Won OppStatusWON=Won
OppStatusLOST=Lost OppStatusLOST=Lost
Budget=Budget Budget=Budget

View File

@ -19,11 +19,11 @@ ValidateProp=Validate commercial proposal
AddProp=Create proposal AddProp=Create proposal
ConfirmDeleteProp=Are you sure you want to delete this commercial proposal ? ConfirmDeleteProp=Are you sure you want to delete this commercial proposal ?
ConfirmValidateProp=Are you sure you want to validate this commercial proposal under name <b>%s</b> ? ConfirmValidateProp=Are you sure you want to validate this commercial proposal under name <b>%s</b> ?
LastPropals=Last %s proposals LastPropals=Latest %s proposals
LastClosedProposals=Last %s closed proposals LastClosedProposals=Latest %s closed proposals
LastModifiedProposals=Last %s modified proposals LastModifiedProposals=Latest %s modified proposals
AllPropals=All proposals AllPropals=All proposals
LastProposals=Last proposals LastProposals=Latest proposals
SearchAProposal=Search a proposal SearchAProposal=Search a proposal
NoProposal=No proposal NoProposal=No proposal
ProposalsStatistics=Commercial proposal's statistics ProposalsStatistics=Commercial proposal's statistics
@ -102,4 +102,4 @@ DefaultModelPropalCreate=Default model creation
DefaultModelPropalToBill=Default template when closing a business proposal (to be invoiced) DefaultModelPropalToBill=Default template when closing a business proposal (to be invoiced)
DefaultModelPropalClosed=Default template when closing a business proposal (unbilled) DefaultModelPropalClosed=Default template when closing a business proposal (unbilled)
ProposalCustomerSignature=Written acceptance, company stamp, date and signature ProposalCustomerSignature=Written acceptance, company stamp, date and signature
ProposalsStatisticsSuppliers=Supplier proposals statistics ProposalsStatisticsSuppliers=Supplier proposals statistics

View File

@ -11,7 +11,7 @@ SendingsArea=Shipments area
ListOfSendings=List of shipments ListOfSendings=List of shipments
SendingMethod=Shipping method SendingMethod=Shipping method
SendingReceipt=Shipping receipt SendingReceipt=Shipping receipt
LastSendings=Last %s shipments LastSendings=Latest %s shipments
SearchASending=Search for shipment SearchASending=Search for shipment
StatisticsOfSendings=Statistics for shipments StatisticsOfSendings=Statistics for shipments
NbOfSendings=Number of shipments NbOfSendings=Number of shipments

View File

@ -116,7 +116,7 @@ WarehouseForStockDecrease=The warehouse <b>%s</b> will be used for stock decreas
WarehouseForStockIncrease=The warehouse <b>%s</b> will be used for stock increase WarehouseForStockIncrease=The warehouse <b>%s</b> will be used for stock increase
ForThisWarehouse=For this warehouse ForThisWarehouse=For this warehouse
ReplenishmentStatusDesc=This is a list of all products with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked). Using the checkbox, you can create supplier orders to fill the difference. ReplenishmentStatusDesc=This is a list of all products with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked). Using the checkbox, you can create supplier orders to fill the difference.
ReplenishmentOrdersDesc=This is a list of all opened supplier orders including predefined products. Only opened orders with predefined products, so orders that may affect stocks, are visible here. ReplenishmentOrdersDesc=This is a list of all open supplier orders including predefined products. Only open orders with predefined products, so orders that may affect stocks, are visible here.
Replenishments=Replenishments Replenishments=Replenishments
NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s)
NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s)
@ -143,4 +143,4 @@ ThisSerialAlreadyExistWithDifferentDate=This lot/serial number (<strong>%s</stro
OpenAll=Open for all actions OpenAll=Open for all actions
OpenInternal=Open for internal actions OpenInternal=Open for internal actions
OpenShipping=Open for shippings OpenShipping=Open for shippings
OpenDispatch=Open for dispatch OpenDispatch=Open for dispatch

View File

@ -7,7 +7,7 @@ CommRequests=Price requests
SearchRequest=Find a request SearchRequest=Find a request
DraftRequests=Draft requests DraftRequests=Draft requests
SupplierProposalsDraft=Draft supplier proposals SupplierProposalsDraft=Draft supplier proposals
LastModifiedRequests=Last %s modified price requests LastModifiedRequests=Latest %s modified price requests
RequestsOpened=Open price requests RequestsOpened=Open price requests
SupplierProposalArea=Supplier proposals area SupplierProposalArea=Supplier proposals area
SupplierProposalShort=Supplier proposal SupplierProposalShort=Supplier proposal
@ -58,4 +58,4 @@ DefaultModelSupplierProposalToBill=Default template when closing a price request
DefaultModelSupplierProposalClosed=Default template when closing a price request (refused) DefaultModelSupplierProposalClosed=Default template when closing a price request (refused)
ListOfSupplierProposal=List of supplier proposal requests ListOfSupplierProposal=List of supplier proposal requests
SupplierProposalsToClose=Supplier proposals to close SupplierProposalsToClose=Supplier proposals to close
SupplierProposalsToProcess=Supplier proposals to process SupplierProposalsToProcess=Supplier proposals to process

View File

@ -48,7 +48,7 @@ AdministratorDescEntity=Administrator (for its company)
DefaultRights=Default permissions DefaultRights=Default permissions
DefaultRightsDesc=Define here <u>default</u> permissions that are automatically granted to a <u>new created</u> user (Go on user card to change permission of an existing user). DefaultRightsDesc=Define here <u>default</u> permissions that are automatically granted to a <u>new created</u> user (Go on user card to change permission of an existing user).
DolibarrUsers=Dolibarr users DolibarrUsers=Dolibarr users
LastName=Name LastName=Last Name
FirstName=First name FirstName=First name
ListOfGroups=List of groups ListOfGroups=List of groups
NewGroup=New group NewGroup=New group
@ -58,8 +58,8 @@ PasswordChangedAndSentTo=Password changed and sent to <b>%s</b>.
PasswordChangeRequestSent=Request to change password for <b>%s</b> sent to <b>%s</b>. PasswordChangeRequestSent=Request to change password for <b>%s</b> sent to <b>%s</b>.
MenuUsersAndGroups=Users & Groups MenuUsersAndGroups=Users & Groups
MenuMyUserCard=My user card MenuMyUserCard=My user card
LastGroupsCreated=Last %s created groups LastGroupsCreated=Latest %s created groups
LastUsersCreated=Last %s users created LastUsersCreated=Latest %s users created
ShowGroup=Show group ShowGroup=Show group
ShowUser=Show user ShowUser=Show user
NonAffectedUsers=Non assigned users NonAffectedUsers=Non assigned users
@ -122,4 +122,4 @@ LoginUsingOpenID=Use OpenID to login
WeeklyHours=Weekly hours WeeklyHours=Weekly hours
ColorUser=Color of the user ColorUser=Color of the user
DisabledInMonoUserMode=Disabled in maintenance mode DisabledInMonoUserMode=Disabled in maintenance mode
UserAccountancyCode=User accountancy code UserAccountancyCode=User accountancy code

View File

@ -11,8 +11,8 @@ Withdrawal=Withdrawal
WithdrawalsReceipts=Withdrawal receipts WithdrawalsReceipts=Withdrawal receipts
WithdrawalReceipt=Withdrawal receipt WithdrawalReceipt=Withdrawal receipt
WithdrawalReceiptShort=Receipt WithdrawalReceiptShort=Receipt
LastWithdrawalReceipts=Last %s withdrawal receipts LastWithdrawalReceipts=Latest %s withdrawal receipts
WithdrawedBills=Withdrawn invoices WithdrawedBills=Withdrawal invoices
WithdrawalsLines=Withdrawal lines WithdrawalsLines=Withdrawal lines
RequestStandingOrderToTreat=Request for standing orders to process RequestStandingOrderToTreat=Request for standing orders to process
RequestStandingOrderTreated=Request for standing orders processed RequestStandingOrderTreated=Request for standing orders processed
@ -29,7 +29,7 @@ ResponsibleUser=Responsible user
WithdrawalsSetup=Withdrawal setup WithdrawalsSetup=Withdrawal setup
WithdrawStatistics=Withdraw's statistics WithdrawStatistics=Withdraw's statistics
WithdrawRejectStatistics=Withdraw reject's statistics WithdrawRejectStatistics=Withdraw reject's statistics
LastWithdrawalReceipt=Last %s withdrawing receipts LastWithdrawalReceipt=Latest %s withdrawal receipts
MakeWithdrawRequest=Make a withdraw request MakeWithdrawRequest=Make a withdraw request
ThirdPartyBankCode=Third party bank code ThirdPartyBankCode=Third party bank code
ThirdPartyDeskCode=Third party desk code ThirdPartyDeskCode=Third party desk code

View File

@ -107,12 +107,19 @@ class MultiCurrency extends CommonObject
*/ */
public function create(User $user, $trigger = true) public function create(User $user, $trigger = true)
{ {
global $conf; global $conf,$langs;
dol_syslog('Currency::create', LOG_DEBUG); dol_syslog('Currency::create', LOG_DEBUG);
$error = 0; $error = 0;
if (self::checkCodeAlreadyExists($this->code))
{
$error++;
$this->errors[] = $langs->trans('multicurrency_code_already_added');
return -1;
}
if (empty($this->entity) || $this->entity <= 0) $this->entity = $conf->entity; if (empty($this->entity) || $this->entity <= 0) $this->entity = $conf->entity;
$now=date('Y-m-d H:i:s'); $now=date('Y-m-d H:i:s');
@ -505,9 +512,10 @@ class MultiCurrency extends CommonObject
{ {
$sql = 'SELECT m.rowid, mc.rate FROM '.MAIN_DB_PREFIX.'multicurrency m'; $sql = 'SELECT m.rowid, mc.rate FROM '.MAIN_DB_PREFIX.'multicurrency m';
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'multicurrency_rate mc ON (m.rowid = mc.fk_multicurrency)'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'multicurrency_rate mc ON (m.rowid = mc.fk_multicurrency)';
// FIXME Is this comptible with SQL ? $sql.= ' WHERE m.code = "'.$db->escape($code).'"';
$sql.= ' WHERE m.code = "'.$db->escape($code).'" AND mc.date_sync >= ALL (SELECT date_sync FROM '.MAIN_DB_PREFIX.'multicurrency_rate)'; $sql.= " AND m.entity IN (".getEntity('multicurrency', 1).")";
$sql.= " AND m.entity IN '".getEntity('multicurrency', 1)."'"; $sql.= ' ORDER BY mc.date_sync DESC LIMIT 1';
$resql = $db->query($sql); $resql = $db->query($sql);
if ($resql && $obj = $db->fetch_object($resql)) return array($obj->rowid, $obj->rate); if ($resql && $obj = $db->fetch_object($resql)) return array($obj->rowid, $obj->rate);
else return array(0, 1); else return array(0, 1);
@ -616,6 +624,21 @@ class MultiCurrency extends CommonObject
} }
} }
} }
/**
* Check in database if the current code already exists
*
* @param string $code current code to search
* @return true if exists, false if not exists
*/
public static function checkCodeAlreadyExists($code)
{
global $db;
$currency = new MultiCurrency($db);
if ($currency->fetch('', $code) > 0) return true;
else return false;
}
} }
/** /**

View File

@ -1121,7 +1121,7 @@ else
else if ($object->id > 0) else if ($object->id > 0)
{ {
// Fiche en mode edition // Fiche en mode edition
if ($action == 'edit' && ($user->rights->produit->creer || $user->rights->service->creer)) if ($action == 'edit' && ((($object->type == Product::TYPE_PRODUCT && $user->rights->produit->creer) || ($object->type == Product::TYPE_SERVICE && $user->rights->service->creer))))
{ {
//WYSIWYG Editor //WYSIWYG Editor
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
@ -1733,7 +1733,8 @@ if (empty($reshook))
{ {
if ($action == '' || $action == 'view') if ($action == '' || $action == 'view')
{ {
if ($user->rights->produit->creer || $user->rights->service->creer) if (($object->type == Product::TYPE_PRODUCT && $user->rights->produit->creer ) ||
($object->type == Product::TYPE_SERVICE && $user->rights->service->creer))
{ {
if (! isset($object->no_button_edit) || $object->no_button_edit <> 1) print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit&amp;id='.$object->id.'">'.$langs->trans("Modify").'</a></div>'; if (! isset($object->no_button_edit) || $object->no_button_edit <> 1) print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit&amp;id='.$object->id.'">'.$langs->trans("Modify").'</a></div>';

View File

@ -2666,7 +2666,7 @@ class Product extends CommonObject
$sql.= " WHERE fk_soc = ".$id_fourn; $sql.= " WHERE fk_soc = ".$id_fourn;
$sql.= " AND ref_fourn = '".$this->db->escape($ref_fourn)."'"; $sql.= " AND ref_fourn = '".$this->db->escape($ref_fourn)."'";
$sql.= " AND fk_product != ".$this->id; $sql.= " AND fk_product != ".$this->id;
$sql.= " AND entity = ".$conf->entity; $sql.= " AND entity IN (".getEntity('productprice', 1).")";
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
@ -2689,7 +2689,7 @@ class Product extends CommonObject
else $sql.= " AND (ref_fourn = '' OR ref_fourn IS NULL)"; else $sql.= " AND (ref_fourn = '' OR ref_fourn IS NULL)";
$sql.= " AND quantity = '".$quantity."'"; $sql.= " AND quantity = '".$quantity."'";
$sql.= " AND fk_product = ".$this->id; $sql.= " AND fk_product = ".$this->id;
$sql.= " AND entity = ".$conf->entity; $sql.= " AND entity IN (".getEntity('productprice', 1).")";
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)

View File

@ -155,7 +155,7 @@ if (empty($reshook))
{ {
$error++; $error++;
$langs->load("errors"); $langs->load("errors");
setEventMessages($langs->trans("ErrorFieldMustBeANumeric",'eeee'), null, 'errors'); setEventMessages($langs->trans("ErrorFieldMustBeANumeric",$langs->transnoentities("VATRateForSupplierProduct")), null, 'errors');
} }
if (empty($quantity)) if (empty($quantity))
{ {

Some files were not shown because too many files have changed in this diff Show More