浏览代码

Uniformize code

Laurent Destailleur 8 年之前
父节点
当前提交
a54a610a05

+ 155 - 91
htdocs/expensereport/card.php

@@ -1432,71 +1432,120 @@ else
 
 				if ($action == 'save')
 				{
-					$ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("SaveTrip"),$langs->trans("ConfirmSaveTrip"),"confirm_validate","","",1);
-					if ($ret == 'html') print '<br>';
+					$formconfirm=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("SaveTrip"),$langs->trans("ConfirmSaveTrip"),"confirm_validate","","",1);
 				}
 
 				if ($action == 'save_from_refuse')
 				{
-					$ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("SaveTrip"),$langs->trans("ConfirmSaveTrip"),"confirm_save_from_refuse","","",1);
-					if ($ret == 'html') print '<br>';
+					$formconfirm=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("SaveTrip"),$langs->trans("ConfirmSaveTrip"),"confirm_save_from_refuse","","",1);
 				}
 
 				if ($action == 'delete')
 				{
-					$ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("DeleteTrip"),$langs->trans("ConfirmDeleteTrip"),"confirm_delete","","",1);
-					if ($ret == 'html') print '<br>';
+					$formconfirm=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("DeleteTrip"),$langs->trans("ConfirmDeleteTrip"),"confirm_delete","","",1);
 				}
 
 				if ($action == 'validate')
 				{
-					$ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("ValideTrip"),$langs->trans("ConfirmValideTrip"),"confirm_approve","","",1);
-					if ($ret == 'html') print '<br>';
+					$formconfirm=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("ValideTrip"),$langs->trans("ConfirmValideTrip"),"confirm_approve","","",1);
 				}
 
 				if ($action == 'paid')
 				{
-					$ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("PaidTrip"),$langs->trans("ConfirmPaidTrip"),"confirm_paid","","",1);
-					if ($ret == 'html') print '<br>';
+					$formconfirm=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("PaidTrip"),$langs->trans("ConfirmPaidTrip"),"confirm_paid","","",1);
 				}
 
 				if ($action == 'cancel')
 				{
 					$array_input = array('text'=>$langs->trans("ConfirmCancelTrip"), array('type'=>"text",'label'=>$langs->trans("Comment"),'name'=>"detail_cancel",'size'=>"50",'value'=>""));
-					$ret=$form->form_confirm($_SEVER["PHP_SELF"]."?id=".$id,$langs->trans("Cancel"),"","confirm_cancel",$array_input,"",1);
-					if ($ret == 'html') print '<br>';
+					$formconfirm=$form->form_confirm($_SEVER["PHP_SELF"]."?id=".$id,$langs->trans("Cancel"),"","confirm_cancel",$array_input,"",1);
 				}
 
-				if ($action == 'brouillonner'):
-				$ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("BrouillonnerTrip"),$langs->trans("ConfirmBrouillonnerTrip"),"confirm_brouillonner","","",1);
-				if ($ret == 'html') print '<br>';
-				endif;
+				if ($action == 'brouillonner')
+				{
+				    $formconfirm=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("BrouillonnerTrip"),$langs->trans("ConfirmBrouillonnerTrip"),"confirm_brouillonner","","",1);
+				}
 
 				if ($action == 'refuse')		// Deny
 				{
 					$array_input = array('text'=>$langs->trans("ConfirmRefuseTrip"), array('type'=>"text",'label'=>$langs->trans("Comment"),'name'=>"detail_refuse",'size'=>"50",'value'=>""));
-					$ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("Deny"),'',"confirm_refuse",$array_input,"yes",1);
-					if ($ret == 'html') print '<br>';
+					$formconfirm=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("Deny"),'',"confirm_refuse",$array_input,"yes",1);
 				}
 
 				if ($action == 'delete_line')
 				{
-					$ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id."&rowid=".GETPOST('rowid'),$langs->trans("DeleteLine"),$langs->trans("ConfirmDeleteLine"),"confirm_delete_line",'','yes',1);
-					if ($ret == 'html') print '<br>';
+					$formconfirm=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id."&rowid=".GETPOST('rowid'),$langs->trans("DeleteLine"),$langs->trans("ConfirmDeleteLine"),"confirm_delete_line",'','yes',1);
 				}
 
-				print '<table class="border centpercent">';
-
+				// Print form confirm
+				print $formconfirm;
+				
+				
+				// Expense report card
+				
 				$linkback = '<a href="'.DOL_URL_ROOT.'/expensereport/list.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
+				
+				
+				$morehtmlref='<div class="refidno">';
+				/*
+				// Ref customer
+				$morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, $user->rights->commande->creer, 'string', '', 0, 1);
+				$morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, $user->rights->commande->creer, 'string', '', null, null, '', 1);
+				// Thirdparty
+				$morehtmlref.='<br>'.$langs->trans('ThirdParty') . ' : ' . $soc->getNomUrl(1);
+				// Project
+				if (! empty($conf->projet->enabled))
+				{
+				    $langs->load("projects");
+				    $morehtmlref.='<br>'.$langs->trans('Project') . ' ';
+				    if ($user->rights->commande->creer)
+				    {
+				        if ($action != 'classify')
+				            $morehtmlref.='<a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
+				            if ($action == 'classify') {
+				                //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
+				                $morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">';
+				                $morehtmlref.='<input type="hidden" name="action" value="classin">';
+				                $morehtmlref.='<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
+				                $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1);
+				                $morehtmlref.='<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
+				                $morehtmlref.='</form>';
+				            } else {
+				                $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1);
+				            }
+				    } else {
+				        if (! empty($object->fk_project)) {
+				            $proj = new Project($db);
+				            $proj->fetch($object->fk_project);
+				            $morehtmlref.='<a href="'.DOL_URL_ROOT.'/projet/card.php?id=' . $object->fk_project . '" title="' . $langs->trans('ShowProject') . '">';
+				            $morehtmlref.=$proj->ref;
+				            $morehtmlref.='</a>';
+				        } else {
+				            $morehtmlref.='';
+				        }
+				    }
+				}*/
+				$morehtmlref.='</div>';
+				
+				
+				dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
+				
+				
+				print '<div class="fichecenter">';
+				print '<div class="fichehalfleft">';
+				print '<div class="underbanner clearboth"></div>';
+				
+				print '<table class="border centpercent">';
 
             	// Ref
+            	/*
             	print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td colspan="2">';
             	print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', '');
-            	print '</td></tr>';
+            	print '</td></tr>';*/
 
 				print '<tr>';
-				print '<td>'.$langs->trans("Period").'</td>';
-				print '<td colspan="2">';
+				print '<td class="titlefield">'.$langs->trans("Period").'</td>';
+				print '<td>';
 				print get_date_range($object->date_debut,$object->date_fin,'',$langs,0);
 				print '</td>';
 				print '</tr>';
@@ -1504,22 +1553,24 @@ else
 				{
 					print '<tr>';
 					print '<td>'.$langs->trans("ModePaiement").'</td>';
-					print '<td colspan="2">'.$object->libelle_paiement.'</td>';
+					print '<td>'.$object->libelle_paiement.'</td>';
 					print '</tr>';
 				}
 				// Status
+				/*
 				print '<tr>';
 				print '<td>'.$langs->trans("Statut").'</td>';
 				print '<td colspan="2">'.$object->getLibStatut(4).'</td>';
 				print '</tr>';
+				*/
 
 				print '<tr>';
 				print '<td>'.$langs->trans("NotePublic").'</td>';
-				print '<td colspan="2">'.$object->note_public.'</td>';
+				print '<td>'.$object->note_public.'</td>';
 				print '</tr>';
 				print '<tr>';
 				print '<td>'.$langs->trans("NotePrivate").'</td>';
-				print '<td colspan="2">'.$object->note_private.'</td>';
+				print '<td>'.$object->note_private.'</td>';
 				print '</tr>';
 				// Amount
 				print '<tr>';
@@ -1531,75 +1582,14 @@ else
 				else $rowspan+=2;
 				if ($object->fk_statut==99 || !empty($object->detail_refuse)) $rowspan+=2;
 				if($object->fk_statut==6) $rowspan+=2;
-
-				print '<td rowspan="'.$rowspan.'" valign="top">';
-				
-				// List of payments
-				$sql = "SELECT p.rowid, p.num_payment, p.datep as dp, p.amount,";
-				$sql.= "c.code as type_code,c.libelle as payment_type";
-				$sql.= " FROM ".MAIN_DB_PREFIX."payment_expensereport as p";
-				$sql.= ", ".MAIN_DB_PREFIX."c_paiement as c ";
-				$sql.= ", ".MAIN_DB_PREFIX."expensereport as e";
-				$sql.= " WHERE e.rowid = '".$id."'";
-				$sql.= " AND p.fk_expensereport = e.rowid";
-				$sql.= " AND e.entity = ".$conf->entity;
-				$sql.= " AND p.fk_typepayment = c.id";
-				$sql.= " ORDER BY dp";
-
-				$resql = $db->query($sql);
-				if ($resql)
-				{
-					$num = $db->num_rows($resql);
-					$i = 0; $total = 0;
-					print '<table class="nobordernopadding paymenttable" width="100%">';
-					print '<tr class="liste_titre">';
-					print '<td>'.$langs->trans("RefPayment").'</td>';
-					print '<td>'.$langs->trans("Date").'</td>';
-					print '<td>'.$langs->trans("Type").'</td>';
-					print '<td align="right">'.$langs->trans("Amount").'</td>';
-					print '<td>&nbsp;</td>';
-					print '</tr>';
-
-					$var=True;
-					while ($i < $num)
-					{
-						$objp = $db->fetch_object($resql);
-						$var=!$var;
-						print "<tr ".$bc[$var]."><td>";
-						print '<a href="'.DOL_URL_ROOT.'/expensereport/payment/card.php?id='.$objp->rowid.'">'.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.'</a></td>';
-						print '<td>'.dol_print_date($db->jdate($objp->dp),'day')."</td>\n";
-							$labeltype=$langs->trans("PaymentType".$objp->type_code)!=("PaymentType".$objp->type_code)?$langs->trans("PaymentType".$objp->type_code):$objp->fk_typepayment;
-						print "<td>".$labeltype.' '.$objp->num_payment."</td>\n";
-						print '<td align="right">'.price($objp->amount)."</td><td>&nbsp;".$langs->trans("Currency".$conf->currency)."</td>\n";
-						print "</tr>";
-						$totalpaid += $objp->amount;
-						$i++;
-					}
-
-					if ($object->paid == 0)
-					{
-						print "<tr><td colspan=\"2\" align=\"right\">".$langs->trans("AlreadyPaid")." :</td><td align=\"right\"><b>".price($totalpaid)."</b></td><td>&nbsp;".$langs->trans("Currency".$conf->currency)."</td></tr>\n";
-						print "<tr><td colspan=\"2\" align=\"right\">".$langs->trans("AmountExpected")." :</td><td align=\"right\" bgcolor=\"#d0d0d0\">".price($object->total_ttc)."</td><td bgcolor=\"#d0d0d0\">&nbsp;".$langs->trans("Currency".$conf->currency)."</td></tr>\n";
-
-						$remaintopay = $object->total_ttc - $totalpaid;
-
-						print "<tr><td colspan=\"2\" align=\"right\">".$langs->trans("RemainderToPay")." :</td>";
-						print "<td align=\"right\" bgcolor=\"#f0f0f0\"><b>".price($remaintopay)."</b></td><td bgcolor=\"#f0f0f0\">&nbsp;".$langs->trans("Currency".$conf->currency)."</td></tr>\n";
-					}
-					print "</table>";
-					$db->free($resql);
-				}
-				else
-				{
-					dol_print_error($db);
-				}
 				print "</td>";
-
 				print '</tr>';
+				
 				print '<tr>';
 				print '<td>'.$langs->trans("AmountVAT").'</td>';
 				print '<td>'.price($object->total_tva).'</td>';
 				print '</tr>';
+				
 				print '<tr>';
 				print '<td>'.$langs->trans("AmountTTC").'</td>';
 				print '<td>'.price($object->total_ttc).'</td>';
@@ -1658,6 +1648,7 @@ else
 						print $userfee->getNomUrl(-1);
 					}
 					print '</td></tr>';
+					
 					print '<tr>';
 					print '<td>'.$langs->trans("MOTIF_CANCEL").'</td>';
 					print '<td>'.$object->detail_cancel.'</td></tr>';
@@ -1679,6 +1670,7 @@ else
 						print $userapp->getNomUrl(-1);
 					}
 					print '</td></tr>';
+					
 					print '<tr>';
 					print '<td>'.$langs->trans("DateApprove").'</td>';
 					print '<td>'.dol_print_date($object->date_approve,'dayhour').'</td></tr>';
@@ -1694,6 +1686,7 @@ else
 					$userfee->fetch($object->fk_user_refuse);
 					print $userfee->getNomUrl(-1);
 					print '</td></tr>';
+					
 					print '<tr>';
 					print '<td>'.$langs->trans("DATE_REFUS").'</td>';
 					print '<td>'.dol_print_date($object->date_refuse,'dayhour');
@@ -1725,6 +1718,77 @@ else
 				
 				print '</table>';
 
+				print '</div>';
+				print '<div class="fichehalfright">';
+				print '<div class="ficheaddleft">';
+				//print '<div class="underbanner clearboth"></div>';
+				
+				// List of payments
+				$sql = "SELECT p.rowid, p.num_payment, p.datep as dp, p.amount,";
+				$sql.= "c.code as type_code,c.libelle as payment_type";
+				$sql.= " FROM ".MAIN_DB_PREFIX."payment_expensereport as p";
+				$sql.= ", ".MAIN_DB_PREFIX."c_paiement as c ";
+				$sql.= ", ".MAIN_DB_PREFIX."expensereport as e";
+				$sql.= " WHERE e.rowid = '".$id."'";
+				$sql.= " AND p.fk_expensereport = e.rowid";
+				$sql.= " AND e.entity = ".$conf->entity;
+				$sql.= " AND p.fk_typepayment = c.id";
+				$sql.= " ORDER BY dp";
+				
+				$resql = $db->query($sql);
+				if ($resql)
+				{
+				    $num = $db->num_rows($resql);
+				    $i = 0; $total = 0;
+				    print '<table class="noborder paymenttable" width="100%">';
+				    print '<tr class="liste_titre">';
+				    print '<td>'.$langs->trans("RefPayment").'</td>';
+				    print '<td>'.$langs->trans("Date").'</td>';
+				    print '<td>'.$langs->trans("Type").'</td>';
+				    print '<td align="right">'.$langs->trans("Amount").'</td>';
+				    print '<td>&nbsp;</td>';
+				    print '</tr>';
+				
+				    $var=True;
+				    while ($i < $num)
+				    {
+				        $objp = $db->fetch_object($resql);
+				        $var=!$var;
+				        print "<tr ".$bc[$var]."><td>";
+				        print '<a href="'.DOL_URL_ROOT.'/expensereport/payment/card.php?id='.$objp->rowid.'">'.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.'</a></td>';
+				        print '<td>'.dol_print_date($db->jdate($objp->dp),'day')."</td>\n";
+				        $labeltype=$langs->trans("PaymentType".$objp->type_code)!=("PaymentType".$objp->type_code)?$langs->trans("PaymentType".$objp->type_code):$objp->fk_typepayment;
+				        print "<td>".$labeltype.' '.$objp->num_payment."</td>\n";
+				        print '<td align="right">'.price($objp->amount)."</td><td>&nbsp;".$langs->trans("Currency".$conf->currency)."</td>\n";
+				        print "</tr>";
+				        $totalpaid += $objp->amount;
+				        $i++;
+				    }
+				
+				    if ($object->paid == 0)
+				    {
+				        print "<tr><td colspan=\"3\" align=\"right\">".$langs->trans("AlreadyPaid")." :</td><td align=\"right\">".price($totalpaid)."</td></tr>\n";
+				        print "<tr><td colspan=\"3\" align=\"right\">".$langs->trans("AmountExpected")." :</td><td align=\"right\">".price($object->total_ttc)."</td></tr>\n";
+				
+				        $remaintopay = $object->total_ttc - $totalpaid;
+				
+				        print "<tr><td colspan=\"3\" align=\"right\">".$langs->trans("RemainderToPay")." :</td>";
+				        print '<td align="right"'.($remaintopay?' class="amountremaintopay"':'').'>'.price($remaintopay)."</td></tr>\n";
+				    }
+				    print "</table>";
+				    $db->free($resql);
+				}
+				else
+				{
+				    dol_print_error($db);
+				}				
+				
+				print '</div>';
+				print '</div>';
+				print '</div>';
+				
+				print '<div class="clearboth"></div><br>';
+				
 				print '<br>';
 
 				// Fetch Lines of current expense report

+ 1 - 0
htdocs/expensereport/class/expensereport.class.php

@@ -34,6 +34,7 @@ class ExpenseReport extends CommonObject
     var $table_element='expensereport';
     var $table_element_line = 'expensereport_det';
     var $fk_element = 'fk_expensereport';
+    var $picto = 'trip';
 
     var $lignes=array();
     

+ 11 - 16
htdocs/langs/fr_FR/accountancy.lang

@@ -39,11 +39,9 @@ Ventilation=Liés aux comptes
 ProductsBinding=Liaison produits
 
 MenuAccountancy=Comptabilité
+MenuDefaultAccounts=Comptes par défaut
 CustomersVentilation=Factures client liées
 SuppliersVentilation=Factures fournisseurs liées
-Reports=Rapports
-NewAccount=Nouveau compte comptable
-Create=Créer
 CreateMvts=Créer nouvelle transaction
 UpdateMvts=Modification d'une transaction
 WriteBookKeeping=Enregistrer les opérations dans le Grand Livre
@@ -56,12 +54,12 @@ InvoiceLinesDone=Lignes de factures liées
 IntoAccount=Lier ligne avec le compte comptable
 
 Ventilate=Lier
-
+LineId=Id ligne
 Processing=Traitement en cours
 EndProcessing=Fin du traitement
-AnyLineVentilate=Toutes lignes à lier
 SelectedLines=Lignes sélectionnées
 Lineofinvoice=Ligne de la facture
+NoAccountSelected=Pas de compte comptable sélectionné
 VentilatedinAccount=Liée avec succès sur compte comptable
 NotVentilatedinAccount=Non lié au compte comptable
 XLineSuccessfullyBinded=%s produits/services liés avec succès à un compte comptable
@@ -71,12 +69,12 @@ ACCOUNTING_LIMIT_LIST_VENTILATION=Nombre d'éléments à lier représentés par
 ACCOUNTING_LIST_SORT_VENTILATION_TODO=Trier de la page "Lien à réaliser" par les éléments les plus récents
 ACCOUNTING_LIST_SORT_VENTILATION_DONE=Trier la page "Liens réalisés" par les éléments les plus récents
 
-ACCOUNTING_LENGTH_DESCRIPTION=Longueur pour afficher la description des produits & services dans les listes (Idéalement = 50)
-ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT=Longueur pour afficher la description du compte des produits & services dans les listes (Idéalement = 50)
+ACCOUNTING_LENGTH_DESCRIPTION=Tronquer la description des produits & services dans les listes à n caractères (Idéalement = 50)
+ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT=Tronquer la description du compte des produits & services dans les listes à n caractères (Idéalement = 50)
 ACCOUNTING_LENGTH_GACCOUNT=Longueur des comptes généraux
 ACCOUNTING_LENGTH_AACCOUNT=Longueur des comptes tiers
-ACCOUNTING_MANAGE_ZERO=Ajouter des 0  à la fin des codes comptable. Fonctionnalité nécessaire pour certains pays, désactivée par défaut. Attention à la fonction "longueur des comptes" de vos codes comptables.
-BANK_DISABLE_DIRECT_INPUT=Désactiver la saisie directe de transactions en banque (Activé par défaut avec ce module).
+ACCOUNTING_MANAGE_ZERO=Ajouter des 0  à la fin des codes comptables. Fonctionnalité nécessaire pour certains pays. Désactivée par défaut. Si vous positionnez cette option à Oui, il vous faut aussi définir les 2 paramètres suivants (sinon celui-ci sera ignoré)
+BANK_DISABLE_DIRECT_INPUT=Désactiver la saisie directe de transactions en banque
 
 ACCOUNTING_SELL_JOURNAL=Journal des ventes
 ACCOUNTING_PURCHASE_JOURNAL=Journal des achats
@@ -101,16 +99,16 @@ Labelcompte=Libellé du compte
 Sens=Sens
 Codejournal=Journal
 NumPiece=Numéro de pièce
+TransactionNumShort=Num. transaction
 AccountingCategory=Catégorie comptable
+GroupByAccountAccounting=Grouper par compte comptable
 NotMatch=Non défini
 DeleteMvt=Supprimer les lignes du grand livre
 DelYear=Année à supprimer
 DelJournal=Journal à supprimer
-ConfirmDeleteMvt=Cela supprimera toutes les lignes du Grand Livre pour l'année et/ou un journal spécifique
+ConfirmDeleteMvt=Cela supprimera toutes les lignes du Grand Livre pour l'année et/ou un journal spécifique. Au moins un critère est requis.
 ConfirmDeleteMvtPartial=Ceci va supprimer la(les) ligne(s) sélectionnée(s) du Grand Livre
 DelBookKeeping=Supprimer les écritures du grand livre
-DescSellsJournal=Journal des ventes
-DescPurchasesJournal=Journal des achats
 FinanceJournal=Journal de trésorerie
 DescFinanceJournal=Journal de trésorerie comprenant tous les types de paiements par compte bancaire / caisse
 DescJournalOnlyBindedVisible=Ceci est une vue de enregistrements qui sont liés à un compte comptable produits et qui peuvent être enregistrées dans le Grand Livre.
@@ -127,12 +125,10 @@ ErrorDebitCredit=Débit et crédit ne peuvent pas avoir la même valeur en même
 
 ReportThirdParty=Liste des comptes tiers
 DescThirdPartyReport=Consultez ici la liste des tiers clients et fournisseurs et leurs codes comptables
-
 ListAccounts=Liste des comptes comptables
 
 Pcgtype=Classe de compte
 Pcgsubtype=Sous classe de compte
-Accountparent=Racine des comptes
 
 TotalVente=Total chiffre affaires hors taxe
 TotalMarge=Total marge
@@ -193,7 +189,7 @@ Calculated=Calculé
 Formula=Formule
 
 ## Error
-ErrorNoAccountingCategoryForThisCountry=Pas de catégories comptable disponibles pour ce pays
+ErrorNoAccountingCategoryForThisCountry=Pas de catégories comptable disponibles pour le pays %s (Voir Accueil - Configuration - Dictionnaires)
 ExportNotSupported=Le format de l'export n'est pas supporté par cette page
 BookeppingLineAlreayExists=Lignes dejà existantes dans le grand livre
 
@@ -201,4 +197,3 @@ Binded=Lignes liées
 ToBind=Lignes à lier
 
 WarningReportNotReliable=Attention, ce rapport ne se fonde pas sur le Grand Livre, donc n'est pas précis pour l'instant. Il sera remplacé par un rapport plus fiable dans une prochaine version.
-

+ 11 - 12
htdocs/langs/fr_FR/admin.lang

@@ -54,7 +54,7 @@ ErrorDecimalLargerThanAreForbidden=Erreur, les précisions supérieures à <b>%s
 DictionarySetup=Dictionnaires
 Dictionary=Dictionnaires
 Chartofaccounts=Plan comptable
-Fiscalyear=Exercice fiscal
+FiscalPeriod=Période fiscale
 ErrorReservedTypeSystemSystemAuto=Erreur, les valeurs 'system' et 'systemauto' sont réservées. Vous pouvez utiliser la valeur 'user' pour ajouter vos propres enregistrements
 ErrorCodeCantContainZero=Erreur, le code ne peut contenir la valeur 0
 DisableJavascript=Désactive les fonctions Javascript et Ajax (Recommandé pour les personnes aveugles ou navigateurs text).
@@ -1105,9 +1105,8 @@ WatermarkOnDraft=Filigrane sur les documents brouillons
 JSOnPaimentBill=Activer la fonctionnalité de remplissage automatique des lignes de paiement sur le formulaire de paiement
 CompanyIdProfChecker=Règles sur les Identifiants professionnels
 MustBeUnique=Doit être unique ?
-MustBeMandatory=Obligatoire pour creer tiers ?
-MustBeInvoiceMandatory=Obligatoire pour valider factures ?
-Miscellaneous=Divers
+MustBeMandatory=Obligatoire pour créer des tiers ?
+MustBeInvoiceMandatory=Obligatoire pour valider des factures ?
 ##### Webcal setup #####
 WebCalUrlForVCalExport=Un lien d'exportation du calendrier au format <b>%s</b> sera disponible à l'url :<br>%s
 ##### Invoices #####
@@ -1524,14 +1523,14 @@ TaskModelModule=Modèles de document de rapport tâches
 UseSearchToSelectProject=Utilisez un champ avec auto-complétion pour choisir les projets (plutôt qu'une liste déroulante).
 ##### ECM (GED) #####
 ##### Fiscal Year #####
-FiscalYears=Exercices fiscaux
-FiscalYearCard=Fiche exercice fiscal
-NewFiscalYear=Nouvel exercice fiscal
-OpenFiscalYear=Exercice fiscal ouvert
-CloseFiscalYear=Exercice fiscal cloturé
-DeleteFiscalYear=Effacer exercice fiscal
-ConfirmDeleteFiscalYear=Êtes-vous sûr de vouloir supprimer cet exercice fiscal ?
-ShowFiscalYear=Voir l'exercice fiscal
+AccountingPeriods=Période fiscales
+AccountingPeriodCard=Période fiscale
+NewFiscalYear=Nouvelle période fiscale
+OpenFiscalYear=Ouvrir période fiscale
+CloseFiscalYear=Fermer période fiscale
+DeleteFiscalYear=Effacer période fiscale
+ConfirmDeleteFiscalYear=Êtes-vous sûr de vouloir supprimer cette période fiscale ?
+ShowFiscalYear=Afficher période fiscale
 AlwaysEditable=Peut toujours être édité
 MAIN_APPLICATION_TITLE=Forcer la valeur visible du nom de l'application (attention : positionner ici son propre nom rendra inopérante la fonction de remplissage automatique de l'identifiant lorsque vous utilisez l'application mobile DoliDroid)
 NbMajMin=Nombre minimal de caractères majuscules

+ 20 - 5
htdocs/langs/fr_FR/agenda.lang

@@ -3,7 +3,6 @@ IdAgenda=ID évènement
 Actions=Événements
 Agenda=Agenda
 Agendas=Agendas
-Calendar=Calendrier
 LocalAgenda=Calendrier interne
 ActionsOwnedBy=Propriétaire de l'événement
 ActionsOwnedByShort=Propriétaire
@@ -34,11 +33,27 @@ AgendaAutoActionDesc= Définissez ici les événements pour lesquels Dolibarr cr
 AgendaSetupOtherDesc= Cette page permet de configurer quelques options permettant d'exporter une vue de votre agenda Dolibarr vers un calendrier externe (Thunderbird, Google calendar, …)
 AgendaExtSitesDesc=Cette page permet d'ajouter des sources de calendriers externes pour les visualiser au sein de l'agenda Dolibarr.
 ActionsEvents=Événements pour lesquels Dolibarr doit insérer un évènement dans l'agenda en automatique.
+##### Agenda event labels #####
+NewCompanyToDolibarr=Tiers %s créé
+ContractValidatedInDolibarr=Contrat %s validé
+PropalClosedSignedInDolibarr=Proposition %s signée
+PropalClosedRefusedInDolibarr=Proposition %s refusée
 PropalValidatedInDolibarr=Proposition %s validée
+PropalClassifiedBilledInDolibarr=Proposition %s classée payée
 InvoiceValidatedInDolibarr=Facture %s validée
 InvoiceValidatedInDolibarrFromPos=Facture %s validée depuis le Point de Vente
 InvoiceBackToDraftInDolibarr=Facture %s repassée en brouillon
 InvoiceDeleteDolibarr=Facture %s supprimée
+InvoicePaidInDolibarr=Facture %s passée à payée
+InvoiceCanceledInDolibarr=Facture %s annulée
+MemberValidatedInDolibarr=Adhérent %s validé
+MemberResiliatedInDolibarr=Adhérent %s résilié
+MemberDeletedInDolibarr=Adhérent %s supprimé
+MemberSubscriptionAddedInDolibarr=Souscription adhérent %s
+ShipmentValidatedInDolibarr=Expédition %s validée
+ShipmentClassifyClosedInDolibarr=Expédition %s classée payée
+ShipmentUnClassifyCloseddInDolibarr=Expédition %s réouverte
+ShipmentDeletedInDolibarr=Expédition %s supprimée
 OrderValidatedInDolibarr=Commande %s validée
 OrderDeliveredInDolibarr=Commande %s classée Livrée
 OrderCanceledInDolibarr=Commande %s annulée
@@ -57,9 +72,9 @@ InterventionSentByEMail=Intervention %s envoyée par email
 ProposalDeleted=Proposition commerciale supprimée
 OrderDeleted=Commande supprimée
 InvoiceDeleted=Facture supprimée
-NewCompanyToDolibarr= Tiers créé
-DateActionStart= Date de début
-DateActionEnd= Date de fin
+##### End agenda events #####
+DateActionStart=Date de début
+DateActionEnd=Date de fin
 AgendaUrlOptions1=Vous pouvez aussi ajouter les paramètres suivants pour filtrer les réponses :
 AgendaUrlOptions2=<b>login=%s</b> pour limiter l'export aux actions créées par ou assignées à l'utilisateur <b>%s</b>.
 AgendaUrlOptions3=<b>logina=%s</b> pour limiter l'export aux actions dont l'utilisateur <b>%s</b> est propriétaire.
@@ -86,7 +101,7 @@ MyAvailability=Ma disponibilité
 ActionType=Type événement
 DateActionBegin=Date début événément
 CloneAction=Cloner l'événement
-ConfirmCloneEvent=Êtes-vous sûr de vouloir cloner cet événement <b>%s</b> ?
+ConfirmCloneEvent=Êtes-vous sûr de vouloir cloner cette facture <b>%s</b> ?
 RepeatEvent=Répétez événement
 EveryWeek=Chaque semaine
 EveryMonth=Chaque mois

+ 4 - 4
htdocs/langs/fr_FR/banks.lang

@@ -41,7 +41,7 @@ BankAccountOwner=Nom du propriétaire du compte
 BankAccountOwnerAddress=Adresse du propriétaire du compte
 RIBControlError=Les contrôles indiquent que les informations de ce compte bancaire sont incomplètes ou incorrectes (vérifier le pays, les numéros de compte ou IBAN).
 CreateAccount=Créer compte
-NewAccount=Nouveau compte
+NewBankAccount=Nouveau compte
 NewFinancialAccount=Nouveau compte financier
 MenuNewFinancialAccount=Nouveau compte
 EditFinancialAccount=Édition compte
@@ -53,12 +53,12 @@ BankType2=Compte caisse/liquide
 AccountsArea=Espace comptes
 AccountCard=Fiche compte
 DeleteAccount=Suppression de compte
-ConfirmDeleteAccount=Êtes-vous sûr de vouloir supprimer ce compte ?
+ConfirmDeleteAccount=Êtes-vous sûr de vouloir effacer cet événement ?
 Account=Compte
 BankTransactionByCategories=Écritures bancaires par rubriques
 BankTransactionForCategory=Écritures bancaires pour la rubrique <b>%s</b>
 RemoveFromRubrique=Supprimer lien avec rubrique
-RemoveFromRubriqueConfirm=Êtes-vous sûr de vouloir supprimer le lien entre la transaction et la rubrique ?
+RemoveFromRubriqueConfirm=Êtes-vous sûr de vouloir supprimer le lien entre la transaction et la catégorie ?
 ListBankTransactions=Liste des écritures
 IdTransaction=Id écriture
 BankTransactions=Écritures bancaires
@@ -94,7 +94,7 @@ SocialContributionPayment=Paiement de charge fiscale/sociale
 BankTransfer=Virement bancaire
 BankTransfers=Virements bancaire
 MenuBankInternalTransfer=Virement interne
-TransferDesc=Transférer d'un compte bancaire à un autre, Dolibarr ajoutera deux lignes d'écritures (une ligne de débit dans le compte source et une ligne de crédit dans le compte de destination. le même montant (excepté le signe), le libellé et la date seront repris.
+TransferDesc=Transférer d'un compte bancaire à un autre, Dolibarr ajoutera deux lignes d'écritures (une ligne de débit dans le compte source et une ligne de crédit dans le compte de destination. le même montant (excepté le signe), le libellé et la date seront repris).
 TransferFrom=De
 TransferTo=Vers
 TransferFromToDone=Le virement depuis <b>%s</b> vers <b>%s</b> de <b>%s</b> %s a été créé.

+ 1 - 1
htdocs/langs/fr_FR/boxes.lang

@@ -34,7 +34,7 @@ BoxTitleOldestUnpaidCustomerBills=Les %s plus anciennes factures clients impayé
 BoxTitleOldestUnpaidSupplierBills=Les %s plus anciennes factures fournisseurs impayées
 BoxTitleCurrentAccounts=Balances des comptes ouverts
 BoxTitleLastModifiedContacts=Les %s derniers contacts/adresses modifiés
-BoxMyLastBookmarks=Mes %s derniers marque-pages\n
+BoxMyLastBookmarks=Mes %s derniers marque-pages
 BoxOldestExpiredServices=Plus anciens services expirés
 BoxLastExpiredServices=Les %s plus anciens contrats avec services actifs expirés
 BoxTitleLastActionsToDo=Les %s derniers événements à réaliser

+ 1 - 1
htdocs/langs/fr_FR/compta.lang

@@ -91,7 +91,7 @@ SupplierAccountancyCode=Compte comptable fournisseur
 CustomerAccountancyCodeShort=Compte comptable client
 SupplierAccountancyCodeShort=Compte comptable fournisseur
 AccountNumber=Numéro du compte
-NewAccount=Nouveau compte
+NewAccountingAccount=Nouveau compte
 SalesTurnover=Chiffre d'affaires
 SalesTurnoverMinimum=Chiffre d'affaires minimum
 ByExpenseIncome=Par recettes et dépenses

+ 1 - 1
htdocs/langs/fr_FR/contracts.lang

@@ -72,7 +72,7 @@ DeleteContractLine=Supprimer ligne de contrat
 ConfirmDeleteContractLine=Êtes-vous sûr de vouloir supprimer cette ligne de contrat de service ?
 MoveToAnotherContract=Déplacer le service vers un autre contrat de ce tiers.
 ConfirmMoveToAnotherContract=J'ai choisi le contrat cible et confirme le déplacement du service dans ce contrat.
-ConfirmMoveToAnotherContractQuestion=Choisissez vers quel autre contrat de ce même tiers, vous voulez déplacer ce service ?
+ConfirmMoveToAnotherContractQuestion=Choisissez vers quel autre contrat (du même tiers), vous voulez déplacer ce service ?
 PaymentRenewContractId=Renouvellement service (numéro %s)
 ExpiredSince=Expiré le
 NoExpiredServices=Pas de services actifs expirés

+ 0 - 1
htdocs/langs/fr_FR/ecm.lang

@@ -41,4 +41,3 @@ CannotRemoveDirectoryContainsFiles=Suppression impossible car des fichiers sont
 ECMFileManager=Gestionnaire de fichier
 ECMSelectASection=Sélectionner un répertoire sur l'arbre de gauche…
 DirNotSynchronizedSyncFirst=Ce répertoire a été crée ou modifié en dehors du module GED. Cliquer sur le bouton "Rafraîchir" afin de resyncroniser les informations sur disque et la base pour voir le contenu de ce répertoire.
-

+ 1 - 0
htdocs/langs/fr_FR/errors.lang

@@ -176,6 +176,7 @@ ErrorStockIsNotEnoughToAddProductOnShipment=Le stock du produit %s est insuffisa
 ErrorStockIsNotEnoughToAddProductOnProposal=Le stock du produit %s est insuffisant pour permettre un ajout dans une nouvelle proposition
 ErrorFailedToLoadLoginFileForMode=Impossible d'obtenir le fichier de connexion pour le mode '%s'.
 ErrorModuleNotFound=Fichier du module non trouvé.
+ErrorFieldAccountNotDefinedForBankLine=Valeur du compte comptable non défini pour la ligne de bank source %s
 
 # Warnings
 WarningPasswordSetWithNoAccount=Un mot de passe a été fixé pour cet adhérent. Cependant, aucun compte d'utilisateur n'a été créé. Donc, ce mot de passe est stocké, mais ne peut être utilisé pour accéder à Dolibarr. Il peut être utilisé par un module/interface externe, mais si vous n'avez pas besoin de définir ni login ni mot de passe pour un adhérent, vous pouvez désactiver l'option «Gérer un login pour chaque adhérent" depuis la configuration du module Adhérents. Si vous avez besoin de gérer un login, mais pas de mot de passe, vous pouvez laisser ce champ vide pour éviter cet avertissement. Remarque: L'email peut également être utilisé comme login si l'adhérent est lié à un utilisateur.

+ 0 - 2
htdocs/langs/fr_FR/exports.lang

@@ -26,8 +26,6 @@ FieldTitle=Titre champ
 NowClickToGenerateToBuildExportFile=Maintenant, sélectionnez le format d'export dans la liste déroulante et cliquez sur "Générer" pour fabriquer le fichier export…
 AvailableFormats=Formats disponibles
 LibraryShort=Bibliothèque
-LibraryUsed=Bibliothèque utilisée
-LibraryVersion=Version
 Step=Étape
 FormatedImport=Assistant import
 FormatedImportDesc1=Cet espace permet de réaliser des imports personnalisés des données via un assistant qui ne nécessite pas d'avoir des connaissances techniques.

+ 0 - 1
htdocs/langs/fr_FR/install.lang

@@ -62,7 +62,6 @@ KeepEmptyIfNoPassword=Laissez vide si l'administrateur n'a pas de mot de passe
 SaveConfigurationFile=Enregistrement du fichier de configuration
 ServerConnection=Connexion au serveur
 DatabaseCreation=Création de la base de données
-UserCreation=Création de l'utilisateur
 CreateDatabaseObjects=Création des objets de la base
 ReferenceDataLoading=Chargement des données de référence
 TablesAndPrimaryKeysCreation=Création des tables et des clés primaires

+ 1 - 0
htdocs/langs/fr_FR/link.lang

@@ -1,3 +1,4 @@
+# Dolibarr language file - Source file is en_US - languages
 LinkANewFile=Lier un nouveau fichier/document
 LinkedFiles=Fichiers et documents liés
 NoLinkFound=Aucun lien associé

+ 13 - 2
htdocs/langs/fr_FR/main.lang

@@ -28,6 +28,7 @@ NoTemplateDefined=Pas de modèle défini pour ce type d'email
 AvailableVariables=Variables de substitution disponibles
 NoTranslation=Pas de traduction
 NoRecordFound=Aucun enregistrement trouvé
+NoRecordDeleted=Aucu enregistrement supprimé
 NotEnoughDataYet=Pas assez de données
 NoError=Aucune erreur
 Error=Erreur
@@ -574,9 +575,10 @@ CanBeModifiedIfOk=Peut être modifié si valide
 CanBeModifiedIfKo=Peut être modifié si invalide
 ValueIsValid=Valeur valide
 ValueIsNotValid=Valeur non valide
+RecordCreatedSuccessfully=Enregistrement créé avec succès
 RecordModifiedSuccessfully=Enregistrement modifié avec succès
 RecordsModified=%s enregistrements modifiés
-RecordsDeleted=Les %s dernières suppressions d'éléments
+RecordsDeleted=%s enregistrements supprimés
 AutomaticCode=Création automatique du code
 FeatureDisabled=Fonction désactivée
 MoveBox=Déplacer le widget
@@ -716,6 +718,7 @@ DeleteLine=Effacer ligne
 ConfirmDeleteLine=Êtes-vous sûr de vouloir supprimer cette ligne ?
 NoPDFAvailableForDocGenAmongChecked=Aucun PDF n'est disponible pour la génération du document parmi les enregistrements cochés
 TooManyRecordForMassAction=Trop d'enregistrements sélectionnés pour l'action de masse. De telles actions sont restreintes à une liste de %s enregistrements maximum.
+NoRecordSelected=Pas d'enregistrement sélectionné
 MassFilesArea=Zone des fichiers générés en masse
 ShowTempMassFilesArea=Afficher la zone des fichiers générés en masse
 RelatedObjects=Objets liés
@@ -725,6 +728,14 @@ ClickHere=Cliquer ici
 FrontOffice=Front office
 BackOffice=Back office
 View=Vue
+Export=Exporter
+Exports=Exports
+ExportFilteredList=Exporter liste filtrée
+ExportList=Exporter liste
+Miscellaneous=Divers
+Calendar=Calendrier
+GroupBy=Grouper par...
+ViewFlatList=Voir vue liste
 # Week day
 Monday=Lundi
 Tuesday=Mardi
@@ -756,7 +767,7 @@ ShortSaturday=S
 ShortSunday=D
 SelectMailModel=Sélectionner un modèle de courriels
 SetRef=Définir réf.
-Select2ResultFoundUseArrows=
+Select2ResultFoundUseArrows=Résultats trouvés. Utilisez les flèches pour sélectionner.
 Select2NotFound=Aucun enregistrement trouvé
 Select2Enter=Entrez
 Select2MoreCharacter=caractère ou plus

+ 0 - 1
htdocs/langs/fr_FR/members.lang

@@ -152,7 +152,6 @@ MenuMembersStats=Statistiques
 LastMemberDate=Date dernier adhérent
 Nature=Nature
 Public=Informations publiques
-Exports=Exports
 NewMemberbyWeb=Nouvel adhérent ajouté. En attente de validation
 NewMemberForm=Nouvel Adhérent form
 SubscriptionsStatistics=Statistiques sur les cotisations

+ 0 - 1
htdocs/langs/fr_FR/oauth.lang

@@ -11,7 +11,6 @@ RequestAccess=Cliquez ici pour demander/renouveler un accès et recevoir un nouv
 DeleteAccess=Cliquez ici pour effacer le jeton
 UseTheFollowingUrlAsRedirectURI=Utilisez l'URL suivante comme URI de redirection quand vous créez un crédit avec votre fournisseur OAuth :
 ListOfSupportedOauthProviders=Saisissez ici le crédit fourni par votre fournisseur OAuth2. Seuls les fournisseurs OAuth2 supportés sont visibles ici. Ce paramétrage est potentiellement utilisé par d'autres modules qui nécessitent une authentification OAuth2.
-TOKEN_ACCESS=
 TOKEN_REFRESH=Token Refresh présent
 TOKEN_EXPIRED=Token expiré
 TOKEN_EXPIRE_AT=Token expire le

+ 2 - 24
htdocs/langs/fr_FR/other.lang

@@ -1,6 +1,5 @@
 # Dolibarr language file - Source file is en_US - other
 SecurityCode=Code de sécurité
-Calendar=Calendrier
 NumberingShort=N°
 Tools=Outils
 ToolsDesc=Cet espace est dédié au regroupement d'outils divers non disponibles dans les autres entrées du menu.<br><br>La liste de ces outils est accessible par le menu sur le côté.
@@ -55,7 +54,6 @@ TotalSizeOfAttachedFiles=Taille totale fichiers/documents liés
 MaxSize=Taille maximum
 AttachANewFile=Ajouter un nouveau fichier/document
 LinkedObject=Objet lié
-Miscellaneous=Divers
 NbOfActiveNotifications=Nombre de notifications (nb de destinataires emails)
 PredefinedMailTest=Ceci est un message de test.\nLes 2 lignes sont séparées par un retour à la ligne.\n\n__SIGNATURE__
 PredefinedMailTestHtml=Ceci est un message de <b>test</b> (le mot test doit être en gras).<br>Les 2 lignes sont séparées par un retour à la ligne.<br><br>__SIGNATURE__
@@ -201,33 +199,13 @@ IfAmountHigherThan=Si le montant est supérieur à <strong>%s</strong>
 SourcesRepository=Répertoire pour les sources
 Chart=Graphique
 
-##### Calendar common #####
-NewCompanyToDolibarr=Société %s ajoutée
-ContractValidatedInDolibarr=Contrat %s validé
-PropalClosedSignedInDolibarr=Proposition %s signée
-PropalClosedRefusedInDolibarr=Proposition %s refusée
-PropalValidatedInDolibarr=Proposition %s validée
-PropalClassifiedBilledInDolibarr=Proposition %s classée payée
-InvoiceValidatedInDolibarr=Facture %s validée
-InvoicePaidInDolibarr=Facture %s passée à payée
-InvoiceCanceledInDolibarr=Facture %s annulée
-MemberValidatedInDolibarr=Adhérent %s validé
-MemberResiliatedInDolibarr=Adhérent %s résilié
-MemberDeletedInDolibarr=Adhérent %s supprimé
-MemberSubscriptionAddedInDolibarr=Souscription adhérent %s
-ShipmentValidatedInDolibarr=Expédition %s validée
-ShipmentClassifyClosedInDolibarr=Expédition %s classée payée
-ShipmentUnClassifyCloseddInDolibarr=Expédition %s réouverte
-ShipmentDeletedInDolibarr=Expédition %s supprimée
 ##### Export #####
-Export=Export
 ExportsArea=Espace exports
 AvailableFormats=Formats disponibles
-LibraryUsed=Librairie utilisée
-LibraryVersion=Version
+LibraryUsed=Bibliothèque utilisée
+LibraryVersion=Version bibliothèque
 ExportableDatas=Données exportables
 NoExportableData=Pas de données exportables (pas de module avec données exportables chargé, ou manque de permissions)
-NewExport=Nouvel export
 ##### External sites #####
 WebsiteSetup=Configuration du module Sites webs
 WEBSITE_PAGEURL=URL de la page