diff --git a/ChangeLog b/ChangeLog index d556b2a7cc064e5cee1f5548b5c0645dcff5f755..02221dd04671930078055f06e270e2ebdc991197 100644 --- a/ChangeLog +++ b/ChangeLog @@ -46,6 +46,8 @@ For users: - New: Install process is now two times faster. - New: Extra fields support int type. - New: Add brazilian states. +- New: Automtic list of documents in ECM module is ok for customers, + suppliers invoice, orders, customers orders, proposals and social contributions. - Fix: Can use POS module with several concurrent users. For developers: diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 9751ae757098b1c932d1d3df82d4d7735acdf6b3..9d11f05ca25140c354e6b85be0fe730449f5b970 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -26,9 +26,6 @@ /** * \file htdocs/comm/propal/class/propal.class.php * \brief Fichier de la classe des propales - * \author Rodolphe Qiedeville - * \author Eric Seigne - * \author Laurent Destailleur */ require_once(DOL_DOCUMENT_ROOT ."/core/class/commonobject.class.php"); @@ -2370,7 +2367,7 @@ class Propal extends CommonObject * Return clicable link of object (with eventually picto) * * @param int $withpicto Add picto into link - * @param string $option Where point the link + * @param string $option Where point the link ('compta', 'expedition', 'document', ...) * @param string $get_params Parametres added to url * @return string String with URL */ @@ -2379,18 +2376,22 @@ class Propal extends CommonObject global $langs; $result=''; - if($option == '') + if ($option == '') { $lien = '<a href="'.DOL_URL_ROOT.'/comm/propal.php?id='.$this->id. $get_params .'">'; } - if($option == 'compta') // deprecated + if ($option == 'compta') // deprecated { $lien = '<a href="'.DOL_URL_ROOT.'/comm/propal.php?id='.$this->id. $get_params .'">'; } - if($option == 'expedition') + if ($option == 'expedition') { $lien = '<a href="'.DOL_URL_ROOT.'/expedition/propal.php?id='.$this->id. $get_params .'">'; } + if ($option == 'document') + { + $lien = '<a href="'.DOL_URL_ROOT.'/comm/propal/document.php?id='.$this->id. $get_params .'">'; + } $lienfin='</a>'; $picto='propal'; diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index daba7b363fe48f3e19cb8c277eb8752b162492fd..9c16ce53a603acb4c5d55b23895dea766d1d411b 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -645,22 +645,50 @@ class FormFile $url=$_SERVER["PHP_SELF"]; print '<table width="100%" class="nobordernopadding">'; print '<tr class="liste_titre">'; - print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"","",$param,'align="left"',$sortfield,$sortorder); + $sortref="fullname"; + if ($modulepart == 'invoice_supplier') $sortref=''; // No sort for supplier invoices as path name is not + print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],$sortref,"",$param,'align="left"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Documents2"),$_SERVER["PHP_SELF"],"name","",$param,'align="left"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Size"),$_SERVER["PHP_SELF"],"size","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"date","",$param,'align="center"',$sortfield,$sortorder); print_liste_field_titre('','',''); print '</tr>'; + // To show ref or specific information according to view to show (defined by $module) if ($modulepart == 'invoice') { include_once(DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'); - $object_static=new Facture($this->db); + $object_instance=new Facture($this->db); } - if ($modulepart == 'invoice_supplier') + else if ($modulepart == 'invoice_supplier') { include_once(DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'); - $object_static=new FactureFournisseur($this->db); + $object_instance=new FactureFournisseur($this->db); + } + else if ($modulepart == 'propal') + { + include_once(DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'); + $object_instance=new Propal($this->db); + } + else if ($modulepart == 'order') + { + include_once(DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'); + $object_instance=new Commande($this->db); + } + else if ($modulepart == 'order_supplier') + { + include_once(DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'); + $object_instance=new CommandeFournisseur($this->db); + } + else if ($modulepart == 'contract') + { + include_once(DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php'); + $object_instance=new Contrat($this->db); + } + else if ($modulepart == 'tax') + { + include_once(DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php'); + $object_instance=new ChargeSociales($this->db); } $var=true; @@ -674,28 +702,32 @@ class FormFile { // Define relative path used to store the file $relativefile=preg_replace('/'.preg_quote($upload_dir.'/','/').'/','',$file['fullname']); - //print 'eeee'.$relativefile; + //var_dump($file); + $id=0; $ref=''; $object_instance->id=0; $object_instance->ref=''; $label=''; + + // To show ref or specific information according to view to show (defined by $module) + if ($modulepart == 'invoice') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=$reg[1]; } + if ($modulepart == 'invoice_supplier') { preg_match('/(\d+)\/[^\/]+$/',$relativefile,$reg); $id=$reg[1]; } + if ($modulepart == 'propal') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=$reg[1]; } + if ($modulepart == 'order') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=$reg[1]; } + if ($modulepart == 'order_supplier') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=$reg[1]; } + if ($modulepart == 'contract') { preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); $ref=$reg[1]; } + if ($modulepart == 'tax') { preg_match('/(\d+)\/[^\/]+$/',$relativefile,$reg); $id=$reg[1]; } + + if (is_object($this->cache_objects[$modulepart.'_'.$id.'_'.$ref])) $object_instance=$this->cache_objects[$modulepart.'_'.$id.'_'.$ref]; + else + { + //print 'Fetch '.$idorref.'<br>'; + $result=$object_instance->fetch($id,$ref); + if ($result > 0) $this->cache_objects[$modulepart.'_'.$id.'_'.$ref]=dol_clone($object_instance); // Save object into a cache + } + $var=!$var; print '<tr '.$bc[$var].'>'; print '<td>'; - $id='';$ref=''; - if ($modulepart == 'invoice') - { - preg_match('/(.*)\/[^\/]+$/',$relativefile,$reg); - $ref=$reg[1]; - $object_static->fetch('',$ref); - //print $relativefile.'rr'.$id; - print $object_static->getNomUrl(1,'document'); - } - if ($modulepart == 'invoice_supplier') - { - preg_match('/(\d+)\/[^\/]+$/',$relativefile,$reg); - $id=$reg[1]; - $object_static->fetch($id); - //print $relativefile.'rr'.$id; - print $object_static->getNomUrl(1,'document'); - } + if ($object_instance->id) print $object_instance->getNomUrl(1,'document'); + else print $langs->trans("ObjectDeleted",($id?$id:$ref)); print '</td>'; print '<td>'; //print "XX".$file['name']; //$file['name'] must be utf8 diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 0decdf402f751865de2154e1bd3b3e9da006e2c7..68aa7d898b3df37c354fccc4987d74a8da073eef 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -44,7 +44,7 @@ function dol_getwebuser($mode) * @param int $recursive Determines whether subdirectories are searched * @param string $filter Regex for include filter * @param string $excludefilter Array of Regex for exclude filter (example: array('\.meta$','^\.') - * @param string $sortcriteria Sort criteria ("","name","date","size") + * @param string $sortcriteria Sort criteria ("","fullname","name","date","size") * @param string $sortorder Sort order (SORT_ASC, SORT_DESC) * @param int $mode 0=Return array minimum keys loaded (faster), 1=Force all keys like date and size to be loaded (slower), 2=Force load of date only, 3=Force load of size only * @return array Array of array('name'=>'xxx','fullname'=>'/abc/xxx','date'=>'yyy','size'=>99,'type'=>'dir|file') diff --git a/htdocs/document.php b/htdocs/document.php index ecac2268886b5732b772a862a1eb21127fb4fbb5..9c59f1da05197b549915ca7d23350315948bbb0d 100644 --- a/htdocs/document.php +++ b/htdocs/document.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2004-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2012 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005 Simon Tosser <simon@kornog-computing.com> * Copyright (C) 2005-2011 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2010 Pierre Morin <pierre.morin@auguria.net> @@ -135,7 +135,7 @@ if ($modulepart) } // Wrapping for invoices - else if ($modulepart == 'facture') + else if ($modulepart == 'facture' || $modulepart == 'invoice') { if ($user->rights->facture->lire || preg_match('/^specimen/i',$original_file)) { @@ -188,7 +188,7 @@ if ($modulepart) } // Wrapping pour les commandes - else if ($modulepart == 'commande') + else if ($modulepart == 'commande' || $modulepart == 'order') { if ($user->rights->commande->lire || preg_match('/^specimen/i',$original_file)) { @@ -210,7 +210,7 @@ if ($modulepart) } // Wrapping pour les commandes fournisseurs - else if ($modulepart == 'commande_fournisseur') + else if ($modulepart == 'commande_fournisseur' || $modulepart == 'order_supplier') { if ($user->rights->fournisseur->commande->lire || preg_match('/^specimen/i',$original_file)) { diff --git a/htdocs/ecm/index.php b/htdocs/ecm/index.php index 4ab066e0dc842b6fdffa624a96e2d67e815602f5..03a5361076738ef719c0e88a21e541a2bd81529a 100644 --- a/htdocs/ecm/index.php +++ b/htdocs/ecm/index.php @@ -1,5 +1,5 @@ <?php -/* Copyright (C) 2008-2011 Laurent Destailleur <eldy@users.sourceforge.net> +/* Copyright (C) 2008-2012 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2008-2010 Regis Houssin <regis@dolibarr.fr> * * This program is free software; you can redistribute it and/or modify @@ -66,7 +66,7 @@ $offset = $conf->liste_limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortorder) $sortorder="ASC"; -if (! $sortfield) $sortfield="label"; +if (! $sortfield) $sortfield="fullname"; $ecmdir = new EcmDirectory($db); if (GETPOST("section")) @@ -352,9 +352,10 @@ if ($conf->societe->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, if ($conf->propal->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'propal', 'test'=>$conf->propal->enabled, 'label'=>$langs->trans("Prop"), 'desc'=>$langs->trans("ECMDocsByProposals")); } if ($conf->contrat->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'contract','test'=>$conf->contrat->enabled, 'label'=>$langs->trans("Contracts"), 'desc'=>$langs->trans("ECMDocsByContracts")); } if ($conf->commande->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'order', 'test'=>$conf->commande->enabled,'label'=>$langs->trans("CustomersOrders"), 'desc'=>$langs->trans("ECMDocsByOrders")); } -if ($conf->fournisseur->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'order_supplier', 'test'=>$conf->fournisseur->enabled, 'label'=>$langs->trans("SuppliersOrders"), 'desc'=>$langs->trans("ECMDocsByOrders")); } if ($conf->facture->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'invoice', 'test'=>$conf->facture->enabled, 'label'=>$langs->trans("CustomersInvoices"), 'desc'=>$langs->trans("ECMDocsByInvoices")); } -if ($conf->fournisseur->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'invoice_supplier', 'test'=>$conf->fournisseur->enabled, 'label'=>$langs->trans("SuppliersInvoices"), 'desc'=>$langs->trans("ECMDocsByInvoices")); } +if ($conf->fournisseur->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'order_supplier', 'test'=>$conf->fournisseur->enabled, 'label'=>$langs->trans("SuppliersOrders"), 'desc'=>$langs->trans("ECMDocsByOrders")); } +if ($conf->fournisseur->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'invoice_supplier', 'test'=>$conf->fournisseur->enabled, 'label'=>$langs->trans("SuppliersInvoices"), 'desc'=>$langs->trans("ECMDocsByInvoices")); } +if ($conf->tax->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'tax', 'test'=>$conf->tax->enabled, 'label'=>$langs->trans("SocialContributions"), 'desc'=>$langs->trans("ECMDocsBySocialContributions")); } //*********************** @@ -802,39 +803,101 @@ else $formfile=new FormFile($db); $param=($sortfield?'&sortfield='.$sortfield:'').($sortorder?'&sortorder='.$sortorder:''); +$maxlengthname=40; // Right area -if ($module == 'invoice_supplier') // Auto area for suppliers invoices +if ($module == 'company') // Auto area for suppliers invoices { - $relativepath='facture'; - $upload_dir = $conf->fournisseur->dir_output.'/'.$relativepath; - $filearray=dol_dir_list($upload_dir,"files",1,'',array('^SPECIMEN\.pdf$','^\.','\.meta$','^temp$','^CVS$'),$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + $upload_dir = $conf->societe->dir_output; + $filearray=dol_dir_list($upload_dir,"files",1,'',array('^SPECIMEN\.pdf$','^\.','\.meta$','^temp$','^payments$','^CVS$','^thumbs$'),$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); $param.='&module='.$module; $textifempty=($section?$langs->trans("NoFileFound"):($showonrightsize=='featurenotyetavailable'?$langs->trans("FeatureNotYetAvailable"):$langs->trans("ECMSelectASection"))); - $formfile->list_of_autoecmfiles($upload_dir,$filearray,$module,$param,1,'',$user->rights->ecm->upload,1,$textifempty,40); + $formfile->list_of_autoecmfiles($upload_dir,$filearray,$module,$param,1,'',$user->rights->ecm->upload,1,$textifempty,$maxlengthname); } else if ($module == 'invoice') // Auto area for suppliers invoices { $upload_dir = $conf->facture->dir_output; - $filearray=dol_dir_list($upload_dir,"files",1,'',array('^SPECIMEN\.pdf$','^\.','\.meta$','^temp$','^payments$','^CVS$'),$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + $filearray=dol_dir_list($upload_dir,"files",1,'',array('^SPECIMEN\.pdf$','^\.','\.meta$','^temp$','^payments$','^CVS$','^thumbs$'),$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + + $param.='&module='.$module; + $textifempty=($section?$langs->trans("NoFileFound"):($showonrightsize=='featurenotyetavailable'?$langs->trans("FeatureNotYetAvailable"):$langs->trans("ECMSelectASection"))); + + $formfile->list_of_autoecmfiles($upload_dir,$filearray,$module,$param,1,'',$user->rights->ecm->upload,1,$textifempty,$maxlengthname); +} +else if ($module == 'invoice_supplier') // Auto area for suppliers invoices +{ + $relativepath='facture'; + $upload_dir = $conf->fournisseur->dir_output.'/'.$relativepath; + $filearray=dol_dir_list($upload_dir,"files",1,'',array('^SPECIMEN\.pdf$','^\.','\.meta$','^temp$','^CVS$','^thumbs$'),$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + + $param.='&module='.$module; + $textifempty=($section?$langs->trans("NoFileFound"):($showonrightsize=='featurenotyetavailable'?$langs->trans("FeatureNotYetAvailable"):$langs->trans("ECMSelectASection"))); + + $formfile->list_of_autoecmfiles($upload_dir,$filearray,$module,$param,1,'',$user->rights->ecm->upload,1,$textifempty,$maxlengthname); +} +else if ($module == 'propal') // Auto area for customers orders +{ + $upload_dir = $conf->propale->dir_output; + $filearray=dol_dir_list($upload_dir,"files",1,'',array('^SPECIMEN\.pdf$','^\.','\.meta$','^temp$','^payments$','^CVS$','^thumbs$'),$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + + $param.='&module='.$module; + $textifempty=($section?$langs->trans("NoFileFound"):($showonrightsize=='featurenotyetavailable'?$langs->trans("FeatureNotYetAvailable"):$langs->trans("ECMSelectASection"))); + + $formfile->list_of_autoecmfiles($upload_dir,$filearray,$module,$param,1,'',$user->rights->ecm->upload,1,$textifempty,$maxlengthname); +} +else if ($module == 'order') // Auto area for customers orders +{ + $upload_dir = $conf->commande->dir_output; + $filearray=dol_dir_list($upload_dir,"files",1,'',array('^SPECIMEN\.pdf$','^\.','\.meta$','^temp$','^payments$','^CVS$','^thumbs$'),$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + + $param.='&module='.$module; + $textifempty=($section?$langs->trans("NoFileFound"):($showonrightsize=='featurenotyetavailable'?$langs->trans("FeatureNotYetAvailable"):$langs->trans("ECMSelectASection"))); + + $formfile->list_of_autoecmfiles($upload_dir,$filearray,$module,$param,1,'',$user->rights->ecm->upload,1,$textifempty,$maxlengthname); +} +else if ($module == 'order_supplier') // Auto area for suppliers orders +{ + $relativepath='commande'; + $upload_dir = $conf->fournisseur->dir_output.'/'.$relativepath; + $filearray=dol_dir_list($upload_dir,"files",1,'',array('^SPECIMEN\.pdf$','^\.','\.meta$','^temp$','^payments$','^CVS$','^thumbs$'),$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + + $param.='&module='.$module; + $textifempty=($section?$langs->trans("NoFileFound"):($showonrightsize=='featurenotyetavailable'?$langs->trans("FeatureNotYetAvailable"):$langs->trans("ECMSelectASection"))); + + $formfile->list_of_autoecmfiles($upload_dir,$filearray,$module,$param,1,'',$user->rights->ecm->upload,1,$textifempty,$maxlengthname); +} +else if ($module == 'contract') // Auto area for suppliers invoices +{ + $upload_dir = $conf->contrat->dir_output; + $filearray=dol_dir_list($upload_dir,"files",1,'',array('^SPECIMEN\.pdf$','^\.','\.meta$','^temp$','^CVS$','^thumbs$'),$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + + $param.='&module='.$module; + $textifempty=($section?$langs->trans("NoFileFound"):($showonrightsize=='featurenotyetavailable'?$langs->trans("FeatureNotYetAvailable"):$langs->trans("ECMSelectASection"))); + + $formfile->list_of_autoecmfiles($upload_dir,$filearray,$module,$param,1,'',$user->rights->ecm->upload,1,$textifempty,$maxlengthname); +} +else if ($module == 'tax') // Auto area for suppliers invoices +{ + $upload_dir = $conf->tax->dir_output; + $filearray=dol_dir_list($upload_dir,"files",1,'',array('^SPECIMEN\.pdf$','^\.','\.meta$','^temp$','^CVS$','^thumbs$'),$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); $param.='&module='.$module; $textifempty=($section?$langs->trans("NoFileFound"):($showonrightsize=='featurenotyetavailable'?$langs->trans("FeatureNotYetAvailable"):$langs->trans("ECMSelectASection"))); - $formfile->list_of_autoecmfiles($upload_dir,$filearray,$module,$param,1,'',$user->rights->ecm->upload,1,$textifempty,40); + $formfile->list_of_autoecmfiles($upload_dir,$filearray,$module,$param,1,'',$user->rights->ecm->upload,1,$textifempty,$maxlengthname); } else // Manual area { $relativepath=$ecmdir->getRelativePath(); $upload_dir = $conf->ecm->dir_output.'/'.$relativepath; - $filearray=dol_dir_list($upload_dir,"files",0,'',array('^\.','\.meta$'),$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + $filearray=dol_dir_list($upload_dir,"files",0,'',array('^\.','\.meta$','^temp$','^CVS$'),$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); $param.='§ion='.$section; $textifempty=($section?$langs->trans("NoFileFound"):($showonrightsize=='featurenotyetavailable'?$langs->trans("FeatureNotYetAvailable"):$langs->trans("ECMSelectASection"))); - $formfile->list_of_documents($filearray,'','ecm',$param,1,$relativepath,$user->rights->ecm->upload,1,$textifempty,40); + $formfile->list_of_documents($filearray,'','ecm',$param,1,$relativepath,$user->rights->ecm->upload,1,$textifempty,$maxlengthname); } // print '<table width="100%" class="border">'; diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 167dae2d2be7f16119ea08eda972bfda9cc00b76..960e5ee8519f8006e95e1186fb6208bfa63638ea 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -605,6 +605,7 @@ URLPhoto=Url of photo/logo SetLinkToThirdParty=Link to another third party CreateDraft=Create draft ClickToEdit=Click to edit +ObjectDeleted=Object %s deleted # Week day Monday=Monday diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang index a21a5d1867f9a2f9381cd647f3cf21a1edda5c58..8c1af9231d602a2f97176189e253c67d5884a257 100644 --- a/htdocs/langs/fr_FR/main.lang +++ b/htdocs/langs/fr_FR/main.lang @@ -607,6 +607,7 @@ URLPhoto=Url vers photo/logo SetLinkToThirdParty=Lier vers un autre tiers CreateDraft=Créer brouillon ClickToEdit=Cliquer ici pour éditer +ObjectDeleted=Objet %s supprimé # Week day Monday=Lundi