diff --git a/ChangeLog b/ChangeLog index 33b29d6ea54..ba3a70749fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,8 +7,12 @@ English Dolibarr ChangeLog For users: - New: Add supplier ref on supplier orders. - New: Can export supplier orders. +- New: First feature to install external plugins from gui. +- New: Monaco is like France for default vat calculation For developers: +- A module can overwrite templates parts. +- Can add a link on title field of added dictionnary. ***** ChangeLog for 3.2 compared to 3.1 ***** diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index 8f6aadbd010..237998bfcdb 100644 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -321,6 +321,7 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$PROJECT/Thumbs.db $BUILDROOT/$PROJECT/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/*/Thumbs.db`; $ret=`rm -f $BUILDROOT/$PROJECT/.cvsignore $BUILDROOT/$PROJECT/*/.cvsignore $BUILDROOT/$PROJECT/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/*/*/.cvsignore`; $ret=`rm -f $BUILDROOT/$PROJECT/.gitignore $BUILDROOT/$PROJECT/*/.gitignore $BUILDROOT/$PROJECT/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/*/*/.gitignore`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/theme/amarok`; $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/geoip/sample*.*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/jquery/plugins/lightbox`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/jquery/plugins/jstree`; @@ -328,6 +329,7 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpexcel/license.txt`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpexcel/PHPExcel/Shared/PDF`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpexcel/PHPExcel/Shared/PCLZip`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/savant`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/dejavu-fonts-ttf-2.33`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/freefont-20100919`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/utils`; diff --git a/build/makepack-howto.txt b/build/makepack-howto.txt index 44d96f3c109..5c09cbdb7a5 100644 --- a/build/makepack-howto.txt +++ b/build/makepack-howto.txt @@ -9,15 +9,13 @@ beta version of Dolibarr, step by step. - Check all files are commited. - Update version/info in / directory (README*.txt, ChangeLog...) -- Update version number with x.x.x in build/doxygen/dolibarr-doxygen.doxyfile -- Update version number with x.x.x in build/perl/virtualmin/dolibarr.pl +- Update version number with x.x.x-y in htdocs/filefunc.inc.php - Update version number with x.x.x-y in build/makepack-dolibarr.pl - Update version number with x.x.x-y in build/debian/changelog - Update version number with x.x.x-y in build/exe/doliwamp/doliwamp.iss -- Update version number with x.x.x-y in htdocs/filefunc.inc.php -- Update version number with x.x.x-y in htdocs/install/inc.php -- Update version number with x.x.x-y in htdocs/support/inc.php -- Update version number with x.x.x-y in htdocs/build/rpm/*.spec +- Update version number with x.x.x-y in build/rpm/*.spec +- Update version number with x.x.x in build/doxygen/dolibarr-doxygen.doxyfile +- Update version number with x.x.x in build/perl/virtualmin/dolibarr.pl - Commit all changes. - Add a Tag (DOLIBARR_x_y_BETA) - Create a branch (DOLIBARR_x_y_BRANCH). @@ -35,12 +33,11 @@ complete release of Dolibarr, step by step. - Check all files are commited. - Update version/info in / directory (README*.txt, ChangeLog...) -- Update version number with x.x.x-y in build/makepack-dolibarr.pl -- Update version number with x.x.x-y in build/exe/doliwamp/doliwamp.iss - Update version number with x.x.x-y in htdocs/filefunc.inc.php -- Update version number with x.x.x-y in htdocs/install/inc.php -- Update version number with x.x.x-y in htdocs/support/inc.php -- Update version number with x.x.x-y in htdocs/build/rpm/*.spec +- Update version number with x.x.x-y in build/makepack-dolibarr.pl +- Update version number with x.x.x-y in build/debian/changelog +- Update version number with x.x.x-y in build/exe/doliwamp/doliwamp.iss +- Update version number with x.x.x-y in build/rpm/*.spec - Update PAD files. - Commit all changes. - Add a Tag (DOLIBARR_x_y) diff --git a/dev/skeletons/modMyModule.class.php b/dev/skeletons/modMyModule.class.php index 9cf6604ce9b..26d8ce19865 100644 --- a/dev/skeletons/modMyModule.class.php +++ b/dev/skeletons/modMyModule.class.php @@ -73,12 +73,14 @@ class modMyModule extends DolibarrModules // for specific path of parts (eg: /mymodule/core/modules/barcode) // for specific css file (eg: /mymodule/css/mymodule.css.php) //$this->module_parts = array( - // 'triggers' => 0, // Set this to 1 if module has its own trigger directory - // 'login' => 0, // Set this to 1 if module has its own login method directory - // 'substitutions' => 0, // Set this to 1 if module has its own substitution function file - // 'menus' => 0, // Set this to 1 if module has its own menus handler directory - // 'barcode' => 0, // Set this to 1 if module has its own barcode directory - // 'models' => 0, // Set this to 1 if module has its own models directory + // 'triggers' => 0, // Set this to 1 if module has its own trigger directory (core/triggers) + // 'login' => 0, // Set this to 1 if module has its own login method directory (core/login) + // 'substitutions' => 0, // Set this to 1 if module has its own substitution function file (core/substitutions) + // 'menus' => 0, // Set this to 1 if module has its own menus handler directory (core/menus) + // 'theme' => 0, // Set this to 1 if module has its own theme directory (core/theme) + // 'tpl' => 0, // Set this to 1 if module overwrite template dir (core/tpl) + // 'barcode' => 0, // Set this to 1 if module has its own barcode directory (core/modules/barcode) + // 'models' => 0, // Set this to 1 if module has its own models directory (core/modules/xxx) // 'css' => '/mymodule/css/mymodule.css.php', // Set this to relative path of css if module has its own css file // 'hooks' => array('hookcontext1','hookcontext2') // Set here all hooks context managed by module // 'workflow' => array('order' => array('WORKFLOW_ORDER_AUTOCREATE_INVOICE')) // Set here all workflow context managed by module diff --git a/htdocs/accountancy/class/accountancysystem.class.php b/htdocs/accountancy/class/accountancysystem.class.php index 0dbad6754b1..2c278030a62 100644 --- a/htdocs/accountancy/class/accountancysystem.class.php +++ b/htdocs/accountancy/class/accountancysystem.class.php @@ -58,9 +58,11 @@ class AccountancySystem */ function create($user) { + $now=dol_now(); + $sql = "INSERT INTO ".MAIN_DB_PREFIX."accountingsystem"; $sql.= " (date_creation, fk_user_author, numero,intitule)"; - $sql.= " VALUES (".$this->db->idate(mktime()).",".$user->id.",'".$this->numero."','".$this->intitule."')"; + $sql.= " VALUES (".$this->db->idate($now).",".$user->id.",'".$this->numero."','".$this->intitule."')"; $resql = $this->db->query($sql); if ($resql) diff --git a/htdocs/adherents/admin/adherent.php b/htdocs/adherents/admin/adherent.php index c636200bdf4..a5a66d37721 100644 --- a/htdocs/adherents/admin/adherent.php +++ b/htdocs/adherents/admin/adherent.php @@ -218,10 +218,9 @@ print_fiche_titre($langs->trans("MembersCards"),'',''); form_constantes($constantes); print '*'.$langs->trans("FollowingConstantsWillBeSubstituted").'
'; -print '%DOL_MAIN_URL_ROOT%, %ID%, %PRENOM%, %NOM%, %LOGIN%, %PASSWORD%, '; -print '%SOCIETE%, %ADRESSE%, %CP%, %VILLE%, %PAYS%, %EMAIL%, %NAISS%, %PHOTO%, %TYPE%, '; +print '%DOL_MAIN_URL_ROOT%, %ID%, %FIRSTNAME%, %LASTNAME%, %FULLNAME%, %LOGIN%, %PASSWORD%, '; +print '%COMPANY%, %ADDRESS%, %ZIP%, %TOWN%, %COUNTRY%, %EMAIL%, %NAISS%, %PHOTO%, %TYPE%, '; print '%YEAR%, %MONTH%, %DAY%'; -//print '%INFOS%'; Deprecated print '
'; print '
'; @@ -230,12 +229,18 @@ print '
'; /* * Edition info modele document */ -$constantes=array('ADHERENT_ETIQUETTE_TYPE'); +$constantes=array('ADHERENT_ETIQUETTE_TYPE','ADHERENT_ETIQUETTE_TEXT'); print_fiche_titre($langs->trans("MembersTickets"),'',''); form_constantes($constantes); +print '*'.$langs->trans("FollowingConstantsWillBeSubstituted").'
'; +print '%DOL_MAIN_URL_ROOT%, %ID%, %FIRSTNAME%, %LASTNAME%, %FULLNAME%, %LOGIN%, %PASSWORD%, '; +print '%COMPANY%, %ADDRESS%, %ZIP%, %TOWN%, %COUNTRY%, %EMAIL%, %NAISS%, %PHOTO%, %TYPE%, '; +print '%YEAR%, %MONTH%, %DAY%'; +print '
'; + print '
'; @@ -259,10 +264,9 @@ print_fiche_titre($langs->trans("Other"),'',''); form_constantes($constantes); print '*'.$langs->trans("FollowingConstantsWillBeSubstituted").'
'; -print '%DOL_MAIN_URL_ROOT%, %ID%, %PRENOM%, %NOM%, %LOGIN%, %PASSWORD%,'; -print '%SOCIETE%, %ADRESSE%, %CP%, %VILLE%, %PAYS%, %EMAIL%, %NAISS%, %PHOTO%, %TYPE%'; +print '%DOL_MAIN_URL_ROOT%, %ID%, %FIRSTNAME%, %LASTNAME%, %FULLNAME%, %LOGIN%, %PASSWORD%, '; +print '%COMPANY%, %ADDRESS%, %ZIP%, %TOWN%, %COUNTRY%, %EMAIL%, %NAISS%, %PHOTO%, %TYPE%, '; //print '%YEAR%, %MONTH%, %DAY%'; // Not supported -//print '%INFOS%'; Deprecated print '
'; dol_fiche_end(); diff --git a/htdocs/adherents/card_subscriptions.php b/htdocs/adherents/card_subscriptions.php index d7b4390890e..e5aae08ca3c 100644 --- a/htdocs/adherents/card_subscriptions.php +++ b/htdocs/adherents/card_subscriptions.php @@ -816,7 +816,7 @@ if ($rowid) print ''; print "\n"; - $today=mktime(); + $today=dol_now(); $datefrom=0; $dateto=0; $paymentdate=-1; @@ -841,7 +841,7 @@ if ($rowid) } else { - $datefrom=mktime(); + $datefrom=dol_now(); } } $form->select_date($datefrom,'','','','',"cotisation"); diff --git a/htdocs/adherents/cartes/carte.php b/htdocs/adherents/cartes/carte.php index e0b8fca05e7..28475d03571 100755 --- a/htdocs/adherents/cartes/carte.php +++ b/htdocs/adherents/cartes/carte.php @@ -23,10 +23,11 @@ * \brief Page to output members business cards */ require("../../main.inc.php"); +require_once(DOL_DOCUMENT_ROOT.'/core/lib/format_cards.lib.php'); require_once(DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php"); -require_once(DOL_DOCUMENT_ROOT."/core/modules/member/cards/modules_cards.php"); -require_once(DOL_DOCUMENT_ROOT."/core/modules/member/labels/modules_labels.php"); +require_once(DOL_DOCUMENT_ROOT."/core/modules/member/modules_cards.php"); +require_once(DOL_DOCUMENT_ROOT."/core/modules/printsheet/modules_labels.php"); $langs->load("members"); $langs->load("errors"); @@ -39,12 +40,15 @@ $day=dol_print_date($now,'%d'); $foruserid=GETPOST('foruserid'); $foruserlogin=GETPOST('foruserlogin'); $mode=GETPOST('mode'); - +$model=GETPOST("model"); // Doc template to use for business cards +$modellabel=GETPOST("modellabel"); // Doc template to use for address sheet $mesg=''; +$adherentstatic=new Adherent($db); + /* - * View + * Actions */ if ($mode == 'cardlogin' && empty($foruserlogin)) @@ -57,10 +61,10 @@ if ((! empty($foruserid) || ! empty($foruserlogin) || ! empty($mode)) && ! $mesg $arrayofmembers=array(); // requete en prenant que les adherents a jour de cotisation - $sql = "SELECT d.rowid, d.prenom as firstname, d.nom as lastname, d.login, d.societe, d.datefin,"; - $sql.= " d.adresse, d.cp, d.ville, d.naiss, d.email, d.photo,"; + $sql = "SELECT d.rowid, d.prenom as firstname, d.nom as lastname, d.login, d.societe as company, d.datefin,"; + $sql.= " d.adresse as address, d.cp as zip, d.ville as town, d.naiss, d.email, d.photo,"; $sql.= " t.libelle as type,"; - $sql.= " p.libelle as pays"; + $sql.= " p.code as country_code, p.libelle as country"; $sql.= " FROM ".MAIN_DB_PREFIX."adherent_type as t, ".MAIN_DB_PREFIX."adherent as d"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_pays as p ON d.pays = p.rowid"; $sql.= " WHERE d.fk_adherent_type = t.rowid AND d.statut = 1"; @@ -68,6 +72,7 @@ if ((! empty($foruserid) || ! empty($foruserlogin) || ! empty($mode)) && ! $mesg if ($foruserlogin) $sql.=" AND d.login='".$db->escape($foruserlogin)."'"; $sql.= " ORDER BY d.rowid ASC"; + dol_syslog("Search members sql=".$sql); $result = $db->query($sql); if ($result) { @@ -77,27 +82,42 @@ if ((! empty($foruserid) || ! empty($foruserlogin) || ! empty($mode)) && ! $mesg { $objp = $db->fetch_object($result); - if ($objp->pays == '-') $objp->pays=''; + if ($objp->country == '-') $objp->country=''; + + $adherentstatic->lastname=$objp->lastname; + $adherentstatic->firstname=$objp->firstname; // List of values to scan for a replacement $substitutionarray = array ( - '%PRENOM%'=>$objp->firstname, - '%NOM%'=>$objp->lastname, + '%ID%'=>$objp->rowid, '%LOGIN%'=>$objp->login, - '%SERVEUR%'=>"http://".$_SERVER["SERVER_NAME"]."/", - '%SOCIETE%'=>$objp->societe, - '%ADRESSE%'=>$objp->adresse, - '%CP%'=>$objp->cp, - '%VILLE%'=>$objp->ville, - '%PAYS%'=>$objp->pays, + '%FIRSTNAME%'=>$objp->firstname, + '%LASTNAME%'=>$objp->lastname, + '%FULLNAME%'=>$adherentstatic->getFullName($langs), + '%COMPANY%'=>$objp->company, + '%ADDRESS%'=>$objp->address, + '%ZIP%'=>$objp->zip, + '%TOWN%'=>$objp->town, + '%COUNTRY%'=>$objp->country, + '%COUNTRY_CODE%'=>$objp->country_code, '%EMAIL%'=>$objp->email, '%NAISS%'=>dol_print_date($objp->naiss,'day'), '%TYPE%'=>$objp->type, - '%ID%'=>$objp->rowid, - '%ANNEE%'=>$year, // For backward compatibility '%YEAR%'=>$year, '%MONTH%'=>$month, - '%DAY%'=>$day + '%DAY%'=>$day, + '%DOL_MAIN_URL_ROOT%'=>DOL_MAIN_URL_ROOT, + '%SERVER%'=>"http://".$_SERVER["SERVER_NAME"]."/", // deprecated + // For backward compatibility + '%PRENOM%'=>$objp->firstname, + '%NOM%'=>$objp->lastname, + '%SOCIETE%'=>$objp->company, + '%ADRESSE%'=>$objp->address, + '%CP%'=>$objp->zip, + '%VILLE%'=>$objp->town, + '%PAYS%'=>$objp->country, + '%ANNEE%'=>$year, + '%SERVEUR%'=>"http://".$_SERVER["SERVER_NAME"]."/" // deprecated ); complete_substitutions_array($substitutionarray, $langs); @@ -113,29 +133,33 @@ if ((! empty($foruserid) || ! empty($foruserlogin) || ! empty($mode)) && ! $mesg { for($j=0;$j<100;$j++) { - $arrayofmembers[]=array('textleft'=>$textleft, - 'textheader'=>$textheader, - 'textfooter'=>$textfooter, - 'textright'=>$textright, - 'id'=>$objp->rowid, - 'photo'=>$objp->photo); + $arrayofmembers[]=array( + 'textleft'=>$textleft, + 'textheader'=>$textheader, + 'textfooter'=>$textfooter, + 'textright'=>$textright, + 'id'=>$objp->rowid, + 'photo'=>$objp->photo + ); } } else { - $arrayofmembers[]=array('textleft'=>$textleft, - 'textheader'=>$textheader, - 'textfooter'=>$textfooter, - 'textright'=>$textright, - 'id'=>$objp->rowid, - 'photo'=>$objp->photo); + $arrayofmembers[]=array( + 'textleft'=>$textleft, + 'textheader'=>$textheader, + 'textfooter'=>$textfooter, + 'textright'=>$textright, + 'id'=>$objp->rowid, + 'photo'=>$objp->photo + ); } } // For labels if ($mode == 'label') { - $conf->global->ADHERENT_ETIQUETTE_TEXT="%PRENOM% %NOM%\n%ADRESSE%\n%CP% %VILLE%\n%PAYS%"; + if (empty($conf->global->ADHERENT_ETIQUETTE_TEXT)) $conf->global->ADHERENT_ETIQUETTE_TEXT="%FULLNAME%\n%ADDRESS%\n%ZIP% %TOWN%\n%COUNTRY%"; $textleft=make_substitutions($conf->global->ADHERENT_ETIQUETTE_TEXT, $substitutionarray); $textheader=''; $textfooter=''; @@ -153,19 +177,30 @@ if ((! empty($foruserid) || ! empty($foruserlogin) || ! empty($mode)) && ! $mesg } // Build and output PDF - if (empty($mode) || $mode=='card' || $mode='cardlogin') + if (empty($mode) || $mode=='card' || $mode=='cardlogin') { if (! count($arrayofmembers)) { $mesg=$langs->trans("ErrorRecordNotFound"); } - - if (! $mesg) $result=members_card_pdf_create($db, $arrayofmembers, '', $outputlangs); + if (empty($model) || $model == '-1') + { + $mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("DescADHERENT_CARD_TYPE")); + } + if (! $mesg) $result=members_card_pdf_create($db, $arrayofmembers, $model, $outputlangs); } elseif ($mode == 'label') { - $result=members_label_pdf_create($db, $arrayofmembers, '', $outputlangs); + if (! count($arrayofmembers)) + { + $mesg=$langs->trans("ErrorRecordNotFound"); + } + if (empty($modellabel) || $modellabel == '-1') + { + $mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("DescADHERENT_ETIQUETTE_TYPE")); + } + if (! $mesg) $result=members_label_pdf_create($db, $arrayofmembers, $modellabel, $outputlangs); } if ($result <= 0) @@ -178,12 +213,19 @@ if ((! empty($foruserid) || ! empty($foruserlogin) || ! empty($mode)) && ! $mesg dol_print_error($db); } - if (! $mesg) exit; + if (! $mesg) + { + $db->close(); + exit; + } } +/* + * View + */ - +$form=new Form($db); llxHeader('',$langs->trans("MembersCards")); @@ -195,26 +237,53 @@ print '
'; dol_htmloutput_errors($mesg); -print $langs->trans("DocForAllMembersCards",($conf->global->ADHERENT_CARD_TYPE?$conf->global->ADHERENT_CARD_TYPE:$langs->transnoentitiesnoconv("None"))).' '; +print img_picto('','puce').' '.$langs->trans("DocForAllMembersCards",($conf->global->ADHERENT_CARD_TYPE?$conf->global->ADHERENT_CARD_TYPE:$langs->transnoentitiesnoconv("None"))).' '; print ''; print ''; print ''; -print ' '; +print ''; +print $langs->trans("DescADHERENT_CARD_TYPE").' '; +// List of possible labels (defined into $_Avery_Labels variable set into format_cards.lib.php) +$arrayoflabels=array(); +foreach(array_keys($_Avery_Labels) as $codecards) +{ + $arrayoflabels[$codecards]=$_Avery_Labels[$codecards]['name']; +} +print $form->selectarray('model',$arrayoflabels,(GETPOST('model')?GETPOST('model'):$conf->global->ADHERENT_CARD_TYPE),1,0,0); +print '
'; print ''; print '
'; -print $langs->trans("DocForOneMemberCards",($conf->global->ADHERENT_CARD_TYPE?$conf->global->ADHERENT_CARD_TYPE:$langs->transnoentitiesnoconv("None"))).' '; +print img_picto('','puce').' '.$langs->trans("DocForOneMemberCards",($conf->global->ADHERENT_CARD_TYPE?$conf->global->ADHERENT_CARD_TYPE:$langs->transnoentitiesnoconv("None"))).' '; print ''; print ''; -print $langs->trans("Login").': '; -print ' '; +print ''; +print $langs->trans("DescADHERENT_CARD_TYPE").' '; +// List of possible labels (defined into $_Avery_Labels variable set into format_cards.lib.php) +$arrayoflabels=array(); +foreach(array_keys($_Avery_Labels) as $codecards) +{ + $arrayoflabels[$codecards]=$_Avery_Labels[$codecards]['name']; +} +print $form->selectarray('model',$arrayoflabels,(GETPOST('model')?GETPOST('model'):$conf->global->ADHERENT_CARD_TYPE),1,0,0); +print '
'.$langs->trans("Login").': '; +print '
'; print ''; print '
'; -print $langs->trans("DocForLabels",$conf->global->ADHERENT_ETIQUETTE_TYPE).' '; +print img_picto('','puce').' '.$langs->trans("DocForLabels",$conf->global->ADHERENT_ETIQUETTE_TYPE).' '; print ''; print ''; -print ' '; +print ''; +print $langs->trans("DescADHERENT_ETIQUETTE_TYPE").' '; +// List of possible labels (defined into $_Avery_Labels variable set into format_cards.lib.php) +$arrayoflabels=array(); +foreach(array_keys($_Avery_Labels) as $codecards) +{ + $arrayoflabels[$codecards]=$_Avery_Labels[$codecards]['name']; +} +print $form->selectarray('modellabel',$arrayoflabels,(GETPOST('modellabel')?GETPOST('modellabel'):$conf->global->ADHERENT_ETIQUETTE_TYPE),1,0,0); +print '
'; print ''; print '
'; diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 709d7690c74..b841ff04419 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -212,8 +212,22 @@ class Adherent extends CommonObject $substitutionarray=array( '%DOL_MAIN_URL_ROOT%'=>DOL_MAIN_URL_ROOT, '%ID%'=>$msgishtml?dol_htmlentitiesbr($this->id):$this->id, - '%INFOS%'=>$msgishtml?dol_htmlentitiesbr($infos):$infos, '%CIVILITE%'=>$this->getCivilityLabel($msgishtml?0:1), + '%FIRSTNAME%'=>$msgishtml?dol_htmlentitiesbr($this->firstname):$this->firstname, + '%LASTNAME%'=>$msgishtml?dol_htmlentitiesbr($this->lastname):$this->lastname, + '%FULLNAME%'=>$msgishtml?dol_htmlentitiesbr($this->getFullName($langs)):$this->getFullName($langs), + '%COMPANY%'=>$msgishtml?dol_htmlentitiesbr($this->societe):$this->societe, + '%ADDRESS%'=>$msgishtml?dol_htmlentitiesbr($this->address):$this->address, + '%ZIP%'=>$msgishtml?dol_htmlentitiesbr($this->zip):$this->zip, + '%TOWN%'=>$msgishtml?dol_htmlentitiesbr($this->town):$this->town, + '%COUNTRY%'=>$msgishtml?dol_htmlentitiesbr($this->country):$this->country, + '%EMAIL%'=>$msgishtml?dol_htmlentitiesbr($this->email):$this->email, + '%NAISS%'=>$msgishtml?dol_htmlentitiesbr($birthday):$birthday, + '%PHOTO%'=>$msgishtml?dol_htmlentitiesbr($this->photo):$this->photo, + '%LOGIN%'=>$msgishtml?dol_htmlentitiesbr($this->login):$this->login, + '%PASSWORD%'=>$msgishtml?dol_htmlentitiesbr($this->pass):$this->pass, + // For backward compatibility + '%INFOS%'=>$msgishtml?dol_htmlentitiesbr($infos):$infos, '%PRENOM%'=>$msgishtml?dol_htmlentitiesbr($this->firstname):$this->firstname, '%NOM%'=>$msgishtml?dol_htmlentitiesbr($this->lastname):$this->lastname, '%SOCIETE%'=>$msgishtml?dol_htmlentitiesbr($this->societe):$this->societe, @@ -221,11 +235,6 @@ class Adherent extends CommonObject '%CP%'=>$msgishtml?dol_htmlentitiesbr($this->zip):$this->zip, '%VILLE%'=>$msgishtml?dol_htmlentitiesbr($this->town):$this->town, '%PAYS%'=>$msgishtml?dol_htmlentitiesbr($this->country):$this->country, - '%EMAIL%'=>$msgishtml?dol_htmlentitiesbr($this->email):$this->email, - '%NAISS%'=>$msgishtml?dol_htmlentitiesbr($birthday):$birthday, - '%PHOTO%'=>$msgishtml?dol_htmlentitiesbr($this->photo):$this->photo, - '%LOGIN%'=>$msgishtml?dol_htmlentitiesbr($this->login):$this->login, - '%PASSWORD%'=>$msgishtml?dol_htmlentitiesbr($this->pass):$this->pass ); complete_substitutions_array($substitutionarray, $langs); @@ -1241,6 +1250,7 @@ class Adherent extends CommonObject global $langs,$conf; $error=0; + $now=dol_now(); // Check parameters if ($this->statut == 1) @@ -1253,7 +1263,7 @@ class Adherent extends CommonObject $sql = "UPDATE ".MAIN_DB_PREFIX."adherent SET"; $sql.= " statut = 1"; - $sql.= ", datevalid = ".$this->db->idate(mktime()); + $sql.= ", datevalid = ".$this->db->idate($now); $sql.= ", fk_user_valid=".$user->id; $sql.= " WHERE rowid = ".$this->id; diff --git a/htdocs/adherents/class/cotisation.class.php b/htdocs/adherents/class/cotisation.class.php index f53eb509657..4a07b5dd9c9 100644 --- a/htdocs/adherents/class/cotisation.class.php +++ b/htdocs/adherents/class/cotisation.class.php @@ -65,6 +65,9 @@ class Cotisation extends CommonObject function create($userid) { global $langs; + + $now=dol_now(); + // Check parameters if ($this->datef <= $this->dateh) { @@ -73,7 +76,7 @@ class Cotisation extends CommonObject } $sql = "INSERT INTO ".MAIN_DB_PREFIX."cotisation (fk_adherent, datec, dateadh, datef, cotisation, note)"; - $sql.= " VALUES (".$this->fk_adherent.", '".$this->db->idate(mktime())."',"; + $sql.= " VALUES (".$this->fk_adherent.", '".$this->db->idate($now)."',"; $sql.= " '".$this->db->idate($this->dateh)."',"; $sql.= " '".$this->db->idate($this->datef)."',"; $sql.= " ".$this->amount.",'".$this->db->escape($this->note)."')"; diff --git a/htdocs/adherents/fiche.php b/htdocs/adherents/fiche.php index c7d2c2b162d..cd15b82eb42 100644 --- a/htdocs/adherents/fiche.php +++ b/htdocs/adherents/fiche.php @@ -160,7 +160,7 @@ if ($action == 'confirm_create_user' && $confirm == 'yes' && $user->rights->user { // Creation user $nuser = new User($db); - $result=$nuser->create_from_member($object,GETPOST('login','alpha')); + $result=$nuser->create_from_member($object,GETPOST('login')); if ($result < 0) { @@ -181,7 +181,7 @@ if ($action == 'confirm_create_thirdparty' && $confirm == 'yes' && $user->rights { // Creation user $company = new Societe($db); - $result=$company->create_from_member($object,GETPOST('companyname','alpha')); + $result=$company->create_from_member($object,GETPOST('companyname')); if ($result < 0) { diff --git a/htdocs/adherents/htpasswd.php b/htdocs/adherents/htpasswd.php index e2f2bacc853..02c505ebfb0 100644 --- a/htdocs/adherents/htpasswd.php +++ b/htdocs/adherents/htpasswd.php @@ -37,6 +37,8 @@ if (! $user->rights->adherent->export) accessforbidden(); llxHeader(); +$now=dol_now(); + if ($sortorder == "") { $sortorder="ASC"; } if ($sortfield == "") { $sortfield="d.login"; } if (! isset($statut)) @@ -56,7 +58,7 @@ $sql .= " FROM ".MAIN_DB_PREFIX."adherent as d "; $sql .= " WHERE d.statut = $statut "; if ($cotis==1) { - $sql .= " AND datefin > '".$db->idate(mktime())."'"; + $sql .= " AND datefin > '".$db->idate($now)."'"; } $sql.= $db->order($sortfield,$sortorder); //$sql.=$db->plimit($conf->liste_limit, $offset); diff --git a/htdocs/adherents/liste.php b/htdocs/adherents/liste.php index 9b9d631bf28..dbdb8174c6b 100644 --- a/htdocs/adherents/liste.php +++ b/htdocs/adherents/liste.php @@ -52,7 +52,7 @@ $search_login=GETPOST("search_login"); $type=GETPOST("type"); $search_email=GETPOST("search_email"); $search_categ=GETPOST("search_categ"); -$sall=GETPOST("sall",'int'); +$sall=GETPOST("sall"); if (GETPOST("button_removefilter")) { diff --git a/htdocs/adherents/type.php b/htdocs/adherents/type.php index eb93f7d44a3..16203fecde3 100644 --- a/htdocs/adherents/type.php +++ b/htdocs/adherents/type.php @@ -336,6 +336,8 @@ if ($rowid > 0) // Show list of members (nearly same code than in page liste.php) $membertypestatic=new AdherentType($db); + + $now=dol_now(); $sql = "SELECT d.rowid, d.login, d.prenom as firstname, d.nom as lastname, d.societe, "; $sql.= " d.datefin,"; @@ -376,11 +378,11 @@ if ($rowid > 0) } if ($filter == 'uptodate') { - $sql.=" AND datefin >= ".$db->idate(mktime()); + $sql.=" AND datefin >= ".$db->idate($now); } if ($filter == 'outofdate') { - $sql.=" AND datefin < ".$db->idate(mktime()); + $sql.=" AND datefin < ".$db->idate($now); } // Count total nb of records $nbtotalofrecords = 0; diff --git a/htdocs/admin/barcode.php b/htdocs/admin/barcode.php index f87df7b6ea9..39e059d3c97 100644 --- a/htdocs/admin/barcode.php +++ b/htdocs/admin/barcode.php @@ -107,8 +107,8 @@ $barcodelist=array(); clearstatcache(); -// Check if there is external substitution to do asked by plugins -$dirbarcode=array_merge(array("/core/modules/barcode/"),$conf->barcode_modules); +// Scan list of all barcode included provided by external modules +$dirbarcode=array_merge(array("/core/modules/barcode/"),$conf->modules_parts['barcode']); foreach($dirbarcode as $reldir) { diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php index d1f838056d4..789d4f7361d 100644 --- a/htdocs/admin/company.php +++ b/htdocs/admin/company.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2004-2012 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2010 Juanjo Menent * Copyright (C) 2011 Philippe Grand @@ -137,7 +137,7 @@ if ( ($action == 'update' && empty($_POST["cancel"])) dolibarr_set_const($db, "MAIN_INFO_SIRET",$_POST["siret"],'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_INFO_APE",$_POST["ape"],'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_INFO_RCS",$_POST["rcs"],'chaine',0,'',$conf->entity); - dolibarr_set_const($db, "MAIN_INFO_TRAINER",$_POST["trainer"],'chaine',0,'',$conf->entity); + dolibarr_set_const($db, "MAIN_INFO_PROFID5",$_POST["MAIN_INFO_PROFID5"],'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_INFO_PROFID6",$_POST["MAIN_INFO_PROFID6"],'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_INFO_TVAINTRA",$_POST["tva"],'chaine',0,'',$conf->entity); @@ -481,7 +481,7 @@ if ($action == 'edit' || $action == 'updateedit') print ''; } diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 51fd331a2ae..ea7dcd7c4ab 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2004-2012 Laurent Destailleur * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2010-2011 Juanjo Menent @@ -65,13 +65,14 @@ include_once(DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'); $hookmanager=new HookManager($db); $hookmanager->initHooks(array('admin')); -// Thi page is a generic page to edit dictionnaries -// Put here delacaration of dictionnaries properties +// This page is a generic page to edit dictionnaries +// Put here declaration of dictionnaries properties // Sort order to show dictionnary (0 is space). All other dictionnaries (added by modules) will be at end of this. $taborder=array(9,0,4,3,2,0,1,8,19,16,0,5,11,0,6,0,10,12,13,0,14,0,7,17,0,22,20,18,21,0,15); // Name of SQL tables of dictionnaries +$tabname=array(); $tabname[1] = MAIN_DB_PREFIX."c_forme_juridique"; $tabname[2] = MAIN_DB_PREFIX."c_departements"; $tabname[3] = MAIN_DB_PREFIX."c_regions"; @@ -96,6 +97,7 @@ $tabname[21]= MAIN_DB_PREFIX."c_availability"; $tabname[22]= MAIN_DB_PREFIX."c_input_reason"; // Dictionary labels +$tablib=array(); $tablib[1] = "DictionnaryCompanyJuridicalType"; $tablib[2] = "DictionnaryCanton"; $tablib[3] = "DictionnaryRegion"; @@ -120,6 +122,7 @@ $tablib[21]= "DictionnaryAvailability"; $tablib[22]= "DictionnarySource"; // Requete pour extraction des donnees des dictionnaires +$tabsql=array(); $tabsql[1] = "SELECT f.rowid as rowid, f.code, f.libelle, p.code as pays_code, p.libelle as pays, f.active FROM ".MAIN_DB_PREFIX."c_forme_juridique as f, ".MAIN_DB_PREFIX."c_pays as p WHERE f.fk_pays=p.rowid"; $tabsql[2] = "SELECT d.rowid as rowid, d.code_departement as code, d.nom as libelle, d.fk_region as region_id, r.nom as region, p.code as pays_code, p.libelle as pays, d.active FROM ".MAIN_DB_PREFIX."c_departements as d, ".MAIN_DB_PREFIX."c_regions as r, ".MAIN_DB_PREFIX."c_pays as p WHERE d.fk_region=r.code_region and r.fk_pays=p.rowid and r.active=1 and p.active=1"; $tabsql[3] = "SELECT r.rowid as rowid, code_region as code, nom as libelle, r.fk_pays as pays_id, p.code as pays_code, p.libelle as pays, r.active FROM ".MAIN_DB_PREFIX."c_regions as r, ".MAIN_DB_PREFIX."c_pays as p WHERE r.fk_pays=p.rowid and p.active=1"; @@ -144,6 +147,7 @@ $tabsql[21]= "SELECT c.rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX $tabsql[22]= "SELECT rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX."c_input_reason"; // Critere de tri du dictionnaire +$tabsqlsort=array(); $tabsqlsort[1] ="pays ASC, code ASC"; $tabsqlsort[2] ="pays ASC, code ASC"; $tabsqlsort[3] ="pays ASC, code ASC"; @@ -168,6 +172,7 @@ $tabsqlsort[21]="code ASC, label ASC"; $tabsqlsort[22]="code ASC, label ASC"; // Nom des champs en resultat de select pour affichage du dictionnaire +$tabfield=array(); $tabfield[1] = "code,libelle,pays"; $tabfield[2] = "code,libelle,region_id,region,pays"; // "code,libelle,region,pays_code-pays" $tabfield[3] = "code,libelle,pays_id,pays"; @@ -192,6 +197,7 @@ $tabfield[21]= "code,label"; $tabfield[22]= "code,label"; // Nom des champs d'edition pour modification d'un enregistrement +$tabfieldvalue=array(); $tabfieldvalue[1] = "code,libelle,pays"; $tabfieldvalue[2] = "code,libelle,region"; // "code,libelle,region" $tabfieldvalue[3] = "code,libelle,pays"; @@ -216,6 +222,7 @@ $tabfieldvalue[21]= "code,label"; $tabfieldvalue[22]= "code,label"; // Nom des champs dans la table pour insertion d'un enregistrement +$tabfieldinsert=array(); $tabfieldinsert[1] = "code,libelle,fk_pays"; $tabfieldinsert[2] = "code_departement,nom,fk_region"; $tabfieldinsert[3] = "code_region,nom,fk_pays"; @@ -242,6 +249,7 @@ $tabfieldinsert[22]= "code,label"; // Nom du rowid si le champ n'est pas de type autoincrement // Example: "" if id field is "rowid" and has autoincrement on // "nameoffield" if id field is not "rowid" or has not autoincrement on +$tabrowid=array(); $tabrowid[1] = ""; $tabrowid[2] = ""; $tabrowid[3] = ""; @@ -266,6 +274,7 @@ $tabrowid[21]= "rowid"; $tabrowid[22]= "rowid"; // Condition to show dictionnary in setup page +$tabcond=array(); $tabcond[1] = true; $tabcond[2] = true; $tabcond[3] = true; @@ -289,8 +298,34 @@ $tabcond[20]= $conf->fournisseur->enabled; $tabcond[21]= $conf->propal->enabled; $tabcond[22]= $conf->commande->enabled||$conf->propal->enabled; +// List of help for fields +$tabhelp=array(); +$tabhelp[1] = array(); +$tabhelp[2] = array(); +$tabhelp[3] = array(); +$tabhelp[4] = array(); +$tabhelp[5] = array(); +$tabhelp[6] = array(); +$tabhelp[7] = array(); +$tabhelp[8] = array(); +$tabhelp[9] = array(); +$tabhelp[10] = array(); +$tabhelp[11] = array(); +$tabhelp[12] = array(); +$tabhelp[13] = array(); +$tabhelp[14] = array(); +$tabhelp[15] = array(); +$tabhelp[16] = array(); +$tabhelp[17] = array(); +$tabhelp[18] = array(); +$tabhelp[19] = array(); +$tabhelp[20] = array(); +$tabhelp[21] = array(); +$tabhelp[22] = array(); + +// Complete all arrays with entries found into modules +complete_dictionnary_with_modules($taborder,$tabname,$tablib,$tabsql,$tabsqlsort,$tabfield,$tabfieldvalue,$tabfieldinsert,$tabrowid,$tabcond,$tabhelp); -complete_dictionnary_with_modules($taborder,$tabname,$tablib,$tabsql,$tabsqlsort,$tabfield,$tabfieldvalue,$tabfieldinsert,$tabrowid,$tabcond); // Define elementList and sourceList (used for dictionnary "type of contacts") $elementList = array(); @@ -320,9 +355,7 @@ if ($id == 11) $msg=''; -/* - * Actions ajout ou modification d'une entree dans un dictionnaire de donnee - */ +// Actions ajout ou modification d'une entree dans un dictionnaire de donnee if ($_POST["actionadd"] || $_POST["actionmodify"]) { $listfield=explode(',',$tabfield[$id]); @@ -503,7 +536,8 @@ if ($action == 'confirm_delete' && $confirm == 'yes') // delete } } -if ($action == $acts[0]) // activate +// activate +if ($action == $acts[0]) { if ($tabrowid[$id]) { $rowidcol=$tabrowid[$id]; } else { $rowidcol="rowid"; } @@ -522,7 +556,8 @@ if ($action == $acts[0]) // activate } } -if ($action == $acts[1]) // disable +// disable +if ($action == $acts[1]) { if ($tabrowid[$id]) { $rowidcol=$tabrowid[$id]; } else { $rowidcol="rowid"; } @@ -568,9 +603,7 @@ if (empty($id)) print "
\n"; -/* - * Confirmation de la suppression de la ligne - */ +// Confirmation de la suppression de la ligne if ($action == 'delete') { $ret=$form->form_confirm($_SERVER["PHP_SELF"].'?'.($page?'page='.$page.'&':'').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.$rowid.'&code='.$_GET["code"].'&id='.$id, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete','',0,1); @@ -620,7 +653,6 @@ if ($id) $var=false; $fieldlist=explode(',',$tabfield[$id]); - // print '
'.$langs->transcountry("ProfId5",$country_code).''; if ($country_code) { - print ''; + print ''; } else { @@ -818,7 +818,7 @@ else print '
'.$langs->transcountry("ProfId5",$country_code).''; if ($langs->transcountry("ProfId5",$country_code) != '-') { - print $conf->global->MAIN_INFO_TRAINER; + print $conf->global->MAIN_INFO_PROFID5; } print '
'; // Line for title print ''; @@ -655,7 +687,9 @@ if ($id) if ($valuetoshow != '') { print ''; } if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') $alabelisused=1; @@ -678,7 +712,7 @@ if ($id) } } - + $tmpaction = 'create'; $parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$_GET["id"]]); $reshook=$hookmanager->executeHooks('createDictionaryFieldlist',$parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks @@ -746,10 +780,10 @@ if ($id) // Affiche nom du champ if ($showfield) { - print_liste_field_titre($valuetoshow,"dict.php",$fieldlist[$field],($page?'page='.$page.'&':'').'&id='.$id,"","",$sortfield,$sortorder); + print_liste_field_titre($valuetoshow,$_SERVER["PHP_SELF"],$fieldlist[$field],($page?'page='.$page.'&':'').'&id='.$id,"","",$sortfield,$sortorder); } } - print_liste_field_titre($langs->trans("Status"),"dict.php","active",($page?'page='.$page.'&':'').'&id='.$id,"",'align="center"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"active",($page?'page='.$page.'&':'').'&id='.$id,"",'align="center"',$sortfield,$sortorder); print ''; print ''; @@ -768,14 +802,14 @@ if ($id) print ''; print ''; print ''; - + $tmpaction='edit'; $parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]); $reshook=$hookmanager->executeHooks('editDictionaryFieldlist',$parameters,$obj, $tmpaction); // Note that $action and $object may have been modified by some hooks $error=$hookmanager->error; $errors=$hookmanager->errors; - + if (empty($reshook)) fieldList($fieldlist,$obj,$tabname[$id]); - + print ''; } @@ -784,7 +818,7 @@ if ($id) $tmpaction = 'view'; $parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]); $reshook=$hookmanager->executeHooks('viewDictionaryFieldlist',$parameters,$obj, $tmpaction); // Note that $action and $object may have been modified by some hooks - + $error=$hookmanager->error; $errors=$hookmanager->errors; if (empty($reshook)) @@ -901,7 +935,7 @@ if ($id) // Modify link if ($iserasable) print ''; else print ''; - + // Delete link if ($iserasable) print ''; else print ''; diff --git a/htdocs/admin/mailing.php b/htdocs/admin/mailing.php index 80d7ba16dff..da844ed9934 100644 --- a/htdocs/admin/mailing.php +++ b/htdocs/admin/mailing.php @@ -34,6 +34,8 @@ if (!$user->admin) $action = GETPOST('action','alpha'); + + /* * Actions */ @@ -41,18 +43,39 @@ $action = GETPOST('action','alpha'); if ($action == 'setvalue' && $user->admin) { $db->begin(); - + $mailfrom = GETPOST('MAILING_EMAIL_FROM','alpha'); $mailerror = GETPOST('MAILING_EMAIL_ERRORSTO','alpha'); $checkread = GETPOST('value','alpha'); - + $checkread_key = GETPOST('MAILING_EMAIL_UNSUBSCRIBE_KEY','alpha'); + $res=dolibarr_set_const($db, "MAILING_EMAIL_FROM",$mailfrom,'chaine',0,'',$conf->entity); if (! $res > 0) $error++; $res=dolibarr_set_const($db, "MAILING_EMAIL_ERRORSTO",$mailerror,'chaine',0,'',$conf->entity); if (! $res > 0) $error++; - $res=dolibarr_set_const($db, "MAILING_EMAIL_UNSUBSCRIBE",$checkread,'chaine',0,'',$conf->entity); - if (! $res > 0) $error++; + if ($checkread=='on') + { + $res=dolibarr_set_const($db, "MAILING_EMAIL_UNSUBSCRIBE",1,'chaine',0,'',$conf->entity); + if (! $res > 0) $error++; + } + else if ($checkread=='off') + { + $res=dolibarr_set_const($db, "MAILING_EMAIL_UNSUBSCRIBE",0,'chaine',0,'',$conf->entity); + if (! $res > 0) $error++; + } + //Create temporary encryption key if nedded + if (($conf->global->MAILING_EMAIL_UNSUBSCRIBE==1) && (empty($checkread_key))) + { + $chars = "abcdef(ghijklmnopqrstuvwxyz;!ABCDEFGH,IJKLMNOPQRSTUVWXYZ01_23456789"; + mt_srand(10000000*(double)microtime()); + for ($i = 0, $str = '', $lc = strlen($chars)-1; $i < 30; $i++) { + $checkread_key .= $chars[mt_rand(0, $lc)]; + } + } + $res=dolibarr_set_const($db, "MAILING_EMAIL_UNSUBSCRIBE_KEY",$checkread_key,'chaine',0,'',$conf->entity); + if (! $res > 0) $error++; + if (! $error) { $db->commit(); @@ -104,23 +127,31 @@ print ''; + $var=!$var; print ''; +$var=!$var; +print ''; print ''; diff --git a/htdocs/admin/mails.php b/htdocs/admin/mails.php index 0d0f373ab7f..0ae433f0e72 100644 --- a/htdocs/admin/mails.php +++ b/htdocs/admin/mails.php @@ -210,7 +210,7 @@ if (($action == 'send' || $action == 'sendhtml') && ! $_POST['addfile'] && ! $_P $body=make_substitutions($body,$substitutionarrayfortest); require_once(DOL_DOCUMENT_ROOT."/core/class/CMailFile.class.php"); - $mailfile = new CMailFile( + $mailfile = new CMailFile( $subject, $sendto, $email_from, diff --git a/htdocs/admin/proxy.php b/htdocs/admin/proxy.php index e5d36d3e2fa..afc7a7e1236 100755 --- a/htdocs/admin/proxy.php +++ b/htdocs/admin/proxy.php @@ -41,19 +41,31 @@ $upload_dir=$conf->admin->dir_temp; if (GETPOST("action") == 'set_proxy') { - $result=0; - $result+=dolibarr_set_const($db, 'MAIN_USE_CONNECT_TIMEOUT', $_POST["MAIN_USE_CONNECT_TIMEOUT"], 'chaine',0,'',$conf->entity); - $result+=dolibarr_set_const($db, 'MAIN_USE_RESPONSE_TIMEOUT', $_POST["MAIN_USE_RESPONSE_TIMEOUT"], 'chaine',0,'',$conf->entity); - $result+=dolibarr_set_const($db, 'MAIN_PROXY_USE', $_POST["MAIN_PROXY_USE"], 'chaine',0,'',$conf->entity); - $result+=dolibarr_set_const($db, 'MAIN_PROXY_HOST',$_POST["MAIN_PROXY_HOST"],'chaine',0,'',$conf->entity); - $result+=dolibarr_set_const($db, 'MAIN_PROXY_PORT',$_POST["MAIN_PROXY_PORT"],'chaine',0,'',$conf->entity); - $result+=dolibarr_set_const($db, 'MAIN_PROXY_USER',$_POST["MAIN_PROXY_USER"],'chaine',0,'',$conf->entity); - $result+=dolibarr_set_const($db, 'MAIN_PROXY_PASS',$_POST["MAIN_PROXY_PASS"],'chaine',0,'',$conf->entity); - if ($result < 5) + if (GETPOST("MAIN_USE_CONNECT_TIMEOUT") && ! is_numeric(GETPOST("MAIN_USE_CONNECT_TIMEOUT"))) { - dol_print_error($db); + $mesg='
'.$langs->trans("ErrorValueMustBeInteger").'
'; + $error++; } - else + if (GETPOST("MAIN_USE_RESPONSE_TIMEOUT") && ! is_numeric(GETPOST("MAIN_USE_RESPONSE_TIMEOUT"))) + { + $mesg='
'.$langs->trans("ErrorValueMustBeInteger").'
'; + $error++; + } + + if (! $error) + { + $result=0; + $result+=dolibarr_set_const($db, 'MAIN_USE_CONNECT_TIMEOUT', GETPOST("MAIN_USE_CONNECT_TIMEOUT"), 'chaine',0,'',$conf->entity); + $result+=dolibarr_set_const($db, 'MAIN_USE_RESPONSE_TIMEOUT', GETPOST("MAIN_USE_RESPONSE_TIMEOUT"), 'chaine',0,'',$conf->entity); + $result+=dolibarr_set_const($db, 'MAIN_PROXY_USE', GETPOST("MAIN_PROXY_USE"), 'chaine',0,'',$conf->entity); + $result+=dolibarr_set_const($db, 'MAIN_PROXY_HOST',GETPOST("MAIN_PROXY_HOST"),'chaine',0,'',$conf->entity); + $result+=dolibarr_set_const($db, 'MAIN_PROXY_PORT',GETPOST("MAIN_PROXY_PORT"),'chaine',0,'',$conf->entity); + $result+=dolibarr_set_const($db, 'MAIN_PROXY_USER',GETPOST("MAIN_PROXY_USER"),'chaine',0,'',$conf->entity); + $result+=dolibarr_set_const($db, 'MAIN_PROXY_PASS',GETPOST("MAIN_PROXY_PASS"),'chaine',0,'',$conf->entity); + if ($result < 5) dol_print_error($db); + } + + if (! $error) { $mesg='
'.$langs->trans("RecordModifiedSuccessfully").'
'; } @@ -122,7 +134,7 @@ print ''; print ''; print ''; diff --git a/htdocs/admin/system/modules.php b/htdocs/admin/system/modules.php index 84c8340ff12..a3a52653496 100644 --- a/htdocs/admin/system/modules.php +++ b/htdocs/admin/system/modules.php @@ -47,29 +47,30 @@ $modules = array(); $modules_names = array(); $modules_files = array(); +// Search modules dirs +$modulesdir = array(); foreach ($conf->file->dol_document_root as $type => $dirroot) { - $modulesdir[] = $dirroot . "/core/modules/"; - - if ($type == 'alt') - { - $handle=@opendir($dirroot); - if (is_resource($handle)) - { - while (($file = readdir($handle))!==false) - { - if (is_dir($dirroot.'/'.$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS' && $file != 'includes') - { - if (is_dir($dirroot . '/' . $file . '/core/modules/')) - { - $modulesdir[] = $dirroot . '/' . $file . '/core/modules/'; - } - } - } - closedir($handle); - } - } + $modulesdir[$dirroot . '/core/modules/'] = $dirroot . '/core/modules/'; + + $handle=@opendir($dirroot); + if (is_resource($handle)) + { + while (($file = readdir($handle))!==false) + { + if (is_dir($dirroot.'/'.$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS' && $file != 'includes') + { + if (is_dir($dirroot . '/' . $file . '/core/modules/')) + { + $modulesdir[$dirroot . '/' . $file . '/core/modules/'] = $dirroot . '/' . $file . '/core/modules/'; + } + } + } + closedir($handle); + } } +//var_dump($modulesdir); + // Load list of modules foreach($modulesdir as $dir) diff --git a/htdocs/admin/tools/update.php b/htdocs/admin/tools/update.php index 233bf9be7fd..47e53ace4b2 100644 --- a/htdocs/admin/tools/update.php +++ b/htdocs/admin/tools/update.php @@ -1,6 +1,6 @@ - * Copyright (C) 2009 Regis Houssin + * Copyright (C) 2009-2012 Regis Houssin * Copyright (C) 2012 Juanjo Menent * * This program is free software; you can redistribute it and/or modify @@ -34,9 +34,7 @@ if (GETPOST('msg','alpha')) $message='
'.GETPOST('msg','alpha' $urldolibarr='http://www.dolibarr.org/downloads/'; -//$urldolibarrmodules='http://www.dolibarr.org/downloads/cat_view/65-modulesaddon'; $urldolibarrmodules='http://www.dolistore.com/'; -//$urldolibarrthemes='http://www.dolibarr.org/'; $urldolibarrthemes='http://www.dolistore.com/'; $dolibarrroot=preg_replace('/([\\/]+)$/i','',DOL_DOCUMENT_ROOT); $dolibarrroot=preg_replace('/([^\\/]+)$/i','',$dolibarrroot); @@ -55,14 +53,16 @@ if (GETPOST('action','alpha')=='install') if (! $original_file) { - $mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentities("File")); + $langs->load("Error"); + $mesg = '
'.$langs->trans("ErrorFileRequired").'
'; $error++; } else { - if (! preg_match('/\.tgz/i',$original_file) && ! preg_match('/\.zip/i',$original_file)) + if (! preg_match('/\.zip/i',$original_file)) { - $mesg=$langs->trans("ErrorFileMustBeADolibarrPackage"); + $langs->load("errors"); + $mesg = '
'.$langs->trans("ErrorFileMustBeADolibarrPackage",$original_file).'
'; $error++; } } @@ -76,33 +76,16 @@ if (GETPOST('action','alpha')=='install') if ($result > 0) { $documentrootalt=DOL_DOCUMENT_ROOT_ALT; - $result=dol_uncompress($newfile,$_FILES['fileinstall']['type'],$documentrootalt); + $result=dol_uncompress($newfile,$documentrootalt); if (! empty($result['error'])) { - if ($result['error'] == -1) - { - $langs->load("errors"); - $mesg = '
'.$langs->trans("ErrorBadFileFormat").'
'; - } - elseif ($result['error'] == -2) - { - $langs->load("errors"); - $mesg = '
'.$langs->trans("ErrorOSSystem").'
'; - } - elseif ($result['error'] == -3) - { - $langs->load("errors"); - $mesg = '
'.$langs->trans("ErrorUncompFile",$_FILES['fileinstall']['name']).'
'; - } - elseif ($result['error'] == -4) - { - $langs->load("errors"); - $mesg = '
'.$langs->trans("ErrorUncompFile",$_FILES['fileinstall']['name']).'
'; - } + $langs->load("errors"); + $mesg = '
'.$langs->trans($result['error'],$original_file).'
'; + } else { - $mesg = "".$langs->trans("SetupIsReadyForUse").""; + $mesg = '
'.$langs->trans("SetupIsReadyForUse").'
'; } } } @@ -113,10 +96,9 @@ if (GETPOST('action','alpha')=='install') */ $dirins=DOL_DOCUMENT_ROOT_ALT; -$vale=(is_dir($dirins)); -$system=PHP_OS; +$dirins_ok=(is_dir($dirins)); -$wikihelp='EN:Installation_-_Upgrade|FR:Installation_-_Mise_à_jour|ES:Instalaci&omodulon_-_Actualizaci&omodulon'; +$wikihelp='EN:Installation_-_Upgrade|FR:Installation_-_Mise_à_jour|ES:Instalación_-_Actualización'; llxHeader('',$langs->trans("Upgrade"),$wikihelp); print_fiche_titre($langs->trans("Upgrade"),'','setup'); @@ -159,27 +141,21 @@ print ''.$langs->trans("StepNb",3).': '; print $langs->trans("UnpackPackageInDolibarrRoot",$dolibarrroot).'
'; if (! empty($conf->global->MAIN_ONLINE_INSTALL_MODULE)) { - if ($vale == 1 && $dirins != 'DOL_DOCUMENT_ROOT_ALT' && ($system=="Linux" || $system=="Darwin")) + if ($dirins_ok && $dirins != 'DOL_DOCUMENT_ROOT_ALT') { print '
'; print ''; print $langs->trans("YouCanSubmitFile").' '; print ''; print ''; - } - elseif ($system!='Linux') - { - $langs->load('errors'); - $message=info_admin($langs->transnoentities("ErrorOSSystem")); - print $message; } - else + else { $message=info_admin($langs->trans("NotExistsDirect").$langs->trans("InfDirAlt").$langs->trans("InfDirExample")); print $message; - } + } } -else +else { print ''.$langs->trans("StepNb",4).': '; print $langs->trans("SetupIsReadyForUse").'
'; @@ -189,7 +165,7 @@ print ''; if (! empty($result['return'])) { print '
'; - + foreach($result['return'] as $value) { echo $value.'
'; diff --git a/htdocs/bookmarks/fiche.php b/htdocs/bookmarks/fiche.php index 67bd962e747..808e1faf162 100644 --- a/htdocs/bookmarks/fiche.php +++ b/htdocs/bookmarks/fiche.php @@ -1,6 +1,6 @@ - * Copyright (C) 2005-2009 Laurent Destailleur + * Copyright (C) 2005-2012 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,12 +28,12 @@ require_once(DOL_DOCUMENT_ROOT."/bookmarks/class/bookmark.class.php"); $langs->load("other"); -$action=isset($_GET["action"])?$_GET["action"]:$_POST["action"]; -$title=isset($_GET["title"])?$_GET["title"]:$_POST["title"]; -$url=isset($_GET["url"])?$_GET["url"]:$_POST["url"]; -$target=isset($_GET["target"])?$_GET["target"]:$_POST["target"]; -$userid=isset($_GET["userid"])?$_GET["userid"]:$_POST["userid"]; -$position=isset($_GET["position"])?$_GET["position"]:$_POST["position"]; +$action=GETPOST("action"); +$title=GETPOST("title"); +$url=GETPOST("url"); +$target=GETPOST("target"); +$userid=GETPOST("userid"); +$position=GETPOST("position"); /* @@ -139,7 +139,9 @@ if ($action == 'create') print_fiche_titre($langs->trans("NewBookmark")); - if ($mesg) print "$mesg
"; + dol_fiche_head($head, $hselected, $langs->trans("Bookmark"),0,'bookmark'); + + dol_htmloutput_mesg($mesg); print '
'; - print $valuetoshow; + if (preg_match('/http:/i',$tabhelp[$id][$value])) print ''.$valuetoshow.''; + else if (! empty($tabhelp[$id][$value])) print $form->textwithpicto($valuetoshow,$tabhelp[$id][$value]); + else print $valuetoshow; print ' 
 '; print ' rowid?$obj->rowid:$obj->code).'">'.img_edit().' '.img_delete().' 
'; print $langs->trans("ActivateCheckRead").''; if ($conf->global->MAILING_EMAIL_UNSUBSCRIBE==1) { - print ''; + print ''; print img_picto($langs->trans("Enabled"),'switch_on'); print ''; + $readonly=''; } else { - print ''; + print ''; print img_picto($langs->trans("Disabled"),'switch_off'); print ''; + $readonly='disabled="disabled"'; } print '
'; +print $langs->trans("ActivateCheckReadKey").''; +print ''; +print '
'.$langs->trans("ConnectionTimeout").''; //print $form->textwithpicto('',$langs->trans("SessionExplanation",ini_get("session.gc_probability"),ini_get("session.gc_divisor"))); print ''; -print ''; +print 'global->MAIN_USE_CONNECT_TIMEOUT).'">'; print ' '.$langs->trans("seconds"); print '
'; @@ -159,16 +161,18 @@ if ($action == 'create') // Position print ''; + print ''; - print '
'.$langs->trans("Position").''; print 'position).'">'; - print '
 
'; + print '

'; + + print '
'; print '   '; print ''; - print ''; - - print ''; + print '
'; print ''; + + dol_fiche_end(); } @@ -248,17 +252,13 @@ if ($_GET["id"] > 0 && ! preg_match('/^add/i',$_GET["action"])) // Date creation print ''.$langs->trans("DateCreation").''.dol_print_date($bookmark->datec,'dayhour').''; - if ($_GET["action"] == 'edit') print '     '; - - print ''; + if ($_GET["action"] == 'edit') print '
   
'; + if ($_GET["action"] == 'edit') print ''; - - - print "\n"; - + dol_fiche_end(); print "
\n"; diff --git a/htdocs/boutique/index.php b/htdocs/boutique/index.php index b3391f05d91..e44533e007e 100644 --- a/htdocs/boutique/index.php +++ b/htdocs/boutique/index.php @@ -49,10 +49,12 @@ print ''; print ''; print ''; +$now=dol_now(); + $sql = "SELECT sum(t.value) as value, MONTH(o.date_purchased) as mois"; $sql .= " FROM ".$conf->global->OSC_DB_NAME.".".$conf->global->OSC_DB_TABLE_PREFIX."orders_total as t"; $sql .= " JOIN ".$conf->global->OSC_DB_NAME.".".$conf->global->OSC_DB_TABLE_PREFIX."orders as o ON o.orders_id = t.orders_id"; -$sql .= " WHERE t.class = 'ot_subtotal' AND YEAR(o.date_purchased) = YEAR(".$dbosc->idate(mktime()).")"; +$sql .= " WHERE t.class = 'ot_subtotal' AND YEAR(o.date_purchased) = YEAR(".$dbosc->idate($now).")"; $sql .= " GROUP BY mois ORDER BY mois"; $result=$dbosc->query($sql); diff --git a/htdocs/boutique/promotion/class/promotion.class.php b/htdocs/boutique/promotion/class/promotion.class.php index 5ee5a743a3f..5631f30207c 100644 --- a/htdocs/boutique/promotion/class/promotion.class.php +++ b/htdocs/boutique/promotion/class/promotion.class.php @@ -73,11 +73,13 @@ class Promotion $newprice = $percent * $this->price_init; - $date_exp = "2003-05-01"; + $date_exp = "2003-05-01"; // TODO ???? + + $now=dol_now(); $sql = "INSERT INTO ".$conf->global->OSC_DB_NAME.".".$conf->global->OSC_DB_TABLE_PREFIX."specials "; $sql .= " (products_id, specials_new_products_price, specials_date_added, specials_last_modified, expires_date, date_status_change, status) "; - $sql .= " VALUES ($pid, $newprice, '".$this->db->idate(mktime())."', NULL, '".$this->db->idate(mktime()+3600*24*365)."', NULL, 1)"; + $sql .= " VALUES ($pid, $newprice, '".$this->db->idate($now)."', NULL, '".$this->db->idate($now+3600*24*365)."', NULL, 1)"; if ($this->db->query($sql) ) { diff --git a/htdocs/comm/index.php b/htdocs/comm/index.php index accc3314bd0..14545c7ae84 100644 --- a/htdocs/comm/index.php +++ b/htdocs/comm/index.php @@ -46,6 +46,7 @@ if ($user->societe_id > 0) } $max=5; +$now=dol_now(); /* * Actions @@ -58,7 +59,7 @@ if (isset($_GET["action"]) && $_GET["action"] == 'add_bookmark') { dol_print_error($db); } - $sql = "INSERT INTO ".MAIN_DB_PREFIX."bookmark (fk_soc, dateb, fk_user) VALUES (".$_GET["socid"].", ".$db->idate(mktime()).",".$user->id.");"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."bookmark (fk_soc, dateb, fk_user) VALUES (".$_GET["socid"].", ".$db->idate($now).",".$user->id.");"; if (! $db->query($sql) ) { dol_print_error($db); diff --git a/htdocs/comm/mailing/class/mailing.class.php b/htdocs/comm/mailing/class/mailing.class.php index 44aaea758a2..9df558ac901 100644 --- a/htdocs/comm/mailing/class/mailing.class.php +++ b/htdocs/comm/mailing/class/mailing.class.php @@ -95,10 +95,12 @@ class Mailing extends CommonObject $this->error = $langs->trans("ErrorMailFromRequired"); return -1; } + + $now=dol_now(); $sql = "INSERT INTO ".MAIN_DB_PREFIX."mailing"; $sql .= " (date_creat, fk_user_creat, entity)"; - $sql .= " VALUES (".$this->db->idate(mktime()).", ".$user->id.", ".$conf->entity.")"; + $sql .= " VALUES (".$this->db->idate($now).", ".$user->id.", ".$conf->entity.")"; if (! $this->titre) { diff --git a/htdocs/comm/mailing/fiche.php b/htdocs/comm/mailing/fiche.php index bcea8ad2a22..b2f875583f4 100644 --- a/htdocs/comm/mailing/fiche.php +++ b/htdocs/comm/mailing/fiche.php @@ -64,7 +64,7 @@ if ($conf->global->MAILING_EMAIL_UNSUBSCRIBE) $substitutionarray, array( '__CHECK_READ__' => 'CheckMail', - '__UNSUSCRIBE__' => 'Unsuscribe' + '__UNSUSCRIBE__' => 'Unsubscribe' ) ); } @@ -89,7 +89,7 @@ if ($conf->global->MAILING_EMAIL_UNSUBSCRIBE) $substitutionarrayfortest, array( '__CHECK_READ__' => 'TESTCheckMail', - '__UNSUSCRIBE__' => 'TESTCheckMail' + '__UNSUSCRIBE__' => 'TESTUnsubscribe' ) ); } diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 9d20775a287..d5a0afc3043 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -1468,11 +1468,12 @@ class Propal extends CommonObject $this->statut = $statut; $error=0; + $now=dol_now(); $this->db->begin(); $sql = "UPDATE ".MAIN_DB_PREFIX."propal"; - $sql.= " SET fk_statut = ".$statut.", note = '".$this->db->escape($note)."', date_cloture=".$this->db->idate(mktime()).", fk_user_cloture=".$user->id; + $sql.= " SET fk_statut = ".$statut.", note = '".$this->db->escape($note)."', date_cloture=".$this->db->idate($now).", fk_user_cloture=".$user->id; $sql.= " WHERE rowid = ".$this->id; $resql=$this->db->query($sql); @@ -1497,11 +1498,12 @@ class Propal extends CommonObject $this->statut = $statut; $error=0; + $now=dol_now(); $this->db->begin(); $sql = "UPDATE ".MAIN_DB_PREFIX."propal"; - $sql.= " SET fk_statut = ".$statut.", note = '".$this->db->escape($note)."', date_cloture=".$this->db->idate(mktime()).", fk_user_cloture=".$user->id; + $sql.= " SET fk_statut = ".$statut.", note = '".$this->db->escape($note)."', date_cloture=".$this->db->idate($now).", fk_user_cloture=".$user->id; $sql.= " WHERE rowid = ".$this->id; $resql=$this->db->query($sql); diff --git a/htdocs/comm/propal/contact.php b/htdocs/comm/propal/contact.php index 46ce0ac7afe..d129c1b40ae 100644 --- a/htdocs/comm/propal/contact.php +++ b/htdocs/comm/propal/contact.php @@ -2,6 +2,7 @@ /* Copyright (C) 2005 Patrick Rouillon * Copyright (C) 2005-2009 Destailleur Laurent * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2011-2012 Philippe Grand * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -57,7 +58,7 @@ if ($action == 'addcontact' && $user->rights->propale->creer) if ($result > 0 && $id > 0) { - $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid')); + $contactid = (GETPOST('userid','int') ? GETPOST('userid','int') : GETPOST('contactid','int')); $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]); } @@ -110,11 +111,11 @@ else if ($action == 'deletecontact' && $user->rights->propale->creer) } } -else if ($action == 'setaddress' && $user->rights->propale->creer) -{ - $object->fetch($id); - $result=$object->setDeliveryAddress($_POST['fk_address']); - if ($result < 0) dol_print_error($db,$object->error); +else if ($action == 'setaddress' && $user->rights->propale->creer) +{ + $object->fetch($id); + $result=$object->setDeliveryAddress($_POST['fk_address']); + if ($result < 0) dol_print_error($db,$object->error); } @@ -173,39 +174,44 @@ if ($id > 0 || ! empty($ref)) if (is_null($object->client)) $object->fetch_thirdparty(); print ""; print ''; - - // Delivery address - if ($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) - { - print ''; + + // Delivery address + if ($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) + { + print ''; } print "
'.$langs->trans("Description").''.$langs->trans("Total").'
".$langs->trans("Company")."'.$object->client->getNomUrl(1).'
'; - print ''; - - if ($action != 'editdelivery_address' && $object->brouillon) print ''; - print '
'; - print $langs->trans('DeliveryAddress'); - print 'socid.'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetDeliveryAddress'),1).'
'; - print '
'; - - if ($action == 'editdelivery_address') - { - $formother->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$object->socid,'fk_address','propal',$object->id); - } - else - { - $formother->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$object->socid,'none','propal',$object->id); - } - print '
'; + print ''; + + if ($action != 'editdelivery_address' && $object->brouillon) print ''; + print '
'; + print $langs->trans('DeliveryAddress'); + print 'socid.'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetDeliveryAddress'),1).'
'; + print '
'; + + if ($action == 'editdelivery_address') + { + $formother->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$object->socid,'fk_address','propal',$object->id); + } + else + { + $formother->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,$object->socid,'none','propal',$object->id); + } + print '
"; print '
'; - + print '
'; - - // Contacts lines - include(DOL_DOCUMENT_ROOT.'/core/tpl/contacts.tpl.php'); - + + // Contacts lines (modules that overwrite templates must declare this into descriptor) + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl')); + foreach($dirtpls as $reldir) + { + $res=@include(dol_buildpath($reldir.'/contacts.tpl.php')); + if ($res) break; + } + } else { @@ -213,6 +219,7 @@ if ($id > 0 || ! empty($ref)) } } -$db->close(); llxFooter(); + +$db->close(); ?> \ No newline at end of file diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 465c565cd37..16eb5c44094 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -618,7 +618,7 @@ class Commande extends CommonObject // $date_commande is deprecated $date = ($this->date_commande ? $this->date_commande : $this->date); - + $now=dol_now(); $this->db->begin(); @@ -2442,7 +2442,7 @@ class Commande extends CommonObject if ($statut==-1) return img_picto($langs->trans('StatusOrderCanceled'),'statut5').' '.$langs->trans('StatusOrderCanceledShort'); if ($statut==0) return img_picto($langs->trans('StatusOrderDraft'),'statut0').' '.$langs->trans('StatusOrderDraftShort'); if ($statut==1) return img_picto($langs->trans('StatusOrderValidated'),'statut1').' '.$langs->trans('StatusOrderValidatedShort'); - if ($statut==2) return img_picto($langs->trans('StatusOrderOnProcess'),'statut3').' '.$langs->trans('StatusOrderSentShort'); + if ($statut==2) return img_picto($langs->trans('StatusOrderSent'),'statut3').' '.$langs->trans('StatusOrderSentShort'); if ($statut==3 && ! $facturee) return img_picto($langs->trans('StatusOrderToBill'),'statut7').' '.$langs->trans('StatusOrderToBillShort'); if ($statut==3 && $facturee) return img_picto($langs->trans('StatusOrderProcessed'),'statut6').' '.$langs->trans('StatusOrderProcessedShort'); } @@ -2460,7 +2460,7 @@ class Commande extends CommonObject if ($statut==-1) return img_picto($langs->trans('StatusOrderCanceled'),'statut5').' '.$langs->trans('StatusOrderCanceled'); if ($statut==0) return img_picto($langs->trans('StatusOrderDraft'),'statut0').' '.$langs->trans('StatusOrderDraft'); if ($statut==1) return img_picto($langs->trans('StatusOrderValidated'),'statut1').' '.$langs->trans('StatusOrderValidated'); - if ($statut==2) return img_picto($langs->trans('StatusOrderSentShort'),'statut3').' '.$langs->trans('StatusOrderOnProcess'); + if ($statut==2) return img_picto($langs->trans('StatusOrderSentShort'),'statut3').' '.$langs->trans('StatusOrderSent'); if ($statut==3 && ! $facturee) return img_picto($langs->trans('StatusOrderToBill'),'statut7').' '.$langs->trans('StatusOrderToBill'); if ($statut==3 && $facturee) return img_picto($langs->trans('StatusOrderProcessed'),'statut6').' '.$langs->trans('StatusOrderProcessed'); } @@ -2469,7 +2469,7 @@ class Commande extends CommonObject if ($statut==-1) return $langs->trans('StatusOrderCanceledShort').' '.img_picto($langs->trans('StatusOrderCanceled'),'statut5'); if ($statut==0) return $langs->trans('StatusOrderDraftShort').' '.img_picto($langs->trans('StatusOrderDraft'),'statut0'); if ($statut==1) return $langs->trans('StatusOrderValidatedShort').' '.img_picto($langs->trans('StatusOrderValidated'),'statut1'); - if ($statut==2) return $langs->trans('StatusOrderSentShort').' '.img_picto($langs->trans('StatusOrderOnProcess'),'statut3'); + if ($statut==2) return $langs->trans('StatusOrderSentShort').' '.img_picto($langs->trans('StatusOrderSent'),'statut3'); if ($statut==3 && ! $facturee) return $langs->trans('StatusOrderToBillShort').' '.img_picto($langs->trans('StatusOrderToBill'),'statut7'); if ($statut==3 && $facturee) return $langs->trans('StatusOrderProcessedShort').' '.img_picto($langs->trans('StatusOrderProcessed'),'statut6'); } diff --git a/htdocs/commande/contact.php b/htdocs/commande/contact.php index df22b17b4fa..f1e977fe9e6 100644 --- a/htdocs/commande/contact.php +++ b/htdocs/commande/contact.php @@ -55,8 +55,8 @@ if ($action == 'addcontact' && $user->rights->commande->creer) if ($result > 0 && $id > 0) { - $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid')); - $result = $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]); + $contactid = (GETPOST('userid','int') ? GETPOST('userid','int') : GETPOST('contactid','int')); + $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]); } if ($result >= 0) @@ -110,7 +110,8 @@ else if ($action == 'deletecontact' && $user->rights->commande->creer) else if ($action == 'setaddress' && $user->rights->commande->creer) { $object->fetch($id); - $object->setDeliveryAddress($_POST['fk_address']); + $result=$object->setDeliveryAddress($_POST['fk_address']); + if ($result < 0) dol_print_error($db,$object->error); } /* @@ -136,7 +137,7 @@ dol_htmloutput_mesg($mesg); if ($id > 0 || ! empty($ref)) { $langs->trans("OrderCard"); - + if ($object->fetch($id, $ref) > 0) { $soc = new Societe($db); @@ -173,7 +174,7 @@ if ($id > 0 || ! empty($ref)) print "".$langs->trans("Company").""; print ''.$object->client->getNomUrl(1).''; - + // Delivery address if ($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) { @@ -181,11 +182,11 @@ if ($id > 0 || ! empty($ref)) print ''; - + if ($action != 'editdelivery_address' && $object->brouillon) print ''; print '
'; print $langs->trans('DeliveryAddress'); print 'socid.'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetDeliveryAddress'),1).'
'; print ''; - + if ($action == 'editdelivery_address') { $formother->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,GETPOST('socid','int'),'fk_address','commande',$object->id); @@ -196,23 +197,20 @@ if ($id > 0 || ! empty($ref)) } print ''; } - + print ""; print ''; print '
'; - - // Select template for Contacts lines - if (file_exists(DOL_DOCUMENT_ROOT."/theme/".$conf->theme."/tpl/contacts.tpl.php")) - { - include(DOL_DOCUMENT_ROOT."/theme/".$conf->theme."/tpl/contacts.tpl.php"); - } - else - { - include(DOL_DOCUMENT_ROOT.'/core/tpl/contacts.tpl.php'); - } + // Contacts lines (modules that overwrite templates must declare this into descriptor) + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl')); + foreach($dirtpls as $reldir) + { + $res=@include(dol_buildpath($reldir.'/contacts.tpl.php')); + if ($res) break; + } } else { diff --git a/htdocs/compta/bank/rappro.php b/htdocs/compta/bank/rappro.php index dd7f10677c8..bd7926bfeac 100644 --- a/htdocs/compta/bank/rappro.php +++ b/htdocs/compta/bank/rappro.php @@ -380,8 +380,9 @@ if ($resql) print ''; print img_edit(); print '  '; - - if ($db->jdate($objp->do) <= mktime()) { + + $now=dol_now(); + if ($db->jdate($objp->do) <= $now) { print ''; print img_delete(); print ''; diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index 6a976f9ea4a..df946ca345d 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -88,6 +88,7 @@ class FactureRec extends Facture global $conf, $langs; $error=0; + $now=dol_now(); // Clean parameters $this->titre=trim($this->titre); @@ -125,7 +126,7 @@ class FactureRec extends Facture $sql.= "'".$this->titre."'"; $sql.= ", '".$facsrc->socid."'"; $sql.= ", ".$conf->entity; - $sql.= ", ".$this->db->idate(mktime()); + $sql.= ", ".$this->db->idate($now); $sql.= ", '".$facsrc->amount."'"; $sql.= ", '".$facsrc->remise."'"; $sql.= ", '".$this->db->escape($this->note)."'"; diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 27dca55e1e4..1efc6c41d10 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -2897,11 +2897,13 @@ class Facture extends CommonObject $row = $this->db->fetch_row($resql); if ($row[0] == 0) { + $now=dol_now(); + $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'prelevement_facture_demande'; $sql .= ' (fk_facture, amount, date_demande, fk_user_demande, code_banque, code_guichet, number, cle_rib)'; $sql .= ' VALUES ('.$this->id; $sql .= ",'".price2num($this->total_ttc)."'"; - $sql .= ",".$this->db->idate(mktime()).",".$user->id; + $sql .= ",".$this->db->idate($now).",".$user->id; $sql .= ",'".$soc->bank_account->code_banque."'"; $sql .= ",'".$soc->bank_account->code_guichet."'"; $sql .= ",'".$soc->bank_account->number."'"; diff --git a/htdocs/compta/facture/contact.php b/htdocs/compta/facture/contact.php index d840db56dce..affa7414dfa 100644 --- a/htdocs/compta/facture/contact.php +++ b/htdocs/compta/facture/contact.php @@ -2,6 +2,7 @@ /* Copyright (C) 2005 Patrick Rouillon * Copyright (C) 2005-2009 Destailleur Laurent * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2011-2012 Philippe Grand * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,10 +34,11 @@ require_once(DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'); $langs->load("bills"); $langs->load("companies"); -$id=(GETPOST('id','int')?GETPOST('id','int'):GETPOST('facid','int')); // For backward compatibility -$ref = GETPOST('ref'); -$socid=GETPOST('socid','int'); -$action=GETPOST('action','alpha'); +$id = (GETPOST('id')?GETPOST('id','int'):GETPOST('facid','int')); // For backward compatibility +$ref = GETPOST('ref','alpha'); +$lineid = GETPOST('lineid','int'); +$socid = GETPOST('socid','int'); +$action = GETPOST('action','alpha'); // Security check if ($user->societe_id) $socid=$user->societe_id; @@ -55,8 +57,8 @@ if ($action == 'addcontact' && $user->rights->facture->creer) if ($result > 0 && $id > 0) { - $contactid = (GETPOST('userid') ? GETPOST('userid') : GETPOST('contactid')); - $result = $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]); + $contactid = (GETPOST('userid') ? GETPOST('userid','int') : GETPOST('contactid','int')); + $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]); } if ($result >= 0) @@ -95,7 +97,7 @@ else if ($action == 'swapstatut' && $user->rights->facture->creer) else if ($action == 'deletecontact' && $user->rights->facture->creer) { $object->fetch($id); - $result = $object->delete_contact($_GET["lineid"]); + $result = $object->delete_contact($lineid); if ($result >= 0) { @@ -166,10 +168,16 @@ if ($id > 0 || ! empty($ref)) print ''; - print '
'; - - // Contacts lines - include(DOL_DOCUMENT_ROOT.'/core/tpl/contacts.tpl.php'); + print '
'; + + // Contacts lines (modules that overwrite templates must declare this into descriptor) + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl')); + foreach($dirtpls as $reldir) + { + $res=@include(dol_buildpath($reldir.'/contacts.tpl.php')); + if ($res) break; + } + } else { diff --git a/htdocs/compta/facture/impayees.php b/htdocs/compta/facture/impayees.php index 24bf6de375e..272096348f9 100644 --- a/htdocs/compta/facture/impayees.php +++ b/htdocs/compta/facture/impayees.php @@ -112,7 +112,8 @@ if ($action == "builddoc" && $user->rights->facture->lire) if ($option=='late') $filename.='_'.strtolower(dol_sanitizeFileName($langs->transnoentities("Late"))); if ($pagecount) { - $file=$diroutputpdf.'/'.$filename.'_'.dol_print_date(mktime(),'dayhourlog').'.pdf'; + $now=dol_now(); + $file=$diroutputpdf.'/'.$filename.'_'.dol_print_date($now,'dayhourlog').'.pdf'; $pdf->Output($file,'F'); if (! empty($conf->global->MAIN_UMASK)) @chmod($file, octdec($conf->global->MAIN_UMASK)); diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php index bd40daa6780..872f5474da6 100644 --- a/htdocs/compta/index.php +++ b/htdocs/compta/index.php @@ -57,12 +57,14 @@ if ($user->societe_id > 0) if (isset($_GET["action"]) && $_GET["action"] == 'add_bookmark') { + $now=dol_now(); + $sql = "DELETE FROM ".MAIN_DB_PREFIX."bookmark WHERE fk_soc = ".$socid." AND fk_user=".$user->id; if (! $db->query($sql) ) { dol_print_error($db); } - $sql = "INSERT INTO ".MAIN_DB_PREFIX."bookmark (fk_soc, dateb, fk_user) VALUES (".$socid.", ".$db->idate(mktime()).",".$user->id.");"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."bookmark (fk_soc, dateb, fk_user) VALUES (".$socid.", ".$db->idate($now).",".$user->id.");"; if (! $db->query($sql) ) { dol_print_error($db); diff --git a/htdocs/compta/prelevement/class/bon-prelevement.class.php b/htdocs/compta/prelevement/class/bon-prelevement.class.php index aecebcba263..557f72771f2 100644 --- a/htdocs/compta/prelevement/class/bon-prelevement.class.php +++ b/htdocs/compta/prelevement/class/bon-prelevement.class.php @@ -864,6 +864,8 @@ class BonPrelevement extends CommonObject * We create withdraw receipt and build withdraw into disk */ $this->db->begin(); + + $now=dol_now(); /* * Traitements @@ -900,7 +902,7 @@ class BonPrelevement extends CommonObject $sql.= ") VALUES ("; $sql.= "'".$ref."'"; $sql.= ", ".$conf->entity; - $sql.= ", '".$this->db->idate(mktime())."'"; + $sql.= ", '".$this->db->idate($now)."'"; $sql.= ")"; dol_syslog("Bon-Prelevement::Create sql=".$sql, LOG_DEBUG); @@ -960,7 +962,7 @@ class BonPrelevement extends CommonObject */ $sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_facture_demande"; $sql.= " SET traite = 1"; - $sql.= ", date_traite = ".$this->db->idate(mktime()); + $sql.= ", date_traite = ".$this->db->idate($now); $sql.= ", fk_prelevement_bons = ".$prev_id; $sql.= " WHERE rowid = ".$fac[1]; @@ -1137,8 +1139,10 @@ class BonPrelevement extends CommonObject if ($this->DeleteNotification($user, $action) == 0) { + $now=dol_now(); + $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify_def (datec,fk_user, fk_soc, fk_contact, fk_action)"; - $sql .= " VALUES (".$db->idate(mktime()).",".$user.", 'NULL', 'NULL', '".$action."')"; + $sql .= " VALUES (".$db->idate($now).",".$user.", 'NULL', 'NULL', '".$action."')"; dol_syslog("adnotiff: ".$sql); if ($this->db->query($sql)) diff --git a/htdocs/compta/prelevement/class/rejet-prelevement.class.php b/htdocs/compta/prelevement/class/rejet-prelevement.class.php index fcdb9dab703..1d8737d6cff 100644 --- a/htdocs/compta/prelevement/class/rejet-prelevement.class.php +++ b/htdocs/compta/prelevement/class/rejet-prelevement.class.php @@ -84,6 +84,7 @@ class RejetPrelevement $error = 0; $this->id = $id; $this->bon_id = $bonid; + $now=dol_now(); dol_syslog("RejetPrelevement::Create id $id"); $bankaccount = $conf->global->PRELEVEMENT_ID_BANKACCOUNT; @@ -104,7 +105,7 @@ class RejetPrelevement $sql.= ", '".$this->db->idate($date_rejet)."'"; $sql.= ", ".$motif; $sql.= ", ".$user->id; - $sql.= ", ".$this->db->idate(mktime()); + $sql.= ", ".$this->db->idate($now); $sql.= ", ".$facturation; $sql.= ")"; diff --git a/htdocs/compta/stats/index.php b/htdocs/compta/stats/index.php index 8fef71e5ff8..bab35674fab 100644 --- a/htdocs/compta/stats/index.php +++ b/htdocs/compta/stats/index.php @@ -216,9 +216,10 @@ for ($mois = 1+$nb_mois_decalage ; $mois <= 12+$nb_mois_decalage ; $mois++) print "".dol_print_date(dol_mktime(12,0,0,$mois_modulo,1,2000),"%B").""; for ($annee = $year_start ; $annee <= $year_end ; $annee++) { + $now=dol_now(); $annee_decalage=$annee; - if($mois>12) {$annee_decalage=$annee+1;} - $casenow = dol_print_date(mktime(),"%Y-%m"); + if ($mois>12) {$annee_decalage=$annee+1;} + $casenow = dol_print_date($now,"%Y-%m"); $case = dol_print_date(dol_mktime(1,1,1,$mois_modulo,1,$annee_decalage),"%Y-%m"); $caseprev = dol_print_date(dol_mktime(1,1,1,$mois_modulo,1,$annee_decalage-1),"%Y-%m"); diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index 2a16039a351..ff9496898bf 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -244,7 +244,7 @@ class Contrat extends CommonObject // Close line not already closed if ($contratline->statut != 5) { - $contratline->date_cloture=mktime(); + $contratline->date_cloture=dol_now(); $contratline->fk_user_cloture=$user->id; $contratline->statut='5'; $result=$contratline->update($user); @@ -618,12 +618,14 @@ class Contrat extends CommonObject if (! $paramsok) return -1; $this->db->begin(); + + $now=dol_now(); // Insert contract $sql = "INSERT INTO ".MAIN_DB_PREFIX."contrat (datec, fk_soc, fk_user_author, date_contrat,"; $sql.= " fk_commercial_signature, fk_commercial_suivi, fk_projet,"; $sql.= " ref)"; - $sql.= " VALUES (".$this->db->idate(mktime()).",".$this->socid.",".$user->id; + $sql.= " VALUES (".$this->db->idate($now).",".$this->socid.",".$user->id; $sql.= ",".$this->db->idate($this->date_contrat); $sql.= ",".($this->commercial_signature_id>0?$this->commercial_signature_id:"NULL"); $sql.= ",".($this->commercial_suivi_id>0?$this->commercial_suivi_id:"NULL"); diff --git a/htdocs/contrat/fiche.php b/htdocs/contrat/fiche.php index 70726cde310..081b89e26c6 100644 --- a/htdocs/contrat/fiche.php +++ b/htdocs/contrat/fiche.php @@ -1195,7 +1195,7 @@ else $dateactend = dol_time_plus_duree(time(), $product->duration_value, $product->duration_unit); } } - $now=mktime(); + $now=dol_now(); if ($dateactend > $now) $dateactend=$now; print ''; diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 66d5308fa51..62dd4192cf5 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2,7 +2,8 @@ /* Copyright (C) 2006-2012 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2010-2011 Juanjo Menent - * Copyright (C) 2012 Christophe Battarel + * Copyright (C) 2012 Christophe Battarel + * Copyright (C) 2011-2012 Philippe Grand * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -865,93 +866,93 @@ abstract class CommonObject } } - /** - * Change the payments methods - * - * @param int $id Id of new payment method - * @return int >0 if OK, <0 if KO - */ - function setPaymentMethods($id) - { - dol_syslog(get_class($this).'::setPaymentMethods('.$id.')'); - if ($this->statut >= 0 || $this->element == 'societe') - { - // TODO uniformize field name - $fieldname = 'fk_mode_reglement'; - if ($this->element == 'societe') $fieldname = 'mode_reglement'; - - $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql .= ' SET '.$fieldname.' = '.$id; - $sql .= ' WHERE rowid='.$this->id; - - if ($this->db->query($sql)) - { + /** + * Change the payments methods + * + * @param int $id Id of new payment method + * @return int >0 if OK, <0 if KO + */ + function setPaymentMethods($id) + { + dol_syslog(get_class($this).'::setPaymentMethods('.$id.')'); + if ($this->statut >= 0 || $this->element == 'societe') + { + // TODO uniformize field name + $fieldname = 'fk_mode_reglement'; + if ($this->element == 'societe') $fieldname = 'mode_reglement'; + + $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; + $sql .= ' SET '.$fieldname.' = '.$id; + $sql .= ' WHERE rowid='.$this->id; + + if ($this->db->query($sql)) + { $this->mode_reglement_id = $id; - $this->mode_reglement = $id; // for compatibility - return 1; - } - else - { - dol_syslog(get_class($this).'::setPaymentMethods Erreur '.$sql.' - '.$this->db->error()); - $this->error=$this->db->error(); - return -1; - } - } - else - { - dol_syslog(get_class($this).'::setPaymentMethods, status of the object is incompatible'); - $this->error='Status of the object is incompatible '.$this->statut; - return -2; - } + $this->mode_reglement = $id; // for compatibility + return 1; + } + else + { + dol_syslog(get_class($this).'::setPaymentMethods Erreur '.$sql.' - '.$this->db->error()); + $this->error=$this->db->error(); + return -1; + } + } + else + { + dol_syslog(get_class($this).'::setPaymentMethods, status of the object is incompatible'); + $this->error='Status of the object is incompatible '.$this->statut; + return -2; + } } - /** - * Change the payments terms - * - * @param int $id Id of new payment terms - * @return int >0 if OK, <0 if KO - */ - function setPaymentTerms($id) - { - dol_syslog(get_class($this).'::setPaymentTerms('.$id.')'); - if ($this->statut >= 0 || $this->element == 'societe') + /** + * Change the payments terms + * + * @param int $id Id of new payment terms + * @return int >0 if OK, <0 if KO + */ + function setPaymentTerms($id) + { + dol_syslog(get_class($this).'::setPaymentTerms('.$id.')'); + if ($this->statut >= 0 || $this->element == 'societe') { // TODO uniformize field name $fieldname = 'fk_cond_reglement'; if ($this->element == 'societe') $fieldname = 'cond_reglement'; - - $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql .= ' SET '.$fieldname.' = '.$id; + + $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; + $sql .= ' SET '.$fieldname.' = '.$id; $sql .= ' WHERE rowid='.$this->id; - - if ($this->db->query($sql)) - { + + if ($this->db->query($sql)) + { $this->cond_reglement_id = $id; - $this->cond_reglement = $id; // for compatibility - return 1; - } - else - { - dol_syslog(get_class($this).'::setPaymentTerms Erreur '.$sql.' - '.$this->db->error()); - $this->error=$this->db->error(); - return -1; - } - } - else - { - dol_syslog(get_class($this).'::setPaymentTerms, status of the object is incompatible'); - $this->error='Status of the object is incompatible '.$this->statut; - return -2; - } + $this->cond_reglement = $id; // for compatibility + return 1; + } + else + { + dol_syslog(get_class($this).'::setPaymentTerms Erreur '.$sql.' - '.$this->db->error()); + $this->error=$this->db->error(); + return -1; + } + } + else + { + dol_syslog(get_class($this).'::setPaymentTerms, status of the object is incompatible'); + $this->error='Status of the object is incompatible '.$this->statut; + return -2; + } } - /** - * Define delivery address - * - * @param int $id Address id - * @return int <0 si ko, >0 si ok - */ - function setDeliveryAddress($id) + /** + * Define delivery address + * + * @param int $id Address id + * @return int <0 si ko, >0 si ok + */ + function setDeliveryAddress($id) { $fieldname = 'fk_adresse_livraison'; if ($this->element == 'delivery' || $this->element == 'shipping') $fieldname = 'fk_address'; @@ -962,14 +963,14 @@ abstract class CommonObject if ($this->db->query($sql)) { $this->fk_delivery_address = $id; - return 1; + return 1; } else { $this->error=$this->db->error(); dol_syslog(get_class($this).'::setDeliveryAddress Erreur '.$sql.' - '.$this->error); return -1; - } + } } /** @@ -1851,18 +1852,18 @@ abstract class CommonObject $sql.= " WHERE rowid=".$elementId; dol_syslog(get_class($this)."::setStatut sql=".$sql, LOG_DEBUG); - if ($this->db->query($sql)) - { + if ($this->db->query($sql)) + { $this->db->commit(); - $this->statut = $status; - return 1; - } - else - { + $this->statut = $status; + return 1; + } + else + { $this->error=$this->db->lasterror(); - dol_syslog(get_class($this)."::setStatut ".$this->error, LOG_ERR); - $this->db->rollback(); - return -1; + dol_syslog(get_class($this)."::setStatut ".$this->error, LOG_ERR); + $this->db->rollback(); + return -1; } } @@ -2145,35 +2146,35 @@ abstract class CommonObject return $nb; } - /** + /** * Set extra parameters * - * @return void - */ - function setExtraParameters() + * @return void + */ + function setExtraParameters() { $this->db->begin(); $extraparams = (! empty($this->extraparams) ? json_encode($this->extraparams) : null); - + $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; $sql.= " SET extraparams = ".(! empty($extraparams) ? "'".$this->db->escape($extraparams)."'" : "null"); $sql.= " WHERE rowid = ".$this->id; - dol_syslog(get_class($this)."::setExtraParameters sql=".$sql, LOG_DEBUG); - $resql = $this->db->query($sql); - if (! $resql) - { - $this->error=$this->db->lasterror(); - dol_syslog(get_class($this)."::setExtraParameters ".$this->error, LOG_ERR); - $this->db->rollback(); - return -1; - } - else - { - $this->db->commit(); - return 1; - } + dol_syslog(get_class($this)."::setExtraParameters sql=".$sql, LOG_DEBUG); + $resql = $this->db->query($sql); + if (! $resql) + { + $this->error=$this->db->lasterror(); + dol_syslog(get_class($this)."::setExtraParameters ".$this->error, LOG_ERR); + $this->db->rollback(); + return -1; + } + else + { + $this->db->commit(); + return 1; + } } @@ -2311,7 +2312,7 @@ abstract class CommonObject */ function showLinkedObjectBlock() { - global $langs,$bc; + global $conf,$langs,$bc; $this->fetchObjectLinked(); @@ -2351,7 +2352,13 @@ abstract class CommonObject global $linkedObjectBlock; $linkedObjectBlock = $objects; - dol_include_once('/'.$tplpath.'/tpl/linkedobjectblock.tpl.php'); + // Output template part (modules that overwrite templates must declare this into descriptor) + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/'.$tplpath.'/tpl')); + foreach($dirtpls as $reldir) + { + $res=@include(dol_buildpath($reldir.'/linkedobjectblock.tpl.php')); + if ($res) break; + } } return $num; @@ -2377,8 +2384,14 @@ abstract class CommonObject global $conf,$langs,$object; global $form,$bcnd,$var; + // Output template part (modules that overwrite templates must declare this into descriptor) // Use global variables + $dateSelector + $seller and $buyer - include(DOL_DOCUMENT_ROOT.'/core/tpl/predefinedproductline_create.tpl.php'); + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl')); + foreach($dirtpls as $reldir) + { + $res=@include(dol_buildpath($reldir.'/predefinedproductline_create.tpl.php')); + if ($res) break; + } } /** @@ -2397,8 +2410,14 @@ abstract class CommonObject global $conf,$langs,$object; global $form,$bcnd,$var; + // Output template part (modules that overwrite templates must declare this into descriptor) // Use global variables + $dateSelector + $seller and $buyer - include(DOL_DOCUMENT_ROOT.'/core/tpl/freeproductline_create.tpl.php'); + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl')); + foreach($dirtpls as $reldir) + { + $res=@include(dol_buildpath($reldir.'/freeproductline_create.tpl.php')); + if ($res) break; + } } @@ -2536,13 +2555,25 @@ abstract class CommonObject $text.= ' - '.$label; $description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($line->description)); - // Use global variables + $seller and $buyer - include(DOL_DOCUMENT_ROOT.'/core/tpl/predefinedproductline_view.tpl.php'); + // Output template part (modules that overwrite templates must declare this into descriptor) + // Use global variables + $dateSelector + $seller and $buyer + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl')); + foreach($dirtpls as $reldir) + { + $res=@include(dol_buildpath($reldir.'/predefinedproductline_view.tpl.php')); + if ($res) break; + } } else { - // Use global variables + $dateSelector + $seller and $buyer - include(DOL_DOCUMENT_ROOT.'/core/tpl/freeproductline_view.tpl.php'); + // Output template part (modules that overwrite templates must declare this into descriptor) + // Use global variables + $dateSelector + $seller and $buyer + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl')); + foreach($dirtpls as $reldir) + { + $res=@include(dol_buildpath($reldir.'/freeproductline_view.tpl.php')); + if ($res) break; + } } } @@ -2551,13 +2582,25 @@ abstract class CommonObject { if ($line->fk_product > 0) { - // Use global variables + $dateSelector + $seller and $buyer - include(DOL_DOCUMENT_ROOT.'/core/tpl/predefinedproductline_edit.tpl.php'); + // Output template part (modules that overwrite templates must declare this into descriptor) + // Use global variables + $dateSelector + $seller and $buyer + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl')); + foreach($dirtpls as $reldir) + { + $res=@include(dol_buildpath($reldir.'/predefinedproductline_edit.tpl.php')); + if ($res) break; + } } else { - // Use global variables + $dateSelector + $seller and $buyer - include(DOL_DOCUMENT_ROOT.'/core/tpl/freeproductline_edit.tpl.php'); + // Output template part (modules that overwrite templates must declare this into descriptor) + // Use global variables + $dateSelector + $seller and $buyer + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl')); + foreach($dirtpls as $reldir) + { + $res=@include(dol_buildpath($reldir.'/freeproductline_edit.tpl.php')); + if ($res) break; + } } } } @@ -2625,7 +2668,7 @@ abstract class CommonObject */ function printOriginLine($line,$var) { - global $langs,$bc; + global $conf,$langs,$bc; //var_dump($line); @@ -2697,7 +2740,14 @@ abstract class CommonObject $this->tpl['qty'] = (($line->info_bits & 2) != 2) ? $line->qty : ' '; $this->tpl['remise_percent'] = (($line->info_bits & 2) != 2) ? vatrate($line->remise_percent, true) : ' '; - include(DOL_DOCUMENT_ROOT.'/core/tpl/originproductline.tpl.php'); + // Output template part (modules that overwrite templates must declare this into descriptor) + // Use global variables + $dateSelector + $seller and $buyer + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl')); + foreach($dirtpls as $reldir) + { + $res=@include(dol_buildpath($reldir.'/originproductline.tpl.php')); + if ($res) break; + } } } diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index a2c19812434..5f8185253ed 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -52,18 +52,18 @@ class Conf public $smart_menu; public $modules = array(); // List of activated modules - public $modules_parts = array(); // List of modules parts + public $modules_parts = array('triggers'=>array(),'login'=>array(),'substitutions'=>array(),'menus'=>array(),'theme'=>array(),'tpl'=>array(),'barcode'=>array(),'models'=>array()); // List of modules parts // TODO Remove all thoose tabs with one generic + public $triggers_modules = array(); + public $login_modules = array(); + public $substitutions_modules = array(); + public $menus_modules = array(); + public $barcode_modules = array(); public $sms_engine_modules = array(); public $css_modules = array(); public $tabs_modules = array(); - public $triggers_modules = array(); - public $menus_modules = array(); public $hooks_modules = array(); - public $login_modules = array(); - public $barcode_modules = array(); - public $substitutions_modules = array(); public $societe_modules = array(); var $logbuffer = array(); @@ -188,7 +188,7 @@ class Conf if (! isset($this->modules_parts[$partname]) || ! is_array($this->modules_parts[$partname])) { $this->modules_parts[$partname] = array(); } $arrValue = json_decode($value,true); if (is_array($arrValue) && ! empty($arrValue)) $value = $arrValue; - else if (in_array($partname,array('login','menus','substitutions','triggers'))) $value = '/'.$modulename.'/core/'.$partname.'/'; + else if (in_array($partname,array('login','menus','substitutions','triggers','tpl','theme'))) $value = '/'.$modulename.'/core/'.$partname.'/'; else if (in_array($partname,array('models'))) $value = '/'.$modulename.'/'; else if ($value == 1) $value = '/'.$modulename.'/core/modules/'.$partname.'/'; $this->$varname = array_merge($this->$varname, array($modulename => $value)); // TODO deprecated diff --git a/htdocs/core/class/interfaces.class.php b/htdocs/core/class/interfaces.class.php index b64dcb58881..8a20803a9e8 100644 --- a/htdocs/core/class/interfaces.class.php +++ b/htdocs/core/class/interfaces.class.php @@ -74,7 +74,7 @@ class Interfaces $orders = array(); $i=0; - $dirtriggers=array_merge(array('/core/triggers'),$conf->triggers_modules); + $dirtriggers=array_merge(array('/core/triggers'),$conf->modules_parts['triggers']); foreach($dirtriggers as $reldir) { $dir=dol_buildpath($reldir,0); @@ -203,7 +203,7 @@ class Interfaces $orders = array(); $i = 0; - $dirtriggers=array_merge(array('/core/triggers/'),$conf->triggers_modules); + $dirtriggers=array_merge(array('/core/triggers/'),$conf->modules_parts['triggers']); foreach($dirtriggers as $reldir) { $dir=dol_buildpath($reldir,0); diff --git a/htdocs/core/class/notify.class.php b/htdocs/core/class/notify.class.php index 90aaa6082fd..0c5fe3db50e 100644 --- a/htdocs/core/class/notify.class.php +++ b/htdocs/core/class/notify.class.php @@ -217,10 +217,11 @@ class Notify if ($mailfile->sendfile()) { + $now=dol_now(); $sendto = htmlentities($sendto); $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_contact, objet_type, objet_id, email)"; - $sql.= " VALUES (".$this->db->idate(mktime()).", ".$actiondefid.", ".$obj->cid.", '".$objet_type."', ".$objet_id.", '".$this->db->escape($obj->email)."')"; + $sql.= " VALUES (".$this->db->idate($now).", ".$actiondefid.", ".$obj->cid.", '".$objet_type."', ".$objet_id.", '".$this->db->escape($obj->email)."')"; dol_syslog("Notify::send sql=".$sql); if (! $this->db->query($sql) ) { diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php index 8f14de84b39..6372e2a78ca 100644 --- a/htdocs/core/class/translate.class.php +++ b/htdocs/core/class/translate.class.php @@ -591,7 +591,7 @@ class Translate $newnumber=$number; - $dirsubstitutions=array_merge(array(),$conf->substitutions_modules); + $dirsubstitutions=array_merge(array(),$conf->modules_parts['substitutions']); foreach($dirsubstitutions as $reldir) { $dir=dol_buildpath($reldir,0); diff --git a/htdocs/core/datepicker.php b/htdocs/core/datepicker.php index 54f811ef3e8..4db6de685ac 100644 --- a/htdocs/core/datepicker.php +++ b/htdocs/core/datepicker.php @@ -145,7 +145,7 @@ function displayBox($selectedDate,$month,$year) //print "$selectedDate,$month,$year"; $thedate=dol_mktime(12,0,0,$month,1,$year); //print "thedate=$thedate"; - $today=mktime(); + $today=dol_now(); $todayArray=dol_getdate($today); if($selectedDate != "00000000") { diff --git a/htdocs/core/db/mssql.class.php b/htdocs/core/db/mssql.class.php index 9067effca1d..a2e6a9e3b83 100644 --- a/htdocs/core/db/mssql.class.php +++ b/htdocs/core/db/mssql.class.php @@ -38,9 +38,9 @@ class DoliDBMssql //! Database label static $label='MSSQL'; //! Charset used to force charset when creating database - static $forcecharset='latin1'; + var $forcecharset='latin1'; // Can't be static as it may be forced with a dynamic value //! Collate used to force collate when creating database - static $forcecollate='latin1_swedish_ci'; + var $forcecollate='latin1_swedish_ci'; // Can't be static as it may be forced with a dynamic value //! Version min database static $versionmin=array(2000); //! Resultset of last request @@ -796,9 +796,12 @@ class DoliDBMssql */ function DDLCreateDb($database,$charset='',$collation='',$owner='') { - // ALTER DATABASE dolibarr_db DEFAULT CHARACTER SET latin DEFAULT COLLATE latin1_swedish_ci + if (empty($charset)) $charset=$this->forcecharset; + if (empty($collation)) $collation=$this->forcecollate; + + // ALTER DATABASE dolibarr_db DEFAULT CHARACTER SET latin DEFAULT COLLATE latin1_swedish_ci $sql = 'CREATE DATABASE '.$database; - $sql.= ' DEFAULT CHARACTER SET '.$this->forcecharset.' DEFAULT COLLATE '.$this->forcecollate; + $sql.= ' DEFAULT CHARACTER SET '.$charset.' DEFAULT COLLATE '.$collation; $ret=$this->query($sql); if (! $ret) { diff --git a/htdocs/core/db/mysql.class.php b/htdocs/core/db/mysql.class.php index d8f18d2971c..6f978b0b0fd 100644 --- a/htdocs/core/db/mysql.class.php +++ b/htdocs/core/db/mysql.class.php @@ -38,9 +38,9 @@ class DoliDBMysql //! Database label static $label='MySQL'; //! Charset used to force charset when creating database - static $forcecharset='utf8'; // latin1, utf8 + var $forcecharset='utf8'; // latin1, utf8. Can't be static as it may be forced with a dynamic value //! Collate used to force collate when creating database - static $forcecollate='utf8_general_ci'; // latin1_swedish_ci, utf8_general_ci + var $forcecollate='utf8_general_ci'; // latin1_swedish_ci, utf8_general_ci. Can't be static as it may be forced with a dynamic value //! Version min database static $versionmin=array(4,1,0); //! Resultset of last request @@ -797,7 +797,7 @@ class DoliDBMysql function DDLCreateDb($database,$charset='',$collation='',$owner='') { if (empty($charset)) $charset=$this->forcecharset; - if (empty($collation)) $collation=$this->collation; + if (empty($collation)) $collation=$this->forcecollate; // ALTER DATABASE dolibarr_db DEFAULT CHARACTER SET latin DEFAULT COLLATE latin1_swedish_ci $sql = 'CREATE DATABASE '.$database; diff --git a/htdocs/core/db/mysqli.class.php b/htdocs/core/db/mysqli.class.php index 3fbda6c3613..7afea5a8da3 100644 --- a/htdocs/core/db/mysqli.class.php +++ b/htdocs/core/db/mysqli.class.php @@ -38,9 +38,9 @@ class DoliDBMysqli //! Database label static $label='MySQL'; //! Charset used to force charset when creating database - static $forcecharset='utf8'; // latin1, utf8 + var $forcecharset='utf8'; // latin1, utf8. Can't be static as it may be forced with a dynamic value //! Collate used to force collate when creating database - static $forcecollate='utf8_general_ci'; // latin1_swedish_ci, utf8_general_ci + var $forcecollate='utf8_general_ci'; // latin1_swedish_ci, utf8_general_ci. Can't be static as it may be forced with a dynamic value //! Version min database static $versionmin=array(4,1,0); //! Resultset of last request @@ -83,7 +83,7 @@ class DoliDBMysqli function DoliDBMysqli($type, $host, $user, $pass, $name='', $port=0) { global $conf,$langs; - + // TODO error in strict mode (static property for "$forcecharset" and "$forcecollate") //if (! empty($conf->db->character_set)) $this->forcecharset=$conf->db->character_set; //if (! empty($conf->db->dolibarr_main_db_collation)) $this->forcecollate=$conf->db->dolibarr_main_db_collation; @@ -791,7 +791,7 @@ class DoliDBMysqli function DDLCreateDb($database,$charset='',$collation='',$owner='') { if (empty($charset)) $charset=$this->forcecharset; - if (empty($collation)) $collation=$this->collation; + if (empty($collation)) $collation=$this->forcecollate; // ALTER DATABASE dolibarr_db DEFAULT CHARACTER SET latin DEFAULT COLLATE latin1_swedish_ci $sql = 'CREATE DATABASE '.$database; diff --git a/htdocs/core/db/pgsql.class.php b/htdocs/core/db/pgsql.class.php index ca74e4384bc..8d7d59e6de8 100644 --- a/htdocs/core/db/pgsql.class.php +++ b/htdocs/core/db/pgsql.class.php @@ -40,7 +40,7 @@ class DoliDBPgsql //! Database label static $label='PostgreSQL'; // Label of manager //! Charset - static $forcecharset='latin1'; + var $forcecharset='latin1'; // Can't be static as it may be forced with a dynamic value //! Version min database static $versionmin=array(8,4,0); // Version min database @@ -81,8 +81,9 @@ class DoliDBPgsql { global $conf,$langs; - $this->forcecharset=$conf->file->character_set_client; - $this->forcecollate=$conf->db->dolibarr_main_db_collation; + if (! empty($conf->db->character_set)) $this->forcecharset=$conf->db->character_set; + if (! empty($conf->db->dolibarr_main_db_collation)) $this->forcecollate=$conf->db->dolibarr_main_db_collation; + $this->database_user=$user; $this->transaction_opened=0; @@ -376,7 +377,7 @@ class DoliDBPgsql //if (! $name) $name="postgres"; // try first Unix domain socket (local) - if (! $host || $host == "" || $host == "localhost" || $host == "127.0.0.1") + if ((! $host || $host == "" || $host == "localhost" || $host == "127.0.0.1") && ! defined('NOLOCALSOCKETPGCONNECT')) { $con_string = "dbname='".$name."' user='".$login."' password='".$passwd."'"; $this->db = pg_connect($con_string); @@ -978,7 +979,7 @@ class DoliDBPgsql function DDLCreateDb($database,$charset='',$collation='',$owner='') { if (empty($charset)) $charset=$this->forcecharset; - if (empty($collation)) $collation=$this->collation; + if (empty($collation)) $collation=$this->forcecollate; $ret=$this->query('CREATE DATABASE '.$database.' OWNER '.$owner.' ENCODING \''.$charset.'\''); return $ret; diff --git a/htdocs/core/db/sqlite.class.php b/htdocs/core/db/sqlite.class.php index 06d1a460976..c7a02ecded1 100644 --- a/htdocs/core/db/sqlite.class.php +++ b/htdocs/core/db/sqlite.class.php @@ -38,9 +38,9 @@ class DoliDBSqlite //! Database label static $label='PDO Sqlite'; //! Charset used to force charset when creating database - static $forcecharset='utf8'; // latin1, utf8 + var $forcecharset='utf8'; // latin1, utf8. Can't be static as it may be forced with a dynamic value //! Collate used to force collate when creating database - static $forcecollate='utf8_general_ci'; // latin1_swedish_ci, utf8_general_ci + var $forcecollate='utf8_general_ci'; // latin1_swedish_ci, utf8_general_ci. Can't be static as it may be forced with a dynamic value //! Version min database static $versionmin=array(3,0,0); //! Resultset of last request @@ -939,7 +939,7 @@ class DoliDBSqlite function DDLCreateDb($database,$charset='',$collation='',$owner='') { if (empty($charset)) $charset=$this->forcecharset; - if (empty($collation)) $collation=$this->collation; + if (empty($collation)) $collation=$this->forcecollate; // ALTER DATABASE dolibarr_db DEFAULT CHARACTER SET latin DEFAULT COLLATE latin1_swedish_ci $sql = 'CREATE DATABASE '.$database; diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index 272a4b2ffa2..bee8f11d60a 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -846,9 +846,10 @@ function unActivateModule($value, $requiredby=1) * @param array &$tabfieldinsert Tabfieldinsert * @param array &$tabrowid Tabrowid * @param array &$tabcond Tabcond + * @param array &$tabhelp Tabhelp * @return int 1 */ -function complete_dictionnary_with_modules(&$taborder,&$tabname,&$tablib,&$tabsql,&$tabsqlsort,&$tabfield,&$tabfieldvalue,&$tabfieldinsert,&$tabrowid,&$tabcond) +function complete_dictionnary_with_modules(&$taborder,&$tabname,&$tablib,&$tabsql,&$tabsqlsort,&$tabfield,&$tabfieldvalue,&$tabfieldinsert,&$tabrowid,&$tabcond,&$tabhelp) { global $db, $modules, $conf, $langs; @@ -959,7 +960,8 @@ function complete_dictionnary_with_modules(&$taborder,&$tabname,&$tablib,&$tabsq foreach($objMod->dictionnaries['tabfieldinsert'] as $val) $tabfieldinsert[] = $val; foreach($objMod->dictionnaries['tabrowid'] as $val) $tabrowid[] = $val; foreach($objMod->dictionnaries['tabcond'] as $val) $tabcond[] = $val; - // foreach($objMod->dictionnaries['tabsqlsort'] as $val) $tablib[] = $val; + if (! empty($objMod->dictionnaries['tabhelp'])) foreach($objMod->dictionnaries['tabhelp'] as $val) $tabhelp[] = $val; + //foreach($objMod->dictionnaries['tabsqlsort'] as $val) $tablib[] = $val; //$tabname = array_merge ($tabname, $objMod->dictionnaries['tabname']); //var_dump($tabcond); //exit; @@ -1079,9 +1081,9 @@ function form_constantes($tableau) { print ''; //print 'aa'.$const; - if (in_array($const,array('ADHERENT_CARD_TEXT','ADHERENT_CARD_TEXT_RIGHT'))) + if (in_array($const,array('ADHERENT_CARD_TEXT','ADHERENT_CARD_TEXT_RIGHT','ADHERENT_ETIQUETTE_TEXT'))) { - print '\n"; print ''; @@ -1133,15 +1135,15 @@ function form_constantes($tableau) function addDocumentModel($name, $type, $label='', $description='') { global $db, $conf; - + $db->begin(); - + $sql = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity, libelle, description)"; $sql.= " VALUES ('".$db->escape($name)."','".$type."',".$conf->entity.", "; $sql.= ($label?"'".$db->escape($label)."'":'null').", "; $sql.= (! empty($description)?"'".$db->escape($description)."'":"null"); $sql.= ")"; - + dol_syslog("admin.lib::addDocumentModel sql=".$sql); $resql=$db->query($sql); if ($resql) @@ -1167,9 +1169,9 @@ function addDocumentModel($name, $type, $label='', $description='') function delDocumentModel($name, $type) { global $db, $conf; - + $db->begin(); - + $sql = "DELETE FROM ".MAIN_DB_PREFIX."document_model"; $sql.= " WHERE nom = '".$db->escape($name)."'"; $sql.= " AND type = '".$type."'"; @@ -1190,4 +1192,4 @@ function delDocumentModel($name, $type) } } -?> \ No newline at end of file +?> diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 85cd1c1eb7e..9e3af091454 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -1,5 +1,6 @@ +/* Copyright (C) 2008-2012 Laurent Destailleur + * Copyright (C) 2012 Regis Houssin * Copyright (C) 2012 Juanjo Menent * * This program is free software; you can redistribute it and/or modify @@ -618,65 +619,6 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disable } } -/** - * Uncompress a file - * - * @param string $newfile file to uncompress - * @param stirng $typefile type of file - * @param string $dstdir destination dir - * @return int 0 if ok, >0 if ko - */ -function dol_uncompress($newfile,$typefile,$dstdir) -{ - global $conf; - - $error=0; - $output=array(); - $system=PHP_OS; - - //TODO: See best method for this - - if ($system=="Linux" || $system=="Darwin") - { - if ($typefile == 'application/x-gzip' || $typefile == 'application/x-gtar') - { - $prog= "tar -xzvf "; - } - elseif ($typefile == 'application/zip') - { - $prog= "unzip "; - } - else - { - $output['error'] = -1; - $error++; - } - } - else - { - $output['error'] = -2; - $error++; - } - - if (! $error) - { - $original_file=basename($_FILES["fileinstall"]["name"]); - $dir=$conf->admin->dir_temp.'/'.$original_file; - $file=$dir.'/'.$original_file; - $command= $prog.$file.' 2>&1'; - - chdir($dstdir); - - exec($command, $out, $return_var); - if ($return_var == 1) $output['error'] = -3; // OK with Warning - elseif ($return_var == 127) $output['error'] = -4; // KO - - $output['return'] = $out; - } - - return $output; -} - /** * Remove a file or several files with a mask * @@ -802,7 +744,7 @@ function dol_delete_preview($object) { global $langs,$conf; require_once(DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"); - + $element = $object->element; $dir = $conf->$element->dir_output; @@ -1081,20 +1023,44 @@ function dol_convert_file($file,$ext='png') * * @param string $inputfile Source file name * @param string $outputfile Target file name - * @param string $mode 'gz' or 'bz' + * @param string $mode 'gz' or 'bz' or 'zip' * @return int <0 if KO, >0 if OK */ function dol_compress_file($inputfile, $outputfile, $mode="gz") { + $foundhandler=0; + try { - $data = implode("", file($inputfile)); - if ($mode == 'gz') $compressdata = gzencode($data, 9); - elseif ($mode == 'bz') $compressdata = bzcompress($data, 9); + $data = implode("", file(dol_osencode($inputfile))); + if ($mode == 'gz') { $foundhandler=1; $compressdata = gzencode($data, 9); } + elseif ($mode == 'bz') { $foundhandler=1; $compressdata = bzcompress($data, 9); } + elseif ($mode == 'zip') + { + if (defined('ODTPHP_PATHTOPCLZIP')) + { + $foundhandler=1; - $fp = fopen($outputfile, "w"); - fwrite($fp, $compressdata); - fclose($fp); + include_once(ODTPHP_PATHTOPCLZIP.'/pclzip.lib.php'); + $archive = new PclZip($outputfile); + $archive->add($inputfile, PCLZIP_OPT_REMOVE_PATH, dirname($inputfile)); + //$archive->add($inputfile); + return 1; + } + } + + if ($foundhandler) + { + $fp = fopen($outputfile, "w"); + fwrite($fp, $compressdata); + fclose($fp); + return 1; + } + else + { + dol_syslog("Try to zip with format ".$mode." with no handler for this format",LOG_ERR); + return -2; + } } catch (Exception $e) { @@ -1106,6 +1072,44 @@ function dol_compress_file($inputfile, $outputfile, $mode="gz") } } +/** + * Uncompress a file + * + * @param string $inputfile File to uncompress + * @param string $outputdir Target dir name + * @return array array('error'=>'Error code') or array() if no error + */ +function dol_uncompress($inputfile,$outputdir) +{ + global $conf; + + if (defined('ODTPHP_PATHTOPCLZIP')) + { + include_once(ODTPHP_PATHTOPCLZIP.'/pclzip.lib.php'); + $archive = new PclZip($inputfile); + if ($archive->extract(PCLZIP_OPT_PATH, $outputdir) == 0) return array('error'=>$archive->errorInfo(true)); + else return array(); + } + + if (class_exists('ZipArchive')) + { + $zip = new ZipArchive; + $res = $zip->open($inputfile); + if ($res === TRUE) + { + $zip->extractTo($outputdir.'/'); + $zip->close(); + return array(); + } + else + { + return array('error'=>'ErrUnzipFails'); + } + } + + return array('error'=>'ErrNoZipEngine'); +} + /** * Return most recent file diff --git a/htdocs/core/lib/format_cards.lib.php b/htdocs/core/lib/format_cards.lib.php index fb758aefb24..4f37051505a 100644 --- a/htdocs/core/lib/format_cards.lib.php +++ b/htdocs/core/lib/format_cards.lib.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2006-2012 Laurent Destailleur * Copyright (C) 2006 Rodolphe Quiedeville * Copyright (C) 2007 Patrick Raguin * @@ -25,12 +25,11 @@ */ - global $_Avery_Labels; $_Avery_Labels = array ( - '5160'=>array('name'=>'5160', + '5160'=>array('name'=>'5160 (Letter)', 'paper-size'=>'letter', 'metric'=>'mm', 'marginLeft'=>1.762, @@ -42,7 +41,7 @@ $_Avery_Labels = array ( 'width'=>66.675, 'height'=>25.4, 'font-size'=>8), - '5161'=>array('name'=>'5161', + '5161'=>array('name'=>'5161 (Letter)', 'paper-size'=>'letter', 'metric'=>'mm', 'marginLeft'=>0.967, @@ -54,7 +53,7 @@ $_Avery_Labels = array ( 'width'=>101.6, 'height'=>25.4, 'font-size'=>8), - '5162'=>array('name'=>'5162', + '5162'=>array('name'=>'5162 (Letter)', 'paper-size'=>'letter', 'metric'=>'mm', 'marginLeft'=>0.97, @@ -66,7 +65,7 @@ $_Avery_Labels = array ( 'width'=>100.807, 'height'=>35.72, 'font-size'=>8), - '5163'=>array('name'=>'5163', + '5163'=>array('name'=>'5163 (Letter)', 'paper-size'=>'letter', 'metric'=>'mm', 'marginLeft'=>1.762, @@ -78,7 +77,7 @@ $_Avery_Labels = array ( 'width'=>101.6, 'height'=>50.8, 'font-size'=>8), - '5164'=>array('name'=>'5164', + '5164'=>array('name'=>'5164 (Letter)', 'paper-size'=>'letter', 'metric'=>'in', 'marginLeft'=>0.148, @@ -90,7 +89,7 @@ $_Avery_Labels = array ( 'width'=>4.0, 'height'=>3.33, 'font-size'=>12), - '8600'=>array('name'=>'8600', + '8600'=>array('name'=>'8600 (Letter)', 'paper-size'=>'letter', 'metric'=>'mm', 'marginLeft'=>7.1, @@ -102,7 +101,7 @@ $_Avery_Labels = array ( 'width'=>66.6, 'height'=>25.4, 'font-size'=>8), - 'L7163'=>array('name'=>'L7163', + 'L7163'=>array('name'=>'L7163 (A4)', 'paper-size'=>'A4', 'metric'=>'mm', 'marginLeft'=>5, @@ -114,7 +113,7 @@ $_Avery_Labels = array ( 'width'=>99.1, 'height'=>38.1, 'font-size'=>10), - 'AVERYC32010'=>array('name'=>'AVERY-C32010', + 'AVERYC32010'=>array('name'=>'AVERY-C32010 (A4)', 'paper-size'=>'A4', 'metric'=>'mm', 'marginLeft'=>15, @@ -126,7 +125,7 @@ $_Avery_Labels = array ( 'width'=>85, 'height'=>54, 'font-size'=>10), - 'CARD'=>array('name'=>'Dolibarr cards', + 'CARD'=>array('name'=>'Dolibarr Business cards (A4)', 'paper-size'=>'A4', 'metric'=>'mm', 'marginLeft'=>15, diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index c76924f5822..78f584773c8 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2190,7 +2190,8 @@ function dol_print_error_email() global $langs,$conf; $langs->load("errors"); - print '
'.$langs->trans("ErrorContactEMail",$conf->global->MAIN_INFO_SOCIETE_MAIL,'ERRORNEWPAYMENT'.dol_print_date(mktime(),'%Y%m%d')).'
'; + $now=dol_now(); + print '
'.$langs->trans("ErrorContactEMail",$conf->global->MAIN_INFO_SOCIETE_MAIL,'ERRORNEWPAYMENT'.dol_print_date($now,'%Y%m%d')).'
'; } /** @@ -2833,7 +2834,8 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $idprod=0) // Le test ci-dessus ne devrait pas etre necessaire. Me signaler l'exemple du cas juridique concerne si le test suivant n'est pas suffisant. // Si le (pays vendeur = pays acheteur) alors la TVA par defaut=TVA du produit vendu. Fin de regle. - if ($societe_vendeuse->country_code == $societe_acheteuse->country_code) // Warning ->country_code not always defined + if (($societe_vendeuse->country_code == $societe_acheteuse->country_code) + || (in_array($societe_vendeuse->country_code,array('FR,MC')) && in_array($societe_acheteuse->country_code,array('FR','MC')))) // Warning ->country_code not always defined { //print 'VATRULE 3'; return get_product_vat_for_country($idprod,$societe_vendeuse->country_code); @@ -3361,7 +3363,7 @@ function complete_substitutions_array(&$substitutionarray,$outputlangs,$object=' require_once(DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'); // Check if there is external substitution to do asked by plugins - $dirsubstitutions=array_merge(array(),$conf->substitutions_modules); + $dirsubstitutions=array_merge(array(),$conf->modules_parts['substitutions']); foreach($dirsubstitutions as $reldir) { diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php index 6d5c71f2410..48928163f9c 100644 --- a/htdocs/core/lib/functions2.lib.php +++ b/htdocs/core/lib/functions2.lib.php @@ -410,7 +410,7 @@ function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='',$m else $valueforccc=$objsoc->code_client; // Clean parameters - if ($date == '') $date=mktime(); // We use local year and month of PHP server to search numbers + if ($date == '') $date=dol_now(); // We use local year and month of PHP server to search numbers // but we should use local year and month of user // Extract value for mask counter, mask raz and mask offset diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 8469ca9b931..fa6283b8e30 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -809,8 +809,7 @@ function pdf_getlinedesc($object,$i,$outputlangs,$hideref=0,$hidedesc=0,$issuppl { if ($libelleproduitservice && empty($hidedesc)) { - if ($conf->global->FCKEDITOR_ENABLE_DETAILS) $libelleproduitservice.='
'; - else $libelleproduitservice.="\n"; + $libelleproduitservice.='__N__'; } if ($desc == '(CREDIT_NOTE)' && $object->lines[$i]->fk_remise_except) @@ -889,11 +888,13 @@ function pdf_getlinedesc($object,$i,$outputlangs,$hideref=0,$hidedesc=0,$issuppl $period='('.$outputlangs->transnoentitiesnoconv('DateUntil',dol_print_date($object->lines[$i]->date_end, $format, false, $outputlangs)).')'; } //print '>'.$outputlangs->charset_output.','.$period; - $libelleproduitservice.="\n".$period; + $libelleproduitservice.="__N__".$period; //print $libelleproduitservice; } // Now we convert \n into br + if (dol_textishtml($libelleproduitservice)) $libelleproduitservice=preg_replace('/__N__/','
',$libelleproduitservice); + else $libelleproduitservice=preg_replace('/__N__/',"\n",$libelleproduitservice); $libelleproduitservice=dol_htmlentitiesbr($libelleproduitservice,1); return $libelleproduitservice; diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 014a168cd6a..22d0bdbfd0a 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -159,9 +159,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) { global $conf,$langs,$bc; - - $dirtheme=dol_buildpath($conf->global->MAIN_FORCETHEMEDIR.'/theme',0); - $urltheme=dol_buildpath($conf->global->MAIN_FORCETHEMEDIR.'/theme',1); + $dirthemes=array_merge(array($conf->global->MAIN_FORCETHEMEDIR.'/theme'),(array) $conf->modules_parts['themes']); $selected_theme=$conf->global->MAIN_THEME; if (! empty($fuser)) $selected_theme=$fuser->conf->MAIN_THEME; @@ -216,47 +214,62 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print ''; print ''; - $handle=opendir($dirtheme); + $i=0; - while (($subdir = readdir($handle))!==false) + + foreach($dirthemes as $dir) { - if (is_dir($dirtheme."/".$subdir) && substr($subdir, 0, 1) <> '.' - && substr($subdir, 0, 3) <> 'CVS' && ! preg_match('/common|phones/i',$subdir)) - { - // Disable not stable themes - //if ($conf->global->MAIN_FEATURES_LEVEL < 1 && preg_match('/bureau2crea/i',$subdir)) continue; - - if ($i % $thumbsbyrow == 0) - { - print ''; - } - - print ''; - - $i++; - - if ($i % $thumbsbyrow == 0) print ''; - } + $dirtheme=dol_buildpath($dir,0); + $urltheme=dol_buildpath($dir,1); + + if (is_dir($dirtheme)) + { + $handle=opendir($dirtheme); + if (is_resource($handle)) + { + while (($subdir = readdir($handle))!==false) + { + if (is_dir($dirtheme."/".$subdir) && substr($subdir, 0, 1) <> '.' + && substr($subdir, 0, 3) <> 'CVS' && ! preg_match('/common|phones/i',$subdir)) + { + // Disable not stable themes + //if ($conf->global->MAIN_FEATURES_LEVEL < 1 && preg_match('/bureau2crea/i',$subdir)) continue; + + if ($i % $thumbsbyrow == 0) + { + print ''; + } + + print ''; + + $i++; + + if ($i % $thumbsbyrow == 0) print ''; + } + } + } + } } + if ($i % $thumbsbyrow != 0) { while ($i % $thumbsbyrow != 0) diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 765ec971c99..917374046e0 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -131,10 +131,10 @@ insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->commande->enabled && $leftmenu=="orders"', __HANDLER__, 'left', 1208__+MAX_llx_menu__, 'commercial', '', 1202__+MAX_llx_menu__, '/commande/liste.php?leftmenu=orders&viewstatut=-1', 'StatusOrderCanceledShort', 1, 'orders', '$user->rights->commande->lire', '', 2, 7, __ENTITY__); insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->commande->enabled', __HANDLER__, 'left', 1209__+MAX_llx_menu__, 'commercial', '', 1200__+MAX_llx_menu__, '/commande/stats/index.php?leftmenu=orders', 'Statistics', 1, 'orders', '$user->rights->commande->lire', '', 2, 4, __ENTITY__); -- Commercial - Supplier's orders -insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->commande->enabled', __HANDLER__, 'left', 5100__+MAX_llx_menu__, 'commercial', 'orders_suppliers', 5__+MAX_llx_menu__, '/fourn/commande/index.php?leftmenu=orders_suppliers', 'SuppliersOrders', 0, 'orders', '$user->rights->fournisseur->commande->lire', '', 2, 6, __ENTITY__); -insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->commande->enabled', __HANDLER__, 'left', 5101__+MAX_llx_menu__, 'commercial', '', 5100__+MAX_llx_menu__, '/societe/societe.php?leftmenu=orders_suppliers', 'NewOrder', 1, 'orders', '$user->rights->fournisseur->commande->creer', '', 2, 0, __ENTITY__); -insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->commande->enabled', __HANDLER__, 'left', 5102__+MAX_llx_menu__, 'commercial', '', 5100__+MAX_llx_menu__, '/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0', 'List', 1, 'orders', '$user->rights->fournisseur->commande->lire', '', 2, 1, __ENTITY__); -insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->commande->enabled', __HANDLER__, 'left', 5108__+MAX_llx_menu__, 'commercial', '', 5100__+MAX_llx_menu__, '/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier', 'Statistics', 1, 'orders', '$user->rights->fournisseur->commande->lire', '', 2, 7, __ENTITY__); +insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->fournisseur->enabled', __HANDLER__, 'left', 5100__+MAX_llx_menu__, 'commercial', 'orders_suppliers', 5__+MAX_llx_menu__, '/fourn/commande/index.php?leftmenu=orders_suppliers', 'SuppliersOrders', 0, 'orders', '$user->rights->fournisseur->commande->lire', '', 2, 6, __ENTITY__); +insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->fournisseur->enabled', __HANDLER__, 'left', 5101__+MAX_llx_menu__, 'commercial', '', 5100__+MAX_llx_menu__, '/societe/societe.php?leftmenu=orders_suppliers', 'NewOrder', 1, 'orders', '$user->rights->fournisseur->commande->creer', '', 2, 0, __ENTITY__); +insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->fournisseur->enabled', __HANDLER__, 'left', 5102__+MAX_llx_menu__, 'commercial', '', 5100__+MAX_llx_menu__, '/fourn/commande/liste.php?leftmenu=orders_suppliers&viewstatut=0', 'List', 1, 'orders', '$user->rights->fournisseur->commande->lire', '', 2, 1, __ENTITY__); +insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->fournisseur->enabled', __HANDLER__, 'left', 5108__+MAX_llx_menu__, 'commercial', '', 5100__+MAX_llx_menu__, '/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier', 'Statistics', 1, 'orders', '$user->rights->fournisseur->commande->lire', '', 2, 7, __ENTITY__); -- Commercial - Contracts insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->contrat->enabled', __HANDLER__, 'left', 1400__+MAX_llx_menu__, 'commercial', 'contracts', 5__+MAX_llx_menu__, '/contrat/index.php?leftmenu=contracts', 'Contracts', 0, 'contracts', '$user->rights->contrat->lire', '', 2, 7, __ENTITY__); insert into llx_menu (enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('$conf->contrat->enabled', __HANDLER__, 'left', 1401__+MAX_llx_menu__, 'commercial', '', 1400__+MAX_llx_menu__, '/societe/societe.php?leftmenu=contracts', 'NewContract', 1, 'contracts', '$user->rights->contrat->creer', '', 2, 0, __ENTITY__); diff --git a/htdocs/core/menus/standard/auguria.lib.php b/htdocs/core/menus/standard/auguria.lib.php index 8023c202f56..eeb6a5c20aa 100644 --- a/htdocs/core/menus/standard/auguria.lib.php +++ b/htdocs/core/menus/standard/auguria.lib.php @@ -80,7 +80,7 @@ function print_auguria_menu($db,$atarget,$type_user) else if (! empty($_SESSION["mainmenu"]) && $newTabMenu[$i]['mainmenu'] == $_SESSION["mainmenu"]) $classname='class="tmenusel"'; else $classname='class="tmenu"'; - print_start_menu_entry_auguria($idsel); + print_start_menu_entry_auguria($idsel,$classname); print ''; print ''; print_text_menu_entry_auguria($newTabMenu[$i]['titre']); @@ -91,7 +91,7 @@ function print_auguria_menu($db,$atarget,$type_user) { if (! $type_user) { - print_start_menu_entry_auguria($idsel); + print_start_menu_entry_auguria($idsel,'class="tmenu"'); print ''; print ''; print_text_menu_entry_auguria($newTabMenu[$i]['titre']); @@ -109,28 +109,27 @@ function print_auguria_menu($db,$atarget,$type_user) /** - * Output start menu entry + * Output start menu array * * @return void */ function print_start_menu_array_auguria() { global $conf; - if (preg_match('/bluelagoon|eldy|freelug|rodolphe|yellow|dev/',$conf->css)) print '
'; - $file=$dirtheme."/".$subdir."/thumb.png"; - $url=$urltheme."/".$subdir."/thumb.png"; - if (! file_exists($file)) $url=$urltheme."/common/nophoto.jpg"; - print '
'; - print 'id:'').'" style="font-weight: normal;" alt="'.$langs->trans("Preview").'">'; - if ($subdir == $conf->global->MAIN_THEME) $title=$langs->trans("ThemeCurrentlyActive"); - else $title=$langs->trans("ShowPreview"); - print ''.$title.''; - print ''; - print '
'; - if ($subdir == $selected_theme) - { - print ' '.$subdir.''; - } - else - { - print ' '.$subdir; - } - print '
'; + $file=$dirtheme."/".$subdir."/thumb.png"; + $url=$urltheme."/".$subdir."/thumb.png"; + if (! file_exists($file)) $url=$urltheme."/common/nophoto.jpg"; + print '
'; + print 'id:'').'" style="font-weight: normal;" alt="'.$langs->trans("Preview").'">'; + if ($subdir == $conf->global->MAIN_THEME) $title=$langs->trans("ThemeCurrentlyActive"); + else $title=$langs->trans("ShowPreview"); + print ''.$title.''; + print ''; + print '
'; + if ($subdir == $selected_theme) + { + print ' '.$subdir.''; + } + else + { + print ' '.$subdir; + } + print '
'; - else print '
    '; + print '
    '; + print '
      '; } /** - * Output menu entry + * Output start menu entry * * @param string $idsel Text * @return void */ -function print_start_menu_entry_auguria($idsel) +function print_start_menu_entry_auguria($idsel,$classname) { - global $conf; - if (preg_match('/bluelagoon|eldy|freelug|rodolphe|yellow|dev/',$conf->css)) print '
'; - else print ''; + print ''; + print ''; print "\n"; } @@ -167,9 +164,8 @@ function print_end_menu_entry_auguria() */ function print_end_menu_array_auguria() { - global $conf; - if (preg_match('/bluelagoon|eldy|freelug|rodolphe|yellow|dev/',$conf->css)) print '
'; - else print ''; + print ''; + print ''; print "\n"; } diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index e249311631f..818d6d902f8 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -55,7 +55,7 @@ function print_eldy_menu($db,$atarget,$type_user) $classname = 'class="tmenu"'; } $idsel='home'; - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print ''; print '
'; print '
'; @@ -85,7 +85,7 @@ function print_eldy_menu($db,$atarget,$type_user) if (($conf->societe->enabled && $user->rights->societe->lire) || ($conf->fournisseur->enabled && $user->rights->fournisseur->lire)) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print ''; print '
'; print '
'; @@ -98,7 +98,7 @@ function print_eldy_menu($db,$atarget,$type_user) { if (! $type_user) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print '
'; print ''; print_text_menu_entry($langs->trans("ThirdParties")); @@ -131,7 +131,7 @@ function print_eldy_menu($db,$atarget,$type_user) $idsel='products'; if ($user->rights->produit->lire || $user->rights->service->lire) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print ''; print '
'; print '
'; @@ -144,7 +144,7 @@ function print_eldy_menu($db,$atarget,$type_user) { if (! $type_user) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print '
'; print ''; print_text_menu_entry($chaine); @@ -178,7 +178,7 @@ function print_eldy_menu($db,$atarget,$type_user) $idsel='commercial'; if($user->rights->societe->lire || $user->rights->societe->contact->lire) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print ''; print '
'; print '
'; @@ -191,7 +191,7 @@ function print_eldy_menu($db,$atarget,$type_user) { if (! $type_user) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print '
'; print ''; print print_text_menu_entry($langs->trans("Commercial")); @@ -221,7 +221,7 @@ function print_eldy_menu($db,$atarget,$type_user) if ($user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire || $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print ''; print '
'; print '
'; @@ -234,7 +234,7 @@ function print_eldy_menu($db,$atarget,$type_user) { if (! $type_user) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print '
'; print ''; print_text_menu_entry($langs->trans("MenuFinancial")); @@ -263,7 +263,7 @@ function print_eldy_menu($db,$atarget,$type_user) $idsel='bank'; if ($user->rights->banque->lire) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print ''; print '
'; print '
'; @@ -276,7 +276,7 @@ function print_eldy_menu($db,$atarget,$type_user) { if (! $type_user) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print '
'; print ''; print_text_menu_entry($langs->trans("MenuBankCash")); @@ -304,7 +304,7 @@ function print_eldy_menu($db,$atarget,$type_user) $idsel='project'; if ($user->rights->projet->lire) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print ''; print '
'; print '
'; @@ -317,7 +317,7 @@ function print_eldy_menu($db,$atarget,$type_user) { if (! $type_user) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print '
'; print ''; print_text_menu_entry($langs->trans("Projects")); @@ -345,7 +345,7 @@ function print_eldy_menu($db,$atarget,$type_user) $idsel='tools'; if ($user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print ''; print '
'; print '
'; @@ -358,7 +358,7 @@ function print_eldy_menu($db,$atarget,$type_user) { if (! $type_user) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print '
'; print ''; print_text_menu_entry($langs->trans("Tools")); @@ -384,7 +384,7 @@ function print_eldy_menu($db,$atarget,$type_user) } $idsel='shop'; - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print ''; print '
'; print '
'; @@ -412,7 +412,7 @@ function print_eldy_menu($db,$atarget,$type_user) $idsel='members'; if ($user->rights->adherent->lire) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print ''; print '
'; print '
'; @@ -425,7 +425,7 @@ function print_eldy_menu($db,$atarget,$type_user) { if (! $type_user) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print '
'; print ''; print_text_menu_entry($langs->trans("MenuMembers")); @@ -475,7 +475,7 @@ function print_eldy_menu($db,$atarget,$type_user) else if (! empty($_SESSION["mainmenu"]) && $newTabMenu[$i]['mainmenu'] == $_SESSION["mainmenu"]) $classname='class="tmenusel"'; else $classname='class="tmenu"'; - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,$classname); print ''; print '
'; print '
'; @@ -488,7 +488,7 @@ function print_eldy_menu($db,$atarget,$type_user) { if (! $type_user) { - print_start_menu_entry($idsel); + print_start_menu_entry($idsel,'class="tmenu"'); print '
'; print ''; print_text_menu_entry($newTabMenu[$i]['titre']); @@ -503,12 +503,15 @@ function print_eldy_menu($db,$atarget,$type_user) } - +/** + * Output start menu array + * + * @return void + */ function print_start_menu_array() { - global $conf; - if (preg_match('/bluelagoon|eldy|freelug|rodolphe|yellow|dev/',$conf->css)) print ''; - else print '
    '; + print '
    '; + print '
      '; } /** @@ -517,11 +520,10 @@ function print_start_menu_array() * @param string $idsel Text * @return void */ -function print_start_menu_entry($idsel) +function print_start_menu_entry($idsel,$classname) { - global $conf; - if (preg_match('/bluelagoon|eldy|freelug|rodolphe|yellow|dev/',$conf->css)) print '
'; - else print ''; + print ''; print "\n"; } @@ -558,9 +557,8 @@ function print_end_menu_entry() */ function print_end_menu_array() { - global $conf; - if (preg_match('/bluelagoon|eldy|freelug|rodolphe|yellow|dev/',$conf->css)) print '
'; - else print ''; + print ''; + print ''; print "\n"; } diff --git a/htdocs/core/modules/facture/modules_facture.php b/htdocs/core/modules/facture/modules_facture.php index 973a8461799..54fdeaef810 100644 --- a/htdocs/core/modules/facture/modules_facture.php +++ b/htdocs/core/modules/facture/modules_facture.php @@ -32,8 +32,7 @@ require_once(DOL_DOCUMENT_ROOT."/compta/bank/class/account.class.php"); // Req /** - * \class ModelePDFFactures - * \brief Classe mere des modeles de facture + * Parent class of invoice document generators */ abstract class ModelePDFFactures extends CommonDocGenerator { @@ -61,8 +60,7 @@ abstract class ModelePDFFactures extends CommonDocGenerator } /** - * \class ModeleNumRefFactures - * \brief Classe mere des modeles de numerotation des references de facture + * Classe mere des modeles de numerotation des references de facture */ abstract class ModeleNumRefFactures { diff --git a/htdocs/core/modules/mailings/modules_mailings.php b/htdocs/core/modules/mailings/modules_mailings.php index 75032bbab9e..53729e812e3 100644 --- a/htdocs/core/modules/mailings/modules_mailings.php +++ b/htdocs/core/modules/mailings/modules_mailings.php @@ -143,6 +143,8 @@ class MailingTargets // This can't be abstract as it is used for some method */ function add_to_target($mailing_id, $cibles) { + global $conf; + $this->db->begin(); // Insert emailing targest from array into database @@ -162,7 +164,10 @@ class MailingTargets // This can't be abstract as it is used for some method $sql .= "'".$this->db->escape($cibles[$i]['other'])."',"; $sql .= "'".$this->db->escape($cibles[$i]['source_url'])."',"; $sql .= "'".$this->db->escape($cibles[$i]['source_id'])."',"; - $sql .= "'".$this->db->escape(md5($cibles[$i]['email'].';'.$cibles[$i]['name'].';'.$mailing_id))."',"; + if ($conf->global->MAILING_EMAIL_UNSUBSCRIBE==1) + { + $sql .= "'".$this->db->escape(md5($cibles[$i]['email'].';'.$cibles[$i]['name'].';'.$mailing_id.';'.$conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY))."',"; + } $sql .= "'".$this->db->escape($cibles[$i]['source_type'])."')"; $result=$this->db->query($sql); if ($result) diff --git a/htdocs/core/modules/member/cards/pdf_standard.class.php b/htdocs/core/modules/member/doc/pdf_standard.class.php similarity index 85% rename from htdocs/core/modules/member/cards/pdf_standard.class.php rename to htdocs/core/modules/member/doc/pdf_standard.class.php index 3c347d23972..a2d554ccc82 100644 --- a/htdocs/core/modules/member/cards/pdf_standard.class.php +++ b/htdocs/core/modules/member/doc/pdf_standard.class.php @@ -1,5 +1,7 @@ +/* Copyright (C) 2003 Steve Dillon + * Copyright (C) 2003 Laurent Passebecq + * Copyright (C) 2001-2003 Rodolphe Quiedeville * Copyright (C) 2002-2003 Jean-Louis Bergamo * Copyright (C) 2006-2010 Laurent Destailleur * @@ -25,16 +27,6 @@ * disponible ici : http://www.fpdf.org/fr/script/script29.php */ -//////////////////////////////////////////////////// -// PDF_Label -// -// Classe afin d'editer au format PDF des etiquettes -// au format Avery ou personnalise -// -// -// Copyright (C) 2003 Laurent PASSEBECQ (LPA) -// Base sur les fonctions de Steve Dillon : steved@mad.scientist.com -// //------------------------------------------------------------------- // VERSIONS : // 1.0 : Initial release @@ -53,13 +45,9 @@ //////////////////////////////////////////////////// /** - * \file htdocs/core/modules/member/cards/pdf_standard.class.php + * \file htdocs/core/modules/member/doc/pdf_standard.class.php * \ingroup member * \brief Fichier de la classe permettant d'editer au format PDF des etiquettes au format Avery ou personnalise - * \author Steve Dillon - * \author Laurent Passebecq - * \author Rodolphe Quiedville - * \author Jean Louis Bergamo. */ require_once(DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'); @@ -67,8 +55,7 @@ require_once(DOL_DOCUMENT_ROOT.'/core/lib/format_cards.lib.php'); /** - * \class pdf_standard - * \brief Classe afin d'editer au format PDF des cartes de visite au format Avery ou personnalise + * Classe afin d'editer au format PDF des cartes de visite au format Avery ou personnalise */ class pdf_standard { @@ -107,8 +94,14 @@ class pdf_standard } - //Methode qui permet de modifier la taille des caracteres - // Cela modiera aussi l'espace entre chaque ligne + /** + * Methode qui permet de modifier la taille des caracteres + * Cela modiera aussi l'espace entre chaque ligne + * + * @param PDF &$pdf PDF + * @param int $pt point + * @return void + */ function Set_Char_Size(&$pdf,$pt) { if ($pt > 3) { @@ -119,7 +112,19 @@ class pdf_standard } - // On imprime une etiquette + /** + * On imprime une etiquette + * + * @param PDF &$pdf PDF + * @param string $textleft Textleft + * @param string $header Header + * @param string $footer Footer + * @param Translate $outputlangs Output langs + * @param string $textright Text right + * @param int $idmember Id member + * @param string $photomember Photo member + * @return void + */ function Add_PDF_card(&$pdf,$textleft,$header,$footer,$outputlangs,$textright='',$idmember=0,$photomember='') { global $mysoc,$conf,$langs; @@ -263,7 +268,18 @@ class pdf_standard } } - + /** + * Print dot line + * + * @param PDF &$pdf PDF + * @param int $x1 X1 + * @param int $y1 Y1 + * @param int $x2 X2 + * @param int $y2 Y2 + * @param int $epaisseur Epaisseur + * @param int $nbPointilles Nb pointilles + * @return void + */ function _Pointille(&$pdf,$x1=0,$y1=0,$x2=210,$y2=297,$epaisseur=1,$nbPointilles=15) { $pdf->SetLineWidth($epaisseur); @@ -293,8 +309,17 @@ class pdf_standard } } - /* + /** * Fonction realisant une croix aux 4 coins des cartes + * + * @param PDF &$pdf PDF + * @param int $x1 X1 + * @param int $y1 Y1 + * @param int $x2 X2 + * @param int $y2 Y2 + * @param int $epaisseur Epaisseur + * @param int $taille Size + * @return void */ function _Croix(&$pdf,$x1=0,$y1=0,$x2=210,$y2=297,$epaisseur=1,$taille=4) { @@ -318,9 +343,17 @@ class pdf_standard $pdf->SetDrawColor(0,0,0); } - // convert units (in to mm, mm to in) - // $src and $dest must be 'in' or 'mm' - function _Convert_Metric ($value, $src, $dest) { + /** + * Convert units (in to mm, mm to in) + * $src and $dest must be 'in' or 'mm' + * + * @param int $value value + * @param string $src from + * @param string $dest to + * @return float value value after conversion + */ + function _Convert_Metric ($value, $src, $dest) + { if ($src != $dest) { $tab['in'] = 39.37008; $tab['mm'] = 1000; @@ -330,8 +363,14 @@ class pdf_standard } } - // Give the height for a char size given. - function _Get_Height_Chars($pt) { + /** + * Give the height for a char size given. + * + * @param int $pt Point + * @return int Height chars + */ + function _Get_Height_Chars($pt) + { // Tableau de concordance entre la hauteur des caracteres et de l'espacement entre les lignes $_Table_Hauteur_Chars = array(6=>2, 7=>2.5, 8=>3, 9=>3.5, 10=>4, 11=>6, 12=>7, 13=>8, 14=>9, 15=>10); if (in_array($pt, array_keys($_Table_Hauteur_Chars))) { @@ -341,7 +380,15 @@ class pdf_standard } } - function _Set_Format(&$pdf, $format) { + /** + * Set format + * + * @param PDF &$pdf PDF + * @param string $format Format + * @return void + */ + function _Set_Format(&$pdf, $format) + { $this->_Metric = $format['metric']; $this->_Avery_Name = $format['name']; @@ -362,15 +409,15 @@ class pdf_standard * Function to build PDF on disk, then output on HTTP strem. * * @param array $arrayofmembers Array of members informations - * @param Translata $outputlangs Lang object for output language - * @return int 1=ok, 0=ko + * @param Translate $outputlangs Lang object for output language + * @param string $srctemplatepath Full path of source filename for generator using a template file + * @return int 1=OK, 0=KO */ - function write_file($arrayofmembers,$outputlangs) + function write_file($arrayofmembers,$outputlangs,$srctemplatepath) { global $user,$conf,$langs,$mysoc,$_Avery_Labels; - // Choose type (CARD by default) - $this->code=empty($conf->global->ADHERENT_CARD_TYPE)?'CARD':$conf->global->ADHERENT_CARD_TYPE; + $this->code=$srctemplatepath; $this->Tformat = $_Avery_Labels[$this->code]; if (empty($this->Tformat)) { dol_print_error('','ErrorBadTypeForCard'.$this->code); exit; } $this->type = 'pdf'; @@ -387,8 +434,9 @@ class pdf_standard $outputlangs->load("admin"); - $dir = $conf->adherent->dir_temp; - $file = $dir . "/tmpcards.pdf"; + $dir = (empty($outputdir)?$conf->adherent->dir_temp:$outputdir); + $filename='tmp_cards.pdf'; + $file = $dir."/".$filename; if (! file_exists($dir)) { @@ -457,7 +505,6 @@ class pdf_standard $attachment=true; if (! empty($conf->global->MAIN_DISABLE_FORCE_SAVEAS)) $attachment=false; - $filename='tmpcards.pdf'; $type=dol_mimetype($filename); //if ($encoding) header('Content-Encoding: '.$encoding); diff --git a/htdocs/core/modules/member/cards/modules_cards.php b/htdocs/core/modules/member/modules_cards.php similarity index 67% rename from htdocs/core/modules/member/cards/modules_cards.php rename to htdocs/core/modules/member/modules_cards.php index d92a54be703..705981e652f 100644 --- a/htdocs/core/modules/member/cards/modules_cards.php +++ b/htdocs/core/modules/member/modules_cards.php @@ -20,7 +20,7 @@ */ /** - * \file htdocs/core/modules/member/cards/modules_cards.php + * \file htdocs/core/modules/member/modules_cards.php * \ingroup member * \brief File of parent class of document generator for members cards. */ @@ -30,8 +30,7 @@ require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php"); /** - * \class ModelePDFCards - * \brief Parent class of document generator for members cards. + * Parent class of document generator for members cards. */ class ModelePDFCards { @@ -74,35 +73,75 @@ function members_card_pdf_create($db, $arrayofmembers, $modele, $outputlangs) global $conf,$langs; $langs->load("members"); - $dir = DOL_DOCUMENT_ROOT . "/core/modules/member/cards/"; - - // Positionne modele sur le nom du modele a utiliser + $error=0; + + // Increase limit for PDF build + $err=error_reporting(); + error_reporting(0); + @set_time_limit(120); + error_reporting($err); + + $code=''; + $srctemplatepath=''; + + // Positionne le modele sur le nom du modele a utiliser if (! dol_strlen($modele)) { - if ($conf->global->ADHERENT_CARDS_ADDON_PDF) + if (! empty($conf->global->ADHERENT_CARDS_ADDON_PDF)) { - $modele = $conf->global->ADHERENT_CARDS_ADDON_PDF; + $code = $conf->global->ADHERENT_CARDS_ADDON_PDF; } else { - $modele = 'standard'; + $code = $modele; } } - - - // Charge le modele - $file = "pdf_".$modele.".class.php"; - if (file_exists($dir.$file)) + else $code=$modele; + $modele='standard'; + + // If selected modele is a filename template (then $modele="modelname:filename") + $tmp=explode(':',$modele,2); + if (! empty($tmp[1])) { - $classname = "pdf_".$modele; - require_once($dir.$file); + $modele=$tmp[0]; + $srctemplatepath=$tmp[1]; + } + else $srctemplatepath=$code; + + // Search template files + $file=''; $classname=''; $filefound=0; + $dirmodels=array('/'); + if (is_array($conf->modules_parts['models'])) $dirmodels=array_merge($dirmodels,$conf->modules_parts['models']); + foreach($dirmodels as $reldir) + { + foreach(array('doc','pdf') as $prefix) + { + $file = $prefix."_".$modele.".class.php"; + + // On verifie l'emplacement du modele + $file=dol_buildpath($reldir."core/modules/member/doc/".$file,0); + if (file_exists($file)) + { + $filefound=1; + $classname=$prefix.'_'.$modele; + break; + } + } + if ($filefound) break; + } + + + // Charge le modele + if ($filefound) + { + require_once($file); $obj = new $classname($db); // We save charset_output to restore it because write_file can change it if needed for // output format that does not support UTF8. $sav_charset_output=$outputlangs->charset_output; - if ($obj->write_file($arrayofmembers, $outputlangs) > 0) + if ($obj->write_file($arrayofmembers, $outputlangs, $srctemplatepath) > 0) { $outputlangs->charset_output=$sav_charset_output; return 1; diff --git a/htdocs/core/modules/modAdherent.class.php b/htdocs/core/modules/modAdherent.class.php index 2e7a874c914..9187502d6d1 100644 --- a/htdocs/core/modules/modAdherent.class.php +++ b/htdocs/core/modules/modAdherent.class.php @@ -75,26 +75,20 @@ class modAdherent extends DolibarrModules $this->const[4] = array("ADHERENT_MAIL_VALID","texte","Votre adhésion vient d'être validée. \r\nVoici le rappel de vos coordonnées (toute information erronée entrainera la non validation de votre inscription) :\r\n\r\n%INFOS%\r\n\r\n","Mail de validation"); $this->const[5] = array("ADHERENT_MAIL_VALID_SUBJECT","chaine","Votre adhésion a été validée","Sujet du mail de validation"); $this->const[6] = array("ADHERENT_MAIL_RESIL_SUBJECT","chaine","Résiliation de votre adhésion","Sujet du mail de résiliation"); - $this->const[10] = array("ADHERENT_MAILMAN_UNSUB_URL","chaine","http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&user=%EMAIL%","Url de désinscription aux listes mailman"); - $this->const[11] = array("ADHERENT_MAILMAN_URL","chaine","http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&send_welcome_msg_to_this_batch=1&subscribees=%EMAIL%","Url pour les inscriptions mailman"); - $this->const[12] = array("ADHERENT_MAILMAN_LISTS","chaine","","Mailing-list to subscribe new members to"); - $this->const[17] = array("ADHERENT_SPIP_USER","chaine","","Utilisateur de connexion à la base spip"); - $this->const[18] = array("ADHERENT_SPIP_PASS","chaine","","Mot de passe de connexion à la base spip"); - $this->const[19] = array("ADHERENT_SPIP_SERVEUR","chaine","","serveur spip"); - $this->const[20] = array("ADHERENT_SPIP_DB","chaine","","db spip"); $this->const[21] = array("ADHERENT_MAIL_FROM","chaine","","From des mails"); $this->const[22] = array("ADHERENT_MAIL_COTIS","texte","Bonjour %PRENOM%,\r\nCet email confirme que votre cotisation a été reçue\r\net enregistrée","Mail de validation de cotisation"); $this->const[23] = array("ADHERENT_MAIL_COTIS_SUBJECT","chaine","Reçu de votre cotisation","Sujet du mail de validation de cotisation"); $this->const[25] = array("ADHERENT_CARD_HEADER_TEXT","chaine","%ANNEE%","Texte imprimé sur le haut de la carte adhérent"); $this->const[26] = array("ADHERENT_CARD_FOOTER_TEXT","chaine","Association AZERTY","Texte imprimé sur le bas de la carte adhérent"); - $this->const[27] = array("ADHERENT_CARD_TEXT","texte","%PRENOM% %NOM%\r\nMembre ne %ID%\r\n%EMAIL%\r\n%ADRESSE%\r\n%CP% %VILLE%\r\n%PAYS%","Texte imprimé sur la carte adhérent"); + $this->const[27] = array("ADHERENT_CARD_TEXT","texte","%FULLNAME%\r\nID: %ID%\r\n%EMAIL%\r\n%ADDRESS%\r\n%ZIP% %TOWN%\r\n%COUNTRY%","Text to print on member cards"); $this->const[28] = array("ADHERENT_MAILMAN_ADMINPW","chaine","","Mot de passe Admin des liste mailman"); $this->const[31] = array("ADHERENT_BANK_USE_AUTO","yesno","","Insertion automatique des cotisations dans le compte banquaire"); $this->const[32] = array("ADHERENT_BANK_ACCOUNT","chaine","","ID du Compte banquaire utilise"); $this->const[33] = array("ADHERENT_BANK_CATEGORIE","chaine","","ID de la catégorie banquaire des cotisations"); - $this->const[34] = array("ADHERENT_ETIQUETTE_TYPE","chaine","L7163","Type d'étiquette (pour impression de planche d'étiquettes)"); - - // Boites + $this->const[34] = array("ADHERENT_ETIQUETTE_TYPE","chaine","L7163","Type of address sheets"); + $this->const[35] = array("ADHERENT_ETIQUETTE_TEXT",'texte',"%FULLNAME%\n%ADDRESS%\n%ZIP% %TOWN%\n%COUNTRY%","Text to print on member address sheets"); + + // Boxes //------- $this->boxes = array(); $r=0; diff --git a/htdocs/core/modules/modMailmanSpip.class.php b/htdocs/core/modules/modMailmanSpip.class.php index 34ef90f5a2e..71f202805b9 100644 --- a/htdocs/core/modules/modMailmanSpip.class.php +++ b/htdocs/core/modules/modMailmanSpip.class.php @@ -17,10 +17,10 @@ */ /** - * \defgroup clicktodial Module clicktodial - * \brief Module pour gerer l'appel automatique - * \file htdocs/core/modules/modClickToDial.class.php - * \ingroup clicktodial + * \defgroup mailmanspip Module mailmanspip + * \brief Module to manage mailman and spip + * \file htdocs/core/modules/modMailmanSpip.class.php + * \ingroup mailmanspip * \brief Fichier de description et activation du module de click to Dial */ @@ -28,10 +28,8 @@ include_once(DOL_DOCUMENT_ROOT ."/core/modules/DolibarrModules.class.php"); /** - * \class modMailmanSpip - * \brief Classe de description et activation du module de Click to Dial + * Classe de description et activation du module de Click to Dial */ - class modMailmanSpip extends DolibarrModules { @@ -68,7 +66,10 @@ class modMailmanSpip extends DolibarrModules // Constants $this->const = array(); - + $this->const[1] = array("ADHERENT_MAILMAN_UNSUB_URL","chaine","http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&user=%EMAIL%","Url de désinscription aux listes mailman"); + $this->const[2] = array("ADHERENT_MAILMAN_URL","chaine","http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&send_welcome_msg_to_this_batch=1&subscribees=%EMAIL%","Url pour les inscriptions mailman"); + $this->const[3] = array("ADHERENT_MAILMAN_LISTS","chaine","","Mailing-list to subscribe new members to"); + // Boxes $this->boxes = array(); diff --git a/htdocs/core/modules/member/labels/pdf_standardlabel.class.php b/htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php similarity index 85% rename from htdocs/core/modules/member/labels/pdf_standardlabel.class.php rename to htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php index f5f74cd8c40..c4a5b80d6ba 100644 --- a/htdocs/core/modules/member/labels/pdf_standardlabel.class.php +++ b/htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php @@ -1,5 +1,7 @@ +/* Copyright (C) 2003 Steve Dillon + * Copyright (C) 2003 Laurent Passebecq + * Copyright (C) 2001-2003 Rodolphe Quiedeville * Copyright (C) 2002-2003 Jean-Louis Bergamo * Copyright (C) 2006-2010 Laurent Destailleur * @@ -25,16 +27,6 @@ * disponible ici : http://www.fpdf.org/fr/script/script29.php */ -//////////////////////////////////////////////////// -// PDF_Label -// -// Classe afin d'editer au format PDF des etiquettes -// au format Avery ou personnalise -// -// -// Copyright (C) 2003 Laurent PASSEBECQ (LPA) -// Base sur les fonctions de Steve Dillon : steved@mad.scientist.com -// //------------------------------------------------------------------- // VERSIONS : // 1.0 : Initial release @@ -53,13 +45,9 @@ //////////////////////////////////////////////////// /** - * \file htdocs/core/modules/member/labels/pdf_standardlabel.class.php - * \ingroup member + * \file htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php + * \ingroup core * \brief Fichier de la classe permettant d'editer au format PDF des etiquettes au format Avery ou personnalise - * \author Steve Dillon - * \author Laurent Passebecq - * \author Rodolphe Quiedville - * \author Jean Louis Bergamo. */ require_once(DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'); @@ -106,8 +94,14 @@ class pdf_standardlabel $this->db = $db; } - //Methode qui permet de modifier la taille des caracteres - // Cela modiera aussi l'espace entre chaque ligne + /** + * Methode qui permet de modifier la taille des caracteres + * Cela modiera aussi l'espace entre chaque ligne + * + * @param PDF &$pdf PDF + * @param int $pt point + * @return void + */ function Set_Char_Size(&$pdf,$pt) { if ($pt > 3) { @@ -117,8 +111,17 @@ class pdf_standardlabel } } - - // On imprime une etiquette + /** + * On imprime une etiquette + * + * @param PDF &$pdf PDF + * @param string $textleft Textleft + * @param string $header Header + * @param string $footer Footer + * @param Translate $outputlangs Output langs + * @param string $textright Text right + * @return void + */ function Add_PDF_card(&$pdf,$textleft,$header,$footer,$outputlangs,$textright='') { global $mysoc,$conf,$langs; @@ -148,6 +151,9 @@ class pdf_standardlabel // Define photo $photo=''; + // Define background image + $backgroundimage=''; + // Print lines if ($this->code == "CARD") { @@ -156,6 +162,12 @@ class pdf_standardlabel $this->_Croix($pdf,$_PosX,$_PosY,$_PosX+$this->_Width,$_PosY+$this->_Height,0.1,10); } + // Background + if ($backgroundimage) + { + $pdf->image($backgroundimage,$_PosX,$_PosY,$this->_Width,$this->_Height); + } + // Top if ($header!='') { @@ -169,7 +181,7 @@ class pdf_standardlabel $pdf->Cell($this->_Width, $this->_Line_Height, $outputlangs->convToOutputCharset($header),0,1,'C'); } - // Center + // Middle if ($textright=='') // Only a left part { if ($textleft == '%LOGO%' && $logo) $this->Image($logo,$_PosX+2,$_PosY+3+$this->_Line_Height,20); @@ -177,7 +189,7 @@ class pdf_standardlabel else { $pdf->SetXY($_PosX+3, $_PosY+3+$this->_Line_Height); - $pdf->MultiCell($this->_Width, $this->_Line_Height, $outputlangs->convToOutputCharset($textleft)); + $pdf->MultiCell($this->_Width, $this->_Line_Height, $outputlangs->convToOutputCharset($textleft),0,'L'); } } else if ($textleft!='' && $textright!='') // @@ -194,12 +206,12 @@ class pdf_standardlabel if ($textright == '%LOGO%' && $logo) $pdf->Image($logo,$_PosX+$this->_Width-21,$_PosY+3+$this->_Line_Height,20); else if ($textright == '%PHOTO%' && $photo) $pdf->Image($photo,$_PosX+$this->_Width-21,$_PosY+3+$this->_Line_Height,20); $pdf->SetXY($_PosX+2, $_PosY+3+$this->_Line_Height); - $pdf->MultiCell($this->_Width-22, $this->_Line_Height, $outputlangs->convToOutputCharset($textleft)); + $pdf->MultiCell($this->_Width-22, $this->_Line_Height, $outputlangs->convToOutputCharset($textleft),0,'L'); } else { $pdf->SetXY($_PosX+2, $_PosY+3+$this->_Line_Height); - $pdf->MultiCell(round($this->_Width/2), $this->_Line_Height, $outputlangs->convToOutputCharset($textleft)); + $pdf->MultiCell(round($this->_Width/2), $this->_Line_Height, $outputlangs->convToOutputCharset($textleft),0,'L'); $pdf->SetXY($_PosX+round($this->_Width/2), $_PosY+3+$this->_Line_Height); $pdf->MultiCell(round($this->_Width/2)-2, $this->_Line_Height, $outputlangs->convToOutputCharset($textright),0,'R'); } @@ -245,6 +257,17 @@ class pdf_standardlabel } + /** + * Print dot line + * + * @param PDF &$pdf PDF + * @param int $x1 X1 + * @param int $y1 Y1 + * @param int $x2 X2 + * @param int $y2 Y2 + * @param int $epaisseur Epaisseur + * @param int $nbPointilles Nb pointilles + */ function _Pointille(&$pdf,$x1=0,$y1=0,$x2=210,$y2=297,$epaisseur=1,$nbPointilles=15) { $pdf->SetLineWidth($epaisseur); @@ -274,8 +297,17 @@ class pdf_standardlabel } } - /* + /** * Fonction realisant une croix aux 4 coins des cartes + * + * @param PDF &$pdf PDF + * @param int $x1 X1 + * @param int $y1 Y1 + * @param int $x2 X2 + * @param int $y2 Y2 + * @param int $epaisseur Epaisseur + * @param int $taille Size + * @return void */ function _Croix(&$pdf,$x1=0,$y1=0,$x2=210,$y2=297,$epaisseur=1,$taille=4) { @@ -299,8 +331,15 @@ class pdf_standardlabel $pdf->SetDrawColor(0,0,0); } - // convert units (in to mm, mm to in) - // $src and $dest must be 'in' or 'mm' + /** + * Convert units (in to mm, mm to in) + * $src and $dest must be 'in' or 'mm' + * + * @param int $value value + * @param string $src from + * @param string $dest to + * @return float value value after conversion + */ function _Convert_Metric ($value, $src, $dest) { if ($src != $dest) { $tab['in'] = 39.37008; @@ -311,7 +350,12 @@ class pdf_standardlabel } } - // Give the height for a char size given. + /** + * Give the height for a char size given. + * + * @param int $pt Point + * @return int Height chars + */ function _Get_Height_Chars($pt) { // Tableau de concordance entre la hauteur des caracteres et de l'espacement entre les lignes $_Table_Hauteur_Chars = array(6=>2, 7=>2.5, 8=>3, 9=>3.5, 10=>4, 11=>6, 12=>7, 13=>8, 14=>9, 15=>10); @@ -322,7 +366,15 @@ class pdf_standardlabel } } - function _Set_Format(&$pdf, $format) { + /** + * Set format + * + * @param PDF &$pdf PDF + * @param string $format Format + * @return void + */ + function _Set_Format(&$pdf, $format) + { $this->_Metric = $format['metric']; $this->_Avery_Name = $format['name']; $this->_Avery_Code = $format['code']; @@ -343,14 +395,15 @@ class pdf_standardlabel * * @param array $arrayofmembers Array of members informations * @param Translate $outputlangs Lang object for output language + * @param string $srctemplatepath Full path of source filename for generator using a template file + * @param string $outputdir Output directory * @return int 1=OK, 0=KO */ - function write_file($arrayofmembers,$outputlangs) + function write_file($arrayofmembers,$outputlangs,$srctemplatepath,$outputdir='') { global $user,$conf,$langs,$mysoc,$_Avery_Labels; - // Choose type (L7163 by default) - $this->code=empty($conf->global->ADHERENT_ETIQUETTE_TYPE)?'L7163':$conf->global->ADHERENT_ETIQUETTE_TYPE; + $this->code=$srctemplatepath; $this->Tformat = $_Avery_Labels[$this->code]; if (empty($this->Tformat)) { dol_print_error('','ErrorBadTypeForCard'.$this->code); exit; } $this->type = 'pdf'; @@ -366,9 +419,9 @@ class pdf_standardlabel $outputlangs->load("members"); $outputlangs->load("admin"); - - $dir = $conf->adherent->dir_temp; - $file = $dir . "/tmplabels.pdf"; + $dir = (empty($outputdir)?$conf->adherent->dir_temp:$outputdir); + $filename='tmp_address_sheet.pdf'; + $file = $dir."/".$filename; if (! file_exists($dir)) { @@ -437,7 +490,6 @@ class pdf_standardlabel $attachment=true; if (! empty($conf->global->MAIN_DISABLE_FORCE_SAVEAS)) $attachment=false; - $filename='tmplabels.pdf'; $type=dol_mimetype($filename); //if ($encoding) header('Content-Encoding: '.$encoding); diff --git a/htdocs/core/modules/member/labels/modules_labels.php b/htdocs/core/modules/printsheet/modules_labels.php similarity index 57% rename from htdocs/core/modules/member/labels/modules_labels.php rename to htdocs/core/modules/printsheet/modules_labels.php index af2b6a7f3b5..cf770e6677c 100644 --- a/htdocs/core/modules/member/labels/modules_labels.php +++ b/htdocs/core/modules/printsheet/modules_labels.php @@ -20,7 +20,7 @@ */ /** - * \file htdocs/core/modules/member/labels/modules_labels.php + * \file htdocs/core/modules/printsheet/modules_labels.php * \ingroup member * \brief File of parent class of document generator for members labels sheets. */ @@ -30,8 +30,7 @@ require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php"); /** - * \class ModelePDFLabels - * \brief Parent class of document generator for members cards. + * Parent class of document generator for address sheet. */ class ModelePDFLabels { @@ -63,48 +62,86 @@ class ModelePDFLabels /** * Create a document onto disk accordign to template module * - * @param DoliDB $db Database handler - * @param array $arrayofmembers Array of members - * @param string $modele Force le modele a utiliser ('' to not force) - * @param Translate $outputlangs Objet lang a utiliser pour traduction - * @return int <0 if KO, >0 if OK + * @param DoliDB $db Database handler + * @param array $arrayofmembers Array of members + * @param string $modele Force le modele a utiliser ('' to not force) + * @param Translate $outputlangs Objet lang a utiliser pour traduction + * @param string $outputdir Output directory + * @return int <0 if KO, >0 if OK */ -function members_label_pdf_create($db, $arrayofmembers, $modele, $outputlangs) +function members_label_pdf_create($db, $arrayofmembers, $modele, $outputlangs, $outputdir='') { global $conf,$langs; $langs->load("members"); - $dir = DOL_DOCUMENT_ROOT . "/core/modules/member/labels/"; + $error=0; + + // Increase limit for PDF build + $err=error_reporting(); + error_reporting(0); + @set_time_limit(120); + error_reporting($err); + + $code=''; + $srctemplatepath=''; - // Positionne modele sur le nom du modele a utiliser + // Positionne le modele sur le nom du modele a utiliser if (! dol_strlen($modele)) { - if ($conf->global->ADHERENT_ETIQUETTE_TYPE) + if (! empty($conf->global->ADHERENT_ETIQUETTE_TYPE)) { - $modele = $conf->global->ADHERENT_ETIQUETTE_TYPE; $code = $conf->global->ADHERENT_ETIQUETTE_TYPE; } else { - $modele = 'L7163'; - $code = 'L7163'; + $code = $modele; } } - $modele='standardlabel'; - - // Charge le modele - $file = "pdf_".$modele.".class.php"; - if (file_exists($dir.$file)) + else $code=$modele; + $modele='standardlabel'; + + // If selected modele is a filename template (then $modele="modelname:filename") + $tmp=explode(':',$modele,2); + if (! empty($tmp[1])) { - $classname = "pdf_".$modele; - require_once($dir.$file); + $modele=$tmp[0]; + $srctemplatepath=$tmp[1]; + } + else $srctemplatepath=$code; + + // Search template files + $file=''; $classname=''; $filefound=0; + $dirmodels=array('/'); + if (is_array($conf->modules_parts['models'])) $dirmodels=array_merge($dirmodels,$conf->modules_parts['models']); + foreach($dirmodels as $reldir) + { + foreach(array('doc','pdf') as $prefix) + { + $file = $prefix."_".$modele.".class.php"; + + // On verifie l'emplacement du modele + $file=dol_buildpath($reldir."core/modules/printsheet/doc/".$file,0); + if (file_exists($file)) + { + $filefound=1; + $classname=$prefix.'_'.$modele; + break; + } + } + if ($filefound) break; + } + + // Charge le modele + if ($filefound) + { + require_once($file); $obj = new $classname($db); - + // We save charset_output to restore it because write_file can change it if needed for // output format that does not support UTF8. $sav_charset_output=$outputlangs->charset_output; - if ($obj->write_file($arrayofmembers, $outputlangs) > 0) + if ($obj->write_file($arrayofmembers, $outputlangs, $srctemplatepath, $outputdir) > 0) { $outputlangs->charset_output=$sav_charset_output; return 1; @@ -112,14 +149,13 @@ function members_label_pdf_create($db, $arrayofmembers, $modele, $outputlangs) else { $outputlangs->charset_output=$sav_charset_output; - dol_print_error($db,"members_card_pdf_create Error: ".$obj->error); + dol_print_error($db,"members_label_pdf_create Error: ".$obj->error); return -1; } } - else { - dol_print_error('',$langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists",$dir.$file)); + dol_print_error('',$langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists",$file)); return -1; } diff --git a/htdocs/core/tpl/login.tpl.php b/htdocs/core/tpl/login.tpl.php index 70208eb4c13..cf837db996a 100644 --- a/htdocs/core/tpl/login.tpl.php +++ b/htdocs/core/tpl/login.tpl.php @@ -120,7 +120,7 @@ if (! empty($hookmanager->resArray['options'])) { - + diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index 4d43f0cd416..810aacb78cc 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -321,10 +321,12 @@ class Fichinter extends CommonObject if ($this->statut != 1) { $this->db->begin(); + + $now=dol_now(); $sql = "UPDATE ".MAIN_DB_PREFIX."fichinter"; $sql.= " SET fk_statut = 1"; - $sql.= ", date_valid = ".$this->db->idate(mktime()); + $sql.= ", date_valid = ".$this->db->idate($now); $sql.= ", fk_user_valid = ".$user->id; $sql.= " WHERE rowid = ".$this->id; $sql.= " AND entity = ".$conf->entity; diff --git a/htdocs/fichinter/fiche.php b/htdocs/fichinter/fiche.php index 3ea68f6b3d5..0956980ce9c 100644 --- a/htdocs/fichinter/fiche.php +++ b/htdocs/fichinter/fiche.php @@ -1097,7 +1097,8 @@ else if ($id > 0 || ! empty($ref)) // Date intervention print ''; - $timearray=dol_getdate(mktime()); + $now=dol_now(); + $timearray=dol_getdate($now); if (!GETPOST('diday','int')) $timewithnohour=dol_mktime(0,0,0,$timearray['mon'],$timearray['mday'],$timearray['year']); else $timewithnohour=dol_mktime(GETPOST('dihour','int'),GETPOST('dimin','int'),GETPOST('disec','int'),GETPOST('dimonth','int'),GETPOST('diday','int'),GETPOST('diyear','int')); $form->select_date($timewithnohour,'di',1,1,0,"addinter"); diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index 6b503110a0b..8c8fab80ee4 100755 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -1,7 +1,7 @@ * Copyright (C) 2003 Xavier Dutoit - * Copyright (C) 2004-2010 Laurent Destailleur + * Copyright (C) 2004-2012 Laurent Destailleur * Copyright (C) 2004 Sebastien Di Cintio * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2005-2011 Regis Houssin @@ -29,7 +29,7 @@ * \brief File that include conf.php file and commons lib like functions.lib.php */ -if (! defined('DOL_VERSION')) define('DOL_VERSION','3.3.0-alpha'); // Also defined in htdocs/install/inc.php (Ex: x.y.z-alpha, x.y.z) +if (! defined('DOL_VERSION')) define('DOL_VERSION','3.3.0-alpha'); if (! defined('EURO')) define('EURO',chr(128)); // Define syslog constants @@ -53,10 +53,13 @@ if (! defined('LOG_DEBUG')) } } -// Forcage du parametrage PHP error_reporting (Dolibarr non utilisable en mode error E_ALL) -error_reporting(E_ALL ^ E_NOTICE); +// Force PHP error_reporting setup (Dolibarr may report warning without this) +error_reporting(E_ALL & ~(E_STRICT|E_NOTICE)); //error_reporting(E_ALL | E_STRICT); +// End of common declaration part +if (defined('DOL_INC_FOR_VERSION_ERROR')) return; + // Define vars $conffiletoshowshort = "conf.php"; @@ -77,10 +80,7 @@ if (! $result && ! empty($_SERVER["GATEWAY_INTERFACE"])) // If install not do } // Disable php display errors -if (! empty($dolibarr_main_prod)) -{ - ini_set('display_errors','Off'); -} +if (! empty($dolibarr_main_prod)) ini_set('display_errors','Off'); // Clean parameters $dolibarr_main_data_root=trim($dolibarr_main_data_root); diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 9f0d6c8ad4a..247cba9734d 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -802,10 +802,11 @@ class CommandeFournisseur extends Commande * Cancel an approved order. * L'annulation se fait apres l'approbation * - * @param User $user User making action - * @return int >0 if Ok, <0 if Ko + * @param User $user User making action + * @param int $idwarehouse Id warehouse to use for stock change (not used for supplier orders). + * @return int >0 if Ok, <0 if Ko */ - function Cancel($user) + function Cancel($user, $idwarehouse=-1) { global $langs,$conf; @@ -900,12 +901,13 @@ class CommandeFournisseur extends Commande } /** - * Create order with draft status + * Create order with draft status * - * @param User $user User making creation - * @return int <0 if KO, Id of supplier order if OK + * @param User $user User making creation + * @param int $notrigger Disable all triggers + * @return int <0 if KO, Id of supplier order if OK */ - function create($user) + function create($user, $notrigger=0) { global $langs,$conf; @@ -956,12 +958,15 @@ class CommandeFournisseur extends Commande // On logue creation pour historique $this->log($user, 0, time()); - // Appel des triggers - include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); - $interface=new Interfaces($this->db); - $result=$interface->run_triggers('ORDER_SUPPLIER_CREATE',$this,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } - // Fin appel triggers + if (! $notrigger) + { + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); + $interface=new Interfaces($this->db); + $result=$interface->run_triggers('ORDER_SUPPLIER_CREATE',$this,$user,$langs,$conf); + if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Fin appel triggers + } $this->db->commit(); return $this->id; diff --git a/htdocs/fourn/class/paiementfourn.class.php b/htdocs/fourn/class/paiementfourn.class.php index 79650676cc1..d212b70c4b0 100644 --- a/htdocs/fourn/class/paiementfourn.class.php +++ b/htdocs/fourn/class/paiementfourn.class.php @@ -142,9 +142,11 @@ class PaiementFourn extends Paiement if ($this->total <> 0) // On accepte les montants negatifs { + $now=dol_now(); + $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'paiementfourn ('; $sql.= 'datec, datep, amount, fk_paiement, num_paiement, note, fk_user_author, fk_bank)'; - $sql.= ' VALUES ('.$this->db->idate(mktime()).','; + $sql.= ' VALUES ('.$this->db->idate($now).','; $sql.= " ".$this->db->idate($this->datepaye).", '".$this->total."', ".$this->paiementid.", '".$this->num_paiement."', '".$this->db->escape($this->note)."', ".$user->id.", 0)"; dol_syslog("PaiementFourn::create sql=".$sql); diff --git a/htdocs/includes/jquery/plugins/datatables/extras/Bootstrap/css/DT_bootstrap.css b/htdocs/includes/jquery/plugins/datatables/extras/Bootstrap/css/DT_bootstrap.css new file mode 100644 index 00000000000..d042281b5b4 --- /dev/null +++ b/htdocs/includes/jquery/plugins/datatables/extras/Bootstrap/css/DT_bootstrap.css @@ -0,0 +1,47 @@ + +div.dataTables_length label { + float: left; + text-align: left; +} + +div.dataTables_length select { + width: 75px; +} + +div.dataTables_filter label { + float: right; +} + +div.dataTables_info { + padding-top: 8px; +} + +div.dataTables_paginate { + float: right; + margin: 0; +} + +table.table { + clear: both; + margin-bottom: 6px !important; +} + +table.table thead .sorting, +table.table thead .sorting_asc, +table.table thead .sorting_desc, +table.table thead .sorting_asc_disabled, +table.table thead .sorting_desc_disabled { + cursor: pointer; + *cursor: hand; +} + +table.table thead .sorting { background: url('images/sort_both.png') no-repeat center right; } +table.table thead .sorting_asc { background: url('images/sort_asc.png') no-repeat center right; } +table.table thead .sorting_desc { background: url('images/sort_desc.png') no-repeat center right; } + +table.table thead .sorting_asc_disabled { background: url('images/sort_asc_disabled.png') no-repeat center right; } +table.table thead .sorting_desc_disabled { background: url('images/sort_desc_disabled.png') no-repeat center right; } + +table.dataTable th:active { + outline: none; +} diff --git a/htdocs/includes/jquery/plugins/datatables/extras/Bootstrap/js/DT_bootstrap.jgz b/htdocs/includes/jquery/plugins/datatables/extras/Bootstrap/js/DT_bootstrap.jgz new file mode 100644 index 00000000000..17b30bd297b Binary files /dev/null and b/htdocs/includes/jquery/plugins/datatables/extras/Bootstrap/js/DT_bootstrap.jgz differ diff --git a/htdocs/includes/jquery/plugins/datatables/extras/Bootstrap/js/DT_bootstrap.js b/htdocs/includes/jquery/plugins/datatables/extras/Bootstrap/js/DT_bootstrap.js new file mode 100644 index 00000000000..67985405370 --- /dev/null +++ b/htdocs/includes/jquery/plugins/datatables/extras/Bootstrap/js/DT_bootstrap.js @@ -0,0 +1,106 @@ +/* Default class modification */ +$.extend( $.fn.dataTableExt.oStdClasses, { + "sWrapper": "dataTables_wrapper form-inline" +} ); + +/* API method to get paging information */ +$.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings ) +{ + return { + "iStart": oSettings._iDisplayStart, + "iEnd": oSettings.fnDisplayEnd(), + "iLength": oSettings._iDisplayLength, + "iTotal": oSettings.fnRecordsTotal(), + "iFilteredTotal": oSettings.fnRecordsDisplay(), + "iPage": Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ), + "iTotalPages": Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength ) + }; +} + +/* Bootstrap style pagination control */ +$.extend( $.fn.dataTableExt.oPagination, { + "bootstrap": { + "fnInit": function( oSettings, nPaging, fnDraw ) { + var oLang = oSettings.oLanguage.oPaginate; + var fnClickHandler = function ( e ) { + e.preventDefault(); + if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) { + fnDraw( oSettings ); + } + }; + + $(nPaging).addClass('pagination').append( + '
' + ); + var els = $('a', nPaging); + $(els[0]).bind( 'click.DT', { action: "previous" }, fnClickHandler ); + $(els[1]).bind( 'click.DT', { action: "next" }, fnClickHandler ); + }, + + "fnUpdate": function ( oSettings, fnDraw ) { + var iListLength = 5; + var oPaging = oSettings.oInstance.fnPagingInfo(); + var an = oSettings.aanFeatures.p; + var i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2); + + if ( oPaging.iTotalPages < iListLength) { + iStart = 1; + iEnd = oPaging.iTotalPages; + } + else if ( oPaging.iPage <= iHalf ) { + iStart = 1; + iEnd = iListLength; + } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) { + iStart = oPaging.iTotalPages - iListLength + 1; + iEnd = oPaging.iTotalPages; + } else { + iStart = oPaging.iPage - iHalf + 1; + iEnd = iStart + iListLength - 1; + } + + for ( i=0, iLen=an.length ; i'+j+'') + .insertBefore( $('li:last', an[i])[0] ) + .bind('click', function (e) { + e.preventDefault(); + oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength; + fnDraw( oSettings ); + } ); + } + + // Add / remove disabled classes from the static elements + if ( oPaging.iPage === 0 ) { + $('li:first', an[i]).addClass('disabled'); + } else { + $('li:first', an[i]).removeClass('disabled'); + } + + if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) { + $('li:last', an[i]).addClass('disabled'); + } else { + $('li:last', an[i]).removeClass('disabled'); + } + } + } + } +} ); + +/* Table initialisation */ +$(document).ready(function() { + $('#example').dataTable( { + "sDom": "<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>", + "sPaginationType": "bootstrap", + "oLanguage": { + "sLengthMenu": "_MENU_ records per page" + } + } ); +} ); \ No newline at end of file diff --git a/htdocs/includes/savant/Savant3.php b/htdocs/includes/savant/Savant3.php new file mode 100644 index 00000000000..cdcd4731480 --- /dev/null +++ b/htdocs/includes/savant/Savant3.php @@ -0,0 +1,1337 @@ + +* +* @license http://www.gnu.org/copyleft/lesser.html LGPL +* +* @version $Id: Savant3.php,v 1.42 2006/01/01 18:31:00 pmjones Exp $ +* +*/ + + +/** +* Always have these classes available. +*/ +include_once dirname(__FILE__) . '/Savant3/Filter.php'; +include_once dirname(__FILE__) . '/Savant3/Plugin.php'; + + +/** +* +* Provides an object-oriented template system for PHP5. +* +* Savant3 helps you separate business logic from presentation logic +* using PHP as the template language. By default, Savant3 does not +* compile templates. However, you may pass an optional compiler object +* to compile template source to include-able PHP code. It is E_STRICT +* compliant for PHP5. +* +* Please see the documentation at {@link http://phpsavant.com/}, and be +* sure to donate! :-) +* +* @author Paul M. Jones +* +* @package Savant3 +* +* @version @package_version@ +* +*/ + +class Savant3 { + + + /** + * + * Array of configuration parameters. + * + * @access protected + * + * @var array + * + */ + + protected $__config = array( + 'template_path' => array(), + 'resource_path' => array(), + 'error_text' => "\n\ntemplate error, examine fetch() result\n\n", + 'exceptions' => false, + 'autoload' => false, + 'compiler' => null, + 'filters' => array(), + 'plugins' => array(), + 'template' => null, + 'plugin_conf' => array(), + 'extract' => false, + 'fetch' => null, + 'escape' => array('htmlspecialchars'), + ); + + + // ----------------------------------------------------------------- + // + // Constructor and magic methods + // + // ----------------------------------------------------------------- + + + /** + * + * Constructor. + * + * @access public + * + * @param array $config An associative array of configuration keys for + * the Savant3 object. Any, or none, of the keys may be set. + * + * @return object Savant3 A Savant3 instance. + * + */ + + public function __construct($config = null) + { + // force the config to an array + settype($config, 'array'); + + // set the default template search path + if (isset($config['template_path'])) { + // user-defined dirs + $this->setPath('template', $config['template_path']); + } else { + // no directories set, use the + // default directory only + $this->setPath('template', null); + } + + // set the default resource search path + if (isset($config['resource_path'])) { + // user-defined dirs + $this->setPath('resource', $config['resource_path']); + } else { + // no directories set, use the + // default directory only + $this->setPath('resource', null); + } + + // set the error reporting text + if (isset($config['error_text'])) { + $this->setErrorText($config['error_text']); + } + + // set the autoload flag + if (isset($config['autoload'])) { + $this->setAutoload($config['autoload']); + } + + // set the extraction flag + if (isset($config['extract'])) { + $this->setExtract($config['extract']); + } + + // set the exceptions flag + if (isset($config['exceptions'])) { + $this->setExceptions($config['exceptions']); + } + + // set the template to use for output + if (isset($config['template'])) { + $this->setTemplate($config['template']); + } + + // set the output escaping callbacks + if (isset($config['escape'])) { + $this->setEscape($config['escape']); + } + + // set the default plugin configs + if (isset($config['plugin_conf']) && is_array($config['plugin_conf'])) { + foreach ($config['plugin_conf'] as $name => $opts) { + $this->setPluginConf($name, $opts); + } + } + + // set the default filter callbacks + if (isset($config['filters'])) { + $this->addFilters($config['filters']); + } + } + + + /** + * + * Executes a main plugin method with arbitrary parameters. + * + * @access public + * + * @param string $func The plugin method name. + * + * @param array $args The parameters passed to the method. + * + * @return mixed The plugin output, or a Savant3_Error with an + * ERR_PLUGIN code if it can't find the plugin. + * + */ + + public function __call($func, $args) + { + $plugin = $this->plugin($func); + + if ($this->isError($plugin)) { + return $plugin; + } + + // try to avoid the very-slow call_user_func_array() + // for plugins with very few parameters. thanks to + // Andreas Korthaus for profiling the code to find + // the slowdown. + switch (count($args)) { + + case 0: + return $plugin->$func(); + + case 1: + return $plugin->$func($args[0]); + break; + + case 2: + return $plugin->$func($args[0], $args[1]); + break; + + case 3: + return $plugin->$func($args[0], $args[1], $args[2]); + break; + + default: + return call_user_func_array(array($plugin, $func), $args); + break; + } + } + + + /** + * + * Magic method to echo this object as template output. + * + * Note that if there is an error, this will output a simple + * error text string and will not return an error object. Use + * fetch() to get an error object when errors occur. + * + * @access public + * + * @return string The template output. + * + */ + + public function __toString() + { + return $this->getOutput(); + } + + + /** + * + * Reports the API version for this class. + * + * @access public + * + * @return string A PHP-standard version number. + * + */ + + public function apiVersion() + { + return '@package_version@'; + } + + + /** + * + * Returns an internal plugin object; creates it as needed. + * + * @access public + * + * @param string $name The plugin name. If this plugin has not + * been created yet, this method creates it automatically. + * + * @return mixed The plugin object, or a Savant3_Error with an + * ERR_PLUGIN code if it can't find the plugin. + * + */ + + public function plugin($name) + { + // shorthand reference + $plugins =& $this->__config['plugins']; + $autoload = $this->__config['autoload']; + + // is the plugin method object already instantiated? + if (! array_key_exists($name, $plugins)) { + + // not already instantiated, so load it up. + // set up the class name. + $class = "Savant3_Plugin_$name"; + + // has the class been loaded? + if (! class_exists($class, $autoload)) { + + // class is not loaded, set up the file name. + $file = "$class.php"; + + // make sure the class file is available from the resource path. + $result = $this->findFile('resource', $file); + if (! $result) { + // not available, this is an error + return $this->error( + 'ERR_PLUGIN', + array('method' => $name) + ); + } else { + // available, load the class file + include_once $result; + } + } + + // get the default configuration for the plugin. + $plugin_conf =& $this->__config['plugin_conf']; + if (! empty($plugin_conf[$name])) { + $opts = $plugin_conf[$name]; + } else { + $opts = array(); + } + + // add the Savant reference + $opts['Savant'] = $this; + + // instantiate the plugin with its options. + $plugins[$name] = new $class($opts); + } + + // return the plugin object + return $plugins[$name]; + } + + + // ----------------------------------------------------------------- + // + // Public configuration management (getters and setters). + // + // ----------------------------------------------------------------- + + + /** + * + * Returns a copy of the Savant3 configuration parameters. + * + * @access public + * + * @param string $key The specific configuration key to return. If null, + * returns the entire configuration array. + * + * @return mixed A copy of the $this->__config array. + * + */ + + public function getConfig($key = null) + { + if (is_null($key)) { + // no key requested, return the entire config array + return $this->__config; + } elseif (empty($this->__config[$key])) { + // no such key + return null; + } else { + // return the requested key + return $this->__config[$key]; + } + } + + + /** + * + * Sets __autoload() usage on or off. + * + * @access public + * + * @param bool $flag True to use __autoload(), false to not use it. + * + * @return void + * + */ + + public function setAutoload($flag) + { + $this->__config['autoload'] = (bool) $flag; + } + + + /** + * + * Sets a custom compiler/pre-processor callback for template sources. + * + * By default, Savant3 does not use a compiler; use this to set your + * own custom compiler (pre-processor) for template sources. + * + * @access public + * + * @param mixed $compiler A compiler callback value suitable for the + * first parameter of call_user_func(). Set to null/false/empty to + * use PHP itself as the template markup (i.e., no compiling). + * + * @return void + * + */ + + public function setCompiler($compiler) + { + $this->__config['compiler'] = $compiler; + } + + + /** + * + * Sets the custom error text for __toString(). + * + * @access public + * + * @param string $text The error text when a template is echoed. + * + * @return void + * + */ + + public function setErrorText($text) + { + $this->__config['error_text'] = $text; + } + + + /** + * + * Sets whether or not exceptions will be thrown. + * + * @access public + * + * @param bool $flag True to turn on exception throwing, false + * to turn it off. + * + * @return void + * + */ + + public function setExceptions($flag) + { + $this->__config['exceptions'] = (bool) $flag; + } + + + /** + * + * Sets whether or not variables will be extracted. + * + * @access public + * + * @param bool $flag True to turn on variable extraction, false + * to turn it off. + * + * @return void + * + */ + + public function setExtract($flag) + { + $this->__config['extract'] = (bool) $flag; + } + + + /** + * + * Sets config array for a plugin. + * + * @access public + * + * @param string $plugin The plugin to configure. + * + * @param array $config The configuration array for the plugin. + * + * @return void + * + */ + + public function setPluginConf($plugin, $config = null) + { + $this->__config['plugin_conf'][$plugin] = $config; + } + + + /** + * + * Sets the template name to use. + * + * @access public + * + * @param string $template The template name. + * + * @return void + * + */ + + public function setTemplate($template) + { + $this->__config['template'] = $template; + } + + + // ----------------------------------------------------------------- + // + // Output escaping and management. + // + // ----------------------------------------------------------------- + + + /** + * + * Clears then sets the callbacks to use when calling $this->escape(). + * + * Each parameter passed to this function is treated as a separate + * callback. For example: + * + * + * $savant->setEscape( + * 'stripslashes', + * 'htmlspecialchars', + * array('StaticClass', 'method'), + * array($object, $method) + * ); + * + * + * @access public + * + * @return void + * + */ + + public function setEscape() + { + $this->__config['escape'] = (array) @func_get_args(); + } + + + /** + * + * Adds to the callbacks used when calling $this->escape(). + * + * Each parameter passed to this function is treated as a separate + * callback. For example: + * + * + * $savant->addEscape( + * 'stripslashes', + * 'htmlspecialchars', + * array('StaticClass', 'method'), + * array($object, $method) + * ); + * + * + * @access public + * + * @return void + * + */ + + public function addEscape() + { + $args = (array) @func_get_args(); + $this->__config['escape'] = array_merge( + $this->__config['escape'], $args + ); + } + + + /** + * + * Gets the array of output-escaping callbacks. + * + * @access public + * + * @return array The array of output-escaping callbacks. + * + */ + + public function getEscape() + { + return $this->__config['escape']; + } + + + /** + * + * Applies escaping to a value. + * + * You can override the predefined escaping callbacks by passing + * added parameters as replacement callbacks. + * + * + * // use predefined callbacks + * $result = $savant->escape($value); + * + * // use replacement callbacks + * $result = $savant->escape( + * $value, + * 'stripslashes', + * 'htmlspecialchars', + * array('StaticClass', 'method'), + * array($object, $method) + * ); + * + * + * + * Unfortunately, a call to "echo htmlspecialchars()" is twice + * as fast as a call to "echo $this->escape()" under the default + * escaping (which is htmlspecialchars). The benchmark showed + * 0.007 seconds for htmlspecialchars(), and 0.014 seconds for + * $this->escape(), on 300 calls each. + * + * @access public + * + * @param mixed $value The value to be escaped. + * + * @return mixed + * + */ + + public function escape($value) + { + // were custom callbacks passed? + if (func_num_args() == 1) { + + // no, only a value was passed. + // loop through the predefined callbacks. + foreach ($this->__config['escape'] as $func) { + // this if() shaves 0.001sec off of 300 calls. + if (is_string($func)) { + $value = $func($value); + } else { + $value = call_user_func($func, $value); + } + } + + } else { + + // yes, use the custom callbacks + $callbacks = func_get_args(); + + // drop $value + array_shift($callbacks); + + // loop through custom callbacks. + foreach ($callbacks as $func) { + // this if() shaves 0.001sec off of 300 calls. + if (is_string($func)) { + $value = $func($value); + } else { + $value = call_user_func($func, $value); + } + } + + } + + return $value; + } + + + /** + * + * Prints a value after escaping it for output. + * + * You can override the predefined escaping callbacks by passing + * added parameters as replacement callbacks. + * + * + * // use predefined callbacks + * $this->eprint($value); + * + * // use replacement callbacks + * $this->eprint( + * $value, + * 'stripslashes', + * 'htmlspecialchars', + * array('StaticClass', 'method'), + * array($object, $method) + * ); + * + * + * @access public + * + * @param mixed $value The value to be escaped and printed. + * + * @return void + * + */ + + public function eprint($value) + { + // avoid the very slow call_user_func_array() when there + // are no custom escaping callbacks. thanks to + // Andreas Korthaus for profiling the code to find + // the slowdown. + $num = func_num_args(); + if ($num == 1) { + echo $this->escape($value); + } else { + $args = func_get_args(); + echo call_user_func_array( + array($this, 'escape'), + $args + ); + } + } + + + // ----------------------------------------------------------------- + // + // File management + // + // ----------------------------------------------------------------- + + + /** + * + * Sets an entire array of search paths for templates or resources. + * + * @access public + * + * @param string $type The type of path to set, typically 'template' + * or 'resource'. + * + * @param string|array $path The new set of search paths. If null or + * false, resets to the current directory only. + * + * @return void + * + */ + + public function setPath($type, $path) + { + // clear out the prior search dirs + $this->__config[$type . '_path'] = array(); + + // always add the fallback directories as last resort + switch (strtolower($type)) { + case 'template': + // the current directory + $this->addPath($type, '.'); + break; + case 'resource': + // the Savant3 distribution resources + $this->addPath($type, dirname(__FILE__) . '/Savant3/resources/'); + break; + } + + // actually add the user-specified directories + $this->addPath($type, $path); + } + + + /** + * + * Adds to the search path for templates and resources. + * + * @access public + * + * @param string|array $path The directory or stream to search. + * + * @return void + * + */ + + public function addPath($type, $path) + { + // convert from path string to array of directories + if (is_string($path) && ! strpos($path, '://')) { + + // the path config is a string, and it's not a stream + // identifier (the "://" piece). add it as a path string. + $path = explode(PATH_SEPARATOR, $path); + + // typically in path strings, the first one is expected + // to be searched first. however, Savant3 uses a stack, + // so the first would be last. reverse the path string + // so that it behaves as expected with path strings. + $path = array_reverse($path); + + } else { + + // just force to array + settype($path, 'array'); + + } + + // loop through the path directories + foreach ($path as $dir) { + + // no surrounding spaces allowed! + $dir = trim($dir); + + // add trailing separators as needed + if (strpos($dir, '://') && substr($dir, -1) != '/') { + // stream + $dir .= '/'; + } elseif (substr($dir, -1) != DIRECTORY_SEPARATOR) { + // directory + $dir .= DIRECTORY_SEPARATOR; + } + + // add to the top of the search dirs + array_unshift( + $this->__config[$type . '_path'], + $dir + ); + } + } + + + /** + * + * Searches the directory paths for a given file. + * + * @param array $type The type of path to search (template or resource). + * + * @param string $file The file name to look for. + * + * @return string|bool The full path and file name for the target file, + * or boolean false if the file is not found in any of the paths. + * + */ + + protected function findFile($type, $file) + { + // get the set of paths + $set = $this->__config[$type . '_path']; + + // start looping through the path set + foreach ($set as $path) { + + // get the path to the file + $fullname = $path . $file; + + // is the path based on a stream? + if (strpos($path, '://') === false) { + // not a stream, so do a realpath() to avoid + // directory traversal attempts on the local file + // system. Suggested by Ian Eure, initially + // rejected, but then adopted when the secure + // compiler was added. + $path = realpath($path); // needed for substr() later + $fullname = realpath($fullname); + } + + // the substr() check added by Ian Eure to make sure + // that the realpath() results in a directory registered + // with Savant so that non-registered directores are not + // accessible via directory traversal attempts. + if (file_exists($fullname) && is_readable($fullname) && + substr($fullname, 0, strlen($path)) == $path) { + return $fullname; + } + } + + // could not find the file in the set of paths + return false; + } + + + // ----------------------------------------------------------------- + // + // Variable and reference assignment + // + // ----------------------------------------------------------------- + + + /** + * + * Sets variables for the template (by copy). + * + * This method is overloaded; you can assign all the properties of + * an object, an associative array, or a single value by name. + * + * You are not allowed to assign any variable named '__config' as + * it would conflict with internal configuration tracking. + * + * In the following examples, the template will have two variables + * assigned to it; the variables will be known inside the template as + * "$this->var1" and "$this->var2". + * + * + * $Savant3 = new Savant3(); + * + * // assign by object + * $obj = new stdClass; + * $obj->var1 = 'something'; + * $obj->var2 = 'else'; + * $Savant3->assign($obj); + * + * // assign by associative array + * $ary = array('var1' => 'something', 'var2' => 'else'); + * $Savant3->assign($ary); + * + * // assign by name and value + * $Savant3->assign('var1', 'something'); + * $Savant3->assign('var2', 'else'); + * + * // assign directly + * $Savant3->var1 = 'something'; + * $Savant3->var2 = 'else'; + * + * + * @access public + * + * @return bool True on success, false on failure. + * + */ + + public function assign() + { + // get the arguments; there may be 1 or 2. + $arg0 = @func_get_arg(0); + $arg1 = @func_get_arg(1); + + // assign from object + if (is_object($arg0)) { + // assign public properties + foreach (get_object_vars($arg0) as $key => $val) { + // can't assign to __config + if ($key != '__config') { + $this->$key = $val; + } + } + return true; + } + + // assign from associative array + if (is_array($arg0)) { + foreach ($arg0 as $key => $val) { + // can't assign to __config + if ($key != '__config') { + $this->$key = $val; + } + } + return true; + } + + // assign by name and value (can't assign to __config). + if (is_string($arg0) && func_num_args() > 1 && $arg0 != '__config') { + $this->$arg0 = $arg1; + return true; + } + + // $arg0 was not object, array, or string. + return false; + } + + + /** + * + * Sets variables for the template (by reference). + * + * You are not allowed to assign any variable named '__config' as + * it would conflict with internal configuration tracking. + * + * + * $Savant3 = new Savant3(); + * + * // assign by name and value + * $Savant3->assignRef('var1', $ref); + * + * // assign directly + * $Savant3->ref =& $var1; + * + * + * @access public + * + * @return bool True on success, false on failure. + * + */ + + public function assignRef($key, &$val) + { + // assign by name and reference (can't assign to __config). + if ($key != '__config') { + $this->$key =& $val; + return true; + } else { + return false; + } + } + + + // ----------------------------------------------------------------- + // + // Template processing + // + // ----------------------------------------------------------------- + + + /** + * + * Displays a template directly (equivalent to echo $tpl). + * + * @access public + * + * @param string $tpl The template source to compile and display. + * + * @return void + * + */ + + public function display($tpl = null) + { + echo $this->getOutput($tpl); + } + + /** + * Returns output, including error_text if an error occurs. + * + * @param $tpl The template to process; if null, uses the + * default template set with setTemplate(). + * + * @return string The template output. + */ + public function getOutput($tpl = null) + { + $output = $this->fetch($tpl); + if ($this->isError($output)) { + $text = $this->__config['error_text']; + return $this->escape($text); + } else { + return $output; + } + } + + + /** + * + * Compiles, executes, and filters a template source. + * + * @access public + * + * @param string $tpl The template to process; if null, uses the + * default template set with setTemplate(). + * + * @return mixed The template output string, or a Savant3_Error. + * + */ + + public function fetch($tpl = null) + { + // make sure we have a template source to work with + if (is_null($tpl)) { + $tpl = $this->__config['template']; + } + + // get a path to the compiled template script + $result = $this->template($tpl); + + // did we get a path? + if (! $result || $this->isError($result)) { + + // no. return the error result. + return $result; + + } else { + + // yes. execute the template script. move the script-path + // out of the local scope, then clean up the local scope to + // avoid variable name conflicts. + $this->__config['fetch'] = $result; + unset($result); + unset($tpl); + + // are we doing extraction? + if ($this->__config['extract']) { + // pull variables into the local scope. + extract(get_object_vars($this), EXTR_REFS); + } + + // buffer output so we can return it instead of displaying. + ob_start(); + + // are we using filters? + if ($this->__config['filters']) { + // use a second buffer to apply filters. we used to set + // the ob_start() filter callback, but that would + // silence errors in the filters. Hendy Irawan provided + // the next three lines as a "verbose" fix. + ob_start(); + include $this->__config['fetch']; + echo $this->applyFilters(ob_get_clean()); + } else { + // no filters being used. + include $this->__config['fetch']; + } + + // reset the fetch script value, get the buffer, and return. + $this->__config['fetch'] = null; + return ob_get_clean(); + } + } + + + /** + * + * Compiles a template and returns path to compiled script. + * + * By default, Savant does not compile templates, it uses PHP as the + * markup language, so the "compiled" template is the same as the source + * template. + * + * Used inside a template script like so: + * + * + * include $this->template($tpl); + * + * + * @access protected + * + * @param string $tpl The template source name to look for. + * + * @return string The full path to the compiled template script. + * + * @throws object An error object with a 'ERR_TEMPLATE' code. + * + */ + + protected function template($tpl = null) + { + // set to default template if none specified. + if (is_null($tpl)) { + $tpl = $this->__config['template']; + } + + // find the template source. + $file = $this->findFile('template', $tpl); + if (! $file) { + return $this->error( + 'ERR_TEMPLATE', + array('template' => $tpl) + ); + } + + // are we compiling source into a script? + if ($this->__config['compiler']) { + // compile the template source and get the path to the + // compiled script (will be returned instead of the + // source path) + $result = call_user_func( + array($this->__config['compiler'], 'compile'), + $file + ); + } else { + // no compiling requested, use the source path + $result = $file; + } + + // is there a script from the compiler? + if (! $result || $this->isError($result)) { + // return an error, along with any error info + // generated by the compiler. + return $this->error( + 'ERR_COMPILER', + array( + 'template' => $tpl, + 'compiler' => $result + ) + ); + } else { + // no errors, the result is a path to a script + return $result; + } + } + + + // ----------------------------------------------------------------- + // + // Filter management and processing + // + // ----------------------------------------------------------------- + + + /** + * + * Resets the filter stack to the provided list of callbacks. + * + * @access protected + * + * @param array An array of filter callbacks. + * + * @return void + * + */ + + public function setFilters() + { + $this->__config['filters'] = (array) @func_get_args(); + } + + + /** + * + * Adds filter callbacks to the stack of filters. + * + * @access protected + * + * @param array An array of filter callbacks. + * + * @return void + * + */ + + public function addFilters() + { + // add the new filters to the static config variable + // via the reference + foreach ((array) @func_get_args() as $callback) { + $this->__config['filters'][] = $callback; + } + } + + + /** + * + * Runs all filter callbacks on buffered output. + * + * @access protected + * + * @param string The template output. + * + * @return void + * + */ + + protected function applyFilters($buffer) + { + $autoload = $this->__config['autoload']; + foreach ($this->__config['filters'] as $callback) { + + // if the callback is a static Savant3_Filter method, + // and not already loaded, try to auto-load it. + if (is_array($callback) && + is_string($callback[0]) && + substr($callback[0], 0, 15) == 'Savant3_Filter_' && + ! class_exists($callback[0], $autoload)) { + + // load the Savant3_Filter_*.php resource + $file = $callback[0] . '.php'; + $result = $this->findFile('resource', $file); + if ($result) { + include_once $result; + } + } + + // can't pass a third $this param, it chokes the OB system. + $buffer = call_user_func($callback, $buffer); + } + + return $buffer; + } + + + // ----------------------------------------------------------------- + // + // Error handling + // + // ----------------------------------------------------------------- + + + /** + * + * Returns an error object or throws an exception. + * + * @access public + * + * @param string $code A Savant3 'ERR_*' string. + * + * @param array $info An array of error-specific information. + * + * @param int $level The error severity level, default is + * E_USER_ERROR (the most severe possible). + * + * @param bool $trace Whether or not to include a backtrace, default + * true. + * + * @return object Savant3_Error + * + */ + + public function error($code, $info = array(), $level = E_USER_ERROR, + $trace = true) + { + $autoload = $this->__config['autoload']; + + // are we throwing exceptions? + if ($this->__config['exceptions']) { + if (! class_exists('Savant3_Exception', $autoload)) { + include_once dirname(__FILE__) . '/Savant3/Exception.php'; + } + throw new Savant3_Exception($code); + } + + + // the error config array + $config = array( + 'code' => $code, + 'info' => (array) $info, + 'level' => $level, + 'trace' => $trace + ); + + // make sure the Savant3 error class is available + if (! class_exists('Savant3_Error', $autoload)) { + include_once dirname(__FILE__) . '/Savant3/Error.php'; + } + + // return it + $err = new Savant3_Error($config); + return $err; + } + + + /** + * + * Tests if an object is of the Savant3_Error class. + * + * @access public + * + * @param object $obj The object to be tested. + * + * @return boolean True if $obj is an error object of the type + * Savant3_Error, or is a subclass that Savant3_Error. False if not. + * + */ + + public function isError($obj) + { + $autoload = $this->__config['autoload']; + + // is it even an object? + if (! is_object($obj)) { + // not an object, so can't be a Savant3_Error + return false; + } else { + // make sure the Savant3 error class is available for + // comparison + if (! class_exists('Savant3_Error', $autoload)) { + include_once dirname(__FILE__) . '/Savant3/Error.php'; + } + // now compare the parentage + $is = $obj instanceof Savant3_Error; + $sub = is_subclass_of($obj, 'Savant3_Error'); + return ($is || $sub); + } + } +} +?> \ No newline at end of file diff --git a/htdocs/includes/savant/Savant3/Error.php b/htdocs/includes/savant/Savant3/Error.php new file mode 100644 index 00000000000..211fc2af233 --- /dev/null +++ b/htdocs/includes/savant/Savant3/Error.php @@ -0,0 +1,125 @@ + +* +* @license http://www.gnu.org/copyleft/lesser.html LGPL +* +* @version $Id: Error.php,v 1.5 2005/05/27 14:03:50 pmjones Exp $ +* +*/ + +/** +* +* Provides a simple error class for Savant. +* +* @package Savant3 +* +* @author Paul M. Jones +* +*/ + +class Savant3_Error { + + + /** + * + * The error code, typically a Savant 'ERR_*' string. + * + * @access public + * + * @var string + * + */ + + public $code = null; + + + /** + * + * An array of error-specific information. + * + * @access public + * + * @var array + * + */ + + public $info = array(); + + + /** + * + * The error severity level. + * + * @access public + * + * @var int + * + */ + + public $level = E_USER_ERROR; + + + /** + * + * A debug backtrace for the error, if any. + * + * @access public + * + * @var array + * + */ + + public $trace = null; + + + /** + * + * Constructor. + * + * @access public + * + * @param array $conf An associative array where the key is a + * Savant3_Error property and the value is the value for that + * property. + * + */ + + public function __construct($conf = array()) + { + // set public properties + foreach ($conf as $key => $val) { + $this->$key = $val; + } + + // add a backtrace + if ($conf['trace'] === true) { + $this->trace = debug_backtrace(); + } + } + + + /** + * + * Magic method for output dump. + * + * @access public + * + * @return void + */ + + public function __toString() + { + ob_start(); + echo get_class($this) . ': '; + print_r(get_object_vars($this)); + return ob_get_clean(); + } +} +?> \ No newline at end of file diff --git a/htdocs/includes/savant/Savant3/Exception.php b/htdocs/includes/savant/Savant3/Exception.php new file mode 100644 index 00000000000..f564115be34 --- /dev/null +++ b/htdocs/includes/savant/Savant3/Exception.php @@ -0,0 +1,29 @@ + +* +* @license http://www.gnu.org/copyleft/lesser.html LGPL +* +* @version $Id: Exception.php,v 1.1 2005/05/27 14:04:36 pmjones Exp $ +* +*/ + + +/** +* +* A simple Savant3_Exception class. +* +* @package Savant3 +* +* @author Paul M. Jones +* +*/ + +class Savant3_Exception extends Exception { +} +?> \ No newline at end of file diff --git a/htdocs/includes/savant/Savant3/Filter.php b/htdocs/includes/savant/Savant3/Filter.php new file mode 100644 index 00000000000..836f8fbeabb --- /dev/null +++ b/htdocs/includes/savant/Savant3/Filter.php @@ -0,0 +1,85 @@ + +* +* @license http://www.gnu.org/copyleft/lesser.html LGPL +* +* @version $Id: Filter.php,v 1.5 2005/04/29 16:23:50 pmjones Exp $ +* +*/ + +/** +* +* Abstract Savant3_Filter class. +* +* You have to extend this class for it to be useful; e.g., "class +* Savant3_Filter_example extends Savant3_Filter". +* +* @package Savant3 +* +* @author Paul M. Jones +* +*/ + +abstract class Savant3_Filter { + + + /** + * + * Optional reference to the calling Savant object. + * + * @access protected + * + * @var object + * + */ + + protected $Savant = null; + + + /** + * + * Constructor. + * + * @access public + * + * @param array $conf An array of configuration keys and values for + * this filter. + * + * @return void + * + */ + + public function __construct($conf = null) + { + settype($conf, 'array'); + foreach ($conf as $key => $val) { + $this->$key = $val; + } + } + + + /** + * + * Stub method for extended behaviors. + * + * @access public + * + * @param string $text The text buffer to filter. + * + * @return string The text buffer after it has been filtered. + * + */ + + public static function filter($text) + { + return $text; + } +} +?> \ No newline at end of file diff --git a/htdocs/includes/savant/Savant3/Plugin.php b/htdocs/includes/savant/Savant3/Plugin.php new file mode 100644 index 00000000000..ca7a0b471e7 --- /dev/null +++ b/htdocs/includes/savant/Savant3/Plugin.php @@ -0,0 +1,67 @@ + +* +* @license http://www.gnu.org/copyleft/lesser.html LGPL +* +* @version $Id: Plugin.php,v 1.5 2005/04/29 16:23:50 pmjones Exp $ +* +*/ + +/** +* +* Abstract Savant3_Plugin class. +* +* You have to extend this class for it to be useful; e.g., "class +* Savant3_Plugin_example extends Savant2_Plugin". Be sure to add a +* method named for the plugin itself; e.g., "function example()". +* +* @package Savant3 +* +* @author Paul M. Jones +* +*/ + +abstract class Savant3_Plugin { + + /** + * + * Reference to the calling Savant object. + * + * @access protected + * + * @var object + * + */ + + protected $Savant = null; + + + /** + * + * Constructor. + * + * @access public + * + * @param array $conf An array of configuration keys and values for + * this plugin. + * + * @return void + * + */ + + public function __construct($conf = null) + { + settype($conf, 'array'); + foreach ($conf as $key => $val) { + $this->$key = $val; + } + } +} +?> \ No newline at end of file diff --git a/htdocs/includes/savant/Savant3/resources/Savant3_Filter_trimwhitespace.php b/htdocs/includes/savant/Savant3/resources/Savant3_Filter_trimwhitespace.php new file mode 100644 index 00000000000..198362802d2 --- /dev/null +++ b/htdocs/includes/savant/Savant3/resources/Savant3_Filter_trimwhitespace.php @@ -0,0 +1,147 @@ + +* +* @author Contributions from Lars Noschinski +* +* @author Converted to a Savant3 filter by Paul M. Jones +* +* @license http://www.gnu.org/copyleft/lesser.html LGPL +* +* @version $Id: Savant3_Filter_trimwhitespace.php,v 1.4 2005/05/29 15:27:07 pmjones Exp $ +* +*/ + +/** +* +* Filter to remove extra white space within the text. +* +* @package Savant3 +* +* @author Monte Ohrt +* +* @author Contributions from Lars Noschinski +* +* @author Converted to a Savant3 filter by Paul M. Jones +* +*/ + +class Savant3_Filter_trimwhitespace extends Savant3_Filter { + + + /** + * + * Removes extra white space within the text. + * + * Trim leading white space and blank lines from template source + * after it gets interpreted, cleaning up code and saving bandwidth. + * Does not affect
, , or
+	*  blocks.
+	* 
+	* @access public
+	* 
+	* @param string $buffer The source text to be filtered.
+	* 
+	* @return string The filtered text.
+	* 
+	*/
+	
+	public static function filter($buffer)
+	{
+		// Pull out the script blocks
+		preg_match_all("!]+>.*?!is", $buffer, $match);
+		$script_blocks = $match[0];
+		$buffer = preg_replace(
+			"!]+>.*?!is",
+			'@@@SAVANT:TRIM:SCRIPT@@@',
+			$buffer
+		);
+	
+		// Pull out the pre blocks
+		preg_match_all("!]*>.*?!is", $buffer, $match);
+		$pre_blocks = $match[0];
+		$buffer = preg_replace(
+			"!]*>.*?!is",
+			'@@@SAVANT:TRIM:PRE@@@',
+			$buffer
+		);
+	
+		// Pull out the textarea blocks
+		preg_match_all("!]+>.*?!is", $buffer, $match);
+		$textarea_blocks = $match[0];
+		$buffer = preg_replace(
+			"!]+>.*?!is",
+			'@@@SAVANT:TRIM:TEXTAREA@@@',
+			$buffer
+		);
+	
+		// remove all leading spaces, tabs and carriage returns NOT
+		// preceeded by a php close tag.
+		$buffer = trim(preg_replace('/((?)\n)[\s]+/m', '\1', $buffer));
+	
+		// replace script blocks
+		Savant3_Filter_trimwhitespace::replace(
+			"@@@SAVANT:TRIM:SCRIPT@@@",
+			$script_blocks,
+			$buffer
+		);
+	
+		// replace pre blocks
+		Savant3_Filter_trimwhitespace::replace(
+			"@@@SAVANT:TRIM:PRE@@@",
+			$pre_blocks,
+			$buffer
+		);
+	
+		// replace textarea blocks
+		Savant3_Filter_trimwhitespace::replace(
+			"@@@SAVANT:TRIM:TEXTAREA@@@",
+			$textarea_blocks,
+			$buffer
+		);
+	
+		return $buffer;
+	}
+	
+	
+	/**
+	* 
+	* Does a simple search-and-replace on the source text.
+	* 
+	* @access protected
+	* 
+	* @param string $search The string to search for.
+	* 
+	* @param string $replace Replace with this text.
+	* 
+	* @param string &$buffer The source text.
+	* 
+	* @return string The text after search-and-replace.
+	* 
+	*/
+	
+	protected static function replace($search, $replace, &$buffer)
+	{
+		$len = strlen($search);
+		$pos = 0;
+		$count = count($replace);
+		
+		for ($i = 0; $i < $count; $i++) {
+			// does the search-string exist in the buffer?
+			$pos = strpos($buffer, $search, $pos);
+			if ($pos !== false) {
+				// replace the search-string
+				$buffer = substr_replace($buffer, $replace[$i], $pos, $len);
+			} else {
+				break;
+			}
+		}
+	}
+}
+?>
\ No newline at end of file
diff --git a/htdocs/includes/savant/Savant3/resources/Savant3_Plugin_ahref.php b/htdocs/includes/savant/Savant3/resources/Savant3_Plugin_ahref.php
new file mode 100644
index 00000000000..6d6bb319bb3
--- /dev/null
+++ b/htdocs/includes/savant/Savant3/resources/Savant3_Plugin_ahref.php
@@ -0,0 +1,109 @@
+... tag.
+* 
+* @package Savant3
+* 
+* @author Paul M. Jones 
+* 
+* @license http://www.gnu.org/copyleft/lesser.html LGPL
+* 
+* @version $Id: Savant3_Plugin_ahref.php,v 1.4 2005/08/09 12:56:14 pmjones Exp $
+*
+*/
+
+/**
+* 
+* Generates an ... tag.
+*
+* @package Savant3
+* 
+* @author Paul M. Jones 
+* 
+*/
+
+class Savant3_Plugin_ahref extends Savant3_Plugin {
+
+	/**
+	* 
+	* Generate an HTML ... tag.
+	* 
+	* @access public
+	* 
+	* @param string|array $href A string URL for the resulting tag.  May
+	* also be an array with any combination of the keys 'scheme',
+	* 'host', 'path', 'query', and 'fragment' (c.f. PHP's native
+	* parse_url() function).
+	* 
+	* @param string $text The displayed text of the link.
+	* 
+	* @param string|array $attr Any extra attributes for the  tag.
+	* 
+	* @return string The ... tag.
+	* 
+	*/
+	
+	public function ahref($href, $text, $attr = null)
+	{
+		$html = ' $val) {
+				$key = htmlspecialchars($key);
+				$val = htmlspecialchars($val);
+				$html .= " $key=\"$val\"";
+			}
+		} elseif (! is_null($attr)) {
+			// from scalar
+			$html .= htmlspecialchars(" $attr");
+		}
+		
+		// set the link text, close the tag, and return
+		$html .= '>' . $text . '';
+		return $html;
+	}
+}
+?>
\ No newline at end of file
diff --git a/htdocs/includes/savant/Savant3/resources/Savant3_Plugin_date.php b/htdocs/includes/savant/Savant3/resources/Savant3_Plugin_date.php
new file mode 100644
index 00000000000..c35db4ca7b6
--- /dev/null
+++ b/htdocs/includes/savant/Savant3/resources/Savant3_Plugin_date.php
@@ -0,0 +1,123 @@
+
+* 
+* @license http://www.gnu.org/copyleft/lesser.html LGPL
+* 
+* @version $Id: Savant3_Plugin_date.php,v 1.3 2005/03/07 14:40:16 pmjones Exp $
+*
+*/
+
+/**
+* 
+* Plugin to generate a formatted date using strftime() conventions.
+* 
+* @package Savant3
+* 
+* @author Paul M. Jones 
+* 
+*/
+
+class Savant3_Plugin_date extends Savant3_Plugin {
+	
+	/**
+	* 
+	* The default strftime() format string.
+	* 
+	* @access public
+	* 
+	* @var array
+	* 
+	*/
+	
+	public $default = '%c';
+	
+	
+	/**
+	* 
+	* Custom strftime() format strings to use for dates.
+	* 
+	* You can preset the format strings via Savant3::setPluginConf().
+	* 
+	* 
+	* $conf = array(
+	*     'custom' => array(
+	*         'mydate' => '%Y-%m-%d',
+	*         'mytime' => '%R'
+	*     )
+	* );
+	* 
+	* $Savant->setPluginConf('date', $conf);
+	* 
+	* 
+	* ... and in your template, to use a preset custom string by name:
+	* 
+	* 
+	* echo $this->date($value, 'mydate');
+	* 
+	* 
+	* @access public
+	* 
+	* @var array
+	* 
+	*/
+	
+	public $custom = array(
+		'date'    => '%Y-%m-%d',
+		'time'    => '%H:%M:%S'
+	);
+	
+	
+	/**
+	* 
+	* Outputs a formatted date using strftime() conventions.
+	* 
+	* @access public
+	* 
+	* @param string $datestring Any date-time string suitable for
+	* strtotime().
+	* 
+	* @param string $format The strftime() formatting string, or a named
+	* custom string key from $this->custom.
+	* 
+	* @return string The formatted date string.
+	* 
+	*/
+	
+	function date($datestring, $format = null)
+	{
+		settype($format, 'string');
+		
+		if (is_null($format)) {
+			$format = $this->default;
+		}
+		
+		// does the format string have a % sign in it?
+		if (strpos($format, '%') === false) {
+			// no, look for a custom format string
+			if (! empty($this->custom[$format])) {
+				// found a custom format string
+				$format = $this->custom[$format];
+			} else {
+				// did not find the custom format, revert to default
+				$format = $this->default;
+			}
+		}
+		
+		// convert the date string to the specified format
+		if (trim($datestring != '')) {
+			return strftime($format, strtotime($datestring));
+		} else {
+			// no datestring, return VOID
+			return;
+		}
+	}
+
+}
+?>
\ No newline at end of file
diff --git a/htdocs/includes/savant/Savant3/resources/Savant3_Plugin_htmlAttribs.php b/htdocs/includes/savant/Savant3/resources/Savant3_Plugin_htmlAttribs.php
new file mode 100644
index 00000000000..09257f77cf7
--- /dev/null
+++ b/htdocs/includes/savant/Savant3/resources/Savant3_Plugin_htmlAttribs.php
@@ -0,0 +1,63 @@
+
+* 
+* @license http://www.gnu.org/copyleft/lesser.html LGPL
+* 
+* @version $Id: Savant3_Plugin_htmlAttribs.php,v 1.3 2005/09/12 17:49:27 pmjones Exp $
+* 
+*/
+
+/**
+* 
+* Plugin to convert an associative array to a string of tag attributes.
+* 
+* @package Savant3
+* 
+* @author Paul M. Jones 
+* 
+*/
+
+class Savant3_Plugin_htmlAttribs extends Savant3_Plugin {
+
+	/**
+	* 
+	* Converts an associative array to a string of tag attributes.
+	* 
+	* @access public
+	* 
+	* @param array $attribs From this array, each key-value pair is 
+	* converted to an attribute name and value.
+	* 
+	* @return string The XHTML for the attributes.
+	* 
+	*/
+	
+	public function htmlAttribs($attribs)
+	{
+		$xhtml = '';
+		foreach ((array) $attribs as $key => $val) {
+		
+			if ($val === null) {
+				continue;
+			}
+			
+			if (is_array($val)) {
+				$val = implode(' ', $val);
+			}
+			
+			$key = htmlspecialchars($key);
+			$val = htmlspecialchars($val);
+			
+			$xhtml .= " $key=\"$val\"";
+		}
+		return $xhtml;
+	}
+}
+?>
\ No newline at end of file
diff --git a/htdocs/includes/savant/Savant3/resources/Savant3_Plugin_image.php b/htdocs/includes/savant/Savant3/resources/Savant3_Plugin_image.php
new file mode 100644
index 00000000000..4b316e7537c
--- /dev/null
+++ b/htdocs/includes/savant/Savant3/resources/Savant3_Plugin_image.php
@@ -0,0 +1,199 @@
+ tag.
+* 
+* @package Savant3
+* 
+* @author Paul M. Jones 
+* 
+* @license http://www.gnu.org/copyleft/lesser.html LGPL
+* 
+* @version $Id: Savant3_Plugin_image.php,v 1.7 2005/08/12 14:34:09 pmjones Exp $
+*
+*/
+
+/**
+* 
+* Plugin to generate an  tag.
+*
+* Support for alpha transparency of PNG files in Microsoft IE added by
+* Edward Ritter; thanks, Edward.
+* 
+* @package Savant3
+* 
+* @author Paul M. Jones 
+* 
+*/
+
+class Savant3_Plugin_image extends Savant3_Plugin {
+	
+	
+	/**
+	* 
+	* The document root.
+	* 
+	* @access public
+	* 
+	* @var string
+	* 
+	*/
+	
+	protected $documentRoot = null;
+	
+	
+	/**
+	* 
+	* The base directory for images within the document root.
+	* 
+	* @access public
+	* 
+	* @var string
+	* 
+	*/
+	
+	protected $imageDir = null;
+	
+	
+	/**
+	* 
+	* Outputs an  tag.
+	* 
+	* Microsoft IE alpha PNG support added by Edward Ritter.
+	* 
+	* @access public
+	* 
+	* @param string $file The path to the image on the local file system
+	* relative to $this->imageDir.
+	* 
+	* @param string $alt Alternative descriptive text for the image;
+	* defaults to the filename of the image.
+	* 
+	* @param int $border The border width for the image; defaults to zero.
+	* 
+	* @param int $width The displayed image width in pixels; defaults to
+	* the width of the image.
+	* 
+	* @param int $height The displayed image height in pixels; defaults to
+	* the height of the image.
+	* 
+	* @return string An  tag.
+	* 
+	*/
+	
+	public function image($file, $alt = null, $height = null, $width = null,
+		$attr = null)
+	{
+		// is the document root set?
+		if (is_null($this->documentRoot) && isset($_SERVER['DOCUMENT_ROOT'])) {
+			// no, so set it
+			$this->documentRoot = $_SERVER['DOCUMENT_ROOT'];
+		}
+		
+		// make sure there's a DIRECTORY_SEPARATOR between the docroot
+		// and the image dir
+		if (substr($this->documentRoot, -1) != DIRECTORY_SEPARATOR &&
+			substr($this->imageDir, 0, 1) != DIRECTORY_SEPARATOR) {
+			$this->documentRoot .= DIRECTORY_SEPARATOR;
+		}
+		
+		// make sure there's a separator between the imageDir and the
+		// file name
+		if (substr($this->imageDir, -1) != DIRECTORY_SEPARATOR &&
+			substr($file, 0, 1) != DIRECTORY_SEPARATOR) {
+			$this->imageDir .= DIRECTORY_SEPARATOR;
+		}
+		
+		// the image file type code (PNG = 3)
+		$type = null;
+		
+		// get the file information
+		$info = false;
+		
+		if (strpos($file, '://') === false) {
+			// no "://" in the file, so it's local
+			$file = $this->imageDir . $file;
+			$tmp = $this->documentRoot . $file;
+			$info = @getimagesize($tmp);
+		} else {
+			// don't attempt to get file info from streams, it takes
+			// way too long.
+			$info = false;
+		}
+		
+		// did we find the file info?
+		if (is_array($info)) {
+		
+			// capture type info regardless
+			$type = $info[2];
+			
+			// capture size info where both not specified
+			if (is_null($width) && is_null($height)) {
+				$width = $info[0];
+				$height = $info[1];
+			}
+		}
+		
+		// clean up
+		unset($info);
+		
+		// is the file a PNG? if so, check user agent, we will need to
+		// make special allowances for Microsoft IE.
+		if (stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE') && $type === 3) {
+			
+			// support alpha transparency for PNG files in MSIE
+			$html = 'Savant->htmlAttribs($attr);
+
+			// done
+			$html .= '>';
+			
+		} else {
+			
+			// not IE, so build a normal image tag.
+			$html = 'Savant->htmlAttribs($attr);
+			
+			// done
+			$html .= ' />';
+			
+		}
+		
+		// done!
+		return $html;
+	}
+}
+
+?>
\ No newline at end of file
diff --git a/htdocs/install/inc.php b/htdocs/install/inc.php
index 5e328dd3b37..01bef563c4c 100644
--- a/htdocs/install/inc.php
+++ b/htdocs/install/inc.php
@@ -2,7 +2,7 @@
 /* Copyright (C) 2004      Rodolphe Quiedeville 
  * Copyright (C) 2004      Benoit Mortier       
  * Copyright (C) 2004      Sebastien DiCintio   
- * Copyright (C) 2007-2011 Laurent Destailleur  
+ * Copyright (C) 2007-2012 Laurent Destailleur  
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -24,9 +24,11 @@
  *	\brief      File that define environment for support pages
  */
 
-define('DOL_VERSION','3.3.0-alpha');	// Also defined in htdocs/master.inc.php (Ex: x.y.z-alpha, x.y.z)
+// Just to define version DOL_VERSION
+if (! defined('DOL_INC_FOR_VERSION_ERROR')) define('DOL_INC_FOR_VERSION_ERROR','1');
+require_once('../filefunc.inc.php');
 
-// Define DOL_DOCUMENT_ROOT an ADODB_PATH used for install/upgrade process
+// Define DOL_DOCUMENT_ROOT and ADODB_PATH used for install/upgrade process
 if (! defined('DOL_DOCUMENT_ROOT'))	    define('DOL_DOCUMENT_ROOT', '..');
 if (! defined('ADODB_PATH'))
 {
@@ -35,22 +37,20 @@ if (! defined('ADODB_PATH'))
     define('ADODB_PATH', $foundpath);
 }
 
-require_once('../core/class/translate.class.php');
-require_once('../core/lib/functions.lib.php');
-require_once('../core/lib/admin.lib.php');
-require_once('../core/lib/files.lib.php');
+require_once(DOL_DOCUMENT_ROOT.'/core/class/translate.class.php');
+require_once(DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php');
+require_once(DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php');
+require_once(DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php');
 require_once(ADODB_PATH.'adodb-time.inc.php');
 
-error_reporting(E_ALL);	// To have all errors without disabled E_STRICT
-
-// IMPORTANT with strict mode E_STRICT
+// Avoid warnings with strict mode E_STRICT
 $conf = new stdClass(); // instantiate $conf explicitely
 $conf->global	= (object) array();
 $conf->file		= (object) array();
 $conf->db		= (object) array();
 $conf->syslog	= (object) array();
 
-// Define $_REQUEST["logtohtml"]
+// Force $_REQUEST["logtohtml"]
 $_REQUEST["logtohtml"]=1;
 
 // Correction PHP_SELF (ex pour apache via caudium) car PHP_SELF doit valoir URL relative
@@ -61,27 +61,6 @@ if (isset($_SERVER["DOCUMENT_URI"]) && $_SERVER["DOCUMENT_URI"])
 }
 
 
-// Define syslog constants
-if (! defined('LOG_DEBUG'))
-{
-    if (function_exists("define_syslog_variables"))
-    {
-        define_syslog_variables(); // Deprecated since php 5.3.0, syslog variables no longer need to be initialized
-    }
-    else
-    {
-        // Pour PHP sans syslog (comme sous Windows)
-        define('LOG_EMERG',0);
-        define('LOG_ALERT',1);
-        define('LOG_CRIT',2);
-        define('LOG_ERR',3);
-        define('LOG_WARNING',4);
-        define('LOG_NOTICE',5);
-        define('LOG_INFO',6);
-        define('LOG_DEBUG',7);
-    }
-}
-
 $includeconferror='';
 
 
@@ -100,7 +79,9 @@ if (! defined('DONOTLOADCONF') && file_exists($conffile))
     $result=include_once($conffile);	// Load conf file
     if ($result)
     {
-    	// Clean parameters
+		if (empty($dolibarr_main_db_type)) $dolibarr_main_db_type='mysql';	// For backward compatibility
+    	
+		// Clean parameters
     	$dolibarr_main_data_root        =isset($dolibarr_main_data_root)?trim($dolibarr_main_data_root):'';
     	$dolibarr_main_url_root         =isset($dolibarr_main_url_root)?trim($dolibarr_main_url_root):'';
     	$dolibarr_main_url_root_alt     =isset($dolibarr_main_url_root_alt)?trim($dolibarr_main_url_root_alt):'';
@@ -251,7 +232,8 @@ if (function_exists('get_magic_quotes_gpc'))	// magic_quotes_* removed in PHP 5.
 
 // Defini objet langs
 $langs = new Translate('..',$conf);
-$langs->setDefaultLang('auto');
+if (GETPOST('lang')) $langs->setDefaultLang(GETPOST('lang'));
+else $langs->setDefaultLang('auto');
 
 $bc[false]=' class="bg1"';
 $bc[true]=' class="bg2"';
@@ -316,9 +298,9 @@ function conf($dolibarr_main_document_root)
 
 
 /**
- * Show header of install pages
+ * Show HTML header of install pages
  *
- * @param	string		$soutitre	Sous titre
+ * @param	string		$soutitre	Title
  * @param 	string		$next		Next
  * @param 	string		$action     Action code ('set' or 'upgrade')
  * @param 	string		$param		Param
@@ -338,7 +320,7 @@ function pHeader($soutitre,$next,$action='set',$param='')
     print ''."\n";
     print ''."\n";
     print ''."\n";
-    print ''."\n";
+    print ''."\n";
     print ''."\n";
     print ''."\n";
     print ''."\n";
@@ -361,10 +343,10 @@ function pHeader($soutitre,$next,$action='set',$param='')
 }
 
 /**
- * Output footer of install pages
+ * Print HTML footer of install pages
  *
- * @param 	string	$nonext				No next
- * @param	string	$setuplang			Setup lang
+ * @param 	string	$nonext				No button "Next step"
+ * @param	string	$setuplang			Language code
  * @param	string	$jscheckfunction	Add a javascript check function
  * @return	void
  */
diff --git a/htdocs/install/mysql/migration/3.1.0-3.2.0.sql b/htdocs/install/mysql/migration/3.1.0-3.2.0.sql
index 5aadfb066f9..74ba2aa255a 100755
--- a/htdocs/install/mysql/migration/3.1.0-3.2.0.sql
+++ b/htdocs/install/mysql/migration/3.1.0-3.2.0.sql
@@ -156,6 +156,8 @@ ALTER TABLE llx_categorie_fournisseur DROP INDEX fk_categorie;
 ALTER TABLE llx_categorie_fournisseur ADD PRIMARY KEY pk_categorie_fournisseur (fk_categorie, fk_societe);
 ALTER TABLE llx_categorie_fournisseur ADD INDEX idx_categorie_fournisseur_fk_categorie (fk_categorie);
 ALTER TABLE llx_categorie_fournisseur ADD INDEX idx_categorie_fournisseur_fk_societe (fk_societe);
+DELETE FROM llx_categorie_fournisseur WHERE fk_categorie NOT IN (SELECT rowid FROM llx_categorie);
+DELETE FROM llx_categorie_fournisseur WHERE fk_societe NOT IN (SELECT rowid FROM llx_societe);
 ALTER TABLE llx_categorie_fournisseur ADD CONSTRAINT fk_categorie_fournisseur_categorie_rowid FOREIGN KEY (fk_categorie) REFERENCES llx_categorie (rowid);
 ALTER TABLE llx_categorie_fournisseur ADD CONSTRAINT fk_categorie_fournisseur_fk_soc   FOREIGN KEY (fk_societe) REFERENCES llx_societe (rowid);
 
diff --git a/htdocs/langs/ca_ES/errors.lang b/htdocs/langs/ca_ES/errors.lang
index 3c0f15c9804..64b3cbb97be 100644
--- a/htdocs/langs/ca_ES/errors.lang
+++ b/htdocs/langs/ca_ES/errors.lang
@@ -105,8 +105,10 @@ ErrorBothFieldCantBeNegative=Els camps %s i %s no poden ser negatius
 ErrorNoActivatedBarcode=Cap tipus de codi de barres activat
 ErrorWebServerUserHasNotPermission=El compte d'execució del servidor web %s no disposa dels permisos per això
 ErrorNoActivatedBarcode=No hi ha activat cap tipus de codi de barres
-ErrorOSSystem=La instal·lació en línia no suporta el seu sistema operatiu. 
Instal·leu l'extensió manualment. -ErrorUncompFile=No és possible instal·lar el paquet %s +ErrUnzipFails=No s'ha pogut descomprimir el fitxer %s amb ZipArchive +ErrNoZipEngine=En aquest PHP no hi ha motor per descomprimir l'arxiu %s +ErrorFileMustBeADolibarrPackage=El fitxer %s ha de ser un paquet Dolibarr en format zip +ErrorFileRequired=Es requereix un fitxer de paquet Dolibarr en format zip # Warnings WarningSafeModeOnCheckExecDir=Atenció, està activada l'opció PHP safe_mode, la comanda ha d'estar dins d'un directori declarat dins del paràmetre php safe_mode_exec_dir. diff --git a/htdocs/langs/ca_ES/stocks.lang b/htdocs/langs/ca_ES/stocks.lang index 8fc10594b4c..63365eb4c83 100644 --- a/htdocs/langs/ca_ES/stocks.lang +++ b/htdocs/langs/ca_ES/stocks.lang @@ -80,4 +80,5 @@ ConfirmDeleteWarehouse=Esteu segur que voleu eliminar el magatzem %s ? PersonalStock=Stoc personal %s ThisWarehouseIsPersonalStock=Aquest magatzem representa l'estoc personal de %s %s SelectWarehouseForStockDecrease=Seleccioneu el magatzem a usar en el decrement d'estoc -SelectWarehouseForStockIncrease=Seleccioneu el magatzem a utilitzar en l'increment d'estoc \ No newline at end of file +SelectWarehouseForStockIncrease=Seleccioneu el magatzem a utilitzar en l'increment d'estoc +LastWaitingSupplierOrders=Comandes en espera de recepció \ No newline at end of file diff --git a/htdocs/langs/de_DE/admin.lang b/htdocs/langs/de_DE/admin.lang index 9f75c9b4eb9..e6146e00c0b 100644 --- a/htdocs/langs/de_DE/admin.lang +++ b/htdocs/langs/de_DE/admin.lang @@ -13,8 +13,19 @@ VersionLastUpgrade=Version der letzten Aktualisierung VersionExperimental=Experimentell VersionDevelopment=Entwicklung VersionUnknown=Unbekannt -VersionRecommanded=Empfohlen +VersioSessionSaveHandlernRecommanded=Empfohlen SessionId=Sitzungs ID +SessionSaveHandler=Handler für Sitzungsspeicherung +SessionSavePath=Pfad für Sitzungsdatenspeicherung +PurgeSessions=Sitzungsdaten löschen +ConfirmPurgeSessions=Wollen Sie wirklich alle Sitzungsdaten löschen? Damit wird zugleich jeder Benutzer (außer Ihnen) vom System abgemeldet. +NoSessionListWithThisHandler=Anzeige der aktiven Sitzungen mit Ihrer PHP-Konfiguration nicht möglich. +LockNewSessions=Keine neuen Sitzungen zulassen +ConfirmLockNewSessions=Möchten Sie wirklich alle Sitzungen bis auf Ihre eigene blocken? Nur Benutzer %s kann danach noch eine Verbindung aufbauen. +UnlockNewSessions=Sperrung neuer Sitzungen aufheben +YourSession=Ihre Sitzung +Sessions=Sitzungen +NoSessionFound=Ihre PHP -Konfiguration scheint keine Liste aktiver Sitzungen zuzulassen. Eventuell ist die Speicherung im Verzeichnis (%s) aktiviert und fehlerhafte Dateizugriffsberechtigungen blockieren den Zugriff (z.B. open_basedir-Beschränkungen). HTMLCharset=Zeichensatz für die generierten HTML-Seiten DBStoringCharset=Zeichensatz der Datenbank-Speicherung DBSortingCharset=Zeichensatz der Datenbank-Sortierung @@ -29,6 +40,10 @@ ExternalUsers=Externe Benutzer GlobalSetup=Allgemeine Einstellungen GUISetup=Anzeige SetupArea=Einstellungsübersicht +FormToTestFileUploadForm=Formular für das Testen von Datei-Uplads (je nach Konfiguration) +IfModuleEnabled=Anmerkung: Ist nur wirksam wenn Modul %s aktiviert ist +RemoveLock=Entfernen Sie die Datei %s falls vorhanden, um das Aktualisierungs-Tool auszuführen +RestoreLock=Ersetzen Sie die Datei %s mit einer Datei ohne Schreibberechtigung um jegliche Nutzung des Aktualisierungs-Tools zu verhindern. SecuritySetup=Sicherheitseinstellungen ErrorModuleRequirePHPVersion=Fehler: Dieses Modul benötigt PHP Version %s oder höher ErrorModuleRequireDolibarrVersion=Fehler: Dieses Moduls erfordert Dolibarr Version %s oder höher @@ -36,18 +51,23 @@ ErrorDecimalLargerThanAreForbidden=Fehler: Eine höhere Genauigkeit als %s%s%s @@ -55,6 +75,10 @@ NoMaxSizeByPHPLimit=Hinweis: In Ihren PHP-Einstellungen sind keine Größenbesch MaxSizeForUploadedFiles=Maximale Größe für Dateiuploads (0 verbietet jegliche Uploads) UseCaptchaCode=Captcha-Code auf der Anmeldeseite verwenden UseAvToScanUploadedFiles=Virenschutz zur Überprüfung von Dateiuploads verwenden +AntiVirusCommand=Vollständiger Pfad zum installierten Virenschutz +AntiVirusCommandExample=Beispiel für ClamWin: c:\Program Files (x86)\ClamWin\bin\clamscan.exe
Beispiel für ClamAV: /usr/bin/clamscan +AntiVirusParam=Weitere Parameter auf der Kommandozeile +AntiVirusParamExample=Beispiel für ClamWin: --database="C:\Program Files (x86)\ClamWin\lib" ComptaSetup=Buchhaltungsmoduls-Einstellungen UserSetup=Benutzerverwaltungs-Einstellunen MenuSetup=Menüverwaltungs-Einstellungen @@ -75,19 +99,23 @@ CurrentValueSeparatorDecimal=Dezimaltrennzeichen CurrentValueSeparatorThousand=Tausendertrennzeichen Modules=Module ModulesCommon=Hauptmodule -ModulesInterfaces=Schnittstellenmodule ModulesOther=Weitere Module -ModulesJob=Geschäfttypenmodule +ModulesInterfaces=Schnittstellenmodule ModulesSpecial=Spezialmodule ParameterInDolibarr=Parameter %s LanguageParameter=Sprachparameter %s LanguageBrowserParameter=Parameter %s LocalisationDolibarrParameters=Länderspezifische Parameter ClientTZ=Zeitzone Kunde (Benutzer) +ClientHour=Uhrzeit (Benutzer) OSTZ=Zeitzone des Serverbetriebssystems PHPTZ=Zeitzone der PHP-Version PHPServerOffsetWithGreenwich=PHP-Server Zeit-Offset Greenwich-Breite (Sekunden) +ClientOffsetWithGreenwich=Benutzer/Browser Zeit-Offset Greenwich-Breite (Sekunden) +DaylingSavingTime=Sommerzeit (Benutzer) CurrentHour=Aktuelle Stunde +CompanyTZ=Unternehmenszeitzone (Hauptunternehmen) +CompanyHour=Unternehmenszeit (Hauptunternehmen) CurrentSessionTimeOut=Aktuelle Session timeout OSEnv=Betriebssystemumgebung Box=Box @@ -105,6 +133,7 @@ SystemTools=Systemwerkzeuge SystemToolsArea=Systemwerkzeugsübersicht SystemToolsAreaDesc=In diesem Bereich finden Sie die Verwaltungsfunktionen. Verwenden Sie das linke Menü zur Auswahl der gesuchten Funktion. PurgeAreaDesc=Hier können Sie alle vom System erzeugten und gespeicherten Dateien löschen (temporäre Dateien oder alle Dateien im Verzeichnis %s). Diese Funktion ist nicht erforderlich und richtet sich vorwiegend an Benutzer ohne Zugriff auf das Dateisystem des Webservers (z.B. Hostingpakete) +PurgeDeleteLogFile=Löschen der Protokolldatei %s des Systemprotokollmoduls (kein Risiko des Datenverlusts) PurgeDeleteTemporaryFiles=Alle temporären Dateien löschen (kein Datenverlustrisiko) PurgeDeleteAllFilesInDocumentsDir=Alle Datein im Verzeichnis %s löschen. Dies beinhaltet temporäre Dateien ebenso wie Datenbanksicherungen, Dokumente (Partner, Rechnungen, ...) und alle Inhalte des ECM-Moduls. PurgeRunNow=Jetzt löschen @@ -117,21 +146,26 @@ GenerateBackup=Sicherung erzeugen Backup=Sichern Restore=Wiederherstellen RunCommandSummary=Die Sicherung wird über folgenden Befehl ausgeführt +RunCommandSummaryToLaunch=Die Sicherung kann über folgenden Befehl ausgeführt werden WebServerMustHavePermissionForCommand=Ihr Webserver muss die Ausführung des entsprechenden Befehls unterstützen BackupResult=Sicherungszusammenfassung BackupFileSuccessfullyCreated=Sicherungsdatei erfolgreich erzeugt +YouCanDownloadBackupFile=Sie können die erstellte Sicherungsdatei jetzt herunterladen NoBackupFileAvailable=Keine verfügbare Sicherungsdatei ExportMethod=Exportmethode ImportMethod=Importmethode ToBuildBackupFileClickHere=Um eine Sicherungsdatei zu erstellen klicken Sie bitte hier. -ImportMySqlDesc=Zum Wiederherstellen einer Sicherungsdatei müssen Sie folgenden Befehl über die Kommandozeile ausführen: +ImportMySqlDesc=Zum Wiederherstellen einer Sicherungsdatei müssen Sie folgenden MySql Befehl über die Kommandozeile ausführen: +ImportPostgreSqlDesc=Zum Wiederherstellen einer Sicherungsdatei müssen Sie folgenden pg_restore Befehl über die Kommandozeile ausführen: ImportMySqlCommand=%s %s < mybackupfile.sql +ImportPostgreSqlCommand=%s %s mybackupfile.sql FileNameToGenerate=Name der zu erstellenden Datei CommandsToDisableForeignKeysForImport=Befehl zur Deaktivierung der Fremdschlüsselüberprüfung ExportCompatibility=Kompatibilität der erzeugten Exportdatei MySqlExportParameters=MySQL-Exportparameter UseTransactionnalMode=Transaktionsmodus verwenden FullPathToMysqldumpCommand=Vollständiger Pfad zum mysqldump-Befehl +FullPathToPostgreSQLdumpCommand=Vollständiger Pfad zum pg_dump-Befehl ExportOptions=Exportoptionen AddDropDatabase=DROP DATABASE Befehl hinzufügen AddDropTable=DROP TABLE Befehl hinzufügen @@ -140,6 +174,7 @@ NameColumn=Name der Spalten ExtendedInsert=Erweiterte INSERTS DelayedInsert=Verzögerte INSERTS EncodeBinariesInHexa=Hexadezimal-Verschlüsselung für Binärdateien +IgnoreDuplicateRecords=Datensatzduplikate ignorieren (INSERT IGNORE) Yes=Ja No=Nein AutoDetectLang=Automatische Erkennung (Browser-Sprache) @@ -151,6 +186,11 @@ ModulesDesc=Hier können Sie die verfügbaren Module und Funktionen auswählen. ModulesInterfaceDesc=Die Schnittstellenmodule erlauben Ihnen das Einbinden weiterer Funktionen auf Basis externer Software, Systeme oder Services ModulesSpecialDesc=Spezialmodule sind für sehr spezifische Anwendungsfälle gedacht und oft nicht verwendet ModulesJobDesc=Die Geschäftstypenmodule erlauben eine einfache Einrichtung des Systems für gängige Anwendungsfälle/Unternehmenstypen. +ModulesMarketPlaceDesc=Hier finden Sie weitere Module auf externen Web-Sites +ModulesMarketPlaces=Sie können zusätzliche Module im Web finden... +DoliStoreDesc=DoliStore, der offizielle Marktplatz für dolibarr Module/Erweiterungen +WebSiteDesc=Website-Anbieter für Ihre Suche nach weiteren Modulen +URL=Link BoxesAvailable=Verfügbare Boxen BoxesActivated=Aktivierte Boxen ActivateOn=Aktiv ab @@ -164,7 +204,10 @@ Security=Sicherheit Passwords=Passwörter DoNotStoreClearPassword=Passwörter in der Datenbank nicht im Klartext speichern (Empfohlene Einstellung) MainDbPasswordFileConfEncrypted=Datenbankpasswort in der Konfigurationsdatei verschlüsselt speichern (Empfohlene Einstellung) -ConfigFileIsInReadOnly=Die Konfigurationsdatei conf.php kann nur gelesen werden, bitte überprüfen Sie die Berechtigungen. +InstrucToEncodePass=Um das Passwort in der Konfigurationsdatei conf.php zu verschlüsseln, ersetzen Sie die Zeile
$dolibarr_main_db_pass="..."
durch
$dolibarr_main_db_pass="crypted:%s" +InstrucToClearPass=Um das Passwort unverschlüsselt (Klartext) in der Konfigurationsdatei conf.php zu speichern, ersetzen Sie die Zeile
$dolibarr_main_db_pass="crypted:..."
durch
$dolibarr_main_db_pass="%s" +ProtectAndEncryptPdfFiles=PDF-Dokumentschutz aktivieren (Die Aktivierung ist nicht empfohlen, weil dadurch die Stapelerzeugung von PDFs nicht mehr funktioniert) +ProtectAndEncryptPdfFilesDesc=Die Aktivierung des PDF-Dokumentschutzes erhält die Lesbarkeit und Druckfähigkeit des Dokuments, Bearbeitung und Kopien sind jedoch nicht mehr möglich. Bitte beachten Sie, dass über die Aktivierung dieser Funktion auch die Stapelverarbeitung von PDF-Dokumenten (z.B. aller offenen Rechnungen) nicht mehr funktioniert Feature=Funktion DolibarrLicense=Lizenz DolibarrProjectLeader=Projektleiter @@ -172,9 +215,17 @@ Developpers=Entwickler/Mitwirkende OtherDeveloppers=Andere Entwickler/Mitwirkende OfficialWebSite=Offizielle Website OfficialWebSiteFr=Französische Website -OfficialWikiFr=Französisches Wiki +OfficialWiki=Dolibarr Wiki +OfficialDemo=Dolibarr Offizielle Demo +OfficialMarketPlace=Offizieller Marktplatz für Module/Erweiterungen +ForDocumentationSeeWiki=Für Benutzer-und Entwickler-Dokumentation (DOC, ...), FAQs
Werfen Sie einen Blick auf die Dolibarr Wiki:
%s +ForAnswersSeeForum=Für alle anderen Fragen / Hilfe, können Sie die Dolibarr Forum:
%s +HelpCenterDesc1=In diesem Bereich können Sie sich ein Hilfe-Support-Service auf Dolibarr. +HelpCenterDesc2=Ein Teil dieses Dienstes sind nur in Englisch verfügbar. CurrentTopMenuHandler=Aktuelle Top-Menü-Handler CurrentLeftMenuHandler=Aktuelle linken Menü-Handler +CurrentMenuHandler=Aktuelle Menü-Handler +CurrentSmartphoneMenuHandler=Aktuelle Smartphone-Menü-Handler MeasuringUnit=Maßeinheit Emails=E-Mails EMailsSetup=E-Mail-Adressen einrichten @@ -184,8 +235,18 @@ MAIN_MAIL_SMTP_SERVER=SMTP-Host (standardmäßig in php.ini: %s) MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS-Port (nicht in PHP definiert in Unix-Umgebungen) MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP-Host (nicht in PHP definiert auf Unix-Umgebungen) MAIN_MAIL_EMAIL_FROM=E-Mail-Absender für automatisch erzeugte Mails (standardmäßig in php.ini: %s) +MAIN_MAIL_ERRORS_TO=E-Mail-Absender für rückkehrende fehlerhafte E-Mails +MAIN_MAIL_AUTOCOPY_TO=Senden Sie automatisch eine Blindkopie aller gesendeten Mails an MAIN_DISABLE_ALL_MAILS=Alle E-Mail-Funktionen abschalten (für Test- oder Demozwecke) +MAIN_MAIL_SENDMODE=Methode zum Senden von E-Mails +MAIN_MAIL_SMTPS_ID=SMTP ID, wenn Authentifizierung erforderlich +MAIN_MAIL_SMTPS_PW=SMTP Passwort, wenn Authentifizierung erforderlich +MAIN_MAIL_EMAIL_TLS=TLS (SSL)-Verschlüsselung verwenden +MAIN_DISABLE_ALL_SMS=Alle SMS-Funktionen abschalten (für Test- oder Demozwecke) +MAIN_SMS_SENDMODE=Methode zum Senden von SMS +MAIN_MAIL_SMS_FROM=Standard Versendetelefonnummer der SMS-Funktion FeatureNotAvailableOnLinux=Diese Funktion ist auf Unix-Umgebungen nicht verfügbar. Testen Sie Ihr Programm sendmail lokal. +SubmitTranslation=Sollte die Übersetzung für eine Sprache nicht vollständig sein oder Fehler beinhalten, können Sie die entsprechenden Sprachdateien im Verzeichnis langs/%s bearbeiten und anschließend Ihre Änderungen mit der Entwicklergemeinschaft auf www.dolibarr.org teilen. ModuleSetup=Moduleinstellunen ModulesSetup=Moduleinstellungen ModuleFamilyBase=System @@ -202,6 +263,7 @@ MenuHandlers=Menü-Handler MenuAdmin=Menü-Editor ThisIsProcessToFollow=So führen Sie die Installation/Aktualisierung des Systems durch: StepNb=Schritt %s +FindPackageFromWebSite=Finden Sie ein Paket, das die gewünschten Funktionen beinhaltet (zum Beispiel auf der offiziellen Website %s). DownloadPackageFromWebSite=Herunterladen des Installationspakets von der Website %s UnpackPackageInDolibarrRoot=Entpacken des Pakets in den Stammordner der Systeminstallation %s SetupIsReadyForUse=Die Installation ist abgeschlossen und das System zur Verwendung der neuen Komponente bereit. @@ -209,6 +271,11 @@ CurrentVersion=Aktuelle dolibarr-Version CallUpdatePage=Zur Aktualisierung der Daten und Datenbankstrukturen gehen Sie zur Seite %s. LastStableVersion=Letzte stabile Version GenericMaskCodes=Sie können ein beliebiges Numerierungsschema wählen. Dieses Schema könnte z.B. so aussehen:
{000000} steht für eine 6-stellige Nummer, die sich bei jedem neuen %s automatisch erhöht. Wählen Sie die Anzahl der Nullen je nach gewünschter Nummernlänge. Der Zähler füllt sich automatisch bis zum linken Ende mit Nullen um das gewünschte Format abzubilden.
{000000+000} führt zu einem ähnlichen Ergebnis, allerdings mit einem Wertsprung in Höhe des Werts rechts des Pluszeichens, der beim ersten %s angewandt wird.
{000000@x} wie zuvor, jedoch stellt sich der Zähler bei Erreichen des Monats x (zwischen 1 und 12) automatisch auf 0 zurück. Ist diese Option gewählt und x hat den Wert 2 oder höher, ist die Folge {mm}{yy} or {mm}{yyyy} ebenfalls erfoderlich.
{dd} Tag (01 bis 31).
{mm} Monat (01 bis 12).
{yy}, {yyyy} or {y} Jahreszahl 1-, 2- oder 4-stellig.
+GenericMaskCodes2=(cccc) den Client-Code
() cccc000 den Client-Code auf n Zeichen ist, gefolgt von einer Client-ref Zähler ohne Offset-und zeroized mit der globalen Zähler.
+GenericMaskCodes3=Alle anderen Zeichen in der Maske bleiben.
Leerzeichen sind nicht zulässig.
+GenericMaskCodes4a=Beispiel auf der 99. %s des Dritten thecompany Geschehen 2007-01-31:
+GenericMaskCodes4b=Beispiel für Dritte erstellt am 2007-03-01:
+GenericMaskCodes5=ABC (yy) (mm) - (000000) wird ABC0701-000099
(0000 +100)-ZZZ / tt () / XXX wird 0199-ZZZ/31/XXX GenericNumRefModelDesc=Liefert eine anpassbare Nummer nach vordefiniertem Schema ServerAvailableOnIPOrPort=Server ist verfügbar unter der Adresse %s auf Port %s ServerNotAvailableOnIPOrPort=Server nicht verfügbar unter Adresse %s auf Port %s @@ -218,6 +285,37 @@ DoTestSendHTML=HTML-Test senden ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Fehler: Kann Option @ nicht verwenden, wenn Sequenz {mm}{yy} oder {mm}{yyyy} nicht im Schema verwendet werden. UMask=Umask Parameter für neue Dateien auf Unix/Linux/BSD-Dateisystemen. UMaskExplanation=Über diesen Parameter können Sie die standardmäßigen Dateiberechtigungen für vom System erzeugte/verwaltete Inhalte festlegen.
Erforderlich ist ein Oktalwert (0666 bedeutet z.B. Lesen und Schreiben für alle).
Auf Windows-Umgebungen haben diese Einstellungen keinen Effekt. +SeeWikiForAllTeam=Werfen Sie einen Blick auf die Wiki-Seite für eine vollständige Liste aller Akteure und deren Organisationen +UseACacheDelay=Verzögerung für den Export der Cache-Antwort in Sekunden (0 oder leer für kein Caching) +DisableLinkToHelpCenter=Link mit "Benötigen Sie Hilfe oder Unterstützung" auf der Anmeldeseite ausblenden +DisableLinkToHelp=Link zur "%s Online-Hilfe" auf der linken Seite ausblenden +AddCRIfTooLong=Kein automatischer Zeilenumbruch. Entsprechend müssen Sie, falls die Länge Ihrer Zeilen die Dokumentenbreite übersteigt, manuelle Zeilenschaltungen im Textbereich einfügen. +ModuleDisabled=Modul deaktiviert +ModuleDisabledSoNoEvent=Modul deaktiviert und Eintrag deshalb nie erstellt +ConfirmPurge=Möchten Sie die Löschung wirklich durchführen?
Dies wird alle Ihre Dateien unwiderbringlich entfernen (ECM-Dateien, Dateien, ...)! +MinLength=Mindestlänge +LanguageFilesCachedIntoShmopSharedMemory=.lang-Sprachdateien in gemeinsamen Cache geladen +ExamplesWithCurrentSetup=Beispiele mit der derzeitigen Systemkonfiguration +ListOfDirectories=Liste der OpenDocument-Vorlagenverzeichnisse +ListOfDirectoriesForModelGenODT=Liste der Verzeichnisse mit Vorlagendateien mit OpenDocument-Format.

Fügen Sie hier den vollständigen Pfad der Verzeichnisse ein.
Trennen Sie jedes Verzeichnis mit einer Zeilenschaltung
Verzeichnisse des ECM-Moduls fügen Sie z.B. so ein DOL_DATA_ROOT/ecm/yourdirectoryname.

Dateien in diesen Verzeichnissen müssen auf .odt enden. +NumberOfModelFilesFound=Anzahl der in diesen Verzeichnissen gefundenen .odt-Dokumentvorlagen +ExampleOfDirectoriesForModelGen=Beispiele für Syntax:
c:\mydir
/Home/mydir
DOL_DATA_ROOT/ecm/ecmdir +FollowingSubstitutionKeysCanBeUsed=
Lesen Sie die Wiki Dokumentation um zu wissen, wie Sie Ihre odt Dokumentenvorlage erstellen, bevor Sie diese in den Kategorien speichern: +FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template +FirstnameNamePosition=Reihenfolge von Vor- und Nachname +DescWeather=Die folgenden Bilder werden auf der Übersichtansicht angezeigt, wenn die Anzahl der verspäteten Aufgaben diese Werte erreichen: +KeyForWebServicesAccess=Schlüssel um Web Services (Parameter "dolibarrkey" in webservices) zu benützen +TestSubmitForm=Testbereich +ThisForceAlsoTheme=Dieser Menü-Manager wird sein eigenes Theme benutzen, unabhängig der Wahl des Nutzers. Auch wenn dieser Menü-Manager für Smartphones ausgelegt ist kann er nicht auf allen Smartphones angezeigt werden. Verwenden Sie ein anderes Menü-Manager, wenn Sie Probleme bemerken. +ThemeDir=Theme Ordner +ConnectionTimeout=Verbindung Timeout +ResponseTimeout=Antwort Timeout +SmsTestMessage=Test Nachricht von __PHONEFROM__ zu __PHONETO__ +ModuleMustBeEnabledFirst=Modul %s muss erst aktiviert werden bevor diese Funktion verfügbar ist. +SecurityToken=Schlüssel um die URLs zu entschlüsseln +NoSmsEngine=Kein SMS Sende Manager verfügbar. SMS Sende Manager sind nicht installiert (weil diese von externen Lieferanten abhängig sind) aber Sie können welche auf http://www.dolistore.com finden. + +# Modules Module0Name=Benutzer und Gruppen Module0Desc=Benutzer- und Gruppenverwaltung Module1Name=Partner @@ -230,6 +328,8 @@ Module20Name=Angebote Module20Desc=Angeboteverwaltung Module22Name=E-Mail-Kampagnen Module22Desc=E-Mail-Kampagnenverwaltung +Module23Name=Energie +Module23Desc=Überwachung des Energieverbrauchs Module25Name=Kundenbestellungen Module25Desc=Kundenbestellungsverwaltung Module30Name=Rechnungen @@ -242,10 +342,12 @@ Module49Name=Bearbeiter Module49Desc=Bearbeiterverwaltung Module50Name=Produkte Module50Desc=Produktverwaltung +Module51Name=Postwurfsendungen +Module51Desc=Verwaltung von Postwurf-/Massensendungen Module52Name=Produktbestände Module52Desc=Produktbestandsverwaltung -Module53Name=Services -Module53Desc=Services-Verwaltung +Module53Name=Leistungen +Module53Desc=Leistungs-Verwaltung Module54Name=Verträge Module54Desc=Vertragsverwaltung Module55Name=Barcodes @@ -258,14 +360,16 @@ Module58Name=ClickToDial Module58Desc=ClickToDial-Integration Module59Name=Bookmark4u Module59Desc=Neues Bookmark4u Konto zu Systembenutzerkonto hinzufügen -Module70Name=Eingriffe -Module70Desc=Eingriffsverwaltung +Module70Name=Service +Module70Desc=Serviceverwaltung Module75Name=Reise- und Fahrtspesen Module75Desc=Reise- und Fahrtspesenverwaltung Module80Name=Sendungen Module80Desc=Sendungs-u und Lieferscheinverwaltung Module85Name=Banken und Geld Module85Desc=Verwaltung von Bank- oder Bargeldkonten +Module100Name=Externe Website +Module100Desc=Erlaubt die Einbindung einer externen Website in die Menüs von dolibarr und die Anzeige der Seite innerhalb eines Frames Module200Name=LDAP Module200Desc=LDAP-Verzeichnissynchronisation Module210Name=PostNuke @@ -275,7 +379,7 @@ Module240Desc=Werkzeug zum Datenexport(mit Assistenten) Module250Name=Datenimport Module250Desc=Werkzeug zum Dateinport (mit Assistenten) Module310Name=Mitglieder -Module310Desc=Mitgliederverwaltun +Module310Desc=Mitgliederverwaltung Module320Name=RSS-Feed Module320Desc=RSS-Feed-Bildschirm innerhalb des Systems anzeigen Module330Name=Lesezeichen @@ -300,6 +404,8 @@ Module1400Name=Buchhaltung Module1400Desc=Buchhaltung für Experten (doppelte Buchhaltung) Module1780Name=Kategorien Module1780Desc=Kategorienverwaltung (Produkte, Lieferanten und Kunden) +Module2000Name=FCKeditor +Module2000Desc=WYSIWYG-Editor Module2200Name=Verleihrechte Module2200Desc=Verleihrechteverwaltung Module2300Name=Menüs @@ -308,8 +414,22 @@ Module2400Name=Agenda Module2400Desc=Maßnahmen/Aufgaben und Agendaverwaltung Module2500Name=Inhaltsverwaltung(ECM) Module2500Desc=Speicherung und Verteilung von Dokumenten -Module50100Name=Kassa +Module2600Name=WebServices +Module2600Desc=Aktivieren Sie Verwendung von Webservices +Module2700Name=Gravatar +Module2700Desc=Verwenden Sie den online Gravatar-Dienst (www.gravatar.com) für die Anzeige von Benutzer- und Mitgliederbildern (Zuordnung über E-Mail-Adressen). Hierfür benötigen Sie eine aktive Internetverbindung +Module2900Name=GeoIPMaxmind +Module2900Desc=GeoIP Maxmind Konvertierung +Module5000Name=Mandantenfähigkeit +Module5000Desc=Ermöglicht Ihnen die Verwaltung mehrerer Firmen +Module13452Name=SpeedFinder +Module13452Desc=AJAX-basierte Suchmaschine für die rasche Zuordnung von Namen zu (Teilen) einer Telefonnummer (innerhalb von 2 Sekunden) +Module50000Name=PayBox +Module50000Desc=Über dieses Modul können Sie online Kreditkartenzahlungen entgegennehmen +Module50100Name=Kasse Module50100Desc=Kassenmodul +Module50200Name= Paypal +Module50200Desc= Mit diesem Modul können Sie via PayPal Online Kreditkartenzahlungen entgegennehmen Permission11=Rechnungen einsehen Permission12=Rechnungen erstellen/bearbeiten Permission13=Rechnungsfreigabe aufheben @@ -323,17 +443,19 @@ Permission24=Angebote freigeben Permission25=Angeobte per E-Mail versenden Permission26=Angebot schließen Permission27=Angeobte löschen -Permission31=Produkte/Services einsehen -Permission32=Produkte/Services erstellen/bearbeiten -Permission33=Produkte/Services freigeben -Permission34=Produkte/Services löschen -Permission36=Projekte/Services exportieren +Permission28=Angebote exportieren +Permission31=Produkte/Leistungen einsehen +Permission32=Produkte/Leistungen erstellen/bearbeiten +Permission34=Produkte/Leistungen löschen +Permission36=Projekte/Leistungen exportieren +Permission38=Produkte exportieren Permission41=Projekte/Aufgaben einsehen Permission42=Projekte/Aufgaben erstellen/bearbeiten (Meine) Permission44=Projekte löschen -Permission61=Eingriffe ansehen -Permission62=Eingriffe erstellen/bearbeiten -Permission64=Eingriffe löschen +Permission61=Service ansehen +Permission62=Service erstellen/bearbeiten +Permission64=Service löschen +Permission67=Service exportieren Permission71=Mitglieder einsehen Permission72=Mitglieder erstellen/bearbeiten Permission74=Mitglieder löschen @@ -351,6 +473,7 @@ Permission89=Kundenbestellungen löschen Permission91=Steuern/Sozialbeiträge einsehen Permission92=Steuern/Sozialbeiträge erstellen/bearbeiten Permission93=Steuern/Sozialbeiträge löschen +Permission94=Sozialbeiträge exportieren Permission95=Berichte einsehen Permission96=Verbuchung einstellen Permission97=Rechnungszuweisung einsehen @@ -370,13 +493,25 @@ Permission121=Mit Benutzer verbundene Partner einsehen Permission122=Mit Benutzer verbundene Partner erstellen/bearbeiten Permission125=Mit Benutzer verbundene Partner löschen Permission126=Partner exportieren +Permission141=Aufgaben einsehen +Permission142=Aufgaben erstellen/bearbeiten +Permission144=Aufgaben löschen +Permission146=Lieferanten einsehen +Permission147=Statistiken einsehen Permission151=Daueraufträge einsehen Permission152=Dauerauftragsanträge erstellen/bearbeiten Permission153=Dauerauftragsbelege einsehen +Permission153=Dauerauftragsbelege übertragen +Permission154=Dauerauftragsbelege kreditieren/ablehnen Permission161=Veträge einsehen Permission162=Verträge erstellen/bearbeiten Permission163=Dienstleistungen in Verträgen aktivieren Permission164=Dienstleistungen in Verträgen deaktivieren +Permission165=Verträge löschen +Permission171=Reisen lesen +Permission172=Reisen erstellen/bearbeiten +Permission173=Reisen löschen +Permission178=Reisen exportieren Permission180=Lieferanten einsehen Permission181=Lieferantenbestellungen einsehen Permission182=Lieferantenbestellungen erstellen/bearbeiten @@ -386,6 +521,19 @@ Permission185=Lieferantenbestellungen übermitteln Permission186=Lieferantenbestellungen empfangen Permission187=Lieferantenbestellungen schließen Permission188=Lieferantenbestellungen verwerfen +Permission192=Leitungen erstellen +Permission193=Leitungen abbrechen +Permission194=Read the bandwith lines +Permission202=ADSL Verbindungen erstellen +Permission203=Order connections orders +Permission204=Order connections +Permission205=Verbindungen verwalten +Permission206=Verbindungen lesen +Permission211=Telefonie lesen +Permission212=Order lines +Permission213=Leitung aktivieren +Permission214=Telefonie einrichten +Permission215=Anbieter einrichten Permission221=E-Mail-Kampagnen einsehen Permission222=E-Mail-Kampagnen erstellen/bearbeiten (Thema, Empfänger, ...) Permission223=E-Mail-Kampagnen freigeben (erlaubt das Senden) @@ -400,30 +548,53 @@ Permission242=Kategorien erstellen/bearbeiten Permission243=Kategorien löschen Permission244=Inhalte versteckter Kategorien einsehen Permission251=Andere Benutzer und Gruppen einsehen -Permission252=Andere Benutzer und Gruppen erstellen/bearbeiten (inkl. Rechteverwaltung) -Permission253=Passwörter anderer Benutzer ändern -Permission254=Andere Benutzer löschen oder deaktivieren -Permission255=Eigene Benutzereinstellungen setzen/bearbeiten -Permission256=Eigenes Passwort ändern -Permission261=Zugang zum Vertriebsmenü +PermissionAdvanced251=Andere Benutzer einsehen +Permission252=Berechtigungen andere Benutzer einsehen +Permission253=Andere Benutzer und Gruppen erstellen/bearbeiten (inkl. Rechteverwaltung) +PermissionAdvanced253=Andere interne/externe Benutzer und Gruppen erstellen/bearbeiten (inkl. Rechteverwaltung) +Permission254=Nur externe Benutzer erstellen/bearbeiten +Permission255=Andere Passwörter ändern +Permission256=Andere Benutzer löschen oder deaktivieren Permission262=Zugang auf alle Partner erweitern (nicht nur diejenigen im Zusammenhang mit Benutzer). Nicht wirksam für externe Nutzer (immer auf sich selbst beschränkt). +Permission271=Read CA +Permission272=Read invoices +Permission273=Issue invoices Permission281=Kontakte einsehen Permission282=Kontakte erstellen/bearbeiten Permission283=Kontakte löschen Permission286=Kontakte exportieren +Permission291=Tarife lesen +Permission292=Berechtigungen der Tarife einstellen +Permission293=Kundentarife ändern Permission300=Barcodes einsehen Permission301=Barcodes erstellen/bearbeiten Permission302=Barcodes löschen +Permission311=Leistungen lesen +Permission312=Leistungen einem Vertrag zuordnen Permission331=Lesezeichen einsehen Permission332=Lesezeichen erstellen/bearbeiten Permission333=Lesezeichen löschen +Permission341=Eigene Berechtigungen lesen +Permission342=Eigene Benutzerinformationen erstellen/bearbeiten +Permission343=Eigenes Passwort ändern +Permission344=Eigene Berechtigungen bearbeiten +Permission351=Gruppen einsehen +Permission352=Gruppenberechtigungen einsehen +Permission353=Gruppen erstellen/bearbeiten +Permission354=Gruppen löschen oder deaktivieren +Permission358=Benutzer exportieren Permission401=Rabatte einsehen Permission402=Rabatte erstellen/bearbeiten Permission403=Rabatte freigeben Permission404=Rabatte löschen -Permission700=Spenden einsehen -Permission701=Spenden erstellen/bearbeiten -Permission702=Spenden löschen +Permission531=Leistungen einsehen +Permission532=Leistungen erstellen/bearbeiten +Permission534=Leistungen löschen +Permission536=Versteckte Leistungen einsehen/verwalten +Permission538=Leistungen exportieren +Permission701=Spenden einsehen +Permission702=Spenden erstellen/bearbeiten +Permission703=Spenden löschen Permission1001=Warenbestände einsehen Permission1002=Warenbestände erstellen/bearbeiten Permission1003=Warenbestände löschen @@ -447,15 +618,24 @@ Permission1231=Lieferantenrechnungen einsehen Permission1232=Lieferantenrechnungen erstellen/bearbeiten Permission1233=Lieferantenrechnungen freigeben Permission1234=Lieferantenrechnungen löschen +Permission1235=Lieferantenrechnungen per E-Mail versenden Permission1236=Lieferantenrechnungen, -attribute und zahlungen exportieren +Permission1251=Massenimports von externen Daten ausführen (data load) Permission1321=Kundenrechnungen, -attribute und -zahlungen exportieren +Permission1421=Kundenbestellungen und Attribute exportieren Permission2401=Maßnahmen (Termine/Aufgaben) in Verbindung mit eigenem Konto einsehen Permission2402=Maßnahmen (Termine/Aufgaben) in Verbindung mit eigenem Konto erstellen/bearbeiten -Permission2403=Maßnahmen (Termine/Aufgaben) Anderer einsehen -Permission2405=Maßnahmen (Termine/Aufgaben) Anderer erstellen/bearbeiten -Permission2500=Dokumente einsehen -Permission2501=Dokumente hochladen oder löschen +Permission2403=Maßnahmen (Termine/Aufgaben) in Verbindung mit eigenem Konto löschen +Permission2411=Maßnahmen (Termine/Aufgaben) in Anderer einsehen +Permission2412=Maßnahmen (Termine/Aufgaben) in Anderer erstellen/bearbeiten +Permission2413=Maßnahmen (Termine/Aufgaben) in Anderer löschen +Permission2501=Dokumente herunterladen oder einsehen +Permission2502=Dokumente herunterladen +Permission2503=Dokumente bestätigen oder löschen Permission2515=Dokumentverzeichnisse verwalten +Permission50001=Kassenmodul verwenden +Permission50201= Transaktionen einsehen +Permission50202= Transaktionen importieren DictionnaryCompanyType=Art des Unternehmens DictionnaryCompanyJuridicalType=Rechtsform DictionnaryProspectLevel=Geschäftsaussicht @@ -473,18 +653,37 @@ DictionnaryTypeContact=Kontaktarten DictionnaryEcotaxe=Ökosteuern (WEEE) DictionnaryPaperFormat=Papierformate DictionnaryFees=Gebührenarten +DictionnarySendingMethods=Versandarten +DictionnaryStaff=Mitarbeiter +DictionnaryAvailability=Lieferverzug +DictionnaryOrderMethods=Bestellmethoden +DictionnarySource=Quelle der Angebote/Bestellungen SetupSaved=Setup gespeichert BackToModuleList=Zurück zur Modulübersicht BackToDictionnaryList=Zurück zur Wörterbuchübersicht -VATReceivedOnly=Nur Mehtwertsteuererhalt +VATReceivedOnly=Nur Mehrwertsteuererhalt VATManagement=MwSt-Verwaltung VATIsUsedDesc=Der standardmäßige MwSt.-Satz für die Erstellung von Leads, Rechnungen, Bestellungen, etc. folgt der folgenden, aktiven Regel:
Ist der Verkäufer mehrwertsteuerpflichtig, ist die MwSt. standardmäßig 0. Ende der Regel.
Ist das Verkaufsland gleich dem Einkaufsland, ist die MwSt. standardmäßig die MwSt. des Produkts im Verkaufsland. Ende der Regel.
Sind Verkäufer und Käufer beide aus Europäischen Mitgliedsstaaten und die Produkte physisch transportfähig (Auto, Schiff, Flugzeug), ist die MwSt. standardmäßig 0. (Die MwSt. sollte durch den Käufer beim eigenen Zollamt entrichtet werden, nicht durch den Verkäufer. Ende der Regel.
Sind Verkäufer und Käufer beide aus Europäischen Mitgliedsstaaten, der Käufer jedoch kein Unternehmen so ist die MwSt. standardmäßig die MwSt. des verkauften Produkts. Ende der Regel.
Sind Verkäufer und Käufer beide Unternehmen im Europäischen Gemeinschaftsraum, so ist die MwSt. standardmäßig 0. Ende der Regel.
Trifft keine der obigen Regeln zu, ist die MwSt. standardmäßig 0. -VATIsNotUsedDesc=Die vorgeschlagene MwSt. ist standardmäßig 0 für alle Fälle wie Stiftungen, Einzelpersonen oder Kleinunternehmen- -VATIsUsedExampleFR=In France, it means companies or organisations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. -VATIsNotUsedExampleFR=In France, it means associations that are non VAT declared or companies, organisations or liberal professions that have chosen the micro enterprise fiscal system (VAT in franchise) and paid a franchise VAT without any VAT declaration. This choice will display the reference "Non applicable VAT - art-293B of CGI" on invoices. +VATIsNotUsedDesc=Die vorgeschlagene MwSt. ist standardmäßig 0 für alle Fälle wie Stiftungen, Einzelpersonen oder Kleinunternehmen. +VATIsUsedExampleFR=- +VATIsNotUsedExampleFR=- +##### Local Taxes ##### +LocalTax1ManagementES=RE Management +LocalTax1IsUsedDescES=Die RE Rate standardmäßig beim Erstellen Aussichten, Rechnungen, Bestellungen etc. folgen die aktive Standard-Regel:
Wenn te Käufer ist nicht unterworfen RE, RE standardmäßig = 0 ist. Ende der Regel.
Ist der Käufer unterzogen, um dann die RE RE standardmäßig. Ende der Regel.
+LocalTax1IsNotUsedDescES=Standardmäßig werden die vorgeschlagenen RE 0 ist. Ende der Regel. +LocalTax1IsUsedExampleES=In Spanien sind sie Profis unterliegen bestimmten Abschnitten der spanischen IAE. +LocalTax1IsNotUsedExampleES=In Spanien sind sie professionelle und Gesellschaften und vorbehaltlich bestimmter Abschnitte der spanischen IAE. +LocalTax2ManagementES=IRPF Management +LocalTax2IsUsedDescES=Die RE Rate standardmäßig beim Erstellen Aussichten, Rechnungen, Bestellungen etc. folgen die aktive Standard-Regel:
Ist der Verkäufer nicht zu IRPF ausgesetzt, dann durch IRPF default = 0. Ende der Regel.
Ist der Verkäufer zur IRPF dann der Einkommenssteuer unterworfen standardmäßig. Ende der Regel.
+LocalTax2IsNotUsedDescES=Standardmäßig werden die vorgeschlagenen IRPF 0 ist. Ende der Regel. +LocalTax2IsUsedExampleES=In Spanien, Freiberufler und unabhängigen Fachleuten, die ihre Dienstleistungen und Unternehmen, die das Steuersystem von Modulen gewählt haben. +LocalTax2IsNotUsedExampleES=In Spanien sind sie bussines nicht der Steuer unterliegen System von Modulen. LabelUsedByDefault=Standardmäßig verwendete Bezeichnung falls keine Übersetzung vorhanden ist LabelOnDocuments=Bezeichnung auf Dokumenten NbOfDays=Anzahl der Tage + +### SNE BIS HIER ### + AtEndOfMonth=Am Ende des Monats Offset=Wertsprung AlwaysActive=Immer aktiv @@ -565,8 +764,8 @@ DelaysOfToleranceActionsToDo=Verzögerungstoleranz (in Tagen) vor Benachrichtigu DelaysOfToleranceOrdersToProcess=Verzögerungstoleranz (in Tagen) vor Benachrichtigung noch nicht bearbeitete Aufträge DelaysOfTolerancePropalsToClose=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über abzuschließende Angebote DelaysOfTolerancePropalsToBill=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über nicht in Rechnung gestellte Angebote -DelaysOfToleranceNotActivatedServices=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über zu aktivierende Services -DelaysOfToleranceRunningServices=Verzögerungstoleranz (in Tagen) vor Benachrichtigung zu überfälligen Services +DelaysOfToleranceNotActivatedServices=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über zu aktivierende Leistungen +DelaysOfToleranceRunningServices=Verzögerungstoleranz (in Tagen) vor Benachrichtigung zu überfälligen Leistungen DelaysOfToleranceSupplierBillsToPay=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über unbezahlte Lieferantenrechnungen DelaysOfToleranceTransactionsToConciliate=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über Bankkontenabgleich DelaysOfToleranceChequesToDeposit=Verzögerungstoleranz (in Tagen) vor der Benachrichtigung über einzulösende Schecks @@ -693,7 +892,7 @@ WatermarkOnDraftInterventionCards=Wasserzeichen auf Intervention Karte Dokumente ClickToDialSetup=Click-to-Dial-Moduleinstellungen ClickToDialUrlDesc=Definieren Sie hier die URL, die bei einem Klick auf das Telefonsymbol aufgerufen werden soll. In dieser URL können Sie Tags verwenden
%%1$s wird durch die Telefonnummer des Angerufenen ersetzt
%%2$s wird durch die Telefonnummer des Anrufers (Ihre) ersetzt
%%3$s wird durch Ihren Benutzernamen für Click-to-Dial ersetzt (siehe Benutzerdatenblatt)
%%4$s wird durch Ihr Click-to-Dial-Passwort ersetzt (siehe Benutzerdatenblatt). Bookmark4uSetup=Bookmark4u Moduleinstellungen -InterventionsSetup=Eingriffsmoduleinstellungen +InterventionsSetup=Servicemoduleinstellungen MemberMainOptions=Haupteinstellungen AddSubscriptionIntoAccount=Bei Einrichtung eines neuen Abonnements automatisch Zahlungserstellung im Bankmodul vorschlagen AdherentMailRequired=Für das Anlegen eines neuen Mitglieds ist eine E-Mail-Adresse erforderlich @@ -934,80 +1133,16 @@ CashDeskThirdPartyForSell=Standardpartner für Kassenverkäufe (erforderlich) CashDeskBankAccountForSell=Standard-Bargeldkonto für Kassenverkäufe (erforderlich) CashDeskIdWareHouse=Standard-Warenlager für Kassenverkauf (optional) -SessionSavePath=Pfad für Sitzungsdatenspeicherung -IfModuleEnabled=Anmerkung: Ist nur wirksam wenn Modul %s aktiviert ist -RemoveLock=Entfernen Sie die Datei %s falls vorhanden, um das Aktualisierungs-Tool auszuführen -RestoreLock=Ersetzen Sie die Datei %s mit einer Datei ohne Schreibberechtigung um jegliche Nutzung des Aktualisierungs-Tools zu verhindern. -ClientHour=Uhrzeit (Benutzer) -CompanyTZ=Unternehmenszeitzone (Hauptunternehmen) -CompanyHour=Unternehmenszeit (Hauptunternehmen) -PurgeDeleteLogFile=Löschen der Protokolldatei %s des Systemprotokollmoduls (kein Risiko des Datenverlusts) -OfficialWiki=Dolibarr Wiki -OfficialDemo=Dolibarr Offizielle Demo -ForDocumentationSeeWiki=Für Benutzer-und Entwickler-Dokumentation (DOC, ...), FAQs
Werfen Sie einen Blick auf die Dolibarr Wiki:
%s -ForAnswersSeeForum=Für alle anderen Fragen / Hilfe, können Sie die Dolibarr Forum:
%s -HelpCenterDesc1=In diesem Bereich können Sie sich ein Hilfe-Support-Service auf Dolibarr. -HelpCenterDesc2=Ein Teil dieses Dienstes sind nur in Englisch verfügbar. -MAIN_MAIL_SENDMODE=Methode zum Senden von E-Mails -MAIN_MAIL_SMTPS_ID=SMTP ID, wenn Authentifizierung erforderlich -MAIN_MAIL_SMTPS_PW=SMTP Passwort, wenn Authentifizierung erforderlich -GenericMaskCodes2=(cccc) den Client-Code
() cccc000 den Client-Code auf n Zeichen ist, gefolgt von einer Client-ref Zähler ohne Offset-und zeroized mit der globalen Zähler.
-GenericMaskCodes3=Alle anderen Zeichen in der Maske bleiben.
Leerzeichen sind nicht zulässig.
-GenericMaskCodes4a=Beispiel auf der 99. %s des Dritten thecompany Geschehen 2007-01-31:
-GenericMaskCodes4b=Beispiel für Dritte erstellt am 2007-03-01:
-GenericMaskCodes5=ABC (yy) (mm) - (000000) wird ABC0701-000099
(0000 +100)-ZZZ / tt () / XXX wird 0199-ZZZ/31/XXX -SeeWikiForAllTeam=Werfen Sie einen Blick auf die Wiki-Seite für eine vollständige Liste aller Akteure und deren Organisationen -UseACacheDelay=Verzögerung für den Export der Cache-Antwort in Sekunden (0 oder leer für kein Caching) -DisableLinkToHelpCenter=Link mit "Benötigen Sie Hilfe oder Unterstützung" auf der Anmeldeseite ausblenden -DisableLinkToHelp=Link zur "%s Online-Hilfe" auf der linken Seite ausblenden -AddCRIfTooLong=Kein automatischer Zeilenumbruch. Entsprechend müssen Sie, falls die Länge Ihrer Zeilen die Dokumentenbreite übersteigt, manuelle Zeilenschaltungen im Textbereich einfügen. -ModuleDisabled=Modul deaktiviert -ModuleDisabledSoNoEvent=Modul deaktiviert und Eintrag deshalb nie erstellt -ConfirmPurge=Möchten Sie die Löschung wirklich durchführen?
Dies wird alle Ihre Dateien unwiderbringlich entfernen (ECM-Dateien, Dateien, ...)! -Module51Name=Postwurfsendungen -Module51Desc=Verwaltung von Postwurf-/Massensendungen -Module5000Name=Mandantenfähigkeit -Module5000Desc=Ermöglicht Ihnen die Verwaltung mehrerer Firmen -Module10000Name=PayBox -Module10000Desc=Über dieses Modul können Sie online Kreditkartenzahlungen entgegennehmen -Permission28=Angebote exportieren -Permission38=Produkte exportieren -Permission67=Eingriffe exportieren -Permission94=Sozialbeiträge exportieren -Permission146=Lieferanten einsehen -Permission147=Statistiken einsehen -Permission170=Reise- und Fahrtspesen einsehen -Permission171=Reisen erstellen/bearbeiten -Permission172=Reisen löschen -Permission178=Reisen exportieren -Permission192=Leitungen anlegen -Permission193=Leitungen verwerfen -Permission194=Breitbandverbindungen einsehen -Permission202=ADSL-Anschlüsse anlegen -Permission203=Anschlussbestellungen übermitteln -Permission204=Anschlussbestellungen -Permission205=Anschlüsse verwalten -Permission206=Anschlüsse einsehen -Permission211=Telefonie einsehen -Permission212=Leitungen bestellen -Permission213=Leitungen aktivieren -Permission214=Telefonie einstellen -Permission215=Anbieter einstellen -Permission258=Benutzer exportieren -Permission271=CA einsehen -Permission272=Rechnungen einsehen -Permission273=Rechnungen erstellen -Permission291=Tarife einsehen -Permission292=Festlegen von Berechtigungen für die Tarife -Permission293=Kundentarife ändern -Permission311=Services einsehen -Permission312=Services Verträgen zuweisen -Permission531=Services einsehen -Permission532=Services erstellen/bearbeiten -Permission534=Services löschen -Permission538=Services exportieren -Permission1251=Massenimport von Daten in die Datenbank (Systemlast!) -Permission1421=Kundenbestellungen und -attribute exportieren + + + + + + + + + + DictionnarySendingMethods=Versandarten SetupDescription5=Andere Einträge verwalten optionale Parameter. BackupDesc=Um eine vollständige Systemsicherung durchzuführen müssen Sie: @@ -1042,65 +1177,37 @@ BankSetupModule=Bankmoduleinstellungen FreeLegalTextOnChequeReceipts=Freier Rechtstext für Scheckbelege MultiCompanySetup=Multi-Company-Moduleinstellungen -UseSearchToSelectCompany=Suchfeld statt Listenansicht für Partnerauswahl verwenden -ProtectAndEncryptPdfFilesDesc=Die Aktivierung des PDF-Dokumentschutzes erhält die Lesbarkeit und Druckfähigkeit des Dokuments, Bearbeitung und Kopien sind jedoch nicht mehr möglich. Bitte beachten Sie, dass über die Aktivierung dieser Funktion auch die Stapelverarbeitung von PDF-Dokumenten (z.B. aller offenen Rechnungen) nicht mehr funktioniert + + DelaysOfToleranceCustomerBillsUnpaid=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über unbezahlte Kundenrechnungen UseSearchToSelectProduct=Suchfeld statt Listenansicht für die Produktauswahl verwenden -SessionSaveHandler=Handler für Sitzungsspeicherung -PurgeSessions=Sitzungsdaten löschen -ConfirmPurgeSessions=Wollen Sie wirklich alle Sitzungsdaten löschen? Damit wird zugleich jeder Benutzer (außer Ihnen) vom System abgemeldet. -NoSessionListWithThisHandler=Anzeige der aktiven Sitzungen mit Ihrer PHP-Konfiguration nicht möglich. -LockNewSessions=Keine neuen Sitzungen zulassen -ConfirmLockNewSessions=Möchten Sie wirklich alle Sitzungen bis auf Ihre eigene blocken? Nur Benutzer %s kann danach noch eine Verbindung aufbauen. -UnlockNewSessions=Sperrung neuer Sitzungen aufheben -YourSession=Ihre Sitzung -Sessions=Sitzungen -NoSessionFound=Ihre PHP -Konfiguration scheint keine Liste aktiver Sitzungen zuzulassen. Eventuell ist die Speicherung im Verzeichnis (%s) aktiviert und fehlerhafte Dateizugriffsberechtigungen blockieren den Zugriff (z.B. open_basedir-Beschränkungen). -FormToTestFileUploadForm=Formular für das Testen von Datei-Uplads (je nach Konfiguration) + + + PreviewNotAvailable=Vorschau nicht verfügbar -AntiVirusCommand=Vollständiger Pfad zum installierten Virenschutz -AntiVirusCommandExample=Beispiel für ClamWin: c:\Program Files (x86)\ClamWin\bin\clamscan.exe
Beispiel für ClamAV: /usr/bin/clamscan -AntiVirusParam=Weitere Parameter auf der Kommandozeile -AntiVirusParamExample=Beispiel für ClamWin: --database="C:\Program Files (x86)\ClamWin\lib" -YouCanDownloadBackupFile=Sie können die erstellte Sicherungsdatei jetzt herunterladen -IgnoreDuplicateRecords=Datensatzduplikate ignorieren (INSERT IGNORE) + + + InstrucToEncodePass=Um das Passwort in der Konfigurationsdatei conf.php zu verschlüsseln, ersetzen Sie die Zeile
$dolibarr_main_db_pass="..."
durch
$dolibarr_main_db_pass="crypted:%s" InstrucToClearPass=Um das Passwort unverschlüsselt (Klartext) in der Konfigurationsdatei conf.php zu speichern, ersetzen Sie die Zeile
$dolibarr_main_db_pass="crypted:..."
durch
$dolibarr_main_db_pass="%s" ProtectAndEncryptPdfFiles=PDF-Dokumentschutz aktivieren (Die Aktivierung ist nicht empfohlen, weil dadurch die Stapelerzeugung von PDFs nicht mehr funktioniert) -MAIN_MAIL_EMAIL_TLS=TLS (SSL)-Verschlüsselung verwenden -SubmitTranslation=Sollte die Übersetzung für eine Sprache nicht vollständig sein oder Fehler beinhalten, können Sie die entsprechenden Sprachdateien im Verzeichnis langs/%s bearbeiten und anschließend Ihre Änderungen mit der Entwicklergemeinschaft auf www.dolibarr.org teilen. -FindPackageFromWebSite=Finden Sie ein Paket, das die gewünschten Funktionen beinhaltet (zum Beispiel auf der offiziellen Website %s). -MinLength=Mindestlänge -LanguageFilesCachedIntoShmopSharedMemory=.lang-Sprachdateien in gemeinsamen Cache geladen -ExamplesWithCurrentSetup=Beispiele mit der derzeitigen Systemkonfiguration -ListOfDirectories=Liste der OpenDocument-Vorlagenverzeichnisse -ListOfDirectoriesForModelGenODT=Liste der Verzeichnisse mit Vorlagendateien mit OpenDocument-Format.

Fügen Sie hier den vollständigen Pfad der Verzeichnisse ein.
Trennen Sie jedes Verzeichnis mit einer Zeilenschaltung
Verzeichnisse des ECM-Moduls fügen Sie z.B. so ein DOL_DATA_ROOT/ecm/yourdirectoryname.

Dateien in diesen Verzeichnissen müssen auf .odt enden. -NumberOfModelFilesFound=Anzahl der in diesen Verzeichnissen gefundenen .odt-Dokumentvorlagen -ExampleOfDirectoriesForModelGen=Beispiele für Syntax:
c:\mydir
/Home/mydir
DOL_DATA_ROOT/ecm/ecmdir -FirstnameNamePosition=Reihenfolge von Vor- und Nachname -Module23Name=Energie -Module23Desc=Überwachung des Energieverbrauchs -Module100Name=Externe Website -Module100Desc=Erlaubt die Einbindung einer externen Website in die Menüs von dolibarr und die Anzeige der Seite innerhalb eines Frames -Module2000Name=FCKeditor -Module2000Desc=WYSIWYG-Editor -Module2600Name=WebServices -Module2600Desc=Aktivieren Sie Verwendung von Webservices -Module2700Name=Gravatar -Module2700Desc=Verwenden Sie den online Gravatar-Dienst (www.gravatar.com) für die Anzeige von Benutzer- und Mitgliederbildern (Zuordnung über E-Mail-Adressen). Hierfür benötigen Sie eine aktive Internetverbindung -Module2900Name=GeoIPMaxmind -Module2900Desc=GeoIP Maxmind Konvertierung -Module13452Name=SpeedFinder -Module13452Desc=AJAX-basierte Suchmaschine für die rasche Zuordnung von Namen zu (Teilen) einer Telefonnummer (innerhalb von 2 Sekunden) -Permission141=Aufgaben einsehen -Permission142=Aufgaben erstellen/bearbeiten -Permission144=Aufgaben löschen -Permission536=Versteckte Services einsehen/verwalten + + + + + + + + + + + +Permission536=Versteckte Leistungen einsehen/verwalten Permission2411=Maßnahmen (Termine oder Aufgaben) Anderer einsehen Permission2412=Maßnahmen (Termine oder Aufgaben) Anderer erstellen/bearbeiten Permission2413=Maßnahmen (Termine oder Aufgaben) Anderer löschen -DictionnaryStaff=Mitarbeiter + LocalTax1ManagementES=RE Management LocalTax1IsUsedDescES=Die RE Rate standardmäßig beim Erstellen Aussichten, Rechnungen, Bestellungen etc. folgen die aktive Standard-Regel:
Wenn te Käufer ist nicht unterworfen RE, RE standardmäßig = 0 ist. Ende der Regel.
Ist der Käufer unterzogen, um dann die RE RE standardmäßig. Ende der Regel.
LocalTax1IsNotUsedDescES=Standardmäßig werden die vorgeschlagenen RE 0 ist. Ende der Regel. @@ -1157,15 +1264,27 @@ ProjectsNumberingModules=Projektnumerierungsmodul ProjectsSetup=Projekteinstellungenmodul ProjectsModelModule=Projektvorlagenmodul -ModulesMarketPlaceDesc=Hier finden Sie weitere Module auf externen Web-Sites -ModulesMarketPlaces=Sie können zusätzliche Module im Web finden... -DoliStoreDesc=DoliStore, der offizielle Marktplatz für dolibarr Module/Erweiterungen -WebSiteDesc=Website-Anbieter für Ihre Suche nach weiteren Modulen -URL=Link -OfficialMarketPlace=Offizieller Marktplatz für Module/Erweiterungen -MAIN_MAIL_AUTOCOPY_TO=Senden Sie automatisch eine Blindkopie aller gesendeten Mails an -FreeLegalTextOnInterventions=Freier Rechtstext für Eingriffe + + +FreeLegalTextOnInterventions=Freier Rechtstext für Services +ModulesJob=Geschäfttypenmodule +ConfigFileIsInReadOnly=Die Konfigurationsdatei conf.php kann nur gelesen werden, bitte überprüfen Sie die Berechtigungen. +OfficialWikiFr=Französisches Wikiei mit Maxmind IP to Country Übersetzung.
Beispiel: / usr / local / share / GeoIP / GeoIP.dat +NoteOnPathLocation=Bitte beachten Sie, dass Ihre IP-Länder-Datei in einem von PHP lesbaren Verzeichnis liegen muss (Überprüfen Sie Ihre PHP open_basedir-Einstellungen und die Dateisystem-Berechtigungen). +YouCanDownloadFreeDatFileTo=Eine kostenlose Demo-Version der Maxmind-GeoIP Datei finden Sie hier: %s +YouCanDownloadAdvancedDatFileTo=Eine vollständigere Version mit Updates der Maxmind-GeoIP Datei können Sie hier herunterladen: %s +TestGeoIPResult=Test einer Umwandlung IP -> Land +##### NumberWords ##### +NumberWordsSetup=NumberWords Moduleinstellungen +DescNumberWords=Dieses Modul bietet Funktionen zur Konvertierung von Zahlen und Beträgen in formatierte Zeichenketten. Es ersetzt auch die folgende Zeichenfolgen __TOTAL_TTC_WORDS__, __TOTAL_HT_WORDS__ oder __TOTAL_VAT_WORDS__ durch 'Bruttosumme', 'Nettosumme' oder 'Steuersumme' in allen verwendeten Texten (freier Text auf Rechnungen, ...) +##### Projects ##### +ProjectsNumberingModules=Projektnumerierungsmodul +ProjectsSetup=Projekteinstellungenmodul +ProjectsModelModule=Projektvorlagenmodul + +MAIN_NOT_INSTALLED=Setup wird ausgeführt +MAIN_FEATURES_LEVEL=Level der freigeschaltenen Funktionen(0=nur stable, 1=stable+experimentell, 2=stable+experimentell+Entwicklung) // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). // Reference language: en_US -> de_DE WebUserGroup=Web-Server-Benutzer / Gruppe @@ -1286,3 +1405,14 @@ BankOrderESDesc=Spanisch Anzeigereihenfolge MailmanSpipSetup=Mailman und Spip Modul-Setup SuppliersInvoiceModel=Vollständige Vorlage der Lieferantenrechnung (logo. ..) // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:05:18). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +VersionRecommanded=Empfohlene +PostgreSqlExportParameters=PostgreSQL Export-Parameter +OfficialWebHostingService=Offizielle Web-Hosting-Service (Cloud Hosting) +AlphaNumOnlyCharsAndNoSpace=nur alphanumericals Zeichen ohne Leerzeichen +TranslationSetup=Configuration de la traduction +TranslationDesc=Wahl der Sprache auf dem Bildschirm sichtbar verändert werden kann:
* Weltweit aus dem Menü Start - Einstellungen - Anzeige
* Für die Benutzer nur von Benutzer-Registerkarte Anzeige von Benutzer-Karte (klicken Sie auf Login-Bildschirm auf der Oberseite). +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:38). diff --git a/htdocs/langs/de_DE/agenda.lang b/htdocs/langs/de_DE/agenda.lang index 8d881452593..2faa3193062 100644 --- a/htdocs/langs/de_DE/agenda.lang +++ b/htdocs/langs/de_DE/agenda.lang @@ -16,6 +16,7 @@ DoneBy=Erldedigt von Events=Veranstaltungen ListOfActions=Veranstaltungsliste Location=Ort +EventOnFullDay=Ganztägig SearchAnAction=Suche Maßnahme / Aufgabe MenuToDoActions=Alle unvollständigen Maßnahmen MenuDoneActions=Alle abgeschlossenen Maßnahmen @@ -27,16 +28,28 @@ ActionsToDoBy=Maßnahmen zugewiesen an ActionsDoneBy=Maßnahmen erledigt von AllMyActions=Alle meine Maßnahmen / Aufgaben AllActions=Alle Maßnahmen / Aufgaben -ViewList=Liste anzeigen -ViewCal=Kalender anzeigen +ViewList=Listenansicht +ViewCal=Kalenderansicht +ViewDay=Tagesansicht +ViewWeek=Wochenansicht ViewWithPredefinedFilters=Ansicht mit vordefinierten Filtern AutoActions=Automatische Befüllung der Tagesordnung AgendaAutoActionDesc=Definieren Sie hier Maßnahmen zur automatischen Übernahme in die Agenda. Ist nichts aktviert (Standard), umfasst die Agenda nur manuell eingetragene Maßnahmen. AgendaSetupOtherDesc=Diese Seite ermöglicht die Konfiguration anderer Parameter des Tagesordnungsmoduls. +AgendaExtSitesDesc=Diese Seite erlaubt Ihnen externe Kalender zu konfigurieren. ActionsEvents=Veranstaltungen zur automatischen Übernahme in die Agenda PropalValidatedInDolibarr=Angebot freigegeben InvoiceValidatedInDolibarr=Rechnung freigegeben -OrderValidatedInDolibarr=Bestellung freigegeben +InvoiceBackToDraftInDolibarr=Rechnung %s in den Entwurf Status zurücksetzen +OrderValidatedInDolibarr=Bestellung %s freigegeben +InterventionValidatedInDolibarr=Service %s freigegeben +ProposalSentByEMail=Angebot %s per E-Mail versendet +OrderSentByEMail=Kundenbestellung %s per E-Mail versendet +InvoiceSentByEMail=Kundenrechnung %s per E-Mail versendet +SupplierOrderSentByEMail=Lieferantenbestellung %s per E-Mail versendet +SupplierInvoiceSentByEMail=Lieferantenrechnung %s per E-Mail versendet +ShippingSentByEMail=Lieferschein %s per E-Mail versendet +InterventionSentByEMail=Service %s per E-Mail versendet NewCompanyToDolibarr=Partner erstellt DateActionPlannedStart=Geplantes Startdatum DateActionPlannedEnd=Geplantes Enddatum @@ -51,7 +64,15 @@ AgendaUrlOptions4=logint=%s begrenzt die Ausgabe auf von Benutzer %slogind=%s begrenzt die Ausgabe auf von Benutzer %s erledigte Maßnahmen. AgendaShowBirthdayEvents=Zeige Geburtstage AgendaHideBirthdayEvents=Geburtstage ausblenden -InterventionValidatedInDolibarr=Eingriff %s freigegeben +ExtSites=Externe Kalender + +# External Sites ical +ExtSites=Externe Kalender +ExtSitesEnableThisTool=Zeige externe Kalender in der Agenda +ExtSitesNbOfAgenda=Anzahl der Kalender +AgendaExtNb=Kalender Anzahl %s +ExtSiteUrlAgenda=URL Adresse um .ical Datei zu erreichen +ExtSiteNoLabel=Keine Beschreibung // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). diff --git a/htdocs/langs/de_DE/banks.lang b/htdocs/langs/de_DE/banks.lang index fc26dcdd5dc..89afc2ba3c1 100644 --- a/htdocs/langs/de_DE/banks.lang +++ b/htdocs/langs/de_DE/banks.lang @@ -18,7 +18,7 @@ BankAccount=Finanzkontenübersicht BankAccounts=Kontenübersicht AccountRef=Konto-Referenz AccountLabel=Kontobezeichnung -CashAccount=Kassa +CashAccount=Kasse CashAccounts=Kassen MainAccount=Hauptkonto CurrentAccount=Girokonto @@ -48,29 +48,28 @@ AccountStatements=Kontoauszüge LastAccountStatements=Letzte Kontoauszüge Rapprochement=Zahlungsabgleich IOMonthlyReporting=Monatsbericht -BankAccountDomiciliation=Konto-Adresse +BankAccountDomiciliation=BLZ +BankAccountCountry=Bankkonto Land BankAccountOwner=Kontoinhaber BankAccountOwnerAddress=Kontoinhaber-Adresse RIBControlError=Prüfung auf Vollständigkeit fehlgeschlagen. Informationen zu Bankkonto sind nicht vollständig oder falsch (Land überprüfen, Zahlen und IBAN). CreateAccount=Konto anlegen -StandingOrderToProcess=Daueraufträge zu bearbeiten -StandingOrderProcessed=Bearbeitete Daueraufträge NewAccount=Neues Konto NewBankAccount=Neues Bankkonto NewFinancialAccount=Neues Finanzkonto MenuNewFinancialAccount=Neues Finanzkonto NewCurrentAccount=Neues Girokonto NewSavingAccount=Neues Sparkonto -NewCashAccount=Neue Kassa +NewCashAccount=Neue Kasse EditFinancialAccount=Konto bearbeiten AccountSetup=Finanzielle Konten einrichten SearchBankMovement=Suche Bankbewegung Debts=Schulden -LabelBankCashAccount=Bank- oder Kassabezeichnung +LabelBankCashAccount=Bank- oder Kassebezeichnung AccountType=Kontoart BankType0=Sparkonto BankType1=Girokonto -BankType2=Kassa +BankType2=Kasse IfBankAccount=Falls Bankkonto AccountsArea=Finanzkonten AccountCard=Konto-Karte @@ -94,7 +93,7 @@ Conciliable=Ausgleichsfähig Conciliate=Ausgleichen Conciliation=Ausgleich ConciliationForAccount=Dieses Konto ausgleichen -IncludeClosedAccount=Geschlossene konten miteinbeziehen +IncludeClosedAccount=Geschlossene Konten miteinbeziehen OnlyOpenedAccount=Nur geöffnete Konten AccountToCredit=Konto für Gutschrift AccountToDebit=Zu belastendes Konto @@ -112,6 +111,7 @@ DateConciliating=Ausgleichsdatum BankLineConciliated=Transaktion ausgeglichen CustomerInvoicePayment=Kundenzahlung SupplierInvoicePayment=Lieferantenzahlung +WithdrawalPayment=Entnahme Zahlung SocialContributionPayment=Sozialbeitragszahlung FinancialAccountJournal=Finanzkonto-Journal BankTransfer=Kontentransfer @@ -127,6 +127,7 @@ DeleteCheckReceipt=Scheck löschen ConfirmDeleteCheckReceipt=Möchten Sie diesen Scheck wirklich löschen? BankChecks=Bankschecks BankChecksToReceipt=Schecks zur Einlösung +ShowCheckReceipt=Zeige Scheck Einzahlungsbeleg NumberOfCheques=Anzahl der Schecks DeleteTransaction=Transaktion löschen ConfirmDeleteTransaction=Möchten Sie diese Transaktion wirklich löschen? @@ -134,8 +135,10 @@ ThisWillAlsoDeleteBankRecord=Dies löscht auch erstellte Bankbewegungen BankMovements=Bankbewegungen CashBudget=Bargeldbestand PlannedTransactions=Geplante Transaktionen +Graph=Grafiken ExportDataset_banque_1=Bankbewegungen und Kontoauszug TransactionOnTheOtherAccount=Transaktion auf dem anderem Konto +TransactionWithOtherAccount=Konto Transaktion PaymentNumberUpdateSucceeded=Zahlungsnummer erfolgreich aktualisiert PaymentNumberUpdateFailed=Zahlungsnummer konnte nicht aktualisiert werden PaymentDateUpdateSucceeded=Zahlungsdatum erfolgreich aktualisiert @@ -144,8 +147,9 @@ BankTransactionLine=Banküberweisung AllAccounts=Alle Finanzkonten BackToAccount=Zurück zum Konto ShowAllAccounts=Alle Finanzkonten -BankAccountCountry=Bankkonto Land - +FutureTransaction=Zukünftige Transaktionen. +SelectChequeTransactionAndGenerate=Schecks auswählen/filtern um Sie in den Einzahlungsbeleg zu integrieren und auf "Erstellen" klicken. +Transactions=Transaktionen // START - Lines generated via autotranslator.php tool (2011-10-10 02:45:33). // Reference language: en_US -> de_DE diff --git a/htdocs/langs/de_DE/bills.lang b/htdocs/langs/de_DE/bills.lang index 393aeb97989..fa9f1f6097e 100644 --- a/htdocs/langs/de_DE/bills.lang +++ b/htdocs/langs/de_DE/bills.lang @@ -26,11 +26,15 @@ ReplacementInvoice=Ersatzrechnung ReplacedByInvoice=Ersetzt durch Rechnung %s ReplacementByInvoice=Ersetzt durch Rechnung CorrectInvoice=Korrigiere Rechnung %s +CorrectInvoice=Korrigiere Rechnung %s CorrectionInvoice=Rechungskorrektur +UsedByInvoice=Zur Bezahlung der Rechnung %s +ConsumedBy=Verbraucht von +NotConsumed=Nicht verbrauchte NoReplacableInvoice=Keine ersatzfähige Rechnungsnummer NoInvoiceToCorrect=Keine zu korrigierende Rechnung InvoiceHasAvoir=Korrigiert durch eine oder mehrere Rechnungen -CardBill=Rechnungskarte +CardBill=Übersicht PredefinedInvoices=Vordefinierte Rechnungen Invoice=Rechnung Invoices=Rechnungen @@ -63,6 +67,7 @@ PaymentConditions=Zahlungskonditionen PaymentConditionsShort=Konditionen PaymentAmount=Zahlungsbetrag PaymentHigherThanReminderToPay=Zahlungsbetrag übersteigt Zahlungserinnerung +HelpPaymentHigherThanReminderToPay=Achtung, die Zahlung eines oder mehrerer Rechnungen ist höher als der Rest zu zahlen.
Bearbeiten Sie Ihre Eingabe, sonst bestätigen und denken über die Schaffung einer Gutschrift von mehr als der für jede overpaid Rechnungen. ClassifyPaid=Als 'bezahlt' markieren ClassifyPaidPartially=Als 'teilweise bezahlt' markieren ClassifyCanceled=Als 'storniert' markieren @@ -73,7 +78,6 @@ DeleteBill=Lösche Rechnung SearchACustomerInvoice=Suche Kundenrechnung SearchASupplierInvoice=Suche Lieferantenrechnung CancelBill=Rechnung stornieren -SendByMail=Per E-Mail senden SendRemindByMail=Zahlungserinnerung per E-Mail senden DoPayment=Zahlung tätigen DoPaymentBack=Rückzahlung tätigen @@ -87,18 +91,22 @@ BillStatus=Rechnungsstatus BillStatusDraft=Entwurf (freizugeben) BillStatusPaid=Bezahlt BillStatusPaidBackOrConverted=Bezahlt oder in Rabatt umgewandelt +BillStatusConverted=Umgerechnet auf Rabatt BillStatusCanceled=Storniert BillStatusValidated=Freigegeben (zu bezahlen) BillStatusStarted=Begonnen BillStatusNotPaid=Offen +BillStatusClosedUnpaid=Geschlossen (unbezahlt) BillStatusClosedPaidPartially=Bezahlt (teilweise) BillShortStatusDraft=Entwurf BillShortStatusPaid=Bezahlt BillShortStatusPaidBackOrConverted=Bearbeitet +BillShortStatusConverted=Verarbeitete BillShortStatusCanceled=Storniert BillShortStatusValidated=Freigegeben BillShortStatusStarted=Begonnen BillShortStatusNotPaid=Offen +BillShortStatusClosedUnpaid=Geschlossen BillShortStatusClosedPaidPartially=Bezahlt (teilweise) PaymentStatusToValidShort=Freizugeben ErrorVATIntraNotConfigured=Intrakommunale UID-Nr. noch nicht definiert @@ -114,8 +122,8 @@ BillFrom=Von BillTo=An ActionsOnBill=Maßnahmen zu dieser Rechnung NewBill=Neue Rechnung -Pr�l�vements=Dauerauftrag -Pr�l�vements=Daueraufträge +Prélèvements=Dauerauftrag +Prélèvements=Daueraufträge LastBills=%s neueste Rechnungen LastCustomersBills=%s neueste Kundenrechnungen LastSuppliersBills=Letzte %s Lieferantenrechnungen @@ -124,10 +132,12 @@ OtherBills=Sonstige Rechnungen DraftBills=Rechnungsentwürfe CustomersDraftInvoices=Entwürfe Kundenrechnungen SuppliersDraftInvoices=Entwürfe Lieferantenrechnungen +Unpaid=Unbezahlte ConfirmDeleteBill=Möchten Sie diese Rechnung wirklich löschen? ConfirmValidateBill=Möchten Sie die Rechnung Nr. %s wirklich freigeben? ConfirmClassifyPaidBill=Sind Sie sicher, dass Sie ändern möchten Rechnung %s, um den Status bezahlt? ConfirmCancelBill=Möchten Sie die Rechnung %s wirklich stornieren? +ConfirmCancelBillQuestion=Warum wollen Sie klassifizieren diese Rechnung "aufgegeben"? ConfirmClassifyPaidPartially=Möchten Sie die Rechnung %s wirklich als 'teilweise bezahlt' markieren? ConfirmClassifyPaidPartiallyQuestion=Diese Rechnung wurde nicht vollständig bezahlt. Was sind Gründe für das Schließen dieser Rechnung? ConfirmClassifyPaidPartiallyReasonAvoir=Der offene Zahlbetrag ( %s %s) resultiert aus einem gewährten Skonto. Zur Korrektur der MwSt. lege ich eine Gutschrift an. @@ -136,6 +146,7 @@ ConfirmClassifyPaidPartiallyReasonDiscountVat=Der offene Zahlbetrag ( %s %s)< ConfirmClassifyPaidPartiallyReasonBadCustomer=Kundenverschulden ConfirmClassifyPaidPartiallyReasonProductReturned=Produkte teilweise retourniert ConfirmClassifyPaidPartiallyReasonOther=Betrag aus anderen Gründen uneinbringlich +ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=Diese Wahl ist möglich, wenn Sie Ihre Rechnung mit passenden Kommentar versehen sein. (Beispiel «Nur die Steuer entsprechend dem Preis, der gezahlt worden tatsächlich gibt Rechte an Abzug») ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=Diese Option steht Ihnen nur dann offen, falls Ihre Rechnung einen entsprechenden Vermerk enthält. (Beispiel: Nur der tatsächlich bezahlte Preis ist abzugsfähig) ConfirmClassifyPaidPartiallyReasonAvoirDesc=Mit dieser Wahl, wenn alle anderen nicht passt ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=Unter Kundenverschulden fallen vor allem Zahlungsunwilligkeit-, bzw. -unfähigkeit (Insolvenz). @@ -144,9 +155,10 @@ ConfirmClassifyPaidPartiallyReasonOtherDesc=Wählen Sie diese Option, falls kein ConfirmClassifyAbandonReasonOther=Andere ConfirmClassifyAbandonReasonOtherDesc=Wählen Sie diese Option in allen anderen Fällen, z.B. wenn Sie planen, eine Ersatzrechnung anzulegen. ConfirmCustomerPayment=Bestätigen Sie diesen Zahlungseingang für %s, %s? +ConfirmValidatePayment=Sind Sie sicher, dass Sie, um diese Zahlung? Keine Änderung kann erfolgen, wenn paiement ist validiert. ValidateBill=Rechnung freigeben NumberOfBills=Anzahl der Rechnungen -NumberOfBillsByMonthHT=Anzahl der Rechnungen/Monat (nach Steuern) +NumberOfBillsByMonth=Anzahl der Rechnungen pro Monat AmountOfBills=Anzahl der Rechnungen AmountOfBillsByMonth=Anzahl der Rechnungen/Monat ShowSocialContribution=Zeige Sozialbeitrag @@ -154,9 +166,12 @@ ShowBill=Zeige Rechnung ShowInvoice=Zeige Rechnung ShowInvoiceReplace=Zeige Ersatzrechnung ShowInvoiceAvoir=Zeige Gutschrift +ShowInvoiceDeposit=Show Anzahlung Rechnung ShowPayment=Zeige Zahlung File=Datei AlreadyPaid=Bereits bezahlt +AlreadyPaidNoCreditNotesNoDeposits=Bereits bezahlte (ohne Gutschriften und Einlagen) +Abandoned=Weggefallen RemainderToPay=Zu zahlender Restbetrag RemainderToTake=Einzuhebender Restbetrag AmountExpected=Höhe der Forderung @@ -181,11 +196,15 @@ DateEcheance=Zahlungsfrist (Limit) DateInvoice=Rechnungsdatum NoInvoice=Keine Rechnung ClassifyBill=Rechnung einordnen +NoSupplierBillsUnpaid=Nr. Lieferanten Rechnungen unbezahlt SupplierBillsToPay=Zu zahlende Lieferantenrechnungen +CustomerBillsUnpaid=Offene Kundenrechnungen +DispenseMontantLettres=Automatisch generierte Dokumente unterliegen nicht den Formvorschriften eines Briefs. DispenseMontantLettres=Automatisch generierte Dokumente unterliegen nicht den Formvorschriften eines Briefs. NonPercuRecuperable=Nicht erstattungsfähig SetConditions=Zahlungskonditionen einstellen SetMode=Definiere Zahlungsart +SetDate=Datum Billed=In Rechnung gestellt RepeatableInvoice=Rechnungsvorlage RepeatableInvoices=Rechnungsvorlagen @@ -205,13 +224,21 @@ Reductions=Ermäßigungen ReductionsShort=Ermäßigungen Discount=Rabatt Discounts=Rabatte +AddDiscount=Absoluten Rabatt erstellen +AddCreditNote=Gutschrift erstellen ShowDiscount=Zeige Rabatt RelativeDiscount=Relativer Rabatt GlobalDiscount=Rabattregel CreditNote=Gutschrift CreditNotes=Gutschriften +Deposit=Anzahlung +Deposits=Einlagen DiscountFromCreditNote=Rabatt aus Gutschrift %s +DiscountFromDeposit=Die Zahlungen aus Anzahlung Rechnung %s +AbsoluteDiscountUse=Diese Art von Krediten verwendet werden kann auf der Rechnung vor der Validierung +CreditNoteDepositUse=Rechnung muss validiert werden, um mit diesem König von Krediten NewGlobalDiscount=Neue Rabattregel +NewRelativeDiscount=Neue relative Rabatt NoteReason=Anmerkung/Begründung ReasonDiscount=Rabattgrund AddDiscount=Rabattregel hinzufügen @@ -223,6 +250,8 @@ BillAddress=Rechnungsanschrift HelpEscompte=Bei diesem Rabatt handelt es sich um einen Skonto. HelpAbandonBadCustomer=Dieser Betrag wurde aufgegeben (Kundennverschulden) ist als uneinbringlich zu werten. HelpAbandonOther=Dieser Betrag wurde auf Grund eines Fehlers aufgegeben (falsche Rechnung oder an falschen Kunden) +IdSocialContribution=Sozialbeitrags id +PaymentId=Zahlung id InvoiceId=Rechnungs ID InvoiceRef=Rechnungs Nr. InvoiceDateCreation=Datum der Rechnungserstellung @@ -232,12 +261,23 @@ InvoicePaid=Rechnung bezahlt PaymentNumber=Zahlung Nr. RemoveDiscount=Rabatt entfernen WatermarkOnDraftBill=Wasserzeichen auf den Rechnungsentwürfen (nichts, falls leer) +InvoiceNotChecked=Keine Rechnung ausgewählt CloneInvoice=Rechnung duplizieren -CloneMainAttributes=Duplikat mit den Haupteigenschaften ConfirmCloneInvoice=Möchten sie die Rechnung %s wirklich duplizieren? DisabledBecauseReplacedInvoice=Aktion unzulässig, da die betreffende Rechnung ersetzt wurde +DescTaxAndDividendsArea=Dieser Bereich stellt eine Übersicht über alle Zahlungen, die für die Steuer-oder Sozialabgaben. Nur Datensätze mit der Bezahlung während der festgesetzten Jahr hier. +NbOfPayments=Zahl der Zahlungen +SplitDiscount=Split Rabatt in zwei +ConfirmSplitDiscount=Sind Sie sicher, dass Sie teilen wollen diesen Rabatt von %s %s in 2 niedrigere Rabatte? +TypeAmountOfEachNewDiscount=Input für jeden der zwei Teile: +TotalOfTwoDiscountMustEqualsOriginal=Insgesamt zwei neue Rabatt muss gleich zu den ursprünglichen Betrag Rabatt. +ConfirmRemoveDiscount=Sind Sie sicher, dass Sie möchten, entfernen Sie diesen Rabatt? +RelatedBill=Ähnliche Rechnung +RelatedBills=Ähnliche Rechnungen + +# PaymentConditions PaymentConditionShortRECEP=Prompt -PaymentConditionRECEP=Prompt nach Rechnungserhalt +PaymentConditionRECEP=Sofort nach Erhalt PaymentConditionShort30D=30 Tage PaymentCondition30D=30 Tage netto PaymentConditionShort30DENDMONTH=30 Tage ab Monatsende @@ -246,6 +286,7 @@ PaymentConditionShort60D=60 Tage PaymentCondition60D=60 Tage PaymentConditionShort60DENDMONTH=60 Tage ab Monatsende PaymentCondition60DENDMONTH=60 Tage ab Ende des Monats +# PaymentType PaymentTypeVIR=Banküberweisung PaymentTypeShortVIR=Banküberweisung PaymentTypePRE=Bankeinzug/Lastschrift @@ -282,7 +323,6 @@ NetToBePaid=Netto Zahlbetrag PhoneNumber=Tel FullPhoneNumber=Telefon TeleFax=Fax - PrettyLittleSentence=Nehmen Sie die Höhe der Zahlungen, die aufgrund von Schecks, die in meinem Namen als Mitglied eines Accounting Association, die von der Steuerverwaltung. IntracommunityVATNumber=Innergemeinschaftliche MwSt-Nummer PaymentByChequeOrderedTo=Zahlung per Scheck zu zahlen sind, um %s an @@ -296,105 +336,46 @@ LawApplicationPart3=der Verkäufer bis zur vollständigen Einlösung des LawApplicationPart4=ihren Preis. LimitedLiabilityCompanyCapital=SARL mit einem Kapital von UseDiscount=Verwenden +UseCredit=Verwenden Sie diese Gutschrift UseCreditNoteInInvoicePayment=Reduzieren Sie die Zahlung mit dieser Gutschrift -MenuChequeDeposits=Schecks Einlagen +MenuChequeDeposits=Scheckeinlagen MenuCheques=Schecks -MenuChequesReceipts=Schecks Einnahmen -NewChequeDeposit=Neue Hinterlegung -ChequesReceipts=Schecks Einnahmen -ChequesArea=Schecks Einlagen Bereich -ChequeDeposits=Schecks Einlagen +MenuChequesReceipts=Scheckeinnahmen +NewChequeDeposit=Neuer Scheck +ChequesReceipts=Scheckeinnahmen +ChequesArea=Schecks +ChequeDeposits=Scheckeinlagen Cheques=Schecks CreditNoteConvertedIntoDiscount=Diese Gutschrift wurde in %s UsBillingContactAsIncoiveRecipientIfExist=Verwenden Sie Kunden Abrechnung Kontakt-Adresse anstelle von Dritten als Empfänger-Adresse für Rechnungen -Of=Von -PDFBerniqueDescription=Rechnung Modell Bernique -PDFBigorneauDescription=Rechnung Modell Bigorneau -PDFBulotDescription=Rechnung Modell Bulot -PDFCrabeDescription=Rechnung Modell Crabe. Eine vollständige Rechnung Modell (Support Mehrwertsteuer Option, Rabatte, Zahlungen Bedingungen, Logos, etc. ..) -PDFHuitreDescription=Rechnung Modell Huitre -PDFOursinDescription=Rechnung Modell oursin -PDFTourteauDescription=Rechnung Modell Tourteau -TerreNumRefModelDesc1=Zurück NUMERO mit Format %syymm-nnnn für Standardrechnungen und syymm%-nnnn für Gutschriften, wo ist JJ Jahr, MM Monat und nnnn ist eine Folge ohne Pause und keine Rückkehr auf 0 -TerreNumRefModelError=Eine Rechnung, beginnend mit $ syymm existiert bereits und ist nicht kompatibel mit diesem Modell der Reihe. Entfernen oder umbenennen, um dieses Modul. -OrionNumRefModelDesc1=Gibt die Anzahl der unter Format FAYYNNNNN wenn JJ das Jahr und die Erhöhung der Zahl NNNNN ab 1. -OrionNumRefModelDesc2=Das Jahr ist um 1 ohne eine Initialisierungssequenz auf Null zu Beginn des Geschäftsjahres. -OrionNumRefModelDesc3=Definieren Sie die Variable SOCIETE_FISCAL_MONTH_START mit dem Monat zu Beginn des Geschäftsjahres an, Beispiel: 9 für September. -OrionNumRefModelDesc4=In diesem Beispiel werden wir auf den 1. September 2006 eine Rechnung Namen FA700354. -TitanNumRefModelDesc1=Gibt die Anzahl mit Format FAYYNNNNN wo YY ist das Jahr, und NNNNN ist die Erhöhung der Zahl ab 1. -TitanNumRefModelDesc2=Das Jahr ist um 1 erhöht und die Erhöhung der Zahl initialisiert auf Null zu Beginn des Geschäftsjahres. -TitanNumRefModelDesc3=Definieren Sie die Variable SOCIETE_FISCAL_MONTH_START mit dem Monat zu Beginn des Geschäftsjahres an, Beispiel: 9 für September. -TitanNumRefModelDesc4=In diesem Beispiel werden wir auf den 1. September 2006 eine Rechnung Namen FA0700001 -PlutonNumRefModelDesc1=Zurück eine anpassbare Rechnungsnummer nach einem definierten Maske. - -InvoiceDeposit=Anzahlung Rechnung -InvoiceDepositAsk=Anzahlung Rechnung -InvoiceDepositDesc=Diese Art der Rechnung erfolgt, wenn eine Anzahlung eingegangen ist. -InvoiceProForma=Proforma Rechnung -InvoiceProFormaAsk=Proforma Rechnung -InvoiceProFormaDesc=Proforma Rechnung ist ein Bild eines echten Rechnung, hat aber keine Buchhaltung Wert. -UsedByInvoice=Zur Bezahlung der Rechnung %s -ConsumedBy=Consumed von -NotConsumed=Nicht verbrauchte -HelpPaymentHigherThanReminderToPay=Achtung, die Zahlung eines oder mehrerer Rechnungen ist höher als der Rest zu zahlen.
Bearbeiten Sie Ihre Eingabe, sonst bestätigen und denken über die Schaffung einer Gutschrift von mehr als der für jede overpaid Rechnungen. -BillStatusConverted=Umgerechnet auf Rabatt -BillShortStatusConverted=Verarbeitete -Prélèvements=Dauerauftrag -Prélèvements=Daueraufträge -ShowInvoiceDeposit=Show Anzahlung Rechnung -SetDate=Datum -Deposit=Anzahlung -Deposits=Einlagen -DiscountFromDeposit=Die Zahlungen aus Anzahlung Rechnung %s -AbsoluteDiscountUse=Diese Art von Krediten verwendet werden kann auf der Rechnung vor der Validierung -CreditNoteDepositUse=Rechnung muss validiert werden, um mit diesem König von Krediten -NewRelativeDiscount=Neue relative Rabatt -IdSocialContribution=Sozialbeitrags id -PaymentId=Zahlung id -DescTaxAndDividendsArea=Dieser Bereich stellt eine Übersicht über alle Zahlungen, die für die Steuer-oder Sozialabgaben. Nur Datensätze mit der Bezahlung während der festgesetzten Jahr hier. -NbOfPayments=Zahl der Zahlungen -SplitDiscount=Split Rabatt in zwei -ConfirmSplitDiscount=Sind Sie sicher, dass Sie teilen wollen diesen Rabatt von %s %s in 2 niedrigere Rabatte? -TypeAmountOfEachNewDiscount=Input für jeden der zwei Teile: -TotalOfTwoDiscountMustEqualsOriginal=Insgesamt zwei neue Rabatt muss gleich zu den ursprünglichen Betrag Rabatt. -ConfirmRemoveDiscount=Sind Sie sicher, dass Sie möchten, entfernen Sie diesen Rabatt? -UseCredit=Verwenden Sie die Credit +ShowUnpaidAll=Zeige alle unbezahlten Rechnungen +ShowUnpaidLateOnly=Zeige nur verspätete unbezahlte Rechnung PaymentInvoiceRef=Die Zahlung der Rechnung %s - -BillsCustomersUnpaid=Kunden wegen eines nicht bezahlten Rechnungen -BillsCustomersUnpaidForCompany=Kunden wegen eines nicht bezahlten Rechnungen für %s -BillsSuppliersUnpaid=Lieferanten nicht bezahlten Rechnungen -BillsUnpaid=Unbezahlte -BillStatusClosedUnpaid=Geschlossen (unbezahlt) -BillShortStatusClosedUnpaid=Geschlossen -Unpaid=Unbezahlte -ConfirmCancelBillQuestion=Warum wollen Sie klassifizieren diese Rechnung "aufgegeben"? -ConfirmValidatePayment=Sind Sie sicher, dass Sie, um diese Zahlung? Keine Änderung kann erfolgen, wenn paiement ist validiert. -Abandoned=Abandoned -NoSupplierBillsUnpaid=Nr. Lieferanten Rechnungen unbezahlt -CustomerBillsUnpaid=Kunden wegen eines nicht bezahlten Rechnungen -ShowUnpaidLateOnly=Show Ende unbezahlte Rechnung nur - -ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=Diese Wahl ist möglich, wenn Sie Ihre Rechnung mit passenden Kommentar versehen sein. (Beispiel «Nur die Steuer entsprechend dem Preis, der gezahlt worden tatsächlich gibt Rechte an Abzug») -AlreadyPaidNoCreditNotesNoDeposits=Bereits bezahlte (ohne Gutschriften und Einlagen) -RelatedBill=Verwandte Rechnung -RelatedBills=Ähnliche Rechnungen -ValidateInvoice=Validate Rechnung +ValidateInvoice=Rechnung freigeben Cash=Bargeld Reported=Verspätet DisabledBecausePayments=Nicht möglich, da gibt es einige Zahlungen CantRemovePaymentWithOneInvoicePaid=Kann die Zahlung nicht entfernen, da es zumindest auf der Rechnung bezahlt klassifiziert ExpectedToPay=Erwartete Zahlung PayedByThisPayment=Bezahlt durch diese Zahlung -TypeContact_facture_internal_SALESREPFOLL=Repräsentative Follow-up Debitorenrechnung -TypeContact_facture_external_BILLING=Debitorenrechnung Kontakt -TypeContact_facture_external_SHIPPING=Customer Versand Kontakt -TypeContact_facture_external_SERVICE=Kundenservice kontaktieren +ClosePaidInvoicesAutomatically=Makiert alle Standard- oder Ersatzrechnungen als "bezahlt" wenn diese vollständig beglichen sind. +AllCompletelyPayedInvoiceWillBeClosed=Alle Rechnungen ohne ausstehende Zahlungen werden automatisch geschlossen und als "bezahlt" makiert. +##### Types de contacts ##### +TypeContact_facture_internal_SALESREPFOLL=Repräsentative Follow-up Kundenrechnung +TypeContact_facture_external_BILLING=Kundenrechnung Kontakt +TypeContact_facture_external_SHIPPING=Kundenversand Kontakt +TypeContact_facture_external_SERVICE=Kundenservice Kontakt TypeContact_facture_fourn_internal_SALESREPFOLL=Repräsentative Follow-up Lieferantenrechnung TypeContact_facture_fourn_external_BILLING=Lieferantenrechnung Kontakt -TypeContact_facture_fourn_external_SHIPPING=Supplier Versand Kontakt -TypeContact_facture_fourn_external_SERVICE=Supplier Service Kontakt -PDFLinceDescription=Eine vollständige Rechnung Modell mit spanischen und RE IRPF +TypeContact_facture_fourn_external_SHIPPING=Lieferantenversand Kontakt +TypeContact_facture_fourn_external_SERVICE=Lieferantenservice Kontakt +# crabe PDF Model +PDFCrabeDescription=Rechnung Modell Crabe. Eine vollständige Rechnung Modell (Empfohlene Vorlage) +# oursin PDF Model +PDFOursinDescription=Rechnung Modell oursin. Eine vollständige Rechnung Modell (Alternative Vorlage) +# NumRef Modules +TerreNumRefModelDesc1=Zurück NUMERO mit Format %syymm-nnnn für Standardrechnungen und syymm%-nnnn für Gutschriften, wo ist JJ Jahr, MM Monat und nnnn ist eine Folge ohne Pause und keine Rückkehr auf 0 +TerreNumRefModelError=Eine Rechnung, beginnend mit $ syymm existiert bereits und ist nicht kompatibel mit diesem Modell der Reihe. Entfernen oder umbenennen, um dieses Modul. // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). @@ -416,3 +397,19 @@ ShowUnpaidAll=Alle unbezahlten Rechnungen ClosePaidInvoicesAutomatically=Klassifizieren "Bezahlt" alle Standard-oder den Ersatz Rechnungen entierely bezahlt. AllCompletelyPayedInvoiceWillBeClosed=Alle Rechnungen bleiben ohne zu bezahlen wird automatisch auf den Status "Bezahlt" geschlossen werden. // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:04:14). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +BillsCustomersUnpaid=Unbezahlte Rechnungen des Kunden +BillsCustomersUnpaidForCompany=Unbezahlte Rechnungen für Kunden %s +BillsSuppliersUnpaid=Unbezahlte Rechnungen des Lieferanten +BillsUnpaid=Unbezahlt +InvoiceDeposit=Anzahlungsrechnung +InvoiceDepositAsk=Anzahlungsrechnung +InvoiceDepositDesc=Diese Art der Rechnung erfolgt, wenn eine Anzahlung eingegangen ist. +InvoiceProForma=Proforma-Rechnung +InvoiceProFormaAsk=Proforma-Rechnung +InvoiceProFormaDesc=Proforma-Rechnung ist ein Bild von einer wahren Rechnung, hat aber keine Buchhaltung Wert. +EditRelativeDiscount=Bearbeiten relativen Rabatt +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:15). diff --git a/htdocs/langs/de_DE/bookmarks.lang b/htdocs/langs/de_DE/bookmarks.lang index 6a0c4893f56..3376452b4a0 100644 --- a/htdocs/langs/de_DE/bookmarks.lang +++ b/htdocs/langs/de_DE/bookmarks.lang @@ -1,14 +1,11 @@ /* * Language code: de_DE - * Automatic generated via autotranslator.php tool - * Generation date 2009-08-13 20:42:36 + * Manually translated by modula71.de + * Generation date 2010-04-02 */ - -// START - Lines generated via autotranslator.php tool (2009-08-13 20:42:36). -// Reference language: en_US CHARSET=UTF-8 + Bookm=Lesezeichen -NewBookmark=Neue Lesezeichen -AddThisPageToBookmarks=Fügen Sie diese Seite zu Lesezeichen -// STOP - Lines generated via autotranslator.php tool (2009-08-13 20:42:36). +NewBookmark=Neues Lesezeichen +AddThisPageToBookmarks=Fügen Sie diese Seite zu Ihren Lesezeichen hinzu \ No newline at end of file diff --git a/htdocs/langs/de_DE/categories.lang b/htdocs/langs/de_DE/categories.lang index 487d079534d..2c104c2b76c 100644 --- a/htdocs/langs/de_DE/categories.lang +++ b/htdocs/langs/de_DE/categories.lang @@ -21,6 +21,7 @@ ProductsCategoriesArea=Produktkategorien SuppliersCategoriesArea=Lieferantenkategorien CustomersCategoriesArea=Kundenkategorien ThirdPartyCategoriesArea=Organisationskategorien +MembersCategoriesArea=Kategoriemitglieder-Bereich MainCats=Hauptkategorien SubCats=Unterkategorien CatStatistics=Statistik @@ -53,12 +54,14 @@ ProductIsInCategories=Produkt gehört zu folgenden Kategorien SupplierIsInCategories=Dieser Lieferant ist folgenden Kategorien zugewiesen CompanyIsInCustomersCategories=Diese Organisation ist folgenden Lead-/Kundenkategorien zugewiesen CompanyIsInSuppliersCategories=Diese Organisation ist folgenden Lieferantenkategorien zugewiesen +MemberIsInCategories=Dieses Mitglied ist Mitglied folgender Kategorien ProductHasNoCategory=Dieses Produkt / Dienstleistung ist nicht in allen Kategorien SupplierHasNoCategory=Dieser Lieferant ist keiner Kategorie zugewiesen CompanyHasNoCategory=Diese Organisation ist keiner Kategorie zugewiesen +MemberHasNoCategory=Dieses Mitglied ist in keiner Kategorie ClassifyInCategory=Folgender Kategorie zuweisen NoneCategory=Keine -CategoryExistsAtSameLevel=Gleichnamige Kategorie auf diesem Level gefunden +CategoryExistsAtSameLevel=Diese Kategorie existiert bereits auf diesem Level ReturnInProduct=Zurück zur Produktkarte ReturnInSupplier=Zurück zur Anbieterkarte ReturnInCompany=Zurück zur Kunden-/Lead-Karte @@ -74,28 +77,25 @@ NoCategoriesDefined=Keine Kategorie definiert SuppliersCategoryShort=Kategorielieferanten CustomersCategoryShort=Kategoriekunden ProductsCategoryShort=Kategorieprodukte +MembersCategoryShort=Kategoriemitglieder SuppliersCategoriesShort=Lieferantenkategorien CustomersCategoriesShort=Kundenkategorien CustomersProspectsCategoriesShort=Lead- / Kundenkategorien ProductsCategoriesShort=Produktkategorien +MembersCategoriesShort=Mitgliedergruppen ThisCategoryHasNoProduct=Diese Kategorie enthält keine Produkte. ThisCategoryHasNoSupplier=Diese Kategorie enthält keine Lieferanten. ThisCategoryHasNoCustomer=Diese Kategorie enthält keine Kunden. +ThisCategoryHasNoMember=Diese Kategorie enthält keine Mitglieder. AssignedToCustomer=Einem Kunden zugeordnet AssignedToTheCustomer=An den Kunden InternalCategory=Interne Kategorie CategoryContents=Kategorieinhalte CategId=Kategorie-ID - -MembersCategoriesArea=Kategoriemitglieder-Bereich -MemberIsInCategories=Dieses Mitglied ist Mitglied folgender Kategorien -MemberHasNoCategory=Dieses Mitglied ist in keiner Kategorie -MembersCategoryShort=Kategoriemitglieder -MembersCategoriesShort=Mitgliedergruppen -ThisCategoryHasNoMember=Diese Kategorie enthält keine Mitglieder. +CatSupList=Liste der Lieferantenkategorien +CatCusList=Liste der Kunden-/ Leadkategorien +CatProdList=Liste der Produktkategorien CatMemberList=Liste der Kategoriemitglieder -Ref=Bezeichnung - // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). // Reference language: en_US -> de_DE NoCategoryYet=Keine Gruppe von dieser Art erstellt diff --git a/htdocs/langs/de_DE/commercial.lang b/htdocs/langs/de_DE/commercial.lang index ea18d5b6e6b..f0c4d773775 100644 --- a/htdocs/langs/de_DE/commercial.lang +++ b/htdocs/langs/de_DE/commercial.lang @@ -17,11 +17,13 @@ DeleteAction=Maßnahme / Aufgabe löschen NewAction=Neue Maßnahme / Aufgabe AddAction=Maßnahme / Aufgabe hinzufügen AddAnAction=Hinzufügen einer Maßnahme / Aufgabe +AddActionRendezVous=Treffen anlegen +Rendez-Vous=Treffen ConfirmDeleteAction=Möchten Sie diese Aufgabe wirklich löschen? CardAction=Maßnahmenkarte PercentDone=Fortschritt -ActionOnCompany=Aufgabe zu dieser Organisation -ActionOnContact=Aufgabe zu diesem Kontakt +ActionOnCompany=Partner +ActionOnContact=Kontakt TaskRDV=Treffen TaskRDVWith=Treffen mit %s ShowTask=Zeige Aufgabe @@ -47,9 +49,9 @@ DoneActions=Abgeschlossene Maßnahmen DoneActionsFor=Abgeschlossene Maßnahmen für %s ToDoActions=Unvollständige Maßnahmen ToDoActionsFor=Unvollständige Maßnahmen für %s -SendPropalRef=Sende Offert %s +SendPropalRef=Unser Angebot %s SendOrderRef=Sende Bestellung %s -NoRecordedProspects=Keine erfassten Leads +StatusNotApplicable=Nicht anwendbar StatusActionToDo=Zu erledigen StatusActionDone=Abgeschlossen MyActionsAsked=Selbst angelegte Maßnahmen @@ -71,19 +73,21 @@ ActionUserAsk=Aufgenommen durch ErrorStatusCantBeZeroIfStarted=Ist das Feld 'Echtes Erledigungsdatum' ausgefüllt, so wurde die Aktion bereits gestartet (oder beendet) und der 'Status' kann nicht 0%% sein. ActionAC_TEL=Anruf ActionAC_FAX=Fax versenden -ActionAC_PROP=Offert senden +ActionAC_PROP=Angebot senden ActionAC_EMAIL=E-Mail senden ActionAC_RDV=Treffen -ActionAC_FAC=Abrechnung senden -ActionAC_REL=Abrechnung (Erinnerung) senden +ActionAC_FAC=Kundenrechnung senden +ActionAC_REL=Kundenrechnung senden(Erinnerung) ActionAC_CLO=Schließen ActionAC_EMAILING=E-Mail-Kampagne starten ActionAC_COM=Sende Bestellung per Post -Rendez-Vous=Treffen -AddActionRendezVous=Treffen anlegen +ActionAC_SHIP=Lieferschein senden ActionAC_SUP_ORD=Sende Lieferantenbestellung per Post ActionAC_SUP_INV=Sende Lieferantenrechnung per Post - +ActionAC_OTH=Sonstiges +StatusProsp=Lead Status +DraftPropals=Entworfene Angebote +SearchPropal=Ein Angebot suchen // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). // Reference language: en_US -> de_DE diff --git a/htdocs/langs/de_DE/companies.lang b/htdocs/langs/de_DE/companies.lang index 1eedc8351cb..c5fbbb2ece2 100644 --- a/htdocs/langs/de_DE/companies.lang +++ b/htdocs/langs/de_DE/companies.lang @@ -30,10 +30,15 @@ SocGroup=Gruppe von Unternehmen IdThirdParty=Partner ID IdCompany=Firma ID IdContact=Kontakt ID +Contacts=Kontakte Company=Firma +ThirdPartyContacts=Partnerkontakte +ThirdPartyContact=Partnerkontakt +StatusContactValidated=Status des Kontakts CompanyName=Firmenname Companies=Partner CountryIsInEEC=Land ist innerhalb der EU +ThirdPartyName=Name des Partners ThirdParty=Partner ThirdParties=Partner ThirdPartyAll=Partner (alle) @@ -46,6 +51,9 @@ Company/Fundation=Firma Individual=Privatperson ToCreateContactWithSameName=Legt aus diesen Daten autom. eine Person/Kontakt an ParentCompany=Muttergesellschaft +Subsidiary=Tochtergesellschaft +Subsidiaries=Tochtergesellschaften +NoSubsidiary=Keine Tochtergesellschaft ReportByCustomers=Bericht von den Kunden ReportByQuarter=Bericht Quartal CivilityCode=Anrede @@ -54,7 +62,7 @@ Name=Name Lastname=Nachname Firstname=Vorname PostOrFunction=Posten / Funktion -UserTitle=Titel +UserTitle=Anrede Surname=Nachname Address=Adresse State=Bundesland @@ -64,67 +72,127 @@ CountryCode=Ländercode Phone=Telefon PhonePro=Telefon berufl. PhonePerso=Telefon privat -PhoneMobile=Handy +PhoneMobile=Mobiltelefon Fax=Fax Zip=PLZ Town=Stadt -Web=Webadresse +Web=Web +Poste=Posten +DefaultLang=Standardsprache VATIsUsed=MwSt.-pflichtig VATIsNotUsed=Nicht MwSt-pflichtig +##### Local Taxes ##### +LocalTax1IsUsedES=RE wird verwendet +LocalTax1IsNotUsedES=RE wird nicht verwendet +LocalTax2IsUsedES=IRPF wird verwendet +LocalTax2IsNotUsedES=IRPF wird nicht verwendet ThirdPartyEMail=%s WrongCustomerCode=Kunden-Code ungültig WrongSupplierCode=Lieferanten-Code ungültig CustomerCodeModel=Kunden-Code-Modell SupplierCodeModel=Lieferanten-Code Modell Gencod=Barcode +##### Professional ID ##### ProfId1Short=Prof. ID 1 ProfId2Short=Prof. ID 2 ProfId3Short=Prof. ID 3 ProfId4Short=Prof. ID 4 -ProfId1ShortAT=FB-Nr. -ProfId2ShortAT=FB-Gericht -ProfId3ShortAT=Sonst. St.Nr. -ProfId4ShortAT=Frei +ProfId5Short=Prof. id 5 ProfId1=Professional ID 1 ProfId2=Professional ID 2 ProfId3=Professional ID 3 ProfId4=Professional ID 4 -ProfId1AT=Firmenbuchnummer -ProfId2AT=Firmenbuchgericht -ProfId3AT=Sonstige Steuernummer -ProfId4AT=Freies Feld +ProfId5=Professional ID 5 +ProfId1AR=Prof Id 1 (CUIT / Cuil) +ProfId2AR=Prof Id 2 (Revenu Bestien) +ProfId3AR=- +ProfId4AR=- +ProfId5AR=- ProfId1AU=Prof Id 1 (ABN) -ProfId2AU=- -ProfId3AU=- -ProfId4AU=- +ProfId2AU=-- +ProfId3AU=-- +ProfId4AU=-- +ProfId5AU=-- ProfId1BE=Prof Id 1 (Anzahl Professionnel) -ProfId2BE=- -ProfId3BE=- -ProfId4BE=- -ProfId1CH=- -ProfId2CH=- +ProfId2BE=-- +ProfId3BE=-- +ProfId4BE=-- +ProfId4BE=-- +ProfId1CH=-- +ProfId2CH=-- ProfId3CH=Prof Id 1 (Bundes-Nummer) ProfId4CH=Prof Id 2 (Commercial Record-Nummer) -ProfId1DE=Prof Id 1 (USt.-IdNr) -ProfId2DE=Prof Id 2 (USt.-Nr) -ProfId3DE=Prof Id 3 (Handelsregister-Nr.) -ProfId4DE=- +ProfId5CH=-- +ProfId1CL=Prof Id 1 (R.U.T.) +ProfId2CL=- +ProfId3CL=- +ProfId4CL=- +ProfId5CL=- +ProfId1CO=Prof Id 1 (R.U.T.) +ProfId2CO=- +ProfId3CO=- +ProfId4CO=- +ProfId5CO=- +ProfId1DE=Umsatzsteuer-Identifikationsnummer +ProfId2DE=Amtsgericht +ProfId3DE=Handelsregister-Nummer +ProfId4DE=Steuernummer +ProfId5DE=- +ProfId1ES=Prof Id 1 (CIF / NIF) +ProfId2ES=Prof Id 2 (Social Security Number) +ProfId3ES=Prof Id 3 (CNAE) +ProfId4ES=Prof Id 4 (Collegiate Anzahl) +ProfId5ES=- ProfId1FR=Prof Id 1 (SIREN) ProfId2FR=Prof Id 2 (SIRET) ProfId3FR=Prof Id 3 (NAF, alte APE) ProfId4FR=Prof Id 4 (RCS / RM) +ProfId5FR=Prof Id 5 ProfId1GB=Prof Id 1 (Registration Number) -ProfId2GB=- +ProfId2GB=-- ProfId3GB=Prof Id 3 (SIC) -ProfId4GB=- +ProfId4GB=-- +ProfId5GB=-- +ProfId1HN=Id prof. 1 (RTN) +ProfId2HN=- +ProfId3HN=- +ProfId4HN=- +ProfId5HN=- +ProfId1IN=Prof Id 1 (TIN) +ProfId2IN=Prof Id 2 +ProfId3IN=Prof Id 3 +ProfId4IN=Prof Id 4 +ProfId5IN=Prof Id 5 +ProfId1MA=Id prof. 1 (R.C.) +ProfId2MA=Id prof. 2 (Patente) +ProfId3MA=Id prof. 3 (I.F.) +ProfId4MA=Id prof. 4 (C.N.S.S.) +ProfId5MA=- +ProfId1MX=Prof Id 1 (R.F.C). +ProfId2MX=Prof Id 2 (R..P. IMSS) +ProfId3MX=Prof Id 3 (Profesional Charter) +ProfId4MX=- +ProfId5MX=- +ProfId1NL=KVK nummer +ProfId2NL=- +ProfId3NL=- +ProfId4NL=- +ProfId5NL=- ProfId1PT=Prof Id 1 (NIPC) ProfId2PT=Prof Id 2 (Social Security Number) ProfId3PT=Prof Id 3 (Commercial Record-Nummer) ProfId4PT=Prof Id 4 (Konservatorium) +ProfId5PT=- +ProfId1SN=RC +ProfId2SN=NINEA +ProfId3SN=- +ProfId4SN=- +ProfId5SN=- ProfId1TN=Prof Id 1 (RC) ProfId2TN=Prof Id 2 (Geschäftsjahr matricule) ProfId3TN=Prof Id 3 (Douane-Code) ProfId4TN=Prof Id 4 (BAN) +ProfId5TN=- VATIntra=Umsatzsteuer-Identifikationsnummer VATIntraShort=UID-Nr. VATIntraVeryShort=MwSt. @@ -153,6 +221,7 @@ Supplier=Lieferant CompanyList=Firmen-Liste AddContact=Kontakt hinzufügen Contact=Kontakt +ContactsAddresses=Kontakte/Adressen NoContactDefined=Kein Kontakt für diesen Partner DefaultContact=Standardkontakt AddCompany=Firma hinzufügen @@ -160,13 +229,14 @@ AddThirdParty=Partner hinzufügen DeleteACompany=Löschen eines Unternehmens PersonalInformations=Persönliche Daten AccountancyCode=Kontierungs-Code -CustomerCode=Kunden-Code +CustomerCode=Kunden-Nummer SupplierCode=Lieferanten-Code CustomerAccount=Kundenkonto SupplierAccount=Lieferanten-Konto CustomerCodeDesc=Kunden-Code, einzigartig für alle Kunden SupplierCodeDesc=Lieferanten-Code, einzigartig für alle Lieferanten RequiredIfCustomer=Erforderlich falls Partner Kunde oder Interessent ist +RequiredIfSupplier=Erforderlich falls Partner Lieferant ist ValidityControledByModule=Gültigkeit überwacht von Modul ThisIsModuleRules=Regeln dieses Moduls LastProspect=Letzter Lead @@ -205,21 +275,22 @@ VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do VATIntraCheckableOnEUSite=Überprüfen Sie Intrakommunale MwSt-Website der Europäischen Kommission VATIntraManualCheck=Sie können die Überprüfung auch manuell durchführen %s befragen ErrorVATCheckMS_UNAVAILABLE=Anfrage nicht möglich. Überprüfungsdienst wird vom Mitgliedsland nicht angeboten (%s). -NorProspectNorCustomer=Weder Lead noch Kunde +NorProspectNorCustomer=sonstige Adresse JuridicalStatus=Rechtsform Staff=Mitarbeiter +ProspectLevelShort=Potenzial ProspectLevel=Lead-Potenzial ContactPrivate=Privat ContactPublic=Öffentlich ContactVisibility=Sichtbarkeit -OthersNotLinkedToThirdParty=Andere, nicht mit einem Partner verknüpfte +OthersNotLinkedToThirdParty=Andere, nicht mit einem Partner verknüpfte Projekte ProspectStatus=Lead-Status PL_NONE=Keine PL_UNKNOWN=Unbekannt PL_LOW=Niedrig PL_MEDIUM=Mittel PL_HIGH=Hoch -TE_UNKNOWN=- +TE_UNKNOWN=-- TE_STARTUP=Startup TE_GROUP=Großunternehmen TE_MEDIUM=Mittleres Unternehmen @@ -252,6 +323,8 @@ DolibarrLogin=Login NoDolibarrAccess=Kein Zugang ExportDataset_company_1=Partner und Eigenschaften ExportDataset_company_2=Kontakte und Eigenschaften +ExportDataset_company_1=Partner und Eigenschaften +PriceLevel=Preisstufe DeliveriesAddress=Lieferadressen DeliveryAddress=Lieferadresse DeliveryAddressLabel=Lieferadressen-Label @@ -261,6 +334,7 @@ NewDeliveryAddress=Neue Lieferadresse AddDeliveryAddress=Adresse hinzufügen AddAddress=Adresse hinzufügen NoOtherDeliveryAddress=Keine alternative Lieferadresse definiert +SupplierCategory=Lieferantenkategorie JuridicalStatus200=Unabhängige DeleteFile=Datei löschen ConfirmDeleteFile=Sind Sie sicher dass Sie diese Datei löschen möchten? @@ -271,46 +345,23 @@ Organization=Partner AutomaticallyGenerated=Autogeneriert FiscalYearInformation=Informationen über das Geschäftsjahr FiscalMonthStart=Ab Monat des Geschäftsjahres -TigreNumRefModelDesc1=Anpassbares Kunden- / Lieferanten-Nummer-Schema. - - -Contacts=Kontakte -ThirdPartyContacts=Partnerkontakte -ThirdPartyContact=Partnerkontakt -StatusContactValidated=Status des Kontakts -PriceLevel=Preisstufe YouMustCreateContactFirst=Sie müssen erst E-Mail-Kontakte für einen Partner anlegen, um E-Mail-Benachrichtigungen hinzufügen zu können. -MonkeyNumRefModelDesc=Zurück NUMERO mit Format %syymm-nnnn für den Kunden-Code und syymm%-nnnn für die Lieferanten-Code ist, wenn JJ Jahr, MM Monat und nnnn ist eine Folge ohne Pause und kein Zurück mehr gibt, auf 0 gesetzt. -LeopardNumRefModelDesc=Kunden / Lieferanten-Code ist frei. Dieser Code kann jederzeit geändert werden. - -ThirdPartyName=Name des Partners -Poste=Posten -DefaultLang=Standardsprache -LocalTax1IsUsedES=RE wird -LocalTax1IsNotUsedES=RE wird nicht verwendet -LocalTax2IsUsedES=IRPF verwendet wird -LocalTax2IsNotUsedES=IRPF wird nicht verwendet -ProfId1IN=Prof Id 1 (TIN) -ProfId2IN=Prof Id 2 -ProfId3IN=Prof Id 3 -ProfId4IN=Prof Id 4 -ProfId1ES=Prof Id 1 (CIF / NIF) -ProfId2ES=Prof Id 2 (Social Security Number) -ProfId3ES=Prof Id 3 (CNAE) -ProfId4ES=Prof Id 4 (Collegiate Anzahl) -ProfId1NL=KVK nummer -ProfId2NL=- -ProfId3NL=- -ProfId4NL=- -ProfId1AR=Prof Id 1 (CUIT / Cuil) -ProfId2AR=Prof Id 2 (Revenu Bestien) -ProfId3AR=- -ProfId4AR=- -SupplierCategory=Lieferantenkategorie ListSuppliersShort=Liste der Lieferanten ListProspectsShort=Liste der Leads ListCustomersShort=Liste der Kunden +ThirdPartiesArea=Partnerübersicht +LastModifiedThirdParties=Letzten 15 bearbeiteten Partner +UniqueThirdParties=Gesamte Anzahl der Kontakte +InActivity=Aktiv +ActivityCeased=Inaktiv +ActivityStateFilter=Status +# Monkey +MonkeyNumRefModelDesc=Zurück NUMERO mit Format %syymm-nnnn für den Kunden-Code und syymm%-nnnn für die Lieferanten-Code ist, wenn JJ Jahr, MM Monat und nnnn ist eine Folge ohne Pause und kein Zurück mehr gibt, auf 0 gesetzt. +# Leopard +LeopardNumRefModelDesc=Kunden / Lieferanten-Code ist frei. Dieser Code kann jederzeit geändert werden. + +ImportDataset_company_1=Partner und Eigenschaften // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). // Reference language: en_US -> de_DE @@ -387,3 +438,37 @@ InActivity=Geöffnet ActivityCeased=Geschlossen ActivityStateFilter=Activity-Status // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:06:16). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +ProfId6Short=Prof. ID 5 +ProfId6=Professionelle ID 6 +ProfId6AR=- +ProfId6AU=- +ProfId6BE=- +ProfId1BR=CNPJ +ProfId2BR=IE (Inscricao Estadual) +ProfId3BR=IM (Inscricao Municipal) +ProfId4BR=CPF +ProfId6CH=- +ProfId6CL=- +ProfId6CO=- +ProfId6DE=- +ProfId6ES=- +ProfId6FR=- +ProfId6GB=- +ProfId6HN=- +ProfId6IN=- +ProfId6MA=- +ProfId6MX=- +ProfId6NL=- +ProfId6PT=- +ProfId6SN=- +ProfId6TN=- +ProfId6RU=- +AddContactAddress=In Kontakt / Anschrift +EditContactAddress=Kontakt bearbeiten / Adresse +ListOfContactsAddresses=Liste der Ansprechpartner / Adressen +NewContactAddress=Neuer Kontakt / Adresse +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:51). diff --git a/htdocs/langs/de_DE/compta.lang b/htdocs/langs/de_DE/compta.lang index 0ff969a125c..f8407dd1c55 100644 --- a/htdocs/langs/de_DE/compta.lang +++ b/htdocs/langs/de_DE/compta.lang @@ -24,6 +24,7 @@ BillsForSuppliers=Lieferantenrechnungen Income=Einnahmen Outcome=Ausgaben ReportInOut=Einnahmen/Ausgaben +ReportTurnover=Umsatz PaymentsNotLinkedToInvoice=Zahlungen mit keiner Rechnung und damit auch keinem Partner verbunden PaymentsNotLinkedToUser=Zahlungen mit keinem Benutzer verbunden Profit=Gewinn @@ -66,10 +67,12 @@ DatePayment=Zahlungsdatum NewVATPayment=Neue MwSt.-Zahlung VATPayment=MwSt.-Zahlung VATPayments=MwSt-Zahlungen +SocialContributionsPayments=Sozialbeitragszahlungen ShowVatPayment=Zeige MwSt. Zahlung TotalToPay=Zu zahlender Gesamtbetrag TotalVATReceived=Summe vereinnahmte MwSt. CustomerAccountancyCode=Kontierungscode Kunde +SupplierAccountancyCode=Kontierungscode Lieferant AlreadyPaid=Bereits bezahlt AccountNumberShort=Kontonummer AccountNumber=Kontonummer @@ -93,9 +96,6 @@ ConfirmPaySocialContribution=Möchten Sie diesen Sozialbeitrag wirklich als beza DeleteSocialContribution=Sozialbeitrag löschen ConfirmDeleteSocialContribution=Möchten Sie diesen Sozialbeitrag wirklich löschen? ExportDataset_tax_1=Sozialbeiträge und Zahlungen - -//Steuerregeln fehlende Übersetzungen - AnnualSummaryDueDebtMode=Die Jahresbilanz der Einnahmen/Ausgaben im Modus%sForderungen-Verbindlichkeiten%s meldet Kameralistik. AnnualSummaryInputOutputMode=Die Jahresbilanz der Einnahmen/Ausgaben im Modus %sEinkünfte-Ausgaben%s meldet Ist-Besteuerung. AnnualByCompaniesDueDebtMode=Die Einnahmen/Ausgaben-Bilanz nach Partnern im Modus %sForderungen-Verbindlichkeiten%s meldet Kameralistik. @@ -106,29 +106,40 @@ RulesResultDue=- Die angezeigten Beträge verstehen sich inkl. aller Steuern.
- Das Ergebnis beinhaltet nur tatsächlich bezahlte Rechnungen, Ausgaben und MwSt.
- Es gilt das Zahlungsdatum der Rechnungen, Ausgaben und MwSt.
RulesCADue=- Beinhaltet die fälligen Kundenrechnungen, unabhängig von ihrem Zahlungsstatus.
- Es gilt das Freigabedatum der Rechnungen.
RulesCAIn=- Beinhaltet alle tatsächlich erfolgten Zahlungen von Kunden.
- Es gilt das Zahlungsdatum der Rechnungen.
+DepositsAreNotIncluded=- Noch sind Anzahlungsrechnungen inbegriffen +DepositsAreIncluded=- Anzahlungsrechnungen sind inbegriffen +LT2ReportByCustomersInInputOutputModeES=Bericht von Partner IRPF VATReportByCustomersInInputOutputMode=Bericht zur vereinnahmten und bezahlten MwSt. nach Kunden (Steuerbeleg) VATReportByCustomersInDueDebtMode=Bericht zur vereinnahmten und bezahlten MwSt. nach Kunden (Steuersatz) VATReportByQuartersInInputOutputMode=Quartalsbericht zur vereinnahmten und bezahlten MwSt. (Steuerbeleg) VATReportByQuartersInDueDebtMode=Quartalsbericht zur vereinnahmten und bezahlten MwSt.(Steuersatz) SeeVATReportInInputOutputMode=Siehe %sMwSt.-Einnahmen%s-Bericht für eine standardmäßige Berechnung SeeVATReportInDueDebtMode=Siehe %sdynamischen MwSt.%s-Bericht für eine Berechnung mit dynamischer Option -RulesVATIn=- Für Services beinhaltet der Steuerbericht alle vereinnahmten oder bezahlten Steuern nach Zahlungsdatum. Für Warenlieferungen gilt das Rechnungsdatum. -RulesVATDue=- Für Services beinhaltet der Steuerbericht alle fälligen Rechnungen, bezahlt oder nicht, in Abhängigkeit des Leistungsdatums. Für Warenlieferungen gilt das Rechnungsdatum. +RulesVATInServices=- Für Services beinhaltet der Steuerbericht alle vereinnahmten oder bezahlten Steuern nach Zahlungsdatum. Für Warenlieferungen gilt das Rechnungsdatum. +RulesVATInProducts=- Für Sachanlagen beinhaltet der Bericht alle Mehrwertsteuerrechnungen auf Basis des Rechnungsdatums. +RulesVATDueServices=- Für Services beinhaltet der Steuerbericht alle fälligen Rechnungen, bezahlt oder nicht, in Abhängigkeit des Leistungsdatums. Für Warenlieferungen gilt das Rechnungsdatum. +RulesVATDueProducts=- Für Sachanlagen beinhaltet der Bericht alle fälligen Rechnungen, bezahlt oder nicht, in Abhängigkeit des Leistungsdatums. Für Warenlieferungen gilt das Rechnungsdatum. OptionVatInfoModuleComptabilite=Achtung: Für Vermögenswerte sollte hier das Zustelldatum eingegeben werden. PercentOfInvoice=%%/Rechnung +NotUsedForGoods=Nicht für Waren +ProposalStats=Angebote Statistik +OrderStats=Bestellungen Statistik +InvoiceStats=Rechnungen Statistik Dispatch=Versenden Dispatched=Versendet ToDispatch=Zu versenden -ReportTurnover=Umsatz -NotUsedForGoods=Nicht für Waren - -OptionModeTrueDesc=In diesem Modus erfolgt die Umsatzberechnung über Zahlungseingänge (Zahlungsdatum).
Die Gültigkeit der Daten ist nur bei der Überprüfung der Zu- und Abgänge auf den Konten durch Rechnungen gewährleistet. -SupplierAccountancyCode=Kontierungscode Lieferant - -TaxModuleSetupToModifyRules=Die Einstellungen zur Berechnung finden Sie in den entsprechenden Modul-Einstellungen -VATReportBuildWithOptionDefinedInModule=Ausgewiesenen Beträge sind hier anhand von Regeln Tax Modul Setup definiert. -SocialContributionsPayments=Sozialbeitragszahlungen ThirdPartyMustBeEditAsCustomer=Partner muss als Kunde definiert werden +SellsJournal=Verkaufsjournal +PurchasesJournal=Einkaufsjournal +DescSellsJournal=Verkaufsjournal +DescPurchasesJournal=Einkaufsjournal +InvoiceRef=Rechnungs-Nr. +CodeNotDef=Nicht definiert +AddRemind=Verfügbare Menge zum Versenden +RemainToDivide= Noch zu Versenden : +WarningDepositsNotIncluded=Abschlagsrechnungen werden in dieser Version des Rechnungswesens nicht berücksichtigt. +SearchATripAndExpense=Spesen/Reise suchen + // START - Lines generated via autotranslator.php tool (2011-10-10 02:45:33). // Reference language: en_US -> de_DE @@ -166,3 +177,11 @@ AddRemind=Versand zur Verfügung stehende Betrag RemainToDivide=Bleiben Sie bis zum Versand: WarningDepositsNotIncluded=Einlagen Rechnungen werden in dieser Version nicht mit diesem Modul Rechnungswesen inklusive. // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:03:36). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +TaxModuleSetupToModifyRules=Zum Setup-Modul , um Regeln für die Berechnung ändern +OptionModeTrueDesc=In diesem Zusammenhang wird der Umsatz über Zahlungen (Datum der Zahlungen) berechnet. \ NDie Gültigkeit der Figuren ist nur gewährleistet, wenn die Buchführung durch den Eingang / Ausgang auf den Konten über Rechnungen geprüft wird. +VATReportBuildWithOptionDefinedInModule=Hier ausgewiesenen Beträge werden unter Verwendung von Regeln UST Modul Setup definiert. +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:27:56). diff --git a/htdocs/langs/de_DE/contracts.lang b/htdocs/langs/de_DE/contracts.lang index 30a5ba30f7c..e21ece0565d 100644 --- a/htdocs/langs/de_DE/contracts.lang +++ b/htdocs/langs/de_DE/contracts.lang @@ -67,35 +67,30 @@ DateStartReal=Effektiver Beginn DateStartRealShort=Beginn eff. DateEndReal=Effektives Ende DateEndRealShort=Ende eff. -NbOfServices=Anzahl der Services -CloseService=Service schließen -ServicesNomberShort= %s Service(s) -RunningServices=Laufende Services -BoardRunningServices=Abgelaufene, aktive Services -ServiceStatus=Service-Status +NbOfServices=Anzahl der Leistungen +CloseService=Leistung schließen +ServicesNomberShort= %s Leistung(en) +RunningServices=Laufende Leistungen +BoardRunningServices=Abgelaufene, aktive Leistungen +ServiceStatus=Leistungs-Status DraftContracts=Vertragsentwürfe -CloseRefusedBecauseOneServiceActive=Schließen nicht möglich, es existieren noch aktive Services +CloseRefusedBecauseOneServiceActive=Schließen nicht möglich, es existieren noch aktive Leistungen CloseAllContracts=Alle Verträge schließen +DeleteContractLine=Vertragsposition löschen +ConfirmDeleteContractLine=Möchten Sie diese Vertragsposition wirklich löschen? MoveToAnotherContract=In einen anderen Vertrag verschieben ConfirmMoveToAnotherContract=Haben Sie einen neuen Vertrag für das Verschieben gewählt und möchten Sie diesen Vorgang jetzt durchführen. -ConfirmMoveToAnotherContractQuestion=Bitte wählen Sie einen bestehenden Vertrag (desselben Partners) für die Verschiebung des Services: +ConfirmMoveToAnotherContractQuestion=Bitte wählen Sie einen bestehenden Vertrag (desselben Partners) für die Verschiebung der Leistungen: +PaymentRenewContractId=Erneuere Vertragsposition (Nummer %s) +ExpiredSince=Abgelaufen seit +RelatedContracts=Verknüpfte Verträge +##### Types de contacts ##### TypeContact_contrat_internal_SALESREPSIGN=Vertragsunterzeichnung durch Vertreter TypeContact_contrat_internal_SALESREPFOLL=Vertragsnachverfolgung durch Vertreter TypeContact_contrat_external_BILLING=Rechnungskontakt des Kunden TypeContact_contrat_external_CUSTOMER=Nachverfolgung durch Kundenkontakt TypeContact_contrat_external_SALESREPSIGN=Vertragsunterzeichnung durch Kundenkontakt - -ServiceStatusNotLate=Läuft (nicht abgelaufen) -ServiceStatusNotLateShort=Läuft -ServiceStatusLateShort=Abgelaufen -ListOfInactiveServices=Liste inaktiver Services -ListOfExpiredServices=Liste abgelaufener Services -ListOfClosedServices=Liste geschlossener Services -DeleteContractLine=Lösche Vertragsposition -ConfirmDeleteContractLine=Möchten Sie diese Vertragsposition wirklich löschen? -PaymentRenewContractId=Erneuere Vertragsposition (Nummer %s) -ExpiredSince=Abgelaufen seit -RelatedContracts=Verknüpfte Verträge +Error_CONTRACT_ADDON_NotDefined=Die Konstante CONTRACT_ADDON ist nicht definiert // START - Lines generated via autotranslator.php tool (2011-10-10 02:45:33). // Reference language: en_US -> de_DE @@ -107,3 +102,14 @@ Error_CONTRACT_ADDON_NotDefined=Constant CONTRACT_ADDON nicht definiert // Reference language: en_US -> de_DE NoExpiredServices=Keine abgelaufen aktiven Dienste // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:03:42). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +ServiceStatusNotLate=Laufen, nicht abgelaufen +ServiceStatusNotLateShort=Nicht abgelaufen +ServiceStatusLateShort=Abgelaufen +ListOfInactiveServices=Liste der nicht aktiven Dienste +ListOfExpiredServices=Liste der aktiven Dienste abgelaufen +ListOfClosedServices=Liste der geschlossenen Dienstleistungen +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:01). diff --git a/htdocs/langs/de_DE/deliveries.lang b/htdocs/langs/de_DE/deliveries.lang index d4d0aa7bd64..0420d910d6c 100644 --- a/htdocs/langs/de_DE/deliveries.lang +++ b/htdocs/langs/de_DE/deliveries.lang @@ -18,14 +18,16 @@ QtyDelivered=Gelieferte Menge SetDeliveryDate=Liefertermin setzen ValidateDeliveryReceipt=Lieferschein freigeben ValidateDeliveryReceiptConfirm=Möchten Sie die Lieferung wirklich bestätigen? +DeleteDeliveryReceipt=Lieferschein löschen +DeleteDeliveryReceiptConfirm=Sind Sie sicher, dass Sie den Lieferschein %s löschen wollen? DeliveryMethod=Versandart TrackingNumber=Tracking Nummer - +DeliveryNotValidated=Lieferung nicht validiert # merou PDF model NameAndSignature=Name und Unterschrift: ToAndDate=An___________________________________ am ____/_____/__________ GoodStatusDeclaration=Haben die oben genannten Waren in einwandfreiem Zustand erhalten, -Deliverer=Lieferant +Deliverer=Lieferant : Sender=Absender Recipient=Empfänger diff --git a/htdocs/langs/de_DE/dict.lang b/htdocs/langs/de_DE/dict.lang index 1c99a6d4c97..e0af9bc2af5 100644 --- a/htdocs/langs/de_DE/dict.lang +++ b/htdocs/langs/de_DE/dict.lang @@ -24,7 +24,7 @@ CountryNL=Niederlande CountryHU=Ungarn CountryRU=Russland CountrySE=Schweden -CountryCI=Ivoiry Küste +CountryCI=Elfenbeinküste CountrySN=Senegal CountryAR=Argentinien CountryCM=Kamerun @@ -34,12 +34,12 @@ CountryMC=Monaco CountryAU=Australien CountrySG=Singapur CountryAF=Afghanistan -CountryAX=Land-Inseln +CountryAX=Aland-Inseln CountryAL=Albanien CountryAS=Amerikanisch-Samoa CountryAD=Andorra CountryAO=Angola -CountryAI=Anguilla +CountryAI=Anguilla (kleine Antillen) CountryAQ=Antarktis CountryAG=Antigua und Barbuda CountryAM=Armenien @@ -57,7 +57,7 @@ CountryBM=Bermuda CountryBT=Bhutan CountryBO=Bolivien CountryBA=Bosnien und Herzegowina -CountryBW=Botsuana +CountryBW=Botswana CountryBV=Bouvetinsel CountryBR=Brasilien CountryIO=Britisches Territorium im Indischen Ozean @@ -66,13 +66,13 @@ CountryBG=Bulgarien CountryBF=Burkina Faso CountryBI=Burundi CountryKH=Kambodscha -CountryCV=Kap Verde -CountryKY=Cayman Islands +CountryCV=Kapverdische Inseln +CountryKY=Kaimaninseln CountryCF=Zentralafrikanische Republik CountryTD=Tschad CountryCL=Chile -CountryCX=Christmas Island -CountryCC=Cocos (Keeling) Inseln +CountryCX=Weihnachtsinseln +CountryCC=Kokosinseln (Keelinginseln) CountryCO=Kolumbien CountryKM=Komoren CountryCG=Kongo @@ -114,12 +114,12 @@ CountryGT=Guatemala CountryGN=Guinea CountryGW=Guinea-Bissau CountryGY=Guyana -CountryHT=Hati -CountryHM=Heard und McDonald -CountryVA=Heiliger Stuhl (Staat Vatikanstadt) +CountryHT=Haiti +CountryHM=Heard und McDonald Inseln +CountryVA=Vatikan CountryHN=Honduras CountryHK=Hong Kong -CountryIS=Icelande +CountryIS=Island CountryIN=Indien CountryID=Indonesien CountryIR=Iran @@ -134,18 +134,18 @@ CountryKI=Kiribati CountryKP=Nordkorea CountryKR=Südkorea CountryKW=Kuwait -CountryKG=Kyrghyztan -CountryLA=Laotisch +CountryKG=Kirgisien +CountryLA=Laos CountryLV=Lettland CountryLB=Libanon CountryLS=Lesotho CountryLR=Liberia -CountryLY=Libysch +CountryLY=Libyen CountryLI=Liechtenstein -CountryLT=Lituania +CountryLT=Litauen CountryLU=Luxemburg CountryMO=Macau -CountryMK=Mazedonien, die ehemalige jugoslawische der +CountryMK=Mazedonien CountryMG=Madagaskar CountryMW=Malawi CountryMY=Malaysia @@ -159,11 +159,11 @@ CountryMU=Mauritius CountryYT=Mayotte CountryMX=Mexiko CountryFM=Mikronesien -CountryMD=Republik Moldau +CountryMD=Moldavien CountryMN=Mongolei CountryMS=Montserrat CountryMZ=Mosambik -CountryMM=Birma (Myanmar) +CountryMM=Myanmar CountryNA=Namibia CountryNR=Nauru CountryNP=Nepal @@ -174,7 +174,7 @@ CountryNI=Nicaragua CountryNE=Niger CountryNG=Nigeria CountryNU=Niue -CountryNF=Norfolk Island +CountryNF=Norfolk Inseln CountryMP=Nördliche Marianen-Inseln CountryNO=Norwegen CountryOM=Oman @@ -194,8 +194,8 @@ CountryRE=Reunion CountryRO=Rumänien CountryRW=Ruanda CountrySH=St. Helena -CountryKN=Saint Kitts und Nevis -CountryLC=Saint Lucia +CountryKN=St. Kitts und Nevis +CountryLC=St. Lucia CountryPM=Saint-Pierre und Miquelon CountryVC=Saint Vincent und die Grenadinen CountryWS=Samoa @@ -209,7 +209,7 @@ CountrySI=Slowenien CountrySB=Salomonen CountrySO=Somalia CountryZA=Südafrika -CountryGS=Süd-Georgien und Süd-Sandwich-Inseln +CountryGS=Südgeorgien und Südliche Sandwichinseln CountryLK=Sri Lanka CountrySD=Sudan CountrySR=Suriname @@ -251,46 +251,57 @@ CountryME=Montenegro CountryBL=Saint Barthelemy CountryMF=Saint Martin +##### Civilities ##### CivilityMME=Frau CivilityMR=Herr CivilityMLE=Frau -CivilityMTRE=Mag. +CivilityMTRE=Professor +CivilityDR=Doktor +##### Currencies ##### Currencyeuros=Euro CurrencyAUD=AU Dollar -CurrencyCAD=CAN-Dollar -CurrencyCHF=Schweizer Franken -CurrencyEUR=Euro -CurrencyFRF=Französische Franken -CurrencyMAD=Dirham -CurrencyMGA=Ariary -CurrencyGBP=GB Pfund -CurrencyTND=TND -CurrencyUSD=US-Dollar -CurrencyXAF=CFA-Franc BEAC -CurrencyXOF=CFA Francs BCEAO - CurrencySingAUD=AU Dollar -CurrencySingCAD=CAN-Dollar -CurrencySingCHF=Swiss Franc +CurrencyCAD=CAN Dollar +CurrencySingCAD=CAN Dollar +CurrencyCHF=Schweizer Franken +CurrencySingCHF=Schweizer Franken +CurrencyEUR=Euro CurrencySingEUR=Euro +CurrencyFRF=Französische Franc CurrencySingFRF=Französisch Franc -CurrencySingGBP=GB Pound +CurrencyGBP=Britisches Pfund +CurrencySingGBP=Britisches Pfund CurrencyINR=Indische Rupien CurrencySingINR=Indische Rupie +CurrencyMAD=Dirham CurrencySingMAD=Dirham +CurrencyMGA=Ariary CurrencySingMGA=Ariary CurrencyMUR=Mauritius Rupien CurrencySingMUR=Mauritius Rupie -CurrencyNOK=Norwegian krones +CurrencyNOK=Norwegische Kronen CurrencySingNOK=Norwegische Krone +CurrencyTND=Tunesischer Dinar CurrencySingTND=Tunesische Dinar -CurrencySingUSD=US-Dollar +CurrencyUSD=US Dollar +CurrencySingUSD=US Dollar +CurrencyXAF=CFA Franc BEAC CurrencySingXAF=CFA Franc BEAC +CurrencyXOF=CFA Francs BCEAO CurrencySingXOF=CFA Franc BCEAO CurrencyXPF=CFP Francs CurrencySingXPF=CFP Franc +#### Input reasons ##### +DemandReasonTypeSRC_INTE=Internet +DemandReasonTypeSRC_CAMP_MAIL=Rundschreiben +DemandReasonTypeSRC_CAMP_EMAIL=E-Mail Kampagne +DemandReasonTypeSRC_CAMP_PHO=Telefonaktion +DemandReasonTypeSRC_CAMP_FAX=Fax Kampagne +DemandReasonTypeSRC_COMM=Kaufmännischer Ansprechpartner +DemandReasonTypeSRC_SHOP=Shop-Kontakt + // START - Lines generated via autotranslator.php tool (2011-10-10 02:45:33). // Reference language: en_US -> de_DE @@ -311,3 +322,10 @@ CountryCH=Schweiz CountryIE=Irland CurrencyUAH=Hryvnia // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:03:39). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +CurrencyCentSingEUR=Cent +CurrencyThousandthSingTND=Tausendstel +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:27:58). diff --git a/htdocs/langs/de_DE/donations.lang b/htdocs/langs/de_DE/donations.lang index f7a820ad930..e62ed9135ca 100644 --- a/htdocs/langs/de_DE/donations.lang +++ b/htdocs/langs/de_DE/donations.lang @@ -26,14 +26,20 @@ DonationStatusPaid=Spende bezahlt DonationStatusPromiseNotValidatedShort=Entwurf DonationStatusPromiseValidatedShort=Freigegeben DonationStatusPaidShort=Bezahlt -ValidPromise=Zusage freigeben +ValidPromess=Zusage freigeben BuildDonationReceipt=Erzeuge Spendenbeleg DonationsModels=Spendenvorlagen -Donations=Spenden -ValidPromess=Zusage freigeben +LastModifiedDonations=Letzten %s geänderten Spenden +SearchADonation=Spende suchen // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). // Reference language: en_US -> de_DE LastModifiedDonations=Zuletzt geändert %s Spenden SearchADonation=Suchen Sie eine Spende // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:05:57). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +Donations=Spenden +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:46). diff --git a/htdocs/langs/de_DE/ecm.lang b/htdocs/langs/de_DE/ecm.lang index 909dbde6ad5..96f13813a28 100644 --- a/htdocs/langs/de_DE/ecm.lang +++ b/htdocs/langs/de_DE/ecm.lang @@ -20,13 +20,12 @@ ECMNbOfDocsSmall=Anz. Dok. ECMSection=Verzeichnis ECMSectionManual=Manuelles Verzeichnis ECMSectionAuto=Automatisches Verzeichnis -ECMSectionsManual=Manuelle Verzeichnisse -ECMSectionsAuto=Automatische Verzeichnisse +ECMSectionsManual=Manuelle Hierarchie +ECMSectionsAuto=Automatische Hierarchie ECMSections=Verzeichnis ECMRoot=Stammordner ECMNewSection=Neues Verzeichnis ECMAddSection=Verzeichnis hinzufügen -ECMNewSection=Neues Verzeichnis ECMNewDocument=Neues Dokument ECMCreationDate=Erstellungsdatum ECMNbOfFilesInDir=Anzahl der Dateien im Verzeichnis @@ -35,7 +34,7 @@ ECMNbOfFilesInSubDir=Anzahl der Dateien im Unterverzeichnis ECMCreationUser=Author ECMArea=ECM-Übersicht ECMAreaDesc=Das ECM (Electronic Content Management)-System erlaubt Ihnen das Speichern, Teilen und rasche Auffinden von Dokumenten. -ECMAreaDesc2=* Automatische Verzeichnisse werden automatisch befüllt, wenn Sie Dokumente von der Karte eines Elements erstellen.
* Manuelle Verzeichnisse können Sie dazu nutzen, nicht mit anderen Elementen verbundene Dokumente zu speichern. +ECMAreaDesc2=* In den automatischen Verzeichnissen werden die vom System erzeugeten Dokumente abgelegt.
* Die manuellen Verzeichnisse können Sie selbst verwalten und zusätzliche nicht direkt zuordenbare Dokument hinterlegen. ECMSectionWasRemoved=Das Verzeichnis %s wurde gelöscht. ECMDocumentsSection=Dokument des Verzeichnisses ECMSearchByKeywords=Suche nach Stichwörtern @@ -57,3 +56,9 @@ ECMDirectoryForFiles=Relatives Verzeichnis für Dateien CannotRemoveDirectoryContainsFiles=Entfernen des Verzeichnisses nicht möglich, da es noch Dateien enthält ECMFileManager=Dateiverwaltung ECMSelectASection=Wählen Sie ein Verzeichnis aus der Baumansicht auf der linken Seite... + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +ECMDocsBySocialContributions=Documents to Sozialabgaben verbunden +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:27:58). diff --git a/htdocs/langs/de_DE/errors.lang b/htdocs/langs/de_DE/errors.lang index 51e7bcef216..bb8e2c0f3b6 100644 --- a/htdocs/langs/de_DE/errors.lang +++ b/htdocs/langs/de_DE/errors.lang @@ -15,17 +15,20 @@ ErrorFailToCreateDir=Fehler beim Erstellen des Verzeichnisses '%s'. ErrorFailToDeleteDir=Fehler beim Löschen des Verzeichnisses '%s'. ErrorFailedToDeleteJoinedFiles=Partner kann nicht gelöscht werden. Entfernen Sie zuerst alle verknüpften Dateien. ErrorThisContactIsAlreadyDefinedAsThisType=Dieser Kontakt ist bereits als Kontakt dieses Typs definiert. -ErrorCashAccountAcceptsOnlyCashMoney=Dies ist ein Bargeldkonto (Kassa) und akzeptiert deshalb nur Bargeldtransaktionen. +ErrorCashAccountAcceptsOnlyCashMoney=Dies ist ein Bargeldkonto (Kasse) und akzeptiert deshalb nur Bargeldtransaktionen. ErrorFromToAccountsMustDiffers=Quell- und Zielbankkonto müssen unterschiedlich sein. ErrorBadThirdPartyName=Der für den Partner eingegebene Name ist ungültig. ErrorBadCustomerCodeSyntax=Die eingegebene Kundennummer ist unzulässig. ErrorCustomerCodeRequired=Kunden Nr. erforderlich -ErrorCustomerCodeAlreadyUsed=Diese Kunden Nr. ist bereits vergeben. +ErrorCustomerCodeAlreadyUsed=Diese Kunden-Nr. ist bereits vergeben. ErrorPrefixRequired=Präfix erforderlich +ErrorUrlNotValid=Die angegebene Website-Adresse ist ungültig ErrorBadSupplierCodeSyntax=Die eingegebene Lieferanten Nr. ist unzulässig. -ErrorSupplierCodeRequired=Lieferanten Nr. erforderlich +ErrorSupplierCodeRequired=Lieferanten-Nr. erforderlich ErrorSupplierCodeAlreadyUsed=Diese Lieferanten Nr. ist bereits vergeben. ErrorBadParameters=Ungültige Werte +ErrorBadValueForParameter=Falscher Wert '%s' bei falschem Parameter '%s' +ErrorBadImageFormat=Image file has not a supported format ErrorFailedToWriteInDir=Fehler beim Schreiben in das Verzeichnis %s ErrorFoundBadEmailInFile=Ungültige E-Mail-Adresse in %s Zeilen der Datei gefunden (z.B. Zeile %s mit E-Mail=%s) ErrorUserCannotBeDelete=Dieser Benutzer kann nicht gelöscht werden. Eventuell ist er noch mit einem Partner verknüpft. @@ -36,9 +39,16 @@ ErrorFeatureNeedJavascript=Diese Funktion erfordert aktiviertes JavaScript. Sie ErrorTopMenuMustHaveAParentWithId0=Ein Menü vom Typ 'Top' kann kein Eltern-Menü sein. Setzen Sie 0 als Eltern-Menü oder wählen Sie ein Menü vom Typ 'Links'. ErrorLeftMenuMustHaveAParentId=Ein Menü vom Typ 'Links' erfordert einen Eltern-Menü ID. ErrorFileNotFound=Datei '%s' konnte nicht gefunden werden (Ungültiger Pfad, falsche Berechtigungen oder der Zugriff wurde durch safemode- oder openbasedir-Parameter eingeschränkt) +ErrorDirNotFound=Verzeichnis %s konnte nicht gefunden werden (Ungültiger Pfad, falsche Berechtigungen oder Zugriff durch safemode- oder openbasedir-Parameter eingeschränkte) ErrorFunctionNotAvailableInPHP=Die PHP-Funktion %s ist für diese Funktion erforderlich, in dieser PHP-Konfiguration jedoch nicht verfügbar. ErrorDirAlreadyExists=Ein Verzeichnis mit diesem Namen existiert bereits. +ErrorFileAlreadyExists=Eine Datei mit diesem Namen existiert bereits. +ErrorPartialFile=Die Datei wurde nicht vollständig zum Server übertragen. +ErrorNoTmpDir=Das temporäre Verzeichnis %s existiert nicht. +ErrorUploadBlockedByAddon=Der Upload wurde durch ein PHP Apache-Plugin blockiert. +ErrorFileSizeTooLarge=Die Größe der gewählten Datei übersteigt den zulässigen Maximalwert. ErrorFieldCanNotContainSpecialCharacters=Das Feld %s darf keine Sonderzeichen enthalten. +WarningSafeModeOnCheckExecDir=Achtung: Der PHP-Option safe_mode ist aktiviert, entsprechend müssen Befehle in einem mit safe_mode_exec_dir gekennzeichneten Verzeichnis ausgeführt werden. WarningAllowUrlFopenMustBeOn=Der Parameter allow_url_fopen muss in der php.ini-Datei auf ON stehen, damit dieses Modul funktioniert. Bitte passen Sie die Datei manuell an. WarningBuildScriptNotRunned=Das Skript %s wurde noch nicht zur Grafikerstellung ausgeführt oder es existieren keine anzuzeigenden Daten. WarningBookmarkAlreadyExists=Ein Lesezeichen mit diesem Titel oder Ziel (URL) existiert bereits. @@ -51,27 +61,12 @@ ErrorCantSaveADoneUserWithZeroPercentage=Maßnahmen können nicht mit Status "Ni ErrorRefAlreadyExists=Die Nr. für den Erstellungsvorgang ist bereits vergeben ErrorPleaseTypeBankTransactionReportName=Bitte geben Sie den Bankbeleg zu dieser Transaktion ein (Format MMYYYY oder TTMMYYYY) ErrorRecordHasChildren=Kann diesen Eintrag nicht löschen da er noch über Kindelemente verfügt. - -MenuManager=Menüverwaltung -ErrorUrlNotValid=Die angegebene Website-Adresse ist ungültig - -Error=Fehler -Errors=Fehler -ErrorBadEMail=E-Mail %s ist ungültig -ErrorBadUrl=Url %s ist ungültig -ErrorRecordNotFound=Eintrag nicht gefunden. -ErrorDirNotFound=Verzeichnis %s konnte nicht gefunden werden (Ungültiger Pfad, falsche Berechtigungen oder Zugriff durch safemode- oder openbasedir-Parameter eingeschränkte) -ErrorFileAlreadyExists=Eine Datei mit diesem Namen existiert bereits. -ErrorPartialFile=Die Datei wurde nicht vollständig zum Server übertragen. -ErrorNoTmpDir=Das temporäre Verzeichnis %s existiert nicht. -ErrorUploadBlockedByAddon=Der Upload wurde durch ein PHP Apache-Plugin blockiert. -ErrorFileSizeTooLarge=Die Größe der gewählten Datei übersteigt den zulässigen Maximalwert. -WarningSafeModeOnCheckExecDir=Achtung: Der PHP-Option safe_mode ist aktiviert, entsprechend müssen Befehle in einem mit safe_mode_exec_dir gekennzeichneten Verzeichnis ausgeführt werden. WarningConfFileMustBeReadOnly=Achtung: Die Konfigurationsdatei (htdocs/conf/conf.php) kann von Ihrem Webserver überschrieben werden. Dies ist eine ernstzunehmende Sicherheitslücke. Ändern Sie den Zugriff schnellstmöglich auf reinen Lesezugriff. Wenn Sie Windows und das FAT-Format für Ihre Festplatte nutzen, seien Sie sich bitte bewusst dass dieses Format keine individuellen Dateiberechtigungen unterstützt und so auch nicht völlig sicher ist, ErrorModuleRequireJavascript=Diese Funktion erfordert aktiviertes JavaScript. Aktivieren/deaktivieren können Sie Javascript im Menü Übersicht(Home)-> Einstellungen->Anzeige. ErrorPasswordsMustMatch=Die eingegebenen Passwörter müssen identisch sein. ErrorContactEMail=Ein technischer Fehler ist aufgetreten. Bitte kontaktieren Sie Ihren Administrator unter der folgenden E-Mail-Adresse %s und fügen Sie den Fehlercode %s in Ihrer Nachricht ein, oder (noch besser) fügen Sie einen Screenshot dieser Seite als Anhang bei. ErrorWrongValueForField=Falscher Wert für Feld Nr. %s (Wert '%s' passt nicht zur Regex-Regel %s) +ErrorFieldValueNotIn=Nicht korrekter Wert für das Feld-Nummer %s (Wert: '%s' ist kein verfügbarer Wert im Feld %s der Tabelle %s ErrorsOnXLines=Fehler in %s Quellzeilen WarningsOnXLines=Warnhinweise in %s Quellzeilen ErrorFileIsInfectedWithAVirus=Der Virenschutz konnte diese Datei nicht freigeben (eventuell ist diese mit einem Virus infiziert) @@ -80,6 +75,13 @@ WarningNoDocumentModelActivated=Für das Erstellen von Dokumenten ist keine Vorl ErrorDatabaseParameterWrong=Der Datenbankeinstellungs-Parameter '%s' weist einen mit dem System inkompatiblen Wert auf (erfordert den Wert '%s'). ErrorNumRefModel=Es besteht ein Bezug zur Datenbank (%s) der mit dieser Numerierungsfolge nicht kompatibel ist. Entfernen Sie den Eintrag oder benennen Sie den Verweis um, um dieses Modul zu aktivieren. ErrorQtyTooLowForThisSupplier=Die gewählte Menge liegt unterhalb der Mindestbestellmenge für diesen Lieferanten oder es wurde kein Lieferantenpreis zu diesem Anbieter eingetragen. +ErrorModuleSetupNotComplete=Das Setup des Moduls scheint unvollständig zu sein. Führen Sie nochmal das Setup aus um das Modul zu vervollständigen. +ErrorBadMask=Fehler auf der Maske +ErrorBadMaskFailedToLocatePosOfSequence=Fehler, Maske ohne fortlaufende Nummer +ErrorBadMaskBadRazMonth=Fehler, falscher Reset-Wert +ErrorSelectAtLeastOne=Fehler. Wählen Sie mindestens einen Eintrag. +ErrorProductWithRefNotExist=Produkt mit der Nummer '%s' nicht gefunden +ErrorDeleteNotPossibleLineIsConsolidated=Löschen nicht möglich, da der Datensatz mit einer Banktransaktion verbunden ist. ErrorFailedToSendPassword=Fehler beim Zusenden des Passworts ErrorPasswordDiffers=Passwörter stimmen nicht überein, bitte erneut eingeben. ErrorForbidden=Kein Zugriff.
Für einen Zugriff zu diese Seite oder Funktion müssen Sie über eine Sitzung authentifiziert zu sein und über die entsprechenden Benutzerberechtigungen verfügen. @@ -125,3 +127,15 @@ ErrorBothFieldCantBeNegative=Felder %s und %s kann nicht gleichzeitig negativ ErrorWebServerUserHasNotPermission=Benutzerkonto %s verwendet, um Web-Server auszuführen hat keine Genehmigung für das ErrorNoActivatedBarcode=Kein Barcode-Typ aktiviert // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:04:08). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +MenuManager=Menü-Manager +Error=Fehler +Errors=Fehler +ErrorBadEMail=EMail %s ist falsch +ErrorBadUrl=URL %s ist falsch +ErrorRecordNotFound=Record wurde nicht gefunden. +WarningLockFileDoesNotExists=Warnung, wenn Setup abgeschlossen ist, müssen Sie deaktivieren, Installation / Migration-Tools, indem Sie eine Datei in das Verzeichnis install.lock %s. Fehlende Diese Datei ist eine Sicherheitslücke. +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:10). diff --git a/htdocs/langs/de_DE/exports.lang b/htdocs/langs/de_DE/exports.lang index cf2e649d316..27cb3f897b5 100644 --- a/htdocs/langs/de_DE/exports.lang +++ b/htdocs/langs/de_DE/exports.lang @@ -1,11 +1,11 @@ /* * Language code: de_DE - * Manually translated by eCleaners.at - * Generation date 2010-11-12 21:09:12 + * Manually translated by modula71.de + * Generation date 2011-04-02 */ - CHARSET=UTF-8 + ExportsArea=Exportübersicht ImportArea=Importübersicht NewExport=Neuer Export @@ -13,20 +13,33 @@ NewImport=Neuer Import ExportableDatas=Exportfähige Datensätze ImportableDatas=Importfähige Datensätze SelectExportDataSet=Wählen Sie den zu exportierenden Datensatz... +SelectImportDataSet=Wählen Sie den zu importierenden Datensatz... SelectExportFields=Wählen Sie die zu exportierenden Felder oder ein vordefiniertes Exportprofil +SelectImportFields=Wählen Sie die zu importierenden Felder oder ein vordefiniertes Importprofil +NotImportedFields=Quelldateifelder nicht importiert SaveExportModel=Speichern Sie diese Exportprofil für eine spätere Verwendung... +SaveImportModel=Speichern Sie diese Importprofil für eine spätere Verwendung... ExportModelName=Name des Exportprofils ExportModelSaved=Exportprofil unter dem Namen %s gespeichert ExportableFields=Exportfähige Felder ExportedFields=Exportierte Felder +ImportModelName=Name des Importprofils +ImportModelSaved=Importprofil unter dem Namen %s gespeichert +ImportableFields=Importfähige Felder +ImportedFields=Importierte Felder DatasetToExport=Zu exportierender Datensatz +DatasetToImport=Zu importierender Datensatz +NoDiscardedFields=Keine Felder der Quelldatei verworfen Dataset=Datensatz ChooseFieldsOrdersAndTitle=Wählen Sie die Reihenfolge und Bezeichnung der Felder... FieldsOrder=Feldreihenfolge FieldsTitle=Feldtitel +FieldOrder=Feldreihenfolge +FieldTitle=Feldbezeichnung ChooseExportFormat=Wählen Sie das Exportformat NowClickToGenerateToBuildExportFile=Wählen Sie das Exportformat aus dem Auswahlfeld und klicken Sie auf "Erstellen" um die Datei zu generieren... AvailableFormats=Verfügbare Formate +LibraryShort=Bibliothek LibraryUsed=Verwendete Bibliothek LibraryVersion=Bibliotheksversion Step=Schritt @@ -40,16 +53,6 @@ FormatedExportDesc3=Wenn die Daten für den Export ausgewählt haben, können Si Sheet=Blatt NoImportableData=Keine importfähigen Daten (kein Modul mit Erlaubnis für Datenimport) FileSuccessfullyBuilt=Exportdatei erfolgreich erzeugt - -SelectImportDataSet=Wählen Sie den zu importierenden Datensatz... -SelectImportFields=Wählen Sie die zu importierenden Felder oder ein vordefiniertes Importprofil -SaveImportModel=Speichern Sie diese Importprofil für eine spätere Verwendung... -ImportModelName=Name des Importprofils -ImportModelSaved=Importprofil unter dem Namen %s gespeichert -ImportableFields=Importfähige Felder -ImportedFields=Importierte Felder -DatasetToImport=Zu importierender Datensatz -LibraryShort=Bibliothek SQLUsedForExport=SQL-Abfrage für Erstellung der Exportdatei genutzt LineId=ID der Zeile LineDescription=Beschreibung der Zeile @@ -63,17 +66,12 @@ TypeOfLineServiceOrProduct=Art der Zeile (0=Produkt, 1=Service) FileWithDataToImport=Datei mit zu importierenden Daten FileToImport=Quelldatei für Import FileMustHaveOneOfFollowingFormat=Die Importdatei muss in einem der folgenden Formate vorliegen -ChooseFileToImport=Wählen Sie zu importierende Datei und klicken Sie anschließend auf das %s Symbol... -FieldsInSourceFile=Felder in der Quelldatei -FieldsInTargetDatabase=Zielfelder in der Systemdatenbank (* erforderlich) - -NotImportedFields=Quelldateifelder nicht importiert -NoDiscardedFields=Keine Felder der Quelldatei verworfen -FieldOrder=Feldreihenfolge -FieldTitle=Feldbezeichnung DownloadEmptyExample=Leere Beispiel-Quelldatei herunterladen ChooseFormatOfFileToImport=Wählen Sie das Format der Importdatei durch einen Klick auf das %s Symbol... +ChooseFileToImport=Wählen Sie zu importierende Datei und klicken Sie anschließend auf das %s Symbol... SourceFileFormat=Quelldateiformat +FieldsInSourceFile=Felder in der Quelldatei +FieldsInTargetDatabase=Zielfelder in der Systemdatenbank (* erforderlich) Field=Feld NoFields=Keine Felder MoveField=Bewege Feld Spaltennummer %s @@ -104,6 +102,7 @@ TooMuchErrors=Es gibt noch %s weitere, fehlerhafte Zeilen. Die Ausgabe wu TooMuchWarnings=Es gibt noch %s weitere Zeilen mit Warnungen. Die Ausgabe wurde beschränkt. EmptyLine=Leerzeile (verworfen) CorrectErrorBeforeRunningImport=Beheben Sie zuerst alle Fehler bevor Sie den endgültigen Import starten. +FileWasImported=Datei wurde mit der Nummer %s importiert. YouCanUseImportIdToFindRecord=Sie können alle importierten Einträge in Ihrer Datenbank finden, indem Sie nach dem Feld import_key='%s' filtern. NbOfLinesOK=Anzahl der Zeilen ohne Fehler und Warnungen: %s. NbOfLinesImported=Anzahl der erfolgreich importierten Zeilen: %s. @@ -116,6 +115,7 @@ SourceRequired=Datenwert erforderlich SourceExample=Beispiel möglicher Datenwerte CSVFormatDesc=Comma Separated Value Format (.csv).
Dies ist ein Textdatei-Format, bei dem einzelne Spalten durch ein Trennzeichen [ %s ] getrennt sind. Wird innerhalb eines Feldes das Trennzeichen gefunden, wird der Wert des entsprechenden Feldes über ein Rundungszeichen [ %s ] gerundet. Das Escape-Zeichen für die Rundung ist [ %s ]. +InterventionCardsAndInterventionLines=Service-Karten und Servicetext // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). // Reference language: en_US -> de_DE FileWasImported=Datei wurde mit Nummer %s importiert. diff --git a/htdocs/langs/de_DE/ftp.lang b/htdocs/langs/de_DE/ftp.lang index cd042928a55..10b52cd432d 100644 --- a/htdocs/langs/de_DE/ftp.lang +++ b/htdocs/langs/de_DE/ftp.lang @@ -4,9 +4,8 @@ * Generation date 2010-11-12 10:23:11 */ - - CHARSET=UTF-8 + FTPClientSetup=FTP-Verbindungseinstellungen NewFTPClient=Neue FTP-Verbindung FTPArea=FTP-Übersicht diff --git a/htdocs/langs/de_DE/help.lang b/htdocs/langs/de_DE/help.lang index 06b27afec53..bc071793061 100644 --- a/htdocs/langs/de_DE/help.lang +++ b/htdocs/langs/de_DE/help.lang @@ -24,10 +24,16 @@ Efficiency=Effizienz TypeHelpOnly=Ausschließlich Hilfe TypeHelpDev=Hilfe & Entwicklung TypeHelpDevForm=Hilfe, Entwicklung & Bildung -ToGetHelpGoOnSparkAngels1=Einige Unternehmen bieten eine schnelle (manchmal prompte) und effiziente Online-Unterstützung durch Fernwartung Ihres Computers. Solche Helfer finden Sie auf dieser Website %s +ToGetHelpGoOnSparkAngels1=Einige Unternehmen bieten eine schnelle (manchmal prompte) und effiziente Online-Unterstützung durch Fernwartung. Solche Helfer finden Sie auf dieser Website %s ToGetHelpGoOnSparkAngels3=Über einen Klick auf diese Schaltfläche erhalten Sie eine Liste aller verfügbaren Trainer für das System ToGetHelpGoOnSparkAngels2=Gelegentlich ist zum Zeitpunkt Ihrer Suche vielleicht kein Partner verfügbar. Denken Sie daran, den Filter auf "Alle verfügbaren" zu setzen. So können Sie mehr Anfragen stellen. BackToHelpCenter=Klicken Sie hier um zur Hilfeseite zurückzukehren. LinkToGoldMember=Sie können einen, vom System für Ihre Sprache (%s) automatisch ausgewählten, Trainer über einen Klick auf sein Widget kontaktieren (Status und Maximalpreis aktualisieren sich automatisch): PossibleLanguages=Unterstützte Sprachen MakeADonation=Unterstützen Sie das Projekt über eine Spende + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +SubscribeToFoundation=Hilfe Dolibarr Projekt, abonnieren Sie den Grundstein +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:54). diff --git a/htdocs/langs/de_DE/install.lang b/htdocs/langs/de_DE/install.lang index 6b1fbe640d9..219ea7f8c16 100644 --- a/htdocs/langs/de_DE/install.lang +++ b/htdocs/langs/de_DE/install.lang @@ -15,6 +15,7 @@ ConfFileDoesNotExistsAndCouldNotBeCreated=Die Konfigurationsdatei %s ist ConfFileCouldBeCreated=Die Konfigurationsdatei %s wurde erfolgreich erstellt. ConfFileIsNotWritable=Die Konfigurationsdatei %s ist nicht beschreibbar. Bitte überprüfen Sie die Dateizugriffsrechte. Für die Erstinstallation muss Ihr Webserver in die Konfigurationsdatei schreiben können, sezzten Sie die Dateiberechtigungen entsprechend (z.B. mittels "chmod 666" auf Unix-Betriebssystemen). ConfFileIsWritable=Die Konfigurationsdatei %s ist beschreibbar. +ConfFileReload=Alle Information aus der Konfigurationsdatei laden. PHPSupportSessions=Ihre PHP-Konfiguration unterstützt Sitzungen (Sessions). PHPSupportPOSTGETOk=Ihre PHP-Konfiguration unterstützt GET- und POST-Variablen PHPSupportPOSTGETKo=Ihre PHP-Konfiguration scheint GET- und/oder POST-Variablen nicht zu unterstützen. Überprüfen Sie in der php.ini den Parameter variables_order. @@ -32,6 +33,7 @@ ErrorWrongValueForParameter=Sie haben einen falschen Wert für den Parameter '%s ErrorFailedToCreateDatabase=Fehler beim Erstellen der Datenbank '%s'. ErrorFailedToConnectToDatabase=Es konnte keine Verbindung zur Datenbank ' %s'. ErrorPHPVersionTooLow=Ihre PHP-Version ist veraltet. Sie benötigen mindestens Version %s . +WarningPHPVersionTooLow=Die PHP-Version ist zu alt. Es wird Version %s oder höher erwartet. Sie können unter dieser PHP-Version installieren, aber sie wird nicht unterstützt. ErrorConnectedButDatabaseNotFound=Die Verbindung zum Server wurde erfolgreich hergestellt, die Datenbank '%s' jedoch nicht gefunden. ErrorDatabaseAlreadyExists=Eine Datenbank mit dem Namen '%s' exisitiert bereits. IfDatabaseNotExistsGoBackAndUncheckCreate=Sollte die Datenbank noch nicht existieren, gehen Sie bitte zurück und aktivieren Sie das Kontrollkästchen "Datenbank erstellen". @@ -44,6 +46,8 @@ ConfigurationFile=Konfigurationsdatei WebPagesDirectory=Verzeichnis für die Speicherung von Websites DocumentsDirectory=Verzeichnis zur Speicherung von Dokumenten (Dokumentenverzeichnis) URLRoot=URL root +ForceHttps=Sichere Verbindung (https) erzwingen +CheckToForceHttps=Aktivieren Sie diese Option, um sichere Verbindungen (https) zu erzwingen.
Hierfür ist ein auf Ihrem Webserver eingerichtetes SSL-Zertifikat erforderlich. DolibarrDatabase=dolibarr-Datenbank DatabaseChoice=Datenbankwahl DatabaseType=Datenbanktyp @@ -52,9 +56,9 @@ Server=Server ServerAddressDescription=Name oder IP-Adresse des Datenbankservers, in der Regel ist dies "localhost" (Datenbank und Webserver liegen auf demselben Server). ServerPortDescription=Datenbankserver-Port. Lassen Sie dieses Feld im Zweifel leer. DatabaseServer=Datenbankserver -DatabaseName=Datenbankname +DatabaseName=Name der Datenbank Login=Anmeldung -AdminLogin=Login für Dolibarr Datenbank-Administrator. Halten Sie leer, wenn Sie in anonymisierter +AdminLogin=Login für Dolibarr Datenbank-Administrator. Password=Passwort PasswordAgain=Passwort wiederholen AdminPassword=Passwort des dolibarr-Datenbankadministrators @@ -65,7 +69,7 @@ CheckToCreateDatabase=Aktivieren Sie dieses Kontrollkästchen, falls Sie noch ke CheckToCreateUser=Aktivieren Sie dieses Kontrollkästchen, falls Sie noch keinen Datenbankbenutzer angelegt haben und dieser im Zuge der Installation erstellt werden soll.
Hierfür müssen Sie Benutzername und Passwort des Datenbank-Superusers am Ende der Seite angeben. Experimental=(experimentell) DatabaseRootLoginDescription=Anmeldedaten des Datenbank-Superusers zur Erstellung neuer Datenbanken und -benutzer. Sollten diese bereits existieren (z.B. weil Ihre Website bei einem Hosting-Provider liegt), ist diese Option nutzlos. -KeepEmptyIfNoPassword=Leer lassen um kein Passwort zu setzen (nicht empfohlen) +KeepEmptyIfNoPassword=Leer lassen wenn der Benutzer kein Passwort hat (nicht empfohlen) SaveConfigurationFile=Einstellungen speichern ConfigurationSaving=Speichern der Konfigurationsdatei ServerConnection=Serververbindung @@ -88,9 +92,13 @@ SystemIsInstalled=Die Installation wurde erfolgreich abgeschlossen. SystemIsUpgraded=Der Aktualisierungsvorgang wurde erfolgreich abgeschlossen. YouNeedToPersonalizeSetup=Nun sollten Sie dolibarr an Ihre Bedürfnisse anpassen (Aussehen, Funktionen, ...). Hierzu folgen Sie bitte dem untenstehenden Link: AdminLoginCreatedSuccessfuly=Das dolibarr-Administratorkonto '%s' wurde erfolgreich erstellt. +GoToDolibarr=Zu dolibarr wechseln GoToSetupArea=Zu den dolibarr-Einstellungen +MigrationNotFinished=Ihre Datenbankversion ist nicht auf dem neuesten Stand, bitte wiederholen Sie den Aktualisierungsvorgang. +GoToUpgradePage=Noch einmal zur Aktualisierungsseite Examples=Beispiele WithNoSlashAtTheEnd=Ohne Schrägstrich "/" am Ende +DirectoryRecommendation=Es empfiehlt sich die Verwendung eines Ordners außerhalb Ihres Webverzeichnisses. LoginAlreadyExists=Dieser Benutzername ist bereits vergeben DolibarrAdminLogin=Anmeldung für dolibarr-Administrator AdminLoginAlreadyExists=Ein Administratorkonto namens '%s' ist bereits vorhanden. @@ -119,7 +127,7 @@ YouMustCreateItAndAllowServerToWrite=Bitte erstellen Sie dieses Verzeichnis und CharsetChoice=Zeichensatzauswahl CharacterSetClient=Zeichensatz für die generierten HTML-Seiten CharacterSetClientComment=Wählen Sie den gewünschten Zeichensatz für die Anzeige im Web.
Standardmäßig empfiehlt sich jener Ihrer Datenbank. -CollationConnection=Reihenfolge der Zeichensortierung (Collation) +CollationConnection=Reihenfolge der Zeichensortierung CollationConnectionComment=Wählen Sie den page-code zur Definition der Sortierreihenfolge für Zeichen in der Datenbank. Dieser Parameter wird von einigen Datenbanken auch als "Collation" bezeichnet.
Dieser Wert kann nicht festgelegt werden, wenn die Datenbank bereits existiert. CharacterSetDatabase=Datenbankzeichensatz CharacterSetDatabaseComment=Wählen Sie den Zeichensatz für die anzulegende Datenbank.
Dieser Wert kann nicht festgelegt werden, wenn die Datenbank bereits existiert. @@ -129,59 +137,15 @@ BecauseConnectionFailedParametersMayBeWrong=Der Verbindungsaufbau ist fehlgeschl OrphelinsPaymentsDetectedByMethod=Verwaiste Zahlung gefunden durch Methode %s RemoveItManuallyAndPressF5ToContinue=Bitte manuell entfernen und F5 drücken um fortzufahren. KeepDefaultValuesWamp=Sie verwenden den DoliWamp-Installationsassistent, entsprechend sind die hier vorgeschlagenen Werte bereits optimiert. Ändern Sie diese nur wenn Sie wissen was Sie tun. +KeepDefaultValuesDeb=Sie verwenden den dolibarr-Installationsassistenten auf einem Ubuntu oder Debian-Paket, entsprechend sind die hier vorgeschlagenen Werte bereits optimiert. Sie müssen lediglich das Passwort des anzulegenden Datenbankbenutzers angeben. Ändern Sie die übrigen Parameter nur, wenn Sie wissen was Sie tun. KeepDefaultValuesMamp=Sie verwenden den DoliMamp-Installationsassistent, entsprechend sind die hier vorgeschlagenen Werte bereits optimiert. Ändern Sie diese nur wenn Sie wissen was Sie tun. +KeepDefaultValuesProxmox=Sie verwenden den Dolibarr Installationsassistenten einer Proxmox "virtual appliance". Die hier vorgeschlagenen Werte sind bereits optimiert. Bitte nehmen Sie nur Änderungen vor wenn Sie wissen was Sie tun. FieldRenamed=Feld umbenannt IfLoginDoesNotExistsCheckCreateUser=Sollte der Benutzer noch nicht existieren, müssen Sie das Kontrollkästchen "Benutzer erstellen" aktivieren ErrorConnection=Server %s', Datenbank '%s', Benutzer '%s' oder Datenbankpasswort scheinen falsch zu sein. Eventuell verhindert auch eine veraltete PHP- oder Datenbankversion den korrekten Verbindungsaufbau. -MigrationOrder=Datenmigration für Kundenbestellungen -MigrationSupplierOrder=Datenmigration für Lieferantenbestellungen -MigrationProposal=Datenmigration für Angebote -MigrationInvoice=Datenmigration für Kundenrechnungen -MigrationContract=Datenmigration für Verträge -MigrationSuccessfullUpdate=Aktualisierung erfolgreich -MigrationPaymentsUpdate=Zahlungsdatenkorrektur -MigrationPaymentsNumberToUpdate=%s Zahlung(en) zu aktualisieren -MigrationProcessPaymentUpdate=Aktualisiere Zahlunge(en) %s -MigrationPaymentsNothingToUpdate=Keine weiteren Schritte. -MigrationPaymentsNothingUpdatable=Keine weiteren, korrekturfähigen Zahlungen -MigrationContractsUpdate=Vertragsdatenkorrektur -MigrationContractsNumberToUpdate=%s Vertrag/Verträge zu aktualisieren -MigrationContractsLineCreation=Erstelle Vertragszeile für Vertrag Nr. %s -MigrationContractsNothingToUpdate=Keine weiteren Schritte. -MigrationContractsFieldDontExist=Feld fk_facture existiert nicht mehr. Keine weiteren Schritte. -MigrationContractsEmptyDatesUpdate=Korrektur nicht gesetzter Vertragsdaten -MigrationContractsEmptyDatesUpdateSuccess=Korrektur nicht gesetzter Vertragsdaten -MigrationContractsEmptyDatesNothingToUpdate=Kein nicht gesetztes Vertragsdatum zur Korrektur -MigrationContractsEmptyCreationDatesNothingToUpdate=Kein Vertragserstellungsdatum zur Korrektur -MigrationContractsInvalidDatesUpdate=Korrektur ungültiger Vertragsdaten -MigrationContractsInvalidDateFix=Korrigierte Vertrag %s (Vertragsdatum=%s, frühestes Leistungserbringungsdatum=%s) -MigrationContractsInvalidDatesNumber=%s Verträge geändert -MigrationContractsInvalidDatesNothingToUpdate=Kein ungültiges Vertragsdatum zur Korrektur -MigrationContractsIncoherentCreationDateUpdate=Korrektur ungültiger Vertragserstellungsdaten -MigrationContractsIncoherentCreationDateUpdateSuccess=Korrektur ungültiger Vertragserstellungsdaten erfolgreich -MigrationContractsIncoherentCreationDateNothingToUpdate=Kein ungültiges Vertragserstellungsdatum zur Korrektur -MigrationReopeningContracts=Durch Fehler geschlossenen Vertrag wiedereröffnen -MigrationReopenThisContract=Vertrag %s wiedereröffnen -MigrationReopenedContractsNumber=%s Verträge geändert -MigrationReopeningContractsNothingToUpdate=Keine geschlossenen Verträge zur Wiedereröffnung -MigrationBankTransfertsNothingToUpdate=Alle Banktransaktionen sind auf neuestem Stand. -MigrationShipmentOrderMatching=Aktualisiere Sendungsscheine -MigrationDeliveryOrderMatching=Aktualisiere Lieferscheine -MigrationDeliveryDetail=Aktualisiere Lieferungen - -GoToDolibarr=Zu dolibarr -GoToUpgradePage=Zur Aktualisierungsseite InstallChoiceRecommanded=Es empfiehlt sich eine Aktualisierung auf Version %s. Ihre aktuelle Version ist %s. InstallChoiceSuggested=Vom Installationsassistenten vorgeschlagene Wahl. -MigrationStockDetail=Produklagerwerte aktualisieren -MigrationMenusDetail=Tabellen der dynamischen Menüs aktualisieren -MigrationDeliveryAddress=Lieferadresse in Sendungen aktualisieren -MigrationUpdateFailed=Aktualisierungsvorgang fehlgeschlagen. -MigrationBankTransfertsUpdate=Verknüpfung zwischen Banktransaktion und einer Überweisung aktualisieren -ForceHttps=Sichere Verbindung (https) erzwingen -CheckToForceHttps=Aktivieren Sie diese Option, um sichere Verbindungen (https) zu erzwingen.
Hierfür ist ein auf Ihrem Webserver eingerichtetes SSL-Zertifikat erforderlich. -DirectoryRecommendation=Es empfiehlt sich die Verwendung eines Ordners außerhalb Ihres Webverzeichnisses. -KeepDefaultValuesDeb=Sie verwenden den dolibarr-Installationsassistenten auf einem Ubuntu oder Debian-Paket, entsprechend sind die hier vorgeschlagenen Werte bereits optimiert. Sie müssen lediglich das Passwort des anzulegenden Datenbankbenutzers angeben. Ändern Sie die übrigen Parameter nur, wenn Sie wissen was Sie tun. +MigrateIsDoneStepByStep=Die gewählte Version (%s) hat ein Lücke von mehrerer Versionen. Der Installationsassistent wird sich wieder melden, um die nächste Migration vorzuschlagen. Dies geschieht bis zur endgültigen Fertigstellung. CheckThatDatabasenameIsCorrect=Bitte überprüfen Sie die Schreibweise des Datenbanknamens "%s". IfAlreadyExistsCheckOption=Sollte dieser Name korrekt und die Datenbank noch nicht vorhanden sein, aktivieren Sie bitte das Kontrollkästchen "Datenbank erstellen". OpenBaseDir=PHP openbasedir Einstellungen @@ -191,13 +155,89 @@ NextStepMightLastALongTime=Der aktuelle Vorgang kann mehrere Minuten dauern. Hol MigrationCustomerOrderShipping=Kundenbestellungsversand aktualisieren MigrationShippingDelivery=Aktualisiere die Speicherung von Lieferungen (Versandart?) MigrationShippingDelivery2=Aktualisiere die Speicherung von Lieferungen 2 (Versandart 2?) -MigrationFixData=Denormalisierte Daten bereinigen -MigrationRelationshipTables=Datenmigration für Relationentabellen (%s) -MigrationProjectTaskActors=Datenmigration für llx_projet_task_actors Tabelle -MigrationProjectUserResp=Datenmigration des Feldes fk_user_resp von llx_projet nach llx_element_contact -MigrationProjectTaskTime=Aktualisiere aufgewandte Zeit (in Sekunden) -MigrationNotFinished=Ihre Datenbankversion ist nicht auf dem neuesten Stand, bitte wiederholen Sie den Aktualisierungsvorgang. +MigrationFinished=Migration beendet +LastStepDesc=Letzter Schritt: Legen Sie Ihr Logo und das Passwort fest, welches Sie für dolibarr verwenden möchten. Verlieren Sie diese Administrator-Passwort nicht, da es der "Generalschlüssel" ist. +######### +# upgrade +######### +MigrationFixData=Denormalisierte Daten bereinigen +MigrationOrder=Datenmigration für Kundenbestellungen +MigrationSupplierOrder=Datenmigration für Lieferantenbestellungen +MigrationProposal=Datenmigration für Angebote +MigrationInvoice=Datenmigration für Kundenrechnungen +MigrationContract=Datenmigration für Verträge +MigrationSuccessfullUpdate=Aktualisierung erfolgreich +MigrationUpdateFailed=Aktualisierungsvorgang fehlgeschlagen. +MigrationRelationshipTables=Datenmigration für Relationentabellen (%s) + +# Payments Update +MigrationPaymentsUpdate=Zahlungsdatenkorrektur +MigrationPaymentsNumberToUpdate=%s Zahlung(en) zu aktualisieren +MigrationProcessPaymentUpdate=Aktualisiere Zahlunge(en) %s +MigrationPaymentsNothingToUpdate=Keine weiteren Schritte. +MigrationPaymentsNothingUpdatable=Keine weiteren, korrekturfähigen Zahlungen + +# Contracts Update +MigrationContractsUpdate=Vertragsdatenkorrektur +MigrationContractsNumberToUpdate=%s Vertrag/Verträge zu aktualisieren +MigrationContractsLineCreation=Erstelle Vertragszeile für Vertrag Nr. %s +MigrationContractsNothingToUpdate=Keine weiteren Schritte. +MigrationContractsFieldDontExist=Feld fk_facture existiert nicht mehr. Keine weiteren Schritte. + +# Contracts Empty Dates Update +MigrationContractsEmptyDatesUpdate=Korrektur nicht gesetzter Vertragsdaten +MigrationContractsEmptyDatesUpdateSuccess=Korrektur nicht gesetzter Vertragsdaten +MigrationContractsEmptyDatesNothingToUpdate=Kein nicht gesetztes Vertragsdatum zur Korrektur +MigrationContractsEmptyCreationDatesNothingToUpdate=Kein Vertragserstellungsdatum zur Korrektur + +# Contracts Invalid Dates Update +MigrationContractsInvalidDatesUpdate=Korrektur ungültiger Vertragsdaten +MigrationContractsInvalidDateFix=Korrigierte Vertrag %s (Vertragsdatum=%s, frühestes Leistungserbringungsdatum=%s) +MigrationContractsInvalidDatesNumber=%s Verträge geändert +MigrationContractsInvalidDatesNothingToUpdate=Kein ungültiges Vertragsdatum zur Korrektur + +# Contracts Incoherent Dates Update +MigrationContractsIncoherentCreationDateUpdate=Korrektur ungültiger Vertragserstellungsdaten +MigrationContractsIncoherentCreationDateUpdateSuccess=Korrektur ungültiger Vertragserstellungsdaten erfolgreich +MigrationContractsIncoherentCreationDateNothingToUpdate=Kein ungültiges Vertragserstellungsdatum zur Korrektur + +# Reopening Contracts +MigrationReopeningContracts=Durch Fehler geschlossenen Vertrag wiedereröffnen +MigrationReopenThisContract=Vertrag %s wiedereröffnen +MigrationReopenedContractsNumber=%s Verträge geändert +MigrationReopeningContractsNothingToUpdate=Keine geschlossenen Verträge zur Wiedereröffnung + +# Migration transfer +MigrationBankTransfertsUpdate=Verknüpfung zwischen Banktransaktion und einer Überweisung aktualisieren +MigrationBankTransfertsNothingToUpdate=Alle Banktransaktionen sind auf neuestem Stand. + +# Migration delivery +MigrationShipmentOrderMatching=Aktualisiere Sendungsscheine +MigrationDeliveryOrderMatching=Aktualisiere Lieferscheine +MigrationDeliveryDetail=Aktualisiere Lieferungen + +# Migration stock +MigrationStockDetail=Produklagerwerte aktualisieren + +# Migration menus +MigrationMenusDetail=Tabellen der dynamischen Menüs aktualisieren + +# Migration delivery address +MigrationDeliveryAddress=Lieferadresse in Sendungen aktualisieren + +# Migration project task actors +MigrationProjectTaskActors=Datenmigration für llx_projet_task_actors Tabelle + +# Migration project user resp +MigrationProjectUserResp=Datenmigration des Feldes fk_user_resp von llx_projet nach llx_element_contact + +# Migration project task time +MigrationProjectTaskTime=Aktualisiere aufgewandte Zeit (in Sekunden) + +# Migration Acctioncom +MigrationActioncommElement=Aktualisiere die Maßnahmen +MigrationActioncommElement=Aktualisiere die Maßnahmen // START - Lines generated via autotranslator.php tool (2011-10-10 02:45:33). // Reference language: en_US -> de_DE @@ -218,3 +258,9 @@ ActivateModule=Aktivieren Modul %s MigrationActioncommElement=Aktualisieren Sie Daten über die Maßnahmen MigrationPaymentMode=Daten-Migration für die Zahlung Modus // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:03:40). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +WarningBrowserTooOld=Eine zu alte Version des Browsers. Upgrades in Ihrem Browser auf eine aktuelle Version von Firefox, Chrome oder Opera ist sehr empfehlenswert. +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:27:59). diff --git a/htdocs/langs/de_DE/languages.lang b/htdocs/langs/de_DE/languages.lang index 26672818557..b48cd38b84c 100644 --- a/htdocs/langs/de_DE/languages.lang +++ b/htdocs/langs/de_DE/languages.lang @@ -30,14 +30,15 @@ Language_nl_BE=Niederländisch (Belgien) Language_nl_NL=Niederländisch (Niederlande) Language_pl_PL=Polnisch Language_pt_BR=Portugiesisch (Brasilien) -Language_pt_PT=Portugiesisch +Language_pt_PT=Portugiesisch (Portugal) Language_ro_RO=Rumänisch Language_ru_RU=Russisch Language_tr_TR=Türkisch Language_sl_SI=Slowenisch +Language_sv_SV=Schwedisch +Language_sv_SE=Schwedisch Language_zh_CN=Chinesisch Language_is_IS=Isländisch -Language_sv_SV=Schwedisch // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). @@ -54,3 +55,10 @@ Language_hu_HU=Ungarisch Language_ru_UA=Russisch (Ukraine) Language_sv_SE=Schwedisch // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:05:21). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +Language_et_EE=Estnisch +Language_he_IL=Hebräisch +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:39). diff --git a/htdocs/langs/de_DE/ldap.lang b/htdocs/langs/de_DE/ldap.lang index 95537ee1335..78422ab93f9 100644 --- a/htdocs/langs/de_DE/ldap.lang +++ b/htdocs/langs/de_DE/ldap.lang @@ -27,11 +27,10 @@ LDAPFieldFirstSubscriptionDate=Datum der Erstmitgliedschaft LDAPFieldFirstSubscriptionAmount=Höhe des ersten Mitgliedsbeitrags LDAPFieldLastSubscriptionDate=Datum der letzten Mitgliedschaft LDAPFieldLastSubscriptionAmount=Höhe des letzten Mitgliedsbeitrags -SynchronizeDolibarr2Ldap=Systembenutzer & LDAP-Benutzer synchronisieren +SynchronizeDolibarr2Ldap=Systembenutzer synchronisieren (Dolibarr -> LDAP) UserSynchronized=Benutzer synchronisiert -ForceSynchronize=Erzwinge System-LDAP-Synchronisation -ErrorFailedToReadLDAP=Fehler beim Lesen der LDAP-Datenbank. Überprüfen Sie die Verfügbarkeit der Datenbank sowie die entsprechenden Moduleinstellungen. GroupSynchronized=Gruppe synchronisiert MemberSynchronized=Mitglied synchronisiert ContactSynchronized=Kontakt synchronisiert - +ForceSynchronize=Erzwinge Synchronisation Dolibarr -> LDAP +ErrorFailedToReadLDAP=Fehler beim Lesen der LDAP-Datenbank. Überprüfen Sie die Verfügbarkeit der Datenbank sowie die entsprechenden Moduleinstellungen. diff --git a/htdocs/langs/de_DE/mails.lang b/htdocs/langs/de_DE/mails.lang index 04fc58fad36..8b13d97efd0 100644 --- a/htdocs/langs/de_DE/mails.lang +++ b/htdocs/langs/de_DE/mails.lang @@ -64,55 +64,59 @@ YouCanAddYourOwnPredefindedListHere=Für nähere Informationen zur Erstellung Ih EMailTestSubstitutionReplacedByGenericValues=Im Testmodus werden die Variablen durch generische Werte ersetzt MailingAddFile=Diese Datei anhängen NoAttachedFiles=Keine angehängten Dateien +BadEMail=Ungültige E-Mail-Adresse +CloneEMailing=E-Mail Kampagne duplizieren +ConfirmCloneEMailing=Möchten Sie diese E-Mail Kampagne wirklich duplizieren? +CloneContent=Inhalt duplizieren +CloneReceivers=Empfängerliste duplizieren +DateLastSend=Datum des letzten Versands +DateSending=Versanddatum +SentTo=Versandt an %s + +# Libelle des modules de liste de destinataires mailing MailingModuleDescContactCompanies=Kontakte aller Partner (Kunden, Leads, Lieferanten, ...) MailingModuleDescDolibarrUsers=Alle Systembenutzer mit E-Mail-Adresse MailingModuleDescFundationMembers=Alle Stiftungsmitglieder mit E-Mail-Adresse MailingModuleDescEmailsFromFile=E-Mail-Adressen aus einer Text-Datei (Format: E-Mail, Vorname, Nachname) MailingModuleDescContactsCategories=Partnerkontakte (nach Kategorie) +MailingModuleDescDolibarrContractsLinesExpired=Partner mit abgelaufenen Vertragspositionen +MailingModuleDescContactsByCompanyCategory=Kontakt über Partner (durch Kategorie) +MailingModuleDescMembersCategories=Mitglieder der Stiftung (durch Kategorie) +MailingModuleDescContactsByFunction=Kontakt über Partner (durch Position/Funktion) + + LineInFile=Zeile %s in der Datei RecipientSelectionModules=Definiert Empfängerauswahlen MailSelectedRecipients=Ausgewählte Empfänger -MailingArea=E-Mail-Kampagnenübersicht -LastMailings=%s neueste E-Mail-Kampagnen +MailingArea=E-Mail Kampagnenübersicht +LastMailings=%s neueste E-Mail Kampagnen TargetsStatistics=Zielstatistiken NbOfCompaniesContacts=Einzigartige Partnerkontakte -MailNoChangePossible=Die Empfängerliste einer freigegebenen E-Mail-Kampagne kann nicht mehr geändert werden -SearchAMailing=Suche E-Mail-Kampagne -SendMailing=E-Mail-Kampagne versenden +MailNoChangePossible=Die Empfängerliste einer freigegebenen E-Mail Kampagne kann nicht mehr geändert werden +SearchAMailing=Suche E-Mail Kampagne +SendMailing=E-Mail Kampagne versenden SendMail=E-Mail versenden SentBy=Gesendet von -MailingNeedCommand=Aus Sicherheitsgründen sollten E-Mail-Kampagnen von der Kommandozeile aus versandt werden. Bitten Sie Ihren Administrator um die Ausführung des folgenden Befehls, um den Versand an alle Empfänger zu starten: +MailingNeedCommand=Aus Sicherheitsgründen sollten E-Mail Kampagnen von der Kommandozeile aus versandt werden. Bitten Sie Ihren Administrator um die Ausführung des folgenden Befehls, um den Versand an alle Empfänger zu starten: MailingNeedCommand2=Sie können den Versand jedoch auch online starten, indem Sie den Parameter MAILING_LIMIT_SENDBYWEB auf den Wert der pro Sitzung gleichzeitig zu versendenden Mails setzen. Die entsprechenden Einstellungen finden Sie unter Übersicht-Einstellungen-Andere. -ConfirmSendingEmailing=Möchten Sie diese E-Mail-Kampagne wirklich versenden?
Aus Sicherheitsgründen ist der gleichzeitige Versand auf %s Empfänger pro Sitzung beschränkt. +ConfirmSendingEmailing=Möchten Sie diese E-Mail Kampagne wirklich versenden?
Aus Sicherheitsgründen ist der gleichzeitige Versand auf %s Empfänger pro Sitzung beschränkt. +LimitSendingEmailing=Aus Sicherheits- und Zeitüberschreitungsgründen ist der Online-Versadn von E-Mails auf %s Empfänger je Sitzung beschränkt. TargetsReset=Liste leeren ToClearAllRecipientsClickHere=Klicken Sie hier, um die Empfängerliste zu leeren ToAddRecipientsChooseHere=Fügen Sie Empfänger über die Listenauswahl hinzu NbOfEMailingsReceived=Empfangene E-Mail-Kampagnen -IdRecord=Eintrags ID +IdRecord=Eintrag-ID DeliveryReceipt=Zustellbestätigung -Notifications=Benachrichtigungen -NoNotificationsWillBeSent=Für dieses Ereignis und diesen Partner sind keine Benachrichtigungen geplant -ANotificationsWillBeSent=1 Benachrichtigung wird per E-Mail versandt -SomeNotificationsWillBeSent=%s Benachrichtigungen werden per E-Mail versandt -AddNewNotification=Aktivieren Sie eine neue E-Mail-Benachrichtigungsanfrage -ListOfActiveNotifications=Liste aller aktiven E-Mail-Benachrichtigungen - -AllEMailings=Alle E-Mail-Kampagnen -ResetMailing=E-Mail-Kampagne erneut senden -ConfirmResetMailing=Achtung: Die neuerliche Ausführung der E-Mail-Kampagne %s erlaubt Ihnen den Massenversand von E-Mails zu einem anderen Zeitpunkt. Möchten Sie wirklich fortfahren? -BadEMail=Ungültige E-Mail-Adresse -CloneEMailing=E-Mail-Kampagne duplizieren -ConfirmCloneEMailing=Möchten Sie diese E-Mail-Kampagne wirklich duplizieren? -CloneContent=Inhalt duplizieren -CloneReceivers=Empfängerliste duplizieren -DateLastSend=Datum des letzten Versands -MailingModuleDescDolibarrContractsLinesExpired=Partner mit abgelaufenen Vertragspositionen YouCanUseCommaSeparatorForSeveralRecipients=Trennen Sie mehrere Empfänger mit einem Komma -DateSending=Versanddatum -SentTo=Versandt an %s -LimitSendingEmailing=Aus Sicherheits- und Zeitüberschreitungsgründen ist der Online-Versadn von E-Mails auf %s Empfänger je Sitzung beschränkt. -ListOfNotificationsDone=Liste aller versandten E-Mail-Benachrichtigungen +# Module Notifications +Notifications=Benachrichtigungen +NoNotificationsWillBeSent=Für dieses Ereignis und diesen Partner sind keine Benachrichtigungen geplant +ANotificationsWillBeSent=Eine Benachrichtigung wird per E-Mail versandt +SomeNotificationsWillBeSent=%s Benachrichtigungen werden per E-Mail versandt +AddNewNotification=Aktivieren Sie eine neue E-Mail-Benachrichtigungsanfrage +ListOfActiveNotifications=Liste aller aktiven E-Mail Benachrichtigungen +ListOfNotificationsDone=Liste aller versandten E-Mail Benachrichtigungen // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). @@ -122,3 +126,16 @@ MailingModuleDescContactsByCompanyCategory=Kontakte Dritter (durch Dritte Katego MailingModuleDescMembersCategories=Mitglieder der Stiftung (nach Kategorien) MailingModuleDescContactsByFunction=Kontakte von Dritten (von Position / Funktion) // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:03:43). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +AllEMailings=Alle Mailings +ResetMailing=E-Mail erneut senden +MailUnsubcribe=Abmelden +Unsuscribe=Abmelden +MailingStatusNotContact=Sie nicht mehr kontaktieren +ConfirmResetMailing=Achtung, nach erneuter Initialisierung per E-Mail %s, können Sie einen Massenversand von dieser E-Mail ein weiteres Mal zu machen. Sind Sie sicher, das ist, was du tun willst? +CheckRead=Lesebestätigung +YourMailUnsubcribeOK=Die E-Mail %s korrekt von Mailing-Liste abmelden +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:03). diff --git a/htdocs/langs/de_DE/main.lang b/htdocs/langs/de_DE/main.lang index 2087079b337..601aff95dca 100644 --- a/htdocs/langs/de_DE/main.lang +++ b/htdocs/langs/de_DE/main.lang @@ -27,13 +27,13 @@ ErrorCanNotReadDir=Kann Verzeichnis %s nicht lesen ErrorConstantNotDefined=Parameter %s nicht definiert ErrorUnknown=Unbekannter Fehler ErrorSQL=SQL-Fehler -ErrorLogoFileNotFound=Logo-Datei '%s' kann nicht gefunden werden -ErrorGoToGlobalSetup=Bitte wechseln Sie zu den 'Firma/Stiftung"-Einstellungen um das Problem zu beheben +ErrorLogoFileNotFound=Logo-Datei '%s' nicht gefunden +ErrorGoToGlobalSetup=Bitte wechseln Sie zu den 'Firma/Stiftung'-Einstellungen um das Problem zu beheben ErrorGoToModuleSetup=Bitte wechseln Sie zu den Moduleinstellungen um das Problem zu beheben -ErrorFailedToSendMail=Fehler beim Senden des Mails (Absender=%s, Empfänger=%s) -ErrorAttachedFilesDisabled=Die Dateianhangsfunktion ist auf diesem Server deaktiviert +ErrorFailedToSendMail=Fehler beim Senden der E-Mail (Absender=%s, Empfänger=%s) +ErrorAttachedFilesDisabled=Dateianhänge sind auf diesem Server deaktiviert ErrorFileNotUploaded=Die Datei konnte nicht hochgeladen werden. Stellen Sie sicher dass die Dateigröße nicht den gesetzten Maximalwert übersteigt, das Zielverzeichnis über genügend freien Speicherplatz verfügt und noch keine Datei mit gleichem Namen existiert. -ErrorInternalErrorDetected=Interner Fehler entdeckt +ErrorInternalErrorDetected=Internen Fehler entdeckt ErrorNoRequestRan=Abfrage ist nicht erfolgreich gelaufen ErrorWrongHostParameter=Ungültige Host-Parameter ErrorYourCountryIsNotDefined=Ihr Land ist nicht definiert. Bitte vervollständigen Sie das Profil unter Home-Einstellungen-Bearbeiten. @@ -42,16 +42,22 @@ ErrorWrongValue=Ungültiger Wert ErrorWrongValueForParameterX=Ungültiger Wert für den Parameter %s ErrorNoRequestInError=Keine Anfrage im Fehler ErrorServiceUnavailableTryLater=Dieser Service steht derzeit nicht zur Verfügung. Bitte versuchen Sie es später erneut. -ErrorDuplicateField=Dieser Wert muß einzigartig sein +ErrorDuplicateField=Dieser Wert ist nicht einzigartig (schon vorhanden) ErrorSomeErrorWereFoundRollbackIsDone=Einige Fehler wurden gefunden. Änderungen rückgängig gemacht. ErrorConfigParameterNotDefined=Parameter %s innerhalb der Konfigurationsdatei conf.php. nicht definiert. ErrorCantLoadUserFromDolibarrDatabase=Kann Benutzer %s nicht aus der Systemdatenbank laden. ErrorNoVATRateDefinedForSellerCountry=Keine MwSt.-Sätze für Verkäuferland '%s' definiert. +ErrorNoSocialContributionForSellerCountry=Für das Verkäuferland '%s' wurde kein Sozialbetrag definiert. ErrorFailedToSaveFile=Fehler beim Speichern der Datei. -ErrorOnlyPngJpgSupported=Bitte wählen Sie eine Datei im .jpg- oder .png-Dateiformat. +ErrorOnlyPngJpgSupported=Fehler: Es werden nur Dateien im Format .jpg oder .png unterstützt. ErrorImageFormatNotSupported=Ihre PHP-Konfiguration unterstützt keine Konvertierungsfunktionen für dieses Bildformat. +BackgroundColorByDefault=Standard-Hintergrundfarbe +FileWasNotUploaded=Ein Dateianhang wurde gewählt aber noch nicht hochgeladen. Klicken Sie auf "Datei anhängen" um den Vorgang zu starten. +NbOfEntries=Anzahl der Einträge +GoToWikiHelpPage=Zur Wiki-Hilfeseite (Internetzugang erforderlich) +GoToHelpPage=Zur Hilfeseite RecordSaved=Eintrag gespeichert -LevelOfFeature=Funktions-Level +LevelOfFeature=Funktionslevel NotDefined=Nicht definiert DefinedAndHasThisValue=Mit diesem Wert definiert IsNotDefined=Nicht definiert @@ -62,14 +68,15 @@ PasswordForgotten=Passwort vergessen? SeeAbove=Siehe oben HomeArea=Home LastConnexion=Letzte Verbindung -PreviousConnexion=Vorherige Verbindung +PreviousConnexion=Letzte Anmeldung +ConnectedOnMultiCompany=Mit Entität verbunden ConnectedSince=Verbunden seit AuthenticationMode=Authentifizierung-Modus RequestedUrl=Angeforderte URL DatabaseTypeManager=Datenbanktyp-Verwaltung RequestLastAccess=Anfrage des letzten Datenbankzugriffs -RequestLastAccessInError=Anfrage des letzten Datenbankzugriffs mit Fehler -ReturnCodeLastAccessInError=Return-Code des letzten Datenbankzugriffs mit Fehler +RequestLastAccessInError=Anfrage des letzten fehlerhaften Datenbankzugriffs +ReturnCodeLastAccessInError=Return-Code des letzten fehlerhaften Datenbankzugriffs InformationLastAccessInError=Inhalt des letzten Datenbankzugriffs mit Fehler DolibarrHasDetectedError=Das System hat einen technischen Fehler festgestellt InformationToHelpDiagnose=Diese Informationen könnten bei der Diagnose des Fehlers behilflich sein @@ -87,10 +94,13 @@ No=Nein All=Alle Home=Übersicht Help=Hilfe +OnlineHelp=Online-Hilfe +PageWiki=Wiki-Seite Always=Immer Never=Nie Under=Unter Period=Zeitraum +PeriodEndDate=Enddatum für Zeitraum Activate=Aktivieren Activated=Aktiviert Closed=Geschlossen @@ -99,6 +109,7 @@ Enabled=Aktiviert Disable=Deaktivieren Disabled=Deaktivert Add=Hinzufügen +AddLink=Link hinzufügen Update=Aktualisieren AddActionToDo=Zu erledigende Aufgabe hinzufügen AddActionDone=Erledigte Aufgabe hinzufügen @@ -118,30 +129,32 @@ Save=Speichern SaveAs=Speichern unter TestConnection=Verbindung testen ToClone=Duplizieren -CloneEMailing=E-Mail-Kampagne duplizieren -CloneContent=Nachricht duplizieren -CloneReceivers=Empfängerliste duplizieren ConfirmClone=Wählen Sie die zu duplizierenden Daten: -ConfirmCloneEMailing=Möchten Sie diese Mailkampagne wirklich duplizieren? NoCloneOptionsSpecified=Keine Duplikationsoptionen ausgewählt. +Of=von CopyOf=Duplikat von Show=Zeige +ShowCardHere=Zeige Karte Search=Suche Valid=Gültig Approve=Genehmigen ReOpen=Wiedereröffnen -Upload=Upload +Upload=Datei laden Select=Wählen Sie Choose=Wählen ChooseLangage=Bitte wählen Sie Ihre Sprache +Resize=Skalieren +Recenter=Zentrieren Author=Autor User=Benutzer Users=Benutzer Group=Gruppe Groups=Gruppen Password=Passwort -PasswordRetype=Geben Sie das Passwort erneut ein +PasswordRetype=Geben Sie das Passwort noch einmal ein +NoteSomeFeaturesAreDisabled=Bitte beachten Sie, dass einige Funktionen/Module in dieser Demo deaktiviert sind Name=Name +Person=Person Parameter=Parameter Parameters=Parameter Value=Wert @@ -167,6 +180,8 @@ DefaultModel=Standardvorlage Action=Aktion About=Über Number=Anzahl +NumberByMonth=Anzahl nach Monat +AmountByMonth=Umsatz nach Monat Numero=Nummer Limit=Grenze Limits=Grenzen @@ -185,6 +200,7 @@ DateStart=Beginndatum DateEnd=Enddatum DateCreation=Erstellungsdatum DateModification=Änderungsdatum +DateModificationShort=Änd.Datum DateLastModification=Datum der letzten Änderung DateValidation=Freigabedatum DateClosing=Schließungsdatum @@ -194,16 +210,20 @@ DateValueShort=Valutadatum DateOperation=Ausführungsdatum DateOperationShort=Ausf.Datum DateLimit=Frist -DateRequest=Verlange Datum +DateRequest=Anfragedatum DateProcess=Verarbeite Datum DatePlanShort=gepl. Datum DateRealShort=eff. Datum +DateBuild=Datum der Berichterstellung +DatePayment=Zahlungsziel DurationYear=Jahr DurationMonth=Monat +DurationWeek=Woche DurationDay=Tag DurationYears=Jahr DurationMonths=Monat -DurationDays=Tag +DurationWeeks=Wochen +DurationDays=Tage Year=Jahr Month=Monat Week=Woche @@ -214,18 +234,27 @@ Second=Zweitens Years=Jahre Months=Monate Days=Tage -days=Tag +days=Tage Hours=Stunde Minutes=Minuten Seconds=Sekunden Today=Heute Yesterday=Gestern Tomorrow=Morgen -Quadri=Quadri +Quadri=vierfach MonthOfDay=Tag des Monats HourShort=H Rate=Rate Bytes=Bytes +KiloBytes=Kilobyte +MegaBytes=Megabyte +GigaBytes=Gigabyte +TeraBytes=Terabyte +b=b. +Kb=Kb +Mb=Mb +Gb=Gb +Tb=Tb Cut=Ausschneiden Copy=Kopieren Paste=Einfügen @@ -234,19 +263,23 @@ DefaultValue=Standardwert DefaultGlobalValue=Globaler Standardwert Price=Preis UnitPrice=Stückpreis -UnitPriceHT=Nettopreis (Stk.) -UnitPriceTTC=Bruttopreis (Stk.) +UnitPriceHT=Stückpreis (netto) +UnitPriceTTC=Stückpreis (brutto) PriceU=VP PriceUHT=VP (netto) PriceUTTC=VP (brutto) Amount=Betrag AmountInvoice=Rechnungsbetrag AmountPayment=Zahlungsbetrag +AmountHTShort=Nettobetrag +AmountTTCShort=Bruttobetrag AmountHT=Nettobetrag AmountTTC=Bruttobetrag AmountVAT=MwSt.-Betrag +AmountLT1ES=RE Betrag +AmountLT2ES=Betrag IRPF AmountTotal=Gesamtbetrag -AmountAverage=Durchnschnittsbetrag +AmountAverage=Durchschnittsbetrag PriceQtyHT=Preis für diese Menge (netto) PriceQtyMinHT=Mindestmengenpreis (netto) PriceQtyTTC=Preis für diese Menge (brutto) @@ -254,10 +287,14 @@ PriceQtyMinTTC=Mindestmengenpreis (brutto) Percentage=Prozentbetrag Total=Gesamtbetrag SubTotal=Zwischensumme -TotalHT=Nettosumme +TotalHTShort=Nettosumme +TotalTTCShort=Gesamtbetrag (inkl. MwSt.) +TotalHT=Gesamtpreis TotalTTC=Bruttosumme TotalTTCToYourCredit=Bruttosumme -TotalVAT=Steuer gesamt +TotalVAT=MwSt. +TotalLT1ES=Summe RE +TotalLT2ES=Summe IRPF IncludedVAT=inkl. MwSt. HT=Netto TTC=Brutto @@ -271,10 +308,11 @@ Option=Option List=Liste FullList=Vollständige Liste Statistics=Statistik +OtherStatistics=Weitere Statistiken Status=Status -Ref=Nr. -RefSupplier=Lieferanten Nr. -RefPayment=Zahlungs Nr. +Ref=Nummer +RefSupplier=Lieferanten-Nr. +RefPayment=Zahlungs-Nr. CommercialProposals=Angebote Comment=Kommentar Comments=Kommentare @@ -283,6 +321,7 @@ ActionsDone=Erledigte Maßnahmen ActionsToDoShort=Zu erledigen ActionsRunningshort=Begonnen ActionsDoneShort=Erledigt +ActionNotApplicable=Nicht anwendbar ActionRunningNotStarted=Nicht begonnen ActionRunningShort=Begonnen ActionDoneShort=Abgeschlossen @@ -302,9 +341,10 @@ TotalDuration=Gesamtdauer Summary=Zusammenfassung MyBookmarks=Meine Lesezeichen OtherInformationsBoxes=Boxen mit Zusatzinformationen -DolibarrBoard=dolibarr Übersciht +DolibarrBoard=Dolibarr Übersciht DolibarrStateBoard=Statistik DolibarrWorkBoard=Aufgabenübersicht +Available=Verfügbar NotYetAvailable=Noch nicht verfügbar NotAvailable=Nicht verfügbar Popularity=Beliebtheit @@ -317,12 +357,15 @@ and=und or=oder Other=Andere Others=Andere +OtherInformations=Zusatzinformationen Quantity=Menge Qty=Menge ChangedBy=Geändert von -ReCalculate=Neu aufbauen +ReCalculate=Neu berechnen ResultOk=Erfolg ResultKo=Fehlschlag +Reporting=Berichterstattung +Reportings=Berichterstattungen Draft=Entwurf Drafts=Entwürfe Validated=Freigegeben @@ -346,12 +389,14 @@ NextStep=Nächster Schritt PreviousStep=Schritt zurück Datas=Daten None=Keine +NoneF=Keine Late=Verspätet Photo=Bild Photos=Bilder AddPhoto=Bild hinzufügen +Login=Anmeldung CurrentLogin=Aktuelle Anmeldung -January=Jänner +January=Januar February=Februar March=März April=April @@ -363,152 +408,18 @@ September=September October=Oktober November=November December=Dezember -AttachedFiles=Angehängte Dateien und Dokumente -DateFormatYYYYMM=MM-YYYY -DateFormatYYYYMMDD=DD-MM-YYYY -DateFormatYYYYMMDDHHMM=DD-MM-YYYY HH:SS -ReportName=Berichtname -ReportPeriod=Berichtszeitraum -ReportDescription=Beschreibung -Report=Bericht -Keyword=Stichwort -Legend=Legende -FillTownFromZip=Stadt aus PLZ ergänzen -ShowLog=Zeige Protokoll -File=Datei -Files=Dateien -NotAllowed=Nicht erlaubt -ReadPermissionNotAllowed=Sie haben keine Leseberechtigung -AmountInCurrency=Betrag in %s -Example=Beispiel -NoExample=Kein Beispiel -FindBug=Fehler melden -NbOfThirdParties=Anzahl der Partner -NbOfCustomers=Anzahl der Kundena -NbOfLines=Anzahl der Positionen -NbOfObjects=Anzahl der Objekte -NbOfReferers=Anzahl der Verweise -Referers=Verweise -TotalQuantity=Gesamtmenge -DateFromTo=Von %s bis %s -DateFrom=Von %s -DateUntil=Bis %s -Check=Prüfen -Internal=Intern -External=Extern -Internals=Interne -Externals=Externe -Warning=Warnung -Warnings=Warnungen -BuildPDF=Erstelle PDF -RebuildPDF=PDF neu erstellen -BuildDoc=Erstelle Doc -RebuildDoc=Dokument neu erzeugen -Entity=Entität -Entities=Entitäten -EventLogs=Protokolle -CustomerPreview=Kundenvorschau -SupplierPreview=Lieferantenvorschau -AccountancyPreview=Buchhaltungsvorschau -ShowCustomerPreview=Zeige Kundenvorschau -ShowSupplierPreview=Zeige Lieferantenvorschau -ShowAccountancyPreview=Zeige Buchhaltungsvorschau -RefCustomer=Kunden Nr. -Currency=Währung -InfoAdmin=Hinweise für Administratoren -Undo=Rückgängig -Redo=Wiederherstellen -ExpandAll=Alle ausklappen -UndoExpandAll=Ausklappen rückgängig machen -FeatureNotYetSupported=Diese Funktion wird (noch) nicht unterstützt -CloseWindow=Fenster schließen -Question=Frage -Response=Antwort -Priority=Wichtigkeit -MailSentBy=E-Mail-Absender -TextUsedInTheMessageBody=E-Mail-Text -SendAcknowledgementByMail=Kenntnisnahme per E-Mail bestätigen -NoEMail=Keine E-Mails -Owner=Eigentümer -DetectedVersion=Erkannte Version -FollowingConstantsWillBeSubstituted=Nachfolgende Konstanten werden durch entsprechende Werte ersetzt. -Refresh=Aktualisieren -BackToList=Zurück zur Liste -GoBack=Zurück -CanBeModifiedIfOk=Änderung möglich falls gültig -CanBeModifiedIfKo=Änderung möglich falls ungültig -RecordModifiedSuccessfully=Wert erfolgreich geändert -AutomaticCode=Automatischer Code -NotManaged=Nicht verwaltet -FeatureDisabled=Funktion deaktiviert -MoveBox=Box %s bewegen -Offered=Angeboten -NotEnoughPermissions=Ihre Berechtigungen reichen hierfür nicht aus -SessionName=Sitzungsname -Method=Methode -Receive=Erhalte -PartialWoman=Teilweise -PartialMan=Teilweise -TotalWoman=Vollständig -TotalMan=Vollständig -NeverReceived=Nie erhalten -Canceled=Storniert -YouCanChangeValuesForThisListFromDictionnarySetup=Sie können die Listenoptionen in den Wörterbuch-Einstellungen anpassen -Color=Farbe -Documents=Verknüpfte Dokumente -Documents2=Dokumente -BuildDocuments=Erzeugte Dokumente -UploadDisabled=Upload deaktiviert -MenuECM=Dokumente -MenuAWStats=Statistiken -MenuMembers=Mitglieder -MenuAgendaGoogle=Google-Agenda -ThisLimitIsDefinedInSetup=Gesetzte System-Limits (Menü Home-Einstellungen-Sicherheit): %s Kb, PHP Limit: %s Kb -NoFileFound=Keine Dokumente in diesem Verzeichnis -CurrentUserLanguage=Aktuelle Benutzersprache -CurrentTheme=Aktuelle Oberfläche -DisabledModules=Deaktivierte Module -For=Für -ForCustomer=Für Kunden -Signature=Unterschrift -HidePassword=Sichere Passworteingabe (Zeichen nicht angezeigt) -UnHidePassword=Passwort-Zeichen anzeigen -Root=Stammordner -Monday=Montag -Tuesday=Dienstag -Wednesday=Mittwoch -Thursday=Donnerstag -Friday=Freitag -Saturday=Samstag -Sunday=Sonntag -ShortMonday=Mo -ShortTuesday=Di -ShortWednesday=Mi -ShortThursday=Do -ShortFriday=Fr -ShortSaturday=Sa -ShortSunday=So - -GoToWikiHelpPage=Zur Wiki-Hilfeseite (Internetzugang erforderlich) -GoToHelpPage=Zur Hilfeseite -ConnectedOnMultiCompany=Mit Entität verbunden -OnlineHelp=Online-Hilfe -PageWiki=Wiki-Seite -PeriodEndDate=Enddatum für Zeitraum -ShowCardHere=Zeige Karte -NoteSomeFeaturesAreDisabled=Bitte beachten Sie, dass einige Funktionen/Module in dieser Demo deaktiviert sind -Person=Person -DateModificationShort=Änd.Datum -DateBuild=Datum der Berichterstellung -DurationWeek=Woche -DurationWeeks=Wochen -AmountHTShort=Nettobetrag -AmountTTCShort=Bruttobetrag -TotalHTShort=Nettosumme -TotalTTCShort=Gesamtbetrag (inkl. MwSt.) -OtherInformations=Zusatzinformationen -NoneF=Keine -Login=Anmeldung +JanuaryMin=Jan +FebruaryMin=Feb +MarchMin=Mar +AprilMin=Apr +MayMin=Mai +JuneMin=Jun +JulyMin=Jul +AugustMin=Aug +SeptemberMin=Sep +OctoberMin=Okt +NovemberMin=Nov +DecemberMin=Deu Month01=Januar Month02=Februar Month03=März @@ -533,56 +444,138 @@ MonthShort09=Sep MonthShort10=Okt MonthShort11=Nov MonthShort12=Dez +AttachedFiles=Angehängte Dateien und Dokumente FileTransferComplete=Datei wurde erfolgreich hochgeladen +DateFormatYYYYMM=MM-YYYY +DateFormatYYYYMMDD=DD-MM-YYYY +DateFormatYYYYMMDDHHMM=DD-MM-YYYY HH:SS +ReportName=Berichtsname +ReportPeriod=Berichtszeitraum +ReportDescription=Beschreibung +Report=Bericht +Keyword=Stichwort +Legend=Legende +FillTownFromZip=Stadt zur PLZ ergänzen +ShowLog=Zeige Protokoll +File=Datei +Files=Dateien +NotAllowed=Nicht erlaubt +ReadPermissionNotAllowed=Sie haben keine Leseberechtigung +AmountInCurrency=Betrag in %s Währung +Example=Beispiel +Examples=Beispiele +NoExample=Kein Beispiel +FindBug=Fehler melden +NbOfThirdParties=Anzahl der Partner +NbOfCustomers=Anzahl der Kunden +NbOfLines=Anzahl der Positionen +NbOfObjects=Anzahl der Objekte +NbOfReferers=Anzahl der Verweise +Referers=Verweise +TotalQuantity=Gesamtmenge +DateFromTo=Von %s bis %s +DateFrom=Von %s +DateUntil=Bis %s +Check=Prüfen +Internal=Intern +External=Extern +Internals=Interne +Externals=Externe +Warning=Warnung +Warnings=Warnungen +BuildPDF=Erstelle PDF +RebuildPDF=PDF neu erstellen +BuildDoc=Erstelle Doc +RebuildDoc=Doc neu erzeugen +Entity=Entität +Entities=Entitäten +EventLogs=Protokolle +CustomerPreview=Kundenvorschau +SupplierPreview=Lieferantenvorschau +AccountancyPreview=Buchhaltungsvorschau +ShowCustomerPreview=Zeige Kundenvorschau +ShowSupplierPreview=Zeige Lieferantenvorschau +ShowAccountancyPreview=Zeige Buchhaltungsvorschau ShowProspectPreview=Zeige Lead-Vorschau +RefCustomer=Ihre Zeichen +Currency=Währung +InfoAdmin=Hinweise für Administratoren +Undo=Rückgängig +Redo=Wiederherstellen +ExpandAll=Alle ausklappen +UndoExpandAll=Ausklappen rückgängig machen +Reason=Grund +FeatureNotYetSupported=Diese Funktion wird (noch) nicht unterstützt +CloseWindow=Fenster schließen +Question=Frage +Response=Antwort +Priority=Wichtigkeit +SendByMail=Per E-Mail versenden +MailSentBy=E-Mail Absender +TextUsedInTheMessageBody=E-Mail Text +SendAcknowledgementByMail=Kenntnisnahme per E-Mail bestätigen +NoEMail=Keine E-Mail +Owner=Eigentümer +DetectedVersion=Erkannte Version +FollowingConstantsWillBeSubstituted=Nachfolgende Konstanten werden durch entsprechende Werte ersetzt. +Refresh=Aktualisieren +BackToList=Zurück zur Liste +GoBack=Zurück +CanBeModifiedIfOk=Änderung möglich falls gültig +CanBeModifiedIfKo=Änderung möglich falls ungültig +RecordModifiedSuccessfully=Wert erfolgreich geändert +AutomaticCode=Automatischer Code +NotManaged=Nicht verwaltet +FeatureDisabled=Funktion deaktiviert +MoveBox=Box %s bewegen +Offered=angeboten +NotEnoughPermissions=Ihre Berechtigungen reichen hierfür nicht aus +SessionName=Sitzungsname +Method=Methode +Receive=Erhalten +PartialWoman=Teilweise +PartialMan=Teilweise +TotalWoman=Vollständig +TotalMan=Vollständig +NeverReceived=Nie erhalten +Canceled=Storniert +YouCanChangeValuesForThisListFromDictionnarySetup=Sie können die Listenoptionen in den Wörterbuch-Einstellungen anpassen +Color=Farbe +Documents=Verknüpfte Dokumente +DocumentsNb=Verknüpfte Dateien (%s) +Documents2=Dokumente +BuildDocuments=Erzeugte Dokumente +UploadDisabled=Upload deaktiviert +MenuECM=Dokumente +MenuAWStats=Statistiken +MenuMembers=Mitglieder +MenuAgendaGoogle=Google-Agenda +ThisLimitIsDefinedInSetup=Gesetzte Dolibarr-Limits (Menü Home-Einstellungen-Sicherheit): %s Kb, PHP Limit: %s Kb +NoFileFound=Keine Dokumente in diesem Verzeichnis +CurrentUserLanguage=Aktuelle Benutzersprache +CurrentTheme=Aktuelle Oberfläche +DisabledModules=Deaktivierte Module +For=Für +ForCustomer=Für Kunden +Signature=Unterschrift +HidePassword=Sichere Passworteingabe (Zeichen nicht angezeigt) +UnHidePassword=Passwort in Klartext anzeigen +Root=Stammordner Informations=Informationen Page=Seite Notes=Hinweise AddNewLine=Neue Zeile hinzufügen AddFile=Datei hinzufügen -ListOfFiles=Dateiliste +ListOfFiles=Liste verfügbarer Dateien FreeZone=Freier Text CloneMainAttributes=Objekt mit Haupteigenschaften duplizieren PDFMerge=PDFs verbinden Merge=Verbinden -Day1=Montag -Day2=Dienstag -Day3=Mittwoch -Day4=Donnerstag -Day5=Freitag -Day6=Samstag -Day0=Sonntag - -FormatHourShortDuration=%H:%M -NoError=Kein Fehler -ErrorNoSocialContributionForSellerCountry=Für das Verkäuferland '%s' wurde kein Sozialbetrag definiert. -BackgroundColorByDefault=Standard-Hintergrundfarbe -FileWasNotUploaded=Ein Dateianhang wurde gewählt aber noch nicht hochgeladen. Klicken Sie auf "Datei anhängen" um den Vorgang zu starten. -NbOfEntries=Anzahl der Einträge -Resize=Skalieren -Recenter=Zentrieren -NumberByMonth=Anzahl nach Monat -KiloBytes=Kilobyte -MegaBytes=Megabyte -GigaBytes=Gigabyte -b=b. -Kb=Kb -Mb=Mb -Gb=Gb -AmountLT1ES=RE Betrag -AmountLT2ES=Betrag IRPF -TotalLT1ES=Summe RE -TotalLT2ES=Summe IRPF -Available=Verfügbar -Reporting=Berichterstattung -Reportings=Berichterstattungen -Examples=Beispiele -Reason=Grund -SendByMail=Per E-Mail versenden -DocumentsNb=Verknüpfte Dateien (%s) PrintContentArea=Zeige Druckansicht für Seiteninhalt NoMenu=Kein Untermenü WarningYouAreInMaintenanceMode=Achtung: Die Anwendung befindet sich im Wartungsmodus und kann derzeit nur von Benutzer %s verwendet werden. +CoreErrorTitle=Systemfehler +CoreErrorMessage=Entschulding, ein Fehler ist aufgetreten. Prüfen die die Logdateien oder benachrichtigen Sie den Administrator. CreditCard=Kreditkarte FieldsWithAreMandatory=Felder mit %s sind Pflichtfelder FieldsWithIsForPublic=Felder mit %s sind für Mitglieder öffentlich sichtbar. Über die "Öffentlich"-Checkbox können Sie dies ändern. @@ -599,9 +592,46 @@ Hidden=Versteckt Resources=Ressourcen Source=Quelle Prefix=Präfix +Befor=Davor +After=Danach +IPAddress=IP Adresse +Frequency=Frequenz +IM=Instant Messaging NewAttribute=Neues Attribut -AttributeCode=Attribut-Code -OptionalFieldsSetup=Optionale Felder einrichten +AttributeCode=Attribut Code +OptionalFieldsSetup=Zusätzliche Attributeinstellungen +URLPhoto=URL für Foto/Bild +SetLinkToThirdParty=Link zu einem Partner + +# Week day +Monday=Montag +Tuesday=Dienstag +Wednesday=Mittwoch +Thursday=Donnerstag +Friday=Freitag +Saturday=Samstag +Sunday=Sonntag +MondayMin=Mo +TuesdayMin=Di +WednesdayMin=Mi +ThursdayMin=Do +FridayMin=Fr +SaturdayMin=Sa +SundayMin=So +Day1=Montag +Day2=Dienstag +Day3=Mittwoch +Day4=Donnerstag +Day5=Freitag +Day6=Samstag +Day0=Sonntag +ShortMonday=Mo +ShortTuesday=Di +ShortWednesday=Mi +ShortThursday=Do +ShortFriday=Fr +ShortSaturday=Sa +ShortSunday=So // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). @@ -659,3 +689,13 @@ FridayMin=Fr SaturdayMin=Sa SundayMin=Su // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:05:57). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +FormatHourShortDuration=%H:%M +NoError=Es ist kein Fehler +SeeAlso=Siehe auch %s +ContactsAddressesForCompany=Ansprechpartner / Adressen für diesen Dritten +AddressesForCompany=Adressen für diesen Dritten +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:46). diff --git a/htdocs/langs/de_DE/members.lang b/htdocs/langs/de_DE/members.lang index f588ed6d4b3..28af2fc24dd 100644 --- a/htdocs/langs/de_DE/members.lang +++ b/htdocs/langs/de_DE/members.lang @@ -18,11 +18,16 @@ UserNotLinkedToMember=Der Benutzer ist keinem Mitglied zugewiesen MembersTickets=Tickets von Mitgliedern FundationMembers=Stiftungsmitglieder Attributs=Attribute -Person=Person ErrorMemberTypeNotDefined=Mitgliedstyp nicht definiert ListOfPublicMembers=Liste der öffentlichen Mitglieder ListOfValidatedPublicMembers=Liste der freigegebenen, öffentlichen Mitglieder ErrorThisMemberIsNotPublic=Dieses Mitglied ist nicht öffentlich +ErrorMemberIsAlreadyLinkedToThisThirdParty=Ein anderes Mitglied (Name: %s, Benutzername: %s) ist bereits mit dem Partner %s verbunden. Bitte entfernen Sie diese Verknüpfung zuerst, da ein Partner nur einem Mitglied zugewiesen sein kann (und umgekehrt). +ErrorUserPermissionAllowsToLinksToItselfOnly=Aus Sicherheitsgründen müssen Sie die Berechtigungen zur Mitgliederbearbeitung besitzen, um ein Mitglied mit einem fremden Benutzerkonto (einem anderen als Ihrem eigenen) zu verknüpfen. +ThisIsContentOfYourCard=Dies sind die Details Ihrer Karte +CardContent=Inhalt der Mitgliedskarte +SetLinkToUser=Mit Benutzer verknüpft +SetLinkToThirdParty=Mit Partner verknüpft MembersCards=Visitenkarten der Mitglieder MembersList=Liste der Mitglieder MembersListToValid=Liste freizugebender Mitglieder @@ -34,17 +39,20 @@ MembersListQualified=Liste der qualifizierten Mitglieder MenuMembersToValidate=Freizugebende Mitglieder MenuMembersValidated=Freigegebene Mitglieder MenuMembersUpToDate=Aktuelle Mitglieder -MenuMembersNotUpToDate=Veraltete Mitglieder +MenuMembersNotUpToDate=Deaktivierte Mitglieder MenuMembersResiliated=Zurückgestellte Mitglieder -DateAbonment=Abonnierungsdatum -DateSubscription=Abonnierungsdatum -DateNextSubscription=Nächstes Abonnement -DateEndSubscription=Abonnementauslaufdatum -EndSubscription=Abonnementende +MembersWithSubscriptionToReceive=Mitglieder mit ausstehendem Beitrag +DateAbonment=Abo-Datum +DateSubscription=Abo-Datum +DateNextSubscription=Nächstes Abo +DateEndSubscription=Abo-Ablaufdatum +EndSubscription=Abo-Ende +SubscriptionId=Abonnement-ID +MemberId=Mitglieds-ID NewMember=Neues Mitglied -NewType=Typ des neuen Mitglieds +NewType=Neue Mitgliedsart MemberType=Mitgliedsart -MemberTypeId=Mitgliedsart ID +MemberTypeId=ID Mitgliedsart MemberTypeLabel=Bezeichnung der Mitgliedsart MembersTypes=Mitgliedsarten MembersAttributes=Mitgliedsattribute @@ -69,13 +77,15 @@ MembersStatusNotPaidShort=Veraltet MembersStatusResiliated=Zurückgestellte Mitglieder MembersStatusResiliatedShort=Zurückgestellte NewCotisation=Neuer Beitrag +PaymentSubscription=Neue Beitragszahlung EditMember=Mitglied bearbeiten -SubscriptionEndDate=Abonnementauslaufdatum +SubscriptionEndDate=Abonnement Ablaufdatum MembersTypeSetup=Mitgliedsarten einrichten NewSubscription=Neues Abonnement +NewSubscriptionDesc=In diesem Formular können Sie Ihr Abonnement als neues Mitglied der Stiftung angeben. Wenn Sie Ihr Abonnement erneuern (falls Sie Mitglied sind) wollen, kontaktieren Sie bitte den Stiftungsrat per E-Mail %s. Subscription=Abonnement Subscriptions=Abonnements -SubscriptionLate=Versätet +SubscriptionLate=Verspätet SubscriptionNotReceived=Abonnement nie erhalten SubscriptionLateShort=Verspätet SubscriptionNotReceivedShort=Nie erhalten @@ -84,15 +94,15 @@ SendCardByMail=Karte per E-Mail versenden AddMember=Mitglied hinzufügen MemberType=Mitgliedsart NoTypeDefinedGoToSetup=Sie haben noch keine Mitgliedsarten definiert. Sie können dies unter Einstellungen-Mitgliedsarten vornehmen. -NewMemberType=Neues Mitgliedsrt -WelcomeEMail=Willkommens-E-Mail +NewMemberType=Neue Mitgliedsart +WelcomeEMail=Willkommen E-Mail SubscriptionRequired=Abonnement erforderlich EditType=Mitgliedsart bearbeiten DeleteType=Mitgliedsart löschen VoteAllowed=Stimmrecht -Physical=Physisch -Moral=Rechtlich -MorPhy=Physisch/Rechtlich +Physical=Aktiv +Moral=Passiv +MorPhy=Moralisch/Physisch Reenable=Reaktivieren ResiliateMember=Mitglied zurückstellen ConfirmResiliateMember=Möchten Sie dieses Mitglied wirklich zurückstellen? @@ -100,22 +110,25 @@ DeleteMember=Mitglied löschen ConfirmDeleteMember=Möchten Sie dieses Mitglied wirklich löschen (dies entfernt auch alle verbundenen Abonnements)? DeleteSubscription=Abonnement löschen ConfirmDeleteSubscription=Möchten Sie dieses Abonnement wirklich löschen? -Filehtpasswd=htpasswd-Datei +Filehtpasswd=htpasswd Datei ValidateMember=Mitglied freigeben ConfirmValidateMember=Möchten Sie dieses Mitglied wirklich freigeben? FollowingLinksArePublic=Die folgenden Links sind öffentlich zugängliche Seiten und als solche nicht durch die Zugriffskontrolle des Systems geschützt. Es handelt sich dabei zudem um unformatierte Seiten, die beispielsweise eine Liste aller in der Datenbank eingetragenen Mitglieder anzeigen. PublicMemberList=Liste öffentlicher Mitglieder BlankSubscriptionForm=Leeres Abonnementformular +BlankSubscriptionFormDesc=Dolibarr Deutschland beitet ihnen eine öffentliche URL an +EnablePublicSubscriptionForm=Freigabe des öffentlichen Abo-Formulars MemberPublicLinks=Öffentliche Links/Seiten ExportDataset_member_1=Mitglieder und Abonnements +ImportDataset_member_1=Mitglieder LastMembers=%s neueste Mitglieder LastMembersModified=%s zuletzt bearbeitete Mitglieder AttributeName=Attributname -FieldEdition=Feldbearbeitung %s +FieldEdition=Ausgabe des Feldes %s AlphaNumOnlyCharsAndNoSpace=ausschließlich alphanumerische Zeichen (ohne Leerzeichen) String=Zeichenkette Text=Text -Int=Zahl +Int=Integer Date=Datum DateAndTime=Datum und Uhrzeit PublicMemberCard=Öffentliche Mitgliedskarte @@ -124,37 +137,29 @@ AddSubscription=Abonnement hinzufügen ShowSubscription=Zeige Abonnement MemberModifiedInDolibarr=Mitglied bearbeitet SendAnEMailToMember=Informations-E-Mail an Mitglied senden +DescADHERENT_AUTOREGISTER_MAIL_SUBJECT=E-Mail-Betreff für automat. Mitgliederabonnements +DescADHERENT_AUTOREGISTER_MAIL=E-Mail-Text für autom. Mitgliederabonnements DescADHERENT_MAIL_VALID_SUBJECT=E-Mail-Betreff bei Mitgliederfreigabe DescADHERENT_MAIL_VALID=E-Mail-Text für Mitgliederfreigabe DescADHERENT_MAIL_COTIS_SUBJECT=E-Mail-Betreff für (Mitglieds-)Beiträge DescADHERENT_MAIL_COTIS=E-Mail-Text für (Mitglieds-)Beiträge -DescADHERENT_MAIL_RESIL_SUBJECT=E-Mail-Betreff für Zurückstellen eines Mitglieds -DescADHERENT_MAIL_RESIL=E-Mail-Text für Zurückstellen eines Mitglieds +DescADHERENT_MAIL_RESIL_SUBJECT=E-Mail-Betreff beim Zurückstellen eines Mitglieds +DescADHERENT_MAIL_RESIL=E-Mail-Text beim Zurückstellen eines Mitglieds DescADHERENT_MAIL_FROM=Absender E-Mail-Adresse für automatische Mails DescADHERENT_ETIQUETTE_TYPE=Format der Etikettenseite +DescADHERENT_CARD_TYPE=Format der Kartenseite DescADHERENT_CARD_HEADER_TEXT=Text für den Druck oben auf der Mitgliedskarte DescADHERENT_CARD_TEXT=Text für den Druck auf der Mitgliedskarte (linksbündig) +DescADHERENT_CARD_TEXT_RIGHT=Text für den Druck auf der Mitgliedskarte (rechtsbündig) DescADHERENT_CARD_FOOTER_TEXT=Text für den Druck unten auf der Mitgliedskarte +DescADHERENT_MAILMAN_LISTS=Liste(n) für die autom. Einschreibung neuer Mitglieder (kommagetrennt) +GlobalConfigUsedIfNotDefined=Der verwendete Text wird in Stiftungsmodul festgelegt. Ist dieser Text nicht definiert, dann über Einstellungen festlegen. +MayBeOverwrited=Dieser Text kann mit der Definition im Mitgliedstyp überschrieben werden. ShowTypeCard=Zeige Typ '%s' -HTPasswordExport=htpassword-Dateierstellung -ErrorMemberIsAlreadyLinkedToThisThirdParty=Ein anderes Mitglied (Name: %s, Benutzername: %s) ist bereits mit dem Partner %s verbunden. Bitte entfernen Sie diese Verknüpfung zuerst, da ein Partner nur einem Mitglied zugewiesen sein kann (und umgekehrt). -ErrorUserPermissionAllowsToLinksToItselfOnly=Aus Sicherheitsgründen müssen Sie die Berechtigungen zur Mitgliederbearbeitung besitzen, um ein Mitglied mit einem fremden Benutzerkonto (einem anderen als Ihrem eigenen) zu verknüpfen. -ThisIsContentOfYourCard=Dies sind die Detail Ihrer Karte -CardContent=Inhalt der Mitgliedskarte -SetLinkToUser=Mit Benutzer verknüpfen -SetLinkToThirdParty=Mit Partner verknüpfen -SubscriptionId=Abonnement ID -MemberId=Mitglieds ID -PaymentSubscription=Neue Beitragszahlung +HTPasswordExport=Datei erstellen für htpassword NoThirdPartyAssociatedToMember=Mit diesem Mitglied ist kein Partner verknüpft ThirdPartyDolibarr=Partner MembersAndSubscriptions=Mitglieder und Abonnements -DescADHERENT_AUTOREGISTER_MAIL_SUBJECT=E-Mail-Betreff für automat. Mitgliederabonnements -DescADHERENT_AUTOREGISTER_MAIL=E-Mail-Text für autom. Mitgliederabonnements -DescADHERENT_CARD_TYPE=Format der Kartenseite -DescADHERENT_CARD_TEXT_RIGHT=Text für den Druck auf der Mitgliedskarte (rechtsbündig) -DescADHERENT_MAILMAN_LISTS=Liste(n) für die autom. Einschreibung neuer Mitglieder (kommagetrennt) - MoreActions=Ergänzende Erfassungsmaßnahmen MoreActionBankDirect=Autom. einen Einzugsermächtigunsantrag zum Mitgliedskonto erstellen MoreActionBankViaInvoice=Autom. eine Rechnung zum Mitgliedskonto erstellen und Zahlung auf Rechnung setzen @@ -162,9 +167,39 @@ MoreActionInvoiceOnly=Autom. eine Rechnung (ohne Zahlung) erstellen LinkToGeneratedPages=Visitenkarten erstellen LinkToGeneratedPagesDesc=Auf dieser Seite können Sie PDF-Dateien mit Visitenkarten Ihrer Mitglieder (auf Wunsch länderspezifisch) erstellen. DocForAllMembersCards=Visitenkarten für alle Mitglieder erstellen (Gewähltes Ausgabeformat: %s) -DocForOneMemberCardsVisitenkarten für ein bestimmtes Mitglied erstellen (Gewähltes Ausgabeformat: %s) +DocForOneMemberCards=Visitenkarten für ein bestimmtes Mitglied erstellen (Gewähltes Ausgabeformat: %s) DocForLabels=Etiketten erstellen (Gewähltes Ausgabeformat: %s) - +SubscriptionPayment=Abo-Zahlung +LastSubscriptionDate=Letzter Abo-Termin +LastSubscriptionAmount=Letzter Abo-Betrag +MembersStatisticsByCountries=Mitgliederstatistik nach Ländern +MembersStatisticsByState=Mitgliederstatistik nach Bundesländern +MembersStatisticsByTowne=Mitgliederstatistik nach Städten +NbOfMembers=Anzahl der Mitglieder +NoValidatedMemberYet=Kein freizugebenden Mitglieder gefunden +MembersByCountryDesc=Diese Form zeigt Ihnen die Mitgliederstatistik nach Ländern. Die Grafik basiert auf Googles Online-Grafik-Service ab und funktioniert nur wenn eine Internverbindung besteht. +MembersByStateDesc=Diese Form zeigt Ihnen die Statistik der Mitglieder nach Bundesland/Provinz/Kanton. +MembersByTownDesc=Diese Form zeigt Ihnen die Statisik der Mitglieder nach Städten. +MembersStatisticsDesc=Wählen Sie die gewünschte Statisik aus ... +MenuMembersStats=Statistik +LastMemberDate=Letztet Mitgliedsdatum +Nature=Art +Public=Informationen sind öffentlich (Nein = Privat) +Exports=Exports +NewMemberbyWeb=Neues Mitgliede hinzugefügt, warte auf Genehmigung. +NewMemberForm=Neues Mitgliederformular +SubscriptionsStatistics=Statistik über Abonnements +NbOfSubscriptions=Anzahl der Abonnements +AmountOfSubscriptions=Beiträge der Abonnements +TurnoverOrBudget=Umsatz (für eine Firma) oder Budget (für eine Stiftung) +DefaultAmount=Standardbetrag für ein Abonnement +CanEditAmount=Besucher können die Höhe auswählen oder ändern für den Beitrag +MEMBER_NEWFORM_PAYONLINE=Gehen Sie zu integrierten Bezahlseite +Associations=Vereine +Collectivités=Organisationen +Particuliers=Privatpersonen +Entreprises=Firmen +DOLIBARRFOUNDATION_PAYMENT_FORM=Um Ihre Beitragszahlung mit einer Banküberweisung auszuführen, gehen Sie zur Seite: http://wiki.dolibarr.org/index.php/Subscribe.
Um mittels Kreditkarte zu zahlen, klicken Sie auf den Button am Seitenende.
// START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). // Reference language: en_US -> de_DE MembersWithSubscriptionToReceive=Mitglieder mit Abonnement erhalten diff --git a/htdocs/langs/de_DE/orders.lang b/htdocs/langs/de_DE/orders.lang index 6ee2a3da2e4..fa33afd9d1f 100644 --- a/htdocs/langs/de_DE/orders.lang +++ b/htdocs/langs/de_DE/orders.lang @@ -25,11 +25,13 @@ CustomersOrdersRunning=Aktuelle Kundenbestellungen CustomersOrdersAndOrdersLines=Kundenbestellungen und Bestellpositionen OrdersToValid=Freizugebende Bestellungen OrdersToBill=Zu verrechnende Bestellungen -OrdersInProcess=Bestellunen in Bearbeitung +OrdersInProcess=Bestellungen in Bearbeitung OrdersToProcess=Zu bearbeitende Bestellungen +SuppliersOrdersToProcess=Lieferantenbestellung in Bearbeitung StatusOrderCanceledShort=Storniert StatusOrderDraftShort=Entwurf StatusOrderValidatedShort=Freigegeben +StatusOrderSentShort=In Bearbeitung StatusOrderOnProcessShort=In Arbeit StatusOrderProcessedShort=Bearbeitet StatusOrderToBillShort=Zu verrechnen @@ -37,19 +39,19 @@ StatusOrderApprovedShort=Genehmigt StatusOrderRefusedShort=Abgelehnt StatusOrderToProcessShort=Zu bearbeiten StatusOrderReceivedPartiallyShort=Teilweise erhalten -StatusOrderReceivedAllShort=Zur Gänze erhalten +StatusOrderReceivedAllShort=Komplett erhalten StatusOrderCanceled=Storniert StatusOrderDraft=Entwurf (freizugeben) StatusOrderValidated=Freigegeben -StatusOrderOnProcess=In Arbeit +StatusOrderOnProcess=Warten auf Empfang StatusOrderProcessed=Bearbeitet StatusOrderToBill=Zu verrechnen StatusOrderApproved=Genehmigt StatusOrderRefused=Abgelehnt StatusOrderReceivedPartially=Teilweise erhalten -StatusOrderReceivedAll=Zur Gänze erhalten -DraftOrWaitingApproved=Entwurf oder freigegeben, noch nicht bestellt -DraftOrWaitingShipped=Entwurf oder freigegeben, noch nicht versandt +StatusOrderReceivedAll=Komplett erhalten +DraftOrWaitingApproved=Entwurf oder genehmigt, noch nicht bestellt +DraftOrWaitingShipped=Entwurf oder bestätigt, noch nicht versandt MenuOrdersToBill=Bestellverrechnung SearchOrder=Suche Bestellung Sending=Sendung @@ -69,7 +71,7 @@ ShowOrder=Zeige Bestellung NoOpenedOrders=Keine offenen Bestellungen NoOtherOpenedOrders=Keine offenen Bestellungen Anderer OtherOrders=Bestellungen Anderer -LastOrders=Neueste %s Bestellungen +LastOrders=Neuesten %s Bestellungen LastModifiedOrders=%s zuletzt bearbeitete Bestellungen LastClosedOrders=%s zuletzt geschlossene Bestellungen AllOrders=Alle Bestellungen @@ -92,22 +94,40 @@ ComptaCard=Buchhaltungskarte DraftOrders=Bestellentwürfe RelatedOrders=Verknüpfte Bestellungen OnProcessOrders=Bestellungen in Bearbeitung -RefOrder=Bestellung Nr. -RefCustomerOrder=Kundenbestellung Nr. +RefOrder=Bestell-Nr. +RefCustomerOrder=Kunden-Bestellung-Nr. CustomerOrder=Kundenbestellung -RefCustomerOrderShort=Kundenbestellung Nr. +RefCustomerOrderShort=Kunden-BestellNr. SendOrderByMail=Bestellung per Post versenden ActionsOnOrder=Maßnahmen zu dieser Bestellung NoArticleOfTypeProduct=Keine Artikel vom Typ 'Produkt' und deshalb keine Versandkostenposition OrderMode=Bestellweise -AuthorRequest=Authorenrechte beantragen +AuthorRequest=Authorenrechte anfordern UseCustomerContactAsOrderRecipientIfExist=Anschrift des Partnerkontakts statt Partneradresse für die Zustellung verwenden RunningOrders=Offene Bestellungen UserWithApproveOrderGrant=Benutzer mit Berechtigung zur 'Bestellfreigabe' +PaymentOrderRef=Zahlung zur Bestellung %s +CloneOrder=Bestellung duplizieren +ConfirmCloneOrder=Möchten Sie die Bestellung %s wirklich duplizieren? +DispatchSupplierOrder=Lieferantenbestellung %s erhalten +##### Types de contacts ##### +TypeContact_commande_internal_SALESREPFOLL=Kundenauftrag-Nachverfolgung durch Vertreter +TypeContact_commande_internal_SHIPPING=Versand-Nachverfolgung durch Vertreter +TypeContact_commande_external_BILLING=Rechnungskontakt des Kunden +TypeContact_commande_external_SHIPPING=Versandkontakt des Kunden +TypeContact_commande_external_CUSTOMER=Bestellung-Nachverfolgung durch Kundenkontakt +TypeContact_order_supplier_internal_SALESREPFOLL=Lieferantenbestellung-Nachverfolgung durch Vertreter +TypeContact_order_supplier_internal_SHIPPING=Versand-Nachverfolgung durch Vertreter +TypeContact_order_supplier_external_BILLING=Kontakt für Lieferantenrechnungen +TypeContact_order_supplier_external_SHIPPING=Kontakt für Lieferantenversand +TypeContact_order_supplier_external_CUSTOMER=Lieferantenkontakt für Bestellverfolgung + Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Konstante COMMANDE_SUPPLIER_ADDON nicht definiert Error_COMMANDE_ADDON_NotDefined=Konstante COMMANDE_ADDON nicht definiert Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=Fehler beim Laden der Moduldatei '%s' Error_FailedToLoad_COMMANDE_ADDON_File=Fehler beim Laden der Moduldatei '%s' + +# Sources OrderSource0=Angebot OrderSource1=Internet OrderSource2=E-Mail-Kampagne @@ -117,29 +137,16 @@ OrderSource5=Vertrieb OrderSource6=Andere QtyOrdered=Bestellmenge AddDeliveryCostLine=Fügen Sie eine Versandkostenzeile zur Erfassung des Bestellgewichts ein -PDFEinsteinDescription=Eine vollständige Bestellvorlage (Logo, ...) -OrderLine=Bestellposition -PaymentOrderRef=Zahlung zu Bestellung %s -CloneOrder=Duplizieren -ConfirmCloneOrder=Möchten Sie die Bestellung %s wirklich duplizieren? - -OrderToProcess=Zu bearbeitende Bestellung -TypeContact_commande_internal_SALESREPFOLL=Kundenauftrags-Nachverfolgung durch Vertreter -TypeContact_commande_internal_SHIPPING=Versand-Nachverfolgung durch Vertreter -TypeContact_commande_external_BILLING=Rechnungskontakt des Kunden -TypeContact_commande_external_SHIPPING=Versandkontakt des Kunden -TypeContact_commande_external_CUSTOMER=Bestellungs-Nachverfolgung durch Kundenkontakt -TypeContact_order_supplier_internal_SALESREPFOLL=Lieferantenbestellungs-Nachverfolgung durch Vertreter -TypeContact_order_supplier_internal_SHIPPING=Versand-Nachverfolgung durch Vertreter -TypeContact_order_supplier_external_BILLING=Kontakt für Lieferantenrechnungen -TypeContact_order_supplier_external_SHIPPING=Kontakt für Lieferantenversand -TypeContact_order_supplier_external_CUSTOMER=Lieferantenkontakt für Bestellverfolgung +# Documents models +PDFEinsteinDescription=Eine vollständige Bestellvorlage (Logo, uwm.) PDFEdisonDescription=Eine einfache Bestellungsvorlage -PDFQuevedoDescription=Eine vollständige Bestellungsvorlage mit spanischem... - -DispatchSupplierOrder=Lieferantenbestellung %s erhalten - +# Orders modes +OrderByMail=Mail +OrderByFax=Fax +OrderByEMail=E-Mail +OrderByWWW=Online +OrderByPhone=Telefon // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). // Reference language: en_US -> de_DE @@ -154,3 +161,11 @@ OrderByEMail=EMail OrderByWWW=Online OrderByPhone=Telefon // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:03:48). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +OrderLine=Bestellen Sie Online +OrderToProcess=Zur Bearbeitung +StatusOrderSent=Der Versand in Prozess +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:04). diff --git a/htdocs/langs/de_DE/other.lang b/htdocs/langs/de_DE/other.lang index 3a6ec06da24..97a234eb5ec 100644 --- a/htdocs/langs/de_DE/other.lang +++ b/htdocs/langs/de_DE/other.lang @@ -41,32 +41,55 @@ CanceledBy=Storniert von %s ClosedBy=Geschlossen von %s FileWasRemoved=Datei wurde entfernt DirWasRemoved=Verzeichnis wurde entfernt -FeatureNotYetAvailableShort=Erhältlich in einer der nächsten Versionen +FeatureNotYetAvailableShort=Verfügbar ab der nächsten Versionen FeatureNotYetAvailable=Diese Funktion steht in der derzeitigen Version noch nicht zur Verfügung FeatureExperimental=Experimentelle Funktion. In dieser Version noch nicht als stabil geführt. FeatureDevelopment=Funktion in Entwicklung. In dieser Version noch nicht als stabil geführt. FeaturesSupported=Unterstützte Funktionen Width=Breite Height=Höhe -Weight=Gewicht Depth=Tiefe +Top=Oben +Bottom=Unten +Left=Links +Right=Rechts +CalculatedWeight=Kalkuliertes Gewicht +CalculatedVolume=Kalkuliertes Volumen +Weight=Gewicht TotalWeight=Gesamtgewicht WeightUnitton=t WeightUnitkg=kg WeightUnitg=g WeightUnitmg=mg +WeightUnitpound=Pfund +Length=Länge +LengthUnitm=m +LengthUnitdm=dm +LengthUnitcm=cm +LengthUnitmm=mm +Surface=Fläche +SurfaceUnitm2=m² +SurfaceUnitdm2=dm² +SurfaceUnitcm2=cm² +SurfaceUnitmm2=mm² Volume=Volumen TotalVolume=Gesamtvolumen VolumeUnitm3=m³ VolumeUnitdm3=dm³ VolumeUnitcm3=cm³ VolumeUnitmm3=mm³ +VolumeUnitounce=Unze +VolumeUnitlitre=Liter +VolumeUnitgallon=Gallone Size=Größe SizeUnitm=m SizeUnitdm=dm SizeUnitcm=cm SizeUnitmm=mm +SizeUnitinch=Inch +SizeUnitfoot=Fuß BugTracker=Fehlerverfolgung (Bug-Tracker) +SendNewPasswordDesc=Über dieses Formular können Sie sich ein neues Passwort zusenden lassen.
Die Änderungen an Ihrem Passwort werden erst wirksam, wenn Sie auf den im Mail enthaltenen Bestätigungslink klicken.
Überprüfen Sie den Posteingang Ihrer E-Mail-Anwendung. BackToLoginPage=Zurück zur Anmeldeseite AuthenticationDoesNotAllowSendNewPassword=Im derzeit gewählten Authentifizierungsmodus (%s) kann das System nicht auf Ihre Passwortdaten zugreifen und diese auch nicht ändern.
Wenden Sie sich hierzu bitte an den Systemadministrator. EnableGDLibraryDesc=Für den Einsatz dieser Option installieren, bzw. aktivieren Sie bitte die GD-Library. @@ -79,22 +102,49 @@ NumberOfProposals=Anzahl der Angebote in den letzten 12 Monaten NumberOfCustomerOrders=Anzahl der Kundenaufträge in den letzten 12 Monaten NumberOfCustomerInvoices=Anzahl der Kundenrechnungen in den letzten 12 Monaten NumberOfSupplierInvoices=Anzahl der Lieferantenrechnungen in den letzten 12 Monaten -NumberOfUnitsCustomerOrders=Anzahl der Produkte/Services in Kundenaufträgen der letzten 12 Monate -NumberOfUnitsCustomerInvoices=Anzahl der Produkte/Services in Kundenrechnungen der letzten 12 Monate -NumberOfUnitsSupplierInvoices=Anzahl der Produkte/Services in Lieferantenrechnungen der letzten 12 Monate +NumberOfUnitsProposals=Anzahl der Produkte/Leistungen in Angeboten der letzten 12 Monate +NumberOfUnitsCustomerOrders=Anzahl der Produkte/Leistungen in Kundenaufträgen der letzten 12 Monate +NumberOfUnitsCustomerInvoices=Anzahl der Produkte/Leistungen in Kundenrechnungen der letzten 12 Monate +NumberOfUnitsSupplierInvoices=Anzahl der Produkte/Leistungen in Lieferantenrechnungen der letzten 12 Monate +EMailTextInterventionValidated=Service %s wurde freigegeben +EMailTextInvoiceValidated=Rechnung %s wurde freigegeben +EMailTextProposalValidated=Angebot %s wurde freigegeben +EMailTextOrderValidated=Bestellung %s wurde freigegeben EMailTextOrderApproved=Bestellung %s genehmigt -EMailTextOrderApprovedBy=Bestellung %s von %s genehmigt -EMailTextOrderRefused=Bestellung %s abgelehnt -EMailTextOrderRefusedBy=Bestellung %s von %s abgelehnt +EMailTextOrderApprovedBy=Bestellung %s wurde von %s genehmigt +EMailTextOrderRefused=Bestellung %s wurde abgelehnt +EMailTextOrderRefusedBy=Bestellung %s wurde von %s abgelehnt +ImportedWithSet=Import Datensatz +DolibarrNotification=Automatische Benachrichtigung +ResizeDesc=Bitte geben Sie eine neue Breite oder Höhe ein. Das Verhältnis wird während des Zuschneidens erhalten... +NewLength=Neue Breite +NewHeight=Neue Höhe +NewSizeAfterCropping=Neue Größe nach dem Zuschneiden +DefineNewAreaToPick=Definieren Sie einen neuen Bereich innerhalb des Bildes (Klicken Sie mit der linken Maustaste auf das Bild und halten Sie bis zur gegenüberligenden Ecke) +CurrentInformationOnImage=Dieses Werzeug hilft Ihnen beim Skalieren und Zuschneiden von Bildern. Diese Informationen existieren derzeit zur Bilddatei +ImageEditor=Bildbearbeitung +YouReceiveMailBecauseOfNotification=Sie erhalten diese Nachricht, weil Ihre E-Mail-Adresse zur Liste der zu benachrichtigenden Kontakte für %s von %s hinzugefügt wurde. +YouReceiveMailBecauseOfNotification2=Sie erhalten dieses Mail aufgrund folgender Benachrichtigung: +ThisIsListOfModules=Dies ist eine Liste von ausgewählten Modulen für die Demo (nur die gängigsten Module sind enthalten). Bearbeiten Sie die Auswahl und eine personalisierte Demo zu erhalten und klicken dann bitte auf "Start". +ClickHere=Hier klicken +UseAdvancedPerms=Verwenden Sie die erweiterten Berechtigungen einiger Module +FileFormat=Dateiformat +SelectAColor=Farbe wählen +AddFiles=Dateien hinzufügen +StartUpload=Hochladen starten +CancelUpload=Hochladen abbrechen +FileIsTooBig=Dateien sind zu groß + +##### Bookmark ##### Bookmark=Lesezeichen Bookmarks=Lesezeichen NewBookmark=Neues Lesezeichen ShowBookmark=Zeige Lesezeichen -BookmarkThisPage=Lesezeichen zu dieser Seite hinzufügen +BookmarkThisPage=Für diese Seite Lesezeichen hinzufügen OpenANewWindow=Neues Fenster öffnen ReplaceWindow=Aktuelles Fenster ersetzen BookmarkTargetNewWindowShort=Neues Fenster -BookmarkTargetReplaceWindowShort=Aktuelles ersetzen +BookmarkTargetReplaceWindowShort=Aktuelles Fenster BookmarkTitle=Titel des Lesezeichens UrlOrLink=URL oder Link BehaviourOnClick=Verhalten bei Klick auf den Link @@ -102,10 +152,9 @@ CreateBookmark=Erstelle Lesezeichen SetHereATitleForLink=Geben Sie hier einen Linktitel ein UseAnExternalHttpLinkOrRelativeDolibarrLink=Verwenden Sie eine externe http-URL oder eine URL relativ zum Systempfad ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Bitte wählen Sie, ob sich ein geklickter Link in einem neuen oder demselben Fenster öffnet +BookmarksManagement=Lesezeichen verwalten ListOfBookmarks=Liste der Lesezeichen -LoginWebcal=Anmeldung für Webkalender -ErrorWebcalLoginNotDefined=Zu Ihren Anmeldedaten %s sind keine Webkalender-Anmeldedaten definiert. -ErrorPhenixLoginNotDefined=Zu Ihren Anmeldedaten %s sind keine Phenix-Anmeldedaten definiert. +##### Calendar common ##### AddCalendarEntry=Neuer Eintrag im Kalender %s NewCompanyToDolibarr=Partner %s hinzugefügt ContractValidatedInDolibarr=Vertrag %s freigegeben diff --git a/htdocs/langs/de_DE/paybox.lang b/htdocs/langs/de_DE/paybox.lang index 1df5c0f97b7..b4729bc5878 100644 --- a/htdocs/langs/de_DE/paybox.lang +++ b/htdocs/langs/de_DE/paybox.lang @@ -24,10 +24,19 @@ ToOfferALinkForOnlinePaymentOnOrder=URL um Ihren Kunden eine %s Online-Bezahlsei ToOfferALinkForOnlinePaymentOnInvoice=URL um Ihren Kunden eine %s Online-Bezahlseite für Rechnungen anzubieten ToOfferALinkForOnlinePaymentOnContractLine=URL um Ihren Kunden eine %s Online-Bezahlseite für Vertragspositionen anzubieten ToOfferALinkForOnlinePaymentOnFreeAmount=URL um Ihren Kunden eine %s Online-Bezahlseite für frei wählbare Beträge anzubieten +ToOfferALinkForOnlinePaymentOnMemberSubscription=URL um Ihren Mitgliedern eine %s Online-Bezahlseite für Mitgliedsbeiträge YouCanAddTagOnUrl=Sie können auch den URL-Parameter &tag=value an eine beliebige dieser URLs anhängen (erforderlich nur bei der freien Zahlung) um einen eigenen Zahlungskommentar hinzuzufügen. SetupPayBoxToHavePaymentCreatedAutomatically=Richten Sie PayBox mit der URL %s ein, um nach Freigabe durch PayBox automatisch eine Zahlung anzulegen. -ToOfferALinkForOnlinePaymentOnMemberSubscription=URL um Ihren Kunden eine %s Online-Bezahlseite für Abonnements anzubieten - +YourPaymentHasBeenRecorded=Hiermit Bestätigen wir die Zahlung ausgeführt wurde. Vielen Dank. +YourPaymentHasNotBeenRecorded=Die Zahlung wurde abgebrochen und nicht ausgeführt. Vielen Dank. +AccountParameter=Konto Parameter +UsageParameter=Einsatzparameter +InformationToFindParameters=Hilfe für das Finden der %s Kontoinformationen +PAYBOX_CGI_URL_V2=Url für das Paybox Zahlungsmodul "CGI Modul" +VendorName=Name des Anbieters +CSSUrlForPaymentForm=CSS-Datei für das Zahlungsmodul +MessageOK=Nachrichtenseite für bestätigte Zahlung +MessageKO=Nachrichtenseite für abgebrochene Zahlung // START - Lines generated via autotranslator.php tool (2011-10-10 02:45:33). // Reference language: en_US -> de_DE diff --git a/htdocs/langs/de_DE/paypal.lang b/htdocs/langs/de_DE/paypal.lang index 314029f6bcd..f2b08de41fe 100644 --- a/htdocs/langs/de_DE/paypal.lang +++ b/htdocs/langs/de_DE/paypal.lang @@ -29,3 +29,9 @@ PAYPAL_API_SIGNATURE=API-Signatur PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Bieten Zahlung "integral" (Kreditkarte + Paypal) oder "Paypal" nur YouAreCurrentlyInSandboxMode=Sie befinden sich in der "Sandbox"-Modus // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:03:42). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +PredefinedMailContentLink=Sie können auf der sicheren Link unten klicken, um Ihre Zahlung durch PayPal \n\n %s \n\n machen +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:00). diff --git a/htdocs/langs/de_DE/products.lang b/htdocs/langs/de_DE/products.lang index 5d8e72578eb..2e8f3830ec9 100644 --- a/htdocs/langs/de_DE/products.lang +++ b/htdocs/langs/de_DE/products.lang @@ -112,66 +112,52 @@ CategoryFilter=Kategoriefilter ProductToAddSearch=Suche hinzuzufügendes Produkt AddDel=Hinzufügen/Löschen Quantity=Stückzahl -NoMatchFound=Keine Treffer gefunden -ProductAssociationList=Liste der verknüpften Produkte/Services: Name des Produkts/des Service (Stückzahl) +NoMatchFound=Kein Eintrag gefunden +ProductAssociationList=Liste der verknüpften Produkte/Leistungen: Name des Produkts/der Leistung (Stückzahl) ErrorAssociationIsFatherOfThis=Eines der ausgewählten Produkte ist Elternteil des aktuellen Produkts -DeleteProduct=Produkt/Service löschen -ConfirmDeleteProduct=Möchten Sie dieses Produkt/Service wirklich löschen? -ProductDeleted=Produkt/Service "%s" aus der Datenbank gelöscht. -DeletePicture=Bild löschen +DeleteProduct=Produkt/Leistung löschen +ConfirmDeleteProduct=Möchten Sie dieses Produkt/Leistung wirklich löschen? +ProductDeleted=Produkt/Leistung "%s" aus der Datenbank gelöscht. +DeletePicture=Ein Bild löschen ConfirmDeletePicture=Möchten Sie dieses Bild wirklich löschen? -ExportDataset_produit_1=Produkte und Services +ExportDataset_produit_1=Produkte +ExportDataset_service_1=Leistungen +ImportDataset_produit_1=Produkte +ImportDataset_service_1=Leistungen DeleteProductLine=Produktlinie löschen ConfirmDeleteProductLine=Möchten Sie diese Produktlinie wirklich löschen? -NoProductMatching=Kein Produkt/Service entspricht Ihren Suchkriterien -MatchingProducts=Passende Produkte/Services +NoProductMatching=Kein Produkt/Leistung entspricht Ihren Suchkriterien +MatchingProducts=Passende Produkte/Leistungen NoStockForThisProduct=Kein Warenbestand für dieses Produkt NoStock=Kein Warenbestand -Restock=Bestandserinnerung -ProductSpecial=Special +Restock=Lager auffüllen +ProductSpecial=Spezial QtyMin=Mindestabnahme -PriceQty=Preis für Mindestabnahme -PriceQtyMin=Gesamtpreis Mindestabnahme +PriceQty=Preis für diese Menge +PriceQtyMin=Preis Mindestmenge NoPriceDefinedForThisSupplier=Einkaufskonditionen für diesen Hersteller noch nicht definiert NoSupplierPriceDefinedForThisProduct=Einkaufskonditionen für dieses Produkt noch nicht definiert RecordedProducts=Erfasste Produkte -RecordedProductsAndServices=Erfasste Produkte/Services +RecordedProductsAndServices=Erfasste Produkte/Leistungen GenerateThumb=Erzeuge Vorschaubild ProductCanvasAbility=Verwende spezielle "canvas" Add-Ons -ServiceNb=Service #%s -ListProductByPopularity=Liste der Produkte/Services nach Beliebtheit -Finished=Eigenerzeugung +ServiceNb=Leistung #%s +ListProductServiceByPopularity=Liste der Produkte/Leistungen nach Beliebtheit +ListProductByPopularity=Liste der Produkte nach Beliebtheit +ListServiceByPopularity=Liste der Leistungen nach Beliebtheit +Finished=Eigenproduktion RowMaterial=Rohmaterial - -ProductRef=Artikel Nr. -ProductLabel=Produktbezeichnung -MinPrice=Preisuntergrenze -CantBeLessThanMinPrice=Der aktuelle Verkaufspreis unterschreitet die Preisuntergrenze dieses Produkts (%s ohne MwSt.) -ExportDataset_service_1=Services -CloneProduct=Produkt/Service duplizieren +CloneProduct=Produkt/Leistung duplizieren ConfirmCloneProduct=Möchten Sie %s wirklich duplizieren? -CloneContentProduct=Allgemeine Informationen des Produkts/Services duplizieren +CloneContentProduct=Allgemeine Informationen des Produkts/Leistungen duplizieren ClonePricesProduct=Allgemeine Informationen und Preise duplizieren - -ProductAccountancyBuyCode=Kontierungsschlüssel (Einkauf) -ProductAccountancySellCode=Kontierungsschlüssel (verkaufen) -SellingPriceHT=Verkaufspreis (netto) -SellingPriceTTC=Verkaufspreis (brutto) -ListProductServiceByPopularity=Liste der Produkte/Services nach Beliebtheit -ListServiceByPopularity=Liste der Services nach Beliebtheit ProductIsUsed=Produkt in Verwendung -NewRefForClone=Artikel Nr. des neuen Produkts/Services +NewRefForClone=Artikel-Nr. des neuen Produkts/Leistungen CustomerPrices=Kundenpreise SuppliersPrices=Lieferantenpreise - -Sell=Verkaufe -Buy=Kaufe -OnBuy=Gekaufte -ProductStatusOnBuy=Verfügbar -ProductStatusNotOnBuy=Veraltet -ProductStatusOnBuyShort=Verfügbar -ProductStatusNotOnBuyShort=Veraltet - +CustomCode=Interner Code +CountryOrigin=Urspungsland +HiddenIntoCombo=In ausgewählten Listen nicht anzeigen // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). // Reference language: en_US -> de_DE @@ -183,3 +169,23 @@ CustomCode=Customs Code CountryOrigin=Origin Land HiddenIntoCombo=Versteckt in Auswahllisten // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:03:56). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +ProductRef=Product Ref. +ProductLabel=Produkt-Label +ProductAccountancyBuyCode=Buchhaltung Code (kaufen) +ProductAccountancySellCode=Rechnungswesen-Code (zu verkaufen) +Sell=Vertrieb +Buy=Käufe +OnBuy=Für Kauf +ProductStatusOnBuy=Für Kauf +ProductStatusNotOnBuy=Nicht zum Kauf +ProductStatusOnBuyShort=Für Kauf +ProductStatusNotOnBuyShort=Nicht zum Kauf +SellingPriceHT=Verkaufspreis (ohne Steuern) +SellingPriceTTC=Verkaufspreis (inkl. MwSt.) +MinPrice=Minim. Verkaufspreis +CantBeLessThanMinPrice=Der Verkaufspreis kann nicht niedriger sein als Minimum für dieses Produkt (%s ohne MwSt.) erlaubt. Diese Meldung kann auch angezeigt, wenn Sie einen Rabatt geben zu wichtig. +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:08). diff --git a/htdocs/langs/de_DE/projects.lang b/htdocs/langs/de_DE/projects.lang index 6cdd49d0d0d..2199b37b16e 100644 --- a/htdocs/langs/de_DE/projects.lang +++ b/htdocs/langs/de_DE/projects.lang @@ -18,16 +18,17 @@ DeleteATask=Löschen einer Aufgabe ConfirmDeleteAProject=Möchten Sie dieses Projekt wirklich löschen? ConfirmDeleteATask=Möchten Sie diese Aufgabe wirklich löschen? OfficerProject=Projektverantwortlicher -LastProjects=%s neueste Projekte +LastProjects=Die %s neuesten Projekte AllProjects=Alle Projekte ProjectsList=Liste der Projekte ShowProject=Zeige Projekt SetProject=Projekt setzen -NoProject=Kein Projekt definiert +NoProject=Kein Projekt definiert oder keine Rechte NbOpenTasks=Anzahl der offenen Aufgaben NbOfProjects=Anzahl der Projekte TimeSpent=Zeitaufwand -RefTask=Aufgaben Nr. +TimesSpent=Zeitaufwände +RefTask=Aufgaben-Nr. LabelTask=Aufgabenbezeichnung NewTimeSpent=Neuer Zeitaufwand MyTimeSpent=Mein Zeitaufwand @@ -40,62 +41,60 @@ AddDuration=Dauer hinzufügen Activity=Tätigkeit Activities=Aufgaben/Tätigkeiten MyActivity=Meine Tätigkeit -MyActivities=Meine Tätigkeiten -DurationEffective=Effektivdauer +MyActivities=Meine Aufgaben/Tätigkeiten MyProjects=Meine Projekte +DurationEffective=Effektivdauer +Progress=Fortschritt Time=Zeitaufwand ListProposalsAssociatedProject=Liste der mit diesem Projekt verbundenen Angebote ListOrdersAssociatedProject=Liste der mit diesem Projekt verbundenen Bestellungen ListInvoicesAssociatedProject=Liste der mit diesem Projekt verbundenen Rechnungen +ListPredefinedInvoicesAssociatedProject=Liste der mit diesem Projekt verknüpften Rechnungsvorlagen ListSupplierOrdersAssociatedProject=Liste der mit diesem Projekt verbundenen Lieferantenbestellungen ListSupplierInvoicesAssociatedProject=Liste der mit diesem Projekt verbundenen Lieferantenrechnungen ListContractAssociatedProject=Liste der mit diesem Projekt verbundenen Verträge +ListFichinterAssociatedProject=Liste der mit diesem Projekt verknüpften Services +ListTripAssociatedProject=Liste der mit diesem Projekt verknüpften Reisekosten +ListActionsAssociatedProject=Liste der mit diesem Projekt verknüpften Maßnahmen ActivityOnProjectThisWeek=Projektaktivitäten dieser Woche ActivityOnProjectThisMonth=Projektaktivitäten dieses Monats ActivityOnProjectThisYear=Projektaktivitäten dieses Jahres ChildOfTask=Kindelement von Projekt/Aufgabe NotOwnerOfProject=Nicht Eigner des privaten Projekts AffectedTo=Zugewiesen an -ListPredefinedInvoicesAssociatedProject=Liste der mit diesem Projekt verknüpften Rechnungsvorlagen CantRemoveProject=Löschen des Projekts auf Grund verbundener Elemente (Rechnungen, Bestellungen oder andere) nicht möglich. Näheres finden Sie in der Verweiskarte. - -PrivateProject=Projektansprechpartner -MyProjectsDesc=Diese Ansicht ist auf Projekte beschränkt, zu denen Sie als Kontakt definiert sind (unabhängig vom Typ). -ProjectsPublicDesc=Diese Ansicht zeigt alle für Sie sichtbaren Projekte. -ProjectsDesc=Diese Ansicht zeigt alle Projekte (Ihre Benutzerberechtigung erlaubt Ihnen eine volle Einsicht aller Projekte). -MyTasksDesc=Diese Ansicht ist auf Aufgaben beschränkt, zu denen Sie als Kontakt definiert sind (unabhängig vom Typ). -TasksPublicDesc=Diese Ansicht zeigt alle für Sie sichtbaren Aufgaben. -TasksDesc=Diese Ansicht zeigt alle Aufgaben (Ihre Benutzerberechtigung erlaubt Ihnen eine volle Einsicht aller Aufgaben). -Progress=Fortschritt -ListFichinterAssociatedProject=Liste der mit diesem Projekt verknüpften Eingriffe -ListTripAssociatedProject=Liste der mit diesem Projekt verknüpften Reise- und Fahrtspesen -ListActionsAssociatedProject=Liste der mit diesem Projekt verknüpften Maßnahmen ValidateProject=Projekt freigeben ConfirmValidateProject=Möchten Sie dieses Projekt wirklich freigeben? -CloseAProject=Schließe Projekt +CloseAProject=Projekt schließen ConfirmCloseAProject=Möchten Sie dieses Projekt wirklich schließen? -ReOpenAProject=Öffne Projekt +ReOpenAProject=Projekt öffnen ConfirmReOpenAProject=Möchten Sie dieses Projekt wirklich wiedereröffnen? ProjectContact=Projektkontakt ActionsOnProject=Projektaktionen YouAreNotContactOfProject=Sie sind diesem privaten Projekt nicht als Kontakt zugeordnet. DeleteATimeSpent=Lösche einen Zeitaufwand ConfirmDeleteATimeSpent=Möchten Sie diesen Zeitaufwand wirklich löschen? -DoNotShowMyTasksOnly=Zeige auch die Aufgaben Anderer +DoNotShowMyTasksOnly=Zeige auch die Aufgaben der Anderen ShowMyTasksOnly=Zeige nur meine Aufgaben TaskRessourceLinks=Ressourcen ProjectsDedicatedToThisThirdParty=Mit diesem Partner verknüpfte Projekte NoTasks=Keine Aufgaben für dieses Projekt LinkedToAnotherCompany=Mit Partner verknüpft +TaskIsNotAffectedToYou=Der Aufgabe sind sie nicht zugeordnet +ErrorTimeSpentIsEmpty=Zeitaufwand ist leer +ThisWillAlsoRemoveTasks=Diese Aktion löscht ebenfalls alle Aufgaben zum Projekt (%s akutelle Aufgaben) und alle Zeitaufwände. +IfNeedToUseOhterObjectKeepEmpty=Wenn einige Zuordnungen (Rechnung, Bestellung, ...), einem Dritten gehören, müssen Sie erst alle mit dem Projekt verbinden, damit das Projekt auch Dritten zugänglich ist . +##### Types de contacts ##### TypeContact_project_internal_PROJECTLEADER=Projektleiter TypeContact_project_external_PROJECTLEADER=Projektleiter TypeContact_project_internal_CONTRIBUTOR=Mitwirkender TypeContact_project_external_CONTRIBUTOR=Mitwirkender -TypeContact_project_task_internal_TASKEXECUTIVE=Task Exekutive -TypeContact_project_task_external_TASKEXECUTIVE=Task Exekutive +TypeContact_project_task_internal_TASKEXECUTIVE=Verantwortlich +TypeContact_project_task_external_TASKEXECUTIVE=Verantwortlich TypeContact_project_task_internal_CONTRIBUTOR=Mitwirkender TypeContact_project_task_external_CONTRIBUTOR=Mitwirkender -DocumentModelBaleine=Eine vollständige Projektberichtsvorlage (Logo, ...) +# Documents models +DocumentModelBaleine=Eine vollständige Projektberichtsvorlage (Logo, uwm.) // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). @@ -106,3 +105,15 @@ ErrorTimeSpentIsEmpty=Verbrachte Zeit ist leer ThisWillAlsoRemoveTasks=Diese Aktion löscht ebenfalls sämtliche Aufgaben des Projekts (%s Aufgaben im Moment) und alle Eingänge Zeit damit verbracht. IfNeedToUseOhterObjectKeepEmpty=Wenn einige Objekte (Rechnung, Bestellung, ...), Zugehörigkeit zu einer anderen dritten Partei, um das Projekt zu erstellen, verknüpft werden müssen, bewahren Sie diese leer, um das Projekt als Multi Dritte haben. // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:06:18). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +PrivateProject=Kontakte des Projekts +MyProjectsDesc=Diese Ansicht wird auf Projekte Kontakt Sie sind für (was auch immer ist die Art) beschränkt. +ProjectsPublicDesc=Diese Ansicht zeigt alle Projekte, die Sie erlaubt zu lesen sind. +ProjectsDesc=Diese Ansicht zeigt alle Projekte (Ihre Benutzerberechtigungen dir die Berechtigung, alles zu sehen). +MyTasksDesc=Diese Ansicht wird auf Projekte oder Aufgaben Sie sind ein Ansprechpartner für (was auch immer ist die Art) beschränkt. +TasksPublicDesc=Diese Ansicht zeigt alle Projekte und Aufgaben, die Sie erlaubt zu lesen sind. +TasksDesc=Diese Ansicht zeigt alle Projekte und Aufgaben (Ihre Benutzerberechtigungen dir die Berechtigung, alles zu sehen). +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:53). diff --git a/htdocs/langs/de_DE/propal.lang b/htdocs/langs/de_DE/propal.lang index c4a770ba356..c1a9b8fafe9 100644 --- a/htdocs/langs/de_DE/propal.lang +++ b/htdocs/langs/de_DE/propal.lang @@ -24,8 +24,9 @@ ValidateProp=Angebot freigeben AddProp=Angebot hinzufügen ConfirmDeleteProp=Möchten Sie dieses Angebot wirklich löschen? ConfirmValidateProp=Möchten Sie dieses Angebots wirklich freigeben? -LastPropals=%s zuletzt bearbeitete Angebote -LastClosedProposals=%s zuletzt abgeschlossene Angebote +LastPropals=Die letzten %s bearbeiteten Angebote +LastClosedProposals=Die letzten %s abgeschlossenen Angebote +LastModifiedProposals=Die letzen %s bearbeiteten Angebote AllPropals=Alle Angebote LastProposals=Letzte Angebote SearchAProposal=Angebot suchen @@ -34,14 +35,14 @@ NumberOfProposalsByMonth=Anzahl pro Monat AmountOfProposalsByMonthHT=Betrag pro Monat (nach Steuern) NbOfProposals=Zahl der Angebote ShowPropal=Zeige Angebot -PropalsDraft=Entwurf +PropalsDraft=Entwürfe PropalsOpened=Offen PropalsNotBilled=Geschlossen, nicht verrechnet -PropalStatusDraft=Entwurf (freizugeben) +PropalStatusDraft=Entwurf (ist freizugeben) PropalStatusValidated=Freigegeben (Angebot ist offen) PropalStatusOpened=Freigegeben (Angebot ist offen) PropalStatusClosed=Geschlossen -PropalStatusSigned=Unterzeichnet (auf Rechnung) +PropalStatusSigned=Unterzeichnet (ist zu verrechnen) PropalStatusNotSigned=Nicht unterzeichnet (geschlossen) PropalStatusBilled=Verrechnet PropalStatusDraftShort=Entwurf @@ -56,43 +57,52 @@ PropalsToBill=Unterzeichnete Angebote zur Verrechnung ListOfProposals=Liste der Angebote ActionsOnPropal=Maßnahmen zum Angebot NoOpenedPropals=Keine offenen Angebote -NoOtherOpenedPropals=Keine offenen Angebote Anderer -RefProposal=Angebots Nr. +NoOtherOpenedPropals=Keine offene Angebote Dritter +RefProposal=Angebots-Nr. SendPropalByMail=Angebot per E-Mail senden -FileNotUploaded=Datei nicht hochgeladen -FileUploaded=Datei erfolgreich hochgeladen +FileNotUploaded=Datei wurde nicht hochgeladen +FileUploaded=Datei wurde erfolgreich hochgeladen AssociatedDocuments=Dokumente mit Bezug zum Angebot: ErrorCantOpenDir=Verzeichnis kann nicht geöffnet werden -DateEndPropal=Ablauf der Bindefrist +DatePropal=Angebotsdatum +DateEndPropal=Gültig bis DateEndPropalShort=Ablaufdatum -ValidityDuration=Bindefrist -CloseAs=Schließen mit dem Status +ValidityDuration=Gültigkeitsdauer +CloseAs=Schließen mit Status ClassifyBilled=Verrechnet BuildBill=Erzeuge Rechnung -RelatedBill=Verknüpte Rechnung -RelatedBills=Verknüpfte Rechnungen ErrorPropalNotFound=Angebot %s nicht gefunden -Estimate=Geschätzt : +Estimate=Geschätzt: EstimateShort=Schätzung OtherPropals=Andere Angebote -CopyPropalFrom=Erstelle neues Angebot durch Duplikation -CreateEmptyPropal=Erstelle leeres Angebot oder aus der Produkt-/Dienstleistungsliste -DefaultProposalDurationValidity=Standardmäßige Bindefrist (Tage) +CopyPropalFrom=Erstelle neues Angebot durch Kopieren eines vorliegenden Angebots +CreateEmptyPropal=Erstelle leeres Angebot oder aus der Liste der Produkte/Dienstleistungen +DefaultProposalDurationValidity=Standardmäßige Gültigkeitsdatuer (Tage) UseCustomerContactAsPropalRecipientIfExist=Falls vorhanden die Adresse des Partnerkontakts statt der Partneradresse verwenden ClonePropal=Angebot duplizieren ConfirmClonePropal=Möchten Sie das Angebot %s wirklich duplizieren? -DocModelAzurDescription=Eine vollständige Angebotsvorlage (Logo, ...) -DocModelJauneDescription=Angebotsvorlage Jaune -ProposalShort=Angebot -LastModifiedProposals=%s zuletzt bearbeitete Angebote -DatePropal=Datum des Angebots ProposalsAndProposalsLines=Angebote und Positionen ProposalLine=Angebotsposition -TypeContact_propal_internal_SALESREPFOLL=Angebotsnachverfolgung durch Vertreter -TypeContact_propal_external_BILLING=Kontakt für Kundenrechnungen -TypeContact_propal_external_CUSTOMER=Angebots-Nachverfolgung durch Partnerkontakt -DocModelRoigDescription=Eine Angebotsvorlage mit spanischem... +AvailabilityPeriod=Verfügbarkeitszeitraum +SetAvailability=Verfügbarkeitszeitraum definieren +AfterOrder=nach Bestellung +##### Availability ##### +AvailabilityTypeAV_NOW=Sofort +AvailabilityTypeAV_1W=7 Tage +AvailabilityTypeAV_2W=14 Tage +AvailabilityTypeAV_3W=3 Wochen +AvailabilityTypeAV_1M=1 Monat + +##### Types de contacts ##### +TypeContact_propal_internal_SALESREPFOLL=Vertreter für Angebot +TypeContact_propal_external_BILLING=Kontakt für Kundenrechnungen +TypeContact_propal_external_CUSTOMER=Partnerkontakt für Angebot + +# Document models +DocModelAzurDescription=Eine vollständige Angebotsvorlage (Logo, uwm.) +DocModelJauneDescription=Angebotsvorlage +ProspectionArea=Angebot // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). // Reference language: en_US -> de_DE @@ -107,3 +117,9 @@ AvailabilityTypeAV_2W=2 Wochen AvailabilityTypeAV_3W=3 Wochen AvailabilityTypeAV_1M=1 Monat // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:05:59). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +ProposalShort=Vorschlag +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:46). diff --git a/htdocs/langs/de_DE/sendings.lang b/htdocs/langs/de_DE/sendings.lang index 8a6e9ef90d7..43b71f8ce2f 100644 --- a/htdocs/langs/de_DE/sendings.lang +++ b/htdocs/langs/de_DE/sendings.lang @@ -74,3 +74,10 @@ LinkToTrackYourPackage=Link zu Ihrer Sendung nachverfolgen ShipmentCreationIsDoneFromOrder=Für den Augenblick ist die Schaffung einer neuen Sendung von der Bestellung Karte getan. Error_EXPEDITION_ADDON_NUMBER_NotDefined=Konstante EXPEDITION_ADDON_NUMBER nicht definiert // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:06:20). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +StatusSendingProcessed=Verarbeitete +StatusSendingProcessedShort=Verarbeitete +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:53). diff --git a/htdocs/langs/de_DE/suppliers.lang b/htdocs/langs/de_DE/suppliers.lang index 23d27318740..0b05ff69502 100644 --- a/htdocs/langs/de_DE/suppliers.lang +++ b/htdocs/langs/de_DE/suppliers.lang @@ -23,7 +23,8 @@ AddSupplierPrice=Lieferantenpreis anlegen ChangeSupplierPrice=Lieferantenpreis ändern ErrorQtyTooLowForThisSupplier=Bestellmenge für diesen Lieferanten zu gering oder fehlender Lieferantenpreis für dieses Produkt ErrorSupplierCountryIsNotDefined=Zu diesem Lieferant ist kein Land definiert. Bitte korrigieren Sie dies zuerst. -ProductHasAlreadyReferenceInThisSupplier=Für dieses Produkt existiert bereits ein Lieferantenpreis vom gewählten Anbieter +ProductHasAlreadyReferenceInThisSupplier=Für dieses Produkt existiert bereits bei diesem Lieferanten +ReferenceSupplierIsAlreadyAssociatedWithAProduct=Für dieses Produkt existiert bereits ein Lieferantenpreis vom gewählten Anbieter: %s NoRecordedSuppliers=Keine Lieferanten erfasst SupplierPayment=Lieferantenzahlung SuppliersArea=Lieferantenübersicht @@ -31,22 +32,17 @@ RefSupplierShort=Kurzbezeichnung Lieferant ExportDataset_fournisseur_1=Lieferantenrechnungen und Positionen ExportDataset_fournisseur_2=Lieferantenrechnungen und Zahlungen ApproveThisOrder=Bestellung bestätigen -ConfirmApproveThisOrder=Möchten Sie diese Bestellung wirklich bestätigen? +ConfirmApproveThisOrder=Möchten Sie diese Bestellung wirklich bestätigen %s ? DenyingThisOrder=Bestellung ablehnen -ConfirmDenyingThisOrder=Möchten Sie diese Bestellung wirklich ablehnen? -ConfirmCancelThisOrder=Möchten Sie diese Bestellung wirklich verwerfen? +ConfirmDenyingThisOrder=Möchten Sie diese Bestellung wirklich ablehnen %s ? +ConfirmCancelThisOrder=Möchten Sie diese Bestellung wirklich verwerfen %s ? AddCustomerOrder=Erzeuge Kundenbestellung -AddCustomerInvoice=Erzeuge Kundenrechnung +AddCustomerInvoice=Kundenrechnung erstellen AddSupplierOrder=Erzeuge Lieferantenbestellung -AddSupplierInvoice=Erzeuge Lieferantenrechnung +AddSupplierInvoice=Lieferantenrechnung erstellen ListOfSupplierProductForSupplier=Produkt- und Preisliste für Anbieter %s - NoneOrBatchFileNeverRan=Keiner oder Batch-Job %s wurde nie ausgeführt -ReferenceSupplierIsAlreadyAssociatedWithAProduct=Für dieses Produkt existiert bereits ein Lieferantenpreis vom gewählten Anbieter: %s - - - // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). // Reference language: en_US -> de_DE BuyingPriceMin=Minimale Kaufpreis diff --git a/htdocs/langs/de_DE/trips.lang b/htdocs/langs/de_DE/trips.lang index e8e23d1b718..e1040977d62 100644 --- a/htdocs/langs/de_DE/trips.lang +++ b/htdocs/langs/de_DE/trips.lang @@ -20,10 +20,11 @@ FeesKilometersOrAmout=Kilometergeld oder Spesenbetrag DeleteTrip=Reise löschen ConfirmDeleteTrip=Möchten Sie diese Reise wirklich löschen? TF_OTHER=Andere -TF_LUNCH=Mittagessen +TF_LUNCH=Essen TF_TRIP=Reise ListTripsAndExpenses=Liste der Reisen und Spesen TripsAndExpensesStatistics=Reise- und Spesenstatistiken +ExpensesArea=Spesenübersicht // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). diff --git a/htdocs/langs/de_DE/users.lang b/htdocs/langs/de_DE/users.lang index a82e46d1368..45fcd87341e 100644 --- a/htdocs/langs/de_DE/users.lang +++ b/htdocs/langs/de_DE/users.lang @@ -48,8 +48,11 @@ LoginNotDefined=Benutzername ist nicht gesetzt. NameNotDefined=Name ist nicht gesetzt. ListOfUsers=Liste der Benutzer Administrator=Administrator +SuperAdministrator=Super Administrator +SuperAdministratorDesc=Administrator mit allen Rechten +AdministratorDesc=Administrator DefaultRights=Standardberechtigungen -DefaultRightsDesc=Definieren Sie hier die, neu erstellten Benutzern automatisch zugewiesenen, Standardberechtigungen. +DefaultRightsDesc=Definieren Sie hier die neu erstellten Benutzern automatisch zugewiesenen Standardberechtigungen. DolibarrUsers=Benutzer LastName=Nachname FirstName=Vorname @@ -57,8 +60,8 @@ ListOfGroups=Liste von Gruppen NewGroup=Neue Gruppe CreateGroup=Gruppe erstellen RemoveFromGroup=Gruppenzuweisung entfernen -PasswordChangedAndSentTo=Passwort geändert und an %s gesandt. -PasswordChangeRequestSent=Antrag auf eine Änderung das Passworts für %s an %s gesandt. +PasswordChangedAndSentTo=Passwort geändert und an %s gesendet. +PasswordChangeRequestSent=Anfrage auf eine Änderung das Passworts für %s an %s gesendet. MenuUsersAndGroups=Benutzer & Gruppen LastGroupsCreated=%s zuletzt erstellte Gruppen LastUsersCreated=%s zuletzt erstellte Benutzer @@ -74,7 +77,12 @@ ListOfGroupsForUser=Liste der Gruppen dieses Benutzers UsersToAdd=Dieser Gruppe zuzuweisende Benutzer GroupsToAdd=Diesem Benutzer zuzuweisende Gruppen NoLogin=Kein Login +LinkToCompanyContact=Mit Partner/Kontakt verknüpfen +LinkedToDolibarrMember=Mit Mitglied verknüpfen +LinkedToDolibarrUser=Mit Systembenutzer verknüpft +LinkedToDolibarrThirdParty=Mit Partner verknüpft CreateDolibarrLogin=Benutzerkonto erstellen +CreateDolibarrThirdParty=Neuen Partner erstellen LoginAccountDisable=Benutzerkonto deaktiviert. Zum Aktivieren bitte neuen Login anlegen. LoginAccountDisableInDolibarr=Benutzerkonto im System deaktiviert. LoginAccountDisableInLdap=Benutzerkonto in dieser Domäne deaktiviert. @@ -86,9 +94,14 @@ ExportDataset_user_1=Benutzer und -eigenschaften DomainUser=Domain-Benutzer %s Reactivate=Reaktivieren CreateInternalUserDesc=Dieses Formular erlaubt Ihnen das Anlegen eines unternehmensinternen Benutzers. Zum Anlegen eines externen Benutzers (Kunden, Lieferanten, ...), verwenden Sie bitte die 'Benutzer erstellen'-Schaltfläche in der Kontaktkarte des jeweiligen Partnerkontakts. -InternalExternalDesc=Ein interner Benutzer ist Teil Ihres Unternehmens/Ihrer Stiftung.
Ein externer Benutzer ist ein Kunde, Lieferant oder Anderes.

In beiden Fällen können Sie die Berechtigungen definieren - externe Benutzer können zudem auch einen andere Menüverwaltung als interne Benutzer haben (siehe Home - Einstellungen - Anzeige) +InternalExternalDesc=Ein interner Benutzer ist Teil Ihres Unternehmens/Ihrer Stiftung.
Ein externer Benutzer ist ein Kunde, Lieferant oder Anderes. +PermissionInheritedFromAGroup=Berechtigung durch eine Gruppenzugehörigkeit gererbt. +Inherited=Geerbt +UserWillBeInternalUser=Erstellter Benutzer ist intern (mit keinem bestimmten Partner verknüpft) +UserWillBeExternalUser=Erstellter Benutzer ist extern (mit einem bestimmten Partner verknüpft) IdPhoneCaller=Anrufer ID -UserLogged=Benutzer %s verbunden +UserLogged=Benutzer %s eingeloggt +UserLogoff=User %s ausgeloggt NewUserCreated=Benutzer %s erstellt NewUserPassword=Passwort ändern für %s EventUserModified=Benutzer %s geändert @@ -99,24 +112,14 @@ NewGroupCreated=Gruppe %s erstellt GroupModified=Gruppe %s geändert GroupDeleted=Gruppe %s entfernt ConfirmCreateContact=Möchten Sie für diesen Kontakt wirklich ein Systembenutzerkonto anlegen? -LoginToCreate=Zu erstellende Anmeldung - -SuperAdministrator=Super Administrator -SuperAdministratorDesc=Administrator mit allen Rechten -LinkToCompanyContact=Mit Partner/Kontakt verknüpfen -LinkedToDolibarrMember=Mit Mitglied verknüpfen -LinkedToDolibarrUser=Mit Systembenutzer verknüpfen -LinkedToDolibarrThirdParty=Mit Partner verknüpfen -CreateDolibarrThirdParty=Neuen Partner erstellen ConfirmCreateLogin=Möchten Sie für dieses Mitglied wirklich ein Benutzerkonto erstellen? ConfirmCreateThirdParty=Möchten Sie zu diesem Mitglied wirklich einen Partner erstellen? +LoginToCreate=Zu erstellende Anmeldung NameToCreate=Name des neuen Partners - -PermissionInheritedFromAGroup=Berechtigung durch eine Gruppenzugehörigkeit gererbt. -Inherited=Geerbt YourRole=Ihre Rolle YourQuotaOfUsersIsReached=Ihr Kontingent aktiver Benutzer ist erreicht - +NbOfUsers=Anzahl der Benutzer +DontDowngradeSuperAdmin=Nur ein SuperAdmin kann einen SuperAdmin downgraden // START - Lines generated via autotranslator.php tool (2011-10-10 02:45:33). // Reference language: en_US -> de_DE diff --git a/htdocs/langs/de_DE/withdrawals.lang b/htdocs/langs/de_DE/withdrawals.lang index 813fd4dee93..82578bddf98 100644 --- a/htdocs/langs/de_DE/withdrawals.lang +++ b/htdocs/langs/de_DE/withdrawals.lang @@ -24,6 +24,7 @@ RequestStandingOrderTreated=Antrag auf Dauerauftrag behandelt CustomersStandingOrders=Daueraufträge (Kunden) CustomerStandingOrder=Dauerauftrag (Kunde) NbOfInvoiceToWithdraw=Nr. der abzubuchenden Rechnung +NbOfInvoiceToWithdrawWithInfo=Anzahl der Rechnungen mit Abbuchungsanfragen für Kunden mit einem hinterlegten Bankkonto InvoiceWaitingWithdraw=Rechnung warten auf Abbuchung AmountToWithdraw=Abbuchungsbetrag WithdrawsRefused=Abbuchungen abgelehnt @@ -32,21 +33,19 @@ ResponsibleUser=Verantwortlicher Benutzer WithdrawalsSetup=Abbuchungseinstellungen WithdrawStatistics=Abbuchungsstatistik WithdrawRejectStatistics=Statistik abgelehnter Abbuchungen -LastWithdrawalReceipt=%s neuste Abbuchungsbelege +LastWithdrawalReceipt=%s neueste Abbuchungsbelege MakeWithdrawRequest=Abbuchungsantrag stellen ThirdPartyBankCode=BLZ Partner ThirdPartyDeskCode=Schalter-Code Partner NoInvoiceCouldBeWithdrawed=Keine Rechnung erfolgreich abgebucht. Überprüfen Sie die Kontonummern der den Rechnungen zugewiesenen Partnern. ClassCredited=Als eingegangen markieren ClassCreditedConfirm=Möchten Sie diesen Abbuchungsbeleg wirklich als auf Ihrem Konto eingegangen markieren? - -StandingOrderToProcess=Zu bearbeiten -StandingOrderProcessed=Bearbeitet TransData=Überweisungsdatum TransMetod=Überweisungsart Send=Senden Lines=Zeilen StandingOrderReject=Ablehnung ausstellen +InvoiceRefused=Rechnung abgelehnt WithdrawalRefused=Abbuchungen abgelehnt WithdrawalRefusedConfirm=Möchten Sie wirklich eine Abbuchungsablehnung zu diesem Partner erstellen? RefusedData=Ablehnungsdatum @@ -56,14 +55,15 @@ NoInvoiceRefused=Ablehnung nicht in Rechnung stellen InvoiceRefused=Ablehnung in Rechnung stellen Status=Status StatusUnknown=Unbekannt -StatusWaiting=Wartestellung +StatusWaiting=Wartend +StatusTrans=Übertragen StatusCredited=Eingelöst StatusRefused=Abgelehnt StatusMotif0=Nicht spezifiziert StatusMotif1=Unzureichende Deckung StatusMotif2=Abbuchung angefochten StatusMotif3=Kein Abbuchungsauftrag -StatusMotif4=Ablehnung durch Kontoinhaber +StatusMotif4=Kundenanfrage StatusMotif5=Fehlerhafte Kontodaten StatusMotif6=Leeres Konto StatusMotif7=Gerichtsbescheid @@ -71,12 +71,31 @@ StatusMotif8=Andere Gründe CreateAll=Alle abbuchen CreateGuichet=Nur Büro CreateBanque=Nur Bank -OrderWaiting=Wartestellung +OrderWaiting=Wartend NotifyTransmision=Abbuchungsüberweisung NotifyEmision=Abbuchungsemission NotifyCredit=Abbuchungsgutschrift NumeroNationalEmetter=Nat. Überweisernummer +PleaseSelectCustomerBankBANToWithdraw=Wählen Sie das Kundenkonto für die Abbuchung +WithBankUsingRIB=Bankkonten mit RIB Nutzung +WithBankUsingBANBIC=Bankkonten mit IBAN/BIC/SWIFT Nutzung +BankToReceiveWithdraw=Bankkonto für Abbuchungen +CreditDate=Am +WithdrawalFileNotCapable=Abbuchungsformular für Ihr Land konnte nicht erstellt werden. +ShowWithdraw=Zeige Abbuchung +IfInvoiceNeedOnWithdrawPaymentWontBeClosed=Wenn eine Rechnung mindestens eine noch zu bearbeitende Verbuchung vorweist, kann diese nicht als bezahlt markiert werden. +DoStandingOrdersBeforePayments=Dies erlaubt Ihnen, einen Dauerauftrag anzulegen. +### Notifications +InfoCreditSubject=Zahlung des Dauerauftrags %s +InfoCreditMessage=Der Dauerauftrag %s wurde von der Bank gebucht
Zahlungsdaten: %s +InfoTransSubject=Übertragung des Dauerauftrags %s +InfoTransMessage=Der Dauerauftrag %s wurde von %s %s übertragen.

+InfoTransData=Betrag: %s
Verwendungszweck: %s
Datum: %s +InfoFoot=Dies ist eine automatisierte Nachricht von Dolibarr +InfoRejectSubject=Dauerauftrag abgelehnt +InfoRejectMessage=Hallo,

der Dauerauftrag zur Rechnung %s der Firma %s, über den Betrag von %s wurde abgelehnt.

--
%$ +ModeWarning=Echtzeit-Modus wurde nicht aktiviert, wir stoppen nach der Simulation. // START - Lines generated via autotranslator.php tool (2012-02-29 16:03:27). // Reference language: en_US -> de_DE @@ -101,3 +120,10 @@ InfoRejectSubject=Dauerauftrag abgelehnt InfoRejectMessage=Hallo,

standig die Reihenfolge der Rechnung %s im Zusammenhang mit den Unternehmen %s, mit einem Betrag von %s wurde von der Bank abgelehnt worden.

-
% $ ModeWarning=Option für die Echtzeit-Modus nicht eingestellt wurde, haben wir nach dieser Simulation zu stoppen // STOP - Lines generated via autotranslator.php tool (2012-02-29 16:04:01). + + +// START - Lines generated via autotranslator.php tool (2012-05-02 17:27:54). +// Reference language: en_US -> de_DE +StandingOrderToProcess=Zur Verarbeitung +StandingOrderProcessed=Verarbeitete +// STOP - Lines generated via autotranslator.php tool (2012-05-02 17:28:09). diff --git a/htdocs/langs/en_US/ecm.lang b/htdocs/langs/en_US/ecm.lang index d6151f3e5e2..1519bf6c8fd 100644 --- a/htdocs/langs/en_US/ecm.lang +++ b/htdocs/langs/en_US/ecm.lang @@ -36,6 +36,7 @@ ECMSearchByEntity=Search by object ECMSectionOfDocuments=Directories of documents ECMTypeManual=Manual ECMTypeAuto=Automatic +ECMDocsBySocialContributions=Documents linked to social contributions ECMDocsByThirdParties=Documents linked to third parties ECMDocsByProposals=Documents linked to proposals ECMDocsByOrders=Documents linked to customers orders diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 11dd26b2d5e..179d04d96bc 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -104,8 +104,10 @@ ErrorBadValueForCode=Bad value for security code. Try again with new value... ErrorBothFieldCantBeNegative=Fields %s and %s can't be both negative ErrorWebServerUserHasNotPermission=User account %s used to execute web server has no permission for that ErrorNoActivatedBarcode=No barcode type activated -ErrorOSSystem=The online installation does not support your operating system.
Install the component manually. -ErrorUncompFile=Unable to install the package %s +ErrUnzipFails=Failed to unzip %s with ZipArchive +ErrNoZipEngine=No engine to unzip %s file in this PHP +ErrorFileMustBeADolibarrPackage=The file %s must be a Dolibarr zip package +ErrorFileRequired=It takes a package Dolibarr file # Warnings WarningSafeModeOnCheckExecDir=Warning, PHP option safe_mode is on so command must be stored inside a directory declared by php parameter safe_mode_exec_dir. diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index d5deed6ec64..a252859f964 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -77,6 +77,7 @@ CheckRead=Read Receipt YourMailUnsubcribeOK=The email %s is correctly unsubcribe from mailing list MailtoEMail=Hyper link to email ActivateCheckRead=Activate Read receipt and unsubcribe tag +ActivateCheckReadKey=Key use to encrypt URL use for Read Receipt and unsubcribe function # Libelle des modules de liste de destinataires mailing MailingModuleDescContactCompanies=Contacts of all third parties (customer, prospect, supplier, ...) diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index cfaba733759..232441f6a26 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -141,6 +141,7 @@ DescADHERENT_MAIL_RESIL_SUBJECT=EMail subject for member resiliation DescADHERENT_MAIL_RESIL=EMail for member resiliation DescADHERENT_MAIL_FROM=Sender EMail for automatic emails DescADHERENT_ETIQUETTE_TYPE=Format of labels page +DescADHERENT_ETIQUETTE_TEXT=Text printed on member address sheets DescADHERENT_CARD_TYPE=Format of cards page DescADHERENT_CARD_HEADER_TEXT=Text printed on top of member cards DescADHERENT_CARD_TEXT=Text printed on member cards (align on left) @@ -160,9 +161,9 @@ MoreActionBankViaInvoice=Create an invoice and payment on account MoreActionInvoiceOnly=Create an invoice with no payment LinkToGeneratedPages=Generate visit cards LinkToGeneratedPagesDesc=This screen allows you to generate PDF files with business cards for all your members or a particular member. -DocForAllMembersCards=Generate business cards for all members (Format for output actually setup : %s) -DocForOneMemberCards=Generate business cards for a particular member (Format for output actually setup: %s) -DocForLabels=Generate address sheets (Format for output actually setup: %s) +DocForAllMembersCards=Generate business cards for all members +DocForOneMemberCards=Generate business cards for a particular member +DocForLabels=Generate address sheets SubscriptionPayment=Subscription payment LastSubscriptionDate=Last subscription date LastSubscriptionAmount=Last subscription amount diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index d795dc7f28a..9fc2f01626c 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -29,6 +29,7 @@ StatusOrderCanceledShort=Canceled StatusOrderDraftShort=Draft StatusOrderValidatedShort=Validated StatusOrderSentShort=In process +StatusOrderSent=Shipment in process StatusOrderOnProcessShort=Reception StatusOrderProcessedShort=Processed StatusOrderToBillShort=To bill diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index ead787d3d84..75082f8012c 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -85,6 +85,10 @@ TaskIsNotAffectedToYou=Task not allocated to you ErrorTimeSpentIsEmpty=Time spent is empty ThisWillAlsoRemoveTasks=This action will also delete all tasks of project (%s tasks at the moment) and all inputs of time spent. IfNeedToUseOhterObjectKeepEmpty=If some objects (invoice, order, ...), belonging to another third party, must be linked to the project to create, keep this empty to have the project being multi third parties. +CloneProject=Clone project (associated task will be duplicated too) +ConfirmCloneProject=Are you sure to clone this project ? +ProjectReportDate=Change task date according project start date +ErrorShiftTaskDate=Impossible to shift task date according to new project start date ##### Types de contacts ##### TypeContact_project_internal_PROJECTLEADER=Project leader TypeContact_project_external_PROJECTLEADER=Project leader diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index 8688d51e7cc..823cb5cc04f 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -80,4 +80,5 @@ ConfirmDeleteWarehouse=Are you sure you want to delete the warehouse %s ? PersonalStock=Personal stock %s ThisWarehouseIsPersonalStock=This warehouse represents personal stock of %s %s SelectWarehouseForStockDecrease=Choose warehouse to use for stock decrease -SelectWarehouseForStockIncrease=Choose warehouse to use for stock increase \ No newline at end of file +SelectWarehouseForStockIncrease=Choose warehouse to use for stock increase +LastWaitingSupplierOrders=Orders waiting for receptions \ No newline at end of file diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index e9a2e4775cc..69c762db639 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -266,12 +266,10 @@ FindPackageFromWebSite=Buscar el paquete que responde a su necesidad (por ejempl DownloadPackageFromWebSite=Descargar el paquete desde el sitio %s. UnpackPackageInDolibarrRoot=Descomprimir el paquete en el directorio raíz de Dolibarr %s sobre los archivos existentes (sin desplazar o borrar los existentes, so pena de perder su configuración o los módulos no oficiales instalados) SetupIsReadyForUse=La instalación ha finalizado y Dolibarr está disponible con el nuevo componente. - NotExistsDirect=No existe el directorio alternativo.
InfDirAlt=Desde la versión 3 es posible definir un directorio root alternativo, esto le permite almacenar en el mismo lugar módulos y temas personalizados.
Basta con crear un directorio en el raíz de Dolibarr (por ejemplo: custom).
InfDirExample=
Seguidamente se declara en el archivo conf.php:
$dolibarr_main_url_root_alt='http://miservidor/custom'
$dolibarr_main_document_root_alt='/directorio/de/dolibarr/htdocs/custom'
*Estas lineas vienen comentadas con un "#", para descomentarlas solo hay que retirar el caracter. -YouCanSubmitFile=Seleccione módulo: - +YouCanSubmitFile=Seleccione paquete: CurrentVersion=Versión actual de Dolibarr CallUpdatePage=Llamar a la página de actualización de la estructura y datos de la base de datos %s. LastStableVersion=Última versión estable disponible diff --git a/htdocs/langs/es_ES/errors.lang b/htdocs/langs/es_ES/errors.lang index af2766c4856..c60421b87cb 100644 --- a/htdocs/langs/es_ES/errors.lang +++ b/htdocs/langs/es_ES/errors.lang @@ -105,8 +105,10 @@ ErrorBothFieldCantBeNegative=Los campos %s y %s no pueden ser negativos ErrorNoActivatedBarcode=Ningún tipo de código de barra activado ErrorWebServerUserHasNotPermission=La cuenta de ejecución del servidor web %s no dispone de los permisos para esto ErrorNoActivatedBarcode=No hay activado ningún tipo de código de barras -ErrorOSSystem=La instalación online no soporta su sistema operativo.
Instale la extensión manualmente. -ErrorUncompFile=No es posible instalar el paquete %s +ErrUnzipFails=No se ha podido descomprimir el archivo %s con ZipArchive +ErrNoZipEngine=En este PHP no hay motor para descomprimir el archivo %s +ErrorFileMustBeADolibarrPackage=El archivo %s debe ser un paquete Dolibarr en formato zip +ErrorFileRequired=Se requiere un archivo de paquete Dolibarr en formato zip # Warnings WarningSafeModeOnCheckExecDir=Atención, está activada la opción PHP safe_mode, el comando deberá estar dentro de un directorio declarado dentro del parámetro php safe_mode_exec_dir. diff --git a/htdocs/langs/es_ES/members.lang b/htdocs/langs/es_ES/members.lang index fac0c82d0c5..4ccee8d5918 100644 --- a/htdocs/langs/es_ES/members.lang +++ b/htdocs/langs/es_ES/members.lang @@ -163,9 +163,9 @@ MoreActionBankViaInvoice=Creación factura con el pago en cuenta bancaria o caja MoreActionInvoiceOnly=Creación factura sin pago LinkToGeneratedPages=Generación de tarjetas de presentación LinkToGeneratedPagesDesc=Esta pantalla le permite crear plantillas de tarjetas de presentación para los miembros o para cada miembro en particular. -DocForAllMembersCards=Generación de tarjetas para todos los miembros (Formato de plantilla configurado actualmente: %s) -DocForOneMemberCards=Generación de tarjetas para un miembro en particular (Formato de plantilla configurado actualmente: %s) -DocForLabels=Generación de etiquetas de direcciones (Formato de plantilla configurado actualmente: %s) +DocForAllMembersCards=Generación de tarjetas para todos los miembros +DocForOneMemberCards=Generación de tarjetas para un miembro en particular +DocForLabels=Generación de etiquetas de direcciones SubscriptionPayment=Pago cuota LastSubscriptionDate=Fecha de la última cotización LastSubscriptionAmount=Importe de la última cotización diff --git a/htdocs/langs/es_ES/stocks.lang b/htdocs/langs/es_ES/stocks.lang index fda76549417..a1a98bc31f7 100644 --- a/htdocs/langs/es_ES/stocks.lang +++ b/htdocs/langs/es_ES/stocks.lang @@ -81,3 +81,4 @@ PersonalStock=Stock personal %s ThisWarehouseIsPersonalStock=Este almacén representa el stock personal de %s %s SelectWarehouseForStockDecrease=Seleccione el almacén a usar en el decremento de stock SelectWarehouseForStockIncrease=Seleccione el almacén a usar en el incremento de stock +LastWaitingSupplierOrders=Pedidos en espera de recepción \ No newline at end of file diff --git a/htdocs/langs/fr_FR/ecm.lang b/htdocs/langs/fr_FR/ecm.lang index 842ff373da8..27aef45cfba 100644 --- a/htdocs/langs/fr_FR/ecm.lang +++ b/htdocs/langs/fr_FR/ecm.lang @@ -36,6 +36,7 @@ ECMSearchByEntity=Recherche par objet ECMSectionOfDocuments=Répertoires des documents ECMTypeManual=Manuel ECMTypeAuto=Automatique +ECMDocsBySocialContributions=Documents associés à des charges sociales ECMDocsByThirdParties=Documents associés aux tiers ECMDocsByProposals=Documents associés aux propositions ECMDocsByOrders=Documents associés aux commandes diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index f1ef34ea9e4..94481394e67 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -105,8 +105,10 @@ ErrorBadValueForCode=Mauvaise valeur saisie pour le code. Réessayez avec une no ErrorBothFieldCantBeNegative=Les champs %s et %s ne peuvent être tous deux négatifs ErrorWebServerUserHasNotPermission=Le compte d'execution du serveur web %s n'a pas les permissions pour cela ErrorNoActivatedBarcode=Aucun type de code bar activé -ErrorOSSystem=L'installation en ligne ne prend pas en charge votre OS.
Installez le composant manuellement. -ErrorUncompFile=Impossible d'installer le package %s +ErrUnzipFails=Impossible de décompresser le fichier %s avec ZipArchive +ErrNoZipEngine=Pas de moteur pour décompresser le fichier %s dans ce PHP +ErrorFileMustBeADolibarrPackage=Le fichier doit être un package Dolibarr +ErrorFileRequired=Il faut un fichier de package Dolibarr # Warnings WarningSafeModeOnCheckExecDir=Attention, l'option PHP safe_mode est active, la commande doit dont être dans un répertoire déclaré dans le paramètre php safe_mode_exec_dir. diff --git a/htdocs/langs/fr_FR/mails.lang b/htdocs/langs/fr_FR/mails.lang index 45b5dd24263..11b0aa4e0e1 100644 --- a/htdocs/langs/fr_FR/mails.lang +++ b/htdocs/langs/fr_FR/mails.lang @@ -77,6 +77,7 @@ CheckRead=Accusé de lecture YourMailUnsubcribeOK=L'adresse e-mail %s est bien désincrite de la liste. MailtoEMail=Ecrire a e-mail (lien) ActivateCheckRead=Activer les tags d'accusé de lecture et de désincription +ActivateCheckReadKey=Clef de sécurité utilisée pour l'encryption des URL utilisées dans les fonctions d'accusé de lecture et de désincription # Libelle des modules de liste de destinataires mailing MailingModuleDescContactCompanies=Contacts de tiers (prospects, clients, fournisseurs...) diff --git a/htdocs/langs/fr_FR/members.lang b/htdocs/langs/fr_FR/members.lang index b89e294a037..c309f2d5c96 100644 --- a/htdocs/langs/fr_FR/members.lang +++ b/htdocs/langs/fr_FR/members.lang @@ -145,6 +145,7 @@ DescADHERENT_MAIL_RESIL_SUBJECT=Sujet du mail de résiliation DescADHERENT_MAIL_RESIL=Mail de résiliation DescADHERENT_MAIL_FROM=Mail émetteur pour les mails automatiques DescADHERENT_ETIQUETTE_TYPE=Format pages étiquettes +DescADHERENT_ETIQUETTE_TEXT=Texte imprimé sur les planches d'adresses adhérent DescADHERENT_CARD_TYPE=Format pages cartes d'adhérent DescADHERENT_CARD_HEADER_TEXT=Texte imprimé sur le haut des cartes d'adhérent DescADHERENT_CARD_TEXT=Texte imprimé sur les cartes d'adhérent (Aligné à gauche) @@ -162,11 +163,11 @@ MoreActions=Action complémentaire à l'enregistrement MoreActionBankDirect=Création transaction sur compte bancaire ou caisse directement MoreActionBankViaInvoice=Création facture avec paiement sur compte bancaire ou caisse MoreActionInvoiceOnly=Création facture sans paiement -LinkToGeneratedPages=Génération de cartes de visites -LinkToGeneratedPagesDesc=Cet écran vous permet de générer des planches de cartes de visite pour chaque adhérent ou pour un adhérent en particulier. -DocForAllMembersCards=Génération de cartes pour tous les adhérents (Format de planche actuellement configuré: %s) -DocForOneMemberCards=Génération de cartes pour un adhérent particulier (Format de planche actuellement configuré: %s) -DocForLabels=Génération d'étiquettes d'adresses (Format de planche actuellement configuré: %s) +LinkToGeneratedPages=Génération de cartes de visites ou planches d'adresses +LinkToGeneratedPagesDesc=Cet écran vous permet de générer des planches de cartes de visite ou d'étiquettes d'adresses pour chaque adhérent ou pour un adhérent en particulier. +DocForAllMembersCards=Génération de cartes pour tous les adhérents +DocForOneMemberCards=Génération de cartes pour un adhérent particulier +DocForLabels=Génération d'étiquettes d'adresses SubscriptionPayment=Paiement cotisation LastSubscriptionDate=Date de la dernière cotisation LastSubscriptionAmount=Montant de la dernière cotisation diff --git a/htdocs/langs/fr_FR/orders.lang b/htdocs/langs/fr_FR/orders.lang index e9c4d7c5cac..5f9d39d9a19 100644 --- a/htdocs/langs/fr_FR/orders.lang +++ b/htdocs/langs/fr_FR/orders.lang @@ -30,6 +30,7 @@ StatusOrderDraftShort=Brouillon StatusOrderValidatedShort=Validée StatusOrderOnProcessShort=Réception StatusOrderSentShort=Envoi en cours +StatusOrderSent=Envoi en cours StatusOrderProcessedShort=Traitée StatusOrderToBillShort=À facturer StatusOrderApprovedShort=Approuvée diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index 6722ac6bb1d..0c3a21e4cdb 100644 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -85,6 +85,10 @@ TaskIsNotAffectedToYou=Tâche qui ne vous est pas affectée ErrorTimeSpentIsEmpty=Le temps consommé n'est pas renseigné ThisWillAlsoRemoveTasks=Cette opération détruira également les tâches du projet (%s tâches actuellement) et le suivi des consommés. IfNeedToUseOhterObjectKeepEmpty=Si des objets (facture, commande, ...), appartenant à un autre tiers que celui choisi, doivent être liés au projet à créer, laisser vide afin de laisser le projet multi-tiers. +CloneProject=Cloner le projet (les taches associées sont dupliquées également) +ConfirmCloneProject=Êtes-vous sûr de vouloir cloner ce projet ? +ProjectReportDate=Reporter les dates des taches en fonction de la date de départ. +ErrorShiftTaskDate=Une erreur c'est produite dans le report des dates des taches. ##### Types de contacts ##### TypeContact_project_internal_PROJECTLEADER=Chef de projet TypeContact_project_external_PROJECTLEADER=Chef de projet diff --git a/htdocs/langs/fr_FR/stocks.lang b/htdocs/langs/fr_FR/stocks.lang index c89a25a4347..4aacdedaead 100644 --- a/htdocs/langs/fr_FR/stocks.lang +++ b/htdocs/langs/fr_FR/stocks.lang @@ -80,4 +80,5 @@ ConfirmDeleteWarehouse=Êtes-vous sûr de vouloir supprimer l'entrepôt %sdb); @@ -379,7 +381,7 @@ class Livraison extends CommonObject $sql = "UPDATE ".MAIN_DB_PREFIX."livraison SET"; $sql.= " ref='".$this->db->escape($this->ref)."'"; $sql.= ", fk_statut = 1"; - $sql.= ", date_valid = ".$this->db->idate(mktime()); + $sql.= ", date_valid = ".$this->db->idate($now); $sql.= ", fk_user_valid = ".$user->id; $sql.= " WHERE rowid = ".$this->id; $sql.= " AND fk_statut = 0"; diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index d10a9e91706..79e6b268555 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -665,6 +665,14 @@ if (! defined('NOREQUIRETRAN')) } } +// Use php template engine +if ($conf->global->MAIN_USE_TEMPLATE_ENGINE && ! defined('NOTEMPLATEENGINE')) +{ + require_once(DOL_DOCUMENT_ROOT.'/includes/savant/Savant3.php'); + + $tpl = new Savant3(); +} + // Case forcing style from url if (GETPOST('theme')) { @@ -1173,7 +1181,7 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a if (! class_exists('MenuTop')) { $menufound=0; - $dirmenus=array_merge(array("/core/menus/"),$conf->menus_modules); + $dirmenus=array_merge(array("/core/menus/"),$conf->modules_parts['menus']); foreach($dirmenus as $dirmenu) { $menufound=dol_include_once($dirmenu."standard/".$top_menu); @@ -1379,7 +1387,7 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me if (! class_exists('MenuLeft')) { $menufound=0; - $dirmenus=array_merge(array("/core/menus/"),$conf->menus_modules); + $dirmenus=array_merge(array("/core/menus/"),$conf->modules_parts['menus']); foreach($dirmenus as $dirmenu) { $menufound=dol_include_once($dirmenu."standard/".$left_menu); diff --git a/htdocs/master.inc.php b/htdocs/master.inc.php index 318161f5454..174d0357ab2 100644 --- a/htdocs/master.inc.php +++ b/htdocs/master.inc.php @@ -233,6 +233,8 @@ if (! defined('NOREQUIREDB') && ! defined('NOREQUIRESOC')) $mysoc->idprof2=empty($conf->global->MAIN_INFO_SIRET)?'':$conf->global->MAIN_INFO_SIRET; $mysoc->idprof3=empty($conf->global->MAIN_INFO_APE)?'':$conf->global->MAIN_INFO_APE; $mysoc->idprof4=empty($conf->global->MAIN_INFO_RCS)?'':$conf->global->MAIN_INFO_RCS; + $mysoc->idprof5=empty($conf->global->MAIN_INFO_PROFID5)?'':$conf->global->MAIN_INFO_PROFID5; + $mysoc->idprof6=empty($conf->global->MAIN_INFO_PROFID6)?'':$conf->global->MAIN_INFO_PROFID6; $mysoc->tva_intra=$conf->global->MAIN_INFO_TVAINTRA; // VAT number, not necessarly INTRA. $mysoc->idtrainer=empty($conf->global->MAIN_INFO_TRAINER)?'':$conf->global->MAIN_INFO_TRAINER; $mysoc->capital=$conf->global->MAIN_INFO_CAPITAL; diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 8380d390a96..2b80ce5360b 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -1897,11 +1897,13 @@ class Product extends CommonObject function clone_fournisseurs($fromId, $toId) { $this->db->begin(); + + $now=dol_now(); // les fournisseurs /*$sql = "INSERT ".MAIN_DB_PREFIX."product_fournisseur (" . " datec, fk_product, fk_soc, ref_fourn, fk_user_author )" - . " SELECT '".$this->db->idate(mktime())."', ".$toId.", fk_soc, ref_fourn, fk_user_author" + . " SELECT '".$this->db->idate($now)."', ".$toId.", fk_soc, ref_fourn, fk_user_author" . " FROM ".MAIN_DB_PREFIX."product_fournisseur" . " WHERE fk_product = ".$fromId; @@ -1914,7 +1916,7 @@ class Product extends CommonObject // les prix de fournisseurs. $sql = "INSERT ".MAIN_DB_PREFIX."product_fournisseur_price ("; $sql.= " datec, fk_product, fk_soc, price, quantity, fk_user)"; - $sql.= " SELECT '".$this->db->idate(mktime())."', ".$toId. ", fk_soc, price, quantity, fk_user"; + $sql.= " SELECT '".$this->db->idate($now)."', ".$toId. ", fk_soc, price, quantity, fk_user"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price"; $sql.= " WHERE fk_product = ".$fromId; diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 483d2034553..58c3ad97ca8 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -1,8 +1,8 @@ - * Copyright (C) 2005-2012 Laurent Destailleur - * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2005-2008 Laurent Destailleur + * Copyright (C) 2005-2010 Regis Houssin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -39,8 +39,6 @@ class Project extends CommonObject var $description; var $statut; var $title; - var $date_c; - var $date_m; var $date_start; var $date_end; var $socid; @@ -54,7 +52,7 @@ class Project extends CommonObject /** * Constructor * - * @param DoliDB $db Database handler + * @param DoliDB $DB Database handler */ function __construct($db) { @@ -83,7 +81,7 @@ class Project extends CommonObject if (!trim($this->ref)) { $this->error = 'ErrorFieldsRequired'; - dol_syslog("Project::Create error -1 ref null", LOG_ERR); + dol_syslog(get_class($this)."::Create error -1 ref null", LOG_ERR); return -1; } @@ -109,13 +107,13 @@ class Project extends CommonObject $sql.= ", " . $user->id; $sql.= ", 0"; $sql.= ", " . ($this->public ? 1 : 0); - $sql.= ", " . ($this->datec != '' ? $this->db->idate($this->datec) : 'null'); - $sql.= ", " . ($this->dateo != '' ? $this->db->idate($this->dateo) : 'null'); - $sql.= ", " . ($this->datee != '' ? $this->db->idate($this->datee) : 'null'); + $sql.= ", " . $this->db->idate(dol_now()); + $sql.= ", " . ($this->date_start != '' ? $this->db->idate($this->date_start) : 'null'); + $sql.= ", " . ($this->date_end != '' ? $this->db->idate($this->date_end) : 'null'); $sql.= ", ".$conf->entity; $sql.= ")"; - dol_syslog("Project::create sql=" . $sql, LOG_DEBUG); + dol_syslog(get_class($this)."::create sql=" . $sql, LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { @@ -140,7 +138,7 @@ class Project extends CommonObject { $this->error = $this->db->lasterror(); $this->errno = $this->db->lasterrno(); - dol_syslog("Project::Create error -2 " . $this->error, LOG_ERR); + dol_syslog(get_class($this)."::Create error -2 " . $this->error, LOG_ERR); $error++; } @@ -193,7 +191,7 @@ class Project extends CommonObject $sql.= ", datee=" . ($this->date_end != '' ? $this->db->idate($this->date_end) : 'null'); $sql.= " WHERE rowid = " . $this->id; - dol_syslog("Project::Update sql=" . $sql, LOG_DEBUG); + dol_syslog(get_class($this)."::Update sql=" . $sql, LOG_DEBUG); if ($this->db->query($sql)) { if (!$notrigger) @@ -215,13 +213,13 @@ class Project extends CommonObject else { $this->error = $this->db->lasterror(); - dol_syslog("Project::Update error -2 " . $this->error, LOG_ERR); + dol_syslog(get_class($this)."::Update error -2 " . $this->error, LOG_ERR); $result = -2; } } else { - dol_syslog("Project::Update ref null"); + dol_syslog(get_class($this)."::Update ref null"); $result = -1; } @@ -245,7 +243,7 @@ class Project extends CommonObject if ($ref) $sql.= " WHERE ref='" . $ref . "'"; else $sql.= " WHERE rowid=" . $id; - dol_syslog("Project::fetch sql=" . $sql, LOG_DEBUG); + dol_syslog(get_class($this)."::fetch sql=" . $sql, LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { @@ -284,7 +282,7 @@ class Project extends CommonObject else { $this->error = $this->db->lasterror(); - dol_syslog("Project::fetch " . $this->error, LOG_ERR); + dol_syslog(get_class($this)."::fetch " . $this->error, LOG_ERR); return -1; } } @@ -364,7 +362,7 @@ class Project extends CommonObject if (! $sql) return -1; //print $sql; - dol_syslog("Project::get_element_list sql=" . $sql); + dol_syslog(get_class($this)."::get_element_list sql=" . $sql); $result = $this->db->query($sql); if ($result) { @@ -499,7 +497,7 @@ class Project extends CommonObject $sql.= " WHERE rowid = " . $this->id; $sql.= " AND entity = " . $conf->entity; - dol_syslog("Project::setValid sql=" . $sql); + dol_syslog(get_class($this)."::setValid sql=" . $sql); $resql = $this->db->query($sql); if ($resql) { @@ -523,7 +521,7 @@ class Project extends CommonObject { $this->db->rollback(); $this->error = join(',', $this->errors); - dol_syslog("Project::setValid " . $this->error, LOG_ERR); + dol_syslog(get_class($this)."::setValid " . $this->error, LOG_ERR); return -1; } } @@ -531,7 +529,7 @@ class Project extends CommonObject { $this->db->rollback(); $this->error = $this->db->lasterror(); - dol_syslog("Project::setValid " . $this->error, LOG_ERR); + dol_syslog(get_class($this)."::setValid " . $this->error, LOG_ERR); return -1; } } @@ -559,7 +557,7 @@ class Project extends CommonObject $sql.= " AND entity = " . $conf->entity; $sql.= " AND fk_statut = 1"; - dol_syslog("Project::setClose sql=" . $sql); + dol_syslog(get_class($this)."::setClose sql=" . $sql); $resql = $this->db->query($sql); if ($resql) { @@ -583,7 +581,7 @@ class Project extends CommonObject { $this->db->rollback(); $this->error = join(',', $this->errors); - dol_syslog("Project::setClose " . $this->error, LOG_ERR); + dol_syslog(get_class($this)."::setClose " . $this->error, LOG_ERR); return -1; } } @@ -591,7 +589,7 @@ class Project extends CommonObject { $this->db->rollback(); $this->error = $this->db->lasterror(); - dol_syslog("Project::setClose " . $this->error, LOG_ERR); + dol_syslog(get_class($this)."::setClose " . $this->error, LOG_ERR); return -1; } } @@ -709,7 +707,7 @@ class Project extends CommonObject { global $user, $langs, $conf; - $now = dol_now(); + $now=dol_now(); // Charge tableau des produits prodids $prodids = array(); @@ -882,6 +880,359 @@ class Project extends CommonObject return $projects; } + + /** Load an object from its id and create a new one in database + * + * @param int $fromid Id of object to clone + * @param bool $clone_contact clone contact of project + * @param bool $clone_ref clone ref of project + * @param bool $clone_task clone task of project + * @param bool $clone_file clone file of project + * @param bool $clone_note clone note of project + * @return int New id of clone + */ + function createFromClone($fromid,$clone_contact=false,$clone_task=true,$clone_file=true,$clone_note=true) + { + global $user,$langs,$conf; + + $error=0; + + $now = dol_mktime(0,0,0,idate('m',dol_now()),idate('d',dol_now()),idate('Y',dol_now())); + + $clone_project=new Project($this->db); + + $this->db->begin(); + + // Load source object + $clone_project->fetch($fromid); + + $orign_dt_start=$clone_project->date_start; + + + $orign_project_ref=$clone_project->ref; + + $clone_project->id=0; + $clone_project->date_start = $now; + if (!(empty($clone_project->date_end))) + { + //Calculate new project end date ragarding difference between original project start date and new start date (now) + $datetime_start = new DateTime(); + $datetime_start->setTimestamp($orign_dt_start); + $datetime_now = new DateTime(); + $datetime_now->setTimestamp($now); + $diff_dt = $datetime_start->diff($datetime_now); + + $datetime_end = new DateTime(); + $datetime_end->setTimestamp($clone_project->date_end); + $datetime_end->add($diff_dt); + $clone_project->date_end = $datetime_end->getTimestamp(); + } + + $clone_project->datec = $now; + + if (!$clone_note) + { + $clone_project->note_private=''; + $clone_project->note_public=''; + } + + //Generate next ref + $defaultref=''; + $obj = empty($conf->global->PROJECT_ADDON)?'mod_project_simple':$conf->global->PROJECT_ADDON; + if (! empty($conf->global->PROJECT_ADDON) && is_readable(DOL_DOCUMENT_ROOT ."/core/modules/project/".$conf->global->PROJECT_ADDON.".php")) + { + + require_once(DOL_DOCUMENT_ROOT ."/core/modules/project/".$conf->global->PROJECT_ADDON.".php"); + $modProject = new $obj; + $defaultref = $modProject->getNextValue($clone_project->societe->id,$clone_project); + } + + if (is_numeric($defaultref) && $defaultref <= 0) $defaultref=''; + + $clone_project->ref=$defaultref; + + // Create clone + $result=$clone_project->create($user); + + // Other options + if ($result < 0) + { + $this->error.=$clone_project->error; + $error++; + } + + if (! $error) + { + $this->db->commit(); + + //Get the new project id + $clone_project_id=$clone_project->id; + + //Note Update + if (!$clone_note) + { + $clone_project->note_private=''; + $clone_project->note_public=''; + } + else + { + $this->db->begin(); + $res=$clone_project->update_note_public(dol_html_entity_decode($clone_project->note_public, ENT_QUOTES)); + if ($res < 0) + { + $this->error.=$clone_project->error; + $error++; + $this->db->rollback(); + } + else + { + $this->db->commit(); + } + + $this->db->begin(); + $res=$clone_project->update_note(dol_html_entity_decode($clone_project->note_private, ENT_QUOTES)); + if ($res < 0) + { + $this->error.=$clone_project->error; + $error++; + $this->db->rollback(); + } + else + { + $this->db->commit(); + } + } + + //Duplicate contact + if ($clone_contact) + { + $origin_project = new Project($this->db); + $origin_project->fetch($fromid); + + foreach(array('internal','external') as $source) + { + $tab = $origin_project->liste_contact(-1,$source); + + foreach ($tab as $contacttoadd) + { + $clone_project->add_contact($contacttoadd['id'], $contacttoadd['code'], $contacttoadd['source']); + if ($clone_project->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') + { + $langs->load("errors"); + $this->error.=$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"); + $error++; + } + else + { + if ($clone_project->error!='') + { + $this->error.=$clone_project->error; + $error++; + } + } + } + } + } + + //Duplicate file + if ($clone_file) + { + require_once(DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"); + + $clone_project_dir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($defaultref); + $ori_project_dir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($orign_project_ref); + + if (dol_mkdir($clone_project_dir) >= 0) + { + $filearray=dol_dir_list($ori_project_dir,"files",0,'','\.meta$','',SORT_ASC,1); + foreach($filearray as $key => $file) + { + $rescopy = dol_copy($ori_project_dir . '/' . $file['name'], $clone_project_dir . '/' . $file['name'],0,1); + if (is_numeric($rescopy) && $rescopy < 0) + { + $this->error.=$langs->trans("ErrorFailToCopyFile",$ori_project_dir . '/' . $file['name'],$clone_project_dir . '/' . $file['name']); + $error++; + } + } + } + else + { + $this->error.=$langs->trans('ErrorInternalErrorDetected').':dol_mkdir'; + $error++; + } + } + + //Duplicate task + if ($clone_task) + { + $taskstatic = new Task($this->db); + + // Security check + $socid=0; + if ($user->societe_id > 0) $socid = $user->societe_id; + + $tasksarray=$taskstatic->getTasksArray(0, 0, $fromid, $socid, 0); + + //manage new parent clone task id + $tab_conv_child_parent=array(); + + foreach ($tasksarray as $tasktoclone) + { + $result_clone = $taskstatic->createFromClone($tasktoclone->id,$clone_project_id,$tasktoclone->fk_parent,true,true,false,true,true,false); + if ($result_clone <= 0) + { + $this->error.=$result_clone->error; + $error++; + } + else + { + $new_task_id=$result_clone; + $taskstatic->fetch($tasktoclone->id); + + //manage new parent clone task id + // if the current task has child we store the original task id and the equivalent clone task id + if (($taskstatic->hasChildren()) && !array_key_exists($tasktoclone->id,$tab_conv_child_parent)) + { + $tab_conv_child_parent[$tasktoclone->id] = $new_task_id; + } + } + + } + + //Parse all clone node to be sure to update new parent + $tasksarray=$taskstatic->getTasksArray(0, 0, $clone_project_id, $socid, 0); + foreach ($tasksarray as $task_cloned) + { + $taskstatic->fetch($task_cloned->id); + if ($taskstatic->fk_task_parent!=0) + { + $taskstatic->fk_task_parent=$tab_conv_child_parent[$taskstatic->fk_task_parent]; + } + $res=$taskstatic->update($user); + if ($result_clone <= 0) + { + $this->error.=$taskstatic->error; + $error++; + } + } + } + + + + if (! $error) + { + return $clone_project_id; + } + else + { + dol_syslog(get_class($this)."::createFromClone nbError: ".$error." error : " . $this->error, LOG_ERR); + return -1; + } + + } + else + { + $this->db->rollback(); + return -1; + } + } + + + /** Shift project task date from current date to delta + * + * @param timestamp $old_project_dt_start old project start date + * @return int 1 if OK or < 0 if KO + */ + function shiftTaskDate($old_project_dt_start) + { + global $user,$langs,$conf; + + $error=0; + + $taskstatic = new Task($this->db); + + // Security check + $socid=0; + if ($user->societe_id > 0) $socid = $user->societe_id; + + //convert timestamp to datetime + $old_project_dt_st = new DateTime(); + $old_project_dt_st->setTimestamp($old_project_dt_start); + $old_project_dt_st->setTime(0,0,0); //Use 00:00:00 as time to be sure to not have side + + $tasksarray=$taskstatic->getTasksArray(0, 0, $this->id, $socid, 0); + + foreach ($tasksarray as $tasktoshiftdate) + { + $to_update=false; + // Fetch only if update of date will be made + if ((!empty($tasktoshiftdate->date_start)) || (!empty($tasktoshiftdate->date_end))) + { + //dol_syslog(get_class($this)."::shiftTaskDate to_update", LOG_DEBUG); + $to_update=true; + $task = new Task($this->db); + $result = $task->fetch($tasktoshiftdate->id); + if (!$result) + { + $error++; + $this->error.=$task->error; + } + } + + //Calcultate new task start date with difference between old proj start date and origin task start date + if (!empty($tasktoshiftdate->date_start)) + { + dol_syslog(get_class($this)."::shiftTaskDate to_update", LOG_DEBUG); + $orign_task_datetime_start = new DateTime(); + $orign_task_datetime_start->setTimestamp($tasktoshiftdate->date_start); + $orign_task_datetime_start->setTime(0,0,0); //Use 00:00:00 as time to be sure to not have side effect + $diff_dt_st = $old_project_dt_st->diff($orign_task_datetime_start); + + //Project new start date + $datetime_start = new DateTime(); + $datetime_start->setTimestamp($this->date_start); + $datetime_start->setTime(0,0,0); //Use 00:00:00 as time to be sure to not have side + + //New task start date + $datetime_start->add($diff_dt_st); + $task->date_start = $datetime_start->getTimestamp(); + } + + //Calcultate new task end date with difference between origin proj end date and origin task end date + if (!empty($tasktoshiftdate->date_end)) + { + $orign_task_datetime_end = new DateTime(); + $orign_task_datetime_end->setTimestamp($tasktoshiftdate->date_end); + $orign_task_datetime_end->setTime(0,0,0); //Use 00:00:00 as hour to be sure to not have side effect + + $diff_dt_end = $old_project_dt_st->diff($orign_task_datetime_end); + + //Project new start date + $datetime_end = new DateTime(); + $datetime_end->setTimestamp($this->date_start); + $datetime_end->setTime(0,0,0); //Use 00:00:00 as time to be sure to not have side + + //New task start date + $datetime_end->add($diff_dt_end); + $task->date_end = $datetime_end->getTimestamp(); + } + + if ($to_update) + { + $result = $task->update($user); + if (!$result) + { + $error++; + $this->error.=$task->error; + } + } + } + if ($error!=0) + { + return -1; + } + return $result; + } } diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index a2b9e337f26..59c6325dd3b 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -64,7 +64,7 @@ class Task extends CommonObject /** * Constructor * - * @param DoliDB $db Database handler + * @param DoliDB $DB Database handler */ function __construct($db) { @@ -305,6 +305,7 @@ class Task extends CommonObject */ function delete($user, $notrigger=0) { + global $conf, $langs; $error=0; @@ -391,7 +392,7 @@ class Task extends CommonObject $this->db->commit(); - return 1; + return 1; } } @@ -934,6 +935,246 @@ class Task extends CommonObject return 1; } } + + /** Load an object from its id and create a new one in database + * + * @param int $fromid Id of object to clone + * @param int $project_id Id of project to attach clone task + * @param int $parent_task_id Id of task to attach clone task + * @param bool $clone_change_dt recalculate date of task regarding new project start date + * @param bool $clone_affectation clone affectation of project + * @param bool $clone_task clone task of project + * @param bool $clone_time clone time of project + * @param bool $clone_file clone file of project + * @param bool $clone_note clone note of project + * @param bool $clone_prog clone progress of project + * @return int New id of clone + */ + function createFromClone($fromid,$project_id,$parent_task_id,$clone_change_dt=false,$clone_affectation=false,$clone_time=false,$clone_file=false,$clone_note=false,$clone_prog=false) + { + global $user,$langs,$conf; + + $error=0; + + $now=dol_now(); + + $datec = dol_mktime(0,0,0,idate('m',$now),idate('d',$now),idate('Y',$now)); + + $clone_task=new Task($this->db); + + $this->db->begin(); + + // Load source object + $clone_task->fetch($fromid); + + $ori_project_id = $clone_task->fk_project; + + $clone_task->id = 0; + $clone_task->fk_project = $project_id; + $clone_task->fk_task_parent = $parent_task_id; + $clone_task->date_c = $datec; + + //Manage Task Date + if ($clone_change_dt) + { + $projectstatic=new Project($this->db); + $projectstatic->fetch($ori_project_id); + + //Origin project strat date + $orign_project_dt_start = new DateTime(); + $orign_project_dt_start->setTimestamp($projectstatic->date_start); + + //Calcultate new task start date with difference between origin proj start date and origin task start date + if (!empty($clone_task->date_start)) + { + $orign_task_datetime_start = new DateTime(); + $orign_task_datetime_start->setTimestamp($clone_task->date_start); + $orign_task_datetime_start->setTime(0,0,0); //Use 00:00:00 as hour to be sure to not have side effect + $diff_dt_st = $orign_project_dt_start->diff($orign_task_datetime_start); + + //cloned project start date + $datetime_start = new DateTime(); + $datetime_start->setTimestamp($now); + + //New task start date + $datetime_start->add($diff_dt_st); + $clone_task->date_start = $datetime_start->getTimestamp(); + } + + //Calcultate new task end date with difference between origin proj end date and origin task end date + if (!empty($clone_task->date_end)) + { + $orign_task_datetime_end = new DateTime(); + $orign_task_datetime_end->setTimestamp($clone_task->date_end); + $orign_task_datetime_end->setTime(0,0,0); //Use 00:00:00 as hour to be sure to not have side effect + $diff_dt_end = $orign_project_dt_start->diff($orign_task_datetime_end); + + //cloned project start date + $datetime_end = new DateTime(); + $datetime_end->setTimestamp($now); + + //New task start date + $datetime_end->add($diff_dt_end); + $clone_task->date_end = $datetime_end->getTimestamp(); + } + + } + + if (!$clone_prog) + { + $clone_task->progress=0; + } + + // Create clone + $result=$clone_task->create($user); + + // Other options + if ($result < 0) + { + $this->error=$clone_task->error; + $error++; + } + + // End + if (! $error) + { + $this->db->commit(); + + $clone_task_id=$clone_task->id; + + //Note Update + if (!$clone_note) + { + $clone_task->note_private=''; + $clone_task->note_public=''; + } + else + { + $this->db->begin(); + $res=$clone_task->update_note_public(dol_html_entity_decode($clone_task->note_public, ENT_QUOTES)); + if ($res < 0) + { + $this->error.=$clone_task->error; + $error++; + $this->db->rollback(); + } + else + { + $this->db->commit(); + } + + $this->db->begin(); + $res=$clone_task->update_note(dol_html_entity_decode($clone_task->note_private, ENT_QUOTES)); + if ($res < 0) + { + $this->error.=$clone_task->error; + $error++; + $this->db->rollback(); + } + else + { + $this->db->commit(); + } + } + + //Duplicate file + if ($clone_file) + { + require_once(DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"); + + //retreive project origin ref to know folder to copy + $projectstatic=new Project($this->db); + $projectstatic->fetch($ori_project_id); + $ori_project_ref=$projectstatic->ref; + + if ($ori_project_id!=$project_id) + { + $projectstatic->fetch($project_id); + $clone_project_ref=$projectstatic->ref; + } + else + { + $clone_project_ref=$ori_project_ref; + } + + $clone_task_dir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($clone_project_ref). "/" . dol_sanitizeFileName($clone_task_id); + $ori_task_dir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($ori_project_ref). "/" . dol_sanitizeFileName($fromid); + + $filearray=dol_dir_list($ori_task_dir,"files",0,'','\.meta$','',SORT_ASC,1); + foreach($filearray as $key => $file) + { + if (!file_exists($clone_task_dir)) + { + if (dol_mkdir($clone_task_dir) < 0) + { + $this->error.=$langs->trans('ErrorInternalErrorDetected').':dol_mkdir'; + $error++; + } + } + + $rescopy = dol_copy($ori_task_dir . '/' . $file['name'], $clone_task_dir . '/' . $file['name'],0,1); + if (is_numeric($rescopy) && $rescopy < 0) + { + $this->error.=$langs->trans("ErrorFailToCopyFile",$ori_task_dir . '/' . $file['name'],$clone_task_dir . '/' . $file['name']); + $error++; + } + } + } + + // clone affectation + if ($clone_affectation) + { + $origin_task = new Task($this->db); + $origin_task->fetch($fromid); + + foreach(array('internal','external') as $source) + { + $tab = $origin_task->liste_contact(-1,$source); + $num=count($tab); + $i = 0; + while ($i < $num) + { + $clone_task->add_contact($tab[$i]['id'], $tab[$i]['code'], $tab[$i]['source']); + if ($clone_task->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') + { + $langs->load("errors"); + $this->error.=$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"); + $error++; + } + else + { + if ($clone_task->error!='') + { + $this->error.=$clone_task->error; + $error++; + } + } + $i++; + } + } + } + + if($clone_time) + { + //TODO clone time of affectation + } + + if (! $error) + { + return $clone_task_id; + } + else + { + dol_syslog(get_class($this)."::createFromClone nbError: ".$error." error : " . $this->error, LOG_ERR); + return -1; + } + } + else + { + $this->db->rollback(); + return -1; + } + } } ?> diff --git a/htdocs/projet/fiche.php b/htdocs/projet/fiche.php index 925f93e0465..8b0146a08f1 100644 --- a/htdocs/projet/fiche.php +++ b/htdocs/projet/fiche.php @@ -34,7 +34,7 @@ $langs->load("projects"); $langs->load('companies'); $id=GETPOST('id','int'); -$ref = GETPOST('ref','alpha'); +$ref=GETPOST('ref','alpha'); $action=GETPOST('action','alpha'); $backtopage=GETPOST('backtopage','alpha'); @@ -58,10 +58,44 @@ $result = restrictedArea($user, 'projet', $id); // Cancel if (GETPOST("cancel") && ! empty($backtopage)) { + if (GETPOST("comefromclone")==1) + { + $project = new Project($db); + $project->fetch($id); + $result=$project->delete($user); + if ($result > 0) + { + Header("Location: index.php"); + exit; + } + else + { + dol_syslog($project->error,LOG_DEBUG); + $mesg='
'.$langs->trans("CantRemoveProject").'
'; + } + } header("Location: ".$backtopage); exit; } +//if cancel and come from clone then delete the cloned project +if (GETPOST("cancel") && (GETPOST("comefromclone")==1)) +{ + $project = new Project($db); + $project->fetch($id); + $result=$project->delete($user); + if ($result > 0) + { + Header("Location: index.php"); + exit; + } + else + { + dol_syslog($project->error,LOG_DEBUG); + $mesg='
'.$langs->trans("CantRemoveProject").'
'; + } +} + if ($action == 'add' && $user->rights->projet->creer) { $error=0; @@ -84,14 +118,14 @@ if ($action == 'add' && $user->rights->projet->creer) $project = new Project($db); - $project->ref = $_POST["ref"]; - $project->title = $_POST["title"]; - $project->socid = $_POST["socid"]; - $project->description = $_POST["description"]; - $project->public = $_POST["public"]; + $project->ref = GETPOST('ref','alpha'); + $project->title = GETPOST('title','alpha'); + $project->socid = GETPOST('socid','int'); + $project->description = GETPOST('description','alpha'); + $project->public = GETPOST('public','alpha'); $project->datec=dol_now(); - $project->dateo=dol_mktime(12,0,0,$_POST['projectmonth'],$_POST['projectday'],$_POST['projectyear']); - $project->datee=dol_mktime(12,0,0,$_POST['projectendmonth'],$_POST['projectendday'],$_POST['projectendyear']); + $project->date_start=dol_mktime(12,0,0,GETPOST('projectmonth','int'),GETPOST('projectday','int'),GETPOST('projectyear','int')); + $project->date_end=dol_mktime(12,0,0,GETPOST('projectendmonth','int'),GETPOST('projectendday','int'),GETPOST('projectendyear','int')); $result = $project->create($user); if ($result > 0) @@ -151,19 +185,31 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->projet->creer) if (! $error) { $project = new Project($db); - $project->fetch($_POST["id"]); + $project->fetch($id); - $project->ref = $_POST["ref"]; - $project->title = $_POST["title"]; - $project->socid = $_POST["socid"]; - $project->description = $_POST["description"]; - $project->public = $_POST["public"]; - $project->date_start = empty($_POST["project"])?'':dol_mktime(12,0,0,$_POST['projectmonth'],$_POST['projectday'],$_POST['projectyear']); - $project->date_end = empty($_POST["projectend"])?'':dol_mktime(12,0,0,$_POST['projectendmonth'],$_POST['projectendday'],$_POST['projectendyear']); + $old_start_date = $project->date_start; + + $project->ref = GETPOST('ref','alpha'); + $project->title = GETPOST('title','alpha'); + $project->socid = GETPOST('socid','int'); + $project->description = GETPOST('description','alpha'); + $project->public = GETPOST('public','alpha'); + $project->date_start = empty($_POST["project"])?'':dol_mktime(0,0,0,GETPOST('projectmonth'),GETPOST('projectday'),GETPOST('projectyear')); + $project->date_end = empty($_POST["projectend"])?'':dol_mktime(0,0,0,GETPOST('projectendmonth'),GETPOST('projectendday'),GETPOST('projectendyear')); $result=$project->update($user); $id=$project->id; // On retourne sur la fiche projet + + if (GETPOST("reportdate") && ($project->date_start!=$old_start_date)) + { + $result=$project->shiftTaskDate($old_start_date); + if (!$result) + { + $error++; + $mesg='
'.$langs->trans("ErrorShiftTaskDate").':'.$project->error.'
'; + } + } } else { @@ -200,6 +246,7 @@ if ($action == 'builddoc' && $user->rights->projet->creer) } } + if ($action == 'confirm_validate' && GETPOST('confirm') == 'yes') { $project = new Project($db); @@ -251,6 +298,42 @@ if ($action == 'confirm_delete' && GETPOST("confirm") == "yes" && $user->rights- } } +if ($action == 'confirm_clone' && $user->rights->projet->creer && GETPOST('confirm') == 'yes') +{ + $idtoclone=$id; + $project = new Project($db); + $project->fetch($idtoclone); + $result=$project->createFromClone($idtoclone,true,true,true,true); + if ($result <= 0) + { + $mesg='
'.$project->error.'
'; + } + else + { + $id=$result; + $action='edit'; + $comefromclone=true; + } +} + +if ($action == 'confirm_clone' && $user->rights->projet->creer && GETPOST('confirm') == 'yes') +{ + $idtoclone=$id; + $project = new Project($db); + $project->fetch($idtoclone); + $result=$project->createFromClone($idtoclone,true,true,true,true); + if ($result <= 0) + { + $mesg='
'.$project->error.'
'; + } + else + { + $id=$result; + $action='edit'; + $comefromclone=true; + } +} + /* * View @@ -289,7 +372,7 @@ if ($action == 'create' && $user->rights->projet->creer) { require_once(DOL_DOCUMENT_ROOT ."/core/modules/project/".$conf->global->PROJECT_ADDON.".php"); $modProject = new $obj; - $defaultref = $modProject->getNextValue($soc,$project); + $defaultref = $modProject->getNextValue($soc,$project); } if (is_numeric($defaultref) && $defaultref <= 0) $defaultref=''; @@ -396,13 +479,20 @@ else if ($ret == 'html') print '
'; } - + // Clone confirmation + if ($action == 'clone') + { + $ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$project->id,$langs->trans("CloneProject"),$langs->trans("ConfirmCloneProject"),"confirm_clone",'','',1); + if ($ret == 'html') print '
'; + } + if ($action == 'edit' && $userWrite > 0) { print '
'; print ''; print ''; print ''; + print ''; print ''; @@ -416,9 +506,7 @@ else // Customer print ''; // Visibility @@ -433,6 +521,9 @@ else // Date start print ''; // Date end @@ -450,8 +541,8 @@ else print '

'; print '   '; - print '
'; - + print ''; + print ''; } else @@ -489,7 +580,7 @@ else // Date start print ''; // Date end @@ -514,7 +605,7 @@ else if ($action != "edit" ) { - // Validate + // Validate if ($project->statut == 0 && $user->rights->projet->creer) { if ($userWrite > 0) @@ -565,6 +656,19 @@ else print ''.$langs->trans('ReOpen').''; } } + + // Clone + if ($user->rights->projet->creer) + { + if ($userWrite > 0) + { + print ''.$langs->trans('ToClone').''; + } + else + { + print ''.$langs->trans('ToClone').''; + } + } // Delete if ($user->rights->projet->supprimer) @@ -611,7 +715,6 @@ else print '
'.$langs->trans("Company").''; - $text=$form->select_company($project->societe->id,'socid','',1,1); - $texthelp=$langs->trans("IfNeedToUseOhterObjectKeepEmpty"); - print $form->textwithtooltip($text.' '.img_help(),$texthelp,1); + print $form->select_company($project->societe->id,'socid','',1,1); print '
'.$langs->trans("DateStart").''; print $form->select_date($project->date_start,'project'); + print ''. $langs->trans("ProjectReportDate"); print '
'.$langs->trans("DateStart").''; - print dol_print_date($project->date_start,'day'); + print dol_print_date($project->date_start,'day'); print '
'; } - } llxFooter(); diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php index 6c4ccb733fa..a65ff6b10b6 100644 --- a/htdocs/projet/tasks.php +++ b/htdocs/projet/tasks.php @@ -65,8 +65,8 @@ if ($action == 'createtask' && $user->rights->projet->creer) { $error=0; - $date_start = dol_mktime(12,0,0,$_POST['dateomonth'],$_POST['dateoday'],$_POST['dateoyear']); - $date_end = dol_mktime(12,0,0,$_POST['dateemonth'],$_POST['dateeday'],$_POST['dateeyear']); + $date_start = dol_mktime(0,0,0,$_POST['dateomonth'],$_POST['dateoday'],$_POST['dateoyear']); + $date_end = dol_mktime(0,0,0,$_POST['dateemonth'],$_POST['dateeday'],$_POST['dateeyear']); if (empty($_POST["cancel"])) { @@ -198,6 +198,16 @@ if ($id > 0 || ! empty($ref)) print ''.$langs->trans("Visibility").''; if ($object->public) print $langs->trans('SharedProject'); else print $langs->trans('PrivateProject'); + print ''; + + // Date start + print ''.$langs->trans("DateStart").''; + print dol_print_date($object->date_start,'day'); + print ''; + + // Date end + print ''.$langs->trans("DateEnd").''; + print dol_print_date($object->date_end,'day'); print ''; // Statut diff --git a/htdocs/projet/tasks/document.php b/htdocs/projet/tasks/document.php index 65a758ee137..ae5ce5a0b9c 100644 --- a/htdocs/projet/tasks/document.php +++ b/htdocs/projet/tasks/document.php @@ -1,7 +1,7 @@ * Copyright (C) 2006-2012 Laurent Destailleur - * Copyright (C) 2012 Florian Henry + * Copyright (C) 2012 Florian Henry * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -60,13 +60,9 @@ $pagenext = $page + 1; if (! $sortorder) $sortorder="ASC"; if (! $sortfield) $sortfield="name"; - $object = new Task($db); $projectstatic = new Project($db); - - - /* * Actions */ @@ -129,7 +125,6 @@ if (! empty($project_ref) && ! empty($withproject)) } } -// Find upload dir after retreive is task if necessary if ($id > 0 || ! empty($ref)) { if ($object->fetch($id,$ref) > 0) @@ -145,7 +140,6 @@ if ($id > 0 || ! empty($ref)) dol_print_error($db); } } - /* * View */ @@ -287,4 +281,4 @@ else llxFooter(); $db->close(); -?> \ No newline at end of file +?> diff --git a/htdocs/projet/tasks/note.php b/htdocs/projet/tasks/note.php index 11cf96ca9c7..9108952c2c3 100644 --- a/htdocs/projet/tasks/note.php +++ b/htdocs/projet/tasks/note.php @@ -46,17 +46,17 @@ if (!$user->rights->projet->lire) accessforbidden(); $object = new Task($db); $projectstatic = new Project($db); -if ($id > 0 || ! empty($ref)) -{ - if ($object->fetch($id,$ref) > 0) - { +if ($id > 0 || ! empty($ref)) +{ + if ($object->fetch($id,$ref) > 0) + { $projectstatic->fetch($object->fk_project); - if (! empty($projectstatic->socid)) $projectstatic->societe->fetch($projectstatic->socid); - } - else - { - dol_print_error($db); - } + if (! empty($projectstatic->socid)) $projectstatic->societe->fetch($projectstatic->socid); + } + else + { + dol_print_error($db); + } } diff --git a/htdocs/societe/class/address.class.php b/htdocs/societe/class/address.class.php index b4c456a1b05..819ee46d0c3 100644 --- a/htdocs/societe/class/address.class.php +++ b/htdocs/societe/class/address.class.php @@ -85,8 +85,10 @@ class Address if ($result >= 0) { + $now=dol_now(); + $sql = "INSERT INTO ".MAIN_DB_PREFIX."societe_address (label, fk_soc, name, datec, fk_user_creat) "; - $sql .= " VALUES ('".$this->db->escape($this->label)."', '".$socid."', '".$this->db->escape($this->name)."', ".$this->db->idate(mktime()).", '".$user->id."')"; + $sql .= " VALUES ('".$this->db->escape($this->label)."', '".$socid."', '".$this->db->escape($this->name)."', ".$this->db->idate($now).", '".$user->id."')"; $result=$this->db->query($sql); if ($result) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index c1ed2932d70..b385f4970b7 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1000,6 +1000,8 @@ class Societe extends CommonObject if ($this->id) { $this->db->begin(); + + $now=dol_now(); // Positionne remise courante $sql = "UPDATE ".MAIN_DB_PREFIX."societe "; @@ -1016,7 +1018,7 @@ class Societe extends CommonObject // Ecrit trace dans historique des remises $sql = "INSERT INTO ".MAIN_DB_PREFIX."societe_remise "; $sql.= " (datec, fk_soc, remise_client, note, fk_user_author)"; - $sql.= " VALUES (".$this->db->idate(mktime()).", ".$this->id.", '".$remise."',"; + $sql.= " VALUES (".$this->db->idate($now).", ".$this->id.", '".$remise."',"; $sql.= " '".$this->db->escape($note)."',"; $sql.= " ".$user->id; $sql.= ")"; diff --git a/htdocs/support/inc.php b/htdocs/support/inc.php index e2d3935a23c..00222ad17df 100644 --- a/htdocs/support/inc.php +++ b/htdocs/support/inc.php @@ -2,7 +2,7 @@ /* Copyright (C) 2004 Rodolphe Quiedeville * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2004 Sebastien DiCintio - * Copyright (C) 2007-2011 Laurent Destailleur + * Copyright (C) 2007-2012 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,9 +24,11 @@ * \brief File that define environment for support pages */ -define('DOL_VERSION','3.3.0-alpha'); // Also defined in htdocs/master.inc.php +// Just to define version DOL_VERSION +if (! defined('DOL_INC_FOR_VERSION_ERROR')) define('DOL_INC_FOR_VERSION_ERROR','1'); +require_once('../filefunc.inc.php'); -// Define DOL_DOCUMENT_ROOT an ADODB_PATH used for install/upgrade process +// Define DOL_DOCUMENT_ROOT and ADODB_PATH used for install/upgrade process if (! defined('DOL_DOCUMENT_ROOT')) define('DOL_DOCUMENT_ROOT', '..'); if (! defined('ADODB_PATH')) { @@ -35,12 +37,21 @@ if (! defined('ADODB_PATH')) define('ADODB_PATH', $foundpath); } -require_once('../core/class/translate.class.php'); -require_once('../core/lib/functions.lib.php'); -require_once('../core/lib/admin.lib.php'); -require_once('../core/lib/files.lib.php'); +require_once(DOL_DOCUMENT_ROOT.'/core/class/translate.class.php'); +require_once(DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php'); +require_once(DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'); +require_once(DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'); require_once(ADODB_PATH.'adodb-time.inc.php'); +// Avoid warnings with strict mode E_STRICT +$conf = new stdClass(); // instantiate $conf explicitely +$conf->global = (object) array(); +$conf->file = (object) array(); +$conf->db = (object) array(); +$conf->syslog = (object) array(); + +// Force $_REQUEST["logtohtml"] +$_REQUEST["logtohtml"]=1; // Correction PHP_SELF (ex pour apache via caudium) car PHP_SELF doit valoir URL relative // et non path absolu. @@ -61,19 +72,28 @@ $conffiletoshow = "htdocs/conf/conf.php"; //$conffile = "/etc/dolibarr/conf.php"; //$conffiletoshow = "/etc/dolibarr/conf.php"; -$charset="UTF-8"; // If not output format found in any conf file if (! defined('DONOTLOADCONF') && file_exists($conffile)) { $result=include_once($conffile); // Load conf file if ($result) { + if (empty($dolibarr_main_db_type)) $dolibarr_main_db_type='mysql'; // For backward compatibility + + // Clean parameters + $dolibarr_main_data_root =isset($dolibarr_main_data_root)?trim($dolibarr_main_data_root):''; + $dolibarr_main_url_root =isset($dolibarr_main_url_root)?trim($dolibarr_main_url_root):''; + $dolibarr_main_url_root_alt =isset($dolibarr_main_url_root_alt)?trim($dolibarr_main_url_root_alt):''; + $dolibarr_main_document_root =isset($dolibarr_main_document_root)?trim($dolibarr_main_document_root):''; + $dolibarr_main_document_root_alt=isset($dolibarr_main_document_root_alt)?trim($dolibarr_main_document_root_alt):''; // Remove last / or \ on directories or url value if (! empty($dolibarr_main_document_root) && ! preg_match('/^[\\/]+$/',$dolibarr_main_document_root)) $dolibarr_main_document_root=preg_replace('/[\\/]+$/','',$dolibarr_main_document_root); if (! empty($dolibarr_main_url_root) && ! preg_match('/^[\\/]+$/',$dolibarr_main_url_root)) $dolibarr_main_url_root=preg_replace('/[\\/]+$/','',$dolibarr_main_url_root); if (! empty($dolibarr_main_data_root) && ! preg_match('/^[\\/]+$/',$dolibarr_main_data_root)) $dolibarr_main_data_root=preg_replace('/[\\/]+$/','',$dolibarr_main_data_root); - + if (! empty($dolibarr_main_document_root_alt) && ! preg_match('/^[\\/]+$/',$dolibarr_main_document_root_alt)) $dolibarr_main_document_root_alt=preg_replace('/[\\/]+$/','',$dolibarr_main_document_root_alt); + if (! empty($dolibarr_main_url_root_alt) && ! preg_match('/^[\\/]+$/',$dolibarr_main_url_root_alt)) $dolibarr_main_url_root_alt=preg_replace('/[\\/]+$/','',$dolibarr_main_url_root_alt); + // Create conf object if (! empty($dolibarr_main_document_root)) { @@ -101,16 +121,30 @@ if (! defined('DONOTLOADCONF') && file_exists($conffile)) $includeconferror='ErrorBadFormatForConfFile'; } } +$conf->global->MAIN_LOGTOHTML = 1; // Define prefix if (! isset($dolibarr_main_db_prefix) || ! $dolibarr_main_db_prefix) $dolibarr_main_db_prefix='llx_'; define('MAIN_DB_PREFIX',(isset($dolibarr_main_db_prefix)?$dolibarr_main_db_prefix:'')); +define('DOL_CLASS_PATH', 'class/'); // Filsystem path to class dir define('DOL_DATA_ROOT',(isset($dolibarr_main_data_root)?$dolibarr_main_data_root:'')); -if (empty($conf->file->character_set_client)) $conf->file->character_set_client=$charset; -if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='latin1_swedish_ci'; -if (empty($conf->db->dolibarr_main_db_encryption)) $conf->db->dolibarr_main_db_encryption=0; -if (empty($conf->db->dolibarr_main_db_cryptkey)) $conf->db->dolibarr_main_db_cryptkey=''; +if (! empty($dolibarr_main_document_root_alt)) +{ + define('DOL_DOCUMENT_ROOT_ALT', $dolibarr_main_document_root_alt); // Filesystem paths to alternate core php (alternate htdocs) +} +define('DOL_MAIN_URL_ROOT', (isset($dolibarr_main_url_root)?$dolibarr_main_url_root:'')); // URL relative root +$uri=preg_replace('/^http(s?):\/\//i','',constant('DOL_MAIN_URL_ROOT')); // $uri contains url without http* +$suburi = strstr($uri, '/'); // $suburi contains url without domain +if ($suburi == '/') $suburi = ''; // If $suburi is /, it is now '' +define('DOL_URL_ROOT', $suburi); // URL relative root ('', '/dolibarr', ...) + + +if (empty($conf->file->character_set_client)) $conf->file->character_set_client="UTF-8"; +if (empty($conf->db->character_set)) $conf->db->character_set='utf8'; +if (empty($conf->db->dolibarr_main_db_collation)) $conf->db->dolibarr_main_db_collation='utf8_general_ci'; +if (empty($conf->db->dolibarr_main_db_encryption)) $conf->db->dolibarr_main_db_encryption=0; +if (empty($conf->db->dolibarr_main_db_cryptkey)) $conf->db->dolibarr_main_db_cryptkey=''; if (empty($conf->db->user)) $conf->db->user=''; @@ -158,12 +192,12 @@ function conf($dolibarr_main_document_root) /** - * Show HTML header + * Show HTML header * - * @param string $soutitre Title - * @param string $next Next - * @param string $action Action - * @return void + * @param string $soutitre Title + * @param string $next Next + * @param string $action Action code + * @return void */ function pHeader($soutitre,$next,$action='none') { @@ -198,7 +232,7 @@ function pHeader($soutitre,$next,$action='none') } /** - * Show footer + * Print HTML footer * * @param string $nonext No button "Next step" * @param string $setuplang Language code diff --git a/htdocs/support/index.php b/htdocs/support/index.php index dcfeb73c70f..ffc4ee4db15 100644 --- a/htdocs/support/index.php +++ b/htdocs/support/index.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2008-2012 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,7 +21,6 @@ * \brief Provide an Online Help support */ -error_reporting(0); // Use its own include to not share the include of Dolibarr // This is a standalone feature with no information from Dolibarr to show @@ -40,7 +39,7 @@ $langs->load("help"); * View */ -pHeader($langs->trans("DolibarrHelpCenter"),$_SERVER["PHP_SELF"]); +pHeader($langs->trans("DolibarrHelpCenter").' '.DOL_VERSION, $_SERVER["PHP_SELF"]); print $langs->trans("HelpCenterDesc1")."
\n"; print $langs->trans("HelpCenterDesc2")."
\n"; diff --git a/htdocs/theme/amarok/img/close.png b/htdocs/theme/amarok/img/close.png new file mode 100644 index 00000000000..aacac9fc423 Binary files /dev/null and b/htdocs/theme/amarok/img/close.png differ diff --git a/htdocs/theme/amarok/style.css.php b/htdocs/theme/amarok/style.css.php index ae45b03b9eb..f717370c4b9 100644 --- a/htdocs/theme/amarok/style.css.php +++ b/htdocs/theme/amarok/style.css.php @@ -32,7 +32,7 @@ if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1); if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1); if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); -session_cache_limiter( FALSE ); +session_cache_limiter(FALSE); require_once("../../main.inc.php"); require_once(DOL_DOCUMENT_ROOT."/core/lib/functions.lib.php"); diff --git a/htdocs/theme/auguria/img/setup.png b/htdocs/theme/auguria/img/setup.png index 71dce81ed10..1444d86ce2a 100644 Binary files a/htdocs/theme/auguria/img/setup.png and b/htdocs/theme/auguria/img/setup.png differ diff --git a/htdocs/theme/bureau2crea/img/grip.png b/htdocs/theme/bureau2crea/img/grip.png new file mode 100644 index 00000000000..216e51ca8f0 Binary files /dev/null and b/htdocs/theme/bureau2crea/img/grip.png differ diff --git a/htdocs/theme/eldy/img/menutab-active.png b/htdocs/theme/eldy/img/menutab-active.png new file mode 100644 index 00000000000..9fbb9ba634d Binary files /dev/null and b/htdocs/theme/eldy/img/menutab-active.png differ diff --git a/htdocs/theme/eldy/img/menutab-r.png b/htdocs/theme/eldy/img/menutab-r.png new file mode 100644 index 00000000000..9db9b9d9b88 Binary files /dev/null and b/htdocs/theme/eldy/img/menutab-r.png differ diff --git a/htdocs/theme/eldy/img/nav-overlay.png b/htdocs/theme/eldy/img/nav-overlay.png new file mode 100644 index 00000000000..595f026cc24 Binary files /dev/null and b/htdocs/theme/eldy/img/nav-overlay.png differ diff --git a/htdocs/theme/eldy/img/nav-overlay3.png b/htdocs/theme/eldy/img/nav-overlay3.png new file mode 100644 index 00000000000..f252f5f51a5 Binary files /dev/null and b/htdocs/theme/eldy/img/nav-overlay3.png differ diff --git a/htdocs/theme/eldy/img/setup.png b/htdocs/theme/eldy/img/setup.png index 71dce81ed10..1444d86ce2a 100644 Binary files a/htdocs/theme/eldy/img/setup.png and b/htdocs/theme/eldy/img/setup.png differ diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index e0d82a22852..5382f8624a0 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -105,7 +105,7 @@ if (empty($conf->global->THEME_ELDY_ENABLE_PERSONALIZED)) { $conf->global->THEME_ELDY_TOPMENU_BACK1='180,196,216'; // topmenu $conf->global->THEME_ELDY_TOPMENU_BACK2='190,206,226'; - $conf->global->THEME_ELDY_VERMENU_BACK1='246,248,250'; // vmenu + $conf->global->THEME_ELDY_VERMENU_BACK1='246,248,250'; // vmenu $conf->global->THEME_ELDY_VERMENU_BACK1b='226,228,230'; // vmenu (not menu) $conf->global->THEME_ELDY_VERMENU_BACK2='220,224,227'; $conf->global->THEME_ELDY_BACKTITLE1='140,160,185'; // title of arrays @@ -148,6 +148,11 @@ $tmpval=$tmppart[1]+$tmppart[2]+$tmppart[3]; if ($tmpval < 340) $colortextmain='FFFFFF'; else $colortextmain='101010'; +$usecss3=true; +if ($conf->browser->name == 'ie' && round($conf->browser->version,2) < 10) $usecss3=false; +elseif ($conf->browser->name == 'iceweasel') $usecss3=false; +elseif ($conf->browser->name == 'epiphany') $usecss3=false; + print '/*'."\n"; print 'colred='.$colred.' colgreen='.$colgreen.' colblue='.$colblue."\n"; print 'isred='.$isred.' isgreen='.$isgreen.' isblue='.$isblue."\n"; @@ -155,12 +160,9 @@ print 'colorbacklineimpair1='.$colorbacklineimpair1."\n"; print 'colorbacklineimpair2='.$colorbacklineimpair2."\n"; print 'colorbacklinepair1='.$colorbacklinepair1."\n"; print 'colorbacklinepair2='.$colorbacklinepair2."\n"; +print 'usecss3='.$usecss3."\n"; print '*/'."\n"; -$usecss3=true; -if ($conf->browser->name == 'ie' && round($conf->browser->version,2) < 10) $usecss3=false; -elseif ($conf->browser->name == 'iceweasel') $usecss3=false; -elseif ($conf->browser->name == 'epiphany') $usecss3=false; ?> /* ============================================================================== */ @@ -196,6 +198,17 @@ input, input.flat, textarea, textarea.flat, form.flat select, select.flat { padding: 1px 1px 1px 1px; margin: 0px 0px 0px 0px; } +input, textarea, select { + border-radius:4px; + border:solid 1px rgba(0,0,0,.3); + border-top:solid 1px rgba(0,0,0,.3); + border-bottom:solid 1px rgba(0,0,0,.2); + box-shadow: 1px 1px 2px rgba(0,0,0,.2) inset; + padding:2px; + margin-left:1px; + margin-bottom:1px; + margin-top:1px; + } select.flat, form.flat select { font-weight: normal; } @@ -342,12 +355,31 @@ if (! empty($conf->browser->phone)) } else { - $minwidthtmenu=64; - $heightmenu=48; + $minwidthtmenu=66; + $heightmenu=52; } ?> -div.tmenu { + +div#tmenu_tooltip { +global->THEME_ELDY_ENABLE_PERSONALIZED) || ! empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)) { + $colortexttopmenu=$colortextmain; +?> + background: rgb(); + + background: rgb(); + /* background: #305582; *//* 2C68A3 */ + + margin-bottom: 10px; +} + +div.tmenudiv { display:none; @@ -359,17 +391,18 @@ div.tmenu { border-: 0px solid #555555; border-bottom: 1px solid #FFFFFF; padding: 0px 0px 0px 0px; /* t r b l */ - margin: 0px 0px 7px 0px; /* t r b l */ + margin: 0px 0px 0px 0px; /* t r b l */ font-size: 13px; font-weight: normal; height: px; - background-image: -o-linear-gradient(bottom, rgb() 75%, rgb() 100%); - background-image: -moz-linear-gradient(bottom, rgb() 75%, rgb() 100%); - background-image: -webkit-linear-gradient(bottom, rgb() 40%, rgb() 60%, rgb() 100%); - background-image: -ms-linear-gradient(bottom, rgb() 75%, rgb() 100%); - background-image: linear-gradient(bottom, rgb() 75%, rgb() 100%); + /* background-image: -o-linear-gradient(bottom, rgb() 75%, rgb() 100%); */ + /* background-image: -moz-linear-gradient(bottom, rgb() 75%, rgb() 100%);*/ + /* background-image: -webkit-linear-gradient(bottom, rgb() 40%, rgb() 60%, rgb() 100%);*/ + /* background-image: -ms-linear-gradient(bottom, rgb() 75%, rgb() 100%);*/ + /* background-image: linear-gradient(bottom, rgb() 75%, rgb() 100%); */ + background: url() 50% 0% repeat-x; background-image: url(); background-position:top; @@ -380,20 +413,8 @@ div.tmenu { } -table.tmenu { - padding: 0px 0px 10px 0px; /* t r b l */ - margin: 0px 0px 0px 0px; /* t r b l */ - text-align: center; -} -td.tmenu { - - text-align: center; - vertical-align: bottom; - white-space: nowrap; -} - a.tmenudisabled:link, a.tmenudisabled:visited, a.tmenudisabled:hover, a.tmenudisabled:active { - color: #757575; + color: #808080; font-weight: normal; padding: 0px 5px 0px 5px; margin: 0px 1px 2px 1px; @@ -405,49 +426,46 @@ a.tmenudisabled:link, a.tmenudisabled:visited, a.tmenudisabled:hover, a.tmenudis a.tmenu:link, a.tmenu:visited, a.tmenu:hover, a.tmenu:active { font-weight: normal; padding: 0px 5px 0px 5px; - margin: 0px 1px 2px 1px; white-space: nowrap; - text-shadow: 1px 2px 4px #FFFFFF; + /* text-shadow: 1px 1px 1px #000000; */ + color: #; } a.tmenu:link, a.tmenu:visited { - color: #; + color: #; } a.tmenu:hover, a.tmenu:active { - color: #233030; margin: 0px 0px 0px 0px; - border-: 1px solid #555555; - border-: 1px solid #D8D8D8; - border-top: 1px solid #D8D8D8; - border-bottom: 2px solid #F4F4F4; - background: #F4F4F4; - text-shadow: 1px 2px 4px #FFFFFF; + /* border-: 1px solid #555555; */ + /* border-: 1px solid #D8D8D8; */ + /* border-top: 1px solid #D8D8D8; */ + /* border-bottom: 2px solid #F4F4F4; */ + /* background: #F4F4F4; */ + /* text-shadow: 1px 1px 1px #FFFFFF !important; */ + color: #; } a.tmenusel:link, a.tmenusel:visited, a.tmenusel:hover, a.tmenusel:active { font-weight: normal; - color: #233030; padding: 0px 5px 0px 5px; margin: 0px 0px 0px 0px; - background: #F4F4F4; - border-: 1px solid #555555; - border-top: 1px solid #D8D8D8; - border-: 1px solid #D8D8D8; - border-bottom: 2px solid #F4F4F4; + /* background: #F4F4F4; */ + /* border-: 1px solid #555555; */ + /* border-top: 1px solid #D8D8D8; */ + /* border-: 1px solid #D8D8D8; */ + /* border-bottom: 2px solid #F4F4F4; */ white-space: nowrap; - text-shadow: 1px 2px 4px #FFFFFF; -} - - -* html li.tmenu a { - min-width:60px; + /* text-shadow: 1px 1px 1px #FFFFFF;*/ + color: #; } ul.tmenu { /* t r b l */ - padding: 0px 0px 10px 0px; - margin: 0px 0px 0px 6px; + padding: 0px 0px 0px 0px; + margin: 0px 0px 0px 0px; list-style: none; + height: px; + background: url() 0 0 repeat-x !important; } -li.tmenu { +li.tmenu, li.tmenusel { text-align: center; vertical-align: bottom; @@ -455,25 +473,56 @@ li.tmenu { height: px; position:relative; display: block; - padding: 2px 5px 0px 5px; - margin: 0px 0px 0px 0px; + padding: 0px 0px 0px 0px; + margin: 0px 0px 0px 0px; font-weight: normal; } +li.tmenu:hover, li.tmenusel { + + /* background-image: -o-linear-gradient(bottom, rgb() 75%, rgb() 100%); */ + /* background-image: -moz-linear-gradient(bottom, rgb() 75%, rgb() 100%);*/ + /* background-image: -webkit-linear-gradient(bottom, rgb() 40%, rgb() 60%, rgb() 100%); */ + /* background-image: -ms-linear-gradient(bottom, rgb() 75%, rgb() 100%);*/ + /* background-image: linear-gradient(bottom, rgb() 75%, rgb() 100%); */ + background: url() 50% 0 repeat-x; + +} +div.tmenuleft +{ + width: 5px; + float: ; + height: px; + background: url() 0 0 no-repeat; + margin-top: -4px; +} +div.tmenucenter +{ + padding-top: 2px; + padding-left: 0px; + padding-right: 0px; + height: px; + width: 100%; +} +.mainmenuaspan +{ + padding-right: 4px; +} div.mainmenu { position : relative; - color: white; background-repeat:no-repeat; background-position:center top; height: px; margin-left: 0px; + min-width: 40px; } browser->phone)) { ?> div.mainmenu.home{ background-image: url(); + background-position-x: middle; } div.mainmenu.accountancy { @@ -608,7 +657,6 @@ foreach($mainmenuusedarray as $key => $val) { print "div.mainmenu.".$val." {\n"; print " background-image: url(".$url.");\n"; - print " height:28px;\n"; print "}\n"; } } @@ -642,7 +690,10 @@ form#login { text-shadow: 1px 1px 1px #FFF; } .login_table { - padding:12px; + padding-left:8px; + padding-right:8px; + padding-top:22px; + padding-bottom:18px; width: 540px; border: 1px solid #C0C0C0; background-color: #E0E0E0; @@ -651,15 +702,18 @@ form#login { -webkit-box-shadow: 4px 4px 4px #CCC; box-shadow: 4px 4px 4px #CCC; - border-radius: 12px; + border-radius: 8px; border:solid 1px rgba(168,168,168,.4); border-top:solid 1px f8f8f8; background-color: #f8f8f8; - background-image: -o-linear-gradient(top, rgba(240,240,240,.3) 0%, rgba(192,192,192,.3) 100%); - background-image: -moz-linear-gradient(top, rgba(240,240,240,.3) 0%, rgba(192,192,192,.3) 100%); - background-image: -webkit-linear-gradient(top, rgba(240,240,240,.3) 0%, rgba(192,192,192,.3) 100%); - background-image: -ms-linear-gradient(top, rgba(240,240,240,.3) 0%, rgba(192,192,192,.3) 100%); - background-image: linear-gradient(top, rgba(240,240,240,.3) 0%, rgba(192,192,192,.3) 100%); + background-image: -o-linear-gradient(top, rgba(250,250,250,.6) 0%, rgba(192,192,192,.3) 100%); + background-image: -moz-linear-gradient(top, rgba(250,250,250,.6) 0%, rgba(192,192,192,.3) 100%); + background-image: -webkit-linear-gradient(top, rgba(250,250,250,.6) 0%, rgba(192,192,192,.3) 100%); + background-image: -ms-linear-gradient(top, rgba(250,250,250,.6) 0%, rgba(192,192,192,.3) 100%); + background-image: linear-gradient(top, rgba(250,250,250,.6) 0%, rgba(192,192,192,.3) 100%); +} +table.login_table tr td table.none tr td { + padding: 2px; } #img_securitycode { border: 1px solid #DDDDDD; @@ -689,10 +743,10 @@ div.login { font-weight: bold; } div.login a { - color: #233030; + color: #; } div.login a:hover { - color: black; + color: #; text-decoration:underline; } @@ -737,7 +791,7 @@ a.vsmenu:link, a.vsmenu:visited { color: #; } a.help:link, a.help:visited, a.help:hover, a.help:active { font-size:px; font-family: ; text-align: ; font-weight: normal; color: #666666; } -div.blockvmenupair, div.blockvmenuimpair +div.blockvmenupair, div.blockvmenuimpair, div.blockvmenubookmarks { width:174px; font-family: ; @@ -804,7 +858,7 @@ div.blockvmenusearch box-shadow: 4px 4px 4px #CCC; } -div.blockvmenubookmarks +div.blockvmenubookmarksold { width:174px; border-right: 1px solid #555555; @@ -1324,7 +1378,7 @@ span.butAction, span.butActionDelete { #undertopmenu { /* background-image: url(""); */ background-repeat: repeat-x; - margin-top: 12px; + margin-top: 0px; } @@ -1693,10 +1747,17 @@ div.error { background: #EFCFCF; } +div.jnotify-background { + opacity : 0.95 !important; + -moz-box-shadow: 4px 4px 4px #888 !important; + -webkit-box-shadow: 4px 4px 4px #888 !important; + box-shadow: 4px 4px 4px #888 !important; +} + /* Info admin */ div.info { color: #807050; - padding: 0.2em 0.2em 0.2em 0.2em; + padding: 0.4em 0.4em 0.4em 0.4em; margin: 0.5em 0em 0.5em 0em; border: 1px solid #DFDFA0; -moz-border-radius:6px; diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index b7c34af0fe0..e50f5a1bea6 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -89,7 +89,7 @@ class User extends CommonObject private $_tab_loaded=array(); // Array of cache of already loaded permissions var $conf; // To store personal config - var $oldcopy; // To contains a clone of this when we need to save old properties of object + var $oldcopy; // To contains a clone of this when we need to save old properties of object @@ -109,6 +109,7 @@ class User extends CommonObject $this->all_permissions_are_loaded = 0; $this->admin=0; + $this->conf = (object) array(); $this->rights = (object) array(); $this->rights->user = (object) array(); $this->rights->user->user = (object) array(); @@ -588,7 +589,7 @@ class User extends CommonObject } $this->db->free($resql); } - + // For backward compatibility if (isset($this->rights->propale)) { @@ -934,12 +935,12 @@ class User extends CommonObject // Positionne parametres $this->admin = 0; - $this->nom = $member->nom; - $this->prenom = $member->prenom; + $this->lastname = $member->lastname; + $this->firstname = $member->firstname; $this->email = $member->email; $this->pass = $member->pass; - if (empty($login)) $login=strtolower(substr($member->prenom, 0, 4)) . strtolower(substr($member->nom, 0, 4)); + if (empty($login)) $login=strtolower(substr($member->firstname, 0, 4)) . strtolower(substr($member->lastname, 0, 4)); $this->login = $login; $this->db->begin(); @@ -1043,8 +1044,8 @@ class User extends CommonObject dol_syslog(get_class($this)."::update notrigger=".$notrigger.", nosyncmember=".$nosyncmember.", nosyncmemberpass=".$nosyncmemberpass); // Clean parameters - $this->nom = trim($this->nom); // TODO deprecated - $this->prenom = trim($this->prenom); // TODO deprecated + $this->nom = trim($this->nom); // deprecated + $this->prenom = trim($this->prenom); // deprecated $this->lastname = trim($this->lastname); $this->firstname = trim($this->firstname); $this->login = trim($this->login); @@ -1138,8 +1139,10 @@ class User extends CommonObject if ($result >= 0) { - $adh->prenom=$this->firstname; - $adh->nom=$this->lastname; + $adh->prenom=$this->firstname; // deprecated + $adh->nom=$this->lastname; // deprecated + $adh->firstname=$this->firstname; + $adh->lastname=$this->lastname; $adh->login=$this->login; $adh->pass=$this->pass; $adh->societe=(empty($adh->societe) && $this->societe_id ? $this->societe_id : $adh->societe); diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php index 148202b4f98..6fac7405ebb 100644 --- a/htdocs/viewimage.php +++ b/htdocs/viewimage.php @@ -336,7 +336,7 @@ if ($modulepart == 'barcode') $encoding=$_GET["encoding"]; $readable=$_GET["readable"]?$_GET["readable"]:"Y"; - $dirbarcode=array_merge(array("/core/modules/barcode/"),$conf->barcode_modules); + $dirbarcode=array_merge(array("/core/modules/barcode/"),$conf->modules_parts['barcode']); $result=0; diff --git a/test/phpunit/FilesLibTest.php b/test/phpunit/FilesLibTest.php index dc856064a20..fb919ab56b9 100644 --- a/test/phpunit/FilesLibTest.php +++ b/test/phpunit/FilesLibTest.php @@ -239,7 +239,7 @@ class FilesLibTest extends PHPUnit_Framework_TestCase print __METHOD__." result=".$result."\n"; $this->assertTrue($result); } - + /** * testDolMimeType * @@ -279,10 +279,41 @@ class FilesLibTest extends PHPUnit_Framework_TestCase $result=dol_mimetype('file.php','',2); $this->assertEquals('php.png',$result); $result=dol_mimetype('file.php','',3); - $this->assertEquals('php',$result); + $this->assertEquals('php',$result); // file.php.noexe $result=dol_mimetype('file.php.noexe','',0); $this->assertEquals('text/plain',$result); - } + } + + /** + * testDolCompressUnCompress + * + * @return string + */ + public function testDolCompressUnCompress() + { + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + $format='zip'; + $filein=dirname(__FILE__).'/Example_import_company_1.csv'; + $fileout=$conf->admin->dir_temp.'/test.'.$format; + $dirout=$conf->admin->dir_temp.'/test'; + + dol_delete_file($fileout); + $count=0; + dol_delete_dir_recursive($dirout,$count,1); + + $result=dol_compress_file($filein, $fileout, $format); + print __METHOD__." result=".$result."\n"; + $this->assertGreaterThanOrEqual(1,$result); + + $result=dol_uncompress($fileout, $dirout); + print __METHOD__." result=".join(',',$result)."\n"; + $this->assertEquals(0,count($result)); + } } ?> \ No newline at end of file diff --git a/test/phpunit/FunctionsTest.php b/test/phpunit/FunctionsTest.php index 2a81b2e6d4e..3b54935cf87 100755 --- a/test/phpunit/FunctionsTest.php +++ b/test/phpunit/FunctionsTest.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2010-2012 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -379,14 +379,14 @@ class FunctionsTest extends PHPUnit_Framework_TestCase $this->savdb=$db; $arraytotest=array(0=>array('key'=>1,'value'=>'PRODREF','label'=>'Product ref with é and special chars \\ \' "')); - + $encoded=json_encode($arraytotest); //var_dump($encoded); $this->assertEquals('[{"key":1,"value":"PRODREF","label":"Product ref with \u00e9 and special chars \\\\ \' \""}]',$encoded); $decoded=json_decode($encoded,true); //var_dump($decoded); $this->assertEquals($arraytotest,$decoded); - + $encoded=dol_json_encode($arraytotest); //var_dump($encoded); $this->assertEquals('[{"key":1,"value":"PRODREF","label":"Product ref with \u00e9 and special chars \\\\ \' \""}]',$encoded); @@ -394,5 +394,74 @@ class FunctionsTest extends PHPUnit_Framework_TestCase //var_dump($decoded); $this->assertEquals($arraytotest,$decoded); } + + /** + * testGetDefaultTva + * + * @return void + */ + public function testGetDefaultTva() + { + global $conf,$user,$langs,$db; + $this->savconf=$conf; + $this->savuser=$user; + $this->savlangs=$langs; + $this->savdb=$db; + + $companyfrnovat=new Societe($db); + $companyfrnovat->country_code='FR'; + $companyfrnovat->tva_assuj=0; + + $companyfr=new Societe($db); + $companyfr->country_code='FR'; + $companyfr->tva_assuj=1; + + $companymo=new Societe($db); + $companymo->country_code='MC'; + $companymo->tva_assuj=1; + + $companyit=new Societe($db); + $companyit->country_code='IT'; + $companyit->tva_assuj=1; + $companyit->tva_intra='IT99999'; + + $notcompanyit=new Societe($db); + $notcompanyit->country_code='IT'; + $notcompanyit->tva_assuj=1; + $notcompanyit->tva_intra=''; + $notcompanyit->typent_code='TE_PRIVATE'; + + $companyus=new Societe($db); + $companyus->country_code='US'; + $companyus->tva_assuj=1; + $companyus->tva_intra=''; + + // Test RULE 1-2 + $vat=get_default_tva($companyfrnovat,$companymo,0); + $this->assertEquals(0,$vat); + + // Test RULE 3 (FR-FR) + $vat=get_default_tva($companyfr,$companyfr,0); + $this->assertEquals(19.6,$vat); + + // Test RULE 3 (FR-MC) + $vat=get_default_tva($companyfr,$companymo,0); + $this->assertEquals(19.6,$vat); + + // Test RULE 4 (FR-IT) + $vat=get_default_tva($companyfr,$companyit,0); + $this->assertEquals(0,$vat); + + // Test RULE 5 (FR-IT) + $vat=get_default_tva($companyfr,$notcompanyit,0); + $this->assertEquals(19.6,$vat); + + // Test RULE 6 (FR-IT) + // Not tested + + // Test RULE 7 (FR-US) + $vat=get_default_tva($companyfr,$companyus,0); + $this->assertEquals(0,$vat); + } } ?> \ No newline at end of file